<?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>219586</bug_id>
          
          <creation_ts>2020-12-06 15:41:40 -0800</creation_ts>
          <short_desc>[Concurrent Display Lists] GPU process should not immediately sleep after reading all available display list items</short_desc>
          <delta_ts>2021-01-07 11:42:09 -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>WebKit2</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>219091</dependson>
    
    <dependson>219657</dependson>
    
    <dependson>220110</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1712373</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-06 15:41:40 -0800</bug_when>
    <thetext>Currently, the GPU process goes to sleep immediately after reading all available display list items. The 512-item wakeup hysteresis partially mitigates this by giving the web process a head start, but on Lines, Arcs, and Paths, I&apos;m still seeing more GPUP sleeps/wakeups than necessary. This bug tracks experimenting with a small (~40-80 µs) sleep interval after hitting 0 unread bytes in the GPU process, such that we can start processing display list items again if the web process writes more item data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712384</commentid>
    <comment_count>1</comment_count>
      <attachid>415535</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-06 20:29:59 -0800</bug_when>
    <thetext>Created attachment 415535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712607</commentid>
    <comment_count>2</comment_count>
      <attachid>415580</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-07 14:02:11 -0800</bug_when>
    <thetext>Created attachment 415580
WIP v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712652</commentid>
    <comment_count>3</comment_count>
      <attachid>415599</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-07 16:10:50 -0800</bug_when>
    <thetext>Created attachment 415599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713248</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-09 11:52:40 -0800</bug_when>
    <thetext>Do we know how this sleep behavior compares in performance to a traditional semaphore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713282</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-09 12:53:25 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #4)
&gt; Do we know how this sleep behavior compares in performance to a traditional
&gt; semaphore?

I don&apos;t have any data on this, but it would be interesting to try! I&apos;ll experiment with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713287</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-09 13:11:05 -0800</bug_when>
    <thetext>It looks like pthread mutexes and condition variables can be sent over shared memory directly, if you initialize them using the &quot;*_setpshared&quot; APIs.

The reason I&apos;m curious about a semaphore is that, if the system call to invoke a semaphore is &lt;= 8us, then it is strictly better -- because it is not slower, and it is a more robust way to wait.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714337</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-13 12:05:58 -0800</bug_when>
    <thetext>I did a little micro-benchmarking this weekend. Here&apos;s an example result:

~/OpenSource/WebKitBuild/Release&gt; ./Scratch
CPU count: 16
iteration count: 10000
-----
no synchronization: 46us
spin: 77us
yield: 75us
semaphore_t: 74us
sleep 2us: 83us
sleep 4us: 87us
sleep 8us: 94us

It looks like a mach semaphore is competitive with the fastest approaches, and slightly faster than just sleeping.

But I&apos;m much more interested in another benefit: With a semaphore, we&apos;re not waisting any CPU time re-checking for more work, so we never have to fall back to the &quot;go slow and wait for IPC&quot; path. I think that might be an immediate speedup compared to sleeping; and also a more robust and predictable way to wait across a variety of devices and workloads. (A semaphore even knows how to recover from a crash, so we don&apos;t even need a timeout on the wait; but we can add one if we really want to.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714340</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-13 12:58:41 -0800</bug_when>
    <thetext>For sending a semaphore over IPC, it looks like Darwin supports either sending a semaphore_t as a mach port / mach send right, or sending a temporary file name as a string and then using ftok + semget to turn it into a semaphore.

Seems like semaphore_t would be best, if the mach documentation doesn&apos;t make your eyes bleed. WTF::MachSendRight and IPC::MachPort might help. And this reference to mach_port_extract_right: https://stackoverflow.com/questions/27078699/share-unnamed-semaphore-between-processes-in-mac-os/27083937#27083937.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714349</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-13 15:42:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/72275412&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716792</commentid>
    <comment_count>10</comment_count>
      <attachid>416833</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-28 16:36:28 -0800</bug_when>
    <thetext>Created attachment 416833
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716796</commentid>
    <comment_count>11</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-28 16:53:57 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #8)
&gt; For sending a semaphore over IPC, it looks like Darwin supports either
&gt; sending a semaphore_t as a mach port / mach send right, or sending a
&gt; temporary file name as a string and then using ftok + semget to turn it into
&gt; a semaphore.
&gt; 
&gt; Seems like semaphore_t would be best, if the mach documentation doesn&apos;t make
&gt; your eyes bleed. WTF::MachSendRight and IPC::MachPort might help. And this
&gt; reference to mach_port_extract_right:
&gt; https://stackoverflow.com/questions/27078699/share-unnamed-semaphore-between-
&gt; processes-in-mac-os/27083937#27083937.

After trying out a couple versions of a patch to use mach semaphores for fast wakeups, the strategy that seems to yield the best performance gains seems to be one that only signals the semaphore in the web process if we know that the GPU process is definitely waiting for additional items (indicated by an enum flag).

This is because signaling the semaphore in the web process seems to be a more costly operation than I&apos;d anticipated — earlier, I tried having the web process unconditionally `semaphore_signal_thread` when writing new items and then having the GPU process only resume if the timed wait succeeded (i.e. returned `KERN_SUCCESS`), but this led to significantly worse performance (system tracing revealed that the heaviest stack in the web process by far was the kernel trap underneath `semaphore_signal_thread`).

I briefly explored adding a second (smaller) item count hysteresis for semaphore wakeups, such that we&apos;d wait for 64 items before attempting to signal the semaphore, but this either didn&apos;t seem to have any significant impact, or resulted in very slightly worse performance. It&apos;s possible that a similar policy could yield better results though, but I&apos;ll need to carry out some more experiments and spend some more time tuning the numbers.

In the meantime, the WIP patch I uploaded is the current approach that seems to yield performance numbers on Canvas Lines that are potentially better than trunk (if only slightly).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716824</commentid>
    <comment_count>12</comment_count>
      <attachid>416843</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-29 15:17:58 -0800</bug_when>
    <thetext>Created attachment 416843
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717319</commentid>
    <comment_count>13</comment_count>
      <attachid>417008</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-01-05 08:33:53 -0800</bug_when>
    <thetext>Created attachment 417008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717337</commentid>
    <comment_count>14</comment_count>
      <attachid>417008</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-05 09:04:42 -0800</bug_when>
    <thetext>Comment on attachment 417008
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=417008&amp;action=review

r=me with a few changes.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:234
&gt; +                RELEASE_ASSERT_NOT_REACHED();

I don&apos;t think we should crash the GPU Process here, at least not in release. It is never OK for a WebProcess to send bad IPC to the GPU Process and cause it to crash (since the GPUProcess is shared with other processes).

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:241
&gt; +                RELEASE_ASSERT_NOT_REACHED();

ditto.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:249
&gt; +                RELEASE_ASSERT_NOT_REACHED();

ditto.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:45
&gt; +#include &lt;wtf/cocoa/MachSemaphore.h&gt;

Seems like this could be forward-declared.

&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:59
&gt; +        NotWaiting = 0,

= 0 seems redundant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717690</commentid>
    <comment_count>15</comment_count>
      <attachid>417008</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-01-06 10:00:20 -0800</bug_when>
    <thetext>Comment on attachment 417008
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=417008&amp;action=review

Thanks for the review!

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:234
&gt;&gt; +                RELEASE_ASSERT_NOT_REACHED();
&gt; 
&gt; I don&apos;t think we should crash the GPU Process here, at least not in release. It is never OK for a WebProcess to send bad IPC to the GPU Process and cause it to crash (since the GPUProcess is shared with other processes).

Good point. I originally did this to make debugging perf tests a bit easier (by making the crashes more noticeable), with the intention of turning these into debug assertions once I added all the MESSAGE_CHECKs.

I&apos;ll just start these off as debug assertions instead.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:241
&gt;&gt; +                RELEASE_ASSERT_NOT_REACHED();
&gt; 
&gt; ditto.

Fixed!

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:249
&gt;&gt; +                RELEASE_ASSERT_NOT_REACHED();
&gt; 
&gt; ditto.

Fixed!

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:45
&gt;&gt; +#include &lt;wtf/cocoa/MachSemaphore.h&gt;
&gt; 
&gt; Seems like this could be forward-declared.

Good catch — fixed.

&gt;&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:59
&gt;&gt; +        NotWaiting = 0,
&gt; 
&gt; = 0 seems redundant

Removed the = 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717708</commentid>
    <comment_count>16</comment_count>
      <attachid>417103</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-01-06 11:06:09 -0800</bug_when>
    <thetext>Created attachment 417103
Address comments + rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717744</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-06 12:35:52 -0800</bug_when>
    <thetext>Committed r271212: &lt;https://trac.webkit.org/changeset/271212&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417103.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718018</commentid>
    <comment_count>18</comment_count>
      <attachid>417103</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-07 11:34:32 -0800</bug_when>
    <thetext>Comment on attachment 417103
Address comments + rebase

View in context: https://bugs.webkit.org/attachment.cgi?id=417103&amp;action=review

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:226
&gt; +            m_resumeDisplayListSemaphore-&gt;waitFor(30_us);

Wait a second.. Isn&apos;t this running on the main thread of the GPUProcess? How is it OK to hang the main thread of the GPUProcess for this? The GPUProcess does many other things besides DOM rendering and hanging the main thread for DOM rendering does not seem acceptable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718023</commentid>
    <comment_count>19</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-01-07 11:41:12 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:226
&gt; &gt; +            m_resumeDisplayListSemaphore-&gt;waitFor(30_us);
&gt; 
&gt; Wait a second.. Isn&apos;t this running on the main thread of the GPUProcess?

Yes.

&gt; How
&gt; is it OK to hang the main thread of the GPUProcess for this? The GPUProcess
&gt; does many other things besides DOM rendering and hanging the main thread for
&gt; DOM rendering does not seem acceptable.

I think the theory is that 30us is not a long delay. Just returning to the RunLoop takes a similar amount of time.

That said, what are some specific operations that we should consider, that might be harmed by this delay?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718024</commentid>
    <comment_count>20</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-01-07 11:42:09 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #18)
&gt; Comment on attachment 417103 [details]
&gt; Address comments + rebase
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=417103&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:226
&gt; &gt; +            m_resumeDisplayListSemaphore-&gt;waitFor(30_us);
&gt; 
&gt; Wait a second.. Isn&apos;t this running on the main thread of the GPUProcess? How
&gt; is it OK to hang the main thread of the GPUProcess for this? The GPUProcess
&gt; does many other things besides DOM rendering and hanging the main thread for
&gt; DOM rendering does not seem acceptable.

The idea is that we&apos;ll only perform the wait here if we&apos;re receiving such a high rate of display list items, that the next IPC message would probably otherwise be a wakeup message for more DL item processing anyways.

I chose a tiny (30 microsecond) wait duration here, since that is going to be much lower (in practice) than the time needed to propagate a message via IPC. Essentially, this wait should only kick in when the GPUP would have otherwise just gone to sleep anyways.

I think in the future, if we could move DL processing off the main thread, then we&apos;d be able to make this waiting policy much more generous.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415535</attachid>
            <date>2020-12-06 20:29:59 -0800</date>
            <delta_ts>2020-12-07 14:02:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219586-20201206202959.patch</filename>
            <type>text/plain</type>
            <size>10949</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRjMzA1ODNkOTE4YjVjYjQ3
MzllZDRiYzczYTg5N2E4ZDA5MGJiM2YuLjljMWZmNDFkNzgzMDEyYjU5NTc2YjE1YTNkNGQ0MWI4
NWNhNTUzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMTItMDYgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbmN1cnJlbnQgRGlz
cGxheSBMaXN0c10gR1BVIHByb2Nlc3Mgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBzbGVlcCBhZnRl
ciByZWFkaW5nIGFsbCBhdmFpbGFibGUgZGlzcGxheSBsaXN0IGl0ZW1zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk1ODYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXb3JrIGluIHByb2dyZXNzIHBhdGNo
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpzdGFydFdh
aXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6c2hvdWxk
UmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OnN0b3BX
YWl0aW5nKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OnJlc2V0
Q291bnQgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMpOgor
ICAgICAgICAqIFNoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjptb3ZlV3JpdGFibGVPZmZzZXRU
b1N0YXJ0SWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlOjp0cnlUb1Jlc3VtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlz
cGxheUxpc3RXcml0ZXJIYW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZERhdGEpOgorCiAyMDIwLTEyLTA0ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb25jdXJy
ZW50IGRpc3BsYXkgbGlzdHNdIFN5bmNocm9uaXplIGRpc3BsYXkgbGlzdCByZW5kZXJpbmcgYWNy
b3NzIHJlbW90ZSBpbWFnZSBidWZmZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcAppbmRleCBh
ZDExMzZlM2U4Y2UyNmEwOGNlMmI3MTkyN2UyY2JkMDQyODUyYTdjLi5mMDBkM2JmOWMxZjJkZDI4
NDcxZjQ1MDAzMTIwNGE0MGEyNWFmMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKQEAg
LTQ3LDQgKzQ3LDI1IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+
IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpkaXNwbGF5TGlzdEZvCiAgICAgcmV0dXJuIGRpc3Bs
YXlMaXN0OwogfQogCit2b2lkIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpzdGFydFdhaXRpbmco
KQoreworICAgIGhlYWRlcigpLndhaXRpbmdTdGF0dXMuc3RvcmUoU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGU6OldhaXRpbmdTdGF0dXM6OldhaXRpbmcpOworfQorCitib29sIERpc3BsYXlMaXN0UmVh
ZGVySGFuZGxlOjpzaG91bGRSZXN1bWUoKQoreworICAgIHJldHVybiBoZWFkZXIoKS53YWl0aW5n
U3RhdHVzLmxvYWQoKSA9PSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1czo6
UmVzdW1pbmc7Cit9CisKK0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpTaG91bGRSZXN1bWUgRGlz
cGxheUxpc3RSZWFkZXJIYW5kbGU6OnN0b3BXYWl0aW5nKCkKK3sKKyAgICBhdXRvIHByZXZpb3Vz
VmFsdWUgPSBoZWFkZXIoKS53YWl0aW5nU3RhdHVzLmV4Y2hhbmdlKFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlOjpXYWl0aW5nU3RhdHVzOjpOb3RXYWl0aW5nKTsKKyAgICByZXR1cm4gcHJldmlvdXNW
YWx1ZSA9PSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1czo6UmVzdW1pbmcg
PyBTaG91bGRSZXN1bWU6OlllcyA6IFNob3VsZFJlc3VtZTo6Tm87Cit9CisKK3VpbnQ2NF90IERp
c3BsYXlMaXN0UmVhZGVySGFuZGxlOjpyZXNldENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
aGVhZGVyKCkucmVzZXRDb3VudC5sb2FkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0
UmVhZGVySGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxh
eUxpc3RSZWFkZXJIYW5kbGUuaAppbmRleCBjYjcyMjM5NzY5NmRjOWUwYjA2ZTg5Y2FjMjVjZTcy
Y2I5YTU3NmUxLi41ZmNmOTJkNDA4NGZiOTQ2ODI2NTYzMjY3MWM5NDMwMDExYWJiZTU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFk
ZXJIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxh
eUxpc3RSZWFkZXJIYW5kbGUuaApAQCAtNDEsNiArNDEsMTQgQEAgcHVibGljOgogICAgIHNpemVf
dCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0Rm9yUmVhZGluZyhz
aXplX3Qgb2Zmc2V0LCBzaXplX3QgY2FwYWNpdHksIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
QnVmZmVyUmVhZGluZ0NsaWVudCYpIGNvbnN0OwogCisgICAgdm9pZCBzdGFydFdhaXRpbmcoKTsK
KyAgICBib29sIHNob3VsZFJlc3VtZSgpOworCisgICAgZW51bSBjbGFzcyBTaG91bGRSZXN1bWUg
OiBib29sIHsgTm8sIFllcyB9OworICAgIFNob3VsZFJlc3VtZSBzdG9wV2FpdGluZygpOworCisg
ICAgdWludDY0X3QgcmVzZXRDb3VudCgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIERpc3BsYXlM
aXN0UmVhZGVySGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKICAgICAgICAg
OiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9y
eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMTMxZTk1NTU3YTljZTIwYzNhY2FiMDJl
MmQ4YjcyZTdkZmZkZGIzZS4uYmJhMzBhMTM1ZWJiNGY2ZDMyNWRiNzg0NjkyMTMxODBmZGE4YTJl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMTU0LDEzICsxNTQsMTQgQEAgUmVmUHRy
PEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlckFmdGVyQXBwbHkKICAgICBhdXRvIGRlc3RpbmF0aW9uID0gbWFrZVJlZlB0cihpbml0
aWFsRGVzdGluYXRpb24pOwogICAgIGF1dG8gaGFuZGxlUHJvdGVjdG9yID0gbWFrZVJlZihoYW5k
bGUpOwogCisgICAgdWludDY0X3QgbGFzdEtub3duUmVzZXRDb3VudDsKICAgICBhdXRvIG9mZnNl
dCA9IGluaXRpYWxPZmZzZXQ7CiAgICAgc2l6ZV90IHNpemVUb1JlYWQgPSAwOwogICAgIGRvIHsK
ICAgICAgICAgc2l6ZVRvUmVhZCA9IGhhbmRsZS51bnJlYWRCeXRlcygpOwogICAgIH0gd2hpbGUg
KCFzaXplVG9SZWFkKTsKIAotICAgIHdoaWxlIChkZXN0aW5hdGlvbiAmJiAhbV9uZXh0SXRlbUJ1
ZmZlclRvUmVhZCkgeworICAgIHdoaWxlIChkZXN0aW5hdGlvbikgewogICAgICAgICBhdXRvIGRp
c3BsYXlMaXN0ID0gaGFuZGxlLmRpc3BsYXlMaXN0Rm9yUmVhZGluZyhvZmZzZXQsIHNpemVUb1Jl
YWQsICp0aGlzKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFkaXNwbGF5TGlzdCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2Vi
IHByb2Nlc3MuCkBAIC0xNjksNiArMTcwLDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHkKICAg
ICAgICAgfQogCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gc3VibWl0KCpkaXNwbGF5TGlzdCwgKmRl
c3RpbmF0aW9uKTsKKyAgICAgICAgbGFzdEtub3duUmVzZXRDb3VudCA9IGhhbmRsZS5yZXNldENv
dW50KCk7CiAgICAgICAgIHNpemVUb1JlYWQgPSBoYW5kbGUuYWR2YW5jZShyZXN1bHQubnVtYmVy
T2ZCeXRlc1JlYWQpOwogCiAgICAgICAgIENoZWNrZWRTaXplIGNoZWNrZWRPZmZzZXQgPSBvZmZz
ZXQ7CkBAIC0xOTAsOCArMTkyLDM2IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAgICAgICAg
IGlmIChyZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPT0gRGlzcGxheUxpc3Q6OlN0b3BSZXBsYXlS
ZWFzb246OkNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICBkZXN0aW5h
dGlvbiA9IG1ha2VSZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVy
KCpyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpKTsKIAotICAgICAgICBpZiAoIXNp
emVUb1JlYWQpCisgICAgICAgIGlmIChtX25leHRJdGVtQnVmZmVyVG9SZWFkKQogICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgaWYgKCFzaXplVG9SZWFkKSB7CisgICAgICAgICAgICBoYW5k
bGUuc3RhcnRXYWl0aW5nKCk7CisKKyAgICAgICAgICAgIGJvb2wgcmVzdW1lID0gZmFsc2U7Cisg
ICAgICAgICAgICBhdXRvIHRpbWVUb1NsZWVwID0gOF91czsKKyAgICAgICAgICAgIGludCByZW1h
aW5pbmdBdHRlbXB0cyA9IDM7CisgICAgICAgICAgICB3aGlsZSAoLS1yZW1haW5pbmdBdHRlbXB0
cyA+PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGhhbmRsZS5zaG91bGRSZXN1bWUoKSkgewor
ICAgICAgICAgICAgICAgICAgICByZXN1bWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc2xlZXAodGltZVRvU2xl
ZXApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaGFuZGxlLnN0b3BXYWl0aW5n
KCkgPT0gRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OlNob3VsZFJlc3VtZTo6WWVzKQorICAgICAg
ICAgICAgICAgIHJlc3VtZSA9IHRydWU7CisKKyAgICAgICAgICAgIGlmICghcmVzdW1lKQorICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAg
c2l6ZVRvUmVhZCA9IGhhbmRsZS51bnJlYWRCeXRlcygpOworICAgICAgICAgICAgfSB3aGlsZSAo
IXNpemVUb1JlYWQpOworCisgICAgICAgICAgICBpZiAobGFzdEtub3duUmVzZXRDb3VudCA8IGhh
bmRsZS5yZXNldENvdW50KCkpCisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVy
biBkZXN0aW5hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERp
c3BsYXlMaXN0SGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlz
dEhhbmRsZS5oCmluZGV4IDIwYWM5N2UzNDg4MGNiMjgzMWQ3YjQwMDk4NGU4NDU3OTEyYjNhY2Uu
LjliNzgwMGNjNTI1NzIyZjRjODE4OWNhYzc2MThlOTExNmQ0ODhjNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaApAQCAtNjIsMTAgKzYyLDE5
IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCisgICAgZW51bSBjbGFzcyBXYWl0aW5nU3Rh
dHVzIDogdWludDhfdCB7CisgICAgICAgIE5vdFdhaXRpbmcgPSAwLAorICAgICAgICBXYWl0aW5n
LAorICAgICAgICBSZXN1bWluZworICAgIH07CisKICAgICBzdHJ1Y3QgRGlzcGxheUxpc3RTaGFy
ZWRNZW1vcnlIZWFkZXIgewogICAgICAgICBBdG9taWM8dWludDY0X3Q+IHVucmVhZEJ5dGVzOwor
ICAgICAgICBBdG9taWM8dWludDY0X3Q+IHJlc2V0Q291bnQ7CisgICAgICAgIEF0b21pYzxXYWl0
aW5nU3RhdHVzPiB3YWl0aW5nU3RhdHVzOwogICAgIH07CiAKKyAgICBjb25zdCBEaXNwbGF5TGlz
dFNoYXJlZE1lbW9yeUhlYWRlciYgaGVhZGVyKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXIqPihkYXRhKCkpOyB9CiAg
ICAgRGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXImIGhlYWRlcigpIHsgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyKj4oZGF0YSgpKTsgfQog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAppbmRleCA4ZmYzNjVj
ZDM0MmE4MjZkYTA0NDkzYmI2NzI5NGMyYzUxZmEwNDM3Li4wODZiYzM1ZTVlYmVhNGY4MGQ4MmNk
ZWE0NTFkYzJjMWMwMDdkM2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcApA
QCAtNjQsOCArNjQsMTQgQEAgYm9vbCBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6bW92ZVdyaXRh
YmxlT2Zmc2V0VG9TdGFydElmUG9zc2libGUoKQogICAgIGlmICh1bnJlYWRCeXRlcygpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBoZWFkZXIoKS5yZXNldENvdW50LmV4Y2hhbmdlQWRk
KDEpOwogICAgIG1fd3JpdGFibGVPZmZzZXQgPSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVh
ZGVyU2l6ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIERpc3BsYXlMaXN0V3JpdGVy
SGFuZGxlOjp0cnlUb1Jlc3VtZSgpCit7CisgICAgcmV0dXJuIGhlYWRlcigpLndhaXRpbmdTdGF0
dXMuY29tcGFyZUV4Y2hhbmdlV2VhayhTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0
YXR1czo6V2FpdGluZywgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OldhaXRpbmdTdGF0dXM6OlJl
c3VtaW5nKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVy
SGFuZGxlLmgKaW5kZXggZmM3YTIxNjUzYTBlYjk2ODE5ZWIxYzA5YTlmYzM0NDQ4MWE3Mzk2My4u
ZDgzM2IxMDc5Mjk0MGY2ZmI3YWNjZTM3NDViMTU5N2Q4OThiZGUzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxp
c3RXcml0ZXJIYW5kbGUuaApAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHdy
aXRhYmxlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV93cml0YWJsZU9mZnNldDsgfQogICAgIHNp
emVfdCBhdmFpbGFibGVDYXBhY2l0eSgpIGNvbnN0OwogCisgICAgYm9vbCB0cnlUb1Jlc3VtZSgp
OwogICAgIGJvb2wgbW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFydElmUG9zc2libGUoKTsKIAogICAg
IHNpemVfdCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDExNGFjNjViMTYyZmQ1MzA4OGU0ZTRlZjQ1
MTkwMmJkZWViMGZmNzAuLmUyYjhiNDAzOWMwMTEzNjdjNjc5NjExYmFkMzEwN2Q5ODIwODVmNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTIxOCwxNyAr
MjE4LDI1IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRh
KGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuCiAKICAgICBib29sIHdhc0VtcHR5ID0g
c2hhcmVkSGFuZGxlLT5hZHZhbmNlKG51bWJlck9mQnl0ZXMpID09IG51bWJlck9mQnl0ZXM7CiAg
ICAgaWYgKCF3YXNFbXB0eSB8fCBkaWRDaGFuZ2VJdGVtQnVmZmVyID09IERpc3BsYXlMaXN0OjpE
aWRDaGFuZ2VJdGVtQnVmZmVyOjpZZXMpIHsKLSAgICAgICAgaWYgKG1fZGVmZXJyZWRXYWtldXBN
ZXNzYWdlQXJndW1lbnRzICYmICEtLW1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRp
bmdXYWtldXApCi0gICAgICAgICAgICBzZW5kV2FrZXVwTWVzc2FnZSgqc3RkOjpleGNoYW5nZSht
X2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cywgV1RGOjpudWxsb3B0KSk7CisgICAgICAg
IGlmIChtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cykgeworICAgICAgICAgICAgaWYg
KHNoYXJlZEhhbmRsZS0+dHJ5VG9SZXN1bWUoKSkgeworICAgICAgICAgICAgICAgIG1fZGVmZXJy
ZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAg
IG1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXAgPSAwOworICAgICAg
ICAgICAgfSBlbHNlIGlmICghLS1tX3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRCZWZvcmVTZW5kaW5n
V2FrZXVwKQorICAgICAgICAgICAgICAgIHNlbmRXYWtldXBNZXNzYWdlKCpzdGQ6OmV4Y2hhbmdl
KG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzLCBXVEY6Om51bGxvcHQpKTsKKyAgICAg
ICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKHNoYXJlZEhhbmRsZS0+dHJ5
VG9SZXN1bWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgc2VuZERlZmVycmVkV2FrZXVwTWVz
c2FnZUlmTmVlZGVkKCk7CiAKICAgICAvLyBJbnN0ZWFkIG9mIHNlbmRpbmcgdGhlIHdha2V1cCBt
ZXNzYWdlIGltbWVkaWF0ZWx5LCB3YWl0IGZvciBzb21lIGFkZGl0aW9uYWwgZGF0YS4gVGhpcyBn
aXZlcyB0aGUKICAgICAvLyB3ZWIgcHJvY2VzcyBhICJoZWFkIHN0YXJ0IiwgZGVjcmVhc2luZyB0
aGUgbGlrZWxpaG9vZCB0aGF0IHRoZSBHUFUgcHJvY2VzcyB3aWxsIGVuY291bnRlciBmcmVxdWVu
dAogICAgIC8vIHdha2V1cHMgd2hlbiBwcm9jZXNzaW5nIGEgbGFyZ2UgYW1vdW50IG9mIGRpc3Bs
YXkgbGlzdCBpdGVtcy4KLSAgICBjb25zdGV4cHIgdW5zaWduZWQgaXRlbUNvdW50SHlzdGVyZXNp
c0JlZm9yZVNlbmRpbmdXYWtldXAgPSA1MTI7CisgICAgY29uc3RleHByIHVuc2lnbmVkIGl0ZW1D
b3VudEh5c3RlcmVzaXNCZWZvcmVTZW5kaW5nV2FrZXVwID0gNjQ7CiAKICAgICBtX3JlbWFpbmlu
Z0l0ZW1zVG9BcHBlbmRCZWZvcmVTZW5kaW5nV2FrZXVwID0gaXRlbUNvdW50SHlzdGVyZXNpc0Jl
Zm9yZVNlbmRpbmdXYWtldXA7CiAgICAgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMg
PSB7ewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415580</attachid>
            <date>2020-12-07 14:02:11 -0800</date>
            <delta_ts>2020-12-07 16:10:48 -0800</delta_ts>
            <desc>WIP v2</desc>
            <filename>bug-219586-20201207140210.patch</filename>
            <type>text/plain</type>
            <size>26235</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyZjI4ZGMyZDZlM2VlZWNj
ZDdmZTg2YmRkZGJmYTQ4ZDExNzc3YmQuLjc1NGUxNWIzM2IxOWYxZWMxNTYyMzU3OThkMjk3YzIz
Mzg4YmFlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjAtMTItMDcgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbmN1cnJlbnQgRGlz
cGxheSBMaXN0c10gR1BVIHByb2Nlc3Mgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBzbGVlcCBhZnRl
ciByZWFkaW5nIGFsbCBhdmFpbGFibGUgZGlzcGxheSBsaXN0IGl0ZW1zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk1ODYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXb3JrIGluIHByb2dyZXNzIHBhdGNo
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZS5oOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6c3RhcnRXYWl0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OnNob3VsZFJl
c3VtZSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpzdG9wV2Fp
dGluZyk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpyZXN1bWVS
ZWFkaW5nSW5mb3JtYXRpb24gY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3Bs
YXlMaXN0cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VV
cEFuZEFwcGx5RGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFNoYXJlZC9HUFVQcm9jZXNzV2FrZXVwUmVhc29uLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oLgor
ICAgICAgICAqIFNoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oOgorICAgICAgICAoV2ViS2l0OjpE
aXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6dHJ5VG9SZXN1bWUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c2VuZFdha2V1cE1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnNlbmREZWZl
cnJlZFdha2V1cE1lc3NhZ2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6ZGlkQXBwZW5kRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisKIDIwMjAtMTItMDcg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgRW5zdXJl
IHRoYXQgRGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXIgaXMgbmV2ZXIgZXhwbGljaXRseSBj
cmVhdGVkIG9yIGRlc3Ryb3llZCBhdCBjb21waWxlLXRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgK
aW5kZXggY2I3MjIzOTc2OTZkYzllMGIwNmU4OWNhYzI1Y2U3MmNiOWE1NzZlMS4uZTg2ZDdjZTYy
NmM5YzljMmIzYjljZGExNDY5NmY0MTg2N2I4NTllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgK
QEAgLTQxLDYgKzQxLDMwIEBAIHB1YmxpYzoKICAgICBzaXplX3QgYWR2YW5jZShzaXplX3QgYW1v
dW50KSBvdmVycmlkZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdEZvclJlYWRpbmcoc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGNhcGFjaXR5LCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQm
KSBjb25zdDsKIAorICAgIHZvaWQgc3RhcnRXYWl0aW5nKCkKKyAgICB7CisgICAgICAgIGhlYWRl
cigpLndhaXRpbmdTdGF0dXMuc3RvcmUoU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OldhaXRpbmdT
dGF0dXM6OldhaXRpbmcpOworICAgIH0KKworICAgIGJvb2wgc2hvdWxkUmVzdW1lKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBoZWFkZXIoKS53YWl0aW5nU3RhdHVzLmxvYWQoKSA9PSBTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1czo6UmVzdW1pbmc7CisgICAgfQorCisgICAg
c3RydWN0IFJlc3VtZVJlYWRpbmdJbmZvcm1hdGlvbiB7CisgICAgICAgIHVpbnQ2NF90IG9mZnNl
dDsKKyAgICAgICAgdWludDY0X3QgZGVzdGluYXRpb247CisgICAgfTsKKworICAgIE9wdGlvbmFs
PFJlc3VtZVJlYWRpbmdJbmZvcm1hdGlvbj4gc3RvcFdhaXRpbmcoKQorICAgIHsKKyAgICAgICAg
YXV0byYgaGVhZGVyID0gdGhpcy0+aGVhZGVyKCk7CisgICAgICAgIGlmIChoZWFkZXIud2FpdGlu
Z1N0YXR1cy5leGNoYW5nZShTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1czo6
Tm90V2FpdGluZykgPT0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OldhaXRpbmdTdGF0dXM6OlJl
c3VtaW5nKQorICAgICAgICAgICAgcmV0dXJuIHt7IGhlYWRlci5vZmZzZXRUb1Jlc3VtZVJlYWRp
bmcsIGhlYWRlci5kZXN0aW5hdGlvblRvUmVzdW1lUmVhZGluZyB9fTsKKworICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIH0KKwogcHJpdmF0ZToKICAgICBEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCiAgICAgICAgIDogU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUoaWRlbnRpZmllciwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDEzMWU5NTU1N2E5Y2UyMGMzYWNhYjAyZTJkOGI3MmU3
ZGZmZGRiM2UuLjcyZDM4OGI1MTNlNWQxMzEyMDlhYWE1YjM5MDc5M2YwOWRkMjdjMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBEaXNwbGF5TGlzdDo6UmVw
bGF5UmVzdWx0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdChjb25zdCBEaXNwbGF5TGlz
dDo6RGlzcAogICAgIH0ucmVwbGF5KCk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5n
RGlzcGxheUxpc3RzKEltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGluYXRpb24sIHNpemVfdCBpbml0
aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYgaGFuZGxlKQorUmVmUHRyPEltYWdl
QnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZl
ckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoSW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5hdGlv
biwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiBoYW5kbGUs
IEdQVVByb2Nlc3NXYWtldXBSZWFzb24gcmVhc29uKQogewogICAgIGF1dG8gZGVzdGluYXRpb24g
PSBtYWtlUmVmUHRyKGluaXRpYWxEZXN0aW5hdGlvbik7CiAgICAgYXV0byBoYW5kbGVQcm90ZWN0
b3IgPSBtYWtlUmVmKGhhbmRsZSk7CkBAIC0xNTcsMTAgKzE1NywxMiBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
QWZ0ZXJBcHBseQogICAgIGF1dG8gb2Zmc2V0ID0gaW5pdGlhbE9mZnNldDsKICAgICBzaXplX3Qg
c2l6ZVRvUmVhZCA9IDA7CiAgICAgZG8geworICAgICAgICBpZiAocmVhc29uID09IEdQVVByb2Nl
c3NXYWtldXBSZWFzb246Okl0ZW1Db3VudEh5c3RlcmVzaXNFeGNlZWRlZCkKKyAgICAgICAgICAg
IHNsZWVwKDE2X3VzKTsKICAgICAgICAgc2l6ZVRvUmVhZCA9IGhhbmRsZS51bnJlYWRCeXRlcygp
OwogICAgIH0gd2hpbGUgKCFzaXplVG9SZWFkKTsKIAotICAgIHdoaWxlIChkZXN0aW5hdGlvbiAm
JiAhbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCkgeworICAgIHdoaWxlIChkZXN0aW5hdGlvbikgewog
ICAgICAgICBhdXRvIGRpc3BsYXlMaXN0ID0gaGFuZGxlLmRpc3BsYXlMaXN0Rm9yUmVhZGluZyhv
ZmZzZXQsIHNpemVUb1JlYWQsICp0aGlzKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFkaXNwbGF5
TGlzdCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRl
cm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCkBAIC0xOTAsMTQgKzE5Miw1MSBAQCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVm
ZmVyQWZ0ZXJBcHBseQogICAgICAgICBpZiAocmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID09IERp
c3BsYXlMaXN0OjpTdG9wUmVwbGF5UmVhc29uOjpDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVy
KQogICAgICAgICAgICAgZGVzdGluYXRpb24gPSBtYWtlUmVmUHRyKG1fcmVtb3RlUmVzb3VyY2VD
YWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcigqcmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
KSk7CiAKLSAgICAgICAgaWYgKCFzaXplVG9SZWFkKQorICAgICAgICBpZiAobV9uZXh0SXRlbUJ1
ZmZlclRvUmVhZCkKICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmICghc2l6ZVRvUmVh
ZCkgeworICAgICAgICAgICAgaWYgKHJlYXNvbiAhPSBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpJ
dGVtQ291bnRIeXN0ZXJlc2lzRXhjZWVkZWQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgIGhhbmRsZS5zdGFydFdhaXRpbmcoKTsKKworICAgICAgICAgICAgYXV0byB0aW1l
VG9TbGVlcCA9IDhfdXM7CisgICAgICAgICAgICBpbnQgcmVtYWluaW5nQXR0ZW1wdHMgPSAzOwor
ICAgICAgICAgICAgd2hpbGUgKCFoYW5kbGUuc2hvdWxkUmVzdW1lKCkgJiYgLS1yZW1haW5pbmdB
dHRlbXB0cyA+PSAwKQorICAgICAgICAgICAgICAgIHNsZWVwKHRpbWVUb1NsZWVwKTsKKworICAg
ICAgICAgICAgYXV0byByZXN1bWVSZWFkaW5nSW5mbyA9IGhhbmRsZS5zdG9wV2FpdGluZygpOwor
ICAgICAgICAgICAgaWYgKCFyZXN1bWVSZWFkaW5nSW5mbykKKyAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIHNpemVUb1JlYWQgPSBoYW5k
bGUudW5yZWFkQnl0ZXMoKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKCFzaXplVG9SZWFkKTsKKwor
ICAgICAgICAgICAgYXV0byBuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJUeXBlPihyZXN1bWVSZWFkaW5nSW5m
by0+ZGVzdGluYXRpb24pOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFuZXdEZXN0aW5hdGlv
bklkZW50aWZpZXIpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2Ug
Y2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIobV9yZW1vdGVS
ZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikp
OworCisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWRlc3RpbmF0aW9uKSkgeworICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2Vi
IHByb2Nlc3MuCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb2Zm
c2V0ID0gcmVzdW1lUmVhZGluZ0luZm8tPm9mZnNldDsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IHJldHVybiBkZXN0aW5hdGlvbjsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3
YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmll
ciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChEaXNwbGF5TGlzdDo6
SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxP
ZmZzZXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50
aWZpZXIsIEdQVVByb2Nlc3NXYWtldXBSZWFzb24gcmVhc29uKQogewogICAgIFRyYWNlU2NvcGUg
dHJhY2luZ1Njb3BlKFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3RTdGFydCwgV2FrZVVwQW5kQXBw
bHlEaXNwbGF5TGlzdEVuZCk7CiAgICAgYXV0byBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbWFr
ZVJlZlB0cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoZGVzdGluYXRp
b25CdWZmZXJJZGVudGlmaWVyKSk7CkBAIC0yMTQsNyArMjUzLDcgQEAgdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KERpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRlc3RpbmF0aW9uSW1hZ2VC
dWZmZXIgPSBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlz
dHMoKmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsIGluaXRpYWxPZmZzZXQsICppbml0aWFsSGFuZGxl
KTsKKyAgICBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBpbml0
aWFsT2Zmc2V0LCAqaW5pdGlhbEhhbmRsZSwgcmVhc29uKTsKIAogICAgIGlmICghZGVzdGluYXRp
b25JbWFnZUJ1ZmZlcikgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIzMSw3
ICsyNzAsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlz
cGxheUxpc3QoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZAogCiAgICAgICAgIC8vIE90aGVyd2lz
ZSwgY29udGludWUgcmVhZGluZyB0aGUgbmV4dCBkaXNwbGF5IGxpc3QgaXRlbSBidWZmZXIgZnJv
bSB0aGUgc3RhcnQuCiAgICAgICAgIG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQgPSB7IH07Ci0gICAg
ICAgIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFm
dGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoKmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsIFNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlOjpoZWFkZXJTaXplKCksICpuZXh0SGFuZGxlKTsKKyAgICAgICAgZGVz
dGluYXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBs
eWluZ0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGU6OmhlYWRlclNpemUoKSwgKm5leHRIYW5kbGUsIHJlYXNvbik7CiAKICAgICAgICAg
aWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTI4NCw3ICszMjMsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKERpc3BsYXlMaXN0OjpJdGVtQgogCiAg
ICAgaWYgKG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQgPT0gaWRlbnRpZmllcikgewogICAgICAgICBt
X25leHRJdGVtQnVmZmVyVG9SZWFkID0geyB9OwotICAgICAgICB3YWtlVXBBbmRBcHBseURpc3Bs
YXlMaXN0KGlkZW50aWZpZXIsIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFkZXJTaXplKCks
IGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CisgICAgICAgIHdha2VVcEFuZEFwcGx5RGlz
cGxheUxpc3QoaWRlbnRpZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUo
KSwgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpV
bnNwZWNpZmllZCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBlMWYzNTA5
NmEzYmQ1Njc3YTFiZDRiMGExYjA0NzQ0NGFlYjk2ZTZhLi5iY2ZhN2YzY2MwYzM3ZmVjNGQ4ZDg4
MzdmOWVmNzgzN2Y2ZjA5NjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiR1BVUHJvY2Vzc1dha2V1cFJlYXNvbi5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgpAQCAtOTQsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIH0K
IAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0KGNvbnN0IFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBk
ZXN0aW5hdGlvbik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGlu
YXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VC
dWZmZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlM
aXN0UmVhZGVySGFuZGxlJik7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0
RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6
SW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERp
c3BsYXlMaXN0UmVhZGVySGFuZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7CiAKICAgICAv
LyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTA2LDcgKzEwNyw3IEBAIHByaXZhdGU6
CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KICAgICB2b2lkIGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwg
V2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7Ci0gICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5p
dGlhbE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0
aW9uQnVmZmVySWRlbnRpZmllcik7CisgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRp
ZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllciwgR1BVUHJvY2Vzc1dha2V1cFJl
YXNvbik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1h
Z2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2Vz
LmluCmluZGV4IGZlYzk2YTIyN2RiZjUzYzA0NjEwZmVlN2VkNDBjMTNmYTQ5MTRlYjguLmM0ODc0
ODVlYjExYzczNzIwZDNlMGI5MjZlYjk4YWZmNzc0NGUzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlSW1hZ2VCdWZm
ZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCi0gICAgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90
IGluaXRpYWxPZmZzZXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0
aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCisgICAgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZp
ZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIsIGVudW06dWludDhfdCBXZWJLaXQ6
OkdQVVByb2Nlc3NXYWtldXBSZWFzb24gcmVhc29uKQogICAgIEdldEltYWdlRGF0YShlbnVtOnVp
bnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNv
cmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNl
IGltYWdlRGF0YSkgU3luY2hyb25vdXMKICAgICBDYWNoZU5hdGl2ZUltYWdlKFdlYktpdDo6U2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIERpZENyZWF0ZVNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NXYWtl
dXBSZWFzb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NXYWtldXBSZWFzb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNzUzZDc4MmM4YWY5MzYzYmFjMTk2Yjc2NmFmNTI2YWYyNjEwOGQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc1dha2V1cFJl
YXNvbi5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3Mg
R1BVUHJvY2Vzc1dha2V1cFJlYXNvbiA6IHVpbnQ4X3QgeworICAgIFVuc3BlY2lmaWVkLAorICAg
IEl0ZW1Db3VudEh5c3RlcmVzaXNFeGNlZWRlZAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktp
dDo6R1BVUHJvY2Vzc1dha2V1cFJlYXNvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYktpdDo6R1BVUHJvY2Vzc1dha2V1cFJlYXNvbiwKKyAgICAgICAgV2Vi
S2l0OjpHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmllZCwKKyAgICAgICAgV2ViS2l0
OjpHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpJdGVtQ291bnRIeXN0ZXJlc2lzRXhjZWVkZWQKKyAg
ICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlz
dEhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUu
aAppbmRleCA3MmRlNWExZDNjM2NlNjk4YTdmZTVmYjc1YzZkYTQ4N2JkY2I0YWVmLi43OTYxZDUw
Njk5OTk3NzQzZWFkNWNkMzU0ZTQ5ZjYyMDJiNTJlMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKQEAgLTYyLDEzICs2MiwyMyBAQCBwcm90
ZWN0ZWQ6CiAgICAgewogICAgIH0KIAorICAgIGVudW0gY2xhc3MgV2FpdGluZ1N0YXR1cyA6IHVp
bnQ4X3QgeworICAgICAgICBOb3RXYWl0aW5nID0gMCwKKyAgICAgICAgV2FpdGluZywKKyAgICAg
ICAgUmVzdW1pbmcKKyAgICB9OworCiAgICAgc3RydWN0IERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5
SGVhZGVyIHsKICAgICAgICAgRGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXIoKSA9IGRlbGV0
ZTsKICAgICAgICAgfkRpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyKCkgPSBkZWxldGU7CiAK
ICAgICAgICAgQXRvbWljPHVpbnQ2NF90PiB1bnJlYWRCeXRlczsKKyAgICAgICAgdWludDY0X3Qg
b2Zmc2V0VG9SZXN1bWVSZWFkaW5nOworICAgICAgICB1aW50NjRfdCBkZXN0aW5hdGlvblRvUmVz
dW1lUmVhZGluZzsKKyAgICAgICAgQXRvbWljPFdhaXRpbmdTdGF0dXM+IHdhaXRpbmdTdGF0dXM7
CiAgICAgfTsKIAorICAgIGNvbnN0IERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyJiBoZWFk
ZXIoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBEaXNwbGF5TGlzdFNo
YXJlZE1lbW9yeUhlYWRlcio+KGRhdGEoKSk7IH0KICAgICBEaXNwbGF5TGlzdFNoYXJlZE1lbW9y
eUhlYWRlciYgaGVhZGVyKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8RGlzcGxheUxpc3RT
aGFyZWRNZW1vcnlIZWFkZXIqPihkYXRhKCkpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NGQ3OTdmZmI2OWQw
NjY3MjYzZDA0ZjQzMDlkZWExOWZjYmJhMDMyLi45MGU3YzNjN2RkN2M0Y2NjOGI3YTQwZGM5ODky
NGFhMWU5ZTMyYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE5MjksNiArMTkyOSw3IEBACiAJCUY0MkQ2MzQxMjJBMEVGREYwMEQy
RkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MkQ2MzNGMjJBMEVGRDMwMEQyRkIzQSAvKiBXZWJBdXRv
Y29ycmVjdGlvbkRhdGEuaCAqLzsgfTsKIAkJRjQzMEU5NDIyMjQ3MzM1RjAwNUZFMDUzIC8qIFdl
YnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0MzBFOTQxMjI0NzMyQTkwMDVGRTA1MyAvKiBXZWJzaXRlTWV0YVZp
ZXdwb3J0UG9saWN5LmggKi87IH07CiAJCUY0MzBFOTQ0MjI0NzNERkYwMDVGRTA1MyAvKiBXZWJD
b250ZW50TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQzMEU5NDMyMjQ3M0RCODAwNUZFMDUzIC8qIFdlYkNvbnRlbnRNb2RlLmggKi87IH07CisJ
CUY0MzY5NTUwMjU3RUNEQzgwMDQ5MTlGNSAvKiBHUFVQcm9jZXNzV2FrZXVwUmVhc29uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM2OTU0RjI1N0VD
REM4MDA0OTE5RjUgLyogR1BVUHJvY2Vzc1dha2V1cFJlYXNvbi5oICovOyB9OwogCQlGNDM4Q0Qx
QzIyNDE0MjE0MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzhDRDFCMjI0MTQwQTYwMERFNkRE
QSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFB1YmxpYywgKTsgfTsgfTsKIAkJRjQzOENEMUYyMjQxNEQ0MDAwREU2RERBIC8qIFdLV2VicGFn
ZVByZWZlcmVuY2VzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0MzhDRDFFMjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJl
bmNlc0ludGVybmFsLmggKi87IH07CiAJCUY0MzhDRDIxMjI0MUY2OTUwMERFNkREQSAvKiBXS1dl
YnBhZ2VQcmVmZXJlbmNlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0MzhDRDIwMjI0MUY2OTUwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVm
ZXJlbmNlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNTYxNiw2ICs1NjE3LDcgQEAKIAkJRjQyRDYzNDAyMkEwRUZEMzAwRDJGQjNB
IC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgcGF0aCA9IGlvcy9XZWJBdXRv
Y29ycmVjdGlvbkRhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzBFOTQx
MjI0NzMyQTkwMDVGRTA1MyAvKiBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjQzMEU5NDMyMjQ3M0RCODAwNUZFMDUzIC8qIFdlYkNvbnRlbnRNb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkNvbnRlbnRNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUY0MzY5NTRGMjU3RUNEQzgwMDQ5MTlGNSAvKiBHUFVQcm9jZXNzV2FrZXVwUmVhc29uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdQVVByb2Nlc3NXYWtldXBSZWFzb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjQzOENEMUIyMjQxNDBBNjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZl
cmVuY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzhDRDFEMjI0MTRBRDYwMERFNkREQSAvKiBXS1dlYnBh
Z2VQcmVmZXJlbmNlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVu
Y2VzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxRTIyNDE0RDQwMDBE
RTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MzEzLDYgKzYzMTUsNyBAQAogCQkJCTFBMTRGOERGMUQ3NEM4MzQwMDZDQkVDNiAvKiBG
cmFtZUluZm9EYXRhLmNwcCAqLywKIAkJCQkxQTE0RjhFMDFENzRDODM0MDA2Q0JFQzYgLyogRnJh
bWVJbmZvRGF0YS5oICovLAogCQkJCTVDMTIxRTgzMjQxMDFGNzAwMDQ4NkY5QiAvKiBGcmFtZVRy
ZWVOb2RlRGF0YS5oICovLAorCQkJCUY0MzY5NTRGMjU3RUNEQzgwMDQ5MTlGNSAvKiBHUFVQcm9j
ZXNzV2FrZXVwUmVhc29uLmggKi8sCiAJCQkJMUFDNzVBMUExQjMzNjgyNzAwNTY3NDVCIC8qIEhh
bmdEZXRlY3Rpb25EaXNhYmxlci5oICovLAogCQkJCUJDQ0Y2QjIzMTJDOTNFN0EwMDhGOUMzNSAv
KiBJbWFnZU9wdGlvbnMuaCAqLywKIAkJCQk5OTlCN0VEODI1NTBFNEE4MDBGNDUwQTQgLyogSW5z
cGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwICovLApAQCAtMTE2OTEsNiArMTE2OTQsNyBAQAogCQkJ
CTJEMUI1RDVFMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ4MTlCQTIxODYyODAwRTAwMUYwM0QxIC8qIFZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2
Q0QxMTkxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlGNDM2OTU1MDI1N0VDREM4MDA0OTE5RjUgLyogR1BVUHJvY2Vzc1dha2V1cFJlYXNv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY4NDA1NTMxOEI4NkVENjAwMjJDMzhCIC8qIFZpZXdV
cGRhdGVEaXNwYXRjaGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2ODQwNTQ0MThC
ODVBNjMwMDIyQzM4QiAvKiBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyREQ1QTcyOTFFQkYwOEQ1MDA5QkE1OTcgLyogVmlzaWJsZVdlYlBhZ2VDb3Vu
dGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaAppbmRleCBm
YzdhMjE2NTNhMGViOTY4MTllYjFjMDlhOWZjMzQ0NDgxYTczOTYzLi45ZTU2NzdhZTBhNGE0Nzhj
NjkxYTgxZDdjYWYxN2EwZjI3MDkxNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5o
CkBAIC00Niw2ICs0NiwxNCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGFkdmFuY2Uoc2l6ZV90IGFt
b3VudCkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5k
bGUgY3JlYXRlSGFuZGxlKCkgY29uc3Q7CiAKKyAgICBib29sIHRyeVRvUmVzdW1lKHVpbnQ2NF90
IG9mZnNldCwgdWludDY0X3QgZGVzdGluYXRpb25JZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAg
YXV0byYgaGVhZGVyID0gdGhpcy0+aGVhZGVyKCk7CisgICAgICAgIGhlYWRlci5vZmZzZXRUb1Jl
c3VtZVJlYWRpbmcgPSBvZmZzZXQ7CisgICAgICAgIGhlYWRlci5kZXN0aW5hdGlvblRvUmVzdW1l
UmVhZGluZyA9IGRlc3RpbmF0aW9uSWRlbnRpZmllcjsKKyAgICAgICAgcmV0dXJuIGhlYWRlci53
YWl0aW5nU3RhdHVzLmNvbXBhcmVFeGNoYW5nZVdlYWsoU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6
OldhaXRpbmdTdGF0dXM6OldhaXRpbmcsIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpXYWl0aW5n
U3RhdHVzOjpSZXN1bWluZyk7CisgICAgfQorCiBwcml2YXRlOgogICAgIERpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKICAgICAgICAgOiBTaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZShpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggMTE0YWM2NWIxNjJm
ZDUzMDg4ZTRlNGVmNDUxOTAyYmRlZWIwZmY3MC4uOTU5ZTUzNWIwZWExZDBkYTRmNzc3NDczYjRm
MjJmMWViNjE0N2EwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cApAQCAtMTk1LDkgKzE5NSw5IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3
aWxsQXBwZW5kSXRlbShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbmV3CiAgICAgICAgIGlt
YWdlQnVmZmVyLT5jbGVhckRpc3BsYXlMaXN0KCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpzZW5kV2FrZXVwTWVzc2FnZShjb25zdCBXYWtldXBNZXNzYWdlQXJndW1l
bnRzJiBhcmd1bWVudHMpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c2VuZFdh
a2V1cE1lc3NhZ2UoR1BVUHJvY2Vzc1dha2V1cFJlYXNvbiByZWFzb24sIGNvbnN0IFdha2V1cE1l
c3NhZ2VBcmd1bWVudHMmIGFyZ3VtZW50cykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGFyZ3VtZW50cy5pdGVt
QnVmZmVySWRlbnRpZmllciwgYXJndW1lbnRzLmluaXRpYWxPZmZzZXQsIGFyZ3VtZW50cy5pbWFn
ZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpXYWtlVXBBbmRBcHBseURpc3Bs
YXlMaXN0KGFyZ3VtZW50cy5pdGVtQnVmZmVySWRlbnRpZmllciwgYXJndW1lbnRzLmluaXRpYWxP
ZmZzZXQsIGFyZ3VtZW50cy5pbWFnZUJ1ZmZlcklkZW50aWZpZXIsIHJlYXNvbiksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6c2VuZERlZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVkKCkKQEAgLTIwNiw3ICsyMDYs
NyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c2VuZERlZmVycmVkV2FrZXVw
TWVzc2FnZUlmTmVlZGVkKCkKICAgICBpZiAoIWFyZ3VtZW50cykKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc2VuZFdha2V1cE1lc3NhZ2UoKmFyZ3VtZW50cyk7CisgICAgc2VuZFdha2V1cE1lc3Nh
Z2UoR1BVUHJvY2Vzc1dha2V1cFJlYXNvbjo6VW5zcGVjaWZpZWQsICphcmd1bWVudHMpOwogICAg
IG1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXAgPSAwOwogfQogCkBA
IC0yMTgsMTEgKzIxOCwyMCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlk
QXBwZW5kRGF0YShjb25zdCBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbgogCiAgICAgYm9vbCB3
YXNFbXB0eSA9IHNoYXJlZEhhbmRsZS0+YWR2YW5jZShudW1iZXJPZkJ5dGVzKSA9PSBudW1iZXJP
ZkJ5dGVzOwogICAgIGlmICghd2FzRW1wdHkgfHwgZGlkQ2hhbmdlSXRlbUJ1ZmZlciA9PSBEaXNw
bGF5TGlzdDo6RGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6WWVzKSB7Ci0gICAgICAgIGlmIChtX2RlZmVy
cmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyAmJiAhLS1tX3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRC
ZWZvcmVTZW5kaW5nV2FrZXVwKQotICAgICAgICAgICAgc2VuZFdha2V1cE1lc3NhZ2UoKnN0ZDo6
ZXhjaGFuZ2UobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMsIFdURjo6bnVsbG9wdCkp
OworICAgICAgICBpZiAobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMpIHsKKyAgICAg
ICAgICAgIGlmIChzaGFyZWRIYW5kbGUtPnRyeVRvUmVzdW1lKG1fZGVmZXJyZWRXYWtldXBNZXNz
YWdlQXJndW1lbnRzLT5pbml0aWFsT2Zmc2V0LCBtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3Vt
ZW50cy0+aW1hZ2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCkpKSB7CisgICAgICAgICAgICAg
ICAgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMgPSBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCA9
IDA7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCEtLW1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJl
Zm9yZVNlbmRpbmdXYWtldXApCisgICAgICAgICAgICAgICAgc2VuZFdha2V1cE1lc3NhZ2UoR1BV
UHJvY2Vzc1dha2V1cFJlYXNvbjo6SXRlbUNvdW50SHlzdGVyZXNpc0V4Y2VlZGVkLCAqc3RkOjpl
eGNoYW5nZShtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cywgV1RGOjpudWxsb3B0KSk7
CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGF1dG8gaW5pdGlhbE9m
ZnNldCA9IHNoYXJlZEhhbmRsZS0+d3JpdGFibGVPZmZzZXQoKSAtIG51bWJlck9mQnl0ZXM7Cisg
ICAgaWYgKHNoYXJlZEhhbmRsZS0+dHJ5VG9SZXN1bWUoaW5pdGlhbE9mZnNldCwgZGVzdGluYXRp
b25JbWFnZUJ1ZmZlci50b1VJbnQ2NCgpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgc2VuZERl
ZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVkKCk7CiAKICAgICAvLyBJbnN0ZWFkIG9mIHNlbmRp
bmcgdGhlIHdha2V1cCBtZXNzYWdlIGltbWVkaWF0ZWx5LCB3YWl0IGZvciBzb21lIGFkZGl0aW9u
YWwgZGF0YS4gVGhpcyBnaXZlcyB0aGUKQEAgLTIzMSwxMSArMjQwLDcgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZERhdGEoY29uc3QgRGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJIYW4KICAgICBjb25zdGV4cHIgdW5zaWduZWQgaXRlbUNvdW50SHlzdGVyZXNpc0Jl
Zm9yZVNlbmRpbmdXYWtldXAgPSA1MTI7CiAKICAgICBtX3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRC
ZWZvcmVTZW5kaW5nV2FrZXVwID0gaXRlbUNvdW50SHlzdGVyZXNpc0JlZm9yZVNlbmRpbmdXYWtl
dXA7Ci0gICAgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMgPSB7ewotICAgICAgICBo
YW5kbGUuaWRlbnRpZmllciwKLSAgICAgICAgc2hhcmVkSGFuZGxlLT53cml0YWJsZU9mZnNldCgp
IC0gbnVtYmVyT2ZCeXRlcywKLSAgICAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlcgotICAgIH19
OworICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzID0ge3sgaGFuZGxlLmlkZW50
aWZpZXIsIGluaXRpYWxPZmZzZXQsIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgfX07CiB9CiAKIFJl
ZlB0cjxEaXNwbGF5TGlzdFdyaXRlckhhbmRsZT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpmaW5kUmV1c2FibGVEaXNwbGF5TGlzdEhhbmRsZShzaXplX3QgY2FwYWNpdHkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCAzN2E0Y2ViN2E4MjhiMDUwOTdiZDMz
NDkxNTI4Y2E5ZDVjYzM5OWM4Li44NDQ2ZWM5ZWNkYjU5YTNkNWQyZDA5ZWQwZGRkYjAwM2JiYWU2
MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3NXYWtldXBSZWFzb24uaCIKICNpbmNsdWRl
ICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCkBAIC0xMDgsNyArMTA5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVm
ZmVySWRlbnRpZmllcjsKICAgICB9OwogCi0gICAgdm9pZCBzZW5kV2FrZXVwTWVzc2FnZShjb25z
dCBXYWtldXBNZXNzYWdlQXJndW1lbnRzJik7CisgICAgdm9pZCBzZW5kV2FrZXVwTWVzc2FnZShH
UFVQcm9jZXNzV2FrZXVwUmVhc29uLCBjb25zdCBXYWtldXBNZXNzYWdlQXJndW1lbnRzJik7CiAK
ICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkg
eyAqdGhpcyB9OwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU+PiBtX3NoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415599</attachid>
            <date>2020-12-07 16:10:50 -0800</date>
            <delta_ts>2020-12-08 14:45:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219586-20201207161049.patch</filename>
            <type>text/plain</type>
            <size>32806</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY2MTdmM2RmNGRhNzFlOGRk
MjJiODJiNWZhZGQ5YTZmMjZlMTNhMWQuLjcwMjg4ZGI3YjlhODg1YTJhYTVmN2U1OGUzNDYxZmE5
ZmMzZDk3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIxIEBACisyMDIwLTEyLTA3ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IERp
c3BsYXkgTGlzdHNdIEdQVSBwcm9jZXNzIHNob3VsZCBub3QgaW1tZWRpYXRlbHkgc2xlZXAgYWZ0
ZXIgcmVhZGluZyBhbGwgYXZhaWxhYmxlIGRpc3BsYXkgbGlzdCBpdGVtcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NTg2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbWVj
aGFuaXNtIGZvciB0aGUgR1BVIHByb2Nlc3MgdG8gc2xlZXAgZm9yIGEgc2hvcnQgZHVyYXRpb24g
KH4yNCBtaWNyb3NlY29uZHMpIGFmdGVyIGl0IGhhcworICAgICAgICBmaW5pc2hlZCByZWFkaW5n
IGFsbCBhdmFpbGFibGUgZGF0YSBpbiBpdHMgc2hhcmVkIGl0ZW0gYnVmZmVyOyBpZiB0aGUgd2Vi
IHByb2Nlc3Mgd3JpdGVzIGFkZGl0aW9uYWwgZGF0YSB0byB0aGUKKyAgICAgICAgaXRlbSBidWZm
ZXIgKHRoZXJlYnkgYnVtcGluZyB0aGUgdW5yZWFkIGJ5dGVzIGNvdW50ZXIpIGR1cmluZyB0aGlz
IHRpbWUsIHdlIGltbWVkaWF0ZWx5IHJlc3VtZSBwcm9jZXNzaW5nIHRoZQorICAgICAgICBuZXcg
ZGlzcGxheSBsaXN0IGl0ZW1zIGluIHRoZSBHUFUgcHJvY2VzcywgcmF0aGVyIHRoYW4gd2FpdCBm
b3IgYSBuZXcgd2FrZXVwIG1lc3NhZ2UuCisKKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gYXZv
aWQgdGhlIGNvc3Qgb2YgZ29pbmcgdG8gc2xlZXAganVzdCB0byBpbW1lZGlhdGVseSB3YWtlIHVw
IGluIHRoZSBHUFUgcHJvY2VzcywgaW4gdGhlIGNhc2UKKyAgICAgICAgd2hlcmUgdGhlIHdlYiBw
cm9jZXNzIGlzIHdyaXRpbmcgZGlzcGxheSBsaXN0IGl0ZW1zIGF0IGEgdmVyeSBmYXN0IHJhdGUg
YW5kIHRoZSBHUFUgcHJvY2VzcyBqdXN0IGhhcHBlbnMgdG8KKyAgICAgICAgY2F0Y2ggdXAgKGku
ZS4gYWR2YW5jZSBgdW5yZWFkQnl0ZXMoKWAgdG8gMCkuIEZyb20gbG9jYWwgdGVzdGluZywgdGhp
cyB5aWVsZHMgYSBwcm9ncmVzc2lvbiBvZiBhYm91dCAyJSBvbgorICAgICAgICBMaW5lcywgQXJj
cywgYW5kIFBhdGhzIE1vdGlvbk1hcmsgc3VidGVzdHMuCisKKyAgICAgICAgU2VlIGJlbG93IGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlM
aXN0UmVhZGVySGFuZGxlLmg6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlOjpzdGFydFdhaXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZTo6c2hvdWxkUmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJI
YW5kbGU6OnN0b3BXYWl0aW5nKToKKworICAgICAgICBBZGQgaGVscGVyIG1ldGhvZHMgZm9yIHRo
ZSBHUFUgcHJvY2VzcyB0byBzdGFydCBhbmQgc3RvcCB3YWl0aW5nIGZvciBuZXcgaXRlbXMuIFNl
ZSB0aGUgY2FsbCBzaXRlIGluCisgICAgICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgZm9yIG1v
cmUgZGV0YWlsLCBhcyB3ZWxsIGFzIHRoZSBjb21tZW50cyBpbiBTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZSBiZWxvdy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyk6CisK
KyAgICAgICAgSW4gdGhlIGNhc2Ugd2hlcmUgd2UgcmVjZWl2ZWQgdGhlIHdha2V1cCBtZXNzYWdl
IGR1ZSB0byBleGNlZWRpbmcgdGhlIGRpc3BsYXkgbGlzdCBpdGVtIGNvdW50IGh5c3RlcmVzaXMs
IHNsZWVwCisgICAgICAgIGZvciBhIHNob3J0IGR1cmF0aW9uIGJvdGggYmVmb3JlIHdlIGJlZ2lu
IHByb2Nlc3NpbmcgaXRlbXMgKHRvIGFsbG93IGZvciBwb3RlbnRpYWxseSBtb3JlIGl0ZW1zIHRv
IHF1ZXVlIHVwKSwKKyAgICAgICAgYW5kIGFsc28gYWZ0ZXIgd2UgaGl0IGFuIHVucmVhZCBjb3Vu
dCBvZiAwICh0byBhbGxvdyB0aGUgd2ViIHByb2Nlc3MgdG8gd3JpdGUgbW9yZSBpdGVtcywgc28g
dGhhdCB3ZSBjYW4gcmVzdW1lCisgICAgICAgIGluIHRoZSBHUFUgcHJvY2VzcykuCisKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5
TGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0
ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisKKyAgICAgICAgQWRkIG1vcmUg
cGx1bWJpbmcgZm9yIEdQVVByb2Nlc3NXYWtldXBSZWFzb24uCisKKyAgICAgICAgKiBTaGFyZWQv
R1BVUHJvY2Vzc1dha2V1cFJlYXNvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaC4KKyAgICAgICAgKiBTaGFy
ZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlz
cGxheUxpc3RIYW5kbGU6OmhlYWRlciBjb25zdCk6CisKKyAgICAgICAgQWRkcyBhIG5ldyBXYWl0
aW5nU3RhdHVzIGVudW0gdHlwZSBpbnRlcm5hbCB0byBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSBh
bmQgaXRzIHN1YmNsYXNzZXMsIHdoaWNoIGlzIHVzZWQgdG8KKyAgICAgICAgY29vcmRpbmF0ZSB0
aGUgYWN0IG9mIHdhaXRpbmcgZm9yIG5ldyBpdGVtIGRhdGEgaW4gdGhlIEdQVSBwcm9jZXNzLiBB
IHNoYXJlZCBkaXNwbGF5IGxpc3QgaGFuZGxlIG5vdyBjb250YWlucworICAgICAgICBhbiBhdG9t
aWMgYHdhaXRpbmdTdGF0dXNgIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBHUFUgcHJvY2Vz
cyBpcyBpbiB0aGUgcHJvY2VzcyBvZiB3YWl0aW5nIGZvciBtb3JlIGl0ZW1zLAorICAgICAgICBh
bmQgYWxzbyB3aGV0aGVyIHRoZSB3ZWIgcHJvY2VzcyBoYXMgYWNrbm93bGVkZ2VkIHRoZSBmYWN0
IHRoYXQgdGhlIEdQVSBwcm9jZXNzIGlzIHdhaXRpbmcgKHRoZXJlYnkgcHV0dGluZyB0aGUKKyAg
ICAgICAgR1BVIHByb2Nlc3MgaW4gYSBzdGF0ZSB3aGVyZSBpdCBpcyB3YWl0aW5nIHRvIHJlc3Vt
ZSBwcm9jZXNzaW5nKS4gQWxvbmcgd2l0aCB0aGlzIGVudW0sIHdlIGFsc28gYWRkIHR3byBuZXcK
KyAgICAgICAgOC1ieXRlIHZhbHVlcyB0byB0aGUgaGVhZGVyIHNlY3Rpb246IGFuIG9mZnNldCB0
byBiZWdpbiByZWFkaW5nIGl0ZW0gZGF0YSBhZnRlciByZXN1bWluZywgYW5kIDggYnl0ZXMgZm9y
IGFuCisgICAgICAgIGlkZW50aWZpZXIgaW5kaWNhdGluZyB0aGUgbmV3IGRlc3RpbmF0aW9uIChm
b3IgdGhlIHB1cnBvc2VzIG9mIGRpc3BsYXkgbGlzdCByZW5kZXJpbmcsIHRoaXMgaXMgYQorICAg
ICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHRob3VnaCB0aGlzIHdpbGwgYmUgZGlm
ZmVyZW50IGZvciBXZWJHTCkuCisKKyAgICAgICAgICAgICstLT4gTm90V2FpdGluZyA8LS0rCisg
ICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfAorICAgICAgICAgICAgfCAgICAgICAgfCAg
ICAgICAgIHwgWzNhXQorICAgICAgICAgICAgfCBbM2JdICAgfCBbMV0gICAgIHwKKyAgICAgICAg
ICAgIHwgICAgICAgIHwgICAgICAgICB8CisgICAgICAgIFJlc3VtaW5nICAgICArLS0tLT4gV2Fp
dGluZworICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgICAg
ICAgIFsyXSAgICAgICB8CisgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAg
ICAgIFRoZXJlIGFyZSB0aHJlZSBtYWluIHdheXMgaW4gd2hpY2ggdGhpcyBzdGF0ZSBtYWNoaW5l
IG1heSB0cmFuc2l0aW9uLCBudW1iZXJlZCBbMV0tWzNdIGluIHRoZSBhYm92ZSBkaWFncmFtLgor
CisgICAgICAgIFsxXSBXaGVuIHRoZSBHUFUgcHJvY2VzcyBnb2VzIHRvIHNsZWVwLCBpdCBlbnRl
cnMgV2FpdGluZyBzdGF0ZSwgaW5kaWNhdGluZyB0aGF0IGl0IGlzIG5vdyB3YWl0aW5nIGZvcgor
ICAgICAgICAgICAgYWRkaXRpb25hbCBpdGVtIGRhdGEuIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhl
IGNhbGwgdG8gYERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpzdGFydFdhaXRpbmdgLgorCisgICAg
ICAgIFsyXSBXaGVuIHRoZSB3ZWIgcHJvY2VzcyBidW1wcyB0aGUgdW5yZWFkIGNvdW50IG9mIGFu
IGl0ZW0gYnVmZmVyLCBpZiBpdCBoYXMgYSBwZW5kaW5nIHdha2V1cCBtZXNzYWdlIG9yIHdvdWxk
CisgICAgICAgICAgICBvdGhlcndpc2UgbmVlZCB0byBzY2hlZHVsZSBhIHBlbmRpbmcgd2FrZXVw
IG1lc3NhZ2UsIHNlZSBpZiB3ZSBjYW4gaW5zdGVhZCBzaW1wbHkgdGVsbCB0aGUgR1BVIHByb2Nl
c3MgdG8KKyAgICAgICAgICAgIHJlc3VtZSBwcm9jZXNzaW5nLCBpbnN0ZWFkIG9mIHNlbmRpbmcg
YSB3YWtldXAgbWVzc2FnZS4gVGhpcyBjb3JyZXNwb25kcyB0byBhIGNhbGwgdG8gdGhlIGhlbHBl
ciBtZXRob2QKKyAgICAgICAgICAgIGBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6dHJ5VG9SZXN1
bWVgLgorCisgICAgICAgIFszXSBJZiB0aGUgbWF4aW11bSB3YWl0IGR1cmF0aW9uICh+MjQgbWlj
cm9zZWNvbmRzKSBoYXMgcGFzc2VkICgzYSkgX29yXyBpZiB0aGUgd2ViIHByb2Nlc3MgaGFzIHRy
YW5zaXRpb25lZCB1cworICAgICAgICAgICAgZnJvbSBXYWl0aW5nIHRvIFJlc3VtaW5nIHN0YXRl
ICgzYiksIHRoZW4gdHJhbnNpdGlvbiBiYWNrIHRvIE5vdFdhaXRpbmcuIEluIGJvdGggc2NlbmFy
aW9zLCB0aGlzIGNvcnJlc3BvbmRzCisgICAgICAgICAgICB0byBhIGNhbGwgdG8gYERpc3BsYXlM
aXN0UmVhZGVySGFuZGxlOjpzdG9wV2FpdGluZ2AuIEluIHRoZSBjYXNlIHdoZXJlIHdlIHRyYW5z
aXRpb25lZCBmcm9tIFJlc3VtaW5nIHN0YXRlLAorICAgICAgICAgICAgd2UgY2FuIGltbWVkaWF0
ZWx5IGNvbnRpbnVlIHByb2Nlc3NpbmcgZGlzcGxheSBsaXN0IGl0ZW1zLgorCisgICAgICAgIElu
IHRoZSBjYXNlIHdoZXJlIHdlIHN1Y2Nlc3NmdWxseSByZXN1bWUsIHdlJ3JlIGVzc2VudGlhbGx5
ICJyZS13YWtpbmciIHRoZSBHUFUgcHJvY2VzcyB3aXRob3V0IHRoZSBvdmVyaGVhZCBvZgorICAg
ICAgICBhbiBhZGRpdGlvbmFsIElQQyBtZXNzYWdlLCB1c2luZyB0aGUgc2FtZSBzaGFyZWQgZGlz
cGxheSBsaXN0IGhhbmRsZS4gU2luY2UgdGhpcyB3b3VsZCd2ZSBvdGhlcndpc2UgYmVlbiBhCisg
ICAgICAgIHNlcGFyYXRlIHdha2V1cCBtZXNzYWdlLCB3ZSBuZWVkIHRvIGJlIGNhcmVmdWwgdGhh
dCB3ZSBjb250aW51ZSBwcm9jZXNzaW5nIGRpc3BsYXkgbGlzdCBpdGVtcyBmcm9tIHRoZSBjb3Jy
ZWN0CisgICAgICAgIG9mZnNldCBpbnRvIHRoZSBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRsZSwg
YW5kIHVzaW5nIHRoZSBjb3JyZWN0IGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlci4gVGhpcyBpcyBi
ZWNhdXNlIHRoZQorICAgICAgICB3cml0YWJsZSBvZmZzZXQgb2YgdGhlIGl0ZW0gYnVmZmVyIG1h
eSBoYXZlIGJlZW4gcmVzZXQgaW4gdGhlIG1pZGRsZSBvZiB3YWl0aW5nIGJ5IHRoZSB3ZWIgcHJv
Y2Vzcywgb3IgdGhlCisgICAgICAgIGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlciBtYXkgaGF2ZSBj
aGFuZ2VkIHdoaWxlIHdhaXRpbmcuIFRvIGhhbmRsZSB0aGVzZSBzY2VuYXJpb3MsIHdlIGludHJv
ZHVjZSB0aGUKKyAgICAgICAgYFJlc3VtZVJlYWRpbmdJbmZvcm1hdGlvbmAgc3RydWN0LCB3aGlj
aCBjb250YWlucyBib3RoIG9mIHRoZXNlIHBpZWNlcyBvZiBpbmZvcm1hdGlvbi4gQW4gaW5zdGFu
Y2Ugb2YgdGhpcworICAgICAgICBzdHJ1Y3QgZXhpc3RzIGluIHRoZSBzaGFyZWQgbWVtb3J5IGhl
YWRlciBzZWN0aW9uOyB0aGlzIGlzIHdyaXR0ZW4gYnkgdGhlIHdlYiBwcm9jZXNzIGltbWVkaWF0
ZWx5IHByaW9yIHRvCisgICAgICAgIHRyYW5zaXRpb25pbmcgdG8gUmVzdW1pbmcgc3RhdGUsIGFu
ZCByZWFkIGJ5IHRoZSBHUFUgcHJvY2VzcyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBSZXN1bWlu
ZyB0byBOb3RXYWl0aW5nLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0
ZXJIYW5kbGUuaDoKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OnRy
eVRvUmVzdW1lKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIGZvciB0aGUgd2ViIHBy
b2Nlc3MgdG8gdHJ5IGFuZCBub3RpZnkgdGhlIEdQVSBwcm9jZXNzIHRoYXQgaXQgc2hvdWxkIHRy
eSBhbmQgcmVzdW1lCisgICAgICAgIGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nLiBTZWUgdGhlIGNh
bGwgc2l0ZSBpbiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgZm9yIG1vcmUgZGV0YWlsLCBh
cyB3ZWxsIGFzIHRoZQorICAgICAgICBjb21tZW50cyBpbiBTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZSBhYm92ZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6c2VuZFdha2V1cE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnNlbmREZWZlcnJlZFdha2V1cE1lc3NhZ2VJZk5lZWRlZCk6
CisKKyAgICAgICAgUGx1bWIgYSBHUFVQcm9jZXNzV2FrZXVwUmVhc29uIGVudW0gZmxhZyB0aHJv
dWdoIHRoaXMgbWV0aG9kLCBhbmQgb3ZlciB0byB0aGUgR1BVIHByb2Nlc3MuIFRoaXMgZmxhZyBp
cyB1c2VkIGJ5CisgICAgICAgIHRoZSBHUFUgcHJvY2VzcyB0byBkZXRlcm1pbmUgd2hldGhlciB3
ZSBzaG91bGQgZXhwZWN0IGFkZGl0aW9uYWwgaXRlbXMgdG8gZXZlbnR1YWxseSBlbnRlciB0aGUg
c3RyZWFtLCBvcgorICAgICAgICB3aGV0aGVyIHdlIHNob3VsZCBlYWdlcmx5IGdvIHRvIHNsZWVw
IGFmdGVyIHByb2Nlc3NpbmcgYWxsIGtub3duIGl0ZW1zLiBJbiBvdGhlciB3b3JkcywgaWYgdGhl
IHdha2V1cCBtZXNzYWdlIGlzCisgICAgICAgIGJlaW5nIHNlbnQgYXMgYSByZXN1bHQgb2YgZmx1
c2hpbmcgdGhlIGltYWdlIGJ1ZmZlciwgd2UgZG9uJ3Qgd2FudCB0byB1bm5lY2Vzc2FyaWx5IHdh
aXQgZm9yIG1vcmUgaXRlbXM7CisgICAgICAgIGhvd2V2ZXIsIGlmIHRoZSB3YWtldXAgbWVzc2Fn
ZSBpcyBiZWluZyBzZW50IGFzIGEgcmVzdWx0IG9mIGV4Y2VlZGluZyB0aGUgKGN1cnJlbnRseSkg
NTEyLWl0ZW0gaHlzdGVyZXNpcywgdGhlbgorICAgICAgICB3ZSBjYW4gcHJvYmFibHkgZXhwZWN0
IG1vcmUgaXRlbXMgdG8gc3RyZWFtIGluLCBzbyBpdCdzIG1vcmUgb3B0aW1hbCB0byB3YWl0Lgor
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkQXBwZW5k
RGF0YSk6CisKKyAgICAgICAgUmF0aGVyIHRoYW4gYWx3YXlzIHNjaGVkdWxlIChvciBzZW5kKSBh
IHdha2V1cCBtZXNzYWdlIGhlcmUgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHVucmVhZCBjb3VudCBp
cyAwLCBzZWUgaWYgd2UKKyAgICAgICAgY2FuIGluc3RlYWQgdGVsbCB0aGUgR1BVIHByb2Nlc3Mg
dG8gc3RvcCB3YWl0aW5nIGFuZCByZXN1bWUgZGlzcGxheSBsaXN0IHByb2Nlc3NpbmcuIFRvIGRv
IHRoaXMsIHdlIHVzZSB0aGUgbmV3CisgICAgICAgIGBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6
dHJ5VG9SZXN1bWVgIG1ldGhvZCwgZ2l2aW5nIGl0IHRoZSBuZXcgb2Zmc2V0IHRvIGJlZ2luIHJl
YWRpbmcgaXRlbXMgZnJvbSBhcyB3ZWxsIGFzCisgICAgICAgIHRoZSBkZXN0aW5hdGlvbiBpbWFn
ZSBidWZmZXIgdG8gd2hpY2ggd2Ugc2hvdWxkIGFwcGx5IGRpc3BsYXkgbGlzdCBpdGVtcy4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oOgorCiAyMDIwLTEyLTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBzYW5kYm94IHRlbGVtZXRyeSBmb3IgbGlrZWx5IHVudXNlZCBmZWF0
dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3Bs
YXlMaXN0UmVhZGVySGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaAppbmRleCBjYjcyMjM5NzY5NmRjOWUwYjA2ZTg5Y2Fj
MjVjZTcyY2I5YTU3NmUxLi4yOWZkZjQ0MzkyODliZTU4NWQ1Y2MxNTNhMDgwY2UyOGExZGZjNDdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxp
c3RSZWFkZXJIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaApAQCAtNDEsNiArNDEsMjUgQEAgcHVibGljOgogICAg
IHNpemVfdCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0Rm9yUmVh
ZGluZyhzaXplX3Qgb2Zmc2V0LCBzaXplX3QgY2FwYWNpdHksIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCYpIGNvbnN0OwogCisgICAgdm9pZCBzdGFydFdhaXRp
bmcoKQorICAgIHsKKyAgICAgICAgaGVhZGVyKCkud2FpdGluZ1N0YXR1cy5zdG9yZShTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1czo6V2FpdGluZyk7CisgICAgfQorCisgICAg
Ym9vbCBzaG91bGRSZXN1bWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGhlYWRlcigpLndhaXRp
bmdTdGF0dXMubG9hZCgpID09IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpXYWl0aW5nU3RhdHVz
OjpSZXN1bWluZzsKKyAgICB9CisKKyAgICBPcHRpb25hbDxTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZTo6UmVzdW1lUmVhZGluZ0luZm9ybWF0aW9uPiBzdG9wV2FpdGluZygpCisgICAgeworICAgICAg
ICBhdXRvJiBoZWFkZXIgPSB0aGlzLT5oZWFkZXIoKTsKKyAgICAgICAgaWYgKGhlYWRlci53YWl0
aW5nU3RhdHVzLmV4Y2hhbmdlKFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpXYWl0aW5nU3RhdHVz
OjpOb3RXYWl0aW5nKSA9PSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1czo6
UmVzdW1pbmcpCisgICAgICAgICAgICByZXR1cm4geyBoZWFkZXIucmVzdW1lUmVhZGluZ0luZm8g
fTsKKworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKwogcHJpdmF0ZToKICAg
ICBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkp
CiAgICAgICAgIDogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoaWRlbnRpZmllciwgV1RGTW92ZShz
aGFyZWRNZW1vcnkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDEzMWU5NTU1N2E5Y2Uy
MGMzYWNhYjAyZTJkOGI3MmU3ZGZmZGRiM2UuLjA4ZDY4OGM5M2VlNDVhYWM2NTIyNWNlMDIzMjEz
ZjhhMWFmNWY5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTE0OSw3ICsxNDksNyBA
QCBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1p
dChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcAogICAgIH0ucmVwbGF5KCk7CiB9CiAKLVJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VC
dWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKEltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGlu
YXRpb24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYgaGFu
ZGxlKQorUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVz
dGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoSW1hZ2VCdWZmZXIm
IGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVh
ZGVySGFuZGxlJiBoYW5kbGUsIEdQVVByb2Nlc3NXYWtldXBSZWFzb24gcmVhc29uKQogewogICAg
IGF1dG8gZGVzdGluYXRpb24gPSBtYWtlUmVmUHRyKGluaXRpYWxEZXN0aW5hdGlvbik7CiAgICAg
YXV0byBoYW5kbGVQcm90ZWN0b3IgPSBtYWtlUmVmKGhhbmRsZSk7CkBAIC0xNTcsMTAgKzE1Nywx
MiBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0
aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseQogICAgIGF1dG8gb2Zmc2V0ID0gaW5pdGlhbE9m
ZnNldDsKICAgICBzaXplX3Qgc2l6ZVRvUmVhZCA9IDA7CiAgICAgZG8geworICAgICAgICBpZiAo
cmVhc29uID09IEdQVVByb2Nlc3NXYWtldXBSZWFzb246Okl0ZW1Db3VudEh5c3RlcmVzaXNFeGNl
ZWRlZCkKKyAgICAgICAgICAgIHNsZWVwKDE2X3VzKTsKICAgICAgICAgc2l6ZVRvUmVhZCA9IGhh
bmRsZS51bnJlYWRCeXRlcygpOwogICAgIH0gd2hpbGUgKCFzaXplVG9SZWFkKTsKIAotICAgIHdo
aWxlIChkZXN0aW5hdGlvbiAmJiAhbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCkgeworICAgIHdoaWxl
IChkZXN0aW5hdGlvbikgewogICAgICAgICBhdXRvIGRpc3BsYXlMaXN0ID0gaGFuZGxlLmRpc3Bs
YXlMaXN0Rm9yUmVhZGluZyhvZmZzZXQsIHNpemVUb1JlYWQsICp0aGlzKTsKICAgICAgICAgaWYg
KFVOTElLRUxZKCFkaXNwbGF5TGlzdCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBt
ZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCkBAIC0xOTAsMTQgKzE5
Miw1NCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHRE
ZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseQogICAgICAgICBpZiAocmVzdWx0LnJlYXNv
bkZvclN0b3BwaW5nID09IERpc3BsYXlMaXN0OjpTdG9wUmVwbGF5UmVhc29uOjpDaGFuZ2VEZXN0
aW5hdGlvbkltYWdlQnVmZmVyKQogICAgICAgICAgICAgZGVzdGluYXRpb24gPSBtYWtlUmVmUHRy
KG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcigqcmVzdWx0Lm5leHREZXN0
aW5hdGlvbkltYWdlQnVmZmVyKSk7CiAKLSAgICAgICAgaWYgKCFzaXplVG9SZWFkKQorICAgICAg
ICBpZiAobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCkKICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGlmICghc2l6ZVRvUmVhZCkgeworICAgICAgICAgICAgaWYgKHJlYXNvbiAhPSBHUFVQcm9j
ZXNzV2FrZXVwUmVhc29uOjpJdGVtQ291bnRIeXN0ZXJlc2lzRXhjZWVkZWQpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGhhbmRsZS5zdGFydFdhaXRpbmcoKTsKKworICAg
ICAgICAgICAgYXV0byB0aW1lVG9TbGVlcCA9IDhfdXM7CisgICAgICAgICAgICBpbnQgcmVtYWlu
aW5nQXR0ZW1wdHMgPSAzOworICAgICAgICAgICAgd2hpbGUgKCFoYW5kbGUuc2hvdWxkUmVzdW1l
KCkgJiYgLS1yZW1haW5pbmdBdHRlbXB0cyA+PSAwKQorICAgICAgICAgICAgICAgIHNsZWVwKHRp
bWVUb1NsZWVwKTsKKworICAgICAgICAgICAgYXV0byByZXN1bWVSZWFkaW5nSW5mbyA9IGhhbmRs
ZS5zdG9wV2FpdGluZygpOworICAgICAgICAgICAgaWYgKCFyZXN1bWVSZWFkaW5nSW5mbykKKyAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgc2l6ZVRvUmVhZCA9IGhhbmRsZS51
bnJlYWRCeXRlcygpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFzaXplVG9SZWFkKSkgewor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0
ZSB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgYXV0byBuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmll
cjxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJUeXBlPihyZXN1bWVSZWFkaW5nSW5mby0+ZGVz
dGluYXRpb24pOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFuZXdEZXN0aW5hdGlvbklkZW50
aWZpZXIpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sg
dG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIobV9yZW1vdGVSZXNvdXJj
ZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikpOworCisg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWRlc3RpbmF0aW9uKSkgeworICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nl
c3MuCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb2Zmc2V0ID0g
cmVzdW1lUmVhZGluZ0luZm8tPm9mZnNldDsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVy
biBkZXN0aW5hdGlvbjsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBB
bmRBcHBseURpc3BsYXlMaXN0KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0
aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQs
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIs
IEdQVVByb2Nlc3NXYWtldXBSZWFzb24gcmVhc29uKQogewogICAgIFRyYWNlU2NvcGUgdHJhY2lu
Z1Njb3BlKFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3RTdGFydCwgV2FrZVVwQW5kQXBwbHlEaXNw
bGF5TGlzdEVuZCk7CiAgICAgYXV0byBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbWFrZVJlZlB0
cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoZGVzdGluYXRpb25CdWZm
ZXJJZGVudGlmaWVyKSk7CkBAIC0yMTQsNyArMjU2LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIg
PSBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoKmRl
c3RpbmF0aW9uSW1hZ2VCdWZmZXIsIGluaXRpYWxPZmZzZXQsICppbml0aWFsSGFuZGxlKTsKKyAg
ICBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRl
ckFwcGx5aW5nRGlzcGxheUxpc3RzKCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBpbml0aWFsT2Zm
c2V0LCAqaW5pdGlhbEhhbmRsZSwgcmVhc29uKTsKIAogICAgIGlmICghZGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcikgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIzMSw3ICsyNzMs
NyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxp
c3QoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZAogCiAgICAgICAgIC8vIE90aGVyd2lzZSwgY29u
dGludWUgcmVhZGluZyB0aGUgbmV4dCBkaXNwbGF5IGxpc3QgaXRlbSBidWZmZXIgZnJvbSB0aGUg
c3RhcnQuCiAgICAgICAgIG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQgPSB7IH07Ci0gICAgICAgIGRl
c3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBw
bHlpbmdEaXNwbGF5TGlzdHMoKmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsIFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjpoZWFkZXJTaXplKCksICpuZXh0SGFuZGxlKTsKKyAgICAgICAgZGVzdGluYXRp
b25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rp
c3BsYXlMaXN0cygqZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGU6OmhlYWRlclNpemUoKSwgKm5leHRIYW5kbGUsIHJlYXNvbik7CiAKICAgICAgICAgaWYgKCFk
ZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTI4NCw3ICszMjYsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENy
ZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKERpc3BsYXlMaXN0OjpJdGVtQgogCiAgICAgaWYg
KG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQgPT0gaWRlbnRpZmllcikgewogICAgICAgICBtX25leHRJ
dGVtQnVmZmVyVG9SZWFkID0geyB9OwotICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0
KGlkZW50aWZpZXIsIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFkZXJTaXplKCksIGRlc3Rp
bmF0aW9uQnVmZmVySWRlbnRpZmllcik7CisgICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxp
c3QoaWRlbnRpZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgZGVz
dGluYXRpb25CdWZmZXJJZGVudGlmaWVyLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNp
ZmllZCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBlMWYzNTA5NmEzYmQ1
Njc3YTFiZDRiMGExYjA0NzQ0NGFlYjk2ZTZhLi5iY2ZhN2YzY2MwYzM3ZmVjNGQ4ZDg4MzdmOWVm
NzgzN2Y2ZjA5NjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiR1BVUHJvY2Vzc1dha2V1cFJlYXNvbi5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgpAQCAtOTQsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0KGNvbnN0IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBkZXN0aW5h
dGlvbik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGluYXRpb25J
bWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VCdWZmZXIm
IGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVh
ZGVySGFuZGxlJik7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGlu
YXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VC
dWZmZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlM
aXN0UmVhZGVySGFuZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7CiAKICAgICAvLyBJUEM6
Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTA2LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KICAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29y
ZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0g
ICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9m
ZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVm
ZmVySWRlbnRpZmllcik7CisgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwg
dWludDY0X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllciwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7
CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBv
dXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRh
UmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmlu
ZGV4IGZlYzk2YTIyN2RiZjUzYzA0NjEwZmVlN2VkNDBjMTNmYTQ5MTRlYjguLmM0ODc0ODVlYjEx
YzczNzIwZDNlMGI5MjZlYjk4YWZmNzc0NGUzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlSW1hZ2VCdWZmZXIoV2Vi
Q29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xv
clNwYWNlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCi0gICAgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRp
YWxPZmZzZXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlv
bkJ1ZmZlcklkZW50aWZpZXIpCisgICAgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVp
bnQ2NF90IGluaXRpYWxPZmZzZXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIsIGVudW06dWludDhfdCBXZWJLaXQ6OkdQVVBy
b2Nlc3NXYWtldXBSZWFzb24gcmVhc29uKQogICAgIEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6Oklu
dFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdl
RGF0YSkgU3luY2hyb25vdXMKICAgICBDYWNoZU5hdGl2ZUltYWdlKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIERpZENyZWF0ZVNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NXYWtldXBSZWFz
b24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NXYWtldXBSZWFzb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNzUzZDc4MmM4YWY5MzYzYmFjMTk2Yjc2NmFmNTI2YWYyNjEwOGQ0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc1dha2V1cFJlYXNvbi5o
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgR1BVUHJv
Y2Vzc1dha2V1cFJlYXNvbiA6IHVpbnQ4X3QgeworICAgIFVuc3BlY2lmaWVkLAorICAgIEl0ZW1D
b3VudEh5c3RlcmVzaXNFeGNlZWRlZAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK25h
bWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6R1BV
UHJvY2Vzc1dha2V1cFJlYXNvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Cisg
ICAgICAgIFdlYktpdDo6R1BVUHJvY2Vzc1dha2V1cFJlYXNvbiwKKyAgICAgICAgV2ViS2l0OjpH
UFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmllZCwKKyAgICAgICAgV2ViS2l0OjpHUFVQ
cm9jZXNzV2FrZXVwUmVhc29uOjpJdGVtQ291bnRIeXN0ZXJlc2lzRXhjZWVkZWQKKyAgICA+Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaAppbmRl
eCBlZDkzZGMyOTk2ZjFhYmJhODJjNjYwYTk4YTUwMTRkYTliYjAxOTE3Li5iYmI4ODllYjIyMjE5
ZmQ2N2JmNTJkNzMwNjE4MzEyZTQ0NWNjYmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKQEAgLTU1LDYgKzU1LDExIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgc2l6ZV90IGFkdmFuY2Uoc2l6ZV90IGFtb3VudCkgPSAwOwogCisgICAgc3Ry
dWN0IFJlc3VtZVJlYWRpbmdJbmZvcm1hdGlvbiB7CisgICAgICAgIHVpbnQ2NF90IG9mZnNldDsK
KyAgICAgICAgdWludDY0X3QgZGVzdGluYXRpb247CisgICAgfTsKKwogcHJvdGVjdGVkOgogICAg
IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkK
ICAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKQEAgLTYyLDEzICs2NywyMiBAQCBw
cm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAorICAgIGVudW0gY2xhc3MgV2FpdGluZ1N0YXR1cyA6
IHVpbnQ4X3QgeworICAgICAgICBOb3RXYWl0aW5nID0gMCwKKyAgICAgICAgV2FpdGluZywKKyAg
ICAgICAgUmVzdW1pbmcKKyAgICB9OworCiAgICAgc3RydWN0IERpc3BsYXlMaXN0U2hhcmVkTWVt
b3J5SGVhZGVyIHsKICAgICAgICAgRGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXIoKSA9IGRl
bGV0ZTsKICAgICAgICAgfkRpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyKCkgPSBkZWxldGU7
CiAKICAgICAgICAgQXRvbWljPHVpbnQ2NF90PiB1bnJlYWRCeXRlczsKKyAgICAgICAgUmVzdW1l
UmVhZGluZ0luZm9ybWF0aW9uIHJlc3VtZVJlYWRpbmdJbmZvOworICAgICAgICBBdG9taWM8V2Fp
dGluZ1N0YXR1cz4gd2FpdGluZ1N0YXR1czsKICAgICB9OwogCisgICAgY29uc3QgRGlzcGxheUxp
c3RTaGFyZWRNZW1vcnlIZWFkZXImIGhlYWRlcigpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PGNvbnN0IERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyKj4oZGF0YSgpKTsgfQog
ICAgIERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyJiBoZWFkZXIoKSB7IHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDxEaXNwbGF5TGlzdFNoYXJlZE1lbW9yeUhlYWRlcio+KGRhdGEoKSk7IH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDc0ZDc5N2ZmYjY5ZDA2NjcyNjNkMDRmNDMwOWRlYTE5ZmNiYmEwMzIuLjli
NTY1ZDJhMjYxNDIxMGVjYzZiMGNiYTQxYzJiZGRhMzA1Y2MyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTkyOSw2ICsxOTI5LDcg
QEAKIAkJRjQyRDYzNDEyMkEwRUZERjAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyRDYzM0Yy
MkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oICovOyB9OwogCQlGNDMw
RTk0MjIyNDczMzVGMDA1RkUwNTMgLyogV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzMEU5NDEyMjQ3MzJB
OTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCAqLzsgfTsKIAkJRjQzMEU5
NDQyMjQ3M0RGRjAwNUZFMDUzIC8qIFdlYkNvbnRlbnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDMwRTk0MzIyNDczREI4MDA1RkUwNTMgLyog
V2ViQ29udGVudE1vZGUuaCAqLzsgfTsKKwkJRjQzNjk1NTAyNTdFQ0RDODAwNDkxOUY1IC8qIEdQ
VVByb2Nlc3NXYWtldXBSZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0MzY5NTRGMjU3RUNEQzgwMDQ5MTlGNSAvKiBHUFVQcm9jZXNzV2FrZXVw
UmVhc29uLmggKi87IH07CiAJCUY0MzhDRDFDMjI0MTQyMTQwMERFNkREQSAvKiBXS1dlYnBhZ2VQ
cmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQzOENEMUIyMjQxNDBBNjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlGNDM4Q0QxRjIy
NDE0RDQwMDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzOENEMUUyMjQxNEQ0MDAw
REU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaCAqLzsgfTsKIAkJRjQzOENE
MjEyMjQxRjY5NTAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzOENEMjAyMjQxRjY5
NTAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01NjE2LDYgKzU2MTcsNyBAQAog
CQlGNDJENjM0MDIyQTBFRkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViQXV0b2NvcnJlY3Rpb25E
YXRhLm1tOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRh
Vmlld3BvcnRQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGlj
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMwRTk0MzIyNDczREI4MDA1RkUw
NTMgLyogV2ViQ29udGVudE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGVudE1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQzNjk1NEYyNTdFQ0RDODAwNDkxOUY1IC8q
IEdQVVByb2Nlc3NXYWtldXBSZWFzb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUHJvY2Vzc1dha2V1
cFJlYXNvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxQjIyNDE0MEE2
MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJw
YWdlUHJlZmVyZW5jZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzOENEMUQy
MjQxNEFENjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tXZWJwYWdlUHJlZmVyZW5jZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0MzhDRDFFMjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc0lu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzMTMsNiArNjMxNSw3IEBACiAJCQkJMUEx
NEY4REYxRDc0QzgzNDAwNkNCRUM2IC8qIEZyYW1lSW5mb0RhdGEuY3BwICovLAogCQkJCTFBMTRG
OEUwMUQ3NEM4MzQwMDZDQkVDNiAvKiBGcmFtZUluZm9EYXRhLmggKi8sCiAJCQkJNUMxMjFFODMy
NDEwMUY3MDAwNDg2RjlCIC8qIEZyYW1lVHJlZU5vZGVEYXRhLmggKi8sCisJCQkJRjQzNjk1NEYy
NTdFQ0RDODAwNDkxOUY1IC8qIEdQVVByb2Nlc3NXYWtldXBSZWFzb24uaCAqLywKIAkJCQkxQUM3
NUExQTFCMzM2ODI3MDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyLmggKi8sCiAJCQkJ
QkNDRjZCMjMxMkM5M0U3QTAwOEY5QzM1IC8qIEltYWdlT3B0aW9ucy5oICovLAogCQkJCTk5OUI3
RUQ4MjU1MEU0QTgwMEY0NTBBNCAvKiBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAgKi8sCkBA
IC0xMTMyNiw2ICsxMTMyOSw3IEBACiAJCQkJQkMwNkY0NEExMkRCRDFGNTAwMkQ3OERFIC8qIEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMDZGNDNBMTJEQkNDRkIwMDJENzhERSAvKiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQTk0NEE0MTg4NEU0RjAwMEVEODZEQiAv
KiBHZXN0dXJlVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0MzY5NTUwMjU3RUNEQzgwMDQ5
MTlGNSAvKiBHUFVQcm9jZXNzV2FrZXVwUmVhc29uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREEw
NDlCODE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDMENFNzJBRDEyNDdFNzhEMDBCQzBFQzQgLyogSGFuZGxlTWVzc2FnZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFDNzVBMUIxQjMzNjgyNzAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rp
b25EaXNhYmxlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgK
aW5kZXggZmM3YTIxNjUzYTBlYjk2ODE5ZWIxYzA5YTlmYzM0NDQ4MWE3Mzk2My4uZjlmNDRlNDI4
OGM5MDZhZjg3YTIwYzdjMDk3NWU5OTQ1ZjBmOWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJI
YW5kbGUuaApAQCAtNDYsNiArNDYsMTMgQEAgcHVibGljOgogICAgIHNpemVfdCBhZHZhbmNlKHNp
emVfdCBhbW91bnQpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySGFuZGxlIGNyZWF0ZUhhbmRsZSgpIGNvbnN0OwogCisgICAgYm9vbCB0cnlUb1Jlc3VtZShT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6UmVzdW1lUmVhZGluZ0luZm9ybWF0aW9uJiYgaW5mbykK
KyAgICB7CisgICAgICAgIGF1dG8mIGhlYWRlciA9IHRoaXMtPmhlYWRlcigpOworICAgICAgICBo
ZWFkZXIucmVzdW1lUmVhZGluZ0luZm8gPSBXVEZNb3ZlKGluZm8pOworICAgICAgICByZXR1cm4g
aGVhZGVyLndhaXRpbmdTdGF0dXMuY29tcGFyZUV4Y2hhbmdlV2VhayhTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZTo6V2FpdGluZ1N0YXR1czo6V2FpdGluZywgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6
OldhaXRpbmdTdGF0dXM6OlJlc3VtaW5nKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQogICAgICAg
ICA6IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50aWZpZXIsIFdURk1vdmUoc2hhcmVkTWVt
b3J5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCAxMTRh
YzY1YjE2MmZkNTMwODhlNGU0ZWY0NTE5MDJiZGVlYjBmZjcwLi4yN2QzMjdmNzkyNWJkM2JhNDg1
M2E5MjM2YjY3MDZiNWE3YzJhY2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwCkBAIC0xOTUsOSArMTk1LDkgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OndpbGxBcHBlbmRJdGVtKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBuZXcKICAg
ICAgICAgaW1hZ2VCdWZmZXItPmNsZWFyRGlzcGxheUxpc3QoKTsKIH0KIAotdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnNlbmRXYWtldXBNZXNzYWdlKGNvbnN0IFdha2V1cE1lc3Nh
Z2VBcmd1bWVudHMmIGFyZ3VtZW50cykKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpzZW5kV2FrZXVwTWVzc2FnZShHUFVQcm9jZXNzV2FrZXVwUmVhc29uIHJlYXNvbiwgY29uc3Qg
V2FrZXVwTWVzc2FnZUFyZ3VtZW50cyYgYXJndW1lbnRzKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Oldha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoYXJndW1l
bnRzLml0ZW1CdWZmZXJJZGVudGlmaWVyLCBhcmd1bWVudHMuaW5pdGlhbE9mZnNldCwgYXJndW1l
bnRzLmltYWdlQnVmZmVySWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Oldha2VVcEFuZEFw
cGx5RGlzcGxheUxpc3QoYXJndW1lbnRzLml0ZW1CdWZmZXJJZGVudGlmaWVyLCBhcmd1bWVudHMu
aW5pdGlhbE9mZnNldCwgYXJndW1lbnRzLmltYWdlQnVmZmVySWRlbnRpZmllciwgcmVhc29uKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpzZW5kRGVmZXJyZWRXYWtldXBNZXNzYWdlSWZOZWVkZWQoKQpAQCAtMjA2
LDcgKzIwNiw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzZW5kRGVmZXJy
ZWRXYWtldXBNZXNzYWdlSWZOZWVkZWQoKQogICAgIGlmICghYXJndW1lbnRzKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBzZW5kV2FrZXVwTWVzc2FnZSgqYXJndW1lbnRzKTsKKyAgICBzZW5kV2Fr
ZXVwTWVzc2FnZShHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmllZCwgKmFyZ3VtZW50
cyk7CiAgICAgbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCA9IDA7
CiB9CiAKQEAgLTIxOCwxMSArMjE4LDIwIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpkaWRBcHBlbmREYXRhKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuCiAKICAg
ICBib29sIHdhc0VtcHR5ID0gc2hhcmVkSGFuZGxlLT5hZHZhbmNlKG51bWJlck9mQnl0ZXMpID09
IG51bWJlck9mQnl0ZXM7CiAgICAgaWYgKCF3YXNFbXB0eSB8fCBkaWRDaGFuZ2VJdGVtQnVmZmVy
ID09IERpc3BsYXlMaXN0OjpEaWRDaGFuZ2VJdGVtQnVmZmVyOjpZZXMpIHsKLSAgICAgICAgaWYg
KG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzICYmICEtLW1fcmVtYWluaW5nSXRlbXNU
b0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXApCi0gICAgICAgICAgICBzZW5kV2FrZXVwTWVzc2Fn
ZSgqc3RkOjpleGNoYW5nZShtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cywgV1RGOjpu
dWxsb3B0KSk7CisgICAgICAgIGlmIChtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cykg
eworICAgICAgICAgICAgaWYgKHNoYXJlZEhhbmRsZS0+dHJ5VG9SZXN1bWUoeyBtX2RlZmVycmVk
V2FrZXVwTWVzc2FnZUFyZ3VtZW50cy0+aW5pdGlhbE9mZnNldCwgbV9kZWZlcnJlZFdha2V1cE1l
c3NhZ2VBcmd1bWVudHMtPmltYWdlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpIH0pKSB7Cisg
ICAgICAgICAgICAgICAgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMgPSBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICAgICAgbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3JlU2Vu
ZGluZ1dha2V1cCA9IDA7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCEtLW1fcmVtYWluaW5nSXRl
bXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXApCisgICAgICAgICAgICAgICAgc2VuZFdha2V1
cE1lc3NhZ2UoR1BVUHJvY2Vzc1dha2V1cFJlYXNvbjo6SXRlbUNvdW50SHlzdGVyZXNpc0V4Y2Vl
ZGVkLCAqc3RkOjpleGNoYW5nZShtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cywgV1RG
OjpudWxsb3B0KSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGF1
dG8gaW5pdGlhbE9mZnNldCA9IHNoYXJlZEhhbmRsZS0+d3JpdGFibGVPZmZzZXQoKSAtIG51bWJl
ck9mQnl0ZXM7CisgICAgaWYgKHNoYXJlZEhhbmRsZS0+dHJ5VG9SZXN1bWUoeyBpbml0aWFsT2Zm
c2V0LCBkZXN0aW5hdGlvbkltYWdlQnVmZmVyLnRvVUludDY0KCkgfSkpCisgICAgICAgIHJldHVy
bjsKKwogICAgIHNlbmREZWZlcnJlZFdha2V1cE1lc3NhZ2VJZk5lZWRlZCgpOwogCiAgICAgLy8g
SW5zdGVhZCBvZiBzZW5kaW5nIHRoZSB3YWtldXAgbWVzc2FnZSBpbW1lZGlhdGVseSwgd2FpdCBm
b3Igc29tZSBhZGRpdGlvbmFsIGRhdGEuIFRoaXMgZ2l2ZXMgdGhlCkBAIC0yMzEsMTEgKzI0MCw3
IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRhKGNvbnN0
IERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuCiAgICAgY29uc3RleHByIHVuc2lnbmVkIGl0ZW1D
b3VudEh5c3RlcmVzaXNCZWZvcmVTZW5kaW5nV2FrZXVwID0gNTEyOwogCiAgICAgbV9yZW1haW5p
bmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCA9IGl0ZW1Db3VudEh5c3RlcmVzaXNC
ZWZvcmVTZW5kaW5nV2FrZXVwOwotICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRz
ID0ge3sKLSAgICAgICAgaGFuZGxlLmlkZW50aWZpZXIsCi0gICAgICAgIHNoYXJlZEhhbmRsZS0+
d3JpdGFibGVPZmZzZXQoKSAtIG51bWJlck9mQnl0ZXMsCi0gICAgICAgIGRlc3RpbmF0aW9uSW1h
Z2VCdWZmZXIKLSAgICB9fTsKKyAgICBtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyA9
IHt7IGhhbmRsZS5pZGVudGlmaWVyLCBpbml0aWFsT2Zmc2V0LCBkZXN0aW5hdGlvbkltYWdlQnVm
ZmVyIH19OwogfQogCiBSZWZQdHI8RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU+IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6ZmluZFJldXNhYmxlRGlzcGxheUxpc3RIYW5kbGUoc2l6ZV90IGNh
cGFjaXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggMzdhNGNl
YjdhODI4YjA1MDk3YmQzMzQ5MTUyOGNhOWQ1Y2MzOTljOC4uODQ0NmVjOWVjZGI1OWEzZDVkMmQw
OWVkMGRkZGIwMDNiYmFlNjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzV2FrZXVwUmVh
c29uLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgpAQCAtMTA4LDcg
KzEwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgfTsKIAotICAgIHZvaWQgc2VuZFdh
a2V1cE1lc3NhZ2UoY29uc3QgV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyYpOworICAgIHZvaWQgc2Vu
ZFdha2V1cE1lc3NhZ2UoR1BVUHJvY2Vzc1dha2V1cFJlYXNvbiwgY29uc3QgV2FrZXVwTWVzc2Fn
ZUFyZ3VtZW50cyYpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5IHsgKnRoaXMgfTsKICAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgUmVmUHRyPERpc3BsYXlMaXN0V3JpdGVySGFuZGxl
Pj4gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416833</attachid>
            <date>2020-12-28 16:36:28 -0800</date>
            <delta_ts>2020-12-29 15:17:55 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-219586-20201228163627.patch</filename>
            <type>text/plain</type>
            <size>34377</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkMzVjNWFlMTMxNzRlMzMy
MGMwNGZjYWJhNjM3N2I2MmZkZTk0YWMuLjI2MjlkMzQ3ZDBjYmVjNjcxMzZmZGU5NTMxYmFlOGQ3
NTkxZjE2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjAtMTItMjggIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbmN1cnJlbnQgRGlz
cGxheSBMaXN0c10gR1BVIHByb2Nlc3Mgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBzbGVlcCBhZnRl
ciByZWFkaW5nIGFsbCBhdmFpbGFibGUgZGlzcGxheSBsaXN0IGl0ZW1zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk1ODYKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzcyMjc1NDEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdvcmsgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oOgorICAgICAgICAoV2ViS2l0
OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6c3RhcnRXYWl0aW5nKToKKyAgICAgICAgKFdlYktp
dDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OnN0b3BXYWl0aW5nKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAg
ICAgICAgKiBTaGFyZWQvR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMuaDoKKyAgICAg
ICAgKFdlYktpdDo6R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHM6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NX
YWtldXBNZXNzYWdlQXJndW1lbnRzLmguCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmg6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFkZXIgY29uc3QpOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmg6CisgICAgICAgIChXZWJLaXQ6OkRp
c3BsYXlMaXN0V3JpdGVySGFuZGxlOjp0cnlUb1Jlc3VtZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBl
bmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaDoKKwogMjAyMC0xMi0yMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdOiBEb24ndCBjYWxsIGZsdXNoRHJh
d2luZ0NvbnRleHQoKSBpbiB0aGUgbWlkZGxlIG9mIHJlY29yZGluZyBkcmF3aW5nIGNvbW1hbmRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggNWM0Y2EyNWQ0ZGFhN2Q1ODEzMTE3MGM5NzIwM2Y0MDZlYmIxZGJh
Ni4uNDFhZTBhMTMxNDhhYTZhNmNjNGJiYjg2Yjg5YmJhZTY2NDAxYTE2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC0yODgsMTAgKzI4OSwxMCBAQCBSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YXVkaW9TZXNzaW9uUHJv
eHkoKQogfQogI2VuZGlmCiAKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRl
UmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcikKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVu
ZGVyaW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZE1hcC5lbnN1cmUocmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAg
ICAgcmV0dXJuIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kTWFwLmVuc3VyZShwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFsmXSgpIHsKKyAgICAg
ICAgcmV0dXJuIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShw
YXJhbWV0ZXJzKSk7CiAgICAgfSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDRmMmQ0NGZmYjU1MGFhNmRlODEwYjli
Zjk1MjYyMDdkNTc5ZGI0NzkuLjFmNzg1NTVlMmI3Mzk5ZTcyMGI1NGQ5Y2ZhZWNjMzM5ODk2YTcy
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaApAQCAtNjUsNiArNjUsNyBAQCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFz
cyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owogc3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lv
bkNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFy
YW1ldGVyczsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIDogcHVibGlj
IFJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4KQEAgLTEyNCw3ICsxMjUsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFj
a2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVSZW5kZXJp
bmdCYWNrZW5kKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAg
ICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cik7CiAKICNpZiBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IDhmYzBlZmFjOTMyMTgyMjJiYjBiYzdjMjFhYWI5MTllNTNhOTczNGUuLjBjYmM1ZDg3OTgzZTY2
NmU0OGU4MzlhNjQ2NDg5ODc5NTBhMzkyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAt
PiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKLSAgICB2
b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmlu
Z0JhY2tlbmQoc3RydWN0IFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFy
YW1ldGVycyBwYXJhbWV0ZXJzKQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2Vi
S2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cikKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChz
dHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdl
YktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNw
bGF5TGlzdFJlYWRlckhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKaW5kZXggY2I3MjIzOTc2OTZkYzllMGIwNmU4OWNh
YzI1Y2U3MmNiOWE1NzZlMS4uYmU4YzU1Zjg4YzVkYjRjYzViY2FjNDI0NmEyYTYxNTNjZjJkNTY3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlM
aXN0UmVhZGVySGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKQEAgLTQxLDYgKzQxLDIwIEBAIHB1YmxpYzoKICAg
ICBzaXplX3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSBvdmVycmlkZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdEZvclJl
YWRpbmcoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5LCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQmKSBjb25zdDsKIAorICAgIHZvaWQgc3RhcnRXYWl0
aW5nKCkKKyAgICB7CisgICAgICAgIGhlYWRlcigpLndhaXRpbmdTdGF0dXMuc3RvcmUoU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU6OldhaXRpbmdTdGF0dXM6OldhaXRpbmcpOworICAgIH0KKworICAg
IE9wdGlvbmFsPFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpSZXN1bWVSZWFkaW5nSW5mb3JtYXRp
b24+IHN0b3BXYWl0aW5nKCkKKyAgICB7CisgICAgICAgIGF1dG8mIGhlYWRlciA9IHRoaXMtPmhl
YWRlcigpOworICAgICAgICBpZiAoaGVhZGVyLndhaXRpbmdTdGF0dXMuZXhjaGFuZ2UoU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU6OldhaXRpbmdTdGF0dXM6Ok5vdFdhaXRpbmcpID09IFNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlOjpXYWl0aW5nU3RhdHVzOjpSZXN1bWluZykKKyAgICAgICAgICAgIHJl
dHVybiB7IGhlYWRlci5yZXN1bWVSZWFkaW5nSW5mbyB9OworCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgfQorCiBwcml2YXRlOgogICAgIERpc3BsYXlMaXN0UmVhZGVySGFuZGxl
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBS
ZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKICAgICAgICAgOiBTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZShpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAKaW5kZXggZWZmNjVlZmNkYTQ1ZjE0ZDE0ZjY4ODNmYWY4MjEyNTE0YmFlODE2
NC4uYzZhNDhjNDc5MTVmYzFmODVmYTdmNTQ3OWE1OTYyNmFjM2I5MzA0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3Rl
SW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5o
IgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KQEAg
LTQxLDE3ICs0MiwyMCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcikKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
PiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPihuZXcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikpOworICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4obmV3IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSkpOwogfQogCi1SZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KQorUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICA6IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKSkKLSAgICAsIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIocmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpCisgICAgLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKHBhcmFtZXRl
cnMuaWRlbnRpZmllcikKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1fcmVzdW1lRGlzcGxh
eUxpc3RTZW1hcGhvcmUobWFrZVVuaXF1ZTxNYWNoU2VtYXBob3JlPihXVEZNb3ZlKHBhcmFtZXRl
cnMuc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSkKKyNlbmRpZgogewog
ICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5t
ZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CiB9CiAKIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCkKQEAgLTE1Myw3ICsxNTcsNyBA
QCBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1p
dChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcAogICAgIH0ucmVwbGF5KCk7CiB9CiAKLVJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VC
dWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKEltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGlu
YXRpb24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYgaGFu
ZGxlKQorUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVz
dGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoSW1hZ2VCdWZmZXIm
IGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVh
ZGVySGFuZGxlJiBoYW5kbGUsIEdQVVByb2Nlc3NXYWtldXBSZWFzb24gcmVhc29uKQogewogICAg
IGF1dG8gZGVzdGluYXRpb24gPSBtYWtlUmVmUHRyKGluaXRpYWxEZXN0aW5hdGlvbik7CiAgICAg
YXV0byBoYW5kbGVQcm90ZWN0b3IgPSBtYWtlUmVmKGhhbmRsZSk7CkBAIC0xOTUsMTMgKzE5OSwx
MyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0
aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseQogICAgICAgICAgICAgZGVzdGluYXRpb24gPSBt
YWtlUmVmUHRyKG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcigqcmVzdWx0
Lm5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyKSk7CiAgICAgICAgICAgICBpZiAoIWRlc3RpbmF0
aW9uKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BlbmRpbmdXYWtldXBJbmZvKTsKLSAg
ICAgICAgICAgICAgICBtX3BlbmRpbmdXYWtldXBJbmZvID0ge3t7IGhhbmRsZS5pZGVudGlmaWVy
KCksIG9mZnNldCwgKnJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciB9LCBXVEY6Om51
bGxvcHQgfX07CisgICAgICAgICAgICAgICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBoYW5k
bGUuaWRlbnRpZmllcigpLCBvZmZzZXQsICpyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXIsIHJlYXNvbiB9LCBXVEY6Om51bGxvcHQgfX07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAocmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID09IERpc3BsYXlMaXN0OjpT
dG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UpIHsKICAgICAgICAgICAgIG1f
cGVuZGluZ1dha2V1cEluZm8gPSB7ewotICAgICAgICAgICAgICAgIHsgaGFuZGxlLmlkZW50aWZp
ZXIoKSwgb2Zmc2V0LCBkZXN0aW5hdGlvbi0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkg
fSwKKyAgICAgICAgICAgICAgICB7IGhhbmRsZS5pZGVudGlmaWVyKCksIG9mZnNldCwgZGVzdGlu
YXRpb24tPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCByZWFzb24gfSwKICAgICAgICAg
ICAgICAgICByZXN1bHQubWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcgogICAgICAgICAg
ICAgfX07CiAgICAgICAgIH0KQEAgLTIwOSw4ICsyMTMsNTEgQEAgUmVmUHRyPEltYWdlQnVmZmVy
PiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVy
QXBwbHkKICAgICAgICAgaWYgKG1fcGVuZGluZ1dha2V1cEluZm8pCiAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICBpZiAoIXNpemVUb1JlYWQpCi0gICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgaWYgKCFzaXplVG9SZWFkKSB7CisgICAgICAgICAgICBpZiAocmVhc29uICE9IEdQVVByb2Nl
c3NXYWtldXBSZWFzb246Okl0ZW1Db3VudEh5c3RlcmVzaXNFeGNlZWRlZCkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgaGFuZGxlLnN0YXJ0V2FpdGluZygpOworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgICAgICAgICAgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZS0+
d2FpdEZvcigzMF91cyk7CisjZWxzZQorICAgICAgICAgICAgc2xlZXAoMzBfdXMpOworI2VuZGlm
CisKKyAgICAgICAgICAgIGF1dG8gcmVzdW1lUmVhZGluZ0luZm8gPSBoYW5kbGUuc3RvcFdhaXRp
bmcoKTsKKyAgICAgICAgICAgIGlmICghcmVzdW1lUmVhZGluZ0luZm8pCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgIHNpemVUb1JlYWQgPSBoYW5kbGUudW5yZWFkQnl0ZXMo
KTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSghc2l6ZVRvUmVhZCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBw
cm9jZXNzLgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1dG8g
bmV3RGVzdGluYXRpb25JZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyVHlwZT4ocmVzdW1lUmVhZGluZ0luZm8tPmRlc3RpbmF0aW9uKTsK
KyAgICAgICAgICAgIGlmIChVTkxJS0VMWSghbmV3RGVzdGluYXRpb25JZGVudGlmaWVyKSkgewor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0
ZSB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZGVzdGluYXRpb24gPSBtYWtlUmVmUHRyKG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNo
ZWRJbWFnZUJ1ZmZlcihuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpKTsKKworICAgICAgICAgICAg
aWYgKFVOTElLRUxZKCFkZXN0aW5hdGlvbikpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTog
QWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgorICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG9mZnNldCA9IHJlc3VtZVJlYWRp
bmdJbmZvLT5vZmZzZXQ7CisKKyAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24pIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoIW1fcGVuZGluZ1dha2V1cEluZm8pOworICAgICAgICAgICAgICAg
IG1fcGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaGFuZGxlLmlkZW50aWZpZXIoKSwgb2Zmc2V0LCBu
ZXdEZXN0aW5hdGlvbklkZW50aWZpZXIsIHJlYXNvbiB9LCBXVEY6Om51bGxvcHQgfX07CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAg
ICByZXR1cm4gZGVzdGluYXRpb247CkBAIC0yMzMsNyArMjgwLDcgQEAgdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NX
YWtldXBNZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRlc3RpbmF0aW9uSW1hZ2VC
dWZmZXIgPSBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlz
dHMoKmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsIGFyZ3VtZW50cy5vZmZzZXQsICppbml0aWFsSGFu
ZGxlKTsKKyAgICBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VC
dWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBh
cmd1bWVudHMub2Zmc2V0LCAqaW5pdGlhbEhhbmRsZSwgYXJndW1lbnRzLnJlYXNvbik7CiAgICAg
aWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
cGVuZGluZ1dha2V1cEluZm8pOwogICAgICAgICByZXR1cm47CkBAIC0yNTIsNyArMjk5LDcgQEAg
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNv
bnN0IEdQVVByb2Nlc3NXYWtldXBNZXMKIAogICAgICAgICAvLyBPdGhlcndpc2UsIGNvbnRpbnVl
IHJlYWRpbmcgdGhlIG5leHQgZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIGZyb20gdGhlIHN0YXJ0
LgogICAgICAgICBhdXRvIGFyZ3VtZW50cyA9IHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVw
SW5mbywgV1RGOjpudWxsb3B0KS0+YXJndW1lbnRzOwotICAgICAgICBkZXN0aW5hdGlvbkltYWdl
QnVmZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxp
c3RzKCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBhcmd1bWVudHMub2Zmc2V0LCAqbmV4dEhhbmRs
ZSk7CisgICAgICAgIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBuZXh0RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoKmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIs
IGFyZ3VtZW50cy5vZmZzZXQsICpuZXh0SGFuZGxlLCBhcmd1bWVudHMucmVhc29uKTsKICAgICAg
ICAgaWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX3BlbmRpbmdXYWtldXBJbmZvKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY3LDcg
KzMxNCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJU
b1JlYWQoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcGVuZGluZ1dha2V1cEluZm8g
PSB7e3sgaWRlbnRpZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwg
ZGVzdGluYXRpb25JZGVudGlmaWVyIH0sIFdURjo6bnVsbG9wdCB9fTsKKyAgICBtX3BlbmRpbmdX
YWtldXBJbmZvID0ge3t7IGlkZW50aWZpZXIsIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFk
ZXJTaXplKCksIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbjo6
VW5zcGVjaWZpZWQgfSwgV1RGOjpudWxsb3B0IH19OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgSW50UmVjdCBzcmNSZWN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRh
UmVmZXJlbmNlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5k
ZXggNDQzNTg1YmRhNTgyNDEzYmZhOWQ0OWVhY2ZlYTdiN2YwZmRhMmE3My4uMDhhYWUxMWE1MTQy
YzVmNmQwNjY4NmJjODgzN2FkYjliY2MwMGI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC00
MSw2ICs0MSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXllci5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRl
IDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKQEAgLTU2LDEz
ICs2MCwxNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGU7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworc3RydWN0IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQKICAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAg
ICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOwogCiAgICAgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0OwpAQCAtNzgs
NyArODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbik7CiAKIHByaXZhdGU6Ci0gICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOworICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMm
Jik7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FS
Tl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxl
bmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2Nh
dGlvbikgb3ZlcnJpZGU7CiAKQEAgLTk1LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBzdWJtaXQoY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGRlc3Rp
bmF0aW9uKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG5leHREZXN0aW5hdGlv
bkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyhXZWJDb3JlOjpJbWFnZUJ1ZmZl
ciYgaW5pdGlhbERlc3RpbmF0aW9uLCBzaXplX3QgaW5pdGlhbE9mZnNldCwgRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUmKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG5leHREZXN0
aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyhXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYgaW5pdGlhbERlc3RpbmF0aW9uLCBzaXplX3QgaW5pdGlhbE9mZnNldCwgRGlzcGxh
eUxpc3RSZWFkZXJIYW5kbGUmLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uKTsKIAogICAgIC8vIElQ
Qzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xMzksNiArMTQ0LDkgQEAgcHJpdmF0ZToKICAg
ICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
OwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVy
LCBSZWZQdHI8RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlczsKICAgICBPcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24+IG1fcGVuZGluZ1dh
a2V1cEluZm87CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgc3RkOjp1bmlxdWVfcHRyPE1hY2hT
ZW1hcGhvcmU+IG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7CisjZW5kaWYKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvR1BV
UHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQ
VVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmgKaW5kZXggNzFiOTBkZTIxODAwOTFlZDA5
MWRhNWMwYWMxNTM0M2M1NTY3MjZjZi4uYzI5Y2YyNTEyMDE2Y2RhMmRmZTcwZDllMTQwYTkwZjAz
YzE5ZTYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc1dha2V1
cE1lc3NhZ2VBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNz
V2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oCkBAIC0zMiwxMCArMzIsMTYgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK2VudW0gY2xhc3MgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbiA6IHVpbnQ4X3Qg
eworICAgIFVuc3BlY2lmaWVkLAorICAgIEl0ZW1Db3VudEh5c3RlcmVzaXNFeGNlZWRlZAorfTsK
Kwogc3RydWN0IEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzIHsKICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaXRlbUJ1ZmZlcklkZW50aWZpZXI7
CiAgICAgdWludDY0X3Qgb2Zmc2V0IHsgMCB9OwogICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllcjsKKyAgICBHUFVQ
cm9jZXNzV2FrZXVwUmVhc29uIHJlYXNvbiB7IEdQVVByb2Nlc3NXYWtldXBSZWFzb246OlVuc3Bl
Y2lmaWVkIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAt
NDcsNiArNTMsNyBAQCB2b2lkIEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGl0ZW1CdWZmZXJJZGVu
dGlmaWVyOwogICAgIGVuY29kZXIgPDwgb2Zmc2V0OwogICAgIGVuY29kZXIgPDwgZGVzdGluYXRp
b25JbWFnZUJ1ZmZlcklkZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCByZWFzb247CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC02Nyw5ICs3NCwyNiBAQCBPcHRpb25hbDxHUFVQcm9j
ZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cz4gR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVu
dHM6OmRlYwogICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgKml0ZW1CdWZmZXJJZGVu
dGlmaWVyLCAqb2Zmc2V0LCAqZGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIgfX07Cisg
ICAgT3B0aW9uYWw8R1BVUHJvY2Vzc1dha2V1cFJlYXNvbj4gcmVhc29uOworICAgIGRlY29kZXIg
Pj4gcmVhc29uOworICAgIGlmICghcmVhc29uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHt7ICppdGVtQnVmZmVySWRlbnRpZmllciwgKm9mZnNldCwgKmRlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyLCAqcmVhc29uIH19OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViS2l0OjpHUFVQcm9jZXNzV2FrZXVwUmVhc29uPiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpHUFVQcm9jZXNzV2FrZXVwUmVhc29uLAor
ICAgICAgICBXZWJLaXQ6OkdQVVByb2Nlc3NXYWtldXBSZWFzb246OlVuc3BlY2lmaWVkLAorICAg
ICAgICBXZWJLaXQ6OkdQVVByb2Nlc3NXYWtldXBSZWFzb246Okl0ZW1Db3VudEh5c3RlcmVzaXNF
eGNlZWRlZAorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kN2I1YTc2YWYyNTIwYzllNzIwMTA2ODA4YTkzNGZkMTk3ODk5ZDI0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycy5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0
ZXJzIHsKKyAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyOworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxh
eUxpc3RTZW1hcGhvcmU7CisjZW5kaWYKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycz4g
ZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBlbmNvZGVyIDw8IHNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlOworI2VuZGlmCit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzPiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisK
KyAgICBPcHRpb25hbDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcj4gaWRlbnRpZmllcjsKKyAg
ICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcGFyYW1ldGVycy5pZGVudGlmaWVyID0gKmlkZW50
aWZpZXI7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPcHRpb25hbDxNYWNoU2VuZFJpZ2h0
PiBzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKKyAgICBkZWNvZGVyID4+
IHNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOworICAgIGlmICghc2VuZFJp
Z2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICBwYXJhbWV0ZXJzLnNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlID0gV1RGTW92ZSgqc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUp
OworI2VuZGlmCisKKyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaAppbmRleCBlZDkzZGMyOTk2ZjFhYmJh
ODJjNjYwYTk4YTUwMTRkYTliYjAxOTE3Li5kN2UxNjkxNjQ4NWQ0ZjgwMzEwNjk4NTBkNDc2NjFi
NDYyODYwMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5
TGlzdEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0
SGFuZGxlLmgKQEAgLTU1LDYgKzU1LDE3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgc2l6ZV90
IGFkdmFuY2Uoc2l6ZV90IGFtb3VudCkgPSAwOwogCisgICAgZW51bSBjbGFzcyBXYWl0aW5nU3Rh
dHVzIDogdWludDhfdCB7CisgICAgICAgIE5vdFdhaXRpbmcgPSAwLAorICAgICAgICBXYWl0aW5n
LAorICAgICAgICBSZXN1bWluZworICAgIH07CisKKyAgICBzdHJ1Y3QgUmVzdW1lUmVhZGluZ0lu
Zm9ybWF0aW9uIHsKKyAgICAgICAgdWludDY0X3Qgb2Zmc2V0OworICAgICAgICB1aW50NjRfdCBk
ZXN0aW5hdGlvbjsKKyAgICB9OworCiBwcm90ZWN0ZWQ6CiAgICAgU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQogICAgICAgICA6IG1faWRlbnRp
ZmllcihpZGVudGlmaWVyKQpAQCAtNjcsOCArNzgsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICB+
RGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXIoKSA9IGRlbGV0ZTsKIAogICAgICAgICBBdG9t
aWM8dWludDY0X3Q+IHVucmVhZEJ5dGVzOworICAgICAgICBSZXN1bWVSZWFkaW5nSW5mb3JtYXRp
b24gcmVzdW1lUmVhZGluZ0luZm87CisgICAgICAgIEF0b21pYzxXYWl0aW5nU3RhdHVzPiB3YWl0
aW5nU3RhdHVzOwogICAgIH07CiAKKyAgICBjb25zdCBEaXNwbGF5TGlzdFNoYXJlZE1lbW9yeUhl
YWRlciYgaGVhZGVyKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRGlz
cGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXIqPihkYXRhKCkpOyB9CiAgICAgRGlzcGxheUxpc3RT
aGFyZWRNZW1vcnlIZWFkZXImIGhlYWRlcigpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PERp
c3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyKj4oZGF0YSgpKTsgfQogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjM3
MzAwNWU5YmU4MjhkMDIzNzViYjQ0MWFjM2NkYTk5ZmFhNjIyYS4uNTdkZGUzNjNmMGJjNTYzYmEy
OGU1ZWY2NTYzZGU3MzUzN2I0YjNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xOTY4LDYgKzE5NjgsNyBAQAogCQlGNDJENjM0MTIy
QTBFRkRGMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDJENjMzRjIyQTBFRkQzMDBEMkZCM0Eg
LyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmggKi87IH07CiAJCUY0MzBFOTQyMjI0NzMzNUYwMDVG
RTA1MyAvKiBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDMwRTk0MTIyNDczMkE5MDA1RkUwNTMgLyogV2Vi
c2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oICovOyB9OwogCQlGNDMwRTk0NDIyNDczREZGMDA1RkUw
NTMgLyogV2ViQ29udGVudE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0MzBFOTQzMjI0NzNEQjgwMDVGRTA1MyAvKiBXZWJDb250ZW50TW9kZS5o
ICovOyB9OworCQlGNDM3QzhEOTI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQzN0M4RDgyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJRjQzOENEMUMyMjQxNDIxNDAw
REU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM4Q0QxQjIyNDE0MEE2MDBERTZEREEgLyogV0tXZWJw
YWdlUHJlZmVyZW5jZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7
IH07IH07CiAJCUY0MzhDRDFGMjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNl
c0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDM4Q0QxRTIyNDE0RDQwMDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5h
bC5oICovOyB9OwogCQlGNDM4Q0QyMTIyNDFGNjk1MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVy
ZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDM4Q0QyMDIyNDFGNjk1MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTU3NzYsNiArNTc3Nyw3IEBACiAJCUY0MkQ2MzQwMjJBMEVGRDMwMEQyRkIzQSAvKiBXZWJBdXRv
Y29ycmVjdGlvbkRhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBXZWJBdXRvY29ycmVjdGlvbkRhdGEubW07IHBhdGggPSBpb3MvV2ViQXV0b2NvcnJlY3Rpb25E
YXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMwRTk0MTIyNDczMkE5MDA1
RkUwNTMgLyogV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJz
aXRlTWV0YVZpZXdwb3J0UG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
MzBFOTQzMjI0NzNEQjgwMDVGRTA1MyAvKiBXZWJDb250ZW50TW9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb250ZW50TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDM3QzhE
ODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzhDRDFCMjI0MTQwQTYw
MERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnBh
Z2VQcmVmZXJlbmNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxRDIy
NDE0QUQ2MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjQzOENEMUUyMjQxNEQ0MDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzSW50
ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjUxMyw2ICs2NTE1LDcgQEAKIAkJCQlFMUND
MUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi8sCiAJCQkJNDYzRkQ0ODExRUI5
NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovLAogCQkJCTlCMTIy
OUQwMjNGRjJBNUUwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5o
ICovLAorCQkJCUY0MzdDOEQ4MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8sCiAJCQkJNUNCN0FGRTYyM0M2ODFCMDAwRTQ5Q0Yz
IC8qIFJlc291cmNlTG9hZEluZm8uaCAqLywKIAkJCQk1QzAwOTkzQjI0MTdGQjdFMDBENTNDMjUg
LyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaCAqLywKIAkJCQk0MTA0ODJDQjFE
REQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi8sCkBAIC0xMTg0Niw2ICsxMTg0OSw3
IEBACiAJCQkJMUE1NzA0RkMxQkUxNzUxMTAwODc0QUYxIC8qIFJlbW90ZU9iamVjdEludm9jYXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzEzMzgwMTg1OTBBRTQwMEYzRUMwNSAvKiBSZW1v
dGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzODYxODU5MEM0NjAw
RjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAor
CQkJCUY0MzdDOEQ5MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU5NDc5MDE4N0IzQjNBMDA0
Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNTk0N0E4MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU5NDc5QjE4N0IzQjYwMDA0Mzc4NTcgLyog
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3Bs
YXlMaXN0V3JpdGVySGFuZGxlLmgKaW5kZXggZmM3YTIxNjUzYTBlYjk2ODE5ZWIxYzA5YTlmYzM0
NDQ4MWE3Mzk2My4uZjlmNDRlNDI4OGM5MDZhZjg3YTIwYzdjMDk3NWU5OTQ1ZjBmOWUzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlz
dFdyaXRlckhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaApAQCAtNDYsNiArNDYsMTMgQEAgcHVibGljOgog
ICAgIHNpemVfdCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUhhbmRsZSgpIGNvbnN0OwogCisg
ICAgYm9vbCB0cnlUb1Jlc3VtZShTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6UmVzdW1lUmVhZGlu
Z0luZm9ybWF0aW9uJiYgaW5mbykKKyAgICB7CisgICAgICAgIGF1dG8mIGhlYWRlciA9IHRoaXMt
PmhlYWRlcigpOworICAgICAgICBoZWFkZXIucmVzdW1lUmVhZGluZ0luZm8gPSBXVEZNb3ZlKGlu
Zm8pOworICAgICAgICByZXR1cm4gaGVhZGVyLndhaXRpbmdTdGF0dXMuY29tcGFyZUV4Y2hhbmdl
V2VhayhTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1czo6V2FpdGluZywgU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGU6OldhaXRpbmdTdGF0dXM6OlJlc3VtaW5nKTsKKyAgICB9CisK
IHByaXZhdGU6CiAgICAgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYg
c2hhcmVkTWVtb3J5KQogICAgICAgICA6IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50aWZp
ZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmNwcAppbmRleCBjNDFlMWZkNTY3MzE1NGZiZjRlMjAyOGZiZTIxM2QwOGQzNTlkNzhk
Li40ZjE1NWEwODVmN2EwNzJiNmZlZGI3Mzc1OWIwZjhjNmY2Nzc1OGM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5o
IgpAQCAtNjYsOCArNjcsMTIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNv
bm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24u
YWRkQ2xpZW50KCp0aGlzKTsKICAgICBjb25uZWN0aW9uLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50
NjQoKSwgKnRoaXMpOwotCi0gICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q3JlYXRlUmVuZGVyaW5nQmFja2VuZChtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KSwgMCk7CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3Jl
YXRlUmVuZGVyaW5nQmFja2VuZCh7CisgICAgICAgIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIsCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUuY3JlYXRlU2VuZFJpZ2h0KCksCisjZW5kaWYKKyAgICB9KSwgMCk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0
aW9uKCkKQEAgLTI3Miw4ICsyNzcsMTggQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmRpZEFwcGVuZERhdGEoY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW4KIAogICAg
IGJvb2wgd2FzRW1wdHkgPSBzaGFyZWRIYW5kbGUtPmFkdmFuY2UobnVtYmVyT2ZCeXRlcykgPT0g
bnVtYmVyT2ZCeXRlczsKICAgICBpZiAoIXdhc0VtcHR5IHx8IGRpZENoYW5nZUl0ZW1CdWZmZXIg
PT0gRGlzcGxheUxpc3Q6OkRpZENoYW5nZUl0ZW1CdWZmZXI6OlllcykgewotICAgICAgICBpZiAo
bV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMgJiYgIS0tbV9yZW1haW5pbmdJdGVtc1Rv
QXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCkKLSAgICAgICAgICAgIHNlbmRXYWtldXBNZXNzYWdl
KCpzdGQ6OmV4Y2hhbmdlKG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzLCBXVEY6Om51
bGxvcHQpKTsKKyAgICAgICAgaWYgKG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzKSB7
CisgICAgICAgICAgICBpZiAoc2hhcmVkSGFuZGxlLT50cnlUb1Jlc3VtZSh7IG1fZGVmZXJyZWRX
YWtldXBNZXNzYWdlQXJndW1lbnRzLT5vZmZzZXQsIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJn
dW1lbnRzLT5kZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpIH0pKSB7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICAgICAgICAgbV9yZXN1bWVEaXNwbGF5TGlz
dFNlbWFwaG9yZS5zaWduYWwoKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIG1fZGVmZXJyZWRX
YWtldXBNZXNzYWdlQXJndW1lbnRzID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIG1f
cmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXAgPSAwOworICAgICAgICAg
ICAgfSBlbHNlIGlmICghLS1tX3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRCZWZvcmVTZW5kaW5nV2Fr
ZXVwKSB7CisgICAgICAgICAgICAgICAgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMt
PnJlYXNvbiA9IEdQVVByb2Nlc3NXYWtldXBSZWFzb246Okl0ZW1Db3VudEh5c3RlcmVzaXNFeGNl
ZWRlZDsKKyAgICAgICAgICAgICAgICBzZW5kV2FrZXVwTWVzc2FnZSgqc3RkOjpleGNoYW5nZSht
X2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cywgV1RGOjpudWxsb3B0KSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjg0LDEyICsy
OTksMTYgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZERhdGEo
Y29uc3QgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW4KICAgICAvLyB3YWtldXBzIHdoZW4gcHJv
Y2Vzc2luZyBhIGxhcmdlIGFtb3VudCBvZiBkaXNwbGF5IGxpc3QgaXRlbXMuCiAgICAgY29uc3Rl
eHByIHVuc2lnbmVkIGl0ZW1Db3VudEh5c3RlcmVzaXNCZWZvcmVTZW5kaW5nV2FrZXVwID0gNTEy
OwogCisgICAgYXV0byBvZmZzZXRUb1JlYWQgPSBzaGFyZWRIYW5kbGUtPndyaXRhYmxlT2Zmc2V0
KCkgLSBudW1iZXJPZkJ5dGVzOworICAgIGlmIChzaGFyZWRIYW5kbGUtPnRyeVRvUmVzdW1lKHsg
b2Zmc2V0VG9SZWFkLCBkZXN0aW5hdGlvbkltYWdlQnVmZmVyLnRvVUludDY0KCkgfSkpIHsKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZS5z
aWduYWwoKTsKKyNlbmRpZgorICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV9yZW1haW5p
bmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCA9IGl0ZW1Db3VudEh5c3RlcmVzaXNC
ZWZvcmVTZW5kaW5nV2FrZXVwOwotICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRz
ID0ge3sKLSAgICAgICAgaGFuZGxlLmlkZW50aWZpZXIsCi0gICAgICAgIHNoYXJlZEhhbmRsZS0+
d3JpdGFibGVPZmZzZXQoKSAtIG51bWJlck9mQnl0ZXMsCi0gICAgICAgIGRlc3RpbmF0aW9uSW1h
Z2VCdWZmZXIKLSAgICB9fTsKKyAgICBtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyA9
IHt7IGhhbmRsZS5pZGVudGlmaWVyLCBvZmZzZXRUb1JlYWQsIGRlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXIgfX07CiB9CiAKIFJlZlB0cjxEaXNwbGF5TGlzdFdyaXRlckhhbmRsZT4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Ojptb3N0UmVjZW50bHlVc2VkRGlzcGxheUxpc3RIYW5kbGUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggZjAzYjMyZjY0YTE5YWI2YTI0
YmNhNDFlNGU2YzVkNTQzNmQ4OTJmYS4uNDhmYTA2OWRhYThkM2NkNmQxMjQ0MmRiMzMwNjAzYzkz
NmI5N2I0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC0zOSw2
ICszOSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFw
aG9yZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5
TGlzdCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKQEAgLTEyMiw2ICsxMjYsOSBAQCBwcml2YXRlOgog
ICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbV9jdXJy
ZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgT3B0aW9uYWw8R1BVUHJv
Y2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHM+IG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1l
bnRzOwogICAgIHVuc2lnbmVkIG1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdX
YWtldXAgeyAwIH07CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTWFjaFNlbWFwaG9yZSBtX3Jl
c3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416843</attachid>
            <date>2020-12-29 15:17:58 -0800</date>
            <delta_ts>2021-01-05 08:33:51 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-219586-20201229151757.patch</filename>
            <type>text/plain</type>
            <size>41580</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkMzVjNWFlMTMxNzRlMzMy
MGMwNGZjYWJhNjM3N2I2MmZkZTk0YWMuLmI3MzU3NWI3NDc2ZjUxYzZhYjZmNTk0ZTQwMTEzM2M5
NzczYjhjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQwIEBACisyMDIwLTEyLTI4ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IERp
c3BsYXkgTGlzdHNdIEdQVSBwcm9jZXNzIHNob3VsZCBub3QgaW1tZWRpYXRlbHkgc2xlZXAgYWZ0
ZXIgcmVhZGluZyBhbGwgYXZhaWxhYmxlIGRpc3BsYXkgbGlzdCBpdGVtcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NTg2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83MjI3NTQxMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBtZWNoYW5pc20gZm9yIHRoZSBHUFUgcHJv
Y2VzcyB0byBzbGVlcCBmb3IgYSBzaG9ydCBkdXJhdGlvbiAofjMwIG1pY3Jvc2Vjb25kcykgYWZ0
ZXIgaXQgaGFzCisgICAgICAgIGZpbmlzaGVkIHJlYWRpbmcgYWxsIGF2YWlsYWJsZSBkYXRhIGlu
IGl0cyBzaGFyZWQgaXRlbSBidWZmZXI7IGlmIHRoZSB3ZWIgcHJvY2VzcyB3cml0ZXMgYWRkaXRp
b25hbCBkYXRhIHRvIHRoZQorICAgICAgICBpdGVtIGJ1ZmZlciAodGhlcmVieSBidW1waW5nIHRo
ZSB1bnJlYWQgYnl0ZXMgY291bnRlcikgZHVyaW5nIHRoaXMgdGltZSwgd2UgaW1tZWRpYXRlbHkg
cmVzdW1lIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIG5ldyBkaXNwbGF5IGxpc3QgaXRlbXMgaW4g
dGhlIEdQVSBwcm9jZXNzLCByYXRoZXIgdGhhbiB3YWl0IGZvciBhIG5ldyB3YWtldXAgbWVzc2Fn
ZS4KKworICAgICAgICBUaGlzIGFsbG93cyB1cyB0byBhdm9pZCB0aGUgY29zdCBvZiBnb2luZyB0
byBzbGVlcCBqdXN0IHRvIGltbWVkaWF0ZWx5IHdha2UgdXAgaW4gdGhlIEdQVSBwcm9jZXNzLCBp
biB0aGUgY2FzZQorICAgICAgICB3aGVyZSB0aGUgd2ViIHByb2Nlc3MgaXMgd3JpdGluZyBkaXNw
bGF5IGxpc3QgaXRlbXMgYXQgYSB2ZXJ5IGZhc3QgcmF0ZSBhbmQgdGhlIEdQVSBwcm9jZXNzIGp1
c3QgaGFwcGVucyB0bworICAgICAgICBjYXRjaCB1cCAoaS5lLiBhZHZhbmNlIGB1bnJlYWRCeXRl
cygpYCB0byAwKS4KKworICAgICAgICBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tl
bmQpOgorCisgICAgICAgIFJlZmFjdG9yIHRoZSByZW5kZXJpbmcgYmFja2VuZCBjcmVhdGlvbiBt
ZXNzYWdlIGZyb20gdGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgcHJvY2Vzcywgc28gdGhhdCB0
aGUgcmVuZGVyaW5nCisgICAgICAgIGJhY2tlbmQgY3JlYXRpb24gYXJndW1lbnRzIGFyZSBlbmNh
cHN1bGF0ZWQgaW4gYSBzaW5nbGUgc3RydWN0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRp
b25QYXJhbWV0ZXJzLiBUaGlzCisgICAgICAgIHN0cnVjdCBjb250YWlucyB0aGUgcmVuZGVyaW5n
IGJhY2tlbmQgaWRlbnRpZmllciBhbmQsIG9uIENvY29hIHBsYXRmb3JtcywgYSBtYWNoIHNlbmQg
cmlnaHQgdGhhdCBjYW4gYmUgdXNlZCB0bworICAgICAgICBjb25zdHJ1Y3QgdGhlIGNvcnJlc3Bv
bmRpbmcgZGlzcGxheSBsaXN0IHdha2V1cCBzZW1hcGhvcmUgaW4gdGhlIEdQVSBwcm9jZXNzLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaDoK
KyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OnN0YXJ0V2FpdGluZyk6
CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpzdG9wV2FpdGluZyk6
CisKKyAgICAgICAgQWRkIGhlbHBlciBtZXRob2RzIGZvciB0aGUgR1BVIHByb2Nlc3MgdG8gc3Rh
cnQgYW5kIHN0b3Agd2FpdGluZyBmb3IgbmV3IGl0ZW1zLiBTZWUgdGhlIGNhbGwgc2l0ZSBpbgor
ICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIGZvciBtb3JlIGRldGFpbCwgYXMgd2VsbCBh
cyB0aGUgY29tbWVudHMgaW4gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUgYmVsb3cuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToK
KworICAgICAgICBSZWZhY3RvciB0aGlzIGNvZGVwYXRoIHRvIHRha2UgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBpbnN0ZWFkIG9mIGp1c3QgYW4gaWRlbnRpZmllci4K
KworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRp
b25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMpOgorCisgICAgICAgIEluIHRo
ZSBjYXNlIHdoZXJlIHdlIHJlY2VpdmVkIHRoZSB3YWtldXAgbWVzc2FnZSBkdWUgdG8gZXhjZWVk
aW5nIHRoZSBkaXNwbGF5IGxpc3QgaXRlbSBjb3VudCBoeXN0ZXJlc2lzLCB3YWl0CisgICAgICAg
IGZvciBhIHNob3J0IGR1cmF0aW9uIHVzaW5nIHRoZSBzZW1hcGhvcmUgYWZ0ZXIgd2UgaGl0IGFu
IHVucmVhZCBjb3VudCBvZiAwLiBUaGlzIGFsbG93cyB0aGUgd2ViIHByb2Nlc3MgdG8gd3JpdGUK
KyAgICAgICAgbW9yZSBpdGVtcyBhbmQgc2lnbmFsIHRoZSBzZW1hcGhvcmUsIHNvIHRoYXQgd2Ug
Y2FuIHJlc3VtZSByZWFkaW5nIGluIHRoZSBHUFUgcHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJU
b1JlYWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oOgorICAgICAgICAqIFNoYXJlZC9HUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50
cy5oOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50czo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VB
cmd1bWVudHM6OmRlY29kZSk6CisKKyAgICAgICAgUGx1bWIgYSBHUFVQcm9jZXNzV2FrZXVwUmVh
c29uIGVudW0gZmxhZyBvdmVyIHRvIHRoZSBHUFUgcHJvY2VzcywgdmlhIHdha2UtdXAgYXJndW1l
bnRzLiBUaGlzIGZsYWcgaXMgdXNlZCBieQorICAgICAgICB0aGUgR1BVIHByb2Nlc3MgdG8gZGV0
ZXJtaW5lIHdoZXRoZXIgd2Ugc2hvdWxkIGV4cGVjdCBhZGRpdGlvbmFsIGl0ZW1zIHRvIGV2ZW50
dWFsbHkgZW50ZXIgdGhlIHN0cmVhbSwgYW5kCisgICAgICAgIHdoZXRoZXIgd2Ugc2hvdWxkIGVh
Z2VybHkgZ28gdG8gc2xlZXAgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwga25vd24gaXRlbXMuIEluIG90
aGVyIHdvcmRzLCBpZiB0aGUgd2FrZXVwIG1lc3NhZ2UgaXMKKyAgICAgICAgYmVpbmcgc2VudCBh
cyBhIHJlc3VsdCBvZiBmbHVzaGluZyB0aGUgaW1hZ2UgYnVmZmVyLCB3ZSBkb24ndCB3YW50IHRv
IHVubmVjZXNzYXJpbHkgd2FpdCBmb3IgbW9yZSBpdGVtczsKKyAgICAgICAgaG93ZXZlciwgaWYg
dGhlIHdha2V1cCBtZXNzYWdlIGlzIGJlaW5nIHNlbnQgYXMgYSByZXN1bHQgb2YgZXhjZWVkaW5n
IHRoZSAoY3VycmVudGx5KSA1MTItaXRlbSBoeXN0ZXJlc2lzLCB0aGVuCisgICAgICAgIHdlIGNh
biBwcm9iYWJseSBleHBlY3QgbW9yZSBpdGVtcyB0byBzdHJlYW0gaW4sIHNvIGl0J3MgbW9yZSBv
cHRpbWFsIHRvIHdhaXQgYWZ0ZXIgZmluaXNoaW5nIGFsbCBrbm93biBkaXNwbGF5CisgICAgICAg
IGxpc3QgaXRlbXMuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQ
cm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUpOgorCisgICAgICAgIFNlZSBhYm92ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICog
U2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFkZXIgY29uc3QpOgorCisgICAgICAgIEFkZHMgYSBuZXcg
V2FpdGluZ1N0YXR1cyBlbnVtIHR5cGUgaW50ZXJuYWwgdG8gU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUgYW5kIGl0cyBzdWJjbGFzc2VzLCB3aGljaCBpcyB1c2VkIHRvCisgICAgICAgIGNvb3JkaW5h
dGUgdGhlIGFjdCBvZiB3YWl0aW5nIGZvciBuZXcgaXRlbSBkYXRhIGluIHRoZSBHUFUgcHJvY2Vz
cy4gQSBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRsZSBub3cgY29udGFpbnMKKyAgICAgICAgYW4g
YXRvbWljIGB3YWl0aW5nU3RhdHVzYCBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgR1BVIHBy
b2Nlc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2Ygd2FpdGluZyBmb3IgbW9yZSBpdGVtcywKKyAgICAg
ICAgYW5kIGFsc28gd2hldGhlciB0aGUgd2ViIHByb2Nlc3MgaGFzIGFja25vd2xlZGdlZCB0aGUg
ZmFjdCB0aGF0IHRoZSBHUFUgcHJvY2VzcyBpcyB3YWl0aW5nICh0aGVyZWJ5IHB1dHRpbmcgdGhl
CisgICAgICAgIEdQVSBwcm9jZXNzIGluIGEgc3RhdGUgd2hlcmUgaXQgaXMgd2FpdGluZyB0byBy
ZXN1bWUgcHJvY2Vzc2luZykuIEFsb25nIHdpdGggdGhpcyBlbnVtLCB3ZSBhbHNvIGFkZCB0d28g
bmV3CisgICAgICAgIDgtYnl0ZSB2YWx1ZXMgdG8gdGhlIGhlYWRlciBzZWN0aW9uOiBhbiBvZmZz
ZXQgdG8gYmVnaW4gcmVhZGluZyBpdGVtIGRhdGEgYWZ0ZXIgcmVzdW1pbmcsIGFuZCA4IGJ5dGVz
IGZvciBhbgorICAgICAgICBpZGVudGlmaWVyIGluZGljYXRpbmcgdGhlIG5ldyBkZXN0aW5hdGlv
biAoZm9yIHRoZSBwdXJwb3NlcyBvZiBkaXNwbGF5IGxpc3QgcmVuZGVyaW5nLCB0aGlzIGlzIGEK
KyAgICAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB0aG91Z2ggdGhpcyB3aWxsIGJl
IGRpZmZlcmVudCBmb3IgV2ViR0wpLgorCisgICAgICAgICAgICArLS0+IE5vdFdhaXRpbmcgPC0t
KworICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKKyAgICAgICAgICAgIHwgICAgICAg
IHwgICAgICAgICB8IFszYV0KKyAgICAgICAgICAgIHwgWzNiXSAgIHwgWzFdICAgICB8CisgICAg
ICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfAorICAgICAgICBSZXN1bWluZyAgICAgKy0tLS0+
IFdhaXRpbmcKKyAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8
ICAgICAgICBbMl0gICAgICAgfAorICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKKwor
ICAgICAgICBUaGVyZSBhcmUgdGhyZWUgbWFpbiB3YXlzIGluIHdoaWNoIHRoaXMgc3RhdGUgbWFj
aGluZSBtYXkgdHJhbnNpdGlvbiwgbnVtYmVyZWQgWzFdLVszXSBpbiB0aGUgYWJvdmUgZGlhZ3Jh
bS4KKworICAgICAgICBbMV0gV2hlbiB0aGUgR1BVIHByb2Nlc3MgZ29lcyB0byBzbGVlcCwgaXQg
ZW50ZXJzIFdhaXRpbmcgc3RhdGUsIGluZGljYXRpbmcgdGhhdCBpdCBpcyBub3cgd2FpdGluZyBm
b3IKKyAgICAgICAgICAgIGFkZGl0aW9uYWwgaXRlbSBkYXRhLiBUaGlzIGNvcnJlc3BvbmRzIHRv
IHRoZSBjYWxsIHRvIGBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6c3RhcnRXYWl0aW5nYC4KKwor
ICAgICAgICBbMl0gV2hlbiB0aGUgd2ViIHByb2Nlc3MgYnVtcHMgdGhlIHVucmVhZCBjb3VudCBv
ZiBhbiBpdGVtIGJ1ZmZlciwgaWYgaXQgaGFzIGEgcGVuZGluZyB3YWtldXAgbWVzc2FnZSBvciB3
b3VsZAorICAgICAgICAgICAgb3RoZXJ3aXNlIG5lZWQgdG8gc2NoZWR1bGUgYSBwZW5kaW5nIHdh
a2V1cCBtZXNzYWdlLCBzZWUgaWYgd2UgY2FuIGluc3RlYWQgc2ltcGx5IHRlbGwgdGhlIEdQVSBw
cm9jZXNzIHRvCisgICAgICAgICAgICByZXN1bWUgcHJvY2Vzc2luZywgaW5zdGVhZCBvZiBzZW5k
aW5nIGEgd2FrZXVwIG1lc3NhZ2UuIFRoaXMgY29ycmVzcG9uZHMgdG8gYSBjYWxsIHRvIHRoZSBo
ZWxwZXIgbWV0aG9kCisgICAgICAgICAgICBgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OnRyeVRv
UmVzdW1lYC4KKworICAgICAgICBbM10gSWYgdGhlIG1heGltdW0gd2FpdCBkdXJhdGlvbiAofjI0
IG1pY3Jvc2Vjb25kcykgaGFzIHBhc3NlZCAoM2EpIF9vcl8gaWYgdGhlIHdlYiBwcm9jZXNzIGhh
cyB0cmFuc2l0aW9uZWQgdXMKKyAgICAgICAgICAgIGZyb20gV2FpdGluZyB0byBSZXN1bWluZyBz
dGF0ZSAoM2IpLCB0aGVuIHRyYW5zaXRpb24gYmFjayB0byBOb3RXYWl0aW5nLiBJbiBib3RoIHNj
ZW5hcmlvcywgdGhpcyBjb3JyZXNwb25kcworICAgICAgICAgICAgdG8gYSBjYWxsIHRvIGBEaXNw
bGF5TGlzdFJlYWRlckhhbmRsZTo6c3RvcFdhaXRpbmdgLiBJbiB0aGUgY2FzZSB3aGVyZSB3ZSB0
cmFuc2l0aW9uZWQgZnJvbSBSZXN1bWluZyBzdGF0ZSwKKyAgICAgICAgICAgIHdlIGNhbiBpbW1l
ZGlhdGVseSBjb250aW51ZSBwcm9jZXNzaW5nIGRpc3BsYXkgbGlzdCBpdGVtcy4KKworICAgICAg
ICBJbiB0aGUgY2FzZSB3aGVyZSB3ZSBzdWNjZXNzZnVsbHkgcmVzdW1lLCB3ZSdyZSBlc3NlbnRp
YWxseSAicmUtd2FraW5nIiB0aGUgR1BVIHByb2Nlc3Mgd2l0aG91dCB0aGUgb3ZlcmhlYWQgb2YK
KyAgICAgICAgYW4gYWRkaXRpb25hbCBJUEMgbWVzc2FnZSwgdXNpbmcgdGhlIHNhbWUgc2hhcmVk
IGRpc3BsYXkgbGlzdCBoYW5kbGUuIFNpbmNlIHRoaXMgd291bGQndmUgb3RoZXJ3aXNlIGJlZW4g
YQorICAgICAgICBzZXBhcmF0ZSB3YWtldXAgbWVzc2FnZSwgd2UgbmVlZCB0byBiZSBjYXJlZnVs
IHRoYXQgd2UgY29udGludWUgcHJvY2Vzc2luZyBkaXNwbGF5IGxpc3QgaXRlbXMgZnJvbSB0aGUg
Y29ycmVjdAorICAgICAgICBvZmZzZXQgaW50byB0aGUgc2hhcmVkIGRpc3BsYXkgbGlzdCBoYW5k
bGUsIGFuZCB1c2luZyB0aGUgY29ycmVjdCBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXIuIFRoaXMg
aXMgYmVjYXVzZSB0aGUKKyAgICAgICAgd3JpdGFibGUgb2Zmc2V0IG9mIHRoZSBpdGVtIGJ1ZmZl
ciBtYXkgaGF2ZSBiZWVuIHJlc2V0IGluIHRoZSBtaWRkbGUgb2Ygd2FpdGluZyBieSB0aGUgd2Vi
IHByb2Nlc3MsIG9yIHRoZQorICAgICAgICBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXIgbWF5IGhh
dmUgY2hhbmdlZCB3aGlsZSB3YWl0aW5nLiBUbyBoYW5kbGUgdGhlc2Ugc2NlbmFyaW9zLCB3ZSBp
bnRyb2R1Y2UgdGhlCisgICAgICAgIGBSZXN1bWVSZWFkaW5nSW5mb3JtYXRpb25gIHN0cnVjdCwg
d2hpY2ggY29udGFpbnMgYm90aCBvZiB0aGVzZSBwaWVjZXMgb2YgaW5mb3JtYXRpb24uIEFuIGlu
c3RhbmNlIG9mIHRoaXMKKyAgICAgICAgc3RydWN0IGV4aXN0cyBpbiB0aGUgc2hhcmVkIG1lbW9y
eSBoZWFkZXIgc2VjdGlvbjsgdGhpcyBpcyB3cml0dGVuIGJ5IHRoZSB3ZWIgcHJvY2VzcyBpbW1l
ZGlhdGVseSBwcmlvciB0bworICAgICAgICB0cmFuc2l0aW9uaW5nIHRvIFJlc3VtaW5nIHN0YXRl
LCBhbmQgcmVhZCBieSB0aGUgR1BVIHByb2Nlc3Mgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gUmVz
dW1pbmcgdG8gTm90V2FpdGluZy4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0
V3JpdGVySGFuZGxlLmg6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxl
Ojp0cnlUb1Jlc3VtZSk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCBmb3IgdGhlIHdl
YiBwcm9jZXNzIHRvIHRyeSBhbmQgbm90aWZ5IHRoZSBHUFUgcHJvY2VzcyB0aGF0IGl0IHNob3Vs
ZCB0cnkgYW5kIHJlc3VtZQorICAgICAgICBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZy4gU2VlIHRo
ZSBjYWxsIHNpdGUgaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IGZvciBtb3JlIGRldGFp
bCwgYXMgd2VsbCBhcyB0aGUKKyAgICAgICAgY29tbWVudHMgaW4gU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUgYWJvdmUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZERhdGEpOgorCisgICAgICAgIFJh
dGhlciB0aGFuIGFsd2F5cyBzY2hlZHVsZSAob3Igc2VuZCkgYSB3YWtldXAgbWVzc2FnZSBoZXJl
IGluIHRoZSBjYXNlIHdoZXJlIHRoZSB1bnJlYWQgY291bnQgaXMgMCwgc2VlIGlmIHdlCisgICAg
ICAgIGNhbiBpbnN0ZWFkIHRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHN0b3Agd2FpdGluZyBhbmQg
cmVzdW1lIGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nLiBUbyBkbyB0aGlzLCB3ZSB1c2UgdGhlIG5l
dworICAgICAgICBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6dHJ5VG9SZXN1bWUgbWV0aG9kLCBn
aXZpbmcgaXQgdGhlIG5ldyBvZmZzZXQgdG8gYmVnaW4gcmVhZGluZyBpdGVtcyBmcm9tIGFzIHdl
bGwgYXMgdGhlCisgICAgICAgIGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlciB0byB3aGljaCB3ZSBz
aG91bGQgYXBwbHkgZGlzcGxheSBsaXN0IGl0ZW1zLiBJZiB3ZSBzdWNjZXNzZnVsbHkgdGVsbCB0
aGUgR1BVIHByb2Nlc3MgdG8KKyAgICAgICAgcmVzdW1lIHJlYWRpbmcsIHRoZW4gd2UgY2FuIGNs
ZWFyIG91dCAob3IgYXZvaWQgc3RvcmluZykgd2FrZXVwIG1lc3NhZ2UgYXJndW1lbnRzIGFuZCBh
dm9pZCBzZW5kaW5nIGFuIElQQworICAgICAgICB3YWtldXAgbWVzc2FnZS4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgor
CiAyMDIwLTEyLTIzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtHUFUgUHJvY2Vzc106IERvbid0IGNhbGwgZmx1c2hEcmF3aW5nQ29udGV4dCgpIGluIHRo
ZSBtaWRkbGUgb2YgcmVjb3JkaW5nIGRyYXdpbmcgY29tbWFuZHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA1
YzRjYTI1ZDRkYWE3ZDU4MTMxMTcwYzk3MjAzZjQwNmViYjFkYmE2Li40MWFlMGExMzE0OGFhNmE2
Y2M0YmJiODZiODliYmFlNjY0MDFhMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00OCw2ICs0OCw3IEBA
CiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2Fn
ZXMuaCIKQEAgLTI4OCwxMCArMjg5LDEwIEBAIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5JiBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjphdWRpb1Nlc3Npb25Qcm94eSgpCiB9CiAjZW5kaWYKIAot
dm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQordm9p
ZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShyZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgWyZdKCkgewotICAgICAgICByZXR1cm4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlzLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuZW5zdXJl
KHBhcmFtZXRlcnMuaWRlbnRpZmllciwgWyZdKCkgeworICAgICAgICByZXR1cm4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICB9
KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKaW5kZXggNGYyZDQ0ZmZiNTUwYWE2ZGU4MTBiOWJmOTUyNjIwN2Q1NzlkYjQ3OS4u
MWY3ODU1NWUyYjczOTllNzIwYjU0ZDljZmFlY2MzMzk4OTZhNzJhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC02
NSw2ICs2NSw3IEBAIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKK3N0
cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzPgpAQCAtMTI0LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
ICNlbmRpZgogCi0gICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIHJlbGVhc2VSZW5k
ZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAogI2lmIEVOQUJMRShX
RUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOGZjMGVmYWM5MzIxODIyMmJi
MGJjN2MyMWFhYjkxOWU1M2E5NzM0ZS4uMGNiYzVkODc5ODNlNjY2ZTQ4ZTgzOWE2NDY0ODk4Nzk1
MGEzOTJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewotICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5n
QmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKQorICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChzdHJ1Y3QgV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMp
CiAgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogI2lmIEVOQUJMRShXRUJH
TCkKICAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxl
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGUuaAppbmRleCBjYjcyMjM5NzY5NmRjOWUwYjA2ZTg5Y2FjMjVjZTcyY2I5YTU3NmUxLi5i
ZThjNTVmODhjNWRiNGNjNWJjYWM0MjQ2YTJhNjE1M2NmMmQ1NjdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGUuaApAQCAtNDEsNiArNDEsMjAgQEAgcHVibGljOgogICAgIHNpemVfdCBhZHZhbmNlKHNp
emVfdCBhbW91bnQpIG92ZXJyaWRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0Rm9yUmVhZGluZyhzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgY2FwYWNpdHksIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGlu
Z0NsaWVudCYpIGNvbnN0OwogCisgICAgdm9pZCBzdGFydFdhaXRpbmcoKQorICAgIHsKKyAgICAg
ICAgaGVhZGVyKCkud2FpdGluZ1N0YXR1cy5zdG9yZShTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
V2FpdGluZ1N0YXR1czo6V2FpdGluZyk7CisgICAgfQorCisgICAgT3B0aW9uYWw8U2hhcmVkRGlz
cGxheUxpc3RIYW5kbGU6OlJlc3VtZVJlYWRpbmdJbmZvcm1hdGlvbj4gc3RvcFdhaXRpbmcoKQor
ICAgIHsKKyAgICAgICAgYXV0byYgaGVhZGVyID0gdGhpcy0+aGVhZGVyKCk7CisgICAgICAgIGlm
IChoZWFkZXIud2FpdGluZ1N0YXR1cy5leGNoYW5nZShTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
V2FpdGluZ1N0YXR1czo6Tm90V2FpdGluZykgPT0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6Oldh
aXRpbmdTdGF0dXM6OlJlc3VtaW5nKQorICAgICAgICAgICAgcmV0dXJuIHsgaGVhZGVyLnJlc3Vt
ZVJlYWRpbmdJbmZvIH07CisKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisK
IHByaXZhdGU6CiAgICAgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYg
c2hhcmVkTWVtb3J5KQogICAgICAgICA6IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50aWZp
ZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBl
ZmY2NWVmY2RhNDVmMTRkMTRmNjg4M2ZhZjgyMTI1MTRiYWU4MTY0Li5jNmE0OGM0NzkxNWZjMWY4
NWZhN2Y1NDc5YTU5NjI2YWMzYjkzMDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgpAQCAtNDEsMTcgKzQyLDIwIEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3Jl
YXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQor
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ+KG5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPihuZXcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CiB9CiAKLVJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCitSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQotICAgICwgbV9yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcihyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKKyAgICAs
IG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIocGFyYW1ldGVycy5pZGVudGlmaWVyKQorI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgICwgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZShtYWtl
VW5pcXVlPE1hY2hTZW1hcGhvcmU+KFdURk1vdmUocGFyYW1ldGVycy5zZW5kUmlnaHRGb3JSZXN1
bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpKQorI2VuZGlmCiB7CiAgICAgaWYgKGF1dG8qIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkp
Ci0gICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgp
LCAqdGhpcyk7CisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNl
aXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LnRvVUludDY0KCksICp0aGlzKTsKIH0KIAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6flJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQoKQpAQCAtMTUzLDcgKzE1Nyw3IEBAIERpc3BsYXlMaXN0OjpSZXBs
YXlSZXN1bHQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNvbnN0IERpc3BsYXlMaXN0
OjpEaXNwCiAgICAgfS5yZXBsYXkoKTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdE
aXNwbGF5TGlzdHMoSW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRp
YWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiBoYW5kbGUpCitSZWZQdHI8SW1hZ2VC
dWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
QWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyhJbWFnZUJ1ZmZlciYgaW5pdGlhbERlc3RpbmF0aW9u
LCBzaXplX3QgaW5pdGlhbE9mZnNldCwgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUmIGhhbmRsZSwg
R1BVUHJvY2Vzc1dha2V1cFJlYXNvbiByZWFzb24pCiB7CiAgICAgYXV0byBkZXN0aW5hdGlvbiA9
IG1ha2VSZWZQdHIoaW5pdGlhbERlc3RpbmF0aW9uKTsKICAgICBhdXRvIGhhbmRsZVByb3RlY3Rv
ciA9IG1ha2VSZWYoaGFuZGxlKTsKQEAgLTE5NSwxMyArMTk5LDEzIEBAIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJB
ZnRlckFwcGx5CiAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIobV9yZW1vdGVS
ZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKCpyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1h
Z2VCdWZmZXIpKTsKICAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24pIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoIW1fcGVuZGluZ1dha2V1cEluZm8pOwotICAgICAgICAgICAgICAgIG1fcGVu
ZGluZ1dha2V1cEluZm8gPSB7e3sgaGFuZGxlLmlkZW50aWZpZXIoKSwgb2Zmc2V0LCAqcmVzdWx0
Lm5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyIH0sIFdURjo6bnVsbG9wdCB9fTsKKyAgICAgICAg
ICAgICAgICBtX3BlbmRpbmdXYWtldXBJbmZvID0ge3t7IGhhbmRsZS5pZGVudGlmaWVyKCksIG9m
ZnNldCwgKnJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgcmVhc29uIH0sIFdURjo6
bnVsbG9wdCB9fTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChyZXN1
bHQucmVhc29uRm9yU3RvcHBpbmcgPT0gRGlzcGxheUxpc3Q6OlN0b3BSZXBsYXlSZWFzb246Ok1p
c3NpbmdDYWNoZWRSZXNvdXJjZSkgewogICAgICAgICAgICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9
IHt7Ci0gICAgICAgICAgICAgICAgeyBoYW5kbGUuaWRlbnRpZmllcigpLCBvZmZzZXQsIGRlc3Rp
bmF0aW9uLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSB9LAorICAgICAgICAgICAgICAg
IHsgaGFuZGxlLmlkZW50aWZpZXIoKSwgb2Zmc2V0LCBkZXN0aW5hdGlvbi0+cmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCksIHJlYXNvbiB9LAogICAgICAgICAgICAgICAgIHJlc3VsdC5taXNz
aW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyCiAgICAgICAgICAgICB9fTsKICAgICAgICAgfQpA
QCAtMjA5LDggKzIxMyw1MSBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseQogICAgICAgICBpZiAo
bV9wZW5kaW5nV2FrZXVwSW5mbykKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmICgh
c2l6ZVRvUmVhZCkKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoIXNpemVUb1JlYWQp
IHsKKyAgICAgICAgICAgIGlmIChyZWFzb24gIT0gR1BVUHJvY2Vzc1dha2V1cFJlYXNvbjo6SXRl
bUNvdW50SHlzdGVyZXNpc0V4Y2VlZGVkKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICBoYW5kbGUuc3RhcnRXYWl0aW5nKCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
ICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlLT53YWl0Rm9yKDMwX3VzKTsKKyNl
bHNlCisgICAgICAgICAgICBzbGVlcCgzMF91cyk7CisjZW5kaWYKKworICAgICAgICAgICAgYXV0
byByZXN1bWVSZWFkaW5nSW5mbyA9IGhhbmRsZS5zdG9wV2FpdGluZygpOworICAgICAgICAgICAg
aWYgKCFyZXN1bWVSZWFkaW5nSW5mbykKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgc2l6ZVRvUmVhZCA9IGhhbmRsZS51bnJlYWRCeXRlcygpOworICAgICAgICAgICAgaWYg
KFVOTElLRUxZKCFzaXplVG9SZWFkKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQg
YSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBuZXdEZXN0aW5hdGlvbklkZW50
aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJU
eXBlPihyZXN1bWVSZWFkaW5nSW5mby0+ZGVzdGluYXRpb24pOworICAgICAgICAgICAgaWYgKFVO
TElLRUxZKCFuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpKSB7CisgICAgICAgICAgICAgICAgLy8g
RklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4K
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9
IG1ha2VSZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKG5ld0Rl
c3RpbmF0aW9uSWRlbnRpZmllcikpOworCisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWRlc3Rp
bmF0aW9uKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNr
IHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgb2Zmc2V0ID0gcmVzdW1lUmVhZGluZ0luZm8tPm9mZnNldDsKKwor
ICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbikgeworICAgICAgICAgICAgICAgIEFTU0VSVCgh
bV9wZW5kaW5nV2FrZXVwSW5mbyk7CisgICAgICAgICAgICAgICAgbV9wZW5kaW5nV2FrZXVwSW5m
byA9IHt7eyBoYW5kbGUuaWRlbnRpZmllcigpLCBvZmZzZXQsIG5ld0Rlc3RpbmF0aW9uSWRlbnRp
ZmllciwgcmVhc29uIH0sIFdURjo6bnVsbG9wdCB9fTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBkZXN0aW5hdGlv
bjsKQEAgLTIzMyw3ICsyODAsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VV
cEFuZEFwcGx5RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lcwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5h
dGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25JbWFn
ZUJ1ZmZlciwgYXJndW1lbnRzLm9mZnNldCwgKmluaXRpYWxIYW5kbGUpOworICAgIGRlc3RpbmF0
aW9uSW1hZ2VCdWZmZXIgPSBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdE
aXNwbGF5TGlzdHMoKmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsIGFyZ3VtZW50cy5vZmZzZXQsICpp
bml0aWFsSGFuZGxlLCBhcmd1bWVudHMucmVhc29uKTsKICAgICBpZiAoIWRlc3RpbmF0aW9uSW1h
Z2VCdWZmZXIpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wZW5kaW5nV2FrZXVwSW5mbyk7
CiAgICAgICAgIHJldHVybjsKQEAgLTI1Miw3ICsyOTksNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1
cE1lcwogCiAgICAgICAgIC8vIE90aGVyd2lzZSwgY29udGludWUgcmVhZGluZyB0aGUgbmV4dCBk
aXNwbGF5IGxpc3QgaXRlbSBidWZmZXIgZnJvbSB0aGUgc3RhcnQuCiAgICAgICAgIGF1dG8gYXJn
dW1lbnRzID0gc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQp
LT5hcmd1bWVudHM7Ci0gICAgICAgIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBuZXh0RGVzdGlu
YXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoKmRlc3RpbmF0aW9uSW1h
Z2VCdWZmZXIsIGFyZ3VtZW50cy5vZmZzZXQsICpuZXh0SGFuZGxlKTsKKyAgICAgICAgZGVzdGlu
YXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWlu
Z0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgYXJndW1lbnRzLm9mZnNldCwg
Km5leHRIYW5kbGUsIGFyZ3VtZW50cy5yZWFzb24pOwogICAgICAgICBpZiAoIWRlc3RpbmF0aW9u
SW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcGVuZGluZ1dha2V1
cEluZm8pOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjcsNyArMzE0LDcgQEAgdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChEaXNwbGF5TGlzdDo6
SXRlbUJ1ZmZlcklkZW4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBpZGVudGlmaWVyLCBT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpLCBkZXN0aW5hdGlvbklkZW50aWZp
ZXIgfSwgV1RGOjpudWxsb3B0IH19OworICAgIG1fcGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaWRl
bnRpZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgZGVzdGluYXRp
b25JZGVudGlmaWVyLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmllZCB9LCBXVEY6
Om51bGxvcHQgfX07CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VE
YXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJbnRSZWN0IHNyY1JlY3Qs
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA0NDM1ODViZGE1ODI0MTNi
ZmE5ZDQ5ZWFjZmVhN2I3ZjBmZGEyYTczLi4wOGFhZTExYTUxNDJjNWY2ZDA2Njg2YmM4ODM3YWRi
OWJjYzAwYjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTQxLDYgKzQxLDEwIEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9jb2NvYS9NYWNoU2Vt
YXBob3JlLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3Bs
YXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OwpAQCAtNTYsMTMgKzYwLDE0IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTsKIGNsYXNzIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZAogICAgIDogcHVi
bGljIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgogICAgICwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0Ns
aWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKCk7CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CkBAIC03OCw3ICs4Myw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldE5leHRJdGVtQnVmZmVyVG9SZWFkKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGRlc3RpbmF0aW9uKTsKIAogcHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cisg
ICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKIAogICAgIE9wdGlvbmFs
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVj
b2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVycmlkZTsKIApA
QCAtOTUsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVwbGF5UmVzdWx0IHN1Ym1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24pOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFw
cGx5aW5nRGlzcGxheUxpc3RzKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGluYXRp
b24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJB
ZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbml0aWFsRGVz
dGluYXRpb24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYs
IEdQVVByb2Nlc3NXYWtldXBSZWFzb24pOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgog
ICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTEzOSw2ICsxNDQsOSBAQCBwcml2YXRlOgogICAgIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7CiAgICAgSGFzaE1hcDxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxEaXNwbGF5TGlz
dFJlYWRlckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwogICAgIE9wdGlvbmFs
PFBlbmRpbmdXYWtldXBJbmZvcm1hdGlvbj4gbV9wZW5kaW5nV2FrZXVwSW5mbzsKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFjaFNlbWFwaG9yZT4gbV9yZXN1bWVE
aXNwbGF5TGlzdFNlbWFwaG9yZTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzV2FrZXVwTWVzc2Fn
ZUFyZ3VtZW50cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc1dha2V1cE1lc3Nh
Z2VBcmd1bWVudHMuaAppbmRleCA3MWI5MGRlMjE4MDA5MWVkMDkxZGE1YzBhYzE1MzQzYzU1Njcy
NmNmLi5jMjljZjI1MTIwMTZjZGEyZGZlNzBkOWUxNDBhOTBmMDNjMTllNjA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1l
bnRzLmgKQEAgLTMyLDEwICszMiwxNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorZW51bSBj
bGFzcyBHUFVQcm9jZXNzV2FrZXVwUmVhc29uIDogdWludDhfdCB7CisgICAgVW5zcGVjaWZpZWQs
CisgICAgSXRlbUNvdW50SHlzdGVyZXNpc0V4Y2VlZGVkCit9OworCiBzdHJ1Y3QgR1BVUHJvY2Vz
c1dha2V1cE1lc3NhZ2VBcmd1bWVudHMgewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySWRlbnRpZmllciBpdGVtQnVmZmVySWRlbnRpZmllcjsKICAgICB1aW50NjRfdCBvZmZz
ZXQgeyAwIH07CiAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyOworICAgIEdQVVByb2Nlc3NXYWtldXBSZWFzb24g
cmVhc29uIHsgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbjo6VW5zcGVjaWZpZWQgfTsKIAogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8R1BVUHJvY2Vzc1dha2V1cE1l
c3NhZ2VBcmd1bWVudHM+IGRlY29kZShEZWNvZGVyJik7CkBAIC00Nyw2ICs1Myw3IEBAIHZvaWQg
R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgaXRlbUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgZW5jb2Rl
ciA8PCBvZmZzZXQ7CiAgICAgZW5jb2RlciA8PCBkZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRp
ZmllcjsKKyAgICBlbmNvZGVyIDw8IHJlYXNvbjsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KQEAgLTY3LDkgKzc0LDI2IEBAIE9wdGlvbmFsPEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJn
dW1lbnRzPiBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50czo6ZGVjCiAgICAgaWYgKCFk
ZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIAotICAgIHJldHVybiB7eyAqaXRlbUJ1ZmZlcklkZW50aWZpZXIsICpvZmZzZXQsICpk
ZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllciB9fTsKKyAgICBPcHRpb25hbDxHUFVQcm9j
ZXNzV2FrZXVwUmVhc29uPiByZWFzb247CisgICAgZGVjb2RlciA+PiByZWFzb247CisgICAgaWYg
KCFyZWFzb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sg
Kml0ZW1CdWZmZXJJZGVudGlmaWVyLCAqb2Zmc2V0LCAqZGVzdGluYXRpb25JbWFnZUJ1ZmZlcklk
ZW50aWZpZXIsICpyZWFzb24gfX07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OkdQVVBy
b2Nlc3NXYWtldXBSZWFzb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAg
ICAgICBXZWJLaXQ6OkdQVVByb2Nlc3NXYWtldXBSZWFzb24sCisgICAgICAgIFdlYktpdDo6R1BV
UHJvY2Vzc1dha2V1cFJlYXNvbjo6VW5zcGVjaWZpZWQsCisgICAgICAgIFdlYktpdDo6R1BVUHJv
Y2Vzc1dha2V1cFJlYXNvbjo6SXRlbUNvdW50SHlzdGVyZXNpc0V4Y2VlZGVkCisgICAgPjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3YjVhNzZhZjI1MjBjOWU3
MjAxMDY4MDhhOTM0ZmQxOTc4OTlkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTAs
MCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorCisjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKKyNpbmNs
dWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgeworICAgIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXI7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKKyNl
bmRpZgorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYpOwor
fTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7Cisg
ICAgZW5jb2RlciA8PCBpZGVudGlmaWVyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGVuY29k
ZXIgPDwgc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7CisjZW5kaWYKK30K
KwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnM+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKworICAgIE9wdGlvbmFsPFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyPiBpZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gaWRlbnRp
ZmllcjsKKyAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBwYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSAqaWRlbnRpZmllcjsKKworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodEZvclJlc3Vt
ZURpc3BsYXlMaXN0U2VtYXBob3JlOworICAgIGRlY29kZXIgPj4gc2VuZFJpZ2h0Rm9yUmVzdW1l
RGlzcGxheUxpc3RTZW1hcGhvcmU7CisgICAgaWYgKCFzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHBhcmFt
ZXRlcnMuc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUgPSBXVEZNb3ZlKCpz
ZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7CisjZW5kaWYKKworICAgIHJl
dHVybiBwYXJhbWV0ZXJzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNw
bGF5TGlzdEhhbmRsZS5oCmluZGV4IGVkOTNkYzI5OTZmMWFiYmE4MmM2NjBhOThhNTAxNGRhOWJi
MDE5MTcuLmQ3ZTE2OTE2NDg1ZDRmODAzMTA2OTg1MGQ0NzY2MWI0NjI4NjAxZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaApAQCAtNTUsNiAr
NTUsMTcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBzaXplX3QgYWR2YW5jZShzaXplX3QgYW1v
dW50KSA9IDA7CiAKKyAgICBlbnVtIGNsYXNzIFdhaXRpbmdTdGF0dXMgOiB1aW50OF90IHsKKyAg
ICAgICAgTm90V2FpdGluZyA9IDAsCisgICAgICAgIFdhaXRpbmcsCisgICAgICAgIFJlc3VtaW5n
CisgICAgfTsKKworICAgIHN0cnVjdCBSZXN1bWVSZWFkaW5nSW5mb3JtYXRpb24geworICAgICAg
ICB1aW50NjRfdCBvZmZzZXQ7CisgICAgICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uOworICAgIH07
CisKIHByb3RlY3RlZDoKICAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1lbW9y
eT4mJiBzaGFyZWRNZW1vcnkpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCkBA
IC02Nyw4ICs3OCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH5EaXNwbGF5TGlzdFNoYXJlZE1l
bW9yeUhlYWRlcigpID0gZGVsZXRlOwogCiAgICAgICAgIEF0b21pYzx1aW50NjRfdD4gdW5yZWFk
Qnl0ZXM7CisgICAgICAgIFJlc3VtZVJlYWRpbmdJbmZvcm1hdGlvbiByZXN1bWVSZWFkaW5nSW5m
bzsKKyAgICAgICAgQXRvbWljPFdhaXRpbmdTdGF0dXM+IHdhaXRpbmdTdGF0dXM7CiAgICAgfTsK
IAorICAgIGNvbnN0IERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyJiBoZWFkZXIoKSBjb25z
dCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBEaXNwbGF5TGlzdFNoYXJlZE1lbW9y
eUhlYWRlcio+KGRhdGEoKSk7IH0KICAgICBEaXNwbGF5TGlzdFNoYXJlZE1lbW9yeUhlYWRlciYg
aGVhZGVyKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8RGlzcGxheUxpc3RTaGFyZWRNZW1v
cnlIZWFkZXIqPihkYXRhKCkpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMzczMDA1ZTliZTgyOGQwMjM3NWJi
NDQxYWMzY2RhOTlmYWE2MjJhLi41N2RkZTM2M2YwYmM1NjNiYTI4ZTVlZjY1NjNkZTczNTM3YjRi
M2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE5NjgsNiArMTk2OCw3IEBACiAJCUY0MkQ2MzQxMjJBMEVGREYwMEQyRkIzQSAvKiBX
ZWJBdXRvY29ycmVjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0MkQ2MzNGMjJBMEVGRDMwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlv
bkRhdGEuaCAqLzsgfTsKIAkJRjQzMEU5NDIyMjQ3MzM1RjAwNUZFMDUzIC8qIFdlYnNpdGVNZXRh
Vmlld3BvcnRQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0MzBFOTQxMjI0NzMyQTkwMDVGRTA1MyAvKiBXZWJzaXRlTWV0YVZpZXdwb3J0UG9s
aWN5LmggKi87IH07CiAJCUY0MzBFOTQ0MjI0NzNERkYwMDVGRTA1MyAvKiBXZWJDb250ZW50TW9k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzMEU5
NDMyMjQ3M0RCODAwNUZFMDUzIC8qIFdlYkNvbnRlbnRNb2RlLmggKi87IH07CisJCUY0MzdDOEQ5
MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM3
QzhEODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFy
YW1ldGVycy5oICovOyB9OwogCQlGNDM4Q0QxQzIyNDE0MjE0MDBERTZEREEgLyogV0tXZWJwYWdl
UHJlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0MzhDRDFCMjI0MTQwQTYwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJRjQzOENEMUYy
MjQxNEQ0MDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzhDRDFFMjI0MTRENDAw
MERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmggKi87IH07CiAJCUY0MzhD
RDIxMjI0MUY2OTUwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc1ByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzhDRDIwMjI0MUY2
OTUwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTc3Niw2ICs1Nzc3LDcgQEAK
IAkJRjQyRDYzNDAyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkF1dG9jb3JyZWN0aW9u
RGF0YS5tbTsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlvbkRhdGEubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0MzBFOTQxMjI0NzMyQTkwMDVGRTA1MyAvKiBXZWJzaXRlTWV0
YVZpZXdwb3J0UG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVNZXRhVmlld3BvcnRQb2xp
Y3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzMEU5NDMyMjQ3M0RCODAwNUZF
MDUzIC8qIFdlYkNvbnRlbnRNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRlbnRNb2RlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MzdDOEQ4MjU5M0I3RTMwMERCOEExQyAv
KiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzOENEMUIyMjQxNDBBNjAwREU2RERBIC8qIFdLV2VicGFn
ZVByZWZlcmVuY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzhDRDFEMjI0MTRBRDYwMERFNkREQSAvKiBX
S1dlYnBhZ2VQcmVmZXJlbmNlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2VicGFnZVBy
ZWZlcmVuY2VzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxRTIyNDE0
RDQwMDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NTEzLDYgKzY1MTUsNyBAQAogCQkJCUUxQ0MxQjhFMTJEN0VBREYwMDYyNTgz
OCAvKiBQcmludEluZm8uaCAqLywKIAkJCQk0NjNGRDQ4MTFFQjk0RUFEMDBBMjk4MkMgLyogUHJv
Y2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi8sCiAJCQkJOUIxMjI5RDAyM0ZGMkE1RTAwOENBNzUx
IC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmggKi8sCisJCQkJRjQzN0M4RDgy
NTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRl
cnMuaCAqLywKIAkJCQk1Q0I3QUZFNjIzQzY4MUIwMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5m
by5oICovLAogCQkJCTVDMDA5OTNCMjQxN0ZCN0UwMEQ1M0MyNSAvKiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5oICovLAogCQkJCTQxMDQ4MkNCMURERDJGQjUwMEYwMDZEMCAvKiBS
VENOZXR3b3JrLmNwcCAqLywKQEAgLTExODQ2LDYgKzExODQ5LDcgQEAKIAkJCQkxQTU3MDRGQzFC
RTE3NTExMDA4NzRBRjEgLyogUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFDMTMzODAxODU5MEFFNDAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUMxMzM4NjE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2Jq
ZWN0UmVnaXN0cnlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQzN0M4RDkyNTkzQjdF
MzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNTk0NzkwMTg3QjNCM0EwMDQzNzg1NyAvKiBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3QTgxODdCNTE3NjAw
NDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNTk0NzlCMTg3QjNCNjAwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUu
aAppbmRleCBmYzdhMjE2NTNhMGViOTY4MTllYjFjMDlhOWZjMzQ0NDgxYTczOTYzLi5mOWY0NGU0
Mjg4YzkwNmFmODdhMjBjN2MwOTc1ZTk5NDVmMGY5ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZS5oCkBAIC00Niw2ICs0NiwxMyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGFkdmFuY2Uo
c2l6ZV90IGFtb3VudCkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJIYW5kbGUgY3JlYXRlSGFuZGxlKCkgY29uc3Q7CiAKKyAgICBib29sIHRyeVRvUmVzdW1l
KFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpSZXN1bWVSZWFkaW5nSW5mb3JtYXRpb24mJiBpbmZv
KQorICAgIHsKKyAgICAgICAgYXV0byYgaGVhZGVyID0gdGhpcy0+aGVhZGVyKCk7CisgICAgICAg
IGhlYWRlci5yZXN1bWVSZWFkaW5nSW5mbyA9IFdURk1vdmUoaW5mbyk7CisgICAgICAgIHJldHVy
biBoZWFkZXIud2FpdGluZ1N0YXR1cy5jb21wYXJlRXhjaGFuZ2VXZWFrKFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjpXYWl0aW5nU3RhdHVzOjpXYWl0aW5nLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZTo6V2FpdGluZ1N0YXR1czo6UmVzdW1pbmcpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBEaXNw
bGF5TGlzdFdyaXRlckhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCiAgICAg
ICAgIDogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoaWRlbnRpZmllciwgV1RGTW92ZShzaGFyZWRN
ZW1vcnkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IGM0
MWUxZmQ1NjczMTU0ZmJmNGUyMDI4ZmJlMjEzZDA4ZDM1OWQ3OGQuLjYxYjRjODI0OTU3NmRlMTI4
YTlhYmVkMDkyN2Y0MWVlNDE2MmJlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCkBAIC02Niw4ICs2NywxMiBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcygp
CiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOwog
ICAgIGNvbm5lY3Rpb24ubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Ci0KLSAg
ICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJp
bmdCYWNrZW5kKG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpLCAwKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5k
KHsKKyAgICAgICAgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAgICAgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZS5jcmVhdGVTZW5kUmln
aHQoKSwKKyNlbmRpZgorICAgIH0pLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OnJlZXN0YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKQpAQCAtMjcyLDI0ICsy
NzcsMzggQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZERhdGEo
Y29uc3QgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW4KIAogICAgIGJvb2wgd2FzRW1wdHkgPSBz
aGFyZWRIYW5kbGUtPmFkdmFuY2UobnVtYmVyT2ZCeXRlcykgPT0gbnVtYmVyT2ZCeXRlczsKICAg
ICBpZiAoIXdhc0VtcHR5IHx8IGRpZENoYW5nZUl0ZW1CdWZmZXIgPT0gRGlzcGxheUxpc3Q6OkRp
ZENoYW5nZUl0ZW1CdWZmZXI6OlllcykgewotICAgICAgICBpZiAobV9kZWZlcnJlZFdha2V1cE1l
c3NhZ2VBcmd1bWVudHMgJiYgIS0tbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGlu
Z1dha2V1cCkKLSAgICAgICAgICAgIHNlbmRXYWtldXBNZXNzYWdlKCpzdGQ6OmV4Y2hhbmdlKG1f
ZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzLCBXVEY6Om51bGxvcHQpKTsKKyAgICAgICAg
aWYgKG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzKSB7CisgICAgICAgICAgICBpZiAo
c2hhcmVkSGFuZGxlLT50cnlUb1Jlc3VtZSh7IG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1l
bnRzLT5vZmZzZXQsIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzLT5kZXN0aW5hdGlv
bkltYWdlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpIH0pKSB7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgICAgICAgICAgICAgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZS5zaWduYWwo
KTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1l
bnRzID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIG1fcmVtYWluaW5nSXRlbXNUb0Fw
cGVuZEJlZm9yZVNlbmRpbmdXYWtldXAgPSAwOworICAgICAgICAgICAgfSBlbHNlIGlmICghLS1t
X3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRCZWZvcmVTZW5kaW5nV2FrZXVwKSB7CisgICAgICAgICAg
ICAgICAgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMtPnJlYXNvbiA9IEdQVVByb2Nl
c3NXYWtldXBSZWFzb246Okl0ZW1Db3VudEh5c3RlcmVzaXNFeGNlZWRlZDsKKyAgICAgICAgICAg
ICAgICBzZW5kV2FrZXVwTWVzc2FnZSgqc3RkOjpleGNoYW5nZShtX2RlZmVycmVkV2FrZXVwTWVz
c2FnZUFyZ3VtZW50cywgV1RGOjpudWxsb3B0KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHNlbmREZWZlcnJlZFdha2V1cE1lc3NhZ2VJ
Zk5lZWRlZCgpOwogCisgICAgYXV0byBvZmZzZXRUb1JlYWQgPSBzaGFyZWRIYW5kbGUtPndyaXRh
YmxlT2Zmc2V0KCkgLSBudW1iZXJPZkJ5dGVzOworICAgIGlmIChzaGFyZWRIYW5kbGUtPnRyeVRv
UmVzdW1lKHsgb2Zmc2V0VG9SZWFkLCBkZXN0aW5hdGlvbkltYWdlQnVmZmVyLnRvVUludDY0KCkg
fSkpIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgbV9yZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZS5zaWduYWwoKTsKKyNlbmRpZgorICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
Ly8gSW5zdGVhZCBvZiBzZW5kaW5nIHRoZSB3YWtldXAgbWVzc2FnZSBpbW1lZGlhdGVseSwgd2Fp
dCBmb3Igc29tZSBhZGRpdGlvbmFsIGRhdGEuIFRoaXMgZ2l2ZXMgdGhlCiAgICAgLy8gd2ViIHBy
b2Nlc3MgYSAiaGVhZCBzdGFydCIsIGRlY3JlYXNpbmcgdGhlIGxpa2VsaWhvb2QgdGhhdCB0aGUg
R1BVIHByb2Nlc3Mgd2lsbCBlbmNvdW50ZXIgZnJlcXVlbnQKICAgICAvLyB3YWtldXBzIHdoZW4g
cHJvY2Vzc2luZyBhIGxhcmdlIGFtb3VudCBvZiBkaXNwbGF5IGxpc3QgaXRlbXMuCiAgICAgY29u
c3RleHByIHVuc2lnbmVkIGl0ZW1Db3VudEh5c3RlcmVzaXNCZWZvcmVTZW5kaW5nV2FrZXVwID0g
NTEyOwogCiAgICAgbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCA9
IGl0ZW1Db3VudEh5c3RlcmVzaXNCZWZvcmVTZW5kaW5nV2FrZXVwOwotICAgIG1fZGVmZXJyZWRX
YWtldXBNZXNzYWdlQXJndW1lbnRzID0ge3sKLSAgICAgICAgaGFuZGxlLmlkZW50aWZpZXIsCi0g
ICAgICAgIHNoYXJlZEhhbmRsZS0+d3JpdGFibGVPZmZzZXQoKSAtIG51bWJlck9mQnl0ZXMsCi0g
ICAgICAgIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIKLSAgICB9fTsKKyAgICBtX2RlZmVycmVkV2Fr
ZXVwTWVzc2FnZUFyZ3VtZW50cyA9IHt7IGhhbmRsZS5pZGVudGlmaWVyLCBvZmZzZXRUb1JlYWQs
IGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgfX07CiB9CiAKIFJlZlB0cjxEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojptb3N0UmVjZW50bHlVc2VkRGlz
cGxheUxpc3RIYW5kbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5k
ZXggZjAzYjMyZjY0YTE5YWI2YTI0YmNhNDFlNGU2YzVkNTQzNmQ4OTJmYS4uNDhmYTA2OWRhYThk
M2NkNmQxMjQ0MmRiMzMwNjAzYzkzNmI5N2I0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRl
IDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKQEAgLTEyMiw2
ICsxMjYsOSBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXI7
CiAgICAgT3B0aW9uYWw8R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHM+IG1fZGVmZXJy
ZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzOwogICAgIHVuc2lnbmVkIG1fcmVtYWluaW5nSXRlbXNU
b0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXAgeyAwIH07CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgTWFjaFNlbWFwaG9yZSBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOworI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417008</attachid>
            <date>2021-01-05 08:33:53 -0800</date>
            <delta_ts>2021-01-05 09:04:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219586-20210105083352.patch</filename>
            <type>text/plain</type>
            <size>41537</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZjN2I2YWU0OGFkODQzM2Q1
YjBmYmNkNmY4OGM3MjRkZmY2NTRjNGUuLjdlYmQyZDZkMDBmOTkyYmE0YzA4NWY3NzhjNzUwNmU5
YTAxMzFmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQwIEBACisyMDIwLTEyLTI4ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IERp
c3BsYXkgTGlzdHNdIEdQVSBwcm9jZXNzIHNob3VsZCBub3QgaW1tZWRpYXRlbHkgc2xlZXAgYWZ0
ZXIgcmVhZGluZyBhbGwgYXZhaWxhYmxlIGRpc3BsYXkgbGlzdCBpdGVtcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NTg2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83MjI3NTQxMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBtZWNoYW5pc20gZm9yIHRoZSBHUFUgcHJv
Y2VzcyB0byBzbGVlcCBmb3IgYSBzaG9ydCBkdXJhdGlvbiAofjMwIG1pY3Jvc2Vjb25kcykgYWZ0
ZXIgaXQgaGFzCisgICAgICAgIGZpbmlzaGVkIHJlYWRpbmcgYWxsIGF2YWlsYWJsZSBkYXRhIGlu
IGl0cyBzaGFyZWQgaXRlbSBidWZmZXI7IGlmIHRoZSB3ZWIgcHJvY2VzcyB3cml0ZXMgYWRkaXRp
b25hbCBkYXRhIHRvIHRoZQorICAgICAgICBpdGVtIGJ1ZmZlciAodGhlcmVieSBidW1waW5nIHRo
ZSB1bnJlYWQgYnl0ZXMgY291bnRlcikgZHVyaW5nIHRoaXMgdGltZSwgd2UgaW1tZWRpYXRlbHkg
cmVzdW1lIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIG5ldyBkaXNwbGF5IGxpc3QgaXRlbXMgaW4g
dGhlIEdQVSBwcm9jZXNzLCByYXRoZXIgdGhhbiB3YWl0IGZvciBhIG5ldyB3YWtldXAgbWVzc2Fn
ZS4KKworICAgICAgICBUaGlzIGFsbG93cyB1cyB0byBhdm9pZCB0aGUgY29zdCBvZiBnb2luZyB0
byBzbGVlcCBqdXN0IHRvIGltbWVkaWF0ZWx5IHdha2UgdXAgaW4gdGhlIEdQVSBwcm9jZXNzLCBp
biB0aGUgY2FzZQorICAgICAgICB3aGVyZSB0aGUgd2ViIHByb2Nlc3MgaXMgd3JpdGluZyBkaXNw
bGF5IGxpc3QgaXRlbXMgYXQgYSB2ZXJ5IGZhc3QgcmF0ZSBhbmQgdGhlIEdQVSBwcm9jZXNzIGp1
c3QgaGFwcGVucyB0bworICAgICAgICBjYXRjaCB1cCAoaS5lLiBhZHZhbmNlIGB1bnJlYWRCeXRl
cygpYCB0byAwKS4KKworICAgICAgICBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tl
bmQpOgorCisgICAgICAgIFJlZmFjdG9yIHRoZSByZW5kZXJpbmcgYmFja2VuZCBjcmVhdGlvbiBt
ZXNzYWdlIGZyb20gdGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgcHJvY2Vzcywgc28gdGhhdCB0
aGUgcmVuZGVyaW5nCisgICAgICAgIGJhY2tlbmQgY3JlYXRpb24gYXJndW1lbnRzIGFyZSBlbmNh
cHN1bGF0ZWQgaW4gYSBzaW5nbGUgc3RydWN0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRp
b25QYXJhbWV0ZXJzLiBUaGlzCisgICAgICAgIHN0cnVjdCBjb250YWlucyB0aGUgcmVuZGVyaW5n
IGJhY2tlbmQgaWRlbnRpZmllciBhbmQsIG9uIENvY29hIHBsYXRmb3JtcywgYSBtYWNoIHNlbmQg
cmlnaHQgdGhhdCBjYW4gYmUgdXNlZCB0bworICAgICAgICBjb25zdHJ1Y3QgdGhlIGNvcnJlc3Bv
bmRpbmcgZGlzcGxheSBsaXN0IHdha2V1cCBzZW1hcGhvcmUgaW4gdGhlIEdQVSBwcm9jZXNzLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaDoK
KyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OnN0YXJ0V2FpdGluZyk6
CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpzdG9wV2FpdGluZyk6
CisKKyAgICAgICAgQWRkIGhlbHBlciBtZXRob2RzIGZvciB0aGUgR1BVIHByb2Nlc3MgdG8gc3Rh
cnQgYW5kIHN0b3Agd2FpdGluZyBmb3IgbmV3IGl0ZW1zLiBTZWUgdGhlIGNhbGwgc2l0ZSBpbgor
ICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIGZvciBtb3JlIGRldGFpbCwgYXMgd2VsbCBh
cyB0aGUgY29tbWVudHMgaW4gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUgYmVsb3cuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToK
KworICAgICAgICBSZWZhY3RvciB0aGlzIGNvZGVwYXRoIHRvIHRha2UgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBpbnN0ZWFkIG9mIGp1c3QgYW4gaWRlbnRpZmllci4K
KworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRp
b25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMpOgorCisgICAgICAgIEluIHRo
ZSBjYXNlIHdoZXJlIHdlIHJlY2VpdmVkIHRoZSB3YWtldXAgbWVzc2FnZSBkdWUgdG8gZXhjZWVk
aW5nIHRoZSBkaXNwbGF5IGxpc3QgaXRlbSBjb3VudCBoeXN0ZXJlc2lzLCB3YWl0CisgICAgICAg
IGZvciBhIHNob3J0IGR1cmF0aW9uIHVzaW5nIHRoZSBzZW1hcGhvcmUgYWZ0ZXIgd2UgaGl0IGFu
IHVucmVhZCBjb3VudCBvZiAwLiBUaGlzIGFsbG93cyB0aGUgd2ViIHByb2Nlc3MgdG8gd3JpdGUK
KyAgICAgICAgbW9yZSBpdGVtcyBhbmQgc2lnbmFsIHRoZSBzZW1hcGhvcmUsIHNvIHRoYXQgd2Ug
Y2FuIHJlc3VtZSByZWFkaW5nIGluIHRoZSBHUFUgcHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJU
b1JlYWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oOgorICAgICAgICAqIFNoYXJlZC9HUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50
cy5oOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50czo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VB
cmd1bWVudHM6OmRlY29kZSk6CisKKyAgICAgICAgUGx1bWIgYSBHUFVQcm9jZXNzV2FrZXVwUmVh
c29uIGVudW0gZmxhZyBvdmVyIHRvIHRoZSBHUFUgcHJvY2VzcywgdmlhIHdha2UtdXAgYXJndW1l
bnRzLiBUaGlzIGZsYWcgaXMgdXNlZCBieQorICAgICAgICB0aGUgR1BVIHByb2Nlc3MgdG8gZGV0
ZXJtaW5lIHdoZXRoZXIgd2Ugc2hvdWxkIGV4cGVjdCBhZGRpdGlvbmFsIGl0ZW1zIHRvIGV2ZW50
dWFsbHkgZW50ZXIgdGhlIHN0cmVhbSwgYW5kCisgICAgICAgIHdoZXRoZXIgd2Ugc2hvdWxkIGVh
Z2VybHkgZ28gdG8gc2xlZXAgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwga25vd24gaXRlbXMuIEluIG90
aGVyIHdvcmRzLCBpZiB0aGUgd2FrZXVwIG1lc3NhZ2UgaXMKKyAgICAgICAgYmVpbmcgc2VudCBh
cyBhIHJlc3VsdCBvZiBmbHVzaGluZyB0aGUgaW1hZ2UgYnVmZmVyLCB3ZSBkb24ndCB3YW50IHRv
IHVubmVjZXNzYXJpbHkgd2FpdCBmb3IgbW9yZSBpdGVtczsKKyAgICAgICAgaG93ZXZlciwgaWYg
dGhlIHdha2V1cCBtZXNzYWdlIGlzIGJlaW5nIHNlbnQgYXMgYSByZXN1bHQgb2YgZXhjZWVkaW5n
IHRoZSAoY3VycmVudGx5KSA1MTItaXRlbSBoeXN0ZXJlc2lzLCB0aGVuCisgICAgICAgIHdlIGNh
biBwcm9iYWJseSBleHBlY3QgbW9yZSBpdGVtcyB0byBzdHJlYW0gaW4sIHNvIGl0J3MgbW9yZSBv
cHRpbWFsIHRvIHdhaXQgYWZ0ZXIgZmluaXNoaW5nIGFsbCBrbm93biBkaXNwbGF5CisgICAgICAg
IGxpc3QgaXRlbXMuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQ
cm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUpOgorCisgICAgICAgIFNlZSBhYm92ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICog
U2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFkZXIgY29uc3QpOgorCisgICAgICAgIEFkZHMgYSBuZXcg
V2FpdGluZ1N0YXR1cyBlbnVtIHR5cGUgaW50ZXJuYWwgdG8gU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUgYW5kIGl0cyBzdWJjbGFzc2VzLCB3aGljaCBpcyB1c2VkIHRvCisgICAgICAgIGNvb3JkaW5h
dGUgdGhlIGFjdCBvZiB3YWl0aW5nIGZvciBuZXcgaXRlbSBkYXRhIGluIHRoZSBHUFUgcHJvY2Vz
cy4gQSBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRsZSBub3cgY29udGFpbnMKKyAgICAgICAgYW4g
YXRvbWljIGB3YWl0aW5nU3RhdHVzYCBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgR1BVIHBy
b2Nlc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2Ygd2FpdGluZyBmb3IgbW9yZSBpdGVtcywKKyAgICAg
ICAgYW5kIGFsc28gd2hldGhlciB0aGUgd2ViIHByb2Nlc3MgaGFzIGFja25vd2xlZGdlZCB0aGUg
ZmFjdCB0aGF0IHRoZSBHUFUgcHJvY2VzcyBpcyB3YWl0aW5nICh0aGVyZWJ5IHB1dHRpbmcgdGhl
CisgICAgICAgIEdQVSBwcm9jZXNzIGluIGEgc3RhdGUgd2hlcmUgaXQgaXMgd2FpdGluZyB0byBy
ZXN1bWUgcHJvY2Vzc2luZykuIEFsb25nIHdpdGggdGhpcyBlbnVtLCB3ZSBhbHNvIGFkZCB0d28g
bmV3CisgICAgICAgIDgtYnl0ZSB2YWx1ZXMgdG8gdGhlIGhlYWRlciBzZWN0aW9uOiBhbiBvZmZz
ZXQgdG8gYmVnaW4gcmVhZGluZyBpdGVtIGRhdGEgYWZ0ZXIgcmVzdW1pbmcsIGFuZCA4IGJ5dGVz
IGZvciBhbgorICAgICAgICBpZGVudGlmaWVyIGluZGljYXRpbmcgdGhlIG5ldyBkZXN0aW5hdGlv
biAoZm9yIHRoZSBwdXJwb3NlcyBvZiBkaXNwbGF5IGxpc3QgcmVuZGVyaW5nLCB0aGlzIGlzIGEK
KyAgICAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB0aG91Z2ggdGhpcyB3aWxsIGJl
IGRpZmZlcmVudCBmb3IgV2ViR0wpLgorCisgICAgICAgICAgICArLS0+IE5vdFdhaXRpbmcgPC0t
KworICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKKyAgICAgICAgICAgIHwgICAgICAg
IHwgICAgICAgICB8IFszYV0KKyAgICAgICAgICAgIHwgWzNiXSAgIHwgWzFdICAgICB8CisgICAg
ICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfAorICAgICAgICBSZXN1bWluZyAgICAgKy0tLS0+
IFdhaXRpbmcKKyAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8
ICAgICAgICBbMl0gICAgICAgfAorICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKKwor
ICAgICAgICBUaGVyZSBhcmUgdGhyZWUgbWFpbiB3YXlzIGluIHdoaWNoIHRoaXMgc3RhdGUgbWFj
aGluZSBtYXkgdHJhbnNpdGlvbiwgbnVtYmVyZWQgWzFdLVszXSBpbiB0aGUgYWJvdmUgZGlhZ3Jh
bS4KKworICAgICAgICBbMV0gV2hlbiB0aGUgR1BVIHByb2Nlc3MgZ29lcyB0byBzbGVlcCwgaXQg
ZW50ZXJzIFdhaXRpbmcgc3RhdGUsIGluZGljYXRpbmcgdGhhdCBpdCBpcyBub3cgd2FpdGluZyBm
b3IKKyAgICAgICAgICAgIGFkZGl0aW9uYWwgaXRlbSBkYXRhLiBUaGlzIGNvcnJlc3BvbmRzIHRv
IHRoZSBjYWxsIHRvIGBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6c3RhcnRXYWl0aW5nYC4KKwor
ICAgICAgICBbMl0gV2hlbiB0aGUgd2ViIHByb2Nlc3MgYnVtcHMgdGhlIHVucmVhZCBjb3VudCBv
ZiBhbiBpdGVtIGJ1ZmZlciwgaWYgaXQgaGFzIGEgcGVuZGluZyB3YWtldXAgbWVzc2FnZSBvciB3
b3VsZAorICAgICAgICAgICAgb3RoZXJ3aXNlIG5lZWQgdG8gc2NoZWR1bGUgYSBwZW5kaW5nIHdh
a2V1cCBtZXNzYWdlLCBzZWUgaWYgd2UgY2FuIGluc3RlYWQgc2ltcGx5IHRlbGwgdGhlIEdQVSBw
cm9jZXNzIHRvCisgICAgICAgICAgICByZXN1bWUgcHJvY2Vzc2luZywgaW5zdGVhZCBvZiBzZW5k
aW5nIGEgd2FrZXVwIG1lc3NhZ2UuIFRoaXMgY29ycmVzcG9uZHMgdG8gYSBjYWxsIHRvIHRoZSBo
ZWxwZXIgbWV0aG9kCisgICAgICAgICAgICBgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OnRyeVRv
UmVzdW1lYC4KKworICAgICAgICBbM10gSWYgdGhlIG1heGltdW0gd2FpdCBkdXJhdGlvbiAofjI0
IG1pY3Jvc2Vjb25kcykgaGFzIHBhc3NlZCAoM2EpIF9vcl8gaWYgdGhlIHdlYiBwcm9jZXNzIGhh
cyB0cmFuc2l0aW9uZWQgdXMKKyAgICAgICAgICAgIGZyb20gV2FpdGluZyB0byBSZXN1bWluZyBz
dGF0ZSAoM2IpLCB0aGVuIHRyYW5zaXRpb24gYmFjayB0byBOb3RXYWl0aW5nLiBJbiBib3RoIHNj
ZW5hcmlvcywgdGhpcyBjb3JyZXNwb25kcworICAgICAgICAgICAgdG8gYSBjYWxsIHRvIGBEaXNw
bGF5TGlzdFJlYWRlckhhbmRsZTo6c3RvcFdhaXRpbmdgLiBJbiB0aGUgY2FzZSB3aGVyZSB3ZSB0
cmFuc2l0aW9uZWQgZnJvbSBSZXN1bWluZyBzdGF0ZSwKKyAgICAgICAgICAgIHdlIGNhbiBpbW1l
ZGlhdGVseSBjb250aW51ZSBwcm9jZXNzaW5nIGRpc3BsYXkgbGlzdCBpdGVtcy4KKworICAgICAg
ICBJbiB0aGUgY2FzZSB3aGVyZSB3ZSBzdWNjZXNzZnVsbHkgcmVzdW1lLCB3ZSdyZSBlc3NlbnRp
YWxseSAicmUtd2FraW5nIiB0aGUgR1BVIHByb2Nlc3Mgd2l0aG91dCB0aGUgb3ZlcmhlYWQgb2YK
KyAgICAgICAgYW4gYWRkaXRpb25hbCBJUEMgbWVzc2FnZSwgdXNpbmcgdGhlIHNhbWUgc2hhcmVk
IGRpc3BsYXkgbGlzdCBoYW5kbGUuIFNpbmNlIHRoaXMgd291bGQndmUgb3RoZXJ3aXNlIGJlZW4g
YQorICAgICAgICBzZXBhcmF0ZSB3YWtldXAgbWVzc2FnZSwgd2UgbmVlZCB0byBiZSBjYXJlZnVs
IHRoYXQgd2UgY29udGludWUgcHJvY2Vzc2luZyBkaXNwbGF5IGxpc3QgaXRlbXMgZnJvbSB0aGUg
Y29ycmVjdAorICAgICAgICBvZmZzZXQgaW50byB0aGUgc2hhcmVkIGRpc3BsYXkgbGlzdCBoYW5k
bGUsIGFuZCB1c2luZyB0aGUgY29ycmVjdCBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXIuIFRoaXMg
aXMgYmVjYXVzZSB0aGUKKyAgICAgICAgd3JpdGFibGUgb2Zmc2V0IG9mIHRoZSBpdGVtIGJ1ZmZl
ciBtYXkgaGF2ZSBiZWVuIHJlc2V0IGluIHRoZSBtaWRkbGUgb2Ygd2FpdGluZyBieSB0aGUgd2Vi
IHByb2Nlc3MsIG9yIHRoZQorICAgICAgICBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXIgbWF5IGhh
dmUgY2hhbmdlZCB3aGlsZSB3YWl0aW5nLiBUbyBoYW5kbGUgdGhlc2Ugc2NlbmFyaW9zLCB3ZSBp
bnRyb2R1Y2UgdGhlCisgICAgICAgIGBSZXN1bWVSZWFkaW5nSW5mb3JtYXRpb25gIHN0cnVjdCwg
d2hpY2ggY29udGFpbnMgYm90aCBvZiB0aGVzZSBwaWVjZXMgb2YgaW5mb3JtYXRpb24uIEFuIGlu
c3RhbmNlIG9mIHRoaXMKKyAgICAgICAgc3RydWN0IGV4aXN0cyBpbiB0aGUgc2hhcmVkIG1lbW9y
eSBoZWFkZXIgc2VjdGlvbjsgdGhpcyBpcyB3cml0dGVuIGJ5IHRoZSB3ZWIgcHJvY2VzcyBpbW1l
ZGlhdGVseSBwcmlvciB0bworICAgICAgICB0cmFuc2l0aW9uaW5nIHRvIFJlc3VtaW5nIHN0YXRl
LCBhbmQgcmVhZCBieSB0aGUgR1BVIHByb2Nlc3Mgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gUmVz
dW1pbmcgdG8gTm90V2FpdGluZy4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0
V3JpdGVySGFuZGxlLmg6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxl
Ojp0cnlUb1Jlc3VtZSk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCBmb3IgdGhlIHdl
YiBwcm9jZXNzIHRvIHRyeSBhbmQgbm90aWZ5IHRoZSBHUFUgcHJvY2VzcyB0aGF0IGl0IHNob3Vs
ZCB0cnkgYW5kIHJlc3VtZQorICAgICAgICBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZy4gU2VlIHRo
ZSBjYWxsIHNpdGUgaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IGZvciBtb3JlIGRldGFp
bCwgYXMgd2VsbCBhcyB0aGUKKyAgICAgICAgY29tbWVudHMgaW4gU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUgYWJvdmUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZERhdGEpOgorCisgICAgICAgIFJh
dGhlciB0aGFuIGFsd2F5cyBzY2hlZHVsZSAob3Igc2VuZCkgYSB3YWtldXAgbWVzc2FnZSBoZXJl
IGluIHRoZSBjYXNlIHdoZXJlIHRoZSB1bnJlYWQgY291bnQgaXMgMCwgc2VlIGlmIHdlCisgICAg
ICAgIGNhbiBpbnN0ZWFkIHRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHN0b3Agd2FpdGluZyBhbmQg
cmVzdW1lIGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nLiBUbyBkbyB0aGlzLCB3ZSB1c2UgdGhlIG5l
dworICAgICAgICBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6dHJ5VG9SZXN1bWUgbWV0aG9kLCBn
aXZpbmcgaXQgdGhlIG5ldyBvZmZzZXQgdG8gYmVnaW4gcmVhZGluZyBpdGVtcyBmcm9tIGFzIHdl
bGwgYXMgdGhlCisgICAgICAgIGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlciB0byB3aGljaCB3ZSBz
aG91bGQgYXBwbHkgZGlzcGxheSBsaXN0IGl0ZW1zLiBJZiB3ZSBzdWNjZXNzZnVsbHkgdGVsbCB0
aGUgR1BVIHByb2Nlc3MgdG8KKyAgICAgICAgcmVzdW1lIHJlYWRpbmcsIHRoZW4gd2UgY2FuIGNs
ZWFyIG91dCAob3IgYXZvaWQgc3RvcmluZykgd2FrZXVwIG1lc3NhZ2UgYXJndW1lbnRzIGFuZCBh
dm9pZCBzZW5kaW5nIGFuIElQQworICAgICAgICB3YWtldXAgbWVzc2FnZS4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgor
CiAyMDIxLTAxLTA0ICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgdXNlci12aXNpYmxlIGNvcHlyaWdodCBzdHJpbmdzIHRvIGluY2x1ZGUgMjAyMQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCmluZGV4IDVjNGNhMjVkNGRhYTdkNTgxMzExNzBjOTcyMDNmNDA2ZWJiMWRiYTYuLjQx
YWUwYTEzMTQ4YWE2YTZjYzRiYmI4NmI4OWJiYWU2NjQwMWExNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAg
LTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oIgog
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNZXNzYWdlcy5oIgpAQCAtMjg4LDEwICsyODksMTAgQEAgUmVtb3RlQXVkaW9TZXNz
aW9uUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmF1ZGlvU2Vzc2lvblByb3h5KCkK
IH0KICNlbmRpZgogCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmlu
Z0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRN
YXAuZW5zdXJlKHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJl
dHVybiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIHJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZE1hcC5lbnN1cmUocGFyYW1ldGVycy5pZGVudGlmaWVyLCBbJl0oKSB7CisgICAgICAgIHJl
dHVybiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocGFyYW1l
dGVycykpOwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA0ZjJkNDRmZmI1NTBhYTZkZTgxMGI5YmY5NTI2
MjA3ZDU3OWRiNDc5Li4xZjc4NTU1ZTJiNzM5OWU3MjBiNTRkOWNmYWVjYzMzOTg5NmE3MmFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKQEAgLTY1LDYgKzY1LDcgQEAgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w7
CiBjbGFzcyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogY2xhc3MgVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKIHN0cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25m
aWd1cmF0aW9uOworc3RydWN0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRl
cnM7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICA6IHB1YmxpYyBSZWZD
b3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+CkBAIC0xMjQsNyArMTI1LDcgQEAgcHJp
dmF0ZToKICNlbmRpZgogI2VuZGlmCiAKLSAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQo
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFj
a2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZv
aWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwog
CiAjaWYgRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA4ZmMw
ZWZhYzkzMjE4MjIyYmIwYmM3YzIxYWFiOTE5ZTUzYTk3MzRlLi4wY2JjNWQ4Nzk4M2U2NjZlNDhl
ODM5YTY0NjQ4OTg3OTUwYTM5MmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7Ci0gICAgdm9pZCBD
cmVhdGVSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCisgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdCYWNr
ZW5kKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRl
cnMgcGFyYW1ldGVycykKICAgICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAj
aWYgRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6
OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxp
c3RSZWFkZXJIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNw
bGF5TGlzdFJlYWRlckhhbmRsZS5oCmluZGV4IGNiNzIyMzk3Njk2ZGM5ZTBiMDZlODljYWMyNWNl
NzJjYjlhNTc2ZTEuLmJlOGM1NWY4OGM1ZGI0Y2M1YmNhYzQyNDZhMmE2MTUzY2YyZDU2N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJl
YWRlckhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNw
bGF5TGlzdFJlYWRlckhhbmRsZS5oCkBAIC00MSw2ICs0MSwyMCBAQCBwdWJsaWM6CiAgICAgc2l6
ZV90IGFkdmFuY2Uoc2l6ZV90IGFtb3VudCkgb3ZlcnJpZGU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gZGlzcGxheUxpc3RGb3JSZWFkaW5n
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBjYXBhY2l0eSwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJSZWFkaW5nQ2xpZW50JikgY29uc3Q7CiAKKyAgICB2b2lkIHN0YXJ0V2FpdGluZygp
CisgICAgeworICAgICAgICBoZWFkZXIoKS53YWl0aW5nU3RhdHVzLnN0b3JlKFNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlOjpXYWl0aW5nU3RhdHVzOjpXYWl0aW5nKTsKKyAgICB9CisKKyAgICBPcHRp
b25hbDxTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6UmVzdW1lUmVhZGluZ0luZm9ybWF0aW9uPiBz
dG9wV2FpdGluZygpCisgICAgeworICAgICAgICBhdXRvJiBoZWFkZXIgPSB0aGlzLT5oZWFkZXIo
KTsKKyAgICAgICAgaWYgKGhlYWRlci53YWl0aW5nU3RhdHVzLmV4Y2hhbmdlKFNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlOjpXYWl0aW5nU3RhdHVzOjpOb3RXYWl0aW5nKSA9PSBTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1czo6UmVzdW1pbmcpCisgICAgICAgICAgICByZXR1cm4g
eyBoZWFkZXIucmVzdW1lUmVhZGluZ0luZm8gfTsKKworICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIH0KKwogcHJpdmF0ZToKICAgICBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZShXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFNo
YXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCiAgICAgICAgIDogU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUoaWRlbnRpZmllciwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwCmluZGV4IGVmZjY1ZWZjZGE0NWYxNGQxNGY2ODgzZmFmODIxMjUxNGJhZTgxNjQuLmM2
YTQ4YzQ3OTE1ZmMxZjg1ZmE3ZjU0NzlhNTk2MjZhYzNiOTMwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdl
QnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CkBAIC00MSwx
NyArNDIsMjAgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlUmVuZGVyaW5nQmFja2VuZD4obmV3IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcywgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpKTsKKyAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+KG5ldyBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVy
cykpKTsKIH0KIAotUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKK1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcykp
Ci0gICAgLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKHJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKQorICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcihwYXJhbWV0ZXJzLmlk
ZW50aWZpZXIpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBtX3Jlc3VtZURpc3BsYXlMaXN0
U2VtYXBob3JlKG1ha2VVbmlxdWU8TWFjaFNlbWFwaG9yZT4oV1RGTW92ZShwYXJhbWV0ZXJzLnNl
bmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkpCisjZW5kaWYKIHsKICAgICBp
ZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2Fn
ZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwogfQogCiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpCkBAIC0xNTMsNyArMTU3LDcgQEAgRGlz
cGxheUxpc3Q6OlJlcGxheVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQoY29u
c3QgRGlzcGxheUxpc3Q6OkRpc3AKICAgICB9LnJlcGxheSgpOwogfQogCi1SZWZQdHI8SW1hZ2VC
dWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
QWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyhJbWFnZUJ1ZmZlciYgaW5pdGlhbERlc3RpbmF0aW9u
LCBzaXplX3QgaW5pdGlhbE9mZnNldCwgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUmIGhhbmRsZSkK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0
aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKEltYWdlQnVmZmVyJiBpbml0
aWFsRGVzdGluYXRpb24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZSYgaGFuZGxlLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uIHJlYXNvbikKIHsKICAgICBhdXRv
IGRlc3RpbmF0aW9uID0gbWFrZVJlZlB0cihpbml0aWFsRGVzdGluYXRpb24pOwogICAgIGF1dG8g
aGFuZGxlUHJvdGVjdG9yID0gbWFrZVJlZihoYW5kbGUpOwpAQCAtMTk1LDEzICsxOTksMTMgQEAg
UmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRp
b25JbWFnZUJ1ZmZlckFmdGVyQXBwbHkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gbWFrZVJl
ZlB0cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoKnJlc3VsdC5uZXh0
RGVzdGluYXRpb25JbWFnZUJ1ZmZlcikpOwogICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbikg
ewogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nV2FrZXVwSW5mbyk7Ci0gICAgICAg
ICAgICAgICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBoYW5kbGUuaWRlbnRpZmllcigpLCBv
ZmZzZXQsICpyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgfSwgV1RGOjpudWxsb3B0
IH19OworICAgICAgICAgICAgICAgIG1fcGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaGFuZGxlLmlk
ZW50aWZpZXIoKSwgb2Zmc2V0LCAqcmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBy
ZWFzb24gfSwgV1RGOjpudWxsb3B0IH19OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9PSBEaXNwbGF5TGlzdDo6U3RvcFJl
cGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlKSB7CiAgICAgICAgICAgICBtX3BlbmRp
bmdXYWtldXBJbmZvID0ge3sKLSAgICAgICAgICAgICAgICB7IGhhbmRsZS5pZGVudGlmaWVyKCks
IG9mZnNldCwgZGVzdGluYXRpb24tPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIH0sCisg
ICAgICAgICAgICAgICAgeyBoYW5kbGUuaWRlbnRpZmllcigpLCBvZmZzZXQsIGRlc3RpbmF0aW9u
LT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgcmVhc29uIH0sCiAgICAgICAgICAgICAg
ICAgcmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIKICAgICAgICAgICAgIH19
OwogICAgICAgICB9CkBAIC0yMDksOCArMjEzLDUxIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5
CiAgICAgICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZvKQogICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgaWYgKCFzaXplVG9SZWFkKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlm
ICghc2l6ZVRvUmVhZCkgeworICAgICAgICAgICAgaWYgKHJlYXNvbiAhPSBHUFVQcm9jZXNzV2Fr
ZXVwUmVhc29uOjpJdGVtQ291bnRIeXN0ZXJlc2lzRXhjZWVkZWQpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgIGhhbmRsZS5zdGFydFdhaXRpbmcoKTsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICAgICAgICAgIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUtPndhaXRG
b3IoMzBfdXMpOworI2Vsc2UKKyAgICAgICAgICAgIHNsZWVwKDMwX3VzKTsKKyNlbmRpZgorCisg
ICAgICAgICAgICBhdXRvIHJlc3VtZVJlYWRpbmdJbmZvID0gaGFuZGxlLnN0b3BXYWl0aW5nKCk7
CisgICAgICAgICAgICBpZiAoIXJlc3VtZVJlYWRpbmdJbmZvKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBzaXplVG9SZWFkID0gaGFuZGxlLnVucmVhZEJ5dGVzKCk7Cisg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXNpemVUb1JlYWQpKSB7CisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vz
cy4KKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvIG5ld0Rl
c3RpbmF0aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllclR5cGU+KHJlc3VtZVJlYWRpbmdJbmZvLT5kZXN0aW5hdGlvbik7CisgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoIW5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikpIHsKKyAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhl
IHdlYiBwcm9jZXNzLgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGRlc3RpbmF0aW9uID0gbWFrZVJlZlB0cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1h
Z2VCdWZmZXIobmV3RGVzdGluYXRpb25JZGVudGlmaWVyKSk7CisKKyAgICAgICAgICAgIGlmIChV
TkxJS0VMWSghZGVzdGluYXRpb24pKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBh
IG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBvZmZzZXQgPSByZXN1bWVSZWFkaW5nSW5m
by0+b2Zmc2V0OworCisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKCFtX3BlbmRpbmdXYWtldXBJbmZvKTsKKyAgICAgICAgICAgICAgICBtX3Bl
bmRpbmdXYWtldXBJbmZvID0ge3t7IGhhbmRsZS5pZGVudGlmaWVyKCksIG9mZnNldCwgbmV3RGVz
dGluYXRpb25JZGVudGlmaWVyLCByZWFzb24gfSwgV1RGOjpudWxsb3B0IH19OworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0
dXJuIGRlc3RpbmF0aW9uOwpAQCAtMjMzLDcgKzI4MCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQcm9jZXNzV2FrZXVw
TWVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkZXN0aW5hdGlvbkltYWdlQnVmZmVy
ID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKCpk
ZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBhcmd1bWVudHMub2Zmc2V0LCAqaW5pdGlhbEhhbmRsZSk7
CisgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
QWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgYXJndW1l
bnRzLm9mZnNldCwgKmluaXRpYWxIYW5kbGUsIGFyZ3VtZW50cy5yZWFzb24pOwogICAgIGlmICgh
ZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3BlbmRp
bmdXYWtldXBJbmZvKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjUyLDcgKzI5OSw3IEBAIHZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBH
UFVQcm9jZXNzV2FrZXVwTWVzCiAKICAgICAgICAgLy8gT3RoZXJ3aXNlLCBjb250aW51ZSByZWFk
aW5nIHRoZSBuZXh0IGRpc3BsYXkgbGlzdCBpdGVtIGJ1ZmZlciBmcm9tIHRoZSBzdGFydC4KICAg
ICAgICAgYXV0byBhcmd1bWVudHMgPSBzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8s
IFdURjo6bnVsbG9wdCktPmFyZ3VtZW50czsKLSAgICAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZl
ciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygq
ZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgYXJndW1lbnRzLm9mZnNldCwgKm5leHRIYW5kbGUpOwor
ICAgICAgICBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBhcmd1
bWVudHMub2Zmc2V0LCAqbmV4dEhhbmRsZSwgYXJndW1lbnRzLnJlYXNvbik7CiAgICAgICAgIGlm
ICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV9wZW5kaW5nV2FrZXVwSW5mbyk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI2Nyw3ICszMTQs
NyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFk
KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3BlbmRpbmdXYWtldXBJbmZvID0ge3t7
IGlkZW50aWZpZXIsIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFkZXJTaXplKCksIGRlc3Rp
bmF0aW9uSWRlbnRpZmllciB9LCBXVEY6Om51bGxvcHQgfX07CisgICAgbV9wZW5kaW5nV2FrZXVw
SW5mbyA9IHt7eyBpZGVudGlmaWVyLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6
ZSgpLCBkZXN0aW5hdGlvbklkZW50aWZpZXIsIEdQVVByb2Nlc3NXYWtldXBSZWFzb246OlVuc3Bl
Y2lmaWVkIH0sIFdURjo6bnVsbG9wdCB9fTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIElu
dFJlY3Qgc3JjUmVjdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVy
ZW5jZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDQ0
MzU4NWJkYTU4MjQxM2JmYTlkNDllYWNmZWE3YjdmMGZkYTJhNzMuLjA4YWFlMTFhNTE0MmM1ZjZk
MDY2ODZiYzg4MzdhZGI5YmNjMDBiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNDEsNiAr
NDEsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3Rm
L2NvY29hL01hY2hTZW1hcGhvcmUuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBu
YW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CkBAIC01NiwxMyArNjAs
MTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIERpc3BsYXlMaXN0UmVhZGVySGFuZGxl
OwogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK3N0cnVjdCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kCiAgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJSZWFkaW5nQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZp
cnR1YWwgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKTsKIAogICAgIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKQEAgLTc4LDcgKzgz
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb24pOwogCiBwcml2YXRlOgotICAgIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwog
CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5V
U0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24p
IG92ZXJyaWRlOwogCkBAIC05NSw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlv
bik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGlu
aXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVy
SGFuZGxlJik7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGluYXRp
b25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0
UmVhZGVySGFuZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7CiAKICAgICAvLyBJUEM6Ok1l
c3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTM5LDYgKzE0NCw5IEBAIHByaXZhdGU6CiAgICAgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsKICAg
ICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgUmVm
UHRyPERpc3BsYXlMaXN0UmVhZGVySGFuZGxlPj4gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXM7
CiAgICAgT3B0aW9uYWw8UGVuZGluZ1dha2V1cEluZm9ybWF0aW9uPiBtX3BlbmRpbmdXYWtldXBJ
bmZvOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxNYWNoU2VtYXBo
b3JlPiBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOworI2VuZGlmCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nl
c3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9j
ZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oCmluZGV4IDcxYjkwZGUyMTgwMDkxZWQwOTFkYTVj
MGFjMTUzNDNjNTU2NzI2Y2YuLmMyOWNmMjUxMjAxNmNkYTJkZmU3MGQ5ZTE0MGE5MGYwM2MxOWU2
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NXYWtldXBNZXNz
YWdlQXJndW1lbnRzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc1dha2V1
cE1lc3NhZ2VBcmd1bWVudHMuaApAQCAtMzIsMTAgKzMyLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitlbnVtIGNsYXNzIEdQVVByb2Nlc3NXYWtldXBSZWFzb24gOiB1aW50OF90IHsKKyAg
ICBVbnNwZWNpZmllZCwKKyAgICBJdGVtQ291bnRIeXN0ZXJlc2lzRXhjZWVkZWQKK307CisKIHN0
cnVjdCBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyB7CiAgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGl0ZW1CdWZmZXJJZGVudGlmaWVyOwogICAg
IHVpbnQ2NF90IG9mZnNldCB7IDAgfTsKICAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgZGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXI7CisgICAgR1BVUHJvY2Vz
c1dha2V1cFJlYXNvbiByZWFzb24geyBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmll
ZCB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxHUFVQ
cm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cz4gZGVjb2RlKERlY29kZXImKTsKQEAgLTQ3LDYg
KzUzLDcgQEAgdm9pZCBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50czo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBpdGVtQnVmZmVySWRlbnRpZmll
cjsKICAgICBlbmNvZGVyIDw8IG9mZnNldDsKICAgICBlbmNvZGVyIDw8IGRlc3RpbmF0aW9uSW1h
Z2VCdWZmZXJJZGVudGlmaWVyOworICAgIGVuY29kZXIgPDwgcmVhc29uOwogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgpAQCAtNjcsOSArNzQsMjYgQEAgT3B0aW9uYWw8R1BVUHJvY2Vzc1dh
a2V1cE1lc3NhZ2VBcmd1bWVudHM+IEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzOjpk
ZWMKICAgICBpZiAoIWRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7ICppdGVtQnVmZmVySWRlbnRpZmll
ciwgKm9mZnNldCwgKmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyIH19OworICAgIE9w
dGlvbmFsPEdQVVByb2Nlc3NXYWtldXBSZWFzb24+IHJlYXNvbjsKKyAgICBkZWNvZGVyID4+IHJl
YXNvbjsKKyAgICBpZiAoIXJlYXNvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiB7eyAqaXRlbUJ1ZmZlcklkZW50aWZpZXIsICpvZmZzZXQsICpkZXN0aW5hdGlv
bkltYWdlQnVmZmVySWRlbnRpZmllciwgKnJlYXNvbiB9fTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYktpdDo6R1BVUHJvY2Vzc1dha2V1cFJlYXNvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6R1BVUHJvY2Vzc1dha2V1cFJlYXNvbiwKKyAgICAg
ICAgV2ViS2l0OjpHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmllZCwKKyAgICAgICAg
V2ViS2l0OjpHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpJdGVtQ291bnRIeXN0ZXJlc2lzRXhjZWVk
ZWQKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdi
NWE3NmFmMjUyMGM5ZTcyMDEwNjgwOGE5MzRmZDE5Nzg5OWQyNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFt
ZXRlcnMuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyB7
CisgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0
U2VtYXBob3JlOworI2VuZGlmCisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM+IGRlY29k
ZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgZW5jb2RlciA8PCBzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9y
ZTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycz4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworCisgICAg
T3B0aW9uYWw8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI+IGlkZW50aWZpZXI7CisgICAgZGVj
b2RlciA+PiBpZGVudGlmaWVyOworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHBhcmFtZXRlcnMuaWRlbnRpZmllciA9ICppZGVudGlmaWVy
OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2Vu
ZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7CisgICAgZGVjb2RlciA+PiBzZW5k
UmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKKyAgICBpZiAoIXNlbmRSaWdodEZv
clJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcGFyYW1ldGVycy5zZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9y
ZSA9IFdURk1vdmUoKnNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKTsKKyNl
bmRpZgorCisgICAgcmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKaW5kZXggZWQ5M2RjMjk5NmYxYWJiYTgyYzY2
MGE5OGE1MDE0ZGE5YmIwMTkxNy4uZDdlMTY5MTY0ODVkNGY4MDMxMDY5ODUwZDQ3NjYxYjQ2Mjg2
MDFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZS5oCkBAIC01NSw2ICs1NSwxNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHNpemVfdCBhZHZh
bmNlKHNpemVfdCBhbW91bnQpID0gMDsKIAorICAgIGVudW0gY2xhc3MgV2FpdGluZ1N0YXR1cyA6
IHVpbnQ4X3QgeworICAgICAgICBOb3RXYWl0aW5nID0gMCwKKyAgICAgICAgV2FpdGluZywKKyAg
ICAgICAgUmVzdW1pbmcKKyAgICB9OworCisgICAgc3RydWN0IFJlc3VtZVJlYWRpbmdJbmZvcm1h
dGlvbiB7CisgICAgICAgIHVpbnQ2NF90IG9mZnNldDsKKyAgICAgICAgdWludDY0X3QgZGVzdGlu
YXRpb247CisgICAgfTsKKwogcHJvdGVjdGVkOgogICAgIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBS
ZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKICAgICAgICAgOiBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKQEAgLTY3LDggKzc4LDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgfkRpc3Bs
YXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyKCkgPSBkZWxldGU7CiAKICAgICAgICAgQXRvbWljPHVp
bnQ2NF90PiB1bnJlYWRCeXRlczsKKyAgICAgICAgUmVzdW1lUmVhZGluZ0luZm9ybWF0aW9uIHJl
c3VtZVJlYWRpbmdJbmZvOworICAgICAgICBBdG9taWM8V2FpdGluZ1N0YXR1cz4gd2FpdGluZ1N0
YXR1czsKICAgICB9OwogCisgICAgY29uc3QgRGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXIm
IGhlYWRlcigpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IERpc3BsYXlM
aXN0U2hhcmVkTWVtb3J5SGVhZGVyKj4oZGF0YSgpKTsgfQogICAgIERpc3BsYXlMaXN0U2hhcmVk
TWVtb3J5SGVhZGVyJiBoZWFkZXIoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxEaXNwbGF5
TGlzdFNoYXJlZE1lbW9yeUhlYWRlcio+KGRhdGEoKSk7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIzNzMwMDVl
OWJlODI4ZDAyMzc1YmI0NDFhYzNjZGE5OWZhYTYyMmEuLjU3ZGRlMzYzZjBiYzU2M2JhMjhlNWVm
NjU2M2RlNzM1MzdiNGIzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTk2OCw2ICsxOTY4LDcgQEAKIAkJRjQyRDYzNDEyMkEwRUZE
RjAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyRDYzM0YyMkEwRUZEMzAwRDJGQjNBIC8qIFdl
YkF1dG9jb3JyZWN0aW9uRGF0YS5oICovOyB9OwogCQlGNDMwRTk0MjIyNDczMzVGMDA1RkUwNTMg
LyogV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8qIFdlYnNpdGVN
ZXRhVmlld3BvcnRQb2xpY3kuaCAqLzsgfTsKIAkJRjQzMEU5NDQyMjQ3M0RGRjAwNUZFMDUzIC8q
IFdlYkNvbnRlbnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDMwRTk0MzIyNDczREI4MDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCAqLzsg
fTsKKwkJRjQzN0M4RDkyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0MzdDOEQ4MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCUY0MzhDRDFDMjI0MTQyMTQwMERFNkRE
QSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQzOENEMUIyMjQxNDBBNjAwREU2RERBIC8qIFdLV2VicGFnZVBy
ZWZlcmVuY2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9
OwogCQlGNDM4Q0QxRjIyNDE0RDQwMDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQz
OENEMUUyMjQxNEQ0MDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaCAq
LzsgfTsKIAkJRjQzOENEMjEyMjQxRjY5NTAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2Vz
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQzOENEMjAyMjQxRjY5NTAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01Nzc2
LDYgKzU3NzcsNyBAQAogCQlGNDJENjM0MDIyQTBFRkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJl
Y3Rpb25EYXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2Vi
QXV0b2NvcnJlY3Rpb25EYXRhLm1tOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUz
IC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZU1l
dGFWaWV3cG9ydFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMwRTk0
MzIyNDczREI4MDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
Q29udGVudE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQzN0M4RDgyNTkz
QjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxQjIyNDE0MEE2MDBERTZE
REEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJwYWdlUHJl
ZmVyZW5jZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzOENEMUQyMjQxNEFE
NjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV0tXZWJwYWdlUHJlZmVyZW5jZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0MzhDRDFFMjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1MTMsNiArNjUxNSw3IEBACiAJCQkJRTFDQzFCOEUx
MkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oICovLAogCQkJCTQ2M0ZENDgxMUVCOTRFQUQw
MEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLywKIAkJCQk5QjEyMjlEMDIz
RkYyQTVFMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCAqLywK
KwkJCQlGNDM3QzhEODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycy5oICovLAogCQkJCTVDQjdBRkU2MjNDNjgxQjAwMEU0OUNGMyAvKiBS
ZXNvdXJjZUxvYWRJbmZvLmggKi8sCiAJCQkJNUMwMDk5M0IyNDE3RkI3RTAwRDUzQzI1IC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNDEwNDgyQ0IxREREMkZC
NTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwICovLApAQCAtMTE4NDYsNiArMTE4NDksNyBAQAog
CQkJCTFBNTcwNEZDMUJFMTc1MTEwMDg3NEFGMSAvKiBSZW1vdGVPYmplY3RJbnZvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUMxMzM4MDE4NTkwQUU0MDBGM0VDMDUgLyogUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzEzMzg2MTg1OTBDNDYwMEYzRUMw
NSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
NDM3QzhEOTI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3OTAxODdCM0IzQTAwNDM3ODU3
IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU5
NDdBODE4N0I1MTc2MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3OUIxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhh
bmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlz
dFdyaXRlckhhbmRsZS5oCmluZGV4IGZjN2EyMTY1M2EwZWI5NjgxOWViMWMwOWE5ZmMzNDQ0ODFh
NzM5NjMuLmY5ZjQ0ZTQyODhjOTA2YWY4N2EyMGM3YzA5NzVlOTk0NWYwZjllMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0
ZXJIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rp
c3BsYXlMaXN0V3JpdGVySGFuZGxlLmgKQEAgLTQ2LDYgKzQ2LDEzIEBAIHB1YmxpYzoKICAgICBz
aXplX3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVIYW5kbGUoKSBjb25zdDsKIAorICAgIGJv
b2wgdHJ5VG9SZXN1bWUoU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OlJlc3VtZVJlYWRpbmdJbmZv
cm1hdGlvbiYmIGluZm8pCisgICAgeworICAgICAgICBhdXRvJiBoZWFkZXIgPSB0aGlzLT5oZWFk
ZXIoKTsKKyAgICAgICAgaGVhZGVyLnJlc3VtZVJlYWRpbmdJbmZvID0gV1RGTW92ZShpbmZvKTsK
KyAgICAgICAgcmV0dXJuIGhlYWRlci53YWl0aW5nU3RhdHVzLmNvbXBhcmVFeGNoYW5nZVdlYWso
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OldhaXRpbmdTdGF0dXM6OldhaXRpbmcsIFNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlOjpXYWl0aW5nU3RhdHVzOjpSZXN1bWluZyk7CisgICAgfQorCiBwcml2
YXRlOgogICAgIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJl
ZE1lbW9yeSkKICAgICAgICAgOiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShpZGVudGlmaWVyLCBX
VEZNb3ZlKHNoYXJlZE1lbW9yeSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHAKaW5kZXggYzQxZTFmZDU2NzMxNTRmYmY0ZTIwMjhmYmUyMTNkMDhkMzU5ZDc4ZC4uNjFi
NGM4MjQ5NTc2ZGUxMjhhOWFiZWQwOTI3ZjQxZWU0MTYyYmU2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIKKyNpbmNsdWRl
ICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKQEAg
LTY2LDggKzY3LDEyIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0
VG9HUFVQcm9jZXNzKCkKICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmFkZENs
aWVudCgqdGhpcyk7CiAgICAgY29ubmVjdGlvbi5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCks
ICp0aGlzKTsKLQotICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciksIDAp
OworICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJl
bmRlcmluZ0JhY2tlbmQoeworICAgICAgICBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLAor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
LmNyZWF0ZVNlbmRSaWdodCgpLAorI2VuZGlmCisgICAgfSksIDApOwogfQogCiB2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29ubmVjdGlvbigp
CkBAIC0yNzIsMjQgKzI3NywzOCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
ZGlkQXBwZW5kRGF0YShjb25zdCBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbgogCiAgICAgYm9v
bCB3YXNFbXB0eSA9IHNoYXJlZEhhbmRsZS0+YWR2YW5jZShudW1iZXJPZkJ5dGVzKSA9PSBudW1i
ZXJPZkJ5dGVzOwogICAgIGlmICghd2FzRW1wdHkgfHwgZGlkQ2hhbmdlSXRlbUJ1ZmZlciA9PSBE
aXNwbGF5TGlzdDo6RGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6WWVzKSB7Ci0gICAgICAgIGlmIChtX2Rl
ZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyAmJiAhLS1tX3JlbWFpbmluZ0l0ZW1zVG9BcHBl
bmRCZWZvcmVTZW5kaW5nV2FrZXVwKQotICAgICAgICAgICAgc2VuZFdha2V1cE1lc3NhZ2UoKnN0
ZDo6ZXhjaGFuZ2UobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMsIFdURjo6bnVsbG9w
dCkpOworICAgICAgICBpZiAobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMpIHsKKyAg
ICAgICAgICAgIGlmIChzaGFyZWRIYW5kbGUtPnRyeVRvUmVzdW1lKHsgbV9kZWZlcnJlZFdha2V1
cE1lc3NhZ2VBcmd1bWVudHMtPm9mZnNldCwgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVu
dHMtPmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCkgfSkpIHsKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlLnNpZ25hbCgpOworI2VuZGlmCisgICAgICAgICAgICAgICAgbV9kZWZlcnJlZFdha2V1
cE1lc3NhZ2VBcmd1bWVudHMgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgbV9yZW1h
aW5pbmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCA9IDA7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKCEtLW1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXAp
IHsKKyAgICAgICAgICAgICAgICBtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy0+cmVh
c29uID0gR1BVUHJvY2Vzc1dha2V1cFJlYXNvbjo6SXRlbUNvdW50SHlzdGVyZXNpc0V4Y2VlZGVk
OworICAgICAgICAgICAgICAgIHNlbmRXYWtldXBNZXNzYWdlKCpzdGQ6OmV4Y2hhbmdlKG1fZGVm
ZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzLCBXVEY6Om51bGxvcHQpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgc2VuZERlZmVycmVk
V2FrZXVwTWVzc2FnZUlmTmVlZGVkKCk7CiAKKyAgICBhdXRvIG9mZnNldFRvUmVhZCA9IHNoYXJl
ZEhhbmRsZS0+d3JpdGFibGVPZmZzZXQoKSAtIG51bWJlck9mQnl0ZXM7CisgICAgaWYgKHNoYXJl
ZEhhbmRsZS0+dHJ5VG9SZXN1bWUoeyBvZmZzZXRUb1JlYWQsIGRlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXIudG9VSW50NjQoKSB9KSkgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBtX3Jlc3Vt
ZURpc3BsYXlMaXN0U2VtYXBob3JlLnNpZ25hbCgpOworI2VuZGlmCisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICAvLyBJbnN0ZWFkIG9mIHNlbmRpbmcgdGhlIHdha2V1cCBtZXNzYWdlIGlt
bWVkaWF0ZWx5LCB3YWl0IGZvciBzb21lIGFkZGl0aW9uYWwgZGF0YS4gVGhpcyBnaXZlcyB0aGUK
ICAgICAvLyB3ZWIgcHJvY2VzcyBhICJoZWFkIHN0YXJ0IiwgZGVjcmVhc2luZyB0aGUgbGlrZWxp
aG9vZCB0aGF0IHRoZSBHUFUgcHJvY2VzcyB3aWxsIGVuY291bnRlciBmcmVxdWVudAogICAgIC8v
IHdha2V1cHMgd2hlbiBwcm9jZXNzaW5nIGEgbGFyZ2UgYW1vdW50IG9mIGRpc3BsYXkgbGlzdCBp
dGVtcy4KICAgICBjb25zdGV4cHIgdW5zaWduZWQgaXRlbUNvdW50SHlzdGVyZXNpc0JlZm9yZVNl
bmRpbmdXYWtldXAgPSA1MTI7CiAKICAgICBtX3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRCZWZvcmVT
ZW5kaW5nV2FrZXVwID0gaXRlbUNvdW50SHlzdGVyZXNpc0JlZm9yZVNlbmRpbmdXYWtldXA7Ci0g
ICAgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMgPSB7ewotICAgICAgICBoYW5kbGUu
aWRlbnRpZmllciwKLSAgICAgICAgc2hhcmVkSGFuZGxlLT53cml0YWJsZU9mZnNldCgpIC0gbnVt
YmVyT2ZCeXRlcywKLSAgICAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlcgotICAgIH19OworICAg
IG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzID0ge3sgaGFuZGxlLmlkZW50aWZpZXIs
IG9mZnNldFRvUmVhZCwgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciB9fTsKIH0KIAogUmVmUHRyPERp
c3BsYXlMaXN0V3JpdGVySGFuZGxlPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1vc3RS
ZWNlbnRseVVzZWREaXNwbGF5TGlzdEhhbmRsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaAppbmRleCBmMDNiMzJmNjRhMTlhYjZhMjRiY2E0MWU0ZTZjNWQ1NDM2ZDg5MmZh
Li40OGZhMDY5ZGFhOGQzY2Q2ZDEyNDQyZGIzMzA2MDNjOTM2Yjk3YjQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTM5LDYgKzM5LDEwIEBACiAjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorI2lmIFBMQVRGT1JNKENP
Q09BKQorI2luY2x1ZGUgPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+CisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlM
aXN0OwpAQCAtMTIyLDYgKzEyNiw5IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtX2N1cnJlbnREZXN0aW5hdGlvbkltYWdlQnVm
ZmVySWRlbnRpZmllcjsKICAgICBPcHRpb25hbDxHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3Vt
ZW50cz4gbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHM7CiAgICAgdW5zaWduZWQgbV9y
ZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCB7IDAgfTsKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBNYWNoU2VtYXBob3JlIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="434618"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="434622"
          type_id="3"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417103</attachid>
            <date>2021-01-06 11:06:09 -0800</date>
            <delta_ts>2021-01-06 12:35:54 -0800</delta_ts>
            <desc>Address comments + rebase</desc>
            <filename>bug-219586-20210106110608.patch</filename>
            <type>text/plain</type>
            <size>41686</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE5OGE2M2Q2YzQxY2M3NTE3
M2Q5ODk5YzkzOTdlNmMzNTEwOTk2NjUuLjY5OTI2MTEwNTJiODM1YjQyOWJmNDg3NGQ5Y2ViZjQw
OWI0MTRhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQwIEBACisyMDIxLTAxLTA2ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IERp
c3BsYXkgTGlzdHNdIEdQVSBwcm9jZXNzIHNob3VsZCBub3QgaW1tZWRpYXRlbHkgc2xlZXAgYWZ0
ZXIgcmVhZGluZyBhbGwgYXZhaWxhYmxlIGRpc3BsYXkgbGlzdCBpdGVtcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NTg2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83MjI3NTQxMj4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4K
KworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBtZWNoYW5pc20gZm9yIHRoZSBHUFUgcHJvY2Vz
cyB0byB3YWl0IGZvciBhIHNob3J0IGR1cmF0aW9uICh+MzAgbWljcm9zZWNvbmRzKSBhZnRlciBp
dCBoYXMKKyAgICAgICAgZmluaXNoZWQgcmVhZGluZyBhbGwgYXZhaWxhYmxlIGRhdGEgaW4gaXRz
IHNoYXJlZCBpdGVtIGJ1ZmZlcjsgaWYgdGhlIHdlYiBwcm9jZXNzIHdyaXRlcyBhZGRpdGlvbmFs
IGRhdGEgdG8gdGhlCisgICAgICAgIGl0ZW0gYnVmZmVyICh0aGVyZWJ5IGJ1bXBpbmcgdGhlIHVu
cmVhZCBieXRlcyBjb3VudGVyKSBkdXJpbmcgdGhpcyB0aW1lLCB3ZSBpbW1lZGlhdGVseSByZXN1
bWUgcHJvY2Vzc2luZyB0aGUKKyAgICAgICAgbmV3IGRpc3BsYXkgbGlzdCBpdGVtcyBpbiB0aGUg
R1BVIHByb2Nlc3MsIHJhdGhlciB0aGFuIHdhaXQgZm9yIGEgbmV3IHdha2V1cCBtZXNzYWdlLgor
CisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvIGF2b2lkIHRoZSBjb3N0IG9mIGdvaW5nIHRvIHNs
ZWVwIGp1c3QgdG8gaW1tZWRpYXRlbHkgd2FrZSB1cCBpbiB0aGUgR1BVIHByb2Nlc3MsIGluIHRo
ZSBjYXNlCisgICAgICAgIHdoZXJlIHRoZSB3ZWIgcHJvY2VzcyBpcyB3cml0aW5nIGRpc3BsYXkg
bGlzdCBpdGVtcyBhdCBhIHZlcnkgZmFzdCByYXRlIGFuZCB0aGUgR1BVIHByb2Nlc3MganVzdCBo
YXBwZW5zIHRvCisgICAgICAgIGNhdGNoIHVwIChpLmUuIGFkdmFuY2UgYHVucmVhZEJ5dGVzKClg
IHRvIDApLgorCisgICAgICAgIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZCk6
CisKKyAgICAgICAgUmVmYWN0b3IgdGhlIHJlbmRlcmluZyBiYWNrZW5kIGNyZWF0aW9uIG1lc3Nh
Z2UgZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIEdQVSBwcm9jZXNzLCBzbyB0aGF0IHRoZSBy
ZW5kZXJpbmcKKyAgICAgICAgYmFja2VuZCBjcmVhdGlvbiBhcmd1bWVudHMgYXJlIGVuY2Fwc3Vs
YXRlZCBpbiBhIHNpbmdsZSBzdHJ1Y3QsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMuIFRoaXMKKyAgICAgICAgc3RydWN0IGNvbnRhaW5zIHRoZSByZW5kZXJpbmcgYmFj
a2VuZCBpZGVudGlmaWVyIGFuZCwgb24gQ29jb2EgcGxhdGZvcm1zLCBhIG1hY2ggc2VuZCByaWdo
dCB0aGF0IGNhbiBiZSB1c2VkIHRvCisgICAgICAgIGNvbnN0cnVjdCB0aGUgY29ycmVzcG9uZGlu
ZyBkaXNwbGF5IGxpc3Qgd2FrZXVwIHNlbWFwaG9yZSBpbiB0aGUgR1BVIHByb2Nlc3MuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oOgorICAg
ICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6c3RhcnRXYWl0aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OnN0b3BXYWl0aW5nKToKKwor
ICAgICAgICBBZGQgaGVscGVyIG1ldGhvZHMgZm9yIHRoZSBHUFUgcHJvY2VzcyB0byBzdGFydCBh
bmQgc3RvcCB3YWl0aW5nIGZvciBuZXcgaXRlbXMuIFNlZSB0aGUgY2FsbCBzaXRlIGluCisgICAg
ICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgZm9yIG1vcmUgZGV0YWlsLCBhcyB3ZWxsIGFzIHRo
ZSBjb21tZW50cyBpbiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSBiZWxvdy4KKworICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorCisg
ICAgICAgIFJlZmFjdG9yIHRoaXMgY29kZXBhdGggdG8gdGFrZSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIGluc3RlYWQgb2YganVzdCBhbiBpZGVudGlmaWVyLgorCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbklt
YWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyk6CisKKyAgICAgICAgSW4gdGhlIGNh
c2Ugd2hlcmUgd2UgcmVjZWl2ZWQgdGhlIHdha2V1cCBtZXNzYWdlIGR1ZSB0byBleGNlZWRpbmcg
dGhlIGRpc3BsYXkgbGlzdCBpdGVtIGNvdW50IGh5c3RlcmVzaXMsIHdhaXQKKyAgICAgICAgZm9y
IGEgc2hvcnQgZHVyYXRpb24gdXNpbmcgdGhlIHNlbWFwaG9yZSBhZnRlciB3ZSBoaXQgYW4gdW5y
ZWFkIGNvdW50IG9mIDAuIFRoaXMgYWxsb3dzIHRoZSB3ZWIgcHJvY2VzcyB0byB3cml0ZQorICAg
ICAgICBtb3JlIGl0ZW1zIGFuZCBzaWduYWwgdGhlIHNlbWFwaG9yZSwgc28gdGhhdCB3ZSBjYW4g
cmVzdW1lIHJlYWRpbmcgaW4gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVh
ZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Lmg6CisgICAgICAgICogU2hhcmVkL0dQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmg6
CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3Vt
ZW50czo6ZGVjb2RlKToKKworICAgICAgICBQbHVtYiBhIEdQVVByb2Nlc3NXYWtldXBSZWFzb24g
ZW51bSBmbGFnIG92ZXIgdG8gdGhlIEdQVSBwcm9jZXNzLCB2aWEgd2FrZS11cCBhcmd1bWVudHMu
IFRoaXMgZmxhZyBpcyB1c2VkIGJ5CisgICAgICAgIHRoZSBHUFUgcHJvY2VzcyB0byBkZXRlcm1p
bmUgd2hldGhlciB3ZSBzaG91bGQgZXhwZWN0IGFkZGl0aW9uYWwgaXRlbXMgdG8gZXZlbnR1YWxs
eSBlbnRlciB0aGUgc3RyZWFtLCBhbmQKKyAgICAgICAgd2hldGhlciB3ZSBzaG91bGQgZWFnZXJs
eSBnbyB0byBzbGVlcCBhZnRlciBwcm9jZXNzaW5nIGFsbCBrbm93biBpdGVtcy4gSW4gb3RoZXIg
d29yZHMsIGlmIHRoZSB3YWtldXAgbWVzc2FnZSBpcworICAgICAgICBiZWluZyBzZW50IGFzIGEg
cmVzdWx0IG9mIGZsdXNoaW5nIHRoZSBpbWFnZSBidWZmZXIsIHdlIGRvbid0IHdhbnQgdG8gdW5u
ZWNlc3NhcmlseSB3YWl0IGZvciBtb3JlIGl0ZW1zOworICAgICAgICBob3dldmVyLCBpZiB0aGUg
d2FrZXVwIG1lc3NhZ2UgaXMgYmVpbmcgc2VudCBhcyBhIHJlc3VsdCBvZiBleGNlZWRpbmcgdGhl
IChjdXJyZW50bHkpIDUxMi1pdGVtIGh5c3RlcmVzaXMsIHRoZW4KKyAgICAgICAgd2UgY2FuIHBy
b2JhYmx5IGV4cGVjdCBtb3JlIGl0ZW1zIHRvIHN0cmVhbSBpbiwgc28gaXQncyBtb3JlIG9wdGlt
YWwgdG8gd2FpdCBhZnRlciBmaW5pc2hpbmcgYWxsIGtub3duIGRpc3BsYXkKKyAgICAgICAgbGlz
dCBpdGVtcy4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRp
b25QYXJhbWV0ZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nl
c3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmguCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6
CisKKyAgICAgICAgU2VlIGFib3ZlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBTaGFy
ZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlz
cGxheUxpc3RIYW5kbGU6OmhlYWRlciBjb25zdCk6CisKKyAgICAgICAgQWRkcyBhIG5ldyBXYWl0
aW5nU3RhdHVzIGVudW0gdHlwZSBpbnRlcm5hbCB0byBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSBh
bmQgaXRzIHN1YmNsYXNzZXMsIHdoaWNoIGlzIHVzZWQgdG8KKyAgICAgICAgY29vcmRpbmF0ZSB0
aGUgYWN0IG9mIHdhaXRpbmcgZm9yIG5ldyBpdGVtIGRhdGEgaW4gdGhlIEdQVSBwcm9jZXNzLiBB
IHNoYXJlZCBkaXNwbGF5IGxpc3QgaGFuZGxlIG5vdyBjb250YWlucworICAgICAgICBhbiBhdG9t
aWMgYHdhaXRpbmdTdGF0dXNgIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBHUFUgcHJvY2Vz
cyBpcyBpbiB0aGUgcHJvY2VzcyBvZiB3YWl0aW5nIGZvciBtb3JlIGl0ZW1zLAorICAgICAgICBh
bmQgYWxzbyB3aGV0aGVyIHRoZSB3ZWIgcHJvY2VzcyBoYXMgYWNrbm93bGVkZ2VkIHRoZSBmYWN0
IHRoYXQgdGhlIEdQVSBwcm9jZXNzIGlzIHdhaXRpbmcgKHRoZXJlYnkgcHV0dGluZyB0aGUKKyAg
ICAgICAgR1BVIHByb2Nlc3MgaW4gYSBzdGF0ZSB3aGVyZSBpdCBpcyB3YWl0aW5nIHRvIHJlc3Vt
ZSBwcm9jZXNzaW5nKS4gQWxvbmcgd2l0aCB0aGlzIGVudW0sIHdlIGFsc28gYWRkIHR3byBuZXcK
KyAgICAgICAgOC1ieXRlIHZhbHVlcyB0byB0aGUgaGVhZGVyIHNlY3Rpb246IGFuIG9mZnNldCB0
byBiZWdpbiByZWFkaW5nIGl0ZW0gZGF0YSBhZnRlciByZXN1bWluZywgYW5kIDggYnl0ZXMgZm9y
IGFuCisgICAgICAgIGlkZW50aWZpZXIgaW5kaWNhdGluZyB0aGUgbmV3IGRlc3RpbmF0aW9uIChm
b3IgdGhlIHB1cnBvc2VzIG9mIGRpc3BsYXkgbGlzdCByZW5kZXJpbmcsIHRoaXMgaXMgYQorICAg
ICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHRob3VnaCB0aGlzIHdpbGwgYmUgZGlm
ZmVyZW50IGZvciBXZWJHTCkuCisKKyAgICAgICAgICAgICstLT4gTm90V2FpdGluZyA8LS0rCisg
ICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfAorICAgICAgICAgICAgfCAgICAgICAgfCAg
ICAgICAgIHwgWzNhXQorICAgICAgICAgICAgfCBbM2JdICAgfCBbMV0gICAgIHwKKyAgICAgICAg
ICAgIHwgICAgICAgIHwgICAgICAgICB8CisgICAgICAgIFJlc3VtaW5nICAgICArLS0tLT4gV2Fp
dGluZworICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgICAg
ICAgIFsyXSAgICAgICB8CisgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAg
ICAgIFRoZXJlIGFyZSB0aHJlZSBtYWluIHdheXMgaW4gd2hpY2ggdGhpcyBzdGF0ZSBtYWNoaW5l
IG1heSB0cmFuc2l0aW9uLCBudW1iZXJlZCBbMV0tWzNdIGluIHRoZSBhYm92ZSBkaWFncmFtLgor
CisgICAgICAgIFsxXSBXaGVuIHRoZSBHUFUgcHJvY2VzcyBmaW5pc2hlcyBwcm9jZXNzaW5nIGF2
YWlsYWJsZSBpdGVtcywgaXQgZW50ZXJzIFdhaXRpbmcgc3RhdGUsIGluZGljYXRpbmcgdGhhdCBp
dCBpcyBub3cKKyAgICAgICAgICAgIHdhaXRpbmcgZm9yIGFkZGl0aW9uYWwgaXRlbSBkYXRhLiBU
aGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBjYWxsIHRvIGBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6
c3RhcnRXYWl0aW5nYC4KKworICAgICAgICBbMl0gV2hlbiB0aGUgd2ViIHByb2Nlc3MgYnVtcHMg
dGhlIHVucmVhZCBjb3VudCBvZiBhbiBpdGVtIGJ1ZmZlciwgaWYgaXQgaGFzIGEgcGVuZGluZyB3
YWtldXAgbWVzc2FnZSBvciB3b3VsZAorICAgICAgICAgICAgb3RoZXJ3aXNlIG5lZWQgdG8gc2No
ZWR1bGUgYSBwZW5kaW5nIHdha2V1cCBtZXNzYWdlLCBzZWUgaWYgd2UgY2FuIGluc3RlYWQgc2lt
cGx5IHRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvCisgICAgICAgICAgICByZXN1bWUgcHJvY2Vzc2lu
ZywgaW5zdGVhZCBvZiBzZW5kaW5nIGEgd2FrZXVwIG1lc3NhZ2UuIFRoaXMgY29ycmVzcG9uZHMg
dG8gYSBjYWxsIHRvIHRoZSBoZWxwZXIgbWV0aG9kCisgICAgICAgICAgICBgRGlzcGxheUxpc3RX
cml0ZXJIYW5kbGU6OnRyeVRvUmVzdW1lYC4KKworICAgICAgICBbM10gSWYgdGhlIG1heGltdW0g
d2FpdCBkdXJhdGlvbiAofjMwIG1pY3Jvc2Vjb25kcykgaGFzIHBhc3NlZCAoaS5lLiBzY2VuYXJp
byAzYSkgb3IgaWYgdGhlIHdlYiBwcm9jZXNzIGhhcworICAgICAgICAgICAgdHJhbnNpdGlvbmVk
IHVzIGZyb20gV2FpdGluZyB0byBSZXN1bWluZyBzdGF0ZSAoaS5lLiBzY2VuYXJpbyAzYiksIHRo
ZW4gdHJhbnNpdGlvbiBiYWNrIHRvIE5vdFdhaXRpbmcuIEluCisgICAgICAgICAgICBib3RoIHNj
ZW5hcmlvcywgdGhpcyBjb3JyZXNwb25kcyB0byBhIGNhbGwgdG8gYERpc3BsYXlMaXN0UmVhZGVy
SGFuZGxlOjpzdG9wV2FpdGluZ2AuIEluIHRoZSBjYXNlIHdoZXJlIHdlCisgICAgICAgICAgICB0
cmFuc2l0aW9uZWQgZnJvbSBSZXN1bWluZyBzdGF0ZSwgd2UgY2FuIGltbWVkaWF0ZWx5IGNvbnRp
bnVlIHByb2Nlc3NpbmcgZGlzcGxheSBsaXN0IGl0ZW1zLgorCisgICAgICAgIEluIHRoZSBjYXNl
IHdoZXJlIHdlIHN1Y2Nlc3NmdWxseSByZXN1bWUsIHdlJ3JlIGVzc2VudGlhbGx5ICJyZS13YWtp
bmciIHRoZSBHUFUgcHJvY2VzcyB3aXRob3V0IHRoZSBvdmVyaGVhZCBvZgorICAgICAgICBhbiBh
ZGRpdGlvbmFsIElQQyBtZXNzYWdlLCB1c2luZyB0aGUgc2FtZSBzaGFyZWQgZGlzcGxheSBsaXN0
IGhhbmRsZS4gU2luY2UgdGhpcyB3b3VsZCd2ZSBvdGhlcndpc2UgYmVlbiBhCisgICAgICAgIHNl
cGFyYXRlIHdha2V1cCBtZXNzYWdlLCB3ZSBuZWVkIHRvIGJlIGNhcmVmdWwgdGhhdCB3ZSBjb250
aW51ZSBwcm9jZXNzaW5nIGRpc3BsYXkgbGlzdCBpdGVtcyBmcm9tIHRoZSBjb3JyZWN0CisgICAg
ICAgIG9mZnNldCBpbnRvIHRoZSBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRsZSwgYW5kIHVzaW5n
IHRoZSBjb3JyZWN0IGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlci4gVGhpcyBpcyBiZWNhdXNlIHRo
ZQorICAgICAgICB3cml0YWJsZSBvZmZzZXQgb2YgdGhlIGl0ZW0gYnVmZmVyIG1heSBoYXZlIGJl
ZW4gcmVzZXQgaW4gdGhlIG1pZGRsZSBvZiB3YWl0aW5nIGJ5IHRoZSB3ZWIgcHJvY2Vzcywgb3Ig
dGhlCisgICAgICAgIGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlciBtYXkgaGF2ZSBjaGFuZ2VkIHdo
aWxlIHdhaXRpbmcuIFRvIGhhbmRsZSB0aGVzZSBzY2VuYXJpb3MsIHdlIGludHJvZHVjZSB0aGUK
KyAgICAgICAgYFJlc3VtZVJlYWRpbmdJbmZvcm1hdGlvbmAgc3RydWN0LCB3aGljaCBjb250YWlu
cyBib3RoIG9mIHRoZXNlIHBpZWNlcyBvZiBpbmZvcm1hdGlvbi4gQW4gaW5zdGFuY2Ugb2YgdGhp
cworICAgICAgICBzdHJ1Y3QgZXhpc3RzIGluIHRoZSBzaGFyZWQgbWVtb3J5IGhlYWRlciBzZWN0
aW9uOyB0aGlzIGlzIHdyaXR0ZW4gYnkgdGhlIHdlYiBwcm9jZXNzIGltbWVkaWF0ZWx5IHByaW9y
IHRvCisgICAgICAgIHRyYW5zaXRpb25pbmcgdG8gUmVzdW1pbmcgc3RhdGUsIGFuZCByZWFkIGJ5
IHRoZSBHUFUgcHJvY2VzcyB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBSZXN1bWluZyB0byBOb3RX
YWl0aW5nLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUu
aDoKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OnRyeVRvUmVzdW1l
KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIGZvciB0aGUgd2ViIHByb2Nlc3MgdG8g
dHJ5IGFuZCBub3RpZnkgdGhlIEdQVSBwcm9jZXNzIHRoYXQgaXQgc2hvdWxkIHRyeSBhbmQgcmVz
dW1lCisgICAgICAgIGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nLiBTZWUgdGhlIGNhbGwgc2l0ZSBp
biBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgZm9yIG1vcmUgZGV0YWlsLCBhcyB3ZWxsIGFz
IHRoZQorICAgICAgICBjb21tZW50cyBpbiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSBhYm92ZS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6ZGlkQXBwZW5kRGF0YSk6CisKKyAgICAgICAgUmF0aGVyIHRoYW4gYWx3
YXlzIHNjaGVkdWxlIChvciBzZW5kKSBhIHdha2V1cCBtZXNzYWdlIGhlcmUgaW4gdGhlIGNhc2Ug
d2hlcmUgdGhlIHVucmVhZCBjb3VudCBpcyAwLCBzZWUgaWYgd2UKKyAgICAgICAgY2FuIGluc3Rl
YWQgdGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gc3RvcCB3YWl0aW5nIGFuZCByZXN1bWUgZGlzcGxh
eSBsaXN0IHByb2Nlc3NpbmcuIFRvIGRvIHRoaXMsIHdlIHVzZSB0aGUgbmV3CisgICAgICAgIERp
c3BsYXlMaXN0V3JpdGVySGFuZGxlOjp0cnlUb1Jlc3VtZSBtZXRob2QsIGdpdmluZyBpdCB0aGUg
bmV3IG9mZnNldCB0byBiZWdpbiByZWFkaW5nIGl0ZW1zIGZyb20gYXMgd2VsbCBhcyB0aGUKKyAg
ICAgICAgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyIHRvIHdoaWNoIHdlIHNob3VsZCBhcHBseSBk
aXNwbGF5IGxpc3QgaXRlbXMuIElmIHdlIHN1Y2Nlc3NmdWxseSB0ZWxsIHRoZSBHUFUgcHJvY2Vz
cyB0bworICAgICAgICByZXN1bWUgcmVhZGluZywgdGhlbiB3ZSBjYW4gY2xlYXIgb3V0IChvciBh
dm9pZCBzdG9yaW5nKSB3YWtldXAgbWVzc2FnZSBhcmd1bWVudHMgYW5kIGF2b2lkIHNlbmRpbmcg
YW4gSVBDCisgICAgICAgIHdha2V1cCBtZXNzYWdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisKIDIwMjEtMDEtMDUg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQg
SVBDIGdlbmVyYXRvciB0ZXN0cyBoYXZlIGR1cGxpY2F0ZSByZWNlaXZlciBuYW1lcywgbGltaXRp
bmcgdGhlIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNWM0Y2EyNWQ0ZGFhN2Q1ODEz
MTE3MGM5NzIwM2Y0MDZlYmIxZGJhNi4uNDFhZTBhMTMxNDhhYTZhNmNjNGJiYjg2Yjg5YmJhZTY2
NDAxYTE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKKyNp
bmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5j
bHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUg
IlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC0yODgsMTAg
KzI4OSwxMCBAQCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6YXVkaW9TZXNzaW9uUHJveHkoKQogfQogI2VuZGlmCiAKLXZvaWQgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKK3ZvaWQgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbnN1cmUocmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNy
ZWF0ZSgqdGhpcywgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShwYXJhbWV0ZXJzLmlkZW50
aWZpZXIsIFsmXSgpIHsKKyAgICAgICAgcmV0dXJuIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNy
ZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAgICAgfSk7CiAgICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDRm
MmQ0NGZmYjU1MGFhNmRlODEwYjliZjk1MjYyMDdkNTc5ZGI0NzkuLjFmNzg1NTVlMmI3Mzk5ZTcy
MGI1NGQ5Y2ZhZWNjMzM5ODk2YTcyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNjUsNiArNjUsNyBAQCBjbGFz
cyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXI7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owogc3Ry
dWN0IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcwogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cz4KQEAgLTEyNCw3ICsxMjUsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIHZv
aWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cisg
ICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDhmYzBlZmFjOTMyMTgyMjJiYjBiYzdjMjFhYWI5MTllNTNh
OTczNGUuLjBjYmM1ZDg3OTgzZTY2NmU0OGU4MzlhNjQ2NDg5ODc5NTBhMzkyYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlz
cGF0Y2hNZXNzYWdlIHsKLSAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKKyAg
ICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoc3RydWN0IFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQogICAgIHZvaWQgUmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCBDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKaW5kZXggY2I3
MjIzOTc2OTZkYzllMGIwNmU4OWNhYzI1Y2U3MmNiOWE1NzZlMS4uYmU4YzU1Zjg4YzVkYjRjYzVi
Y2FjNDI0NmEyYTYxNTNjZjJkNTY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKQEAgLTQxLDYg
KzQxLDIwIEBAIHB1YmxpYzoKICAgICBzaXplX3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSBvdmVy
cmlkZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0PiBkaXNwbGF5TGlzdEZvclJlYWRpbmcoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5
LCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQmKSBjb25zdDsK
IAorICAgIHZvaWQgc3RhcnRXYWl0aW5nKCkKKyAgICB7CisgICAgICAgIGhlYWRlcigpLndhaXRp
bmdTdGF0dXMuc3RvcmUoU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OldhaXRpbmdTdGF0dXM6Oldh
aXRpbmcpOworICAgIH0KKworICAgIE9wdGlvbmFsPFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpS
ZXN1bWVSZWFkaW5nSW5mb3JtYXRpb24+IHN0b3BXYWl0aW5nKCkKKyAgICB7CisgICAgICAgIGF1
dG8mIGhlYWRlciA9IHRoaXMtPmhlYWRlcigpOworICAgICAgICBpZiAoaGVhZGVyLndhaXRpbmdT
dGF0dXMuZXhjaGFuZ2UoU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OldhaXRpbmdTdGF0dXM6Ok5v
dFdhaXRpbmcpID09IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpXYWl0aW5nU3RhdHVzOjpSZXN1
bWluZykKKyAgICAgICAgICAgIHJldHVybiB7IGhlYWRlci5yZXN1bWVSZWFkaW5nSW5mbyB9Owor
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCiBwcml2YXRlOgogICAgIERp
c3BsYXlMaXN0UmVhZGVySGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKICAg
ICAgICAgOiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJl
ZE1lbW9yeSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggZWZmNjVlZmNkYTQ1ZjE0ZDE0
ZjY4ODNmYWY4MjEyNTE0YmFlODE2NC4uNDg3YjEzNWE4ODkyN2QyMjkzOTMwNzQ5MDI0ZDY1NmNj
MDUwNGY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMzMsMjUgKzMzLDMzIEBACiAj
aW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZD4obmV3IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcywgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpKTsKKyAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+KG5ldyBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykp
KTsKIH0KIAotUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKK1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykpCi0g
ICAgLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKHJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKQorICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcihwYXJhbWV0ZXJzLmlkZW50
aWZpZXIpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBtX3Jlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlKG1ha2VVbmlxdWU8TWFjaFNlbWFwaG9yZT4oV1RGTW92ZShwYXJhbWV0ZXJzLnNlbmRS
aWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkpCisjZW5kaWYKIHsKICAgICBpZiAo
YXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5nZXQoKSkKLSAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJl
Y2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LnRvVUludDY0KCksICp0aGlzKTsKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+
bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwogfQogCiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpCkBAIC0xNTMsNyArMTYxLDcgQEAgRGlzcGxh
eUxpc3Q6OlJlcGxheVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQoY29uc3Qg
RGlzcGxheUxpc3Q6OkRpc3AKICAgICB9LnJlcGxheSgpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZm
ZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0
ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyhJbWFnZUJ1ZmZlciYgaW5pdGlhbERlc3RpbmF0aW9uLCBz
aXplX3QgaW5pdGlhbE9mZnNldCwgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUmIGhhbmRsZSkKK1Jl
ZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKEltYWdlQnVmZmVyJiBpbml0aWFs
RGVzdGluYXRpb24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZSYgaGFuZGxlLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uIHJlYXNvbikKIHsKICAgICBhdXRvIGRl
c3RpbmF0aW9uID0gbWFrZVJlZlB0cihpbml0aWFsRGVzdGluYXRpb24pOwogICAgIGF1dG8gaGFu
ZGxlUHJvdGVjdG9yID0gbWFrZVJlZihoYW5kbGUpOwpAQCAtMTk1LDEzICsyMDMsMTMgQEAgUmVm
UHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25J
bWFnZUJ1ZmZlckFmdGVyQXBwbHkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gbWFrZVJlZlB0
cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoKnJlc3VsdC5uZXh0RGVz
dGluYXRpb25JbWFnZUJ1ZmZlcikpOwogICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbikgewog
ICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nV2FrZXVwSW5mbyk7Ci0gICAgICAgICAg
ICAgICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBoYW5kbGUuaWRlbnRpZmllcigpLCBvZmZz
ZXQsICpyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgfSwgV1RGOjpudWxsb3B0IH19
OworICAgICAgICAgICAgICAgIG1fcGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaGFuZGxlLmlkZW50
aWZpZXIoKSwgb2Zmc2V0LCAqcmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyLCByZWFz
b24gfSwgV1RGOjpudWxsb3B0IH19OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9PSBEaXNwbGF5TGlzdDo6U3RvcFJlcGxh
eVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlKSB7CiAgICAgICAgICAgICBtX3BlbmRpbmdX
YWtldXBJbmZvID0ge3sKLSAgICAgICAgICAgICAgICB7IGhhbmRsZS5pZGVudGlmaWVyKCksIG9m
ZnNldCwgZGVzdGluYXRpb24tPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIH0sCisgICAg
ICAgICAgICAgICAgeyBoYW5kbGUuaWRlbnRpZmllcigpLCBvZmZzZXQsIGRlc3RpbmF0aW9uLT5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgcmVhc29uIH0sCiAgICAgICAgICAgICAgICAg
cmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIKICAgICAgICAgICAgIH19Owog
ICAgICAgICB9CkBAIC0yMDksOCArMjE3LDUxIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAg
ICAgICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZvKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgaWYgKCFzaXplVG9SZWFkKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICgh
c2l6ZVRvUmVhZCkgeworICAgICAgICAgICAgaWYgKHJlYXNvbiAhPSBHUFVQcm9jZXNzV2FrZXVw
UmVhc29uOjpJdGVtQ291bnRIeXN0ZXJlc2lzRXhjZWVkZWQpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGhhbmRsZS5zdGFydFdhaXRpbmcoKTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAgICAgICAgIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUtPndhaXRGb3Io
MzBfdXMpOworI2Vsc2UKKyAgICAgICAgICAgIHNsZWVwKDMwX3VzKTsKKyNlbmRpZgorCisgICAg
ICAgICAgICBhdXRvIHJlc3VtZVJlYWRpbmdJbmZvID0gaGFuZGxlLnN0b3BXYWl0aW5nKCk7Cisg
ICAgICAgICAgICBpZiAoIXJlc3VtZVJlYWRpbmdJbmZvKQorICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICBzaXplVG9SZWFkID0gaGFuZGxlLnVucmVhZEJ5dGVzKCk7CisgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoIXNpemVUb1JlYWQpKSB7CisgICAgICAgICAgICAgICAgLy8g
RklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4K
KyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBuZXdEZXN0aW5hdGlvbklk
ZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXJUeXBlPihyZXN1bWVSZWFkaW5nSW5mby0+ZGVzdGluYXRpb24pOworICAgICAgICAgICAgaWYg
KFVOTElLRUxZKCFuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpKSB7CisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vz
cy4KKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBtYWtl
UmVmUHRyKG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihuZXdEZXN0aW5h
dGlvbklkZW50aWZpZXIpKTsKKworICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFkZXN0aW5hdGlv
bikpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0
ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBvZmZzZXQgPSByZXN1bWVSZWFkaW5nSW5mby0+b2Zmc2V0OworCisgICAgICAgICAgICBp
ZiAoIWRlc3RpbmF0aW9uKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BlbmRpbmdXYWtl
dXBJbmZvKTsKKyAgICAgICAgICAgICAgICBtX3BlbmRpbmdXYWtldXBJbmZvID0ge3t7IGhhbmRs
ZS5pZGVudGlmaWVyKCksIG9mZnNldCwgbmV3RGVzdGluYXRpb25JZGVudGlmaWVyLCByZWFzb24g
fSwgV1RGOjpudWxsb3B0IH19OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwpAQCAtMjMzLDcg
KzI4NCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNw
bGF5TGlzdChjb25zdCBHUFVQcm9jZXNzV2FrZXVwTWVzCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBhcmd1
bWVudHMub2Zmc2V0LCAqaW5pdGlhbEhhbmRsZSk7CisgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZl
ciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygq
ZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgYXJndW1lbnRzLm9mZnNldCwgKmluaXRpYWxIYW5kbGUs
IGFyZ3VtZW50cy5yZWFzb24pOwogICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgewog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3BlbmRpbmdXYWtldXBJbmZvKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMjUyLDcgKzMwMyw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2Fr
ZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQcm9jZXNzV2FrZXVwTWVzCiAKICAgICAg
ICAgLy8gT3RoZXJ3aXNlLCBjb250aW51ZSByZWFkaW5nIHRoZSBuZXh0IGRpc3BsYXkgbGlzdCBp
dGVtIGJ1ZmZlciBmcm9tIHRoZSBzdGFydC4KICAgICAgICAgYXV0byBhcmd1bWVudHMgPSBzdGQ6
OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50czsK
LSAgICAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVm
ZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgYXJn
dW1lbnRzLm9mZnNldCwgKm5leHRIYW5kbGUpOworICAgICAgICBkZXN0aW5hdGlvbkltYWdlQnVm
ZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3Rz
KCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBhcmd1bWVudHMub2Zmc2V0LCAqbmV4dEhhbmRsZSwg
YXJndW1lbnRzLnJlYXNvbik7CiAgICAgICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikg
ewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wZW5kaW5nV2FrZXVwSW5mbyk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTI2Nyw3ICszMTgsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRl
bgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBtX3BlbmRpbmdXYWtldXBJbmZvID0ge3t7IGlkZW50aWZpZXIsIFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjpoZWFkZXJTaXplKCksIGRlc3RpbmF0aW9uSWRlbnRpZmllciB9LCBXVEY6Om51
bGxvcHQgfX07CisgICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBpZGVudGlmaWVyLCBTaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpLCBkZXN0aW5hdGlvbklkZW50aWZpZXIs
IEdQVVByb2Nlc3NXYWtldXBSZWFzb246OlVuc3BlY2lmaWVkIH0sIFdURjo6bnVsbG9wdCB9fTsK
IH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIEludFJlY3Qgc3JjUmVjdCwgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDQ0MzU4NWJkYTU4MjQxM2JmYTlkNDllYWNmZWE3
YjdmMGZkYTJhNzMuLmJjMTI4ZjE2YmIzNzU0NjQ1NDIzZmUyYmQyYjA5OTgyMDNhZjE2MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNDEsNiArNDEsMTIgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCisjaWYg
UExBVEZPUk0oQ09DT0EpCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1hY2hTZW1hcGhvcmU7Cit9
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsK
IGNsYXNzIERpc3BsYXlMaXN0OwpAQCAtNTYsMTMgKzYyLDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTsKIGNsYXNzIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CitzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVyczsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZAogICAgIDogcHVibGljIElQQzo6
TWVzc2FnZVNlbmRlcgogICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgICwg
cHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKCk7CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkgY29uc3Q7CkBAIC03OCw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldE5leHRJdGVtQnVmZmVyVG9SZWFkKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0
aW9uKTsKIAogcHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVycmlkZTsKIApAQCAtOTUsNyAr
MTAyLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVw
bGF5UmVzdWx0IHN1Ym1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
LCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24pOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcj4gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlz
cGxheUxpc3RzKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGluYXRpb24sIHNpemVf
dCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5
aW5nRGlzcGxheUxpc3RzKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGluYXRpb24s
IHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYsIEdQVVByb2Nl
c3NXYWtldXBSZWFzb24pOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgogICAgIElQQzo6
Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKQEAg
LTEzOSw2ICsxNDYsOSBAQCBwcml2YXRlOgogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
IG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwogICAgIE9wdGlvbmFsPFBlbmRpbmdX
YWtldXBJbmZvcm1hdGlvbj4gbV9wZW5kaW5nV2FrZXVwSW5mbzsKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpNYWNoU2VtYXBob3JlPiBtX3Jlc3VtZURpc3Bs
YXlMaXN0U2VtYXBob3JlOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJn
dW1lbnRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFy
Z3VtZW50cy5oCmluZGV4IDcxYjkwZGUyMTgwMDkxZWQwOTFkYTVjMGFjMTUzNDNjNTU2NzI2Y2Yu
LmMyOWNmMjUxMjAxNmNkYTJkZmU3MGQ5ZTE0MGE5MGYwM2MxOWU2MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMu
aApAQCAtMzIsMTAgKzMyLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitlbnVtIGNsYXNz
IEdQVVByb2Nlc3NXYWtldXBSZWFzb24gOiB1aW50OF90IHsKKyAgICBVbnNwZWNpZmllZCwKKyAg
ICBJdGVtQ291bnRIeXN0ZXJlc2lzRXhjZWVkZWQKK307CisKIHN0cnVjdCBHUFVQcm9jZXNzV2Fr
ZXVwTWVzc2FnZUFyZ3VtZW50cyB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyIGl0ZW1CdWZmZXJJZGVudGlmaWVyOwogICAgIHVpbnQ2NF90IG9mZnNldCB7
IDAgfTsKICAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRp
b25JbWFnZUJ1ZmZlcklkZW50aWZpZXI7CisgICAgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbiByZWFz
b24geyBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmllZCB9OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxHUFVQcm9jZXNzV2FrZXVwTWVzc2Fn
ZUFyZ3VtZW50cz4gZGVjb2RlKERlY29kZXImKTsKQEAgLTQ3LDYgKzUzLDcgQEAgdm9pZCBHUFVQ
cm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50czo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgZW5jb2RlciA8PCBpdGVtQnVmZmVySWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8
IG9mZnNldDsKICAgICBlbmNvZGVyIDw8IGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVy
OworICAgIGVuY29kZXIgPDwgcmVhc29uOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpA
QCAtNjcsOSArNzQsMjYgQEAgT3B0aW9uYWw8R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVu
dHM+IEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzOjpkZWMKICAgICBpZiAoIWRlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCi0gICAgcmV0dXJuIHt7ICppdGVtQnVmZmVySWRlbnRpZmllciwgKm9mZnNldCwgKmRlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyIH19OworICAgIE9wdGlvbmFsPEdQVVByb2Nlc3NX
YWtldXBSZWFzb24+IHJlYXNvbjsKKyAgICBkZWNvZGVyID4+IHJlYXNvbjsKKyAgICBpZiAoIXJl
YXNvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyAqaXRl
bUJ1ZmZlcklkZW50aWZpZXIsICpvZmZzZXQsICpkZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRp
ZmllciwgKnJlYXNvbiB9fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6R1BVUHJvY2Vz
c1dha2V1cFJlYXNvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAg
IFdlYktpdDo6R1BVUHJvY2Vzc1dha2V1cFJlYXNvbiwKKyAgICAgICAgV2ViS2l0OjpHUFVQcm9j
ZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmllZCwKKyAgICAgICAgV2ViS2l0OjpHUFVQcm9jZXNz
V2FrZXVwUmVhc29uOjpJdGVtQ291bnRIeXN0ZXJlc2lzRXhjZWVkZWQKKyAgICA+OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRp
b25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdiNWE3NmFmMjUyMGM5ZTcyMDEw
NjgwOGE5MzRmZDE5Nzg5OWQyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMCwwICsx
LDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisKKyNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
PHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyB7CisgICAgUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBNYWNo
U2VuZFJpZ2h0IHNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOworI2VuZGlm
CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7Cit9Owor
Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IGlkZW50aWZpZXI7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgZW5jb2RlciA8
PCBzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKKyNlbmRpZgorfQorCit0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycz4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworCisgICAgT3B0aW9uYWw8UmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXI+IGlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBpZGVudGlmaWVy
OworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIHBhcmFtZXRlcnMuaWRlbnRpZmllciA9ICppZGVudGlmaWVyOworCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0Rm9yUmVzdW1lRGlz
cGxheUxpc3RTZW1hcGhvcmU7CisgICAgZGVjb2RlciA+PiBzZW5kUmlnaHRGb3JSZXN1bWVEaXNw
bGF5TGlzdFNlbWFwaG9yZTsKKyAgICBpZiAoIXNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0
U2VtYXBob3JlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcGFyYW1ldGVy
cy5zZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSA9IFdURk1vdmUoKnNlbmRS
aWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKTsKKyNlbmRpZgorCisgICAgcmV0dXJu
IHBhcmFtZXRlcnM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlM
aXN0SGFuZGxlLmgKaW5kZXggZWQ5M2RjMjk5NmYxYWJiYTgyYzY2MGE5OGE1MDE0ZGE5YmIwMTkx
Ny4uMGEyYTdlMDllZDQ5ODBlMTUwMDE3NWIwZTkzZWVhN2UzYWRjYmMwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCkBAIC01NSw2ICs1NSwx
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHNpemVfdCBhZHZhbmNlKHNpemVfdCBhbW91bnQp
ID0gMDsKIAorICAgIGVudW0gY2xhc3MgV2FpdGluZ1N0YXR1cyA6IHVpbnQ4X3QgeworICAgICAg
ICBOb3RXYWl0aW5nLAorICAgICAgICBXYWl0aW5nLAorICAgICAgICBSZXN1bWluZworICAgIH07
CisKKyAgICBzdHJ1Y3QgUmVzdW1lUmVhZGluZ0luZm9ybWF0aW9uIHsKKyAgICAgICAgdWludDY0
X3Qgb2Zmc2V0OworICAgICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbjsKKyAgICB9OworCiBwcm90
ZWN0ZWQ6CiAgICAgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hh
cmVkTWVtb3J5KQogICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQpAQCAtNjcsOCAr
NzgsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICB+RGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFk
ZXIoKSA9IGRlbGV0ZTsKIAogICAgICAgICBBdG9taWM8dWludDY0X3Q+IHVucmVhZEJ5dGVzOwor
ICAgICAgICBSZXN1bWVSZWFkaW5nSW5mb3JtYXRpb24gcmVzdW1lUmVhZGluZ0luZm87CisgICAg
ICAgIEF0b21pYzxXYWl0aW5nU3RhdHVzPiB3YWl0aW5nU3RhdHVzOwogICAgIH07CiAKKyAgICBj
b25zdCBEaXNwbGF5TGlzdFNoYXJlZE1lbW9yeUhlYWRlciYgaGVhZGVyKCkgY29uc3QgeyByZXR1
cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXIq
PihkYXRhKCkpOyB9CiAgICAgRGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXImIGhlYWRlcigp
IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVy
Kj4oZGF0YSgpKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTEyMzkwN2ExMmYxYzNmYzhmMDk2MDAzNDVhNWU0
YWRjZDIwYjFjYi4uNDBiOWQ1MWQ1MDkxYmU1OTlmMWE3ZTFhYjRlYzQ4YjdjMTQ0ZGUwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
OTY3LDYgKzE5NjcsNyBAQAogCQlGNDJENjM0MTIyQTBFRkRGMDBEMkZCM0EgLyogV2ViQXV0b2Nv
cnJlY3Rpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDJENjMzRjIyQTBFRkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmgg
Ki87IH07CiAJCUY0MzBFOTQyMjI0NzMzNUYwMDVGRTA1MyAvKiBXZWJzaXRlTWV0YVZpZXdwb3J0
UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDMwRTk0MTIyNDczMkE5MDA1RkUwNTMgLyogV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oICov
OyB9OwogCQlGNDMwRTk0NDIyNDczREZGMDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzBFOTQzMjI0NzNE
QjgwMDVGRTA1MyAvKiBXZWJDb250ZW50TW9kZS5oICovOyB9OworCQlGNDM3QzhEOTI1OTNCN0Uz
MDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzN0M4RDgyNTkz
QjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMu
aCAqLzsgfTsKIAkJRjQzOENEMUMyMjQxNDIxNDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVu
Y2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM4
Q0QxQjIyNDE0MEE2MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUY0MzhDRDFGMjI0MTRENDAw
MERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM4Q0QxRTIyNDE0RDQwMDBERTZEREEg
LyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oICovOyB9OwogCQlGNDM4Q0QyMTIyNDFG
Njk1MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM4Q0QyMDIyNDFGNjk1MDBERTZE
REEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU3NzUsNiArNTc3Niw3IEBACiAJCUY0MkQ2
MzQwMjJBMEVGRDMwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkRhdGEubW07
IHBhdGggPSBpb3MvV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNDMwRTk0MTIyNDczMkE5MDA1RkUwNTMgLyogV2Vic2l0ZU1ldGFWaWV3cG9y
dFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzBFOTQzMjI0NzNEQjgwMDVGRTA1MyAvKiBX
ZWJDb250ZW50TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZW50TW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNDM3QzhEODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0MzhDRDFCMjI0MTQwQTYwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJl
bmNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxRDIyNDE0QUQ2MDBERTZEREEgLyogV0tXZWJwYWdl
UHJlZmVyZW5jZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYnBhZ2VQcmVmZXJlbmNl
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzOENEMUUyMjQxNEQ0MDAwREU2
RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tX
ZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjUxMiw2ICs2NTE0LDcgQEAKIAkJCQlFMUNDMUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJp
bnRJbmZvLmggKi8sCiAJCQkJNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbi5oICovLAogCQkJCTlCMTIyOUQwMjNGRjJBNUUwMDhDQTc1MSAvKiBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oICovLAorCQkJCUY0MzdDOEQ4MjU5M0I3RTMw
MERCOEExQyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8s
CiAJCQkJNUNCN0FGRTYyM0M2ODFCMDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCAqLywK
IAkJCQk1QzAwOTkzQjI0MTdGQjdFMDBENTNDMjUgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuaCAqLywKIAkJCQk0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29y
ay5jcHAgKi8sCkBAIC0xMTg0NSw2ICsxMTg0OCw3IEBACiAJCQkJMUE1NzA0RkMxQkUxNzUxMTAw
ODc0QUYxIC8qIFJlbW90ZU9iamVjdEludm9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QzEzMzgwMTg1OTBBRTQwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFDMTMzODYxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lz
dHJ5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0MzdDOEQ5MjU5M0I3RTMwMERCOEEx
QyAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjU5NDc5MDE4N0IzQjNBMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTk0N0E4MTg3QjUxNzYwMDQzNzg1NyAv
KiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjU5NDc5QjE4N0IzQjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgKaW5kZXgg
ZmM3YTIxNjUzYTBlYjk2ODE5ZWIxYzA5YTlmYzM0NDQ4MWE3Mzk2My4uZjlmNDRlNDI4OGM5MDZh
Zjg3YTIwYzdjMDk3NWU5OTQ1ZjBmOWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUu
aApAQCAtNDYsNiArNDYsMTMgQEAgcHVibGljOgogICAgIHNpemVfdCBhZHZhbmNlKHNpemVfdCBh
bW91bnQpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFu
ZGxlIGNyZWF0ZUhhbmRsZSgpIGNvbnN0OwogCisgICAgYm9vbCB0cnlUb1Jlc3VtZShTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZTo6UmVzdW1lUmVhZGluZ0luZm9ybWF0aW9uJiYgaW5mbykKKyAgICB7
CisgICAgICAgIGF1dG8mIGhlYWRlciA9IHRoaXMtPmhlYWRlcigpOworICAgICAgICBoZWFkZXIu
cmVzdW1lUmVhZGluZ0luZm8gPSBXVEZNb3ZlKGluZm8pOworICAgICAgICByZXR1cm4gaGVhZGVy
LndhaXRpbmdTdGF0dXMuY29tcGFyZUV4Y2hhbmdlV2VhayhTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZTo6V2FpdGluZ1N0YXR1czo6V2FpdGluZywgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OldhaXRp
bmdTdGF0dXM6OlJlc3VtaW5nKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgRGlzcGxheUxpc3RX
cml0ZXJIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQogICAgICAgICA6IFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50aWZpZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBjNDFlMWZkNTY3
MzE1NGZiZjRlMjAyOGZiZTIxM2QwOGQzNTlkNzhkLi42MWI0YzgyNDk1NzZkZTEyOGE5YWJlZDA5
MjdmNDFlZTQxNjJiZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIgogI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtNjYsOCArNjcsMTIgQEAgdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIGF1
dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBjb25u
ZWN0aW9uLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwotCi0gICAgc2VuZChN
ZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlUmVuZGVyaW5nQmFja2Vu
ZChtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKSwgMCk7CisgICAgc2VuZChNZXNzYWdlczo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlUmVuZGVyaW5nQmFja2VuZCh7CisgICAg
ICAgIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsCisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgICAgIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUuY3JlYXRlU2VuZFJpZ2h0KCksCisj
ZW5kaWYKKyAgICB9KSwgMCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpyZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9uKCkKQEAgLTI3MiwyNCArMjc3LDM4IEBA
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRhKGNvbnN0IERp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuCiAKICAgICBib29sIHdhc0VtcHR5ID0gc2hhcmVkSGFu
ZGxlLT5hZHZhbmNlKG51bWJlck9mQnl0ZXMpID09IG51bWJlck9mQnl0ZXM7CiAgICAgaWYgKCF3
YXNFbXB0eSB8fCBkaWRDaGFuZ2VJdGVtQnVmZmVyID09IERpc3BsYXlMaXN0OjpEaWRDaGFuZ2VJ
dGVtQnVmZmVyOjpZZXMpIHsKLSAgICAgICAgaWYgKG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJn
dW1lbnRzICYmICEtLW1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXAp
Ci0gICAgICAgICAgICBzZW5kV2FrZXVwTWVzc2FnZSgqc3RkOjpleGNoYW5nZShtX2RlZmVycmVk
V2FrZXVwTWVzc2FnZUFyZ3VtZW50cywgV1RGOjpudWxsb3B0KSk7CisgICAgICAgIGlmIChtX2Rl
ZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cykgeworICAgICAgICAgICAgaWYgKHNoYXJlZEhh
bmRsZS0+dHJ5VG9SZXN1bWUoeyBtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy0+b2Zm
c2V0LCBtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy0+ZGVzdGluYXRpb25JbWFnZUJ1
ZmZlcklkZW50aWZpZXIudG9VSW50NjQoKSB9KSkgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
ICAgICAgICAgICAgIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUuc2lnbmFsKCk7CisjZW5k
aWYKKyAgICAgICAgICAgICAgICBtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyA9IFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBtX3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRCZWZv
cmVTZW5kaW5nV2FrZXVwID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIS0tbV9yZW1haW5p
bmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCkgeworICAgICAgICAgICAgICAgIG1f
ZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzLT5yZWFzb24gPSBHUFVQcm9jZXNzV2FrZXVw
UmVhc29uOjpJdGVtQ291bnRIeXN0ZXJlc2lzRXhjZWVkZWQ7CisgICAgICAgICAgICAgICAgc2Vu
ZFdha2V1cE1lc3NhZ2UoKnN0ZDo6ZXhjaGFuZ2UobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1
bWVudHMsIFdURjo6bnVsbG9wdCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBzZW5kRGVmZXJyZWRXYWtldXBNZXNzYWdlSWZOZWVkZWQo
KTsKIAorICAgIGF1dG8gb2Zmc2V0VG9SZWFkID0gc2hhcmVkSGFuZGxlLT53cml0YWJsZU9mZnNl
dCgpIC0gbnVtYmVyT2ZCeXRlczsKKyAgICBpZiAoc2hhcmVkSGFuZGxlLT50cnlUb1Jlc3VtZSh7
IG9mZnNldFRvUmVhZCwgZGVzdGluYXRpb25JbWFnZUJ1ZmZlci50b1VJbnQ2NCgpIH0pKSB7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUu
c2lnbmFsKCk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIEluc3Rl
YWQgb2Ygc2VuZGluZyB0aGUgd2FrZXVwIG1lc3NhZ2UgaW1tZWRpYXRlbHksIHdhaXQgZm9yIHNv
bWUgYWRkaXRpb25hbCBkYXRhLiBUaGlzIGdpdmVzIHRoZQogICAgIC8vIHdlYiBwcm9jZXNzIGEg
ImhlYWQgc3RhcnQiLCBkZWNyZWFzaW5nIHRoZSBsaWtlbGlob29kIHRoYXQgdGhlIEdQVSBwcm9j
ZXNzIHdpbGwgZW5jb3VudGVyIGZyZXF1ZW50CiAgICAgLy8gd2FrZXVwcyB3aGVuIHByb2Nlc3Np
bmcgYSBsYXJnZSBhbW91bnQgb2YgZGlzcGxheSBsaXN0IGl0ZW1zLgogICAgIGNvbnN0ZXhwciB1
bnNpZ25lZCBpdGVtQ291bnRIeXN0ZXJlc2lzQmVmb3JlU2VuZGluZ1dha2V1cCA9IDUxMjsKIAog
ICAgIG1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXAgPSBpdGVtQ291
bnRIeXN0ZXJlc2lzQmVmb3JlU2VuZGluZ1dha2V1cDsKLSAgICBtX2RlZmVycmVkV2FrZXVwTWVz
c2FnZUFyZ3VtZW50cyA9IHt7Ci0gICAgICAgIGhhbmRsZS5pZGVudGlmaWVyLAotICAgICAgICBz
aGFyZWRIYW5kbGUtPndyaXRhYmxlT2Zmc2V0KCkgLSBudW1iZXJPZkJ5dGVzLAotICAgICAgICBk
ZXN0aW5hdGlvbkltYWdlQnVmZmVyCi0gICAgfX07CisgICAgbV9kZWZlcnJlZFdha2V1cE1lc3Nh
Z2VBcmd1bWVudHMgPSB7eyBoYW5kbGUuaWRlbnRpZmllciwgb2Zmc2V0VG9SZWFkLCBkZXN0aW5h
dGlvbkltYWdlQnVmZmVyIH19OwogfQogCiBSZWZQdHI8RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU+
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bW9zdFJlY2VudGx5VXNlZERpc3BsYXlMaXN0
SGFuZGxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IGYwM2Iz
MmY2NGExOWFiNmEyNGJjYTQxZTRlNmM1ZDU0MzZkODkyZmEuLjQ4ZmEwNjlkYWE4ZDNjZDZkMTI0
NDJkYjMzMDYwM2M5MzZiOTdiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaApAQCAtMzksNiArMzksMTAgQEAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL2Nv
Y29hL01hY2hTZW1hcGhvcmUuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1l
c3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CkBAIC0xMjIsNiArMTI2LDkg
QEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyOwogICAgIE9w
dGlvbmFsPEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzPiBtX2RlZmVycmVkV2FrZXVw
TWVzc2FnZUFyZ3VtZW50czsKICAgICB1bnNpZ25lZCBtX3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRC
ZWZvcmVTZW5kaW5nV2FrZXVwIHsgMCB9OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE1hY2hT
ZW1hcGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>