<?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>219715</bug_id>
          
          <creation_ts>2020-12-09 15:41:54 -0800</creation_ts>
          <short_desc>[GPUProcess] Cut in half amount of IPC needed to do WebAudio</short_desc>
          <delta_ts>2020-12-10 18:16:20 -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>Web Audio</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=217969</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1713339</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-09 15:41:54 -0800</bug_when>
    <thetext>Cut in half amount of IPC needed to do WebAudio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713346</commentid>
    <comment_count>1</comment_count>
      <attachid>415805</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-09 16:04:14 -0800</bug_when>
    <thetext>Created attachment 415805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713347</commentid>
    <comment_count>2</comment_count>
      <attachid>415806</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-09 16:05:41 -0800</bug_when>
    <thetext>Created attachment 415806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713350</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-09 16:17:27 -0800</bug_when>
    <thetext>GTK failure:

../../Source/WebKit/WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:35:10: fatal error: SharedRingBufferFrameBounds.h: No such file or directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713351</commentid>
    <comment_count>4</comment_count>
      <attachid>415809</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-09 16:17:36 -0800</bug_when>
    <thetext>Created attachment 415809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713356</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-09 16:24:49 -0800</bug_when>
    <thetext>&gt; Source/WebKit/ChangeLog:14
&gt; +        This patch gets rid of IPC 2 why storing the RingBuffer bounds in shared

why -&gt; by

&gt; Source/WebKit/ChangeLog:20
&gt; +        This is still too much IPC but this is a step in the right directly. We

directly -&gt; direction

&gt; Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:157
&gt; +        if (auto ringBufferBounds = m_ringBufferFrameBounds-&gt;tryGet())
&gt; +            m_ringBuffer-&gt;setCurrentFrameBounds(ringBufferBounds-&gt;first, ringBufferBounds-&gt;second);

I&apos;m not super familiar with this code. In the case where the opportunistic tryGet() fails, what ensures that we&apos;ll eventually tryGet() again and succeed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713357</commentid>
    <comment_count>6</comment_count>
      <attachid>415811</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-09 16:26:43 -0800</bug_when>
    <thetext>Created attachment 415811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713360</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-09 16:30:14 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #5)
&gt; &gt; Source/WebKit/ChangeLog:14
&gt; &gt; +        This patch gets rid of IPC 2 why storing the RingBuffer bounds in shared
&gt; 
&gt; why -&gt; by
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:20
&gt; &gt; +        This is still too much IPC but this is a step in the right directly. We
&gt; 
&gt; directly -&gt; direction
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:157
&gt; &gt; +        if (auto ringBufferBounds = m_ringBufferFrameBounds-&gt;tryGet())
&gt; &gt; +            m_ringBuffer-&gt;setCurrentFrameBounds(ringBufferBounds-&gt;first, ringBufferBounds-&gt;second);
&gt; 
&gt; I&apos;m not super familiar with this code. In the case where the opportunistic
&gt; tryGet() fails, what ensures that we&apos;ll eventually tryGet() again and
&gt; succeed?

Are you worried about the case where we get very bad luck and every time the GPUProcess needs sample the WebProcess happens to writing the frame bounds (and thus holding the lock). I guess this is a possibility but it sounds not very likely?

I used tryGet() because:
1. It is generally frowned upon to have the audio thread waiting on a lock
2. Even though we don&apos;t have the latest bounds, the RingBuffer may already have enough samples to provide an answer.

That said, if our media people say otherwise, I can switch to a get() and actually wait for the lock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713377</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-09 17:00:18 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; (In reply to Geoffrey Garen from comment #5)
&gt; &gt; &gt; Source/WebKit/ChangeLog:14
&gt; &gt; &gt; +        This patch gets rid of IPC 2 why storing the RingBuffer bounds in shared
&gt; &gt; 
&gt; &gt; why -&gt; by
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/ChangeLog:20
&gt; &gt; &gt; +        This is still too much IPC but this is a step in the right directly. We
&gt; &gt; 
&gt; &gt; directly -&gt; direction
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:157
&gt; &gt; &gt; +        if (auto ringBufferBounds = m_ringBufferFrameBounds-&gt;tryGet())
&gt; &gt; &gt; +            m_ringBuffer-&gt;setCurrentFrameBounds(ringBufferBounds-&gt;first, ringBufferBounds-&gt;second);
&gt; &gt; 
&gt; &gt; I&apos;m not super familiar with this code. In the case where the opportunistic
&gt; &gt; tryGet() fails, what ensures that we&apos;ll eventually tryGet() again and
&gt; &gt; succeed?
&gt; 
&gt; Are you worried about the case where we get very bad luck and every time the
&gt; GPUProcess needs sample the WebProcess happens to writing the frame bounds
&gt; (and thus holding the lock). I guess this is a possibility but it sounds not
&gt; very likely?
&gt; 
&gt; I used tryGet() because:
&gt; 1. It is generally frowned upon to have the audio thread waiting on a lock
&gt; 2. Even though we don&apos;t have the latest bounds, the RingBuffer may already
&gt; have enough samples to provide an answer.
&gt; 
&gt; That said, if our media people say otherwise, I can switch to a get() and
&gt; actually wait for the lock.

Jer confirmed on Slack that we should NEVER grab a lock on the CA audio thread (try lock is ok though).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713412</commentid>
    <comment_count>9</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-09 20:11:19 -0800</bug_when>
    <thetext>I believe this patch works, but it may not be the best approach.

To move audio samples from a web process to the GPU process, we use a pair of CARingBuffers with shared memory (SharedRingBufferStorage) that stores audio samples. We need to set bounds information in the GPU Process (reader) because the shared memory only stores audio samples, but not the internal data structure to implement the lockless operations. That works for two CARingBuffers in one process but different threads. But when the two CARingBuffers are in different processes, we need to synchronize the internal data structures in the reader. Fortunately, only synchronizing the bounds information will make the CARingBuffer in the GPU process functional.

If we can modify the CARingBuffer implementation to store other information in the shared memory in addition to audio samples, we may be able to use the CARingBuffer in two processes as in two threads (don&apos;t need to set the bounds information in a reader).

Since audio capture also uses CARingBuffer in the same manner, Youenn and Eric may have some comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713552</commentid>
    <comment_count>10</comment_count>
      <attachid>415811</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-10 08:40:33 -0800</bug_when>
    <thetext>Comment on attachment 415811
Patch

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

&gt; Source/WebKit/Shared/Cocoa/SharedRingBufferFrameBounds.cpp:36
&gt; +static inline void yield()

This will almost certainly get inlined without the inline keyword. I’m not sure we should use the keyword in cases like this.

&gt; Source/WebKit/Shared/Cocoa/SharedRingBufferFrameBounds.h:38
&gt; +    WTF_MAKE_FAST_ALLOCATED;
&gt; +    WTF_MAKE_NONCOPYABLE(SharedRingBufferFrameBounds)

Not sure why the first has a semicolon and the second does not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713553</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-10 08:47:50 -0800</bug_when>
    <thetext>(In reply to Peng Liu from comment #9)
&gt; I believe this patch works, but it may not be the best approach.
&gt; 
&gt; To move audio samples from a web process to the GPU process, we use a pair
&gt; of CARingBuffers with shared memory (SharedRingBufferStorage) that stores
&gt; audio samples. We need to set bounds information in the GPU Process (reader)
&gt; because the shared memory only stores audio samples, but not the internal
&gt; data structure to implement the lockless operations. That works for two
&gt; CARingBuffers in one process but different threads. But when the two
&gt; CARingBuffers are in different processes, we need to synchronize the
&gt; internal data structures in the reader. Fortunately, only synchronizing the
&gt; bounds information will make the CARingBuffer in the GPU process functional.

I agree it would be nicer if CARingBuffer did it for us. I will investigate to see how much work that would be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713586</commentid>
    <comment_count>12</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-10 10:03:58 -0800</bug_when>
    <thetext>&gt; Are you worried about the case where we get very bad luck and every time the
&gt; GPUProcess needs sample the WebProcess happens to writing the frame bounds
&gt; (and thus holding the lock). I guess this is a possibility but it sounds not
&gt; very likely?

Yes, I guess that&apos;s my worry. Or, at least, not *every* time, but enough times in a row that we run out of samples.

I agree that this case is unlikely, but it does seem possible.

A related worry is that we would fail the tryGet() on the very last update, possibly cutting off the end of the audio stream. (I&apos;m not sure how much we would cut off in that case.)

How frequently will the audio thread run the tryGet() operation?

What happens if tryGet() fails on the last attempt?

&gt; I used tryGet() because:
&gt; 1. It is generally frowned upon to have the audio thread waiting on a lock
&gt; 2. Even though we don&apos;t have the latest bounds, the RingBuffer may already
&gt; have enough samples to provide an answer.
&gt; 
&gt; That said, if our media people say otherwise, I can switch to a get() and
&gt; actually wait for the lock.

Definitely agree that we should not lock on the audio thread.

Another option is, instead of { isLocked, pair }, you can use { pair*, std::array&lt;pair&gt;, 2&gt; }. When the writing thread wants to update the bounds, it writes the new pair value to the un-pointed-to pair and then atomically swaps the pair* (with a release memory barrier). When the reading thread wants to read the bounds, it reads using the pair* (with an acquire memory barrier). This ensures no locking, and also no pathological failure. However, it is still possible to miss the very last update if you never get another chance to check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713596</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-10 10:14:53 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #12)
&gt; &gt; Are you worried about the case where we get very bad luck and every time the
&gt; &gt; GPUProcess needs sample the WebProcess happens to writing the frame bounds
&gt; &gt; (and thus holding the lock). I guess this is a possibility but it sounds not
&gt; &gt; very likely?
&gt; 
&gt; Yes, I guess that&apos;s my worry. Or, at least, not *every* time, but enough
&gt; times in a row that we run out of samples.
&gt; 
&gt; I agree that this case is unlikely, but it does seem possible.
&gt; 
&gt; A related worry is that we would fail the tryGet() on the very last update,
&gt; possibly cutting off the end of the audio stream. (I&apos;m not sure how much we
&gt; would cut off in that case.)
&gt; 
&gt; How frequently will the audio thread run the tryGet() operation?

That depends on the sample rate. A usual sample rate is 44khz and render is called for 128 samples each time.
I think this means render would get called ~340 per seconds in general. Media people can confirm.

&gt; 
&gt; What happens if tryGet() fails on the last attempt?

I am personally not too worried about this part. If Audio is still audible by the time by stop rendering then it will always be cut off in general.
Since requests to stop come on the main thread and since audio is being rendered on the audio thread, the exact point we stop rendering is always undefined.

&gt; 
&gt; &gt; I used tryGet() because:
&gt; &gt; 1. It is generally frowned upon to have the audio thread waiting on a lock
&gt; &gt; 2. Even though we don&apos;t have the latest bounds, the RingBuffer may already
&gt; &gt; have enough samples to provide an answer.
&gt; &gt; 
&gt; &gt; That said, if our media people say otherwise, I can switch to a get() and
&gt; &gt; actually wait for the lock.
&gt; 
&gt; Definitely agree that we should not lock on the audio thread.
&gt; 
&gt; Another option is, instead of { isLocked, pair }, you can use { pair*,
&gt; std::array&lt;pair&gt;, 2&gt; }. When the writing thread wants to update the bounds,
&gt; it writes the new pair value to the un-pointed-to pair and then atomically
&gt; swaps the pair* (with a release memory barrier). When the reading thread
&gt; wants to read the bounds, it reads using the pair* (with an acquire memory
&gt; barrier). This ensures no locking, and also no pathological failure.
&gt; However, it is still possible to miss the very last update if you never get
&gt; another chance to check.

This sounds like a good idea. I will see if I can make it work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713693</commentid>
    <comment_count>14</comment_count>
      <attachid>415921</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-10 13:22:09 -0800</bug_when>
    <thetext>Created attachment 415921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713694</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-10 13:24:18 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; Created attachment 415921 [details]
&gt; Patch

New approach based on feedback from Peng and Geoff:
1. I updated the CARingBuffer class so that it now stores its frame bounds in its memory backing (which may be shared memory). This way, we no longer need a separate SharedRingBufferFrameBounds class to get this functionality.
2. I no longer use a lock for the frame bounds in shared memory and instead use the approach suggested by Geoff (buffer of bounds + atomic index).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713701</commentid>
    <comment_count>16</comment_count>
      <attachid>415921</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-10 13:42:42 -0800</bug_when>
    <thetext>Comment on attachment 415921
Patch

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

&gt; Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:82
&gt; +        auto memory = SharedMemory::map(ipcHandle.handle, SharedMemory::Protection::ReadWrite);

Now that I no longer have a lock, I can keep this ReadOnly. Will update the patch accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713704</commentid>
    <comment_count>17</comment_count>
      <attachid>415925</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-10 13:54:09 -0800</bug_when>
    <thetext>Created attachment 415925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713708</commentid>
    <comment_count>18</comment_count>
      <attachid>415927</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-10 14:01:58 -0800</bug_when>
    <thetext>Created attachment 415927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713722</commentid>
    <comment_count>19</comment_count>
      <attachid>415927</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-10 14:33:33 -0800</bug_when>
    <thetext>Comment on attachment 415927
Patch

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

r=me

&gt; Source/WebCore/platform/audio/cocoa/CARingBuffer.cpp:332
&gt; +    // When the RingBuffer is backed by shared memory, make sure we pull frame bounds from shared memory before fetching.
&gt; +    updateFrameBounds();
&gt; +
&gt; +    uint64_t start, end;
&gt; +    getCurrentFrameBoundsWithoutUpdate(start, end);

Should this just be getCurrentFrameBounds()? Seems like the behavior would be equivalent.

&gt; Source/WebKit/Shared/Cocoa/SharedRingBufferStorage.h:73
&gt; +    static constexpr unsigned boundsBufferSize { 32 };
&gt; +    struct FrameBounds {
&gt; +        std::pair&lt;uint64_t, uint64_t&gt; boundsBuffer[boundsBufferSize];
&gt; +        Atomic&lt;unsigned&gt; boundsBufferIndex { 0 };
&gt; +    };

The logic of this data structure and its related code seem right to me, but I don&apos;t fully understand why it&apos;s OK for this class and the related CARingBuffer class to assume that the reader will not fall behind by more than 32 frames. I get it that falling behind is very rare and will definitely cause audio distortion. But this logic (and the pre-existing kGeneralRingTimeBoundsQueueSize in CARingBuffer) seem to take the audio distortion bug and embiggen it into a buffer overflow bug. Seems like something we should follow up on with our audio experts. Maybe they can explain why 32 is always enough. Or maybe we need to adjust this logic in both places. (We could use a strategy similar to your previous tryLock() strategy; or we could have the *reader* update the boundsBufferIndex and have the writer keep writing to the same index until the reader is ready for the next one).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713724</commentid>
    <comment_count>20</comment_count>
      <attachid>415931</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-10 14:37:02 -0800</bug_when>
    <thetext>Created attachment 415931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713727</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-10 14:40:56 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #19)
&gt; Comment on attachment 415927 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=415927&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/platform/audio/cocoa/CARingBuffer.cpp:332
&gt; &gt; +    // When the RingBuffer is backed by shared memory, make sure we pull frame bounds from shared memory before fetching.
&gt; &gt; +    updateFrameBounds();
&gt; &gt; +
&gt; &gt; +    uint64_t start, end;
&gt; &gt; +    getCurrentFrameBoundsWithoutUpdate(start, end);
&gt; 
&gt; Should this just be getCurrentFrameBounds()? Seems like the behavior would
&gt; be equivalent.

Yes, I was trying to be more explicit about the update but I made the change.

&gt; &gt; Source/WebKit/Shared/Cocoa/SharedRingBufferStorage.h:73
&gt; &gt; +    static constexpr unsigned boundsBufferSize { 32 };
&gt; &gt; +    struct FrameBounds {
&gt; &gt; +        std::pair&lt;uint64_t, uint64_t&gt; boundsBuffer[boundsBufferSize];
&gt; &gt; +        Atomic&lt;unsigned&gt; boundsBufferIndex { 0 };
&gt; &gt; +    };
&gt; 
&gt; The logic of this data structure and its related code seem right to me, but
&gt; I don&apos;t fully understand why it&apos;s OK for this class and the related
&gt; CARingBuffer class to assume that the reader will not fall behind by more
&gt; than 32 frames. I get it that falling behind is very rare and will
&gt; definitely cause audio distortion. But this logic (and the pre-existing
&gt; kGeneralRingTimeBoundsQueueSize in CARingBuffer) seem to take the audio
&gt; distortion bug and embiggen it into a buffer overflow bug. Seems like
&gt; something we should follow up on with our audio experts. Maybe they can
&gt; explain why 32 is always enough. Or maybe we need to adjust this logic in
&gt; both places. (We could use a strategy similar to your previous tryLock()
&gt; strategy; or we could have the *reader* update the boundsBufferIndex and
&gt; have the writer keep writing to the same index until the reader is ready for
&gt; the next one).

Yes, I am discussing this with Jer. It seem CARingBuffer::frameOffset() always make sure we read inside the RingBuffer by doing a modulo BufferSize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713792</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-10 18:15:08 -0800</bug_when>
    <thetext>Committed r270663: &lt;https://trac.webkit.org/changeset/270663&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415931.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713793</commentid>
    <comment_count>23</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-10 18:16:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/72206083&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415805</attachid>
            <date>2020-12-09 16:04:14 -0800</date>
            <delta_ts>2020-12-09 16:05:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219715-20201209160413.patch</filename>
            <type>text/plain</type>
            <size>24783</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ3YWQxYzA1YTMzY2I0NDVi
YzQzZjU0MGFiN2QyNzExMzQ3NDYyZmQuLmNkNjZlZWQ3NDVkNzdmYzk3ZWI1YTBlMDNmZWM2ZjA2
NmY2YzNiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAtMTItMDkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gQ3V0IGluIGhh
bGYgYW1vdW50IG9mIElQQyBuZWVkZWQgdG8gZG8gV2ViQXVkaW8KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTcxNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1dCBpbiBoYWxmIGFtb3VudCBvZiBJUEMg
bmVlZGVkIHRvIGRvIFdlYkF1ZGlvLiBQcmV2aW91c2x5LCB3ZSB3b3VsZCBzZW5kIDIKKyAgICAg
ICAgSVBDcyBwZXIgcmVuZGVyaW5nIHF1YW50dW06CisgICAgICAgIDEuIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6UmVxdWVzdEJ1ZmZlciBmcm9tIEdQVVByb2Nlc3MgdG8gV2ViUHJvY2Vz
cworICAgICAgICAyLiBUaGUgcmVzcG9uc2UgdG8gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpSZXF1ZXN0QnVmZmVyIHdoaWNoIGNvbnRhaW5lZAorICAgICAgICAgICB0aGUgZnJhbWUgYm91
bmRzIGZvciB0aGUgUmluZ0J1ZmZlci4KKworICAgICAgICBUaGlzIHBhdGNoIGdldHMgcmlkIG9m
IElQQyAyIHdoeSBzdG9yaW5nIHRoZSBSaW5nQnVmZmVyIGJvdW5kcyBpbiBzaGFyZWQKKyAgICAg
ICAgbWVtb3J5LiBBcyBzb29uIGFzIHRoZSBXZWJQcm9jZXNzIHN0b3JlcyBzb21ldGhpbmcgaW4g
dGhlIFJpbmdCdWZmZXIsIGl0CisgICAgICAgIHVwZGF0ZXMgdGhlIFJpbmdCdWZmZXIgYm91bmRz
IGluIFNoYXJlZE1lbW9yeSAoaW5zdGVhZCBvZiBzZW5kaW5nIGFuIElQQykuCisgICAgICAgIEJl
Zm9yZSByZWFkaW5nIGZyb20gdGhlIFJpbmdCdWZmZXIsIHRoZSBHUFVQcm9jZXNzIGZpcnN0IHVw
ZGF0ZXMgdGhlCisgICAgICAgIFJpbmdCdWZmZXIncyBib3VuZHMgZnJvbSB0aGUgdmFsdWVzIGlu
IFNoYXJlZE1lbW9yeS4KKworICAgICAgICBUaGlzIGlzIHN0aWxsIHRvbyBtdWNoIElQQyBidXQg
dGhpcyBpcyBhIHN0ZXAgaW4gdGhlIHJpZ2h0IGRpcmVjdGx5LiBXZQorICAgICAgICBjYW4gaG9w
ZWZ1bGx5IGdldCByaWQgb2YgKG9yIGdyZWF0bHkgcmVkdWNlKSBJUEMgMSBpbiBhIGZvbGxvdy11
cCBwYXRjaC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
OjpjcmVhdGVSaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRIYW5kbGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6cmVuZGVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGlu
YXRpb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TaGFyZWRS
aW5nQnVmZmVyRnJhbWVCb3VuZHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6eWllbGQp
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHM6OlNoYXJlZFJp
bmdCdWZmZXJGcmFtZUJvdW5kcyk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJG
cmFtZUJvdW5kczo6bG9ja1Nsb3cpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TaGFyZWRSaW5n
QnVmZmVyRnJhbWVCb3VuZHMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdC
dWZmZXJGcmFtZUJvdW5kczo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVk
UmluZ0J1ZmZlckZyYW1lQm91bmRzOjpzZXQpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5n
QnVmZmVyRnJhbWVCb3VuZHM6OnRyeUdldCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdC
dWZmZXJGcmFtZUJvdW5kczo6dHJ5TG9jayk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdC
dWZmZXJGcmFtZUJvdW5kczo6dW5sb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1
ZmZlckZyYW1lQm91bmRzOjpsb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1ZmZl
ckZyYW1lQm91bmRzOjpmcmFtZUJvdW5kcyk6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJl
cXVlc3RCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjoKKwogMjAyMC0xMi0wOSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBjbGlj
a2luZyBvbiBsaW5rcyBpbiBQREZzIG9uIEJpZyBTdXIgYWZ0ZXIgcjI2NjY1NApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5jcHAKaW5kZXggOTU4NWZkZmE3OWQwMjhmNTQ4ZWFlMDNiMjQ2NTg0
MDlkOTQ1Mzg1MS4uYTYwOWI3YWM3MjhlMGE0ZjA2ZGMwMDQ5YTAyNGQyNDlhNDYyMDZlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkK
KyNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaCIKICNpbmNsdWRlICJTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9PdXRwdXRVbml0
QWRhcHRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+
CkBAIC0xMTMsNiArMTE0LDE1IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNQbGF5aW5nKCkgY29u
c3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAorICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGNy
ZWF0ZVJpbmdCdWZmZXJGcmFtZUJvdW5kc1NoYXJlZEhhbmRsZSgpCisgICAgeworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgICAgICByZXR1cm4gbV9yaW5nQnVmZmVyRnJhbWVCb3VuZHMtPmNyZWF0
ZUhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CisjZWxzZQorICAg
ICAgICByZXR1cm4geyB9OworI2VuZGlmCisgICAgfQorCiBwcml2YXRlOgogICAgIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSkKICAgICAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKQEAgLTEyMCw2ICsx
MzAsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICAsIG1fYXVkaW9P
dXRwdXRVbml0QWRhcHRvcigqdGhpcykKICAgICAgICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1
ZVJlZjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZl
clN0b3JhZ2U+KG51bGxwdHIpKSkKKyAgICAgICAgLCBtX3JpbmdCdWZmZXJGcmFtZUJvdW5kcyht
YWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kcz4oKSkKICNlbmRpZgogICAg
IHsKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE0Miw2ICsxNTMsOSBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24gfHwgIW1faXNQbGF5
aW5nKQogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKIAorICAgICAgICBpZiAoYXV0byByaW5n
QnVmZmVyQm91bmRzID0gbV9yaW5nQnVmZmVyRnJhbWVCb3VuZHMtPnRyeUdldCgpKQorICAgICAg
ICAgICAgbV9yaW5nQnVmZmVyLT5zZXRDdXJyZW50RnJhbWVCb3VuZHMocmluZ0J1ZmZlckJvdW5k
cy0+Zmlyc3QsIHJpbmdCdWZmZXJCb3VuZHMtPnNlY29uZCk7CisKICAgICAgICAgdWludDY0X3Qg
c3RhcnQ7CiAgICAgICAgIHVpbnQ2NF90IGVuZDsKICAgICAgICAgbV9yaW5nQnVmZmVyLT5nZXRD
dXJyZW50RnJhbWVCb3VuZHMoc3RhcnQsIGVuZCk7CkBAIC0xNTEsMTEgKzE2NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBzdGF0dXMgPSBub0VycjsKICAgICAgICAgfQogCi0gICAgICAgIG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIoc2FtcGxlVGltZSwgaG9zdFRp
bWUsIG51bWJlck9mRnJhbWVzKSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCwgdWlu
dDY0X3QpPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShhdXRvIGJvdW5k
c1N0YXJ0RnJhbWUsIGF1dG8gYm91bmRzRW5kRnJhbWUpIG11dGFibGUgewotICAgICAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgICAgIGlmIChib3VuZHNFbmRGcmFtZSkK
LSAgICAgICAgICAgICAgICBtX3JpbmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhib3Vu
ZHNTdGFydEZyYW1lLCBib3VuZHNFbmRGcmFtZSk7Ci0gICAgICAgIH0sIENvbXBsZXRpb25IYW5k
bGVyQ2FsbFRocmVhZDo6TWFpblRocmVhZCksIG1faWQudG9VSW50NjQoKSk7CisgICAgICAgIG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5OjpSZXF1ZXN0QnVmZmVyKHNhbXBsZVRpbWUsIGhvc3RUaW1lLCBudW1iZXJPZkZy
YW1lcyksIG1faWQudG9VSW50NjQoKSk7CiAKICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICB9
CkBAIC0xNzEsNiArMTgxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OkNBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiBtX2Rlc2NyaXB0aW9uOwogICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJp
bmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlckZy
YW1lQm91bmRzPiBtX3JpbmdCdWZmZXJGcmFtZUJvdW5kczsKICAgICB1aW50NjRfdCBtX3N0YXJ0
RnJhbWUgeyAwIH07CiAjZW5kaWYKIApAQCAtMTg1LDEyICsxOTYsMTMgQEAgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXI6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKEdQVUNvbm5l
Y3Rpb25Ub1dlYlAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjp+UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERl
dmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0
ZSwKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25JZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKICAgICBhdXRvIGRl
c3RpbmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVs
cywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRl
KTsKKyAgICBhdXRvIHJpbmdCdWZmZXJGcmFtZUJvdW5kc1NoYXJlZEhhbmRsZSA9IGRlc3RpbmF0
aW9uLT5jcmVhdGVSaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRIYW5kbGUoKTsKICAgICBtX2F1
ZGlvRGVzdGluYXRpb25zLmFkZChuZXdJRCwgV1RGTW92ZShkZXN0aW5hdGlvbikpOwotICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5ld0lEKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCwgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUoV1RGTW92ZShyaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRI
YW5kbGUpLCAwKSk7CiB9CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRl
bGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCBlMjJjMTBhY2U5YTg4NTZmMGNiMDg4Nzcy
YmIxNDViZWJmMTYwZmUyLi4yM2FjYTg2YzMzMTVkZjExNmE1YjFmYmI1NDllMTVlYTU1MzZkYThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaApAQCAtNTksNyArNTksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAotICAgIHZv
aWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVp
bnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyKT4mJik7Cisg
ICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJ
ZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlKT4mJik7CiAgICAgdm9pZCBkZWxldGVBdWRpb0Rlc3RpbmF0
aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA4YzZiZGU3YTJiZGM2ZmE1ZDk2ZjBh
NTMyZTIxYzFiMjU3YWI0MjgwLi42YzVkNjFkZjc5MmMxOTAwMzYwMmVhMDZmOGNjMDQ1ZTg5YzU3
ZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBA
IC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FV
RElPKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciBOb3RSZWZD
b3VudGVkIHsKLSAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlk
LCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4g
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3lu
Y2hyb25vdXMKKyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlk
LCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4g
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSByaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRI
YW5kbGUpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCiAK
ICAgICBTdGFydEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIEFzeW5jCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3Vu
ZHMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlckZyYW1l
Qm91bmRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzEzMGNkMTZlYjAwYWU5Y2Q4YTU3OGZjMTY3MGM3YjY2
MzJhMzVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hh
cmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKE1FRElBVE9PTEJPWCkKKyNpbmNsdWRl
ICJTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaCIKKworI2luY2x1ZGUgPG1hY2gvbWFjaF90
cmFwcy5oPgorI2luY2x1ZGUgPG1hY2gvdGhyZWFkX3N3aXRjaC5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RhdGljIGlubGluZSB2b2lkIHlpZWxkKCkKK3sKKyAgICBjb25zdGV4cHIgbWFj
aF9tc2dfdGltZW91dF90IHRpbWVvdXRJbk1TID0gMTsKKyAgICB0aHJlYWRfc3dpdGNoKE1BQ0hf
UE9SVF9OVUxMLCBTV0lUQ0hfT1BUSU9OX0RFUFJFU1MsIHRpbWVvdXRJbk1TKTsKK30KKworCitT
aGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHM6OlNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kcygp
CisgICAgOiBtX3NoYXJlZE1lbW9yeShTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemVvZihGcmFt
ZUJvdW5kcykpKQoreworICAgIEFTU0VSVChtX3NoYXJlZE1lbW9yeSk7CisgICAgbmV3IChOb3RO
dWxsLCBtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSBGcmFtZUJvdW5kczsKKyAgICBBU1NFUlQoIWZy
YW1lQm91bmRzKCkucGFpci5maXJzdCAmJiAhZnJhbWVCb3VuZHMoKS5wYWlyLnNlY29uZCk7Cit9
CisKK1NoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kczo6U2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91
bmRzKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbiBwcm90ZWN0aW9uKQorICAgIDogbV9zaGFyZWRNZW1vcnkoU2hhcmVkTWVtb3J5Ojpt
YXAoaGFuZGxlLCBwcm90ZWN0aW9uKSkKK3sKKyAgICBBU1NFUlQobV9zaGFyZWRNZW1vcnkpOwor
fQorCit2b2lkIFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kczo6bG9ja1Nsb3coRnJhbWVCb3Vu
ZHMmIGJvdW5kcykKK3sKKyAgICB3aGlsZSAoIXRyeUxvY2soYm91bmRzKSkKKyAgICAgICAgeWll
bGQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTUVESUFU
T09MQk9YKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmlu
Z0J1ZmZlckZyYW1lQm91bmRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRS
aW5nQnVmZmVyRnJhbWVCb3VuZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTZkMjk1MzliMzY5ODMzODQ2ZDVm
YjZiZDYwOTBiYTc2MTEyOTkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzLmgKQEAgLTAsMCArMSwxMDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShNRURJQVRPT0xCT1gpCisKKyNp
bmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2hhcmVk
UmluZ0J1ZmZlckZyYW1lQm91bmRzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMpCitwdWJs
aWM6CisgICAgU2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzKCk7CisgICAgU2hhcmVkUmluZ0J1
ZmZlckZyYW1lQm91bmRzKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uKTsKKworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGNyZWF0ZUhhbmRsZShT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikKKyAgICB7CisgICAgICAgIFNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgYm9vbCBzdWNjZXNzID0gbV9zaGFyZWRN
ZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIHByb3RlY3Rpb24pOworICAgICAgICBBU1NFUlRf
VU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOworICAgICAgICByZXR1cm4gaGFuZGxlOworICAgIH0K
KworICAgIHZvaWQgc2V0KHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+JiYgcGFpcikKKyAg
ICB7CisgICAgICAgIGF1dG8mIGJvdW5kcyA9IGZyYW1lQm91bmRzKCk7CisgICAgICAgIGxvY2so
Ym91bmRzKTsKKworICAgICAgICBib3VuZHMucGFpciA9IFdURk1vdmUocGFpcik7CisKKyAgICAg
ICAgdW5sb2NrKGJvdW5kcyk7CisgICAgfQorCisgICAgT3B0aW9uYWw8c3RkOjpwYWlyPHVpbnQ2
NF90LCB1aW50NjRfdD4+IHRyeUdldCgpCisgICAgeworICAgICAgICBhdXRvJiBib3VuZHMgPSBm
cmFtZUJvdW5kcygpOworICAgICAgICBpZiAoIXRyeUxvY2soYm91bmRzKSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgYXV0byBwYWlyID0gYm91bmRzLnBhaXI7
CisgICAgICAgIHVubG9jayhib3VuZHMpOworICAgICAgICByZXR1cm4gcGFpcjsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgc3RydWN0IEZyYW1lQm91bmRzIHsKKyAgICAgICAgQXRvbWljPGJvb2w+
IGlzTG9ja2VkOworICAgICAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBwYWlyOwor
ICAgIH07CisKKyAgICBib29sIHRyeUxvY2soRnJhbWVCb3VuZHMmIGJvdW5kcykKKyAgICB7Cisg
ICAgICAgIHJldHVybiAhYm91bmRzLmlzTG9ja2VkLmV4Y2hhbmdlKHRydWUsIHN0ZDo6bWVtb3J5
X29yZGVyX2FjcXVpcmUpOworICAgIH0KKworICAgIHZvaWQgdW5sb2NrKEZyYW1lQm91bmRzJiBi
b3VuZHMpCisgICAgeworICAgICAgICBib3VuZHMuaXNMb2NrZWQuc3RvcmUoZmFsc2UsIHN0ZDo6
bWVtb3J5X29yZGVyX3JlbGVhc2UpOworICAgIH0KKworICAgIHZvaWQgbG9jayhGcmFtZUJvdW5k
cyYgYm91bmRzKQorICAgIHsKKyAgICAgICAgaWYgKCF0cnlMb2NrKGJvdW5kcykpCisgICAgICAg
ICAgICBsb2NrU2xvdyhib3VuZHMpOworICAgIH0KKyAgICB2b2lkIGxvY2tTbG93KEZyYW1lQm91
bmRzJik7CisKKyAgICBGcmFtZUJvdW5kcyYgZnJhbWVCb3VuZHMoKSB7IHJldHVybiAqcmVpbnRl
cnByZXRfY2FzdDxGcmFtZUJvdW5kcyo+KG1fc2hhcmVkTWVtb3J5LT5kYXRhKCkpOyB9CisKKyAg
ICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKK307CisKK30KKworI2VuZGlm
IC8vIFVTRShNRURJQVRPT0xCT1gpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA1NjY4ZTQ0
ZjVmNWYwYWM0ZTBkMTM1MTM1MGExNzk4NjNhNmUwM2Q2Li4wMTg3ZDZmMzA0ZGU4MmM0ZTNiNTIy
NzRlNmMzMDU1MGE0NTY4OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xNTgsNiArMTU4
LDcgQEAgU2hhcmVkL0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW0KIFNoYXJlZC9Db2NvYS9T
YW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KIFNoYXJlZC9Db2NvYS9TYW5kYm94SW5pdGlhbGlhdGlv
blBhcmFtZXRlcnNDb2NvYS5tbQogU2hhcmVkL0NvY29hL1NhbmRib3hVdGlsaXRpZXMubW0KK1No
YXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuY3BwCiBTaGFyZWQvQ29jb2Ev
U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuY3BwCiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzQ29jb2EubW0KIFNoYXJlZC9Db2NvYS9XZWJFcnJvcnNDb2NvYS5tbQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTBhYzJhN2Mz
OWZlNWNlNGRhMjc1NWU2ZTFjNjYyZmNiZjE5NWI5Ni4uNzgyZGMyYjhhMjg3MWMzZmUxMmQ2NWU5
ZDEzNTY4MmU5N2M0OWZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zNjk2LDYgKzM2OTYsOCBAQAogCQk0NjMyMzY4NTIzMTQ4MzNG
MDBBNDhGQTcgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVSVJl
bW90ZU9iamVjdFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzIz
Njg2MjMxNDgzM0YwMEE0OEZBNyAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjM0NzNCNjIzNTYxRDJBMDBCRTFBODQgLyogV2ViQmFja0ZvcndhcmRD
YWNoZUVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkJh
Y2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2
M0ExREU3MjU4MTg5NTgwMDYzNjYyQSAvKiBTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2M0ExREU4MjU4MTg5NTgwMDYzNjYyQSAvKiBTaGFyZWRSaW5n
QnVmZmVyRnJhbWVCb3VuZHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkUmluZ0J1ZmZl
ckZyYW1lQm91bmRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRkQ0N0Yx
RUI5NDU4NDAwQTI5ODJDIC8qIFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQ
cm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2NTFFQ0U2MjIxNzhBODUwMDY3RUI5NSAvKiBXZWJQcm9jZXNzQ2FjaGVDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NDYWNoZUNv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzg2OSw2ICs3ODcxLDggQEAK
IAkJCQk3QUI0RUE0MTIyNzc3RkM3MDA4NUJCQUEgLyogU2FuZGJveEluaXRpYWxpYXRpb25QYXJh
bWV0ZXJzQ29jb2EubW0gKi8sCiAJCQkJRTE5QkRBODgxOTM2ODZBNDAwQjk3RjU3IC8qIFNhbmRi
b3hVdGlsaXRpZXMuaCAqLywKIAkJCQk3QUI0RUE0MjIyNzc4MEREMDA4NUJCQUEgLyogU2FuZGJv
eFV0aWxpdGllcy5tbSAqLywKKwkJCQk0NjNBMURFODI1ODE4OTU4MDA2MzY2MkEgLyogU2hhcmVk
UmluZ0J1ZmZlckZyYW1lQm91bmRzLmNwcCAqLywKKwkJCQk0NjNBMURFNzI1ODE4OTU4MDA2MzY2
MkEgLyogU2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzLmggKi8sCiAJCQkJQ0Q0QjREOUExRTc2
NUUwMDAwRDI3MDkyIC8qIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmNwcCAqLywKIAkJCQlDRDRC
NEQ5QjFFNzY1RTAwMDBEMjcwOTIgLyogU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCAqLywKIAkJ
CQkxQUIxRjc4RTFEMUIzNEE2MDA3QzlCRDEgLyogV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0gKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKaW5kZXggYzhjNTgyOTA1
MGE1MjU4ZjlkOTMxOTc2Yjk1ZjA1ZTU5N2E1NmIzMS4uYmVjMDBjOGM3NGMzNzQ2NDJiNjQzY2Zl
OGJmMzNiMmYxNTk4ZDlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyRnJh
bWVCb3VuZHMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9B
dWRpb0J1cy5oPgogCkBAIC03OSwxMiArODAsMTMgQEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmEK
IHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkK
IHsKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBkZXN0aW5hdGlvbklEOwor
ICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHJpbmdCdWZmZXJGcmFtZUJvdW5kc1NoYXJlZEhh
bmRsZTsKIAogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0
aGlzKTsKICAgICBhdXRvIGRpZFN1Y2NlZWQgPSBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5k
U3luYygKICAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpD
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKG1faW5wdXREZXZpY2VJZCwgbV9udW1iZXJPZklucHV0Q2hh
bm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSwgc2FtcGxlUmF0ZSgpLCBoYXJkd2FyZVNh
bXBsZVJhdGUoKSksCi0gICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRpb25JRCksIDApOwor
ICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1
ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQsIHJpbmdCdWZmZXJGcmFtZUJvdW5k
c1NoYXJlZEhhbmRsZSksIDApOwogCiAgICAgaWYgKCFkaWRTdWNjZWVkKSB7CiAgICAgICAgIC8v
IFRoZSBHUFVQcm9jZXNzIGxpa2VseSBjcmFzaGVkIGR1cmluZyB0aGlzIHN5bmNocm9ub3VzIElQ
Qy4gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSgpIHdpbGwgZ2V0IGNhbGxlZCB0byByZWNv
bm5lY3QgdG8gdGhlIEdQVVByb2Nlc3MuCkBAIC05Nyw2ICs5OSw3IEBAIHZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIG1fY3VycmVudEZyYW1lID0gMDsKKyAgICBtX3JpbmdCdWZmZXJGcmFtZUJv
dW5kcyA9IG1ha2VVbmlxdWU8U2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzPihyaW5nQnVmZmVy
RnJhbWVCb3VuZHNTaGFyZWRIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRXcml0ZSk7CiAgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1h
dDsKICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKICAg
ICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKHN0cmVhbUZvcm1hdCwgbV9udW1iZXJPZkZyYW1lcyk7
CkBAIC0xNDgsMTIgKzE1MSwxMiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6
c3RvcChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpbwogfQogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVxdWVz
dEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IGZy
YW1lc1RvUmVuZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90LCB1aW50NjRfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6
cmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2
NF90IGZyYW1lc1RvUmVuZGVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCiAg
ICAgaWYgKCFoYXNFbm91Z2hGcmFtZXMoZnJhbWVzVG9SZW5kZXIpKQotICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoMCwgMCk7CisgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gc3Rh
cnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5zZXRTYW1w
bGVDb3VudChmcmFtZXNUb1JlbmRlcik7CkBAIC0xNjQsMTAgKzE2Nyw5IEBAIHZvaWQgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5OjpyZXF1ZXN0QnVmZmVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1
aW50NjRfdCBob3N0CiAKICAgICBtX3JpbmdCdWZmZXItPnN0b3JlKG1fYXVkaW9CdWZmZXJMaXN0
LT5saXN0KCksIGZyYW1lc1RvUmVuZGVyLCBzdGFydEZyYW1lKTsKIAotICAgIHVpbnQ2NF90IGJv
dW5kc1N0YXJ0RnJhbWU7Ci0gICAgdWludDY0X3QgYm91bmRzRW5kRnJhbWU7Ci0gICAgbV9yaW5n
QnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoYm91bmRzU3RhcnRGcmFtZSwgYm91bmRzRW5k
RnJhbWUpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGJvdW5kc1N0YXJ0RnJhbWUsIGJvdW5kc0Vu
ZEZyYW1lKTsKKyAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBwYWlyOworICAgIG1f
cmluZ0J1ZmZlci0+Z2V0Q3VycmVudEZyYW1lQm91bmRzKHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25k
KTsKKyAgICBtX3JpbmdCdWZmZXJGcmFtZUJvdW5kcy0+c2V0KFdURk1vdmUocGFpcikpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCmluZGV4IDJlNjAwZDY3ZGI1
ZmExNDg2M2Q4MDBlNmE0ZGFiMjliNWEzMzIzOTguLjJiNjkxNDM4Y2Q2MmM5YTY5ZGU4N2NkZTI2
NjhmNjhmNjMxM2U3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaApAQCAtNDks
NiArNDksOCBAQCBjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitjbGFzcyBTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHM7CisKIGNsYXNzIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIDogcHVibGljIFdl
YkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYQpAQCAtNzIsNyArNzQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHJl
cXVlc3RCdWZmZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90IGhvc3RUaW1lLCB1aW50NjRf
dCBudW1iZXJPZkZyYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCBib3VuZHNT
dGFydEZyYW1lLCB1aW50NjRfdCBib3VuZHNFbmRGcmFtZSk+JiYpOworICAgIHZvaWQgcmVxdWVz
dEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IG51
bWJlck9mRnJhbWVzKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTA5LDYgKzExMSw3IEBAIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgbV9udW1iZXJPZkZyYW1l
cyB7IDAgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBtX3Jp
bmdCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5k
cz4gbV9yaW5nQnVmZmVyRnJhbWVCb3VuZHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CiAgICAgdWludDY0X3QgbV9j
dXJyZW50RnJhbWUgeyAwIH07CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCAzODVlMTJkNzgxMjQ3M2UwNWVmNTViZTc4YTRhMGI2
ODI0YmQ5Nzk1Li41OGNhNWRiYWM3ZTI0NTljYjA5YzM0ZDkzMzMzZWVkM2M5OWI3ZWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMjUs
NyArMjUsNyBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgTm90
UmVmQ291bnRlZCB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVxdWVzdEJ1ZmZlcihkb3Vi
bGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVz
KSAtPiAodWludDY0X3QgYm91bmRzU3RhcnRGcmFtZSwgdWludDY0X3QgYm91bmRzRW5kRnJhbWUp
IEFzeW5jCisgICAgUmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9z
dFRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415806</attachid>
            <date>2020-12-09 16:05:41 -0800</date>
            <delta_ts>2020-12-09 16:20:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219715-20201209160540.patch</filename>
            <type>text/plain</type>
            <size>24779</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ3YWQxYzA1YTMzY2I0NDVi
YzQzZjU0MGFiN2QyNzExMzQ3NDYyZmQuLmNkNjZlZWQ3NDVkNzdmYzk3ZWI1YTBlMDNmZWM2ZjA2
NmY2YzNiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAtMTItMDkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gQ3V0IGluIGhh
bGYgYW1vdW50IG9mIElQQyBuZWVkZWQgdG8gZG8gV2ViQXVkaW8KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTcxNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1dCBpbiBoYWxmIGFtb3VudCBvZiBJUEMg
bmVlZGVkIHRvIGRvIFdlYkF1ZGlvLiBQcmV2aW91c2x5LCB3ZSB3b3VsZCBzZW5kIDIKKyAgICAg
ICAgSVBDcyBwZXIgcmVuZGVyaW5nIHF1YW50dW06CisgICAgICAgIDEuIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6UmVxdWVzdEJ1ZmZlciBmcm9tIEdQVVByb2Nlc3MgdG8gV2ViUHJvY2Vz
cworICAgICAgICAyLiBUaGUgcmVzcG9uc2UgdG8gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpSZXF1ZXN0QnVmZmVyIHdoaWNoIGNvbnRhaW5lZAorICAgICAgICAgICB0aGUgZnJhbWUgYm91
bmRzIGZvciB0aGUgUmluZ0J1ZmZlci4KKworICAgICAgICBUaGlzIHBhdGNoIGdldHMgcmlkIG9m
IElQQyAyIHdoeSBzdG9yaW5nIHRoZSBSaW5nQnVmZmVyIGJvdW5kcyBpbiBzaGFyZWQKKyAgICAg
ICAgbWVtb3J5LiBBcyBzb29uIGFzIHRoZSBXZWJQcm9jZXNzIHN0b3JlcyBzb21ldGhpbmcgaW4g
dGhlIFJpbmdCdWZmZXIsIGl0CisgICAgICAgIHVwZGF0ZXMgdGhlIFJpbmdCdWZmZXIgYm91bmRz
IGluIFNoYXJlZE1lbW9yeSAoaW5zdGVhZCBvZiBzZW5kaW5nIGFuIElQQykuCisgICAgICAgIEJl
Zm9yZSByZWFkaW5nIGZyb20gdGhlIFJpbmdCdWZmZXIsIHRoZSBHUFVQcm9jZXNzIGZpcnN0IHVw
ZGF0ZXMgdGhlCisgICAgICAgIFJpbmdCdWZmZXIncyBib3VuZHMgZnJvbSB0aGUgdmFsdWVzIGlu
IFNoYXJlZE1lbW9yeS4KKworICAgICAgICBUaGlzIGlzIHN0aWxsIHRvbyBtdWNoIElQQyBidXQg
dGhpcyBpcyBhIHN0ZXAgaW4gdGhlIHJpZ2h0IGRpcmVjdGx5LiBXZQorICAgICAgICBjYW4gaG9w
ZWZ1bGx5IGdldCByaWQgb2YgKG9yIGdyZWF0bHkgcmVkdWNlKSBJUEMgMSBpbiBhIGZvbGxvdy11
cCBwYXRjaC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
OjpjcmVhdGVSaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRIYW5kbGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6cmVuZGVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGlu
YXRpb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TaGFyZWRS
aW5nQnVmZmVyRnJhbWVCb3VuZHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6eWllbGQp
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHM6OlNoYXJlZFJp
bmdCdWZmZXJGcmFtZUJvdW5kcyk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJG
cmFtZUJvdW5kczo6bG9ja1Nsb3cpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TaGFyZWRSaW5n
QnVmZmVyRnJhbWVCb3VuZHMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdC
dWZmZXJGcmFtZUJvdW5kczo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVk
UmluZ0J1ZmZlckZyYW1lQm91bmRzOjpzZXQpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5n
QnVmZmVyRnJhbWVCb3VuZHM6OnRyeUdldCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdC
dWZmZXJGcmFtZUJvdW5kczo6dHJ5TG9jayk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdC
dWZmZXJGcmFtZUJvdW5kczo6dW5sb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1
ZmZlckZyYW1lQm91bmRzOjpsb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1ZmZl
ckZyYW1lQm91bmRzOjpmcmFtZUJvdW5kcyk6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJl
cXVlc3RCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjoKKwogMjAyMC0xMi0wOSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBjbGlj
a2luZyBvbiBsaW5rcyBpbiBQREZzIG9uIEJpZyBTdXIgYWZ0ZXIgcjI2NjY1NApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5jcHAKaW5kZXggOTU4NWZkZmE3OWQwMjhmNTQ4ZWFlMDNiMjQ2NTg0
MDlkOTQ1Mzg1MS4uYTYwOWI3YWM3MjhlMGE0ZjA2ZGMwMDQ5YTAyNGQyNDlhNDYyMDZlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkK
KyNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaCIKICNpbmNsdWRlICJTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9PdXRwdXRVbml0
QWRhcHRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+
CkBAIC0xMTMsNiArMTE0LDE1IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNQbGF5aW5nKCkgY29u
c3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAorICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGNy
ZWF0ZVJpbmdCdWZmZXJGcmFtZUJvdW5kc1NoYXJlZEhhbmRsZSgpCisgICAgeworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgICAgICByZXR1cm4gbV9yaW5nQnVmZmVyRnJhbWVCb3VuZHMtPmNyZWF0
ZUhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CisjZWxzZQorICAg
ICAgICByZXR1cm4geyB9OworI2VuZGlmCisgICAgfQorCiBwcml2YXRlOgogICAgIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSkKICAgICAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKQEAgLTEyMCw2ICsx
MzAsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICAsIG1fYXVkaW9P
dXRwdXRVbml0QWRhcHRvcigqdGhpcykKICAgICAgICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1
ZVJlZjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZl
clN0b3JhZ2U+KG51bGxwdHIpKSkKKyAgICAgICAgLCBtX3JpbmdCdWZmZXJGcmFtZUJvdW5kcyht
YWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kcz4oKSkKICNlbmRpZgogICAg
IHsKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE0Miw2ICsxNTMsOSBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24gfHwgIW1faXNQbGF5
aW5nKQogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKIAorICAgICAgICBpZiAoYXV0byByaW5n
QnVmZmVyQm91bmRzID0gbV9yaW5nQnVmZmVyRnJhbWVCb3VuZHMtPnRyeUdldCgpKQorICAgICAg
ICAgICAgbV9yaW5nQnVmZmVyLT5zZXRDdXJyZW50RnJhbWVCb3VuZHMocmluZ0J1ZmZlckJvdW5k
cy0+Zmlyc3QsIHJpbmdCdWZmZXJCb3VuZHMtPnNlY29uZCk7CisKICAgICAgICAgdWludDY0X3Qg
c3RhcnQ7CiAgICAgICAgIHVpbnQ2NF90IGVuZDsKICAgICAgICAgbV9yaW5nQnVmZmVyLT5nZXRD
dXJyZW50RnJhbWVCb3VuZHMoc3RhcnQsIGVuZCk7CkBAIC0xNTEsMTEgKzE2NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBzdGF0dXMgPSBub0VycjsKICAgICAgICAgfQogCi0gICAgICAgIG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIoc2FtcGxlVGltZSwgaG9zdFRp
bWUsIG51bWJlck9mRnJhbWVzKSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCwgdWlu
dDY0X3QpPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShhdXRvIGJvdW5k
c1N0YXJ0RnJhbWUsIGF1dG8gYm91bmRzRW5kRnJhbWUpIG11dGFibGUgewotICAgICAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgICAgIGlmIChib3VuZHNFbmRGcmFtZSkK
LSAgICAgICAgICAgICAgICBtX3JpbmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhib3Vu
ZHNTdGFydEZyYW1lLCBib3VuZHNFbmRGcmFtZSk7Ci0gICAgICAgIH0sIENvbXBsZXRpb25IYW5k
bGVyQ2FsbFRocmVhZDo6TWFpblRocmVhZCksIG1faWQudG9VSW50NjQoKSk7CisgICAgICAgIG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5OjpSZXF1ZXN0QnVmZmVyKHNhbXBsZVRpbWUsIGhvc3RUaW1lLCBudW1iZXJPZkZy
YW1lcyksIG1faWQudG9VSW50NjQoKSk7CiAKICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICB9
CkBAIC0xNzEsNiArMTgxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OkNBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiBtX2Rlc2NyaXB0aW9uOwogICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJp
bmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlckZy
YW1lQm91bmRzPiBtX3JpbmdCdWZmZXJGcmFtZUJvdW5kczsKICAgICB1aW50NjRfdCBtX3N0YXJ0
RnJhbWUgeyAwIH07CiAjZW5kaWYKIApAQCAtMTg1LDEyICsxOTYsMTMgQEAgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXI6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKEdQVUNvbm5l
Y3Rpb25Ub1dlYlAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjp+UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERl
dmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0
ZSwKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25JZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKICAgICBhdXRvIGRl
c3RpbmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVs
cywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRl
KTsKKyAgICBhdXRvIHJpbmdCdWZmZXJGcmFtZUJvdW5kc1NoYXJlZEhhbmRsZSA9IGRlc3RpbmF0
aW9uLT5jcmVhdGVSaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRIYW5kbGUoKTsKICAgICBtX2F1
ZGlvRGVzdGluYXRpb25zLmFkZChuZXdJRCwgV1RGTW92ZShkZXN0aW5hdGlvbikpOwotICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5ld0lEKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCwgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUoV1RGTW92ZShyaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRI
YW5kbGUpLCAwKSk7CiB9CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRl
bGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCBlMjJjMTBhY2U5YTg4NTZmMGNiMDg4Nzcy
YmIxNDViZWJmMTYwZmUyLi4yM2FjYTg2YzMzMTVkZjExNmE1YjFmYmI1NDllMTVlYTU1MzZkYThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaApAQCAtNTksNyArNTksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAotICAgIHZv
aWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVp
bnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyKT4mJik7Cisg
ICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJ
ZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlKT4mJik7CiAgICAgdm9pZCBkZWxldGVBdWRpb0Rlc3RpbmF0
aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA4YzZiZGU3YTJiZGM2ZmE1ZDk2ZjBh
NTMyZTIxYzFiMjU3YWI0MjgwLi42YzVkNjFkZjc5MmMxOTAwMzYwMmVhMDZmOGNjMDQ1ZTg5YzU3
ZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBA
IC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FV
RElPKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciBOb3RSZWZD
b3VudGVkIHsKLSAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlk
LCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4g
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3lu
Y2hyb25vdXMKKyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlk
LCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4g
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSByaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRI
YW5kbGUpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCiAK
ICAgICBTdGFydEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIEFzeW5jCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3Vu
ZHMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlckZyYW1l
Qm91bmRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzEzMGNkMTZlYjAwYWU5Y2Q4YTU3OGZjMTY3MGM3YjY2
MzJhMzVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hh
cmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKE1FRElBVE9PTEJPWCkKKyNpbmNsdWRl
ICJTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaCIKKworI2luY2x1ZGUgPG1hY2gvbWFjaF90
cmFwcy5oPgorI2luY2x1ZGUgPG1hY2gvdGhyZWFkX3N3aXRjaC5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RhdGljIGlubGluZSB2b2lkIHlpZWxkKCkKK3sKKyAgICBjb25zdGV4cHIgbWFj
aF9tc2dfdGltZW91dF90IHRpbWVvdXRJbk1TID0gMTsKKyAgICB0aHJlYWRfc3dpdGNoKE1BQ0hf
UE9SVF9OVUxMLCBTV0lUQ0hfT1BUSU9OX0RFUFJFU1MsIHRpbWVvdXRJbk1TKTsKK30KKworCitT
aGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHM6OlNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kcygp
CisgICAgOiBtX3NoYXJlZE1lbW9yeShTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemVvZihGcmFt
ZUJvdW5kcykpKQoreworICAgIEFTU0VSVChtX3NoYXJlZE1lbW9yeSk7CisgICAgbmV3IChOb3RO
dWxsLCBtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSBGcmFtZUJvdW5kczsKKyAgICBBU1NFUlQoIWZy
YW1lQm91bmRzKCkucGFpci5maXJzdCAmJiAhZnJhbWVCb3VuZHMoKS5wYWlyLnNlY29uZCk7Cit9
CisKK1NoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kczo6U2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91
bmRzKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbiBwcm90ZWN0aW9uKQorICAgIDogbV9zaGFyZWRNZW1vcnkoU2hhcmVkTWVtb3J5Ojpt
YXAoaGFuZGxlLCBwcm90ZWN0aW9uKSkKK3sKKyAgICBBU1NFUlQobV9zaGFyZWRNZW1vcnkpOwor
fQorCit2b2lkIFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kczo6bG9ja1Nsb3coRnJhbWVCb3Vu
ZHMmIGJvdW5kcykKK3sKKyAgICB3aGlsZSAoIXRyeUxvY2soYm91bmRzKSkKKyAgICAgICAgeWll
bGQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTUVESUFU
T09MQk9YKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmlu
Z0J1ZmZlckZyYW1lQm91bmRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRS
aW5nQnVmZmVyRnJhbWVCb3VuZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODJhY2Q4NjhkNzRiMWI1ZjJlZjNi
NzRmN2UxMTkzMWI2OGQ3M2E4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzLmgKQEAgLTAsMCArMSwxMDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShNRURJQVRPT0xCT1gpCisKKyNp
bmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2hhcmVk
UmluZ0J1ZmZlckZyYW1lQm91bmRzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMpCitwdWJs
aWM6CisgICAgU2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzKCk7CisgICAgU2hhcmVkUmluZ0J1
ZmZlckZyYW1lQm91bmRzKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uKTsKKworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGNyZWF0ZUhhbmRsZShT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikKKyAgICB7CisgICAgICAgIFNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgYm9vbCBzdWNjZXNzID0gbV9zaGFyZWRN
ZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIHByb3RlY3Rpb24pOworICAgICAgICBBU1NFUlRf
VU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOworICAgICAgICByZXR1cm4gaGFuZGxlOworICAgIH0K
KworICAgIHZvaWQgc2V0KHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+JiYgcGFpcikKKyAg
ICB7CisgICAgICAgIGF1dG8mIGJvdW5kcyA9IGZyYW1lQm91bmRzKCk7CisgICAgICAgIGxvY2so
Ym91bmRzKTsKKyAgICAgICAgYm91bmRzLnBhaXIgPSBXVEZNb3ZlKHBhaXIpOworICAgICAgICB1
bmxvY2soYm91bmRzKTsKKyAgICB9CisKKyAgICBPcHRpb25hbDxzdGQ6OnBhaXI8dWludDY0X3Qs
IHVpbnQ2NF90Pj4gdHJ5R2V0KCkKKyAgICB7CisgICAgICAgIGF1dG8mIGJvdW5kcyA9IGZyYW1l
Qm91bmRzKCk7CisgICAgICAgIGlmICghdHJ5TG9jayhib3VuZHMpKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIHBhaXIgPSBib3VuZHMucGFpcjsKKyAg
ICAgICAgdW5sb2NrKGJvdW5kcyk7CisgICAgICAgIHJldHVybiBwYWlyOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBzdHJ1Y3QgRnJhbWVCb3VuZHMgeworICAgICAgICBBdG9taWM8Ym9vbD4gaXNM
b2NrZWQ7CisgICAgICAgIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IHBhaXI7CisgICAg
fTsKKworICAgIGJvb2wgdHJ5TG9jayhGcmFtZUJvdW5kcyYgYm91bmRzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICFib3VuZHMuaXNMb2NrZWQuZXhjaGFuZ2UodHJ1ZSwgc3RkOjptZW1vcnlfb3Jk
ZXJfYWNxdWlyZSk7CisgICAgfQorCisgICAgdm9pZCB1bmxvY2soRnJhbWVCb3VuZHMmIGJvdW5k
cykKKyAgICB7CisgICAgICAgIGJvdW5kcy5pc0xvY2tlZC5zdG9yZShmYWxzZSwgc3RkOjptZW1v
cnlfb3JkZXJfcmVsZWFzZSk7CisgICAgfQorCisgICAgdm9pZCBsb2NrKEZyYW1lQm91bmRzJiBi
b3VuZHMpCisgICAgeworICAgICAgICBpZiAoIXRyeUxvY2soYm91bmRzKSkKKyAgICAgICAgICAg
IGxvY2tTbG93KGJvdW5kcyk7CisgICAgfQorICAgIHZvaWQgbG9ja1Nsb3coRnJhbWVCb3VuZHMm
KTsKKworICAgIEZyYW1lQm91bmRzJiBmcmFtZUJvdW5kcygpIHsgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PEZyYW1lQm91bmRzKj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSk7IH0KKworICAgIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OworfTsKKworfQorCisjZW5kaWYgLy8g
VVNFKE1FRElBVE9PTEJPWCkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDU2NjhlNDRmNWY1
ZjBhYzRlMGQxMzUxMzUwYTE3OTg2M2E2ZTAzZDYuLjAxODdkNmYzMDRkZTgyYzRlM2I1MjI3NGU2
YzMwNTUwYTQ1Njg5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTE1OCw2ICsxNTgsNyBA
QCBTaGFyZWQvQ29jb2EvTG9hZFBhcmFtZXRlcnNDb2NvYS5tbQogU2hhcmVkL0NvY29hL1NhbmRi
b3hFeHRlbnNpb25Db2NvYS5tbQogU2hhcmVkL0NvY29hL1NhbmRib3hJbml0aWFsaWF0aW9uUGFy
YW1ldGVyc0NvY29hLm1tCiBTaGFyZWQvQ29jb2EvU2FuZGJveFV0aWxpdGllcy5tbQorU2hhcmVk
L0NvY29hL1NoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kcy5jcHAKIFNoYXJlZC9Db2NvYS9TaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5jcHAKIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbQogU2hhcmVkL0NvY29hL1dlYkVycm9yc0NvY29hLm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MGFjMmE3YzM5ZmU1
Y2U0ZGEyNzU1ZTZlMWM2NjJmY2JmMTk1Yjk2Li43ODJkYzJiOGEyODcxYzNmZTEyZDY1ZTlkMTM1
NjgyZTk3YzQ5ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTM2OTYsNiArMzY5Niw4IEBACiAJCTQ2MzIzNjg1MjMxNDgzM0YwMEE0
OEZBNyAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2ODYy
MzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MzQ3M0I2MjM1NjFEMkEwMEJFMUE4NCAvKiBXZWJCYWNrRm9yd2FyZENhY2hl
RW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYzQTFE
RTcyNTgxODk1ODAwNjM2NjJBIC8qIFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDYzQTFERTgyNTgxODk1ODAwNjM2NjJBIC8qIFNoYXJlZFJpbmdCdWZm
ZXJGcmFtZUJvdW5kcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRSaW5nQnVmZmVyRnJh
bWVCb3VuZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjNGRDQ3RjFFQjk0
NTg0MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cm9jZXNzVGVybWluYXRpb25SZWFzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY1MUVDRTYyMjE3OEE4NTAwNjdFQjk1IC8qIFdlYlByb2Nlc3NDYWNoZUNvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0NhY2hlQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODY5LDYgKzc4NzEsOCBAQAogCQkJ
CTdBQjRFQTQxMjI3NzdGQzcwMDg1QkJBQSAvKiBTYW5kYm94SW5pdGlhbGlhdGlvblBhcmFtZXRl
cnNDb2NvYS5tbSAqLywKIAkJCQlFMTlCREE4ODE5MzY4NkE0MDBCOTdGNTcgLyogU2FuZGJveFV0
aWxpdGllcy5oICovLAogCQkJCTdBQjRFQTQyMjI3NzgwREQwMDg1QkJBQSAvKiBTYW5kYm94VXRp
bGl0aWVzLm1tICovLAorCQkJCTQ2M0ExREU4MjU4MTg5NTgwMDYzNjYyQSAvKiBTaGFyZWRSaW5n
QnVmZmVyRnJhbWVCb3VuZHMuY3BwICovLAorCQkJCTQ2M0ExREU3MjU4MTg5NTgwMDYzNjYyQSAv
KiBTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaCAqLywKIAkJCQlDRDRCNEQ5QTFFNzY1RTAw
MDBEMjcwOTIgLyogU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuY3BwICovLAogCQkJCUNENEI0RDlC
MUU3NjVFMDAwMEQyNzA5MiAvKiBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oICovLAogCQkJCTFB
QjFGNzhFMUQxQjM0QTYwMDdDOUJEMSAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAppbmRleCBjOGM1ODI5MDUwYTUy
NThmOWQ5MzE5NzZiOTVmMDVlNTk3YTU2YjMxLi5iZWMwMGM4Yzc0YzM3NDY0MmI2NDNjZmU4YmYz
M2IyZjE1OThkOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJGcmFtZUJv
dW5kcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlv
QnVzLmg+CiAKQEAgLTc5LDEyICs4MCwxMyBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYQogdm9p
ZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogewog
ICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQ7CisgICAg
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgcmluZ0J1ZmZlckZyYW1lQm91bmRzU2hhcmVkSGFuZGxl
OwogCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMp
OwogICAgIGF1dG8gZGlkU3VjY2VlZCA9IGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRTeW5j
KAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0
ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVs
cywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpLCBzYW1wbGVSYXRlKCksIGhhcmR3YXJlU2FtcGxl
UmF0ZSgpKSwKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
OjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklEKSwgMCk7CisgICAg
ICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9E
ZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRpb25JRCwgcmluZ0J1ZmZlckZyYW1lQm91bmRzU2hh
cmVkSGFuZGxlKSwgMCk7CiAKICAgICBpZiAoIWRpZFN1Y2NlZWQpIHsKICAgICAgICAgLy8gVGhl
IEdQVVByb2Nlc3MgbGlrZWx5IGNyYXNoZWQgZHVyaW5nIHRoaXMgc3luY2hyb25vdXMgSVBDLiBn
cHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKCkgd2lsbCBnZXQgY2FsbGVkIHRvIHJlY29ubmVj
dCB0byB0aGUgR1BVUHJvY2Vzcy4KQEAgLTk3LDYgKzk5LDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgbV9jdXJyZW50RnJhbWUgPSAwOworICAgIG1fcmluZ0J1ZmZlckZyYW1lQm91bmRz
ID0gbWFrZVVuaXF1ZTxTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHM+KHJpbmdCdWZmZXJGcmFt
ZUJvdW5kc1NoYXJlZEhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZFdyaXRlKTsKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0Owog
ICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwogICAgIG1f
cmluZ0J1ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9ybWF0LCBtX251bWJlck9mRnJhbWVzKTsKQEAg
LTE0OCwxMiArMTUxLDEyIEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9w
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvCiB9CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpyZXF1ZXN0QnVm
ZmVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBob3N0VGltZSwgdWludDY0X3QgZnJhbWVz
VG9SZW5kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QsIHVpbnQ2NF90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpyZXF1
ZXN0QnVmZmVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBob3N0VGltZSwgdWludDY0X3Qg
ZnJhbWVzVG9SZW5kZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKICAgICBp
ZiAoIWhhc0Vub3VnaEZyYW1lcyhmcmFtZXNUb1JlbmRlcikpCi0gICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcigwLCAwKTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzdGFydEZy
YW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgbV9hdWRpb0J1ZmZlckxpc3QtPnNldFNhbXBsZUNv
dW50KGZyYW1lc1RvUmVuZGVyKTsKQEAgLTE2NCwxMCArMTY3LDkgQEAgdm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OnJlcXVlc3RCdWZmZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2
NF90IGhvc3QKIAogICAgIG1fcmluZ0J1ZmZlci0+c3RvcmUobV9hdWRpb0J1ZmZlckxpc3QtPmxp
c3QoKSwgZnJhbWVzVG9SZW5kZXIsIHN0YXJ0RnJhbWUpOwogCi0gICAgdWludDY0X3QgYm91bmRz
U3RhcnRGcmFtZTsKLSAgICB1aW50NjRfdCBib3VuZHNFbmRGcmFtZTsKLSAgICBtX3JpbmdCdWZm
ZXItPmdldEN1cnJlbnRGcmFtZUJvdW5kcyhib3VuZHNTdGFydEZyYW1lLCBib3VuZHNFbmRGcmFt
ZSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoYm91bmRzU3RhcnRGcmFtZSwgYm91bmRzRW5kRnJh
bWUpOworICAgIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IHBhaXI7CisgICAgbV9yaW5n
QnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMocGFpci5maXJzdCwgcGFpci5zZWNvbmQpOwor
ICAgIG1fcmluZ0J1ZmZlckZyYW1lQm91bmRzLT5zZXQoV1RGTW92ZShwYWlyKSk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKaW5kZXggMmU2MDBkNjdkYjVmYTE0
ODYzZDgwMGU2YTRkYWIyOWI1YTMzMjM5OC4uMmI2OTE0MzhjZDYyYzlhNjlkZTg3Y2RlMjY2OGY2
OGY2MzEzZTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCkBAIC00OSw2ICs0
OSw4IEBAIGNsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K2NsYXNzIFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kczsKKwogY2xhc3MgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgOiBwdWJsaWMgV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hCkBAIC03Miw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgcmVxdWVz
dEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IG51
bWJlck9mRnJhbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90IGJvdW5kc1N0YXJ0
RnJhbWUsIHVpbnQ2NF90IGJvdW5kc0VuZEZyYW1lKT4mJik7CisgICAgdm9pZCByZXF1ZXN0QnVm
ZmVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBob3N0VGltZSwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xMDksNiArMTExLDcgQEAgcHJpdmF0
ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzIHsg
MCB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+IG1fcmluZ0J1
ZmZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzPiBt
X3JpbmdCdWZmZXJGcmFtZUJvdW5kczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6V2Vi
QXVkaW9CdWZmZXJMaXN0PiBtX2F1ZGlvQnVmZmVyTGlzdDsKICAgICB1aW50NjRfdCBtX2N1cnJl
bnRGcmFtZSB7IDAgfTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM4NWUxMmQ3ODEyNDczZTA1ZWY1NWJlNzhhNGEwYjY4MjRi
ZDk3OTUuLjU4Y2E1ZGJhYzdlMjQ1OWNiMDljMzRkOTMzMzNlZWQzYzk5YjdlZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsy
NSw3IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBOb3RSZWZD
b3VudGVkIHsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZXF1ZXN0QnVmZmVyKGRvdWJsZSBz
YW1wbGVUaW1lLCB1aW50NjRfdCBob3N0VGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpIC0+
ICh1aW50NjRfdCBib3VuZHNTdGFydEZyYW1lLCB1aW50NjRfdCBib3VuZHNFbmRGcmFtZSkgQXN5
bmMKKyAgICBSZXF1ZXN0QnVmZmVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBob3N0VGlt
ZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiAjZW5kaWYKIH0KIAo=
</data>
<flag name="commit-queue"
          id="433113"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415809</attachid>
            <date>2020-12-09 16:17:36 -0800</date>
            <delta_ts>2020-12-09 16:26:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219715-20201209161736.patch</filename>
            <type>text/plain</type>
            <size>24735</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ3YWQxYzA1YTMzY2I0NDVi
YzQzZjU0MGFiN2QyNzExMzQ3NDYyZmQuLmNkNjZlZWQ3NDVkNzdmYzk3ZWI1YTBlMDNmZWM2ZjA2
NmY2YzNiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAtMTItMDkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gQ3V0IGluIGhh
bGYgYW1vdW50IG9mIElQQyBuZWVkZWQgdG8gZG8gV2ViQXVkaW8KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTcxNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1dCBpbiBoYWxmIGFtb3VudCBvZiBJUEMg
bmVlZGVkIHRvIGRvIFdlYkF1ZGlvLiBQcmV2aW91c2x5LCB3ZSB3b3VsZCBzZW5kIDIKKyAgICAg
ICAgSVBDcyBwZXIgcmVuZGVyaW5nIHF1YW50dW06CisgICAgICAgIDEuIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6UmVxdWVzdEJ1ZmZlciBmcm9tIEdQVVByb2Nlc3MgdG8gV2ViUHJvY2Vz
cworICAgICAgICAyLiBUaGUgcmVzcG9uc2UgdG8gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpSZXF1ZXN0QnVmZmVyIHdoaWNoIGNvbnRhaW5lZAorICAgICAgICAgICB0aGUgZnJhbWUgYm91
bmRzIGZvciB0aGUgUmluZ0J1ZmZlci4KKworICAgICAgICBUaGlzIHBhdGNoIGdldHMgcmlkIG9m
IElQQyAyIHdoeSBzdG9yaW5nIHRoZSBSaW5nQnVmZmVyIGJvdW5kcyBpbiBzaGFyZWQKKyAgICAg
ICAgbWVtb3J5LiBBcyBzb29uIGFzIHRoZSBXZWJQcm9jZXNzIHN0b3JlcyBzb21ldGhpbmcgaW4g
dGhlIFJpbmdCdWZmZXIsIGl0CisgICAgICAgIHVwZGF0ZXMgdGhlIFJpbmdCdWZmZXIgYm91bmRz
IGluIFNoYXJlZE1lbW9yeSAoaW5zdGVhZCBvZiBzZW5kaW5nIGFuIElQQykuCisgICAgICAgIEJl
Zm9yZSByZWFkaW5nIGZyb20gdGhlIFJpbmdCdWZmZXIsIHRoZSBHUFVQcm9jZXNzIGZpcnN0IHVw
ZGF0ZXMgdGhlCisgICAgICAgIFJpbmdCdWZmZXIncyBib3VuZHMgZnJvbSB0aGUgdmFsdWVzIGlu
IFNoYXJlZE1lbW9yeS4KKworICAgICAgICBUaGlzIGlzIHN0aWxsIHRvbyBtdWNoIElQQyBidXQg
dGhpcyBpcyBhIHN0ZXAgaW4gdGhlIHJpZ2h0IGRpcmVjdGx5LiBXZQorICAgICAgICBjYW4gaG9w
ZWZ1bGx5IGdldCByaWQgb2YgKG9yIGdyZWF0bHkgcmVkdWNlKSBJUEMgMSBpbiBhIGZvbGxvdy11
cCBwYXRjaC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
OjpjcmVhdGVSaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRIYW5kbGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6cmVuZGVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGlu
YXRpb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TaGFyZWRS
aW5nQnVmZmVyRnJhbWVCb3VuZHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6eWllbGQp
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHM6OlNoYXJlZFJp
bmdCdWZmZXJGcmFtZUJvdW5kcyk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJG
cmFtZUJvdW5kczo6bG9ja1Nsb3cpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TaGFyZWRSaW5n
QnVmZmVyRnJhbWVCb3VuZHMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdC
dWZmZXJGcmFtZUJvdW5kczo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVk
UmluZ0J1ZmZlckZyYW1lQm91bmRzOjpzZXQpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5n
QnVmZmVyRnJhbWVCb3VuZHM6OnRyeUdldCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdC
dWZmZXJGcmFtZUJvdW5kczo6dHJ5TG9jayk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdC
dWZmZXJGcmFtZUJvdW5kczo6dW5sb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1
ZmZlckZyYW1lQm91bmRzOjpsb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1ZmZl
ckZyYW1lQm91bmRzOjpmcmFtZUJvdW5kcyk6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJl
cXVlc3RCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjoKKwogMjAyMC0xMi0wOSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBjbGlj
a2luZyBvbiBsaW5rcyBpbiBQREZzIG9uIEJpZyBTdXIgYWZ0ZXIgcjI2NjY1NApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5jcHAKaW5kZXggOTU4NWZkZmE3OWQwMjhmNTQ4ZWFlMDNiMjQ2NTg0
MDlkOTQ1Mzg1MS4uYTYwOWI3YWM3MjhlMGE0ZjA2ZGMwMDQ5YTAyNGQyNDlhNDYyMDZlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkK
KyNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaCIKICNpbmNsdWRlICJTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9PdXRwdXRVbml0
QWRhcHRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+
CkBAIC0xMTMsNiArMTE0LDE1IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNQbGF5aW5nKCkgY29u
c3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAorICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGNy
ZWF0ZVJpbmdCdWZmZXJGcmFtZUJvdW5kc1NoYXJlZEhhbmRsZSgpCisgICAgeworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgICAgICByZXR1cm4gbV9yaW5nQnVmZmVyRnJhbWVCb3VuZHMtPmNyZWF0
ZUhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CisjZWxzZQorICAg
ICAgICByZXR1cm4geyB9OworI2VuZGlmCisgICAgfQorCiBwcml2YXRlOgogICAgIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSkKICAgICAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKQEAgLTEyMCw2ICsx
MzAsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICAsIG1fYXVkaW9P
dXRwdXRVbml0QWRhcHRvcigqdGhpcykKICAgICAgICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1
ZVJlZjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZl
clN0b3JhZ2U+KG51bGxwdHIpKSkKKyAgICAgICAgLCBtX3JpbmdCdWZmZXJGcmFtZUJvdW5kcyht
YWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kcz4oKSkKICNlbmRpZgogICAg
IHsKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE0Miw2ICsxNTMsOSBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24gfHwgIW1faXNQbGF5
aW5nKQogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKIAorICAgICAgICBpZiAoYXV0byByaW5n
QnVmZmVyQm91bmRzID0gbV9yaW5nQnVmZmVyRnJhbWVCb3VuZHMtPnRyeUdldCgpKQorICAgICAg
ICAgICAgbV9yaW5nQnVmZmVyLT5zZXRDdXJyZW50RnJhbWVCb3VuZHMocmluZ0J1ZmZlckJvdW5k
cy0+Zmlyc3QsIHJpbmdCdWZmZXJCb3VuZHMtPnNlY29uZCk7CisKICAgICAgICAgdWludDY0X3Qg
c3RhcnQ7CiAgICAgICAgIHVpbnQ2NF90IGVuZDsKICAgICAgICAgbV9yaW5nQnVmZmVyLT5nZXRD
dXJyZW50RnJhbWVCb3VuZHMoc3RhcnQsIGVuZCk7CkBAIC0xNTEsMTEgKzE2NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBzdGF0dXMgPSBub0VycjsKICAgICAgICAgfQogCi0gICAgICAgIG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIoc2FtcGxlVGltZSwgaG9zdFRp
bWUsIG51bWJlck9mRnJhbWVzKSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCwgdWlu
dDY0X3QpPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShhdXRvIGJvdW5k
c1N0YXJ0RnJhbWUsIGF1dG8gYm91bmRzRW5kRnJhbWUpIG11dGFibGUgewotICAgICAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgICAgIGlmIChib3VuZHNFbmRGcmFtZSkK
LSAgICAgICAgICAgICAgICBtX3JpbmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhib3Vu
ZHNTdGFydEZyYW1lLCBib3VuZHNFbmRGcmFtZSk7Ci0gICAgICAgIH0sIENvbXBsZXRpb25IYW5k
bGVyQ2FsbFRocmVhZDo6TWFpblRocmVhZCksIG1faWQudG9VSW50NjQoKSk7CisgICAgICAgIG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5OjpSZXF1ZXN0QnVmZmVyKHNhbXBsZVRpbWUsIGhvc3RUaW1lLCBudW1iZXJPZkZy
YW1lcyksIG1faWQudG9VSW50NjQoKSk7CiAKICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICB9
CkBAIC0xNzEsNiArMTgxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OkNBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiBtX2Rlc2NyaXB0aW9uOwogICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJp
bmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlckZy
YW1lQm91bmRzPiBtX3JpbmdCdWZmZXJGcmFtZUJvdW5kczsKICAgICB1aW50NjRfdCBtX3N0YXJ0
RnJhbWUgeyAwIH07CiAjZW5kaWYKIApAQCAtMTg1LDEyICsxOTYsMTMgQEAgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXI6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKEdQVUNvbm5l
Y3Rpb25Ub1dlYlAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjp+UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERl
dmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0
ZSwKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25JZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKICAgICBhdXRvIGRl
c3RpbmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVs
cywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRl
KTsKKyAgICBhdXRvIHJpbmdCdWZmZXJGcmFtZUJvdW5kc1NoYXJlZEhhbmRsZSA9IGRlc3RpbmF0
aW9uLT5jcmVhdGVSaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRIYW5kbGUoKTsKICAgICBtX2F1
ZGlvRGVzdGluYXRpb25zLmFkZChuZXdJRCwgV1RGTW92ZShkZXN0aW5hdGlvbikpOwotICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5ld0lEKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCwgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUoV1RGTW92ZShyaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRI
YW5kbGUpLCAwKSk7CiB9CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRl
bGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCBlMjJjMTBhY2U5YTg4NTZmMGNiMDg4Nzcy
YmIxNDViZWJmMTYwZmUyLi4yM2FjYTg2YzMzMTVkZjExNmE1YjFmYmI1NDllMTVlYTU1MzZkYThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaApAQCAtNTksNyArNTksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAotICAgIHZv
aWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVp
bnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyKT4mJik7Cisg
ICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJ
ZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlKT4mJik7CiAgICAgdm9pZCBkZWxldGVBdWRpb0Rlc3RpbmF0
aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA4YzZiZGU3YTJiZGM2ZmE1ZDk2ZjBh
NTMyZTIxYzFiMjU3YWI0MjgwLi42YzVkNjFkZjc5MmMxOTAwMzYwMmVhMDZmOGNjMDQ1ZTg5YzU3
ZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBA
IC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FV
RElPKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciBOb3RSZWZD
b3VudGVkIHsKLSAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlk
LCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4g
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3lu
Y2hyb25vdXMKKyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlk
LCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4g
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSByaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRI
YW5kbGUpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCiAK
ICAgICBTdGFydEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIEFzeW5jCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3Vu
ZHMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlckZyYW1l
Qm91bmRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzEzMGNkMTZlYjAwYWU5Y2Q4YTU3OGZjMTY3MGM3YjY2
MzJhMzVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hh
cmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKE1FRElBVE9PTEJPWCkKKyNpbmNsdWRl
ICJTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaCIKKworI2luY2x1ZGUgPG1hY2gvbWFjaF90
cmFwcy5oPgorI2luY2x1ZGUgPG1hY2gvdGhyZWFkX3N3aXRjaC5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RhdGljIGlubGluZSB2b2lkIHlpZWxkKCkKK3sKKyAgICBjb25zdGV4cHIgbWFj
aF9tc2dfdGltZW91dF90IHRpbWVvdXRJbk1TID0gMTsKKyAgICB0aHJlYWRfc3dpdGNoKE1BQ0hf
UE9SVF9OVUxMLCBTV0lUQ0hfT1BUSU9OX0RFUFJFU1MsIHRpbWVvdXRJbk1TKTsKK30KKworCitT
aGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHM6OlNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kcygp
CisgICAgOiBtX3NoYXJlZE1lbW9yeShTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemVvZihGcmFt
ZUJvdW5kcykpKQoreworICAgIEFTU0VSVChtX3NoYXJlZE1lbW9yeSk7CisgICAgbmV3IChOb3RO
dWxsLCBtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSBGcmFtZUJvdW5kczsKKyAgICBBU1NFUlQoIWZy
YW1lQm91bmRzKCkucGFpci5maXJzdCAmJiAhZnJhbWVCb3VuZHMoKS5wYWlyLnNlY29uZCk7Cit9
CisKK1NoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kczo6U2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91
bmRzKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbiBwcm90ZWN0aW9uKQorICAgIDogbV9zaGFyZWRNZW1vcnkoU2hhcmVkTWVtb3J5Ojpt
YXAoaGFuZGxlLCBwcm90ZWN0aW9uKSkKK3sKKyAgICBBU1NFUlQobV9zaGFyZWRNZW1vcnkpOwor
fQorCit2b2lkIFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kczo6bG9ja1Nsb3coRnJhbWVCb3Vu
ZHMmIGJvdW5kcykKK3sKKyAgICB3aGlsZSAoIXRyeUxvY2soYm91bmRzKSkKKyAgICAgICAgeWll
bGQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTUVESUFU
T09MQk9YKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmlu
Z0J1ZmZlckZyYW1lQm91bmRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRS
aW5nQnVmZmVyRnJhbWVCb3VuZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODJhY2Q4NjhkNzRiMWI1ZjJlZjNi
NzRmN2UxMTkzMWI2OGQ3M2E4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzLmgKQEAgLTAsMCArMSwxMDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShNRURJQVRPT0xCT1gpCisKKyNp
bmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2hhcmVk
UmluZ0J1ZmZlckZyYW1lQm91bmRzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMpCitwdWJs
aWM6CisgICAgU2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzKCk7CisgICAgU2hhcmVkUmluZ0J1
ZmZlckZyYW1lQm91bmRzKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uKTsKKworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGNyZWF0ZUhhbmRsZShT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikKKyAgICB7CisgICAgICAgIFNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgYm9vbCBzdWNjZXNzID0gbV9zaGFyZWRN
ZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIHByb3RlY3Rpb24pOworICAgICAgICBBU1NFUlRf
VU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOworICAgICAgICByZXR1cm4gaGFuZGxlOworICAgIH0K
KworICAgIHZvaWQgc2V0KHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+JiYgcGFpcikKKyAg
ICB7CisgICAgICAgIGF1dG8mIGJvdW5kcyA9IGZyYW1lQm91bmRzKCk7CisgICAgICAgIGxvY2so
Ym91bmRzKTsKKyAgICAgICAgYm91bmRzLnBhaXIgPSBXVEZNb3ZlKHBhaXIpOworICAgICAgICB1
bmxvY2soYm91bmRzKTsKKyAgICB9CisKKyAgICBPcHRpb25hbDxzdGQ6OnBhaXI8dWludDY0X3Qs
IHVpbnQ2NF90Pj4gdHJ5R2V0KCkKKyAgICB7CisgICAgICAgIGF1dG8mIGJvdW5kcyA9IGZyYW1l
Qm91bmRzKCk7CisgICAgICAgIGlmICghdHJ5TG9jayhib3VuZHMpKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIHBhaXIgPSBib3VuZHMucGFpcjsKKyAg
ICAgICAgdW5sb2NrKGJvdW5kcyk7CisgICAgICAgIHJldHVybiBwYWlyOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBzdHJ1Y3QgRnJhbWVCb3VuZHMgeworICAgICAgICBBdG9taWM8Ym9vbD4gaXNM
b2NrZWQ7CisgICAgICAgIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IHBhaXI7CisgICAg
fTsKKworICAgIGJvb2wgdHJ5TG9jayhGcmFtZUJvdW5kcyYgYm91bmRzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICFib3VuZHMuaXNMb2NrZWQuZXhjaGFuZ2UodHJ1ZSwgc3RkOjptZW1vcnlfb3Jk
ZXJfYWNxdWlyZSk7CisgICAgfQorCisgICAgdm9pZCB1bmxvY2soRnJhbWVCb3VuZHMmIGJvdW5k
cykKKyAgICB7CisgICAgICAgIGJvdW5kcy5pc0xvY2tlZC5zdG9yZShmYWxzZSwgc3RkOjptZW1v
cnlfb3JkZXJfcmVsZWFzZSk7CisgICAgfQorCisgICAgdm9pZCBsb2NrKEZyYW1lQm91bmRzJiBi
b3VuZHMpCisgICAgeworICAgICAgICBpZiAoIXRyeUxvY2soYm91bmRzKSkKKyAgICAgICAgICAg
IGxvY2tTbG93KGJvdW5kcyk7CisgICAgfQorICAgIHZvaWQgbG9ja1Nsb3coRnJhbWVCb3VuZHMm
KTsKKworICAgIEZyYW1lQm91bmRzJiBmcmFtZUJvdW5kcygpIHsgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PEZyYW1lQm91bmRzKj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSk7IH0KKworICAgIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OworfTsKKworfQorCisjZW5kaWYgLy8g
VVNFKE1FRElBVE9PTEJPWCkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDU2NjhlNDRmNWY1
ZjBhYzRlMGQxMzUxMzUwYTE3OTg2M2E2ZTAzZDYuLjAxODdkNmYzMDRkZTgyYzRlM2I1MjI3NGU2
YzMwNTUwYTQ1Njg5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTE1OCw2ICsxNTgsNyBA
QCBTaGFyZWQvQ29jb2EvTG9hZFBhcmFtZXRlcnNDb2NvYS5tbQogU2hhcmVkL0NvY29hL1NhbmRi
b3hFeHRlbnNpb25Db2NvYS5tbQogU2hhcmVkL0NvY29hL1NhbmRib3hJbml0aWFsaWF0aW9uUGFy
YW1ldGVyc0NvY29hLm1tCiBTaGFyZWQvQ29jb2EvU2FuZGJveFV0aWxpdGllcy5tbQorU2hhcmVk
L0NvY29hL1NoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kcy5jcHAKIFNoYXJlZC9Db2NvYS9TaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5jcHAKIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbQogU2hhcmVkL0NvY29hL1dlYkVycm9yc0NvY29hLm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MGFjMmE3YzM5ZmU1
Y2U0ZGEyNzU1ZTZlMWM2NjJmY2JmMTk1Yjk2Li43ODJkYzJiOGEyODcxYzNmZTEyZDY1ZTlkMTM1
NjgyZTk3YzQ5ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTM2OTYsNiArMzY5Niw4IEBACiAJCTQ2MzIzNjg1MjMxNDgzM0YwMEE0
OEZBNyAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2ODYy
MzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MzQ3M0I2MjM1NjFEMkEwMEJFMUE4NCAvKiBXZWJCYWNrRm9yd2FyZENhY2hl
RW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYzQTFE
RTcyNTgxODk1ODAwNjM2NjJBIC8qIFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDYzQTFERTgyNTgxODk1ODAwNjM2NjJBIC8qIFNoYXJlZFJpbmdCdWZm
ZXJGcmFtZUJvdW5kcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRSaW5nQnVmZmVyRnJh
bWVCb3VuZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjNGRDQ3RjFFQjk0
NTg0MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cm9jZXNzVGVybWluYXRpb25SZWFzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY1MUVDRTYyMjE3OEE4NTAwNjdFQjk1IC8qIFdlYlByb2Nlc3NDYWNoZUNvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0NhY2hlQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODY5LDYgKzc4NzEsOCBAQAogCQkJ
CTdBQjRFQTQxMjI3NzdGQzcwMDg1QkJBQSAvKiBTYW5kYm94SW5pdGlhbGlhdGlvblBhcmFtZXRl
cnNDb2NvYS5tbSAqLywKIAkJCQlFMTlCREE4ODE5MzY4NkE0MDBCOTdGNTcgLyogU2FuZGJveFV0
aWxpdGllcy5oICovLAogCQkJCTdBQjRFQTQyMjI3NzgwREQwMDg1QkJBQSAvKiBTYW5kYm94VXRp
bGl0aWVzLm1tICovLAorCQkJCTQ2M0ExREU4MjU4MTg5NTgwMDYzNjYyQSAvKiBTaGFyZWRSaW5n
QnVmZmVyRnJhbWVCb3VuZHMuY3BwICovLAorCQkJCTQ2M0ExREU3MjU4MTg5NTgwMDYzNjYyQSAv
KiBTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaCAqLywKIAkJCQlDRDRCNEQ5QTFFNzY1RTAw
MDBEMjcwOTIgLyogU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuY3BwICovLAogCQkJCUNENEI0RDlC
MUU3NjVFMDAwMEQyNzA5MiAvKiBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oICovLAogCQkJCTFB
QjFGNzhFMUQxQjM0QTYwMDdDOUJEMSAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAppbmRleCBjOGM1ODI5MDUwYTUy
NThmOWQ5MzE5NzZiOTVmMDVlNTk3YTU2YjMxLi5iODI2OGM1NWFmNDk3ZTVhM2ZkMjdkNWZjYzc2
ZmM3YzU3NGYyNDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0J1cy5oPgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCisjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlv
QnVmZmVyTGlzdC5oPgogI2VuZGlmCkBAIC03OSwxMiArODAsMTMgQEAgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkoQXVkaW9JT0NhbGxiYWNr
JiBjYWxsYmEKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQ
cm9jZXNzKCkKIHsKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBkZXN0aW5h
dGlvbklEOworICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHJpbmdCdWZmZXJGcmFtZUJvdW5k
c1NoYXJlZEhhbmRsZTsKIAogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24uYWRk
Q2xpZW50KCp0aGlzKTsKICAgICBhdXRvIGRpZFN1Y2NlZWQgPSBjb25uZWN0aW9uLmNvbm5lY3Rp
b24oKS5zZW5kU3luYygKICAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKG1faW5wdXREZXZpY2VJZCwgbV9udW1iZXJP
ZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSwgc2FtcGxlUmF0ZSgpLCBo
YXJkd2FyZVNhbXBsZVJhdGUoKSksCi0gICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRpb25J
RCksIDApOworICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQsIHJpbmdCdWZmZXJG
cmFtZUJvdW5kc1NoYXJlZEhhbmRsZSksIDApOwogCiAgICAgaWYgKCFkaWRTdWNjZWVkKSB7CiAg
ICAgICAgIC8vIFRoZSBHUFVQcm9jZXNzIGxpa2VseSBjcmFzaGVkIGR1cmluZyB0aGlzIHN5bmNo
cm9ub3VzIElQQy4gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSgpIHdpbGwgZ2V0IGNhbGxl
ZCB0byByZWNvbm5lY3QgdG8gdGhlIEdQVVByb2Nlc3MuCkBAIC05Nyw2ICs5OSw3IEBAIHZvaWQg
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIG1fY3VycmVudEZyYW1lID0gMDsKKyAgICBtX3JpbmdCdWZm
ZXJGcmFtZUJvdW5kcyA9IG1ha2VVbmlxdWU8U2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzPihy
aW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRXcml0ZSk7CiAgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0
cmVhbUZvcm1hdDsKICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9y
bWF0KTsKICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKHN0cmVhbUZvcm1hdCwgbV9udW1iZXJP
ZkZyYW1lcyk7CkBAIC0xNDgsMTIgKzE1MSwxMiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6c3RvcChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpbwog
fQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eTo6cmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVp
bnQ2NF90IGZyYW1lc1RvUmVuZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90LCB1
aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6cmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRp
bWUsIHVpbnQ2NF90IGZyYW1lc1RvUmVuZGVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCiAgICAgaWYgKCFoYXNFbm91Z2hGcmFtZXMoZnJhbWVzVG9SZW5kZXIpKQotICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoMCwgMCk7CisgICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8gc3RhcnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgIG1fYXVkaW9CdWZmZXJMaXN0
LT5zZXRTYW1wbGVDb3VudChmcmFtZXNUb1JlbmRlcik7CkBAIC0xNjQsMTAgKzE2Nyw5IEBAIHZv
aWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpyZXF1ZXN0QnVmZmVyKGRvdWJsZSBzYW1w
bGVUaW1lLCB1aW50NjRfdCBob3N0CiAKICAgICBtX3JpbmdCdWZmZXItPnN0b3JlKG1fYXVkaW9C
dWZmZXJMaXN0LT5saXN0KCksIGZyYW1lc1RvUmVuZGVyLCBzdGFydEZyYW1lKTsKIAotICAgIHVp
bnQ2NF90IGJvdW5kc1N0YXJ0RnJhbWU7Ci0gICAgdWludDY0X3QgYm91bmRzRW5kRnJhbWU7Ci0g
ICAgbV9yaW5nQnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoYm91bmRzU3RhcnRGcmFtZSwg
Ym91bmRzRW5kRnJhbWUpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGJvdW5kc1N0YXJ0RnJhbWUs
IGJvdW5kc0VuZEZyYW1lKTsKKyAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBwYWly
OworICAgIG1fcmluZ0J1ZmZlci0+Z2V0Q3VycmVudEZyYW1lQm91bmRzKHBhaXIuZmlyc3QsIHBh
aXIuc2Vjb25kKTsKKyAgICBtX3JpbmdCdWZmZXJGcmFtZUJvdW5kcy0+c2V0KFdURk1vdmUocGFp
cikpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCmluZGV4IDJl
NjAwZDY3ZGI1ZmExNDg2M2Q4MDBlNmE0ZGFiMjliNWEzMzIzOTguLjJiNjkxNDM4Y2Q2MmM5YTY5
ZGU4N2NkZTI2NjhmNjhmNjMxM2U3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHku
aApAQCAtNDksNiArNDksOCBAQCBjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3Q7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitjbGFzcyBTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHM7CisKIGNsYXNz
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIDog
cHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYQpAQCAtNzIsNyArNzQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICB2b2lkIHJlcXVlc3RCdWZmZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90IGhvc3RUaW1l
LCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCBib3VuZHNTdGFydEZyYW1lLCB1aW50NjRfdCBib3VuZHNFbmRGcmFtZSk+JiYpOworICAgIHZv
aWQgcmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVp
bnQ2NF90IG51bWJlck9mRnJhbWVzKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTA5LDYgKzEx
MSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgbV9udW1i
ZXJPZkZyYW1lcyB7IDAgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVm
ZmVyPiBtX3JpbmdCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZFJpbmdCdWZmZXJG
cmFtZUJvdW5kcz4gbV9yaW5nQnVmZmVyRnJhbWVCb3VuZHM7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CiAgICAgdWlu
dDY0X3QgbV9jdXJyZW50RnJhbWUgeyAwIH07CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCAzODVlMTJkNzgxMjQ3M2UwNWVmNTVi
ZTc4YTRhMGI2ODI0YmQ5Nzk1Li41OGNhNWRiYWM3ZTI0NTljYjA5YzM0ZDkzMzMzZWVkM2M5OWI3
ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5p
bgpAQCAtMjUsNyArMjUsNyBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkgTm90UmVmQ291bnRlZCB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVxdWVzdEJ1
ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzKSAtPiAodWludDY0X3QgYm91bmRzU3RhcnRGcmFtZSwgdWludDY0X3QgYm91bmRz
RW5kRnJhbWUpIEFzeW5jCisgICAgUmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWlu
dDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415811</attachid>
            <date>2020-12-09 16:26:43 -0800</date>
            <delta_ts>2020-12-10 13:22:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219715-20201209162642.patch</filename>
            <type>text/plain</type>
            <size>24735</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ3YWQxYzA1YTMzY2I0NDVi
YzQzZjU0MGFiN2QyNzExMzQ3NDYyZmQuLjJlNDk0Njk4Y2FiMTNlNTJmMjllNWY3MjY5ZWNjYWQ0
MzE0MjJhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAtMTItMDkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gQ3V0IGluIGhh
bGYgYW1vdW50IG9mIElQQyBuZWVkZWQgdG8gZG8gV2ViQXVkaW8KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTcxNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1dCBpbiBoYWxmIGFtb3VudCBvZiBJUEMg
bmVlZGVkIHRvIGRvIFdlYkF1ZGlvLiBQcmV2aW91c2x5LCB3ZSB3b3VsZCBzZW5kIDIKKyAgICAg
ICAgSVBDcyBwZXIgcmVuZGVyaW5nIHF1YW50dW06CisgICAgICAgIDEuIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6UmVxdWVzdEJ1ZmZlciBmcm9tIEdQVVByb2Nlc3MgdG8gV2ViUHJvY2Vz
cworICAgICAgICAyLiBUaGUgcmVzcG9uc2UgdG8gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpSZXF1ZXN0QnVmZmVyIHdoaWNoIGNvbnRhaW5lZAorICAgICAgICAgICB0aGUgZnJhbWUgYm91
bmRzIGZvciB0aGUgUmluZ0J1ZmZlci4KKworICAgICAgICBUaGlzIHBhdGNoIGdldHMgcmlkIG9m
IElQQyAyIGJ5IHN0b3JpbmcgdGhlIFJpbmdCdWZmZXIgYm91bmRzIGluIHNoYXJlZAorICAgICAg
ICBtZW1vcnkuIEFzIHNvb24gYXMgdGhlIFdlYlByb2Nlc3Mgc3RvcmVzIHNvbWV0aGluZyBpbiB0
aGUgUmluZ0J1ZmZlciwgaXQKKyAgICAgICAgdXBkYXRlcyB0aGUgUmluZ0J1ZmZlciBib3VuZHMg
aW4gU2hhcmVkTWVtb3J5IChpbnN0ZWFkIG9mIHNlbmRpbmcgYW4gSVBDKS4KKyAgICAgICAgQmVm
b3JlIHJlYWRpbmcgZnJvbSB0aGUgUmluZ0J1ZmZlciwgdGhlIEdQVVByb2Nlc3MgZmlyc3QgdXBk
YXRlcyB0aGUKKyAgICAgICAgUmluZ0J1ZmZlcidzIGJvdW5kcyBmcm9tIHRoZSB2YWx1ZXMgaW4g
U2hhcmVkTWVtb3J5LgorCisgICAgICAgIFRoaXMgaXMgc3RpbGwgdG9vIG11Y2ggSVBDIGJ1dCB0
aGlzIGlzIGEgc3RlcCBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiBXZQorICAgICAgICBjYW4gaG9w
ZWZ1bGx5IGdldCByaWQgb2YgKG9yIGdyZWF0bHkgcmVkdWNlKSBJUEMgMSBpbiBhIGZvbGxvdy11
cCBwYXRjaC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
OjpjcmVhdGVSaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRIYW5kbGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6cmVuZGVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGlu
YXRpb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TaGFyZWRS
aW5nQnVmZmVyRnJhbWVCb3VuZHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6eWllbGQp
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHM6OlNoYXJlZFJp
bmdCdWZmZXJGcmFtZUJvdW5kcyk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJG
cmFtZUJvdW5kczo6bG9ja1Nsb3cpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TaGFyZWRSaW5n
QnVmZmVyRnJhbWVCb3VuZHMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdC
dWZmZXJGcmFtZUJvdW5kczo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVk
UmluZ0J1ZmZlckZyYW1lQm91bmRzOjpzZXQpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5n
QnVmZmVyRnJhbWVCb3VuZHM6OnRyeUdldCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdC
dWZmZXJGcmFtZUJvdW5kczo6dHJ5TG9jayk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdC
dWZmZXJGcmFtZUJvdW5kczo6dW5sb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1
ZmZlckZyYW1lQm91bmRzOjpsb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1ZmZl
ckZyYW1lQm91bmRzOjpmcmFtZUJvdW5kcyk6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJl
cXVlc3RCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjoKKwogMjAyMC0xMi0wOSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBjbGlj
a2luZyBvbiBsaW5rcyBpbiBQREZzIG9uIEJpZyBTdXIgYWZ0ZXIgcjI2NjY1NApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5jcHAKaW5kZXggOTU4NWZkZmE3OWQwMjhmNTQ4ZWFlMDNiMjQ2NTg0
MDlkOTQ1Mzg1MS4uYTYwOWI3YWM3MjhlMGE0ZjA2ZGMwMDQ5YTAyNGQyNDlhNDYyMDZlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkK
KyNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaCIKICNpbmNsdWRlICJTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9PdXRwdXRVbml0
QWRhcHRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+
CkBAIC0xMTMsNiArMTE0LDE1IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNQbGF5aW5nKCkgY29u
c3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAorICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGNy
ZWF0ZVJpbmdCdWZmZXJGcmFtZUJvdW5kc1NoYXJlZEhhbmRsZSgpCisgICAgeworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgICAgICByZXR1cm4gbV9yaW5nQnVmZmVyRnJhbWVCb3VuZHMtPmNyZWF0
ZUhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CisjZWxzZQorICAg
ICAgICByZXR1cm4geyB9OworI2VuZGlmCisgICAgfQorCiBwcml2YXRlOgogICAgIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSkKICAgICAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKQEAgLTEyMCw2ICsx
MzAsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICAsIG1fYXVkaW9P
dXRwdXRVbml0QWRhcHRvcigqdGhpcykKICAgICAgICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1
ZVJlZjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZl
clN0b3JhZ2U+KG51bGxwdHIpKSkKKyAgICAgICAgLCBtX3JpbmdCdWZmZXJGcmFtZUJvdW5kcyht
YWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kcz4oKSkKICNlbmRpZgogICAg
IHsKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE0Miw2ICsxNTMsOSBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24gfHwgIW1faXNQbGF5
aW5nKQogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKIAorICAgICAgICBpZiAoYXV0byByaW5n
QnVmZmVyQm91bmRzID0gbV9yaW5nQnVmZmVyRnJhbWVCb3VuZHMtPnRyeUdldCgpKQorICAgICAg
ICAgICAgbV9yaW5nQnVmZmVyLT5zZXRDdXJyZW50RnJhbWVCb3VuZHMocmluZ0J1ZmZlckJvdW5k
cy0+Zmlyc3QsIHJpbmdCdWZmZXJCb3VuZHMtPnNlY29uZCk7CisKICAgICAgICAgdWludDY0X3Qg
c3RhcnQ7CiAgICAgICAgIHVpbnQ2NF90IGVuZDsKICAgICAgICAgbV9yaW5nQnVmZmVyLT5nZXRD
dXJyZW50RnJhbWVCb3VuZHMoc3RhcnQsIGVuZCk7CkBAIC0xNTEsMTEgKzE2NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBzdGF0dXMgPSBub0VycjsKICAgICAgICAgfQogCi0gICAgICAgIG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIoc2FtcGxlVGltZSwgaG9zdFRp
bWUsIG51bWJlck9mRnJhbWVzKSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCwgdWlu
dDY0X3QpPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShhdXRvIGJvdW5k
c1N0YXJ0RnJhbWUsIGF1dG8gYm91bmRzRW5kRnJhbWUpIG11dGFibGUgewotICAgICAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgICAgIGlmIChib3VuZHNFbmRGcmFtZSkK
LSAgICAgICAgICAgICAgICBtX3JpbmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhib3Vu
ZHNTdGFydEZyYW1lLCBib3VuZHNFbmRGcmFtZSk7Ci0gICAgICAgIH0sIENvbXBsZXRpb25IYW5k
bGVyQ2FsbFRocmVhZDo6TWFpblRocmVhZCksIG1faWQudG9VSW50NjQoKSk7CisgICAgICAgIG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5OjpSZXF1ZXN0QnVmZmVyKHNhbXBsZVRpbWUsIGhvc3RUaW1lLCBudW1iZXJPZkZy
YW1lcyksIG1faWQudG9VSW50NjQoKSk7CiAKICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICB9
CkBAIC0xNzEsNiArMTgxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OkNBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiBtX2Rlc2NyaXB0aW9uOwogICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJp
bmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlckZy
YW1lQm91bmRzPiBtX3JpbmdCdWZmZXJGcmFtZUJvdW5kczsKICAgICB1aW50NjRfdCBtX3N0YXJ0
RnJhbWUgeyAwIH07CiAjZW5kaWYKIApAQCAtMTg1LDEyICsxOTYsMTMgQEAgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXI6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKEdQVUNvbm5l
Y3Rpb25Ub1dlYlAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjp+UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERl
dmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0
ZSwKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25JZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKICAgICBhdXRvIGRl
c3RpbmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVs
cywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRl
KTsKKyAgICBhdXRvIHJpbmdCdWZmZXJGcmFtZUJvdW5kc1NoYXJlZEhhbmRsZSA9IGRlc3RpbmF0
aW9uLT5jcmVhdGVSaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRIYW5kbGUoKTsKICAgICBtX2F1
ZGlvRGVzdGluYXRpb25zLmFkZChuZXdJRCwgV1RGTW92ZShkZXN0aW5hdGlvbikpOwotICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5ld0lEKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCwgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUoV1RGTW92ZShyaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRI
YW5kbGUpLCAwKSk7CiB9CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRl
bGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCBlMjJjMTBhY2U5YTg4NTZmMGNiMDg4Nzcy
YmIxNDViZWJmMTYwZmUyLi4yM2FjYTg2YzMzMTVkZjExNmE1YjFmYmI1NDllMTVlYTU1MzZkYThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaApAQCAtNTksNyArNTksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAotICAgIHZv
aWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVp
bnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyKT4mJik7Cisg
ICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJ
ZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlKT4mJik7CiAgICAgdm9pZCBkZWxldGVBdWRpb0Rlc3RpbmF0
aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA4YzZiZGU3YTJiZGM2ZmE1ZDk2ZjBh
NTMyZTIxYzFiMjU3YWI0MjgwLi42YzVkNjFkZjc5MmMxOTAwMzYwMmVhMDZmOGNjMDQ1ZTg5YzU3
ZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBA
IC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FV
RElPKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciBOb3RSZWZD
b3VudGVkIHsKLSAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlk
LCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4g
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3lu
Y2hyb25vdXMKKyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlk
LCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4g
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSByaW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRI
YW5kbGUpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCiAK
ICAgICBTdGFydEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIEFzeW5jCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3Vu
ZHMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlckZyYW1l
Qm91bmRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzEzMGNkMTZlYjAwYWU5Y2Q4YTU3OGZjMTY3MGM3YjY2
MzJhMzVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hh
cmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKE1FRElBVE9PTEJPWCkKKyNpbmNsdWRl
ICJTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaCIKKworI2luY2x1ZGUgPG1hY2gvbWFjaF90
cmFwcy5oPgorI2luY2x1ZGUgPG1hY2gvdGhyZWFkX3N3aXRjaC5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RhdGljIGlubGluZSB2b2lkIHlpZWxkKCkKK3sKKyAgICBjb25zdGV4cHIgbWFj
aF9tc2dfdGltZW91dF90IHRpbWVvdXRJbk1TID0gMTsKKyAgICB0aHJlYWRfc3dpdGNoKE1BQ0hf
UE9SVF9OVUxMLCBTV0lUQ0hfT1BUSU9OX0RFUFJFU1MsIHRpbWVvdXRJbk1TKTsKK30KKworCitT
aGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHM6OlNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kcygp
CisgICAgOiBtX3NoYXJlZE1lbW9yeShTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemVvZihGcmFt
ZUJvdW5kcykpKQoreworICAgIEFTU0VSVChtX3NoYXJlZE1lbW9yeSk7CisgICAgbmV3IChOb3RO
dWxsLCBtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSBGcmFtZUJvdW5kczsKKyAgICBBU1NFUlQoIWZy
YW1lQm91bmRzKCkucGFpci5maXJzdCAmJiAhZnJhbWVCb3VuZHMoKS5wYWlyLnNlY29uZCk7Cit9
CisKK1NoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kczo6U2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91
bmRzKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbiBwcm90ZWN0aW9uKQorICAgIDogbV9zaGFyZWRNZW1vcnkoU2hhcmVkTWVtb3J5Ojpt
YXAoaGFuZGxlLCBwcm90ZWN0aW9uKSkKK3sKKyAgICBBU1NFUlQobV9zaGFyZWRNZW1vcnkpOwor
fQorCit2b2lkIFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kczo6bG9ja1Nsb3coRnJhbWVCb3Vu
ZHMmIGJvdW5kcykKK3sKKyAgICB3aGlsZSAoIXRyeUxvY2soYm91bmRzKSkKKyAgICAgICAgeWll
bGQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTUVESUFU
T09MQk9YKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmlu
Z0J1ZmZlckZyYW1lQm91bmRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRS
aW5nQnVmZmVyRnJhbWVCb3VuZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODJhY2Q4NjhkNzRiMWI1ZjJlZjNi
NzRmN2UxMTkzMWI2OGQ3M2E4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzLmgKQEAgLTAsMCArMSwxMDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShNRURJQVRPT0xCT1gpCisKKyNp
bmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2hhcmVk
UmluZ0J1ZmZlckZyYW1lQm91bmRzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMpCitwdWJs
aWM6CisgICAgU2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzKCk7CisgICAgU2hhcmVkUmluZ0J1
ZmZlckZyYW1lQm91bmRzKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uKTsKKworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGNyZWF0ZUhhbmRsZShT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikKKyAgICB7CisgICAgICAgIFNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgYm9vbCBzdWNjZXNzID0gbV9zaGFyZWRN
ZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIHByb3RlY3Rpb24pOworICAgICAgICBBU1NFUlRf
VU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOworICAgICAgICByZXR1cm4gaGFuZGxlOworICAgIH0K
KworICAgIHZvaWQgc2V0KHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+JiYgcGFpcikKKyAg
ICB7CisgICAgICAgIGF1dG8mIGJvdW5kcyA9IGZyYW1lQm91bmRzKCk7CisgICAgICAgIGxvY2so
Ym91bmRzKTsKKyAgICAgICAgYm91bmRzLnBhaXIgPSBXVEZNb3ZlKHBhaXIpOworICAgICAgICB1
bmxvY2soYm91bmRzKTsKKyAgICB9CisKKyAgICBPcHRpb25hbDxzdGQ6OnBhaXI8dWludDY0X3Qs
IHVpbnQ2NF90Pj4gdHJ5R2V0KCkKKyAgICB7CisgICAgICAgIGF1dG8mIGJvdW5kcyA9IGZyYW1l
Qm91bmRzKCk7CisgICAgICAgIGlmICghdHJ5TG9jayhib3VuZHMpKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIHBhaXIgPSBib3VuZHMucGFpcjsKKyAg
ICAgICAgdW5sb2NrKGJvdW5kcyk7CisgICAgICAgIHJldHVybiBwYWlyOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBzdHJ1Y3QgRnJhbWVCb3VuZHMgeworICAgICAgICBBdG9taWM8Ym9vbD4gaXNM
b2NrZWQ7CisgICAgICAgIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IHBhaXI7CisgICAg
fTsKKworICAgIGJvb2wgdHJ5TG9jayhGcmFtZUJvdW5kcyYgYm91bmRzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICFib3VuZHMuaXNMb2NrZWQuZXhjaGFuZ2UodHJ1ZSwgc3RkOjptZW1vcnlfb3Jk
ZXJfYWNxdWlyZSk7CisgICAgfQorCisgICAgdm9pZCB1bmxvY2soRnJhbWVCb3VuZHMmIGJvdW5k
cykKKyAgICB7CisgICAgICAgIGJvdW5kcy5pc0xvY2tlZC5zdG9yZShmYWxzZSwgc3RkOjptZW1v
cnlfb3JkZXJfcmVsZWFzZSk7CisgICAgfQorCisgICAgdm9pZCBsb2NrKEZyYW1lQm91bmRzJiBi
b3VuZHMpCisgICAgeworICAgICAgICBpZiAoIXRyeUxvY2soYm91bmRzKSkKKyAgICAgICAgICAg
IGxvY2tTbG93KGJvdW5kcyk7CisgICAgfQorICAgIHZvaWQgbG9ja1Nsb3coRnJhbWVCb3VuZHMm
KTsKKworICAgIEZyYW1lQm91bmRzJiBmcmFtZUJvdW5kcygpIHsgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PEZyYW1lQm91bmRzKj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSk7IH0KKworICAgIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OworfTsKKworfQorCisjZW5kaWYgLy8g
VVNFKE1FRElBVE9PTEJPWCkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDU2NjhlNDRmNWY1
ZjBhYzRlMGQxMzUxMzUwYTE3OTg2M2E2ZTAzZDYuLjAxODdkNmYzMDRkZTgyYzRlM2I1MjI3NGU2
YzMwNTUwYTQ1Njg5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTE1OCw2ICsxNTgsNyBA
QCBTaGFyZWQvQ29jb2EvTG9hZFBhcmFtZXRlcnNDb2NvYS5tbQogU2hhcmVkL0NvY29hL1NhbmRi
b3hFeHRlbnNpb25Db2NvYS5tbQogU2hhcmVkL0NvY29hL1NhbmRib3hJbml0aWFsaWF0aW9uUGFy
YW1ldGVyc0NvY29hLm1tCiBTaGFyZWQvQ29jb2EvU2FuZGJveFV0aWxpdGllcy5tbQorU2hhcmVk
L0NvY29hL1NoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kcy5jcHAKIFNoYXJlZC9Db2NvYS9TaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5jcHAKIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbQogU2hhcmVkL0NvY29hL1dlYkVycm9yc0NvY29hLm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MGFjMmE3YzM5ZmU1
Y2U0ZGEyNzU1ZTZlMWM2NjJmY2JmMTk1Yjk2Li43ODJkYzJiOGEyODcxYzNmZTEyZDY1ZTlkMTM1
NjgyZTk3YzQ5ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTM2OTYsNiArMzY5Niw4IEBACiAJCTQ2MzIzNjg1MjMxNDgzM0YwMEE0
OEZBNyAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzMjM2ODYy
MzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MzQ3M0I2MjM1NjFEMkEwMEJFMUE4NCAvKiBXZWJCYWNrRm9yd2FyZENhY2hl
RW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYzQTFE
RTcyNTgxODk1ODAwNjM2NjJBIC8qIFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDYzQTFERTgyNTgxODk1ODAwNjM2NjJBIC8qIFNoYXJlZFJpbmdCdWZm
ZXJGcmFtZUJvdW5kcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRSaW5nQnVmZmVyRnJh
bWVCb3VuZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjNGRDQ3RjFFQjk0
NTg0MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cm9jZXNzVGVybWluYXRpb25SZWFzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY1MUVDRTYyMjE3OEE4NTAwNjdFQjk1IC8qIFdlYlByb2Nlc3NDYWNoZUNvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0NhY2hlQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODY5LDYgKzc4NzEsOCBAQAogCQkJ
CTdBQjRFQTQxMjI3NzdGQzcwMDg1QkJBQSAvKiBTYW5kYm94SW5pdGlhbGlhdGlvblBhcmFtZXRl
cnNDb2NvYS5tbSAqLywKIAkJCQlFMTlCREE4ODE5MzY4NkE0MDBCOTdGNTcgLyogU2FuZGJveFV0
aWxpdGllcy5oICovLAogCQkJCTdBQjRFQTQyMjI3NzgwREQwMDg1QkJBQSAvKiBTYW5kYm94VXRp
bGl0aWVzLm1tICovLAorCQkJCTQ2M0ExREU4MjU4MTg5NTgwMDYzNjYyQSAvKiBTaGFyZWRSaW5n
QnVmZmVyRnJhbWVCb3VuZHMuY3BwICovLAorCQkJCTQ2M0ExREU3MjU4MTg5NTgwMDYzNjYyQSAv
KiBTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHMuaCAqLywKIAkJCQlDRDRCNEQ5QTFFNzY1RTAw
MDBEMjcwOTIgLyogU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuY3BwICovLAogCQkJCUNENEI0RDlC
MUU3NjVFMDAwMEQyNzA5MiAvKiBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oICovLAogCQkJCTFB
QjFGNzhFMUQxQjM0QTYwMDdDOUJEMSAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAppbmRleCBjOGM1ODI5MDUwYTUy
NThmOWQ5MzE5NzZiOTVmMDVlNTk3YTU2YjMxLi5iODI2OGM1NWFmNDk3ZTVhM2ZkMjdkNWZjYzc2
ZmM3YzU3NGYyNDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0J1cy5oPgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCisjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlv
QnVmZmVyTGlzdC5oPgogI2VuZGlmCkBAIC03OSwxMiArODAsMTMgQEAgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkoQXVkaW9JT0NhbGxiYWNr
JiBjYWxsYmEKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQ
cm9jZXNzKCkKIHsKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBkZXN0aW5h
dGlvbklEOworICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHJpbmdCdWZmZXJGcmFtZUJvdW5k
c1NoYXJlZEhhbmRsZTsKIAogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24uYWRk
Q2xpZW50KCp0aGlzKTsKICAgICBhdXRvIGRpZFN1Y2NlZWQgPSBjb25uZWN0aW9uLmNvbm5lY3Rp
b24oKS5zZW5kU3luYygKICAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKG1faW5wdXREZXZpY2VJZCwgbV9udW1iZXJP
ZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSwgc2FtcGxlUmF0ZSgpLCBo
YXJkd2FyZVNhbXBsZVJhdGUoKSksCi0gICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRpb25J
RCksIDApOworICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQsIHJpbmdCdWZmZXJG
cmFtZUJvdW5kc1NoYXJlZEhhbmRsZSksIDApOwogCiAgICAgaWYgKCFkaWRTdWNjZWVkKSB7CiAg
ICAgICAgIC8vIFRoZSBHUFVQcm9jZXNzIGxpa2VseSBjcmFzaGVkIGR1cmluZyB0aGlzIHN5bmNo
cm9ub3VzIElQQy4gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSgpIHdpbGwgZ2V0IGNhbGxl
ZCB0byByZWNvbm5lY3QgdG8gdGhlIEdQVVByb2Nlc3MuCkBAIC05Nyw2ICs5OSw3IEBAIHZvaWQg
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojpjb25uZWN0VG9HUFVQcm9jZXNzKCkKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIG1fY3VycmVudEZyYW1lID0gMDsKKyAgICBtX3JpbmdCdWZm
ZXJGcmFtZUJvdW5kcyA9IG1ha2VVbmlxdWU8U2hhcmVkUmluZ0J1ZmZlckZyYW1lQm91bmRzPihy
aW5nQnVmZmVyRnJhbWVCb3VuZHNTaGFyZWRIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRXcml0ZSk7CiAgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0
cmVhbUZvcm1hdDsKICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9y
bWF0KTsKICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKHN0cmVhbUZvcm1hdCwgbV9udW1iZXJP
ZkZyYW1lcyk7CkBAIC0xNDgsMTIgKzE1MSwxMiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6c3RvcChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpbwog
fQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eTo6cmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVp
bnQ2NF90IGZyYW1lc1RvUmVuZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90LCB1
aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6cmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRp
bWUsIHVpbnQ2NF90IGZyYW1lc1RvUmVuZGVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCiAgICAgaWYgKCFoYXNFbm91Z2hGcmFtZXMoZnJhbWVzVG9SZW5kZXIpKQotICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoMCwgMCk7CisgICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8gc3RhcnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgIG1fYXVkaW9CdWZmZXJMaXN0
LT5zZXRTYW1wbGVDb3VudChmcmFtZXNUb1JlbmRlcik7CkBAIC0xNjQsMTAgKzE2Nyw5IEBAIHZv
aWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpyZXF1ZXN0QnVmZmVyKGRvdWJsZSBzYW1w
bGVUaW1lLCB1aW50NjRfdCBob3N0CiAKICAgICBtX3JpbmdCdWZmZXItPnN0b3JlKG1fYXVkaW9C
dWZmZXJMaXN0LT5saXN0KCksIGZyYW1lc1RvUmVuZGVyLCBzdGFydEZyYW1lKTsKIAotICAgIHVp
bnQ2NF90IGJvdW5kc1N0YXJ0RnJhbWU7Ci0gICAgdWludDY0X3QgYm91bmRzRW5kRnJhbWU7Ci0g
ICAgbV9yaW5nQnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoYm91bmRzU3RhcnRGcmFtZSwg
Ym91bmRzRW5kRnJhbWUpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGJvdW5kc1N0YXJ0RnJhbWUs
IGJvdW5kc0VuZEZyYW1lKTsKKyAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBwYWly
OworICAgIG1fcmluZ0J1ZmZlci0+Z2V0Q3VycmVudEZyYW1lQm91bmRzKHBhaXIuZmlyc3QsIHBh
aXIuc2Vjb25kKTsKKyAgICBtX3JpbmdCdWZmZXJGcmFtZUJvdW5kcy0+c2V0KFdURk1vdmUocGFp
cikpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCmluZGV4IDJl
NjAwZDY3ZGI1ZmExNDg2M2Q4MDBlNmE0ZGFiMjliNWEzMzIzOTguLjJiNjkxNDM4Y2Q2MmM5YTY5
ZGU4N2NkZTI2NjhmNjhmNjMxM2U3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHku
aApAQCAtNDksNiArNDksOCBAQCBjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3Q7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitjbGFzcyBTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHM7CisKIGNsYXNz
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIDog
cHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYQpAQCAtNzIsNyArNzQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICB2b2lkIHJlcXVlc3RCdWZmZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90IGhvc3RUaW1l
LCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCBib3VuZHNTdGFydEZyYW1lLCB1aW50NjRfdCBib3VuZHNFbmRGcmFtZSk+JiYpOworICAgIHZv
aWQgcmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVp
bnQ2NF90IG51bWJlck9mRnJhbWVzKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTA5LDYgKzEx
MSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgbV9udW1i
ZXJPZkZyYW1lcyB7IDAgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVm
ZmVyPiBtX3JpbmdCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZFJpbmdCdWZmZXJG
cmFtZUJvdW5kcz4gbV9yaW5nQnVmZmVyRnJhbWVCb3VuZHM7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CiAgICAgdWlu
dDY0X3QgbV9jdXJyZW50RnJhbWUgeyAwIH07CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCAzODVlMTJkNzgxMjQ3M2UwNWVmNTVi
ZTc4YTRhMGI2ODI0YmQ5Nzk1Li41OGNhNWRiYWM3ZTI0NTljYjA5YzM0ZDkzMzMzZWVkM2M5OWI3
ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5p
bgpAQCAtMjUsNyArMjUsNyBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkgTm90UmVmQ291bnRlZCB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVxdWVzdEJ1
ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzKSAtPiAodWludDY0X3QgYm91bmRzU3RhcnRGcmFtZSwgdWludDY0X3QgYm91bmRz
RW5kRnJhbWUpIEFzeW5jCisgICAgUmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWlu
dDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415921</attachid>
            <date>2020-12-10 13:22:09 -0800</date>
            <delta_ts>2020-12-10 13:54:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219715-20201210132208.patch</filename>
            <type>text/plain</type>
            <size>56853</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE5YjdjY2JmMTY3YWI0
M2I1YWYzZWIzZmI0Y2QzMDM2MTdiZmI3ZS4uOGI2MmE5YzUyMmNjYTE1OTBkMDkzNTEwZTc0NWU0
MDBiZmE1N2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTEyLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIEN1dCBp
biBoYWxmIGFtb3VudCBvZiBJUEMgbmVlZGVkIHRvIGRvIFdlYkF1ZGlvCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3MTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXQgaW4gaGFsZiBhbW91bnQgb2Yg
SVBDIG5lZWRlZCB0byBkbyBXZWJBdWRpby4gUHJldmlvdXNseSwgd2Ugd291bGQgc2VuZCAyCisg
ICAgICAgIElQQ3MgcGVyIHJlbmRlcmluZyBxdWFudHVtOgorICAgICAgICAxLiBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIgZnJvbSBHUFVQcm9jZXNzIHRvIFdlYlBy
b2Nlc3MKKyAgICAgICAgMi4gVGhlIHJlc3BvbnNlIHRvIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eTo6UmVxdWVzdEJ1ZmZlciB3aGljaCBjb250YWluZWQKKyAgICAgICAgICAgdGhlIGZyYW1l
IGJvdW5kcyBmb3IgdGhlIFJpbmdCdWZmZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBnZXRzIHJp
ZCBvZiBJUEMgMiBieSBoYXZpbmcgdGhlIENBUmluZ0J1ZmZlciBjbGFzcyBzdG9yZSBpdHMgYm91
bmRzCisgICAgICAgIGluIGl0cyBtZW1vcnkgYmFja2luZy4gQXMgYSByZXN1bHQsIHdoZW4gdGhl
IENBUmluZ0J1ZmZlciBpcyB1c2luZyBhIHNoYXJlZAorICAgICAgICBtZW1vcnkgYmFja2luZywg
dGhlIGJvdW5kcyBnZXQgc2hhcmVkIGJldHdlZW4gcHJvY2Vzc2VzLCB3aXRob3V0IGFueSBuZWVk
IGZvcgorICAgICAgICBJUEMgdG8gc3luYyB0aGVtLgorCisgICAgICAgIFRoaXMgaXMgc3RpbGwg
dG9vIG11Y2ggSVBDIGJ1dCB0aGlzIGlzIGEgc3RlcCBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiBX
ZQorICAgICAgICBjYW4gaG9wZWZ1bGx5IGdldCByaWQgb2YgKG9yIGdyZWF0bHkgcmVkdWNlKSBJ
UEMgMSBpbiBhIGZvbGxvdy11cCBwYXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBs
ZURhdGFTb3VyY2U6OnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVua3MpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
QVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yOjpDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlcjo6Q0FSaW5nQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNBUmluZ0J1ZmZlcjo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVm
ZmVyU3RvcmFnZVZlY3Rvcjo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVy
OjpzZXRDdXJyZW50RnJhbWVCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVy
U3RvcmFnZVZlY3Rvcjo6c2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNBUmluZ0J1ZmZlcjo6Z2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNBUmluZ0J1ZmZlcjo6Z2V0Q3VycmVudEZyYW1lQm91bmRzV2l0aG91dFVwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yOjpnZXRDdXJyZW50RnJhbWVC
b3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVyOjpjbGlwVGltZUJvdW5kcyk6
CisgICAgICAgIChXZWJDb3JlOjpDQVJpbmdCdWZmZXI6OmN1cnJlbnRTdGFydEZyYW1lIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3I6OmN1cnJlbnRT
dGFydEZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlcjo6Y3VycmVu
dEVuZEZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlclN0b3JhZ2VW
ZWN0b3I6OmN1cnJlbnRFbmRGcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQVJpbmdC
dWZmZXI6OnVwZGF0ZUZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZl
cjo6ZmV0Y2hJZkhhc0Vub3VnaERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVy
OjpmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDQVJpbmdCdWZmZXI6OmZldGNoSW50ZXJuYWwp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVyU3RvcmFnZTo6dXBkYXRlRnJhbWVCb3VuZHMpOgorCiAy
MDIwLTEyLTEwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xG
Q11bSUZDXSBJbnRyb2R1Y2UgSW5saW5lVGV4dEl0ZW06OmlzV29yZFNlcGFyYXRvcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkNTM3MzdjMTNlODc0NzMwYmI3OGZlODdjYzdmYzk1M2VhNTgxOThmLi4wMGYzMmUwMjI1
MGIzNDc2M2VjMGI0NWRkMTcwYWJkMmViNzczZjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBA
CisyMDIwLTEyLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
W0dQVVByb2Nlc3NdIEN1dCBpbiBoYWxmIGFtb3VudCBvZiBJUEMgbmVlZGVkIHRvIGRvIFdlYkF1
ZGlvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3
MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXQg
aW4gaGFsZiBhbW91bnQgb2YgSVBDIG5lZWRlZCB0byBkbyBXZWJBdWRpby4gUHJldmlvdXNseSwg
d2Ugd291bGQgc2VuZCAyCisgICAgICAgIElQQ3MgcGVyIHJlbmRlcmluZyBxdWFudHVtOgorICAg
ICAgICAxLiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIgZnJvbSBH
UFVQcm9jZXNzIHRvIFdlYlByb2Nlc3MKKyAgICAgICAgMi4gVGhlIHJlc3BvbnNlIHRvIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVxdWVzdEJ1ZmZlciB3aGljaCBjb250YWluZWQKKyAg
ICAgICAgICAgdGhlIGZyYW1lIGJvdW5kcyBmb3IgdGhlIFJpbmdCdWZmZXIuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBnZXRzIHJpZCBvZiBJUEMgMiBieSBoYXZpbmcgdGhlIENBUmluZ0J1ZmZlciBj
bGFzcyBzdG9yZSBpdHMgYm91bmRzCisgICAgICAgIGluIGl0cyBtZW1vcnkgYmFja2luZy4gQXMg
YSByZXN1bHQsIHdoZW4gdGhlIENBUmluZ0J1ZmZlciBpcyB1c2luZyBhIHNoYXJlZAorICAgICAg
ICBtZW1vcnkgYmFja2luZywgdGhlIGJvdW5kcyBnZXQgc2hhcmVkIGJldHdlZW4gcHJvY2Vzc2Vz
LCB3aXRob3V0IGFueSBuZWVkIGZvcgorICAgICAgICBJUEMgdG8gc3luYyB0aGVtLgorCisgICAg
ICAgIFRoaXMgaXMgc3RpbGwgdG9vIG11Y2ggSVBDIGJ1dCB0aGlzIGlzIGEgc3RlcCBpbiB0aGUg
cmlnaHQgZGlyZWN0aW9uLiBXZQorICAgICAgICBjYW4gaG9wZWZ1bGx5IGdldCByaWQgb2YgKG9y
IGdyZWF0bHkgcmVkdWNlKSBJUEMgMSBpbiBhIGZvbGxvdy11cCBwYXRjaC4KKworICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjphdWRpb1NhbXBsZXNTdG9yYWdl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnJlbmRl
cik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJv
eHk6OnN0b3JhZ2VDaGFuZ2VkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjphdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
OjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmF1ZGlvU2FtcGxlc1N0b3JhZ2VD
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6YXVkaW9TYW1w
bGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0
b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6YWxs
b2NhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6c2hhcmVk
RnJhbWVCb3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6
ZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpnZXRDdXJy
ZW50RnJhbWVCb3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFn
ZTo6c2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2U6OnVwZGF0ZUZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2U6OmZsdXNoKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3RlQXVkaW9TYW1w
bGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjpy
ZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFn
ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5OjpyZXF1ZXN0QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5OjpzdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlk
ZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRl
ck1hbmFnZXI6OlJlbW90ZUF1ZGlvOjpzZXRTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI6OlJlbW90ZUF1ZGlvOjphdWRpb1NhbXBsZXNB
dmFpbGFibGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyOjpwdXNoU2FtcGxlcyk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyOjpzdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFSZWNvcmRlclByaXZhdGU6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUmVjb3JkZXJQcml2YXRlOjpzdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2Vy
OjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlcjo6UmVtb3RlQXVkaW86OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2Fn
ZXMuaW46CisKIDIwMjAtMTItMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MDU0Mi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckxp
c3QuY3BwCmluZGV4IGI1YjNhN2YxMjJlZjMyMjM3ZDkwNWQ4OGRhZjliMzdkZjI3OThlNmYuLmZk
ZjY3NzU3ZDFiNDc3NjA4MDhiMTNmYjQzNGU0MGIzZGZkMzBlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJMaXN0LmNwcApAQCAtMzEwLDggKzMxMCw3IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVy
TGlzdDo6Y29weUZyb20oQXVkaW9TYW1wbGVCdWZmZXJMaXN0JiBzb3VyY2UsIHNpemVfdCBmCiBP
U1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKENBUmluZ0J1ZmZlciYgcmlu
Z0J1ZmZlciwgc2l6ZV90IHNhbXBsZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lLCBDQVJpbmdC
dWZmZXI6OkZldGNoTW9kZSBtb2RlKQogewogICAgIHJlc2V0KCk7Ci0gICAgaWYgKHJpbmdCdWZm
ZXIuZmV0Y2goYnVmZmVyTGlzdCgpLmxpc3QoKSwgc2FtcGxlQ291bnQsIHN0YXJ0RnJhbWUsIG1v
ZGUpICE9IENBUmluZ0J1ZmZlcjo6T2spCi0gICAgICAgIHJldHVybiBrQXVkaW9fUGFyYW1FcnJv
cjsKKyAgICByaW5nQnVmZmVyLmZldGNoKGJ1ZmZlckxpc3QoKS5saXN0KCksIHNhbXBsZUNvdW50
LCBzdGFydEZyYW1lLCBtb2RlKTsKIAogICAgIG1fc2FtcGxlQ291bnQgPSBzYW1wbGVDb3VudDsK
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRleCBjZGUzZWI0OTc3Njk5
NTAzZjRhY2FmZThhZGVjODFjYTlkMzhlZDg5Li43NjRlYmY3ZTIzMjA3ZDdlMmU5YTdlNGNkMTkw
NGY3ZmY3Nzc0YTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0zMjQsOCArMzI0LDcg
QEAgYm9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVu
a3MoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIKICAgICB9CiAKICAgICB3aGlsZSAoZW5kRnJhbWUg
LSBzdGFydEZyYW1lID49IHNhbXBsZUNvdW50UGVyQ2h1bmspIHsKLSAgICAgICAgaWYgKG1fcmlu
Z0J1ZmZlci0+ZmV0Y2goJmJ1ZmZlciwgc2FtcGxlQ291bnRQZXJDaHVuaywgc3RhcnRGcmFtZSwg
Q0FSaW5nQnVmZmVyOjpDb3B5KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
bV9yaW5nQnVmZmVyLT5mZXRjaCgmYnVmZmVyLCBzYW1wbGVDb3VudFBlckNodW5rLCBzdGFydEZy
YW1lLCBDQVJpbmdCdWZmZXI6OkNvcHkpOwogICAgICAgICBjb25zdW1lRmlsbGVkQnVmZmVyKCk7
CiAgICAgICAgIHN0YXJ0RnJhbWUgKz0gc2FtcGxlQ291bnRQZXJDaHVuazsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNw
cAppbmRleCBlZDdhN2E1YmMxNDMzNjJmOTdhZjljYWQ5MjExMDhmYjMyMWZmODdlLi4yYWQxNWMy
NTFlZGMwYTRhNmMzODZjMzAxMGI5MTk2NmE0NjEzNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTM4LDkgKzM4
LDEzIEBAIGNvbnN0IHVpbnQzMl90IGtHZW5lcmFsUmluZ1RpbWVCb3VuZHNRdWV1ZU1hc2sgPSBr
R2VuZXJhbFJpbmdUaW1lQm91bmRzUXVldWVTaXplCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Q0FSaW5nQnVmZmVyU3RvcmFnZVZlY3Rvcjo6Q0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvcigpCisg
ICAgOiBtX3RpbWVCb3VuZHNRdWV1ZShrR2VuZXJhbFJpbmdUaW1lQm91bmRzUXVldWVTaXplKQor
eworfQorCiBDQVJpbmdCdWZmZXI6OkNBUmluZ0J1ZmZlcigpCiAgICAgOiBtX2J1ZmZlcnMobWFr
ZVVuaXF1ZVJlZjxDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yPigpKQotICAgICwgbV90aW1lQm91
bmRzUXVldWUoa0dlbmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVlU2l6ZSkKIHsKIH0KIApAQCAtNTEs
NyArNTUsNiBAQCBDQVJpbmdCdWZmZXI6On5DQVJpbmdCdWZmZXIoKQogCiBDQVJpbmdCdWZmZXI6
OkNBUmluZ0J1ZmZlcihVbmlxdWVSZWY8Q0FSaW5nQnVmZmVyU3RvcmFnZT4mJiBzdG9yYWdlKQog
ICAgIDogbV9idWZmZXJzKFdURk1vdmUoc3RvcmFnZSkpCi0gICAgLCBtX3RpbWVCb3VuZHNRdWV1
ZShrR2VuZXJhbFJpbmdUaW1lQm91bmRzUXVldWVTaXplKQogewogfQogCkBAIC0xNjUsNiArMTY4
LDExIEBAIGlubGluZSB2b2lkIFplcm9BQkwoQXVkaW9CdWZmZXJMaXN0KiBsaXN0LCBzaXplX3Qg
ZGVzdE9mZnNldCwgc2l6ZV90IG5ieXRlcykKIH0KIAogdm9pZCBDQVJpbmdCdWZmZXI6OmZsdXNo
KCkKK3sKKyAgICBtX2J1ZmZlcnMtPmZsdXNoKCk7Cit9CisKK3ZvaWQgQ0FSaW5nQnVmZmVyU3Rv
cmFnZVZlY3Rvcjo6Zmx1c2goKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY3VycmVudEZy
YW1lQm91bmRzTG9jayk7CiAgICAgZm9yIChhdXRvJiB0aW1lQm91bmRzIDogbV90aW1lQm91bmRz
UXVldWUpIHsKQEAgLTIzNCw2ICsyNDIsMTEgQEAgQ0FSaW5nQnVmZmVyOjpFcnJvciBDQVJpbmdC
dWZmZXI6OnN0b3JlKGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCogbGlzdCwgc2l6ZV90IGZyYW0KIH0K
IAogdm9pZCBDQVJpbmdCdWZmZXI6OnNldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCBzdGFy
dFRpbWUsIHVpbnQ2NF90IGVuZFRpbWUpCit7CisgICAgbV9idWZmZXJzLT5zZXRDdXJyZW50RnJh
bWVCb3VuZHMoc3RhcnRUaW1lLCBlbmRUaW1lKTsKK30KKwordm9pZCBDQVJpbmdCdWZmZXJTdG9y
YWdlVmVjdG9yOjpzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3Qgc3RhcnRUaW1lLCB1aW50
NjRfdCBlbmRUaW1lKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY3VycmVudEZyYW1lQm91
bmRzTG9jayk7CiAgICAgdWludDMyX3QgbmV4dFB0ciA9IG1fdGltZUJvdW5kc1F1ZXVlUHRyLmxv
YWQoKSArIDE7CkBAIC0yNDUsMTQgKzI1OCwyNSBAQCB2b2lkIENBUmluZ0J1ZmZlcjo6c2V0Q3Vy
cmVudEZyYW1lQm91bmRzKHVpbnQ2NF90IHN0YXJ0VGltZSwgdWludDY0X3QgZW5kVGltZSkKICAg
ICBtX3RpbWVCb3VuZHNRdWV1ZVB0cisrOwogfQogCi12b2lkIENBUmluZ0J1ZmZlcjo6Z2V0Q3Vy
cmVudEZyYW1lQm91bmRzKHVpbnQ2NF90ICZzdGFydFRpbWUsIHVpbnQ2NF90ICZlbmRUaW1lKQor
dm9pZCBDQVJpbmdCdWZmZXI6OmdldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCYgc3RhcnRG
cmFtZSwgdWludDY0X3QmIGVuZEZyYW1lKQoreworICAgIHVwZGF0ZUZyYW1lQm91bmRzKCk7Cisg
ICAgZ2V0Q3VycmVudEZyYW1lQm91bmRzV2l0aG91dFVwZGF0ZShzdGFydEZyYW1lLCBlbmRGcmFt
ZSk7Cit9CisKK3ZvaWQgQ0FSaW5nQnVmZmVyOjpnZXRDdXJyZW50RnJhbWVCb3VuZHNXaXRob3V0
VXBkYXRlKHVpbnQ2NF90JiBzdGFydEZyYW1lLCB1aW50NjRfdCYgZW5kRnJhbWUpCit7CisgICAg
bV9idWZmZXJzLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOwor
fQorCit2b2lkIENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3I6OmdldEN1cnJlbnRGcmFtZUJvdW5k
cyh1aW50NjRfdCYgc3RhcnRGcmFtZSwgdWludDY0X3QmIGVuZEZyYW1lKQogewogICAgIHVpbnQz
Ml90IGN1clB0ciA9IG1fdGltZUJvdW5kc1F1ZXVlUHRyLmxvYWQoKTsKICAgICB1aW50MzJfdCBp
bmRleCA9IGN1clB0ciAmIGtHZW5lcmFsUmluZ1RpbWVCb3VuZHNRdWV1ZU1hc2s7Ci0gICAgQ0FS
aW5nQnVmZmVyOjpUaW1lQm91bmRzJiBib3VuZHMgPSBtX3RpbWVCb3VuZHNRdWV1ZVtpbmRleF07
CisgICAgYXV0byYgYm91bmRzID0gbV90aW1lQm91bmRzUXVldWVbaW5kZXhdOwogCi0gICAgc3Rh
cnRUaW1lID0gYm91bmRzLm1fc3RhcnRGcmFtZTsKLSAgICBlbmRUaW1lID0gYm91bmRzLm1fZW5k
RnJhbWU7CisgICAgc3RhcnRGcmFtZSA9IGJvdW5kcy5tX3N0YXJ0RnJhbWU7CisgICAgZW5kRnJh
bWUgPSBib3VuZHMubV9lbmRGcmFtZTsKIH0KIAogdm9pZCBDQVJpbmdCdWZmZXI6OmNsaXBUaW1l
Qm91bmRzKHVpbnQ2NF90JiBzdGFydFJlYWQsIHVpbnQ2NF90JiBlbmRSZWFkKQpAQCAtMjYwLDcg
KzI4NCw3IEBAIHZvaWQgQ0FSaW5nQnVmZmVyOjpjbGlwVGltZUJvdW5kcyh1aW50NjRfdCYgc3Rh
cnRSZWFkLCB1aW50NjRfdCYgZW5kUmVhZCkKICAgICB1aW50NjRfdCBzdGFydFRpbWU7CiAgICAg
dWludDY0X3QgZW5kVGltZTsKIAotICAgIGdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydFRpbWUs
IGVuZFRpbWUpOworICAgIGdldEN1cnJlbnRGcmFtZUJvdW5kc1dpdGhvdXRVcGRhdGUoc3RhcnRU
aW1lLCBlbmRUaW1lKTsKIAogICAgIGlmIChzdGFydFJlYWQgPiBlbmRUaW1lIHx8IGVuZFJlYWQg
PCBzdGFydFRpbWUpIHsKICAgICAgICAgZW5kUmVhZCA9IHN0YXJ0UmVhZDsKQEAgLTI3MywyMSAr
Mjk3LDU3IEBAIHZvaWQgQ0FSaW5nQnVmZmVyOjpjbGlwVGltZUJvdW5kcyh1aW50NjRfdCYgc3Rh
cnRSZWFkLCB1aW50NjRfdCYgZW5kUmVhZCkKIH0KIAogdWludDY0X3QgQ0FSaW5nQnVmZmVyOjpj
dXJyZW50U3RhcnRGcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVmZmVycy0+Y3VycmVu
dFN0YXJ0RnJhbWUoKTsKK30KKwordWludDY0X3QgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3Rvcjo6
Y3VycmVudFN0YXJ0RnJhbWUoKSBjb25zdAogewogICAgIHVpbnQzMl90IGluZGV4ID0gbV90aW1l
Qm91bmRzUXVldWVQdHIubG9hZCgpICYga0dlbmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVlTWFzazsK
ICAgICByZXR1cm4gbV90aW1lQm91bmRzUXVldWVbaW5kZXhdLm1fc3RhcnRGcmFtZTsKIH0KIAog
dWludDY0X3QgQ0FSaW5nQnVmZmVyOjpjdXJyZW50RW5kRnJhbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2J1ZmZlcnMtPmN1cnJlbnRFbmRGcmFtZSgpOworfQorCit1aW50NjRfdCBDQVJpbmdC
dWZmZXJTdG9yYWdlVmVjdG9yOjpjdXJyZW50RW5kRnJhbWUoKSBjb25zdAogewogICAgIHVpbnQz
Ml90IGluZGV4ID0gbV90aW1lQm91bmRzUXVldWVQdHIubG9hZCgpICYga0dlbmVyYWxSaW5nVGlt
ZUJvdW5kc1F1ZXVlTWFzazsKICAgICByZXR1cm4gbV90aW1lQm91bmRzUXVldWVbaW5kZXhdLm1f
ZW5kRnJhbWU7CiB9CiAKLUNBUmluZ0J1ZmZlcjo6RXJyb3IgQ0FSaW5nQnVmZmVyOjpmZXRjaChB
dWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBuRnJhbWVzLCB1aW50NjRfdCBzdGFydFJlYWQs
IEZldGNoTW9kZSBtb2RlKQordm9pZCBDQVJpbmdCdWZmZXI6OnVwZGF0ZUZyYW1lQm91bmRzKCkK
K3sKKyAgICBtX2J1ZmZlcnMtPnVwZGF0ZUZyYW1lQm91bmRzKCk7Cit9CisKK2Jvb2wgQ0FSaW5n
QnVmZmVyOjpmZXRjaElmSGFzRW5vdWdoRGF0YShBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVf
dCBmcmFtZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lLCBGZXRjaE1vZGUgbW9kZSkKK3sKKyAg
ICAvLyBXaGVuIHRoZSBSaW5nQnVmZmVyIGlzIGJhY2tlZCBieSBzaGFyZWQgbWVtb3J5LCBtYWtl
IHN1cmUgd2UgcHVsbCBmcmFtZSBib3VuZHMgZnJvbSBzaGFyZWQgbWVtb3J5IGJlZm9yZSBmZXRj
aGluZy4KKyAgICB1cGRhdGVGcmFtZUJvdW5kcygpOworCisgICAgdWludDY0X3Qgc3RhcnQsIGVu
ZDsKKyAgICBnZXRDdXJyZW50RnJhbWVCb3VuZHNXaXRob3V0VXBkYXRlKHN0YXJ0LCBlbmQpOwor
ICAgIGlmIChzdGFydEZyYW1lIDwgc3RhcnQgfHwgc3RhcnRGcmFtZSArIGZyYW1lQ291bnQgPiBl
bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZldGNoSW50ZXJuYWwobGlzdCwgZnJh
bWVDb3VudCwgc3RhcnRGcmFtZSwgbW9kZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
Q0FSaW5nQnVmZmVyOjpmZXRjaChBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBmcmFtZUNv
dW50LCB1aW50NjRfdCBzdGFydFJlYWQsIEZldGNoTW9kZSBtb2RlKQoreworICAgIC8vIFdoZW4g
dGhlIFJpbmdCdWZmZXIgaXMgYmFja2VkIGJ5IHNoYXJlZCBtZW1vcnksIG1ha2Ugc3VyZSB3ZSBw
dWxsIGZyYW1lIGJvdW5kcyBmcm9tIHNoYXJlZCBtZW1vcnkgYmVmb3JlIGZldGNoaW5nLgorICAg
IHVwZGF0ZUZyYW1lQm91bmRzKCk7CisgICAgZmV0Y2hJbnRlcm5hbChsaXN0LCBmcmFtZUNvdW50
LCBzdGFydFJlYWQsIG1vZGUpOworfQorCit2b2lkIENBUmluZ0J1ZmZlcjo6ZmV0Y2hJbnRlcm5h
bChBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBuRnJhbWVzLCB1aW50NjRfdCBzdGFydFJl
YWQsIEZldGNoTW9kZSBtb2RlKQogewogICAgIGlmICghbkZyYW1lcykKLSAgICAgICAgcmV0dXJu
IE9rOworICAgICAgICByZXR1cm47CiAgICAgCiAgICAgc3RhcnRSZWFkID0gc3RkOjptYXg8dWlu
dDY0X3Q+KDAsIHN0YXJ0UmVhZCk7CiAgICAgCkBAIC0zMDAsNyArMzYwLDcgQEAgQ0FSaW5nQnVm
ZmVyOjpFcnJvciBDQVJpbmdCdWZmZXI6OmZldGNoKEF1ZGlvQnVmZmVyTGlzdCogbGlzdCwgc2l6
ZV90IG5GcmFtZXMsIHUKIAogICAgIGlmIChzdGFydFJlYWQgPT0gZW5kUmVhZCkgewogICAgICAg
ICBaZXJvQUJMKGxpc3QsIDAsIG5GcmFtZXMgKiBtX2J5dGVzUGVyRnJhbWUpOwotICAgICAgICBy
ZXR1cm4gT2s7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgc2l6ZV90IGJ5dGVT
aXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigoZW5kUmVhZCAtIHN0YXJ0UmVhZCkgKiBtX2J5dGVz
UGVyRnJhbWUpOwpAQCAtMzM1LDggKzM5NSw2IEBAIENBUmluZ0J1ZmZlcjo6RXJyb3IgQ0FSaW5n
QnVmZmVyOjpmZXRjaChBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBuRnJhbWVzLCB1CiAg
ICAgICAgIGRlc3QtPm1EYXRhQnl0ZVNpemUgPSBuYnl0ZXM7CiAgICAgICAgIGRlc3QrKzsKICAg
ICB9Ci0gICAgCi0gICAgcmV0dXJuIE9rOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5oCmluZGV4IDNkODk0YjA2NWUxYjVj
ZDMwYmRlOGY3NDA0MzcwNDhkNzY4Yjk3MDUuLmIzMGQ5MzFlNjVhYzM4MjBiMDVjZDdhNTRkYmM2
ZTViY2UxMmIyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0NBUmluZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0NBUmluZ0J1ZmZlci5oCkBAIC00NSwxNyArNDUsNDUgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBhbGxvY2F0ZShzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVhbGxvY2F0
ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQqIGRhdGEoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCYgc3RhcnRUaW1lLCB1aW50NjRfdCYgZW5k
VGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0
X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRnJhbWVCb3VuZHMoKSB7IH0KKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGN1cnJlbnRTdGFy
dEZyYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdWludDY0X3QgY3VycmVudEVuZEZyYW1l
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmbHVzaCgpID0gMDsKIH07CiAKIGNsYXNz
IENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3IgZmluYWwgOiBwdWJsaWMgQ0FSaW5nQnVmZmVyU3Rv
cmFnZSB7CiBwdWJsaWM6CisgICAgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvcigpOwogICAgIH5D
QVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yKCkgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIHZv
aWQgYWxsb2NhdGUoc2l6ZV90IGJ5dGVDb3VudCkgZmluYWwgeyBtX2J1ZmZlci5ncm93KGJ5dGVD
b3VudCk7IH0KICAgICB2b2lkIGRlYWxsb2NhdGUoKSBmaW5hbCB7IG1fYnVmZmVyLmNsZWFyKCk7
IH0KICAgICB2b2lkKiBkYXRhKCkgZmluYWwgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9Cisg
ICAgdm9pZCBnZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3QmIHN0YXJ0VGltZSwgdWludDY0
X3QmIGVuZFRpbWUpIGZpbmFsOworICAgIHZvaWQgc2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2
NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKSBmaW5hbDsKKyAgICB1aW50NjRfdCBj
dXJyZW50U3RhcnRGcmFtZSgpIGNvbnN0OworICAgIHVpbnQ2NF90IGN1cnJlbnRFbmRGcmFtZSgp
IGNvbnN0OworICAgIHZvaWQgZmx1c2goKSBmaW5hbDsKKworICAgIHN0cnVjdCBUaW1lQm91bmRz
IHsKKyAgICAgICAgVGltZUJvdW5kcygpCisgICAgICAgICAgICA6IG1fc3RhcnRGcmFtZSgwKQor
ICAgICAgICAgICAgLCBtX2VuZEZyYW1lKDApCisgICAgICAgICAgICAsIG1fdXBkYXRlQ291bnRl
cigwKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgdm9sYXRpbGUgdWludDY0X3QgbV9z
dGFydEZyYW1lOworICAgICAgICB2b2xhdGlsZSB1aW50NjRfdCBtX2VuZEZyYW1lOworICAgICAg
ICB2b2xhdGlsZSB1aW50MzJfdCBtX3VwZGF0ZUNvdW50ZXI7CisgICAgfTsKKwogICAgIFZlY3Rv
cjx1aW50OF90PiBtX2J1ZmZlcjsKKyAgICBWZWN0b3I8VGltZUJvdW5kcz4gbV90aW1lQm91bmRz
UXVldWU7CisgICAgTG9jayBtX2N1cnJlbnRGcmFtZUJvdW5kc0xvY2s7CisgICAgc3RkOjphdG9t
aWM8aW50MzJfdD4gbV90aW1lQm91bmRzUXVldWVQdHIgeyAwIH07CiB9OwogCiBjbGFzcyBDQVJp
bmdCdWZmZXIgewpAQCAtNzYsMjAgKzEwNCwyNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgRXJyb3Igc3RvcmUoY29uc3QgQXVkaW9CdWZmZXJMaXN0Kiwgc2l6ZV90IGZyYW1lQ291bnQs
IHVpbnQ2NF90IHN0YXJ0RnJhbWUpOwogCiAgICAgZW51bSBGZXRjaE1vZGUgeyBDb3B5LCBNaXgg
fTsKLSAgICBXRUJDT1JFX0VYUE9SVCBFcnJvciBmZXRjaChBdWRpb0J1ZmZlckxpc3QqLCBzaXpl
X3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2RlID0gQ29weSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBmZXRjaElmSGFzRW5vdWdoRGF0YShBdWRpb0J1ZmZlckxp
c3QqLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2RlID0g
Q29weSk7CisKKyAgICAvLyBGaWxscyBidWZmZXIgd2l0aCBzaWxlbmNlIGlmIHRoZXJlIGlzIG5v
dCBlbm91Z2ggZGF0YS4KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZldGNoKEF1ZGlvQnVmZmVy
TGlzdCosIHNpemVfdCBmcmFtZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lLCBGZXRjaE1vZGUg
PSBDb3B5KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmx1c2goKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZ2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2NF90ICZzdGFydFRpbWUs
IHVpbnQ2NF90ICZlbmRUaW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRG
cmFtZUJvdW5kcyh1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3QmIHN0YXJ0
RnJhbWUsIHVpbnQ2NF90JiBlbmRGcmFtZSk7CiAKICAgICB1aW50MzJfdCBjaGFubmVsQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxDb3VudDsgfQogICAgIENBUmluZ0J1ZmZlclN0b3Jh
Z2UmIHN0b3JhZ2UoKSB7IHJldHVybiBtX2J1ZmZlcnM7IH0KIAogcHJpdmF0ZToKKyAgICB2b2lk
IHVwZGF0ZUZyYW1lQm91bmRzKCk7CiAgICAgc2l6ZV90IGZyYW1lT2Zmc2V0KHVpbnQ2NF90IGZy
YW1lTnVtYmVyKSB7IHJldHVybiAoZnJhbWVOdW1iZXIgJiBtX2ZyYW1lQ291bnRNYXNrKSAqIG1f
Ynl0ZXNQZXJGcmFtZTsgfQogCiAgICAgdm9pZCBjbGlwVGltZUJvdW5kcyh1aW50NjRfdCYgc3Rh
cnRSZWFkLCB1aW50NjRfdCYgZW5kUmVhZCk7CisgICAgdm9pZCBzZXRDdXJyZW50RnJhbWVCb3Vu
ZHModWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpOworCisgICAgdm9pZCBn
ZXRDdXJyZW50RnJhbWVCb3VuZHNXaXRob3V0VXBkYXRlKHVpbnQ2NF90JiBzdGFydEZyYW1lLCB1
aW50NjRfdCYgZW5kRnJhbWUpOworICAgIHZvaWQgZmV0Y2hJbnRlcm5hbChBdWRpb0J1ZmZlckxp
c3QqLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2RlKTsK
IAogICAgIHVpbnQ2NF90IGN1cnJlbnRTdGFydEZyYW1lKCkgY29uc3Q7CiAgICAgdWludDY0X3Qg
Y3VycmVudEVuZEZyYW1lKCkgY29uc3Q7CkBAIC0xMDIsMjIgKzEzNyw3IEBAIHByaXZhdGU6CiAg
ICAgdWludDMyX3QgbV9mcmFtZUNvdW50TWFzayB7IDAgfTsKICAgICBzaXplX3QgbV9jYXBhY2l0
eUJ5dGVzIHsgMCB9OwogCi0gICAgc3RydWN0IFRpbWVCb3VuZHMgewotICAgICAgICBUaW1lQm91
bmRzKCkKLSAgICAgICAgICAgIDogbV9zdGFydEZyYW1lKDApCi0gICAgICAgICAgICAsIG1fZW5k
RnJhbWUoMCkKLSAgICAgICAgICAgICwgbV91cGRhdGVDb3VudGVyKDApCi0gICAgICAgIHsKLSAg
ICAgICAgfQotICAgICAgICB2b2xhdGlsZSB1aW50NjRfdCBtX3N0YXJ0RnJhbWU7Ci0gICAgICAg
IHZvbGF0aWxlIHVpbnQ2NF90IG1fZW5kRnJhbWU7Ci0gICAgICAgIHZvbGF0aWxlIHVpbnQzMl90
IG1fdXBkYXRlQ291bnRlcjsKLSAgICB9OwotCiAgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
IG1fZGVzY3JpcHRpb247Ci0gICAgVmVjdG9yPFRpbWVCb3VuZHM+IG1fdGltZUJvdW5kc1F1ZXVl
OwotICAgIExvY2sgbV9jdXJyZW50RnJhbWVCb3VuZHNMb2NrOwotICAgIHN0ZDo6YXRvbWljPGlu
dDMyX3Q+IG1fdGltZUJvdW5kc1F1ZXVlUHRyIHsgMCB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlci5jcHAKaW5kZXggOTU4NWZkZmE3OWQwMjhmNTQ4ZWFlMDNiMjQ2NTg0MDlk
OTQ1Mzg1MS4uYmYwMmJjMDc2MTA0MzYwZTE5ZGM1ODBmODU1ZTYyNzQyNzU4OTViNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gbWVtb3J5ID0gU2hh
cmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7CisgICAgICAgIGF1dG8gbWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaXBj
SGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwogICAg
ICAgICBzdG9yYWdlKCkuc2V0U3RvcmFnZShXVEZNb3ZlKG1lbW9yeSkpOwogICAgICAgICBzdG9y
YWdlKCkuc2V0UmVhZE9ubHkodHJ1ZSk7CiAgICAgICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUo
ZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKQEAgLTE0MiwyMCArMTQyLDEyIEBAIHByaXZh
dGU6CiAgICAgICAgIGlmIChtX3Byb3RlY3RUaGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93biB8fCAh
bV9pc1BsYXlpbmcpCiAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOwogCi0gICAgICAgIHVpbnQ2
NF90IHN0YXJ0OwotICAgICAgICB1aW50NjRfdCBlbmQ7Ci0gICAgICAgIG1fcmluZ0J1ZmZlci0+
Z2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0LCBlbmQpOwotICAgICAgICBpZiAobV9zdGFydEZy
YW1lID49IHN0YXJ0ICYmIG1fc3RhcnRGcmFtZSArIG51bWJlck9mRnJhbWVzIDw9IGVuZCkgewot
ICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaChpb0RhdGEsIG51bWJlck9mRnJhbWVzLCBt
X3N0YXJ0RnJhbWUpOworICAgICAgICBpZiAobV9yaW5nQnVmZmVyLT5mZXRjaElmSGFzRW5vdWdo
RGF0YShpb0RhdGEsIG51bWJlck9mRnJhbWVzLCBtX3N0YXJ0RnJhbWUpKSB7CiAgICAgICAgICAg
ICBtX3N0YXJ0RnJhbWUgKz0gbnVtYmVyT2ZGcmFtZXM7CiAgICAgICAgICAgICBzdGF0dXMgPSBu
b0VycjsKICAgICAgICAgfQogCi0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJl
cXVlc3RCdWZmZXIoc2FtcGxlVGltZSwgaG9zdFRpbWUsIG51bWJlck9mRnJhbWVzKSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCwgdWludDY0X3QpPihbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXShhdXRvIGJvdW5kc1N0YXJ0RnJhbWUsIGF1dG8gYm91bmRzRW5k
RnJhbWUpIG11dGFibGUgewotICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICAgICAgICAgIGlmIChib3VuZHNFbmRGcmFtZSkKLSAgICAgICAgICAgICAgICBtX3JpbmdCdWZm
ZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhib3VuZHNTdGFydEZyYW1lLCBib3VuZHNFbmRGcmFt
ZSk7Ci0gICAgICAgIH0sIENvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6TWFpblRocmVhZCks
IG1faWQudG9VSW50NjQoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZXF1ZXN0QnVmZmVyKHNh
bXBsZVRpbWUsIGhvc3RUaW1lLCBudW1iZXJPZkZyYW1lcyksIG1faWQudG9VSW50NjQoKSk7CiAK
ICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJv
eHkuY3BwCmluZGV4IDVmY2Q0MGExNjllNDNhYmFiYzI3NTYwNWQwYTY4MWNkMmRlNDAzMWYuLjJl
MzlmNDNiMTQwZjUxNzFkNDIyYzM2OGYyYjgyYWU5NTA3NDgzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJj
ZVByb3ZpZGVyUHJveHkuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgUmVtb3RlQXVkaW9Tb3Vy
Y2VQcm92aWRlclByb3h5OjpzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIG1lbW9yeSkKIHsK
ICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKG1lbW9yeSkKLSAgICAg
ICAgbWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKKyAgICAgICAgbWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CiAKICAgICAvLyBGSVhNRTogU2VuZCB0aGUg
YWN0dWFsIGRhdGEgc2l6ZSB3aXRoIElQQ0hhbmRsZS4KICNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJ
TkRPV1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCmluZGV4
IGRlODUyNGQ0YWJiNDFhMzEyZDIyZGU5OWYyODhmYjg0OGQ0ODVlYzIuLjZmMzVhODhiNjIwMjI2
MjMzNDMzNGJkYWM3YTBmNTBjODk5M2I4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6YXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoY29uc3Qg
U2hhcmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gbWVtb3J5ID0gU2hhcmVk
TWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpS
ZWFkT25seSk7CisgICAgYXV0byBtZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUu
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CiAgICAgc3RvcmFn
ZSgpLnNldFN0b3JhZ2UoV1RGTW92ZShtZW1vcnkpKTsKICAgICBzdG9yYWdlKCkuc2V0UmVhZE9u
bHkodHJ1ZSk7CiAKQEAgLTEyMSwxMyArMTIxLDExIEBAIHZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXI6OmF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKGNvbnN0IFNoYXJl
CiAgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4o
bV9kZXNjcmlwdGlvbik7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXI6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVt
YmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKQordm9p
ZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6YXVkaW9TYW1wbGVzQXZhaWxh
YmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKIHsKICAgICBNRVNT
QUdFX0NIRUNLKG1fYXVkaW9CdWZmZXJMaXN0KTsKICAgICBNRVNTQUdFX0NIRUNLKFdlYkF1ZGlv
QnVmZmVyTGlzdDo6aXNTdXBwb3J0ZWREZXNjcmlwdGlvbihtX2Rlc2NyaXB0aW9uLCBudW1iZXJP
ZkZyYW1lcykpOwogCi0gICAgbV9yaW5nQnVmZmVyLT5zZXRDdXJyZW50RnJhbWVCb3VuZHMoc3Rh
cnRGcmFtZSwgZW5kRnJhbWUpOwotCiAgICAgbV9hdWRpb0J1ZmZlckxpc3QtPnNldFNhbXBsZUNv
dW50KG51bWJlck9mRnJhbWVzKTsKICAgICBtX3JpbmdCdWZmZXItPmZldGNoKG1fYXVkaW9CdWZm
ZXJMaXN0LT5saXN0KCksIG51bWJlck9mRnJhbWVzLCB0aW1lLnRpbWVWYWx1ZSgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oCmluZGV4IDljMDY2YzMyYTE4YzJl
NTdiMjFmY2EzZjJiM2Q2YmM3NDQxZTUyMjkuLmQ1MzkyOWI0ODEwMDE5ZmM5MmFmM2MyY2YzMGI5
YzZkZjMzZjViNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgdm9pZCBz
ZXRWb2x1bWUoZmxvYXQpOwogICAgIHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoY29u
c3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7Ci0gICAgdm9pZCBhdWRpb1Nh
bXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0
X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpOworICAgIHZvaWQgYXVkaW9TYW1wbGVz
QXZhaWxhYmxlKE1lZGlhVGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwogCiAgICAgU2hh
cmVkUmluZ0J1ZmZlclN0b3JhZ2UmIHN0b3JhZ2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMuaW4KaW5kZXggMjU0YmY3MzliM2Mx
ODczNDc1YjFmMmM5NDRkZjVkODEzYTM1YWJjMi4uZDdhM2EyODRmMDVmOTc0MTExNDI1NTA1MzY4
YWZkY2NmMGFiZjFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyLm1lc3NhZ2VzLmluCkBAIC0zMSw3ICszMSw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIE5vdFJlZkNvdW50ZWQgewogICAgIFNldFZv
bHVtZShmbG9hdCB2YWx1ZSkKIAogICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykK
LSAgICBBdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKKyAgICBB
dWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJh
bWVzKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDY3NDhkMWY1ZDgwMGQ5NTc0ZjIz
ODA3NWIxODkwYjRlNGFjZWU5MTQuLjVhZjE5MWM3ODg3M2IyMDkxZjY5N2VhMGRkZTQ0YzdiMmFh
MjI4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIFJlbW90ZU1lZGlh
UmVjb3JkZXI6OmF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKGNvbnN0IFNoYXJlZE1lbW9yeTo6
SVBDSGFuZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBtZW1vcnkgPSBTaGFy
ZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKKyAgICBhdXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRs
ZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKICAgICBzdG9y
YWdlKCkuc2V0U3RvcmFnZShXVEZNb3ZlKG1lbW9yeSkpOwogICAgIHN0b3JhZ2UoKS5zZXRSZWFk
T25seSh0cnVlKTsKIApAQCAtODksMTQgKzg5LDEyIEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRl
cjo6YXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5k
CiAgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4o
bV9kZXNjcmlwdGlvbik7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6YXVkaW9TYW1w
bGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWlu
dDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpCit2b2lkIFJlbW90ZU1lZGlhUmVj
b3JkZXI6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVt
YmVyT2ZGcmFtZXMpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3JpbmdCdWZmZXIpOwogICAgIE1F
U1NBR0VfQ0hFQ0sobV9hdWRpb0J1ZmZlckxpc3QpOwogICAgIE1FU1NBR0VfQ0hFQ0soV2ViQXVk
aW9CdWZmZXJMaXN0Ojppc1N1cHBvcnRlZERlc2NyaXB0aW9uKG1fZGVzY3JpcHRpb24sIG51bWJl
ck9mRnJhbWVzKSk7CiAKLSAgICBtX3JpbmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhz
dGFydEZyYW1lLCBlbmRGcmFtZSk7Ci0KICAgICBtX2F1ZGlvQnVmZmVyTGlzdC0+c2V0U2FtcGxl
Q291bnQobnVtYmVyT2ZGcmFtZXMpOwogICAgIG1fcmluZ0J1ZmZlci0+ZmV0Y2gobV9hdWRpb0J1
ZmZlckxpc3QtPmxpc3QoKSwgbnVtYmVyT2ZGcmFtZXMsIHRpbWUudGltZVZhbHVlKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5oCmluZGV4IDNhYjRlNGIxY2YxYzE0MTIzMGMxM2U0NTc2YzVlZDZlNmVmYzJlZGIuLjM4
OGVjYmJhMzk3OTBkZjNlNGE5MWI2MjAyZjg5YjI3ZjE1NmNkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC03
MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAg
IHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50NjRf
dCBudW1iZXJPZkZyYW1lcyk7Ci0gICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFU
aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0
X3QgZW5kRnJhbWUpOworICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSwg
dWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwogICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUo
V2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CiAgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJik7CiAgICAg
dm9pZCBzdG9wUmVjb3JkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KaW5kZXgg
NDUxYzI4N2IyNzYwNWMyOTMyYzJmMmRlODJjZjJkZmMyMmMyYWJiNC4uOGQwNWJjMmM1OTE1ZTM4
NjNiYjJhNDAyMWViMTVmYWEyM2Y5Y2ExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5p
bgpAQCAtMjUsNyArMjUsNyBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJlY29yZGVyIE5v
dFJlZkNvdW50ZWQgewogICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKLSAgICBB
dWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJh
bWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKKyAgICBBdWRpb1Nh
bXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQog
ICAgIFZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBs
ZSkKICAgICBGZXRjaERhdGEoKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGJ1ZmZlciwgZG91Ymxl
IHRpbWVDb2RlKSBBc3luYwogICAgIFN0b3BSZWNvcmRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuY3BwCmluZGV4IDcz
MDY5NDVlZmY3NzJiZTAzODM2MzhhZGM3ZDgyYmI4NzdiY2MxMjAuLjdlNmVmYjA2ZGQ2MmJiZWE1
ODJjMGVjYzNmYzlhY2M3YzRiYjA0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5jcHAKQEAgLTQ2LDggKzQ2LDExIEBA
IHZvaWQgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OnNldFJlYWRPbmx5KGJvb2wgcmVhZE9ubHkp
CiAKIHZvaWQgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OmFsbG9jYXRlKHNpemVfdCBieXRlQ291
bnQpCiB7Ci0gICAgaWYgKCFtX3JlYWRPbmx5KQotICAgICAgICBzZXRTdG9yYWdlKFNoYXJlZE1l
bW9yeTo6YWxsb2NhdGUoYnl0ZUNvdW50KSk7CisgICAgaWYgKCFtX3JlYWRPbmx5KSB7CisgICAg
ICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShieXRlQ291bnQg
KyBzaXplb2YoRnJhbWVCb3VuZHMpKTsKKyAgICAgICAgbmV3IChOb3ROdWxsLCBzaGFyZWRNZW1v
cnktPmRhdGEoKSkgRnJhbWVCb3VuZHM7CisgICAgICAgIHNldFN0b3JhZ2UoV1RGTW92ZShzaGFy
ZWRNZW1vcnkpKTsKKyAgICB9CiB9CiAKIHZvaWQgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OmRl
YWxsb2NhdGUoKQpAQCAtNTYsMTEgKzU5LDU4IEBAIHZvaWQgU2hhcmVkUmluZ0J1ZmZlclN0b3Jh
Z2U6OmRlYWxsb2NhdGUoKQogICAgICAgICBzZXRTdG9yYWdlKG51bGxwdHIpOwogfQogCithdXRv
IFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpzaGFyZWRGcmFtZUJvdW5kcygpIC0+IEZyYW1lQm91
bmRzKgoreworICAgIHJldHVybiBtX3N0b3JhZ2UgPyByZWludGVycHJldF9jYXN0PEZyYW1lQm91
bmRzKj4obV9zdG9yYWdlLT5kYXRhKCkpIDogbnVsbHB0cjsKK30KKwogdm9pZCogU2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2U6OmRhdGEoKQogewotICAgIHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3Jh
Z2UtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIG1fc3RvcmFnZSA/IHN0YXRpY19jYXN0
PEJ5dGUqPihtX3N0b3JhZ2UtPmRhdGEoKSkgKyBzaXplb2YoRnJhbWVCb3VuZHMpIDogbnVsbHB0
cjsKIH0KIAordm9pZCBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6Z2V0Q3VycmVudEZyYW1lQm91
bmRzKHVpbnQ2NF90JiBzdGFydEZyYW1lLCB1aW50NjRfdCYgZW5kRnJhbWUpCit7CisgICAgc3Rh
cnRGcmFtZSA9IG1fc3RhcnRGcmFtZTsKKyAgICBlbmRGcmFtZSA9IG1fZW5kRnJhbWU7CiB9CiAK
K3ZvaWQgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OnNldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50
NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKK3sKKyAgICBtX3N0YXJ0RnJhbWUg
PSBzdGFydEZyYW1lOworICAgIG1fZW5kRnJhbWUgPSBlbmRGcmFtZTsKKworICAgIEFTU0VSVCgh
bV9yZWFkT25seSk7CisgICAgaWYgKG1fcmVhZE9ubHkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIHNoYXJlZEJvdW5kcyA9IHNoYXJlZEZyYW1lQm91bmRzKCk7CisgICAgaWYgKCFzaGFy
ZWRCb3VuZHMpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIGluZGV4VG9Xcml0ZSA9
IChzaGFyZWRCb3VuZHMtPmJvdW5kc0J1ZmZlckluZGV4LmxvYWQoc3RkOjptZW1vcnlfb3JkZXJf
YWNxdWlyZSkgKyAxKSAlIGJvdW5kc0J1ZmZlclNpemU7CisgICAgc2hhcmVkQm91bmRzLT5ib3Vu
ZHNCdWZmZXJbaW5kZXhUb1dyaXRlXSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXJ0RnJhbWUsIGVuZEZy
YW1lKTsKKyAgICBzaGFyZWRCb3VuZHMtPmJvdW5kc0J1ZmZlckluZGV4LnN0b3JlKGluZGV4VG9X
cml0ZSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7Cit9CisKK3ZvaWQgU2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2U6OnVwZGF0ZUZyYW1lQm91bmRzKCkKK3sKKyAgICBhdXRvKiBzaGFyZWRCb3Vu
ZHMgPSBzaGFyZWRGcmFtZUJvdW5kcygpOworICAgIGlmICghc2hhcmVkQm91bmRzKSB7CisgICAg
ICAgIG1fc3RhcnRGcmFtZSA9IG1fZW5kRnJhbWUgPSAwOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgYXV0byBwYWlyID0gc2hhcmVkQm91bmRzLT5ib3VuZHNCdWZmZXJbc2hhcmVkQm91
bmRzLT5ib3VuZHNCdWZmZXJJbmRleC5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpXTsK
KyAgICBtX3N0YXJ0RnJhbWUgPSBwYWlyLmZpcnN0OworICAgIG1fZW5kRnJhbWUgPSBwYWlyLnNl
Y29uZDsKK30KKwordm9pZCBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6Zmx1c2goKQoreworICAg
IG1fc3RhcnRGcmFtZSA9IG1fZW5kRnJhbWUgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2UuaAppbmRleCBjOTM0ZTkwN2Y4OTdmMzdmZTBlMDhmOTBmNmYxOWUz
NDNmMjBmNWVmLi4zNmZjMDUxOTAyM2QzZWYwNjQ1M2NhZTI3NjdmZTNkYmY5OTIzOWNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFVTRShNRURJQVRPT0xCT1gpCiAKKyNpbmNs
dWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAKQEAgLTU3LDExICs1OCwyNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhbGxvY2F0ZShzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZGVhbGxvY2F0ZSgpIGZp
bmFsOwogICAgIHZvaWQqIGRhdGEoKSBmaW5hbDsKKyAgICB2b2lkIGdldEN1cnJlbnRGcmFtZUJv
dW5kcyh1aW50NjRfdCYgc3RhcnRUaW1lLCB1aW50NjRfdCYgZW5kVGltZSkgZmluYWw7CisgICAg
dm9pZCBzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3Qg
ZW5kRnJhbWUpIGZpbmFsOworICAgIHVpbnQ2NF90IGN1cnJlbnRTdGFydEZyYW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9zdGFydEZyYW1lOyB9CisgICAgdWludDY0X3QgY3VycmVudEVuZEZy
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lbmRGcmFtZTsgfQorICAgIHZvaWQgdXBkYXRl
RnJhbWVCb3VuZHMoKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoKCkgZmluYWw7CiAKIHByaXZhdGU6
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBib3VuZHNCdWZmZXJTaXplIHsgMiB9Owor
ICAgIHN0cnVjdCBGcmFtZUJvdW5kcyB7CisgICAgICAgIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWlu
dDY0X3Q+IGJvdW5kc0J1ZmZlcltib3VuZHNCdWZmZXJTaXplXTsKKyAgICAgICAgQXRvbWljPHVu
c2lnbmVkPiBib3VuZHNCdWZmZXJJbmRleCB7IDAgfTsKKyAgICB9OworCisgICAgRnJhbWVCb3Vu
ZHMqIHNoYXJlZEZyYW1lQm91bmRzKCk7CisKICAgICBDbGllbnQqIG1fY2xpZW50OwogICAgIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IG1fc3RvcmFnZTsKICAgICBib29sIG1fcmVhZE9ubHkgeyBmYWxz
ZSB9OworICAgIHVpbnQ2NF90IG1fc3RhcnRGcmFtZSB7IDAgfTsKKyAgICB1aW50NjRfdCBtX2Vu
ZEZyYW1lIHsgMCB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRleCA4
Njc5MmFhNTVjMWU3Y2IxMjc4YmFjMzkzZDg3MDQ5OWFiYTYwNjJjLi5lZjg2NWI5NzM5NjBhMTVk
N2UxNzA0NTI5MzcyMjQ1YTY4MWUyYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcApA
QCAtMTU2LDEwICsxNTYsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIEFTU0VSVChpczxXZWJBdWRp
b0J1ZmZlckxpc3Q+KGF1ZGlvRGF0YSkpOwogICAgICAgICBtX3JpbmdCdWZmZXIuc3RvcmUoZG93
bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihhdWRpb0RhdGEpLmxpc3QoKSwgbnVtYmVyT2ZGcmFt
ZXMsIHRpbWUudGltZVZhbHVlKCkpOwotICAgICAgICB1aW50NjRfdCBzdGFydEZyYW1lOwotICAg
ICAgICB1aW50NjRfdCBlbmRGcmFtZTsKLSAgICAgICAgbV9yaW5nQnVmZmVyLmdldEN1cnJlbnRG
cmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OkF1ZGlvU2FtcGxlc0F2
YWlsYWJsZShtX2lkLCB0aW1lLCBudW1iZXJPZkZyYW1lcywgc3RhcnRGcmFtZSwgZW5kRnJhbWUp
LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlcjo6QXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1faWQsIHRpbWUsIG51bWJlck9m
RnJhbWVzKSwgMCk7CiAgICAgfQogCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRp
YVNhbXBsZSYgc2FtcGxlKSBmaW5hbApAQCAtMjAxLDcgKzE5OCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIHN0b3JhZ2UpIGZpbmFsIHsKICAgICAg
ICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgICAgICBpZiAoc3RvcmFnZSkKLSAg
ICAgICAgICAgIHN0b3JhZ2UtPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICAgICAgc3RvcmFnZS0+Y3JlYXRlSGFuZGxlKGhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwogCiAgICAgICAgIC8v
IEZJWE1FOiBTZW5kIHRoZSBhY3R1YWwgZGF0YSBzaXplIHdpdGggSVBDSGFuZGxlLgogI2lmIE9T
KERBUldJTikgfHwgT1MoV0lORE9XUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFT
b3VyY2UuY3BwCmluZGV4IDFhZTk5NjA1ZDc3Njg5M2E5ZmJlNzc4YjM4YzJjNWRlN2YwNDZiNmQu
LjYwMTZkYTk5N2VjZTljMDk4NWZiMGRmMjgzOGJhYTRlMGMzYTYwMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRp
YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmNwcApAQCAtOTksNyArOTksNyBAQCB2b2lkIFNw
ZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U3RvcmFnZShjb25z
dCBTaGFyZWRNZW1vcnk6OgogCiAjZW5kaWYKIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRp
bWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVp
bnQ2NF90IGVuZEZyYW1lKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2U6OnJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUgdGltZSwgdWlu
dDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFt
X2J1ZmZlcikgewpAQCAtMTA5LDE0ICsxMDksMTEgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWQK
ICAgICB9CiAKICAgICBtX2J1ZmZlci0+c2V0U2FtcGxlQ291bnQobnVtYmVyT2ZGcmFtZXMpOwot
ICAgIG1fcmluZ0J1ZmZlci0+c2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUsIGVuZEZy
YW1lKTsKICAgICBtX3JpbmdCdWZmZXItPmZldGNoKG1fYnVmZmVyLT5saXN0KCksIG51bWJlck9m
RnJhbWVzLCB0aW1lLnRpbWVWYWx1ZSgpKTsKICAgICBhdWRpb1NhbXBsZXNBdmFpbGFibGUodGlt
ZSwgKm1fYnVmZmVyLCBtX2Rlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTSh0aW1lKTsKICAgICBVTlVTRURfUEFSQU0obnVtYmVyT2ZGcmFtZXMpOwot
ICAgIFVOVVNFRF9QQVJBTShzdGFydEZyYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oZW5kRnJhbWUp
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmgKaW5k
ZXggMjI1MjQyYjljZGFjOWQ3NDkxMzZkMDZmNmI0ZDAyOTUwOGJlN2YxYy4uOGI1MTI1MGY1Y2Fk
N2YzZjVjZTc4ZjU4ZDY3NjM3MTkwY2Y4YmY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3Rv
cmFnZShjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKICNlbmRpZgogCi0g
ICAgdm9pZCByZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lLCB1aW50NjRfdCBu
dW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpOwor
ICAgIHZvaWQgcmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSwgdWludDY0X3Qg
bnVtYmVyT2ZGcmFtZXMpOwogICAgIHZvaWQgcmVtb3RlQ2FwdHVyZUZhaWxlZCgpOwogICAgIHZv
aWQgcmVtb3RlU291cmNlU3RvcHBlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwCmluZGV4IDRmOGE4NmEwMjJlYTliY2U3NzI2ZjVi
ZTViMDY5NzIwZTA4NDE4NTYuLmE3NTEwYTZmMzc3MjBkMmYxOTg3OGIxYWFhZjdlODU2ZWJhODFm
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFn
ZXIuY3BwCkBAIC03NCwxMCArNzQsMTAgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjpyZW1vdmVTb3VyY2UoU3BlZWNoUmVjb2cKICAgICBz
ZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2Vy
OjpEZWxldGVTb3VyY2UoaWRlbnRpZmllcikpOwogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9u
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI6OnJlbW90ZUF1ZGlvU2FtcGxlc0F2YWls
YWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBXVEY6Ok1lZGlhVGltZSYgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2
NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKQordm9pZCBTcGVlY2hSZWNvZ25pdGlv
blJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjpyZW1vdGVBdWRpb1NhbXBsZXNBdmFp
bGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgV1RGOjpNZWRpYVRpbWUmIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQogewog
ICAgIGlmIChhdXRvIHNvdXJjZSA9IG1fc291cmNlcy5nZXQoaWRlbnRpZmllcikpCi0gICAgICAg
IHNvdXJjZS0+cmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIG51bWJlck9mRnJhbWVz
LCBzdGFydEZyYW1lLCBlbmRGcmFtZSk7CisgICAgICAgIHNvdXJjZS0+cmVtb3RlQXVkaW9TYW1w
bGVzQXZhaWxhYmxlKHRpbWUsIG51bWJlck9mRnJhbWVzKTsKIH0KIAogdm9pZCBTcGVlY2hSZWNv
Z25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjpyZW1vdGVDYXB0dXJlRmFp
bGVkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgKaW5kZXgg
MjE0NmE5YjM2MzAyMzk3YjFiODY0ZmY0ZmE4YTczNmE1NTNhZTY1OC4uZjRiNGQ4ODFlZjljYjkx
NTc5MzM1ZDg4YzVlMjNhNDg5ZDhiMDA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgLy8gTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZU1hbmFnZXIKLSAgICB2b2lkIHJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZShX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgY29uc3QgV1RGOjpNZWRpYVRp
bWUmLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0
X3QgZW5kRnJhbWUpOworICAgIHZvaWQgcmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYs
IHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKICAgICB2b2lkIHJlbW90ZUNhcHR1cmVGYWlsZWQo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVtb3Rl
U291cmNlU3RvcHBlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllcik7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBkMDcxMDM5OGJjN2MyYzQ3
MDQ0YjAzZTY1ZDBhY2M4NTgwYTFlZmVhLi44YTVhMTQyYmQ5NWM3MDhlOGI2ZjNiZTRjZWM2NmNk
YmZkM2I2NzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCiBtZXNzYWdlcyAtPiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotICAgIFJlbW90ZUF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2
NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKQorICAgIFJlbW90ZUF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiAgICAgUmVtb3Rl
Q2FwdHVyZUZhaWxlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIFJlbW90ZVNvdXJjZVN0b3BwZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAppbmRleCBjOGM1ODI5MDUwYTUyNThmOWQ5MzE5NzZi
OTVmMDVlNTk3YTU2YjMxLi4xZDdiNjMzN2JlMTA5NTE0MTlmMTg3N2VlZmI0YzY4NDExZjc4NTcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBAIC0xNDgsMTIgKzE0OCwx
MiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpbwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVxdWVzdEJ1ZmZlcihkb3VibGUgc2Ft
cGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IGZyYW1lc1RvUmVuZGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVxdWVzdEJ1ZmZlcihkb3Vi
bGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IGZyYW1lc1RvUmVuZGVy
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKCFoYXNFbm91Z2hG
cmFtZXMoZnJhbWVzVG9SZW5kZXIpKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
MCwgMCk7CisgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gc3RhcnRGcmFtZSA9IG1fY3VycmVu
dEZyYW1lOwogICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5zZXRTYW1wbGVDb3VudChmcmFtZXNUb1Jl
bmRlcik7CkBAIC0xNjMsMTEgKzE2Myw2IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5OjpyZXF1ZXN0QnVmZmVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBob3N0CiAgICAg
bV9jdXJyZW50RnJhbWUgKz0gZnJhbWVzVG9SZW5kZXI7CiAKICAgICBtX3JpbmdCdWZmZXItPnN0
b3JlKG1fYXVkaW9CdWZmZXJMaXN0LT5saXN0KCksIGZyYW1lc1RvUmVuZGVyLCBzdGFydEZyYW1l
KTsKLQotICAgIHVpbnQ2NF90IGJvdW5kc1N0YXJ0RnJhbWU7Ci0gICAgdWludDY0X3QgYm91bmRz
RW5kRnJhbWU7Ci0gICAgbV9yaW5nQnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoYm91bmRz
U3RhcnRGcmFtZSwgYm91bmRzRW5kRnJhbWUpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGJvdW5k
c1N0YXJ0RnJhbWUsIGJvdW5kc0VuZEZyYW1lKTsKIH0KICNlbmRpZgogCkBAIC0xODYsNyArMTgx
LDcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3JhZ2VDaGFuZ2VkKFNo
YXJlZE1lbW9yeSogc3RvcmFnZSkKIHsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7
CiAgICAgaWYgKHN0b3JhZ2UpCi0gICAgICAgIHN0b3JhZ2UtPmNyZWF0ZUhhbmRsZShoYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBzdG9yYWdlLT5j
cmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7
CiAKICAgICAvLyBGSVhNRTogU2VuZCB0aGUgYWN0dWFsIGRhdGEgc2l6ZSB3aXRoIElQQ0hhbmRs
ZS4KICNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuaAppbmRleCAyZTYwMGQ2N2RiNWZhMTQ4NjNkODAwZTZhNGRhYjI5YjVhMzMyMzk4Li4y
ODllMTUwOTg3MGVkMTJhNzYwMWIzNWNkOGIwZmQ1Mzc5MTI5N2FhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5LmgKQEAgLTQ5LDYgKzQ5LDggQEAgY2xhc3MgV2ViQXVkaW9CdWZmZXJM
aXN0OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgU2hhcmVkUmluZ0J1ZmZlckZyYW1l
Qm91bmRzOworCiBjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EKQEAg
LTcyLDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tR1BV
UHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
cikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgdm9pZCByZXF1ZXN0QnVmZmVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1
aW50NjRfdCBob3N0VGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDY0X3QgYm91bmRzU3RhcnRGcmFtZSwgdWludDY0X3QgYm91bmRzRW5kRnJh
bWUpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RCdWZmZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2
NF90IGhvc3RUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7CiAjZW5kaWYKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggMzg1ZTEyZDc4MTI0NzNlMDVlZjU1YmU3OGE0YTBiNjgyNGJkOTc5NS4uNThjYTVkYmFjN2Uy
NDU5Y2IwOWMzNGQ5MzMzM2VlZDNjOTliN2VlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAKIAogbWVzc2FnZXMg
LT4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IE5vdFJlZkNvdW50ZWQgewogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIFJlcXVlc3RCdWZmZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90
IGhvc3RUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykgLT4gKHVpbnQ2NF90IGJvdW5kc1N0
YXJ0RnJhbWUsIHVpbnQ2NF90IGJvdW5kc0VuZEZyYW1lKSBBc3luYworICAgIFJlcXVlc3RCdWZm
ZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90IGhvc3RUaW1lLCB1aW50NjRfdCBudW1iZXJP
ZkZyYW1lcykKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1h
bmFnZXIuY3BwCmluZGV4IGU2MjBiY2MzMTM4MzI1NDFkNGQwMzdhNzNmMTliMGIzYzg1ZTE3YTUu
LmYzNDM4ZGZlMDZmNzI0MjEzMGU0NjBlMTU1MzZiMjQyMmIwOTY5YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRl
ck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9p
ZCBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjo6UmVtb3RlQXVkaW86OnNldFN0b3Jh
Z2UoY29uc3QgU2hhcmVkTWVtb3IKIAogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1lbW9yeTsK
ICAgICBpZiAoIWhhbmRsZS5pc051bGwoKSkgewotICAgICAgICBtZW1vcnkgPSBTaGFyZWRNZW1v
cnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAg
ICAgICBtZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZFdyaXRlKTsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoIW1lbW9y
eSwgTWVkaWEsICJVbmFibGUgdG8gY3JlYXRlIHNoYXJlZCBtZW1vcnkgZm9yIGF1ZGlvIHByb3Zp
ZGVyICVsbHUiLCBtX3Byb3ZpZGVyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgfQog
CkBAIC0xNTYsMTAgKzE1Niw4IEBAIHZvaWQgUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXI6OlJlbW90ZUF1ZGlvOjphdWRpb1NhbXBsZXNBdmFpbGFibGUodWludDY0CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIGVuZEZyYW1lID0gc3RhcnRGcmFtZSArIG51bWJlck9m
RnJhbWVzOwogICAgIG1fYnVmZmVyLT5zZXRTYW1wbGVDb3VudChudW1iZXJPZkZyYW1lcyk7CiAK
LSAgICBtX3JpbmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRG
cmFtZSk7CiAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaChtX2J1ZmZlci0+bGlzdCgpLCBudW1iZXJP
ZkZyYW1lcywgc3RhcnRGcmFtZSk7CiAKICAgICBtX3Byb3ZpZGVyLT5hdWRpb1NhbXBsZXNBdmFp
bGFibGUoKm1fYnVmZmVyLCBtX2Rlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9B
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKaW5kZXggMmUwYTZiMWY4MzkzMmFlODMz
NWRmNGVhYTRlYjUzNWY4NTg3MTIxMi4uMTA5OWM5ZDVjYWEyNTE3YjQ1YTEyMTVlYzc5MWQ4MGJl
N2FlYTFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcApAQCAt
OTUsMTcgKzk1LDE0IEBAIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnB1c2hT
YW1wbGVzKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgV2ViCiAKICAgICBBU1NFUlQoaXM8
V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PihhdWRpb0RhdGEpKTsKICAgICBtX3JpbmdCdWZm
ZXItPnN0b3JlKGRvd25jYXN0PFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9EYXRh
KS5saXN0KCksIG51bWJlck9mRnJhbWVzLCB0aW1lLnRpbWVWYWx1ZSgpKTsKLSAgICB1aW50NjRf
dCBzdGFydEZyYW1lOwotICAgIHVpbnQ2NF90IGVuZEZyYW1lOwotICAgIG1fcmluZ0J1ZmZlci0+
Z2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUsIGVuZEZyYW1lKTsKLSAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
OjpBdWRpb1NhbXBsZXNBdmFpbGFibGUgeyB0aW1lLCBudW1iZXJPZkZyYW1lcywgc3RhcnRGcmFt
ZSwgZW5kRnJhbWUgfSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpBdWRpb1NhbXBsZXNB
dmFpbGFibGUgeyB0aW1lLCBudW1iZXJPZkZyYW1lcyB9LCBtX2lkZW50aWZpZXIpOwogfQogCiB2
b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzdG9yYWdlQ2hhbmdlZChTaGFyZWRN
ZW1vcnkqIHN0b3JhZ2UpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAg
IGlmIChzdG9yYWdlKQotICAgICAgICBzdG9yYWdlLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgc3RvcmFnZS0+Y3JlYXRl
SGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwogICAg
IAogICAgIC8vIEZJWE1FOiBTZW5kIHRoZSBhY3R1YWwgZGF0YSBzaXplIHdpdGggSVBDSGFuZGxl
LgogI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApp
bmRleCA0MDNkZjFmNTdiNGE2OGMzOTgwNDg1YzkyMGNmODMxODMxMmFjODkxLi5kNTYwZTQ1ZjI1
OTYyNTZjNDA4M2UzYmU3Yjg1YjU4NDkyZmIxYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3Bw
CkBAIC0xMDQsMTcgKzEwNCwxNCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjphdWRpb1Nh
bXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbAogCiAgICAgQVNT
RVJUKGlzPFdlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9EYXRhKSk7CiAgICAgbV9yaW5nQnVmZmVy
LT5zdG9yZShkb3duY2FzdDxXZWJBdWRpb0J1ZmZlckxpc3Q+KGF1ZGlvRGF0YSkubGlzdCgpLCBu
dW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUoKSk7Ci0gICAgdWludDY0X3Qgc3RhcnRGcmFt
ZTsKLSAgICB1aW50NjRfdCBlbmRGcmFtZTsKLSAgICBtX3JpbmdCdWZmZXItPmdldEN1cnJlbnRG
cmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpBdWRpb1NhbXBsZXNBdmFpbGFibGUgeyB0
aW1lLCBudW1iZXJPZkZyYW1lcywgc3RhcnRGcmFtZSwgZW5kRnJhbWUgfSwgbV9pZGVudGlmaWVy
KTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6
OkF1ZGlvU2FtcGxlc0F2YWlsYWJsZSB7IHRpbWUsIG51bWJlck9mRnJhbWVzIH0sIG1faWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OnN0b3JhZ2VDaGFuZ2VkKFNo
YXJlZE1lbW9yeSogc3RvcmFnZSkKIHsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7
CiAgICAgaWYgKHN0b3JhZ2UpCi0gICAgICAgIHN0b3JhZ2UtPmNyZWF0ZUhhbmRsZShoYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBzdG9yYWdlLT5j
cmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7
CiAKICAgICAvLyBGSVhNRTogU2VuZCB0aGUgYWN0dWFsIGRhdGEgc2l6ZSB3aXRoIElQQ0hhbmRs
ZS4KICNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJj
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAppbmRleCBkMGZmNDQ4YmVmODk0
MWFjNDk1YmUwOGVmNTNiZmFjMWI4MDY2ZWZhLi42NzllZjlkMTU3NGZkMzg0Nzc3NGI4ODhmY2I2
YWI4MTEwZjljMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1l
ZGlhU291cmNlTWFuYWdlci5jcHAKQEAgLTEyMSwxMCArMTIxLDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBBU1NFUlQoaXM8V2ViQXVkaW9CdWZmZXJMaXN0PihhdWRpb0RhdGEpKTsKICAgICAgICAg
bV9yaW5nQnVmZmVyLnN0b3JlKGRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9EYXRh
KS5saXN0KCksIG51bWJlck9mRnJhbWVzLCB0aW1lLnRpbWVWYWx1ZSgpKTsKLSAgICAgICAgdWlu
dDY0X3Qgc3RhcnRGcmFtZTsKLSAgICAgICAgdWludDY0X3QgZW5kRnJhbWU7Ci0gICAgICAgIG1f
cmluZ0J1ZmZlci5nZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOwot
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uUmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI6OlJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZShtX2lkZW50aWZpZXIsIHRpbWUsIG51bWJlck9mRnJhbWVzLCBzdGFydEZyYW1lLCBlbmRGcmFt
ZSksIDApOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI6OlJlbW90ZUF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShtX2lkZW50aWZpZXIsIHRpbWUsIG51bWJlck9mRnJhbWVzKSwgMCk7CiAjZWxz
ZQogICAgICAgICBVTlVTRURfUEFSQU0odGltZSk7CiAgICAgICAgIFVOVVNFRF9QQVJBTShhdWRp
b0RhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90
ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKaW5kZXggNWIzZTcwMGUwOTU4ZTJmYmQ1
NjkxNzgwNDI3MWRlZGM5NGZjNWU0OS4uYzU2NWIyMjZkNzkwMzhkM2JiODdlNmYwYmQ4Nzc4ODlh
NjE4MzI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90
ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZv
aWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OmF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjCiAgICAgaXRlcmF0b3ItPnZhbHVlLT5zZXRTdG9yYWdlKGlw
Y0hhbmRsZS5oYW5kbGUsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CiB9CiAKLXZvaWQg
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZWRpYVRpbWUgdGlt
ZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90
IGVuZEZyYW1lKQordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6YXVkaW9TYW1wbGVz
QXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKIHsKICAgICBBU1NF
UlQoIVdURjo6aXNNYWluUnVuTG9vcCgpKTsKIApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJs
ZSB0byBmaW5kIHNvdXJjZSAlbGx1IGZvciBhdWRpb1NhbXBsZXNBdmFpbGFibGUiLCBpZGVudGlm
aWVyLnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGl0ZXJhdG9yLT52
YWx1ZS0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIG51bWJlck9mRnJhbWVzLCBzdGFydEZy
YW1lLCBlbmRGcmFtZSk7CisgICAgaXRlcmF0b3ItPnZhbHVlLT5hdWRpb1NhbXBsZXNBdmFpbGFi
bGUodGltZSwgbnVtYmVyT2ZGcmFtZXMpOwogfQogCiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
cjo6UmVtb3RlQXVkaW86OlJlbW90ZUF1ZGlvKFJlZjxSZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
PiYmIHNvdXJjZSkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyOjpSZW1vdGVBdWRpbzo6c2V0U3RvcmFnZShjb25zdCBTaGFyZWRNZW1vcnk6Okhhbgog
ICAgIG1fYnVmZmVyID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KGRlc2NyaXB0aW9u
LCBudW1iZXJPZkZyYW1lcyk7CiB9CiAKLXZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6
OlJlbW90ZUF1ZGlvOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2
NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFt
ZSkKK3ZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZUF1ZGlvOjphdWRpb1Nh
bXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQog
ewogICAgIGlmICghbV9idWZmZXIpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRD
LCAiYnVmZmVyIGZvciBhdWRpbyBzb3VyY2UgJWxsdSBpcyBudWxsIiwgbV9zb3VyY2UtPmlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKQEAgLTE1NSw3ICsxNTUsNiBAQCB2b2lkIFJlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyOjpSZW1vdGVBdWRpbzo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlh
VGltZSB0aQogCiAgICAgbV9idWZmZXItPnNldFNhbXBsZUNvdW50KG51bWJlck9mRnJhbWVzKTsK
IAotICAgIG1fcmluZ0J1ZmZlci0+c2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUsIGVu
ZEZyYW1lKTsKICAgICBtX3JpbmdCdWZmZXItPmZldGNoKG1fYnVmZmVyLT5saXN0KCksIG51bWJl
ck9mRnJhbWVzLCB0aW1lLnRpbWVWYWx1ZSgpKTsKIAogICAgIG1fc291cmNlLT5yZW1vdGVBdWRp
b1NhbXBsZXNBdmFpbGFibGUodGltZSwgKm1fYnVmZmVyLCBtX2Rlc2NyaXB0aW9uLCBudW1iZXJP
ZkZyYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oCmluZGV4IDZmYjRiYzM3YjkzODAxNmZjZTVj
NWM1YWM1YTQzNzAyN2YxODZiZTQuLjAxYWUxNWY4ZjVmZGFmODYwNDMxOTYzYmIyMmNiMGZiMzFm
NGI5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6
CiAKICAgICAvLyBNZXNzYWdlcwogICAgIHZvaWQgYXVkaW9TdG9yYWdlQ2hhbmdlZChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50NjRf
dCBudW1iZXJPZkZyYW1lcyk7Ci0gICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIE1lZGlhVGltZSwgdWludDY0X3QgbnVt
YmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKTsKKyAg
ICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
SWRlbnRpZmllciwgTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7CiAKICAgICB2
b2lkIHNldENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKik7CiAKQEAgLTY2LDcgKzY2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgUmVtb3RlQXVkaW8oUmVmPFJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2U+JiYpOwogCiAgICAgICAgIHZvaWQgc2V0U3RvcmFnZShjb25zdCBTaGFyZWRN
ZW1vcnk6OkhhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYs
IHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKLSAgICAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFp
bGFibGUoTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRG
cmFtZSwgdWludDY0X3QgZW5kRnJhbWUpOworICAgICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIFJlZjxSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlPiBtX3NvdXJjZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBkOGRlMWExYzI0ZDViNDQz
YmM0OGFkYjQ2YjFjYjg4Mjc1N2Y2NjZhLi42YWNlMjZiZmE4MzA2ODMxNmE4MWI2YzUxYmZhZTQ2
ODUzYjlmZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCkBA
IC0yNSw3ICsyNSw3IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2Vy
IE5vdFJlZkNvdW50ZWQgewogICAgIEF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2Ny
aXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKLSAgICBBdWRpb1NhbXBsZXNBdmFpbGFi
bGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIE1lZGlhVGltZSB0
aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0
X3QgZW5kRnJhbWUpCisgICAgQXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDFlNDAyNzIwYmI0NjQxMTc0MjAxNmRiYWY4ZjAyNWVmNmUwNWI3
MDguLjZlNGUyOTcwODg3NjhkM2RjYWI4ZmFmOThkMTdjNjI1YzMyMTdlMDEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMC0xMi0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtH
UFVQcm9jZXNzXSBDdXQgaW4gaGFsZiBhbW91bnQgb2YgSVBDIG5lZWRlZCB0byBkbyBXZWJBdWRp
bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NzE1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWlub3Ig
QVBJIHRlc3QgY2hhbmdlcyBkdWUgdG8gQ0FSaW5nQnVmZmVyIEFQSSBjaGFuZ2UuIGZldGNoKCkg
YWx3YXlzIHJldHVybmVkIE9rCisgICAgICAgIHNvIEkgZHJvcHBlZCB0aGUgcmV0dXJuIHZhbHVl
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6TWl4aW5nVGVzdDo6cnVuKToKKwogMjAyMC0xMi0xMCAgRGF2aWQgS2lsemVyICA8ZGRr
aWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIHByZXBhcmUtQ2hhbmdlTG9nIHdvbid0IHBhcnNl
IHJkYXI6Ly9ubm5ubm5ubiBVUkxzIGluIGZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YSgpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVy
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3Bw
CmluZGV4IDhiYmViZjRlNWEyNzIzOTkxYWU0YWQ0Y2E2OGIyMDdmNjg0YWE3ZDkuLmYyMGJlZmY2
MDAzM2FhN2U0NWEzN2ViYzYyNmI0YzkyYWUxYjMxODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCkBAIC0xMDksOCArMTA5LDcg
QEAgVEVTVF9GKENBUmluZ0J1ZmZlclRlc3QsIEJhc2ljcykKICAgICBmbG9hdCBzY3JhdGNoQnVm
ZmVyW2NhcGFjaXR5XTsKICAgICBzZXRMaXN0RGF0YUJ1ZmZlcihyZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihzY3JhdGNoQnVmZmVyKSwgY2FwYWNpdHkpOwogCi0gICAgZXJyID0gcmluZ0J1ZmZl
cigpLmZldGNoKCZidWZmZXJMaXN0KCksIHNhbXBsZUNvdW50LCAwKTsKLSAgICBFWFBFQ1RfRVEo
ZXJyLCBDQVJpbmdCdWZmZXI6OkVycm9yOjpPayk7CisgICAgcmluZ0J1ZmZlcigpLmZldGNoKCZi
dWZmZXJMaXN0KCksIHNhbXBsZUNvdW50LCAwKTsKICAgICBFWFBFQ1RfVFJVRSghbWVtY21wKHNv
dXJjZUJ1ZmZlciwgc2NyYXRjaEJ1ZmZlciwgc2FtcGxlQ291bnQgKiBkZXNjcmlwdGlvbigpLnNh
bXBsZVdvcmRTaXplKCkpKTsKIAogICAgIC8vIC4uLiBhbmQgdGhlIHNlY29uZCBoYWxmLgpAQCAt
MTIyLDggKzEyMSw3IEBAIFRFU1RfRihDQVJpbmdCdWZmZXJUZXN0LCBCYXNpY3MpCiAgICAgRVhQ
RUNUX0VRKGNhcGFjaXR5LCAoaW50KWVuZFRpbWUpOwogCiAgICAgbWVtc2V0KHNjcmF0Y2hCdWZm
ZXIsIDAsIHNhbXBsZUNvdW50ICogZGVzY3JpcHRpb24oKS5zYW1wbGVXb3JkU2l6ZSgpKTsKLSAg
ICBlcnIgPSByaW5nQnVmZmVyKCkuZmV0Y2goJmJ1ZmZlckxpc3QoKSwgc2FtcGxlQ291bnQsIDAp
OwotICAgIEVYUEVDVF9FUShlcnIsIENBUmluZ0J1ZmZlcjo6RXJyb3I6Ok9rKTsKKyAgICByaW5n
QnVmZmVyKCkuZmV0Y2goJmJ1ZmZlckxpc3QoKSwgc2FtcGxlQ291bnQsIDApOwogICAgIEVYUEVD
VF9UUlVFKCFtZW1jbXAoc291cmNlQnVmZmVyLCBzY3JhdGNoQnVmZmVyLCBzYW1wbGVDb3VudCAq
IGRlc2NyaXB0aW9uKCkuc2FtcGxlV29yZFNpemUoKSkpOwogCiAgICAgLy8gRm9yY2UgdGhlIGJ1
ZmZlciB0byB3cmFwIGFyb3VuZApAQCAtMTg1LDE4ICsxODMsMTQgQEAgcHVibGljOgogCiAgICAg
ICAgIG1lbXNldChyZWFkQnVmZmVyLCAwLCBzYW1wbGVDb3VudCAqIHRlc3QuZGVzY3JpcHRpb24o
KS5zYW1wbGVXb3JkU2l6ZSgpKTsKICAgICAgICAgdGVzdC5zZXRMaXN0RGF0YUJ1ZmZlcihyZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihyZWFkQnVmZmVyKSwgc2FtcGxlQ291bnQpOwotICAgICAg
ICBlcnIgPSB0ZXN0LnJpbmdCdWZmZXIoKS5mZXRjaCgmdGVzdC5idWZmZXJMaXN0KCksIHNhbXBs
ZUNvdW50LCAwLCBDQVJpbmdCdWZmZXI6OkZldGNoTW9kZTo6TWl4KTsKLSAgICAgICAgRVhQRUNU
X0VRKGVyciwgQ0FSaW5nQnVmZmVyOjpFcnJvcjo6T2spOworICAgICAgICB0ZXN0LnJpbmdCdWZm
ZXIoKS5mZXRjaCgmdGVzdC5idWZmZXJMaXN0KCksIHNhbXBsZUNvdW50LCAwLCBDQVJpbmdCdWZm
ZXI6OkZldGNoTW9kZTo6TWl4KTsKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNhbXBs
ZUNvdW50OyBpKyspCiAgICAgICAgICAgICBFWFBFQ1RfRVEocmVhZEJ1ZmZlcltpXSwgcmVmZXJl
bmNlQnVmZmVyW2ldKSA8PCAiUmluZyBidWZmZXIgdmFsdWUgZGlmZmVycyBhdCBpbmRleCAiIDw8
IGk7CiAKLSAgICAgICAgZXJyID0gdGVzdC5yaW5nQnVmZmVyKCkuZmV0Y2goJnRlc3QuYnVmZmVy
TGlzdCgpLCBzYW1wbGVDb3VudCwgMCwgQ0FSaW5nQnVmZmVyOjpGZXRjaE1vZGU6Ok1peCk7Ci0g
ICAgICAgIEVYUEVDVF9FUShlcnIsIENBUmluZ0J1ZmZlcjo6RXJyb3I6Ok9rKTsKLSAgICAgICAg
ZXJyID0gdGVzdC5yaW5nQnVmZmVyKCkuZmV0Y2goJnRlc3QuYnVmZmVyTGlzdCgpLCBzYW1wbGVD
b3VudCwgMCwgQ0FSaW5nQnVmZmVyOjpGZXRjaE1vZGU6Ok1peCk7Ci0gICAgICAgIEVYUEVDVF9F
UShlcnIsIENBUmluZ0J1ZmZlcjo6RXJyb3I6Ok9rKTsKLSAgICAgICAgZXJyID0gdGVzdC5yaW5n
QnVmZmVyKCkuZmV0Y2goJnRlc3QuYnVmZmVyTGlzdCgpLCBzYW1wbGVDb3VudCwgMCwgQ0FSaW5n
QnVmZmVyOjpGZXRjaE1vZGU6Ok1peCk7Ci0gICAgICAgIEVYUEVDVF9FUShlcnIsIENBUmluZ0J1
ZmZlcjo6RXJyb3I6Ok9rKTsKKyAgICAgICAgdGVzdC5yaW5nQnVmZmVyKCkuZmV0Y2goJnRlc3Qu
YnVmZmVyTGlzdCgpLCBzYW1wbGVDb3VudCwgMCwgQ0FSaW5nQnVmZmVyOjpGZXRjaE1vZGU6Ok1p
eCk7CisgICAgICAgIHRlc3QucmluZ0J1ZmZlcigpLmZldGNoKCZ0ZXN0LmJ1ZmZlckxpc3QoKSwg
c2FtcGxlQ291bnQsIDAsIENBUmluZ0J1ZmZlcjo6RmV0Y2hNb2RlOjpNaXgpOworICAgICAgICB0
ZXN0LnJpbmdCdWZmZXIoKS5mZXRjaCgmdGVzdC5idWZmZXJMaXN0KCksIHNhbXBsZUNvdW50LCAw
LCBDQVJpbmdCdWZmZXI6OkZldGNoTW9kZTo6TWl4KTsKIAogICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IHNhbXBsZUNvdW50OyBpKyspCiAgICAgICAgICAgICByZWZlcmVuY2VCdWZmZXJbaV0g
Kz0gc291cmNlQnVmZmVyW2ldICogMzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415925</attachid>
            <date>2020-12-10 13:54:09 -0800</date>
            <delta_ts>2020-12-10 14:01:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219715-20201210135408.patch</filename>
            <type>text/plain</type>
            <size>53024</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE5YjdjY2JmMTY3YWI0
M2I1YWYzZWIzZmI0Y2QzMDM2MTdiZmI3ZS4uOGI2MmE5YzUyMmNjYTE1OTBkMDkzNTEwZTc0NWU0
MDBiZmE1N2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTEyLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIEN1dCBp
biBoYWxmIGFtb3VudCBvZiBJUEMgbmVlZGVkIHRvIGRvIFdlYkF1ZGlvCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3MTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXQgaW4gaGFsZiBhbW91bnQgb2Yg
SVBDIG5lZWRlZCB0byBkbyBXZWJBdWRpby4gUHJldmlvdXNseSwgd2Ugd291bGQgc2VuZCAyCisg
ICAgICAgIElQQ3MgcGVyIHJlbmRlcmluZyBxdWFudHVtOgorICAgICAgICAxLiBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIgZnJvbSBHUFVQcm9jZXNzIHRvIFdlYlBy
b2Nlc3MKKyAgICAgICAgMi4gVGhlIHJlc3BvbnNlIHRvIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eTo6UmVxdWVzdEJ1ZmZlciB3aGljaCBjb250YWluZWQKKyAgICAgICAgICAgdGhlIGZyYW1l
IGJvdW5kcyBmb3IgdGhlIFJpbmdCdWZmZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBnZXRzIHJp
ZCBvZiBJUEMgMiBieSBoYXZpbmcgdGhlIENBUmluZ0J1ZmZlciBjbGFzcyBzdG9yZSBpdHMgYm91
bmRzCisgICAgICAgIGluIGl0cyBtZW1vcnkgYmFja2luZy4gQXMgYSByZXN1bHQsIHdoZW4gdGhl
IENBUmluZ0J1ZmZlciBpcyB1c2luZyBhIHNoYXJlZAorICAgICAgICBtZW1vcnkgYmFja2luZywg
dGhlIGJvdW5kcyBnZXQgc2hhcmVkIGJldHdlZW4gcHJvY2Vzc2VzLCB3aXRob3V0IGFueSBuZWVk
IGZvcgorICAgICAgICBJUEMgdG8gc3luYyB0aGVtLgorCisgICAgICAgIFRoaXMgaXMgc3RpbGwg
dG9vIG11Y2ggSVBDIGJ1dCB0aGlzIGlzIGEgc3RlcCBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiBX
ZQorICAgICAgICBjYW4gaG9wZWZ1bGx5IGdldCByaWQgb2YgKG9yIGdyZWF0bHkgcmVkdWNlKSBJ
UEMgMSBpbiBhIGZvbGxvdy11cCBwYXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBs
ZURhdGFTb3VyY2U6OnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVua3MpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
QVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yOjpDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlcjo6Q0FSaW5nQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNBUmluZ0J1ZmZlcjo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVm
ZmVyU3RvcmFnZVZlY3Rvcjo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVy
OjpzZXRDdXJyZW50RnJhbWVCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVy
U3RvcmFnZVZlY3Rvcjo6c2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNBUmluZ0J1ZmZlcjo6Z2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNBUmluZ0J1ZmZlcjo6Z2V0Q3VycmVudEZyYW1lQm91bmRzV2l0aG91dFVwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yOjpnZXRDdXJyZW50RnJhbWVC
b3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVyOjpjbGlwVGltZUJvdW5kcyk6
CisgICAgICAgIChXZWJDb3JlOjpDQVJpbmdCdWZmZXI6OmN1cnJlbnRTdGFydEZyYW1lIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3I6OmN1cnJlbnRT
dGFydEZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlcjo6Y3VycmVu
dEVuZEZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlclN0b3JhZ2VW
ZWN0b3I6OmN1cnJlbnRFbmRGcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQVJpbmdC
dWZmZXI6OnVwZGF0ZUZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZl
cjo6ZmV0Y2hJZkhhc0Vub3VnaERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVy
OjpmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDQVJpbmdCdWZmZXI6OmZldGNoSW50ZXJuYWwp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVyU3RvcmFnZTo6dXBkYXRlRnJhbWVCb3VuZHMpOgorCiAy
MDIwLTEyLTEwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xG
Q11bSUZDXSBJbnRyb2R1Y2UgSW5saW5lVGV4dEl0ZW06OmlzV29yZFNlcGFyYXRvcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkNTM3MzdjMTNlODc0NzMwYmI3OGZlODdjYzdmYzk1M2VhNTgxOThmLi4wMGYzMmUwMjI1
MGIzNDc2M2VjMGI0NWRkMTcwYWJkMmViNzczZjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBA
CisyMDIwLTEyLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
W0dQVVByb2Nlc3NdIEN1dCBpbiBoYWxmIGFtb3VudCBvZiBJUEMgbmVlZGVkIHRvIGRvIFdlYkF1
ZGlvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3
MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXQg
aW4gaGFsZiBhbW91bnQgb2YgSVBDIG5lZWRlZCB0byBkbyBXZWJBdWRpby4gUHJldmlvdXNseSwg
d2Ugd291bGQgc2VuZCAyCisgICAgICAgIElQQ3MgcGVyIHJlbmRlcmluZyBxdWFudHVtOgorICAg
ICAgICAxLiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIgZnJvbSBH
UFVQcm9jZXNzIHRvIFdlYlByb2Nlc3MKKyAgICAgICAgMi4gVGhlIHJlc3BvbnNlIHRvIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVxdWVzdEJ1ZmZlciB3aGljaCBjb250YWluZWQKKyAg
ICAgICAgICAgdGhlIGZyYW1lIGJvdW5kcyBmb3IgdGhlIFJpbmdCdWZmZXIuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBnZXRzIHJpZCBvZiBJUEMgMiBieSBoYXZpbmcgdGhlIENBUmluZ0J1ZmZlciBj
bGFzcyBzdG9yZSBpdHMgYm91bmRzCisgICAgICAgIGluIGl0cyBtZW1vcnkgYmFja2luZy4gQXMg
YSByZXN1bHQsIHdoZW4gdGhlIENBUmluZ0J1ZmZlciBpcyB1c2luZyBhIHNoYXJlZAorICAgICAg
ICBtZW1vcnkgYmFja2luZywgdGhlIGJvdW5kcyBnZXQgc2hhcmVkIGJldHdlZW4gcHJvY2Vzc2Vz
LCB3aXRob3V0IGFueSBuZWVkIGZvcgorICAgICAgICBJUEMgdG8gc3luYyB0aGVtLgorCisgICAg
ICAgIFRoaXMgaXMgc3RpbGwgdG9vIG11Y2ggSVBDIGJ1dCB0aGlzIGlzIGEgc3RlcCBpbiB0aGUg
cmlnaHQgZGlyZWN0aW9uLiBXZQorICAgICAgICBjYW4gaG9wZWZ1bGx5IGdldCByaWQgb2YgKG9y
IGdyZWF0bHkgcmVkdWNlKSBJUEMgMSBpbiBhIGZvbGxvdy11cCBwYXRjaC4KKworICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjphdWRpb1NhbXBsZXNTdG9yYWdl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnJlbmRl
cik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJv
eHk6OnN0b3JhZ2VDaGFuZ2VkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjphdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
OjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmF1ZGlvU2FtcGxlc1N0b3JhZ2VD
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6YXVkaW9TYW1w
bGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0
b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6YWxs
b2NhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6c2hhcmVk
RnJhbWVCb3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6
ZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpnZXRDdXJy
ZW50RnJhbWVCb3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFn
ZTo6c2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2U6OnVwZGF0ZUZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2U6OmZsdXNoKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3RlQXVkaW9TYW1w
bGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjpy
ZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFn
ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5OjpyZXF1ZXN0QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5OjpzdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlk
ZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRl
ck1hbmFnZXI6OlJlbW90ZUF1ZGlvOjpzZXRTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI6OlJlbW90ZUF1ZGlvOjphdWRpb1NhbXBsZXNB
dmFpbGFibGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyOjpwdXNoU2FtcGxlcyk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyOjpzdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFSZWNvcmRlclByaXZhdGU6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUmVjb3JkZXJQcml2YXRlOjpzdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2Vy
OjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlcjo6UmVtb3RlQXVkaW86OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2Fn
ZXMuaW46CisKIDIwMjAtMTItMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MDU0Mi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckxp
c3QuY3BwCmluZGV4IGI1YjNhN2YxMjJlZjMyMjM3ZDkwNWQ4OGRhZjliMzdkZjI3OThlNmYuLmZk
ZjY3NzU3ZDFiNDc3NjA4MDhiMTNmYjQzNGU0MGIzZGZkMzBlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJMaXN0LmNwcApAQCAtMzEwLDggKzMxMCw3IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVy
TGlzdDo6Y29weUZyb20oQXVkaW9TYW1wbGVCdWZmZXJMaXN0JiBzb3VyY2UsIHNpemVfdCBmCiBP
U1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKENBUmluZ0J1ZmZlciYgcmlu
Z0J1ZmZlciwgc2l6ZV90IHNhbXBsZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lLCBDQVJpbmdC
dWZmZXI6OkZldGNoTW9kZSBtb2RlKQogewogICAgIHJlc2V0KCk7Ci0gICAgaWYgKHJpbmdCdWZm
ZXIuZmV0Y2goYnVmZmVyTGlzdCgpLmxpc3QoKSwgc2FtcGxlQ291bnQsIHN0YXJ0RnJhbWUsIG1v
ZGUpICE9IENBUmluZ0J1ZmZlcjo6T2spCi0gICAgICAgIHJldHVybiBrQXVkaW9fUGFyYW1FcnJv
cjsKKyAgICByaW5nQnVmZmVyLmZldGNoKGJ1ZmZlckxpc3QoKS5saXN0KCksIHNhbXBsZUNvdW50
LCBzdGFydEZyYW1lLCBtb2RlKTsKIAogICAgIG1fc2FtcGxlQ291bnQgPSBzYW1wbGVDb3VudDsK
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRleCBjZGUzZWI0OTc3Njk5
NTAzZjRhY2FmZThhZGVjODFjYTlkMzhlZDg5Li43NjRlYmY3ZTIzMjA3ZDdlMmU5YTdlNGNkMTkw
NGY3ZmY3Nzc0YTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0zMjQsOCArMzI0LDcg
QEAgYm9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVu
a3MoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIKICAgICB9CiAKICAgICB3aGlsZSAoZW5kRnJhbWUg
LSBzdGFydEZyYW1lID49IHNhbXBsZUNvdW50UGVyQ2h1bmspIHsKLSAgICAgICAgaWYgKG1fcmlu
Z0J1ZmZlci0+ZmV0Y2goJmJ1ZmZlciwgc2FtcGxlQ291bnRQZXJDaHVuaywgc3RhcnRGcmFtZSwg
Q0FSaW5nQnVmZmVyOjpDb3B5KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
bV9yaW5nQnVmZmVyLT5mZXRjaCgmYnVmZmVyLCBzYW1wbGVDb3VudFBlckNodW5rLCBzdGFydEZy
YW1lLCBDQVJpbmdCdWZmZXI6OkNvcHkpOwogICAgICAgICBjb25zdW1lRmlsbGVkQnVmZmVyKCk7
CiAgICAgICAgIHN0YXJ0RnJhbWUgKz0gc2FtcGxlQ291bnRQZXJDaHVuazsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNw
cAppbmRleCBlZDdhN2E1YmMxNDMzNjJmOTdhZjljYWQ5MjExMDhmYjMyMWZmODdlLi4yYWQxNWMy
NTFlZGMwYTRhNmMzODZjMzAxMGI5MTk2NmE0NjEzNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTM4LDkgKzM4
LDEzIEBAIGNvbnN0IHVpbnQzMl90IGtHZW5lcmFsUmluZ1RpbWVCb3VuZHNRdWV1ZU1hc2sgPSBr
R2VuZXJhbFJpbmdUaW1lQm91bmRzUXVldWVTaXplCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Q0FSaW5nQnVmZmVyU3RvcmFnZVZlY3Rvcjo6Q0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvcigpCisg
ICAgOiBtX3RpbWVCb3VuZHNRdWV1ZShrR2VuZXJhbFJpbmdUaW1lQm91bmRzUXVldWVTaXplKQor
eworfQorCiBDQVJpbmdCdWZmZXI6OkNBUmluZ0J1ZmZlcigpCiAgICAgOiBtX2J1ZmZlcnMobWFr
ZVVuaXF1ZVJlZjxDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yPigpKQotICAgICwgbV90aW1lQm91
bmRzUXVldWUoa0dlbmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVlU2l6ZSkKIHsKIH0KIApAQCAtNTEs
NyArNTUsNiBAQCBDQVJpbmdCdWZmZXI6On5DQVJpbmdCdWZmZXIoKQogCiBDQVJpbmdCdWZmZXI6
OkNBUmluZ0J1ZmZlcihVbmlxdWVSZWY8Q0FSaW5nQnVmZmVyU3RvcmFnZT4mJiBzdG9yYWdlKQog
ICAgIDogbV9idWZmZXJzKFdURk1vdmUoc3RvcmFnZSkpCi0gICAgLCBtX3RpbWVCb3VuZHNRdWV1
ZShrR2VuZXJhbFJpbmdUaW1lQm91bmRzUXVldWVTaXplKQogewogfQogCkBAIC0xNjUsNiArMTY4
LDExIEBAIGlubGluZSB2b2lkIFplcm9BQkwoQXVkaW9CdWZmZXJMaXN0KiBsaXN0LCBzaXplX3Qg
ZGVzdE9mZnNldCwgc2l6ZV90IG5ieXRlcykKIH0KIAogdm9pZCBDQVJpbmdCdWZmZXI6OmZsdXNo
KCkKK3sKKyAgICBtX2J1ZmZlcnMtPmZsdXNoKCk7Cit9CisKK3ZvaWQgQ0FSaW5nQnVmZmVyU3Rv
cmFnZVZlY3Rvcjo6Zmx1c2goKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY3VycmVudEZy
YW1lQm91bmRzTG9jayk7CiAgICAgZm9yIChhdXRvJiB0aW1lQm91bmRzIDogbV90aW1lQm91bmRz
UXVldWUpIHsKQEAgLTIzNCw2ICsyNDIsMTEgQEAgQ0FSaW5nQnVmZmVyOjpFcnJvciBDQVJpbmdC
dWZmZXI6OnN0b3JlKGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCogbGlzdCwgc2l6ZV90IGZyYW0KIH0K
IAogdm9pZCBDQVJpbmdCdWZmZXI6OnNldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCBzdGFy
dFRpbWUsIHVpbnQ2NF90IGVuZFRpbWUpCit7CisgICAgbV9idWZmZXJzLT5zZXRDdXJyZW50RnJh
bWVCb3VuZHMoc3RhcnRUaW1lLCBlbmRUaW1lKTsKK30KKwordm9pZCBDQVJpbmdCdWZmZXJTdG9y
YWdlVmVjdG9yOjpzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3Qgc3RhcnRUaW1lLCB1aW50
NjRfdCBlbmRUaW1lKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY3VycmVudEZyYW1lQm91
bmRzTG9jayk7CiAgICAgdWludDMyX3QgbmV4dFB0ciA9IG1fdGltZUJvdW5kc1F1ZXVlUHRyLmxv
YWQoKSArIDE7CkBAIC0yNDUsMTQgKzI1OCwyNSBAQCB2b2lkIENBUmluZ0J1ZmZlcjo6c2V0Q3Vy
cmVudEZyYW1lQm91bmRzKHVpbnQ2NF90IHN0YXJ0VGltZSwgdWludDY0X3QgZW5kVGltZSkKICAg
ICBtX3RpbWVCb3VuZHNRdWV1ZVB0cisrOwogfQogCi12b2lkIENBUmluZ0J1ZmZlcjo6Z2V0Q3Vy
cmVudEZyYW1lQm91bmRzKHVpbnQ2NF90ICZzdGFydFRpbWUsIHVpbnQ2NF90ICZlbmRUaW1lKQor
dm9pZCBDQVJpbmdCdWZmZXI6OmdldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCYgc3RhcnRG
cmFtZSwgdWludDY0X3QmIGVuZEZyYW1lKQoreworICAgIHVwZGF0ZUZyYW1lQm91bmRzKCk7Cisg
ICAgZ2V0Q3VycmVudEZyYW1lQm91bmRzV2l0aG91dFVwZGF0ZShzdGFydEZyYW1lLCBlbmRGcmFt
ZSk7Cit9CisKK3ZvaWQgQ0FSaW5nQnVmZmVyOjpnZXRDdXJyZW50RnJhbWVCb3VuZHNXaXRob3V0
VXBkYXRlKHVpbnQ2NF90JiBzdGFydEZyYW1lLCB1aW50NjRfdCYgZW5kRnJhbWUpCit7CisgICAg
bV9idWZmZXJzLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOwor
fQorCit2b2lkIENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3I6OmdldEN1cnJlbnRGcmFtZUJvdW5k
cyh1aW50NjRfdCYgc3RhcnRGcmFtZSwgdWludDY0X3QmIGVuZEZyYW1lKQogewogICAgIHVpbnQz
Ml90IGN1clB0ciA9IG1fdGltZUJvdW5kc1F1ZXVlUHRyLmxvYWQoKTsKICAgICB1aW50MzJfdCBp
bmRleCA9IGN1clB0ciAmIGtHZW5lcmFsUmluZ1RpbWVCb3VuZHNRdWV1ZU1hc2s7Ci0gICAgQ0FS
aW5nQnVmZmVyOjpUaW1lQm91bmRzJiBib3VuZHMgPSBtX3RpbWVCb3VuZHNRdWV1ZVtpbmRleF07
CisgICAgYXV0byYgYm91bmRzID0gbV90aW1lQm91bmRzUXVldWVbaW5kZXhdOwogCi0gICAgc3Rh
cnRUaW1lID0gYm91bmRzLm1fc3RhcnRGcmFtZTsKLSAgICBlbmRUaW1lID0gYm91bmRzLm1fZW5k
RnJhbWU7CisgICAgc3RhcnRGcmFtZSA9IGJvdW5kcy5tX3N0YXJ0RnJhbWU7CisgICAgZW5kRnJh
bWUgPSBib3VuZHMubV9lbmRGcmFtZTsKIH0KIAogdm9pZCBDQVJpbmdCdWZmZXI6OmNsaXBUaW1l
Qm91bmRzKHVpbnQ2NF90JiBzdGFydFJlYWQsIHVpbnQ2NF90JiBlbmRSZWFkKQpAQCAtMjYwLDcg
KzI4NCw3IEBAIHZvaWQgQ0FSaW5nQnVmZmVyOjpjbGlwVGltZUJvdW5kcyh1aW50NjRfdCYgc3Rh
cnRSZWFkLCB1aW50NjRfdCYgZW5kUmVhZCkKICAgICB1aW50NjRfdCBzdGFydFRpbWU7CiAgICAg
dWludDY0X3QgZW5kVGltZTsKIAotICAgIGdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydFRpbWUs
IGVuZFRpbWUpOworICAgIGdldEN1cnJlbnRGcmFtZUJvdW5kc1dpdGhvdXRVcGRhdGUoc3RhcnRU
aW1lLCBlbmRUaW1lKTsKIAogICAgIGlmIChzdGFydFJlYWQgPiBlbmRUaW1lIHx8IGVuZFJlYWQg
PCBzdGFydFRpbWUpIHsKICAgICAgICAgZW5kUmVhZCA9IHN0YXJ0UmVhZDsKQEAgLTI3MywyMSAr
Mjk3LDU3IEBAIHZvaWQgQ0FSaW5nQnVmZmVyOjpjbGlwVGltZUJvdW5kcyh1aW50NjRfdCYgc3Rh
cnRSZWFkLCB1aW50NjRfdCYgZW5kUmVhZCkKIH0KIAogdWludDY0X3QgQ0FSaW5nQnVmZmVyOjpj
dXJyZW50U3RhcnRGcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVmZmVycy0+Y3VycmVu
dFN0YXJ0RnJhbWUoKTsKK30KKwordWludDY0X3QgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3Rvcjo6
Y3VycmVudFN0YXJ0RnJhbWUoKSBjb25zdAogewogICAgIHVpbnQzMl90IGluZGV4ID0gbV90aW1l
Qm91bmRzUXVldWVQdHIubG9hZCgpICYga0dlbmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVlTWFzazsK
ICAgICByZXR1cm4gbV90aW1lQm91bmRzUXVldWVbaW5kZXhdLm1fc3RhcnRGcmFtZTsKIH0KIAog
dWludDY0X3QgQ0FSaW5nQnVmZmVyOjpjdXJyZW50RW5kRnJhbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2J1ZmZlcnMtPmN1cnJlbnRFbmRGcmFtZSgpOworfQorCit1aW50NjRfdCBDQVJpbmdC
dWZmZXJTdG9yYWdlVmVjdG9yOjpjdXJyZW50RW5kRnJhbWUoKSBjb25zdAogewogICAgIHVpbnQz
Ml90IGluZGV4ID0gbV90aW1lQm91bmRzUXVldWVQdHIubG9hZCgpICYga0dlbmVyYWxSaW5nVGlt
ZUJvdW5kc1F1ZXVlTWFzazsKICAgICByZXR1cm4gbV90aW1lQm91bmRzUXVldWVbaW5kZXhdLm1f
ZW5kRnJhbWU7CiB9CiAKLUNBUmluZ0J1ZmZlcjo6RXJyb3IgQ0FSaW5nQnVmZmVyOjpmZXRjaChB
dWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBuRnJhbWVzLCB1aW50NjRfdCBzdGFydFJlYWQs
IEZldGNoTW9kZSBtb2RlKQordm9pZCBDQVJpbmdCdWZmZXI6OnVwZGF0ZUZyYW1lQm91bmRzKCkK
K3sKKyAgICBtX2J1ZmZlcnMtPnVwZGF0ZUZyYW1lQm91bmRzKCk7Cit9CisKK2Jvb2wgQ0FSaW5n
QnVmZmVyOjpmZXRjaElmSGFzRW5vdWdoRGF0YShBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVf
dCBmcmFtZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lLCBGZXRjaE1vZGUgbW9kZSkKK3sKKyAg
ICAvLyBXaGVuIHRoZSBSaW5nQnVmZmVyIGlzIGJhY2tlZCBieSBzaGFyZWQgbWVtb3J5LCBtYWtl
IHN1cmUgd2UgcHVsbCBmcmFtZSBib3VuZHMgZnJvbSBzaGFyZWQgbWVtb3J5IGJlZm9yZSBmZXRj
aGluZy4KKyAgICB1cGRhdGVGcmFtZUJvdW5kcygpOworCisgICAgdWludDY0X3Qgc3RhcnQsIGVu
ZDsKKyAgICBnZXRDdXJyZW50RnJhbWVCb3VuZHNXaXRob3V0VXBkYXRlKHN0YXJ0LCBlbmQpOwor
ICAgIGlmIChzdGFydEZyYW1lIDwgc3RhcnQgfHwgc3RhcnRGcmFtZSArIGZyYW1lQ291bnQgPiBl
bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZldGNoSW50ZXJuYWwobGlzdCwgZnJh
bWVDb3VudCwgc3RhcnRGcmFtZSwgbW9kZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
Q0FSaW5nQnVmZmVyOjpmZXRjaChBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBmcmFtZUNv
dW50LCB1aW50NjRfdCBzdGFydFJlYWQsIEZldGNoTW9kZSBtb2RlKQoreworICAgIC8vIFdoZW4g
dGhlIFJpbmdCdWZmZXIgaXMgYmFja2VkIGJ5IHNoYXJlZCBtZW1vcnksIG1ha2Ugc3VyZSB3ZSBw
dWxsIGZyYW1lIGJvdW5kcyBmcm9tIHNoYXJlZCBtZW1vcnkgYmVmb3JlIGZldGNoaW5nLgorICAg
IHVwZGF0ZUZyYW1lQm91bmRzKCk7CisgICAgZmV0Y2hJbnRlcm5hbChsaXN0LCBmcmFtZUNvdW50
LCBzdGFydFJlYWQsIG1vZGUpOworfQorCit2b2lkIENBUmluZ0J1ZmZlcjo6ZmV0Y2hJbnRlcm5h
bChBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBuRnJhbWVzLCB1aW50NjRfdCBzdGFydFJl
YWQsIEZldGNoTW9kZSBtb2RlKQogewogICAgIGlmICghbkZyYW1lcykKLSAgICAgICAgcmV0dXJu
IE9rOworICAgICAgICByZXR1cm47CiAgICAgCiAgICAgc3RhcnRSZWFkID0gc3RkOjptYXg8dWlu
dDY0X3Q+KDAsIHN0YXJ0UmVhZCk7CiAgICAgCkBAIC0zMDAsNyArMzYwLDcgQEAgQ0FSaW5nQnVm
ZmVyOjpFcnJvciBDQVJpbmdCdWZmZXI6OmZldGNoKEF1ZGlvQnVmZmVyTGlzdCogbGlzdCwgc2l6
ZV90IG5GcmFtZXMsIHUKIAogICAgIGlmIChzdGFydFJlYWQgPT0gZW5kUmVhZCkgewogICAgICAg
ICBaZXJvQUJMKGxpc3QsIDAsIG5GcmFtZXMgKiBtX2J5dGVzUGVyRnJhbWUpOwotICAgICAgICBy
ZXR1cm4gT2s7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgc2l6ZV90IGJ5dGVT
aXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigoZW5kUmVhZCAtIHN0YXJ0UmVhZCkgKiBtX2J5dGVz
UGVyRnJhbWUpOwpAQCAtMzM1LDggKzM5NSw2IEBAIENBUmluZ0J1ZmZlcjo6RXJyb3IgQ0FSaW5n
QnVmZmVyOjpmZXRjaChBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBuRnJhbWVzLCB1CiAg
ICAgICAgIGRlc3QtPm1EYXRhQnl0ZVNpemUgPSBuYnl0ZXM7CiAgICAgICAgIGRlc3QrKzsKICAg
ICB9Ci0gICAgCi0gICAgcmV0dXJuIE9rOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5oCmluZGV4IDNkODk0YjA2NWUxYjVj
ZDMwYmRlOGY3NDA0MzcwNDhkNzY4Yjk3MDUuLmIzMGQ5MzFlNjVhYzM4MjBiMDVjZDdhNTRkYmM2
ZTViY2UxMmIyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0NBUmluZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0NBUmluZ0J1ZmZlci5oCkBAIC00NSwxNyArNDUsNDUgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBhbGxvY2F0ZShzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVhbGxvY2F0
ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQqIGRhdGEoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCYgc3RhcnRUaW1lLCB1aW50NjRfdCYgZW5k
VGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0
X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRnJhbWVCb3VuZHMoKSB7IH0KKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGN1cnJlbnRTdGFy
dEZyYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdWludDY0X3QgY3VycmVudEVuZEZyYW1l
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmbHVzaCgpID0gMDsKIH07CiAKIGNsYXNz
IENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3IgZmluYWwgOiBwdWJsaWMgQ0FSaW5nQnVmZmVyU3Rv
cmFnZSB7CiBwdWJsaWM6CisgICAgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvcigpOwogICAgIH5D
QVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yKCkgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIHZv
aWQgYWxsb2NhdGUoc2l6ZV90IGJ5dGVDb3VudCkgZmluYWwgeyBtX2J1ZmZlci5ncm93KGJ5dGVD
b3VudCk7IH0KICAgICB2b2lkIGRlYWxsb2NhdGUoKSBmaW5hbCB7IG1fYnVmZmVyLmNsZWFyKCk7
IH0KICAgICB2b2lkKiBkYXRhKCkgZmluYWwgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9Cisg
ICAgdm9pZCBnZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3QmIHN0YXJ0VGltZSwgdWludDY0
X3QmIGVuZFRpbWUpIGZpbmFsOworICAgIHZvaWQgc2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2
NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKSBmaW5hbDsKKyAgICB1aW50NjRfdCBj
dXJyZW50U3RhcnRGcmFtZSgpIGNvbnN0OworICAgIHVpbnQ2NF90IGN1cnJlbnRFbmRGcmFtZSgp
IGNvbnN0OworICAgIHZvaWQgZmx1c2goKSBmaW5hbDsKKworICAgIHN0cnVjdCBUaW1lQm91bmRz
IHsKKyAgICAgICAgVGltZUJvdW5kcygpCisgICAgICAgICAgICA6IG1fc3RhcnRGcmFtZSgwKQor
ICAgICAgICAgICAgLCBtX2VuZEZyYW1lKDApCisgICAgICAgICAgICAsIG1fdXBkYXRlQ291bnRl
cigwKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgdm9sYXRpbGUgdWludDY0X3QgbV9z
dGFydEZyYW1lOworICAgICAgICB2b2xhdGlsZSB1aW50NjRfdCBtX2VuZEZyYW1lOworICAgICAg
ICB2b2xhdGlsZSB1aW50MzJfdCBtX3VwZGF0ZUNvdW50ZXI7CisgICAgfTsKKwogICAgIFZlY3Rv
cjx1aW50OF90PiBtX2J1ZmZlcjsKKyAgICBWZWN0b3I8VGltZUJvdW5kcz4gbV90aW1lQm91bmRz
UXVldWU7CisgICAgTG9jayBtX2N1cnJlbnRGcmFtZUJvdW5kc0xvY2s7CisgICAgc3RkOjphdG9t
aWM8aW50MzJfdD4gbV90aW1lQm91bmRzUXVldWVQdHIgeyAwIH07CiB9OwogCiBjbGFzcyBDQVJp
bmdCdWZmZXIgewpAQCAtNzYsMjAgKzEwNCwyNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgRXJyb3Igc3RvcmUoY29uc3QgQXVkaW9CdWZmZXJMaXN0Kiwgc2l6ZV90IGZyYW1lQ291bnQs
IHVpbnQ2NF90IHN0YXJ0RnJhbWUpOwogCiAgICAgZW51bSBGZXRjaE1vZGUgeyBDb3B5LCBNaXgg
fTsKLSAgICBXRUJDT1JFX0VYUE9SVCBFcnJvciBmZXRjaChBdWRpb0J1ZmZlckxpc3QqLCBzaXpl
X3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2RlID0gQ29weSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBmZXRjaElmSGFzRW5vdWdoRGF0YShBdWRpb0J1ZmZlckxp
c3QqLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2RlID0g
Q29weSk7CisKKyAgICAvLyBGaWxscyBidWZmZXIgd2l0aCBzaWxlbmNlIGlmIHRoZXJlIGlzIG5v
dCBlbm91Z2ggZGF0YS4KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZldGNoKEF1ZGlvQnVmZmVy
TGlzdCosIHNpemVfdCBmcmFtZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lLCBGZXRjaE1vZGUg
PSBDb3B5KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmx1c2goKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZ2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2NF90ICZzdGFydFRpbWUs
IHVpbnQ2NF90ICZlbmRUaW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRG
cmFtZUJvdW5kcyh1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3QmIHN0YXJ0
RnJhbWUsIHVpbnQ2NF90JiBlbmRGcmFtZSk7CiAKICAgICB1aW50MzJfdCBjaGFubmVsQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxDb3VudDsgfQogICAgIENBUmluZ0J1ZmZlclN0b3Jh
Z2UmIHN0b3JhZ2UoKSB7IHJldHVybiBtX2J1ZmZlcnM7IH0KIAogcHJpdmF0ZToKKyAgICB2b2lk
IHVwZGF0ZUZyYW1lQm91bmRzKCk7CiAgICAgc2l6ZV90IGZyYW1lT2Zmc2V0KHVpbnQ2NF90IGZy
YW1lTnVtYmVyKSB7IHJldHVybiAoZnJhbWVOdW1iZXIgJiBtX2ZyYW1lQ291bnRNYXNrKSAqIG1f
Ynl0ZXNQZXJGcmFtZTsgfQogCiAgICAgdm9pZCBjbGlwVGltZUJvdW5kcyh1aW50NjRfdCYgc3Rh
cnRSZWFkLCB1aW50NjRfdCYgZW5kUmVhZCk7CisgICAgdm9pZCBzZXRDdXJyZW50RnJhbWVCb3Vu
ZHModWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpOworCisgICAgdm9pZCBn
ZXRDdXJyZW50RnJhbWVCb3VuZHNXaXRob3V0VXBkYXRlKHVpbnQ2NF90JiBzdGFydEZyYW1lLCB1
aW50NjRfdCYgZW5kRnJhbWUpOworICAgIHZvaWQgZmV0Y2hJbnRlcm5hbChBdWRpb0J1ZmZlckxp
c3QqLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2RlKTsK
IAogICAgIHVpbnQ2NF90IGN1cnJlbnRTdGFydEZyYW1lKCkgY29uc3Q7CiAgICAgdWludDY0X3Qg
Y3VycmVudEVuZEZyYW1lKCkgY29uc3Q7CkBAIC0xMDIsMjIgKzEzNyw3IEBAIHByaXZhdGU6CiAg
ICAgdWludDMyX3QgbV9mcmFtZUNvdW50TWFzayB7IDAgfTsKICAgICBzaXplX3QgbV9jYXBhY2l0
eUJ5dGVzIHsgMCB9OwogCi0gICAgc3RydWN0IFRpbWVCb3VuZHMgewotICAgICAgICBUaW1lQm91
bmRzKCkKLSAgICAgICAgICAgIDogbV9zdGFydEZyYW1lKDApCi0gICAgICAgICAgICAsIG1fZW5k
RnJhbWUoMCkKLSAgICAgICAgICAgICwgbV91cGRhdGVDb3VudGVyKDApCi0gICAgICAgIHsKLSAg
ICAgICAgfQotICAgICAgICB2b2xhdGlsZSB1aW50NjRfdCBtX3N0YXJ0RnJhbWU7Ci0gICAgICAg
IHZvbGF0aWxlIHVpbnQ2NF90IG1fZW5kRnJhbWU7Ci0gICAgICAgIHZvbGF0aWxlIHVpbnQzMl90
IG1fdXBkYXRlQ291bnRlcjsKLSAgICB9OwotCiAgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
IG1fZGVzY3JpcHRpb247Ci0gICAgVmVjdG9yPFRpbWVCb3VuZHM+IG1fdGltZUJvdW5kc1F1ZXVl
OwotICAgIExvY2sgbV9jdXJyZW50RnJhbWVCb3VuZHNMb2NrOwotICAgIHN0ZDo6YXRvbWljPGlu
dDMyX3Q+IG1fdGltZUJvdW5kc1F1ZXVlUHRyIHsgMCB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlci5jcHAKaW5kZXggOTU4NWZkZmE3OWQwMjhmNTQ4ZWFlMDNiMjQ2NTg0MDlk
OTQ1Mzg1MS4uOWViNWJlODM3OWQ0ZmU1MDNlYjU1NTJiYzQ1MTRkMGM4MzY0NjRhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBAIC0xNDIsMjAgKzE0MiwxMiBAQCBwcml2YXRl
OgogICAgICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24gfHwgIW1f
aXNQbGF5aW5nKQogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKIAotICAgICAgICB1aW50NjRf
dCBzdGFydDsKLSAgICAgICAgdWludDY0X3QgZW5kOwotICAgICAgICBtX3JpbmdCdWZmZXItPmdl
dEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydCwgZW5kKTsKLSAgICAgICAgaWYgKG1fc3RhcnRGcmFt
ZSA+PSBzdGFydCAmJiBtX3N0YXJ0RnJhbWUgKyBudW1iZXJPZkZyYW1lcyA8PSBlbmQpIHsKLSAg
ICAgICAgICAgIG1fcmluZ0J1ZmZlci0+ZmV0Y2goaW9EYXRhLCBudW1iZXJPZkZyYW1lcywgbV9z
dGFydEZyYW1lKTsKKyAgICAgICAgaWYgKG1fcmluZ0J1ZmZlci0+ZmV0Y2hJZkhhc0Vub3VnaERh
dGEoaW9EYXRhLCBudW1iZXJPZkZyYW1lcywgbV9zdGFydEZyYW1lKSkgewogICAgICAgICAgICAg
bV9zdGFydEZyYW1lICs9IG51bWJlck9mRnJhbWVzOwogICAgICAgICAgICAgc3RhdHVzID0gbm9F
cnI7CiAgICAgICAgIH0KIAotICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZXF1
ZXN0QnVmZmVyKHNhbXBsZVRpbWUsIGhvc3RUaW1lLCBudW1iZXJPZkZyYW1lcyksIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDY0X3QsIHVpbnQ2NF90KT4oW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0oYXV0byBib3VuZHNTdGFydEZyYW1lLCBhdXRvIGJvdW5kc0VuZEZy
YW1lKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
ICAgICAgICBpZiAoYm91bmRzRW5kRnJhbWUpCi0gICAgICAgICAgICAgICAgbV9yaW5nQnVmZmVy
LT5zZXRDdXJyZW50RnJhbWVCb3VuZHMoYm91bmRzU3RhcnRGcmFtZSwgYm91bmRzRW5kRnJhbWUp
OwotICAgICAgICB9LCBDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6Ok1haW5UaHJlYWQpLCBt
X2lkLnRvVUludDY0KCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVxdWVzdEJ1ZmZlcihzYW1w
bGVUaW1lLCBob3N0VGltZSwgbnVtYmVyT2ZGcmFtZXMpLCBtX2lkLnRvVUludDY0KCkpOwogCiAg
ICAgICAgIHJldHVybiBzdGF0dXM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyLmNwcAppbmRleCBkZTg1MjRkNGFiYjQxYTMxMmQyMmRlOTlmMjg4ZmI4NDhk
NDg1ZWMyLi40NTY1ODRjYTA3YThkZDE2YTMxMDI0NzI0M2UxNGZmMWQ2ZDU2YWNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcApAQCAtMTIxLDEzICsxMjEs
MTEgQEAgdm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6YXVkaW9TYW1w
bGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hhcmUKICAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1h
a2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihtX2Rlc2NyaXB0aW9uKTsKIH0KIAotdm9pZCBS
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6YXVkaW9TYW1wbGVzQXZhaWxhYmxl
KE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRG
cmFtZSwgdWludDY0X3QgZW5kRnJhbWUpCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90
IG51bWJlck9mRnJhbWVzKQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9hdWRpb0J1ZmZlckxpc3Qp
OwogICAgIE1FU1NBR0VfQ0hFQ0soV2ViQXVkaW9CdWZmZXJMaXN0Ojppc1N1cHBvcnRlZERlc2Ny
aXB0aW9uKG1fZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKSk7CiAKLSAgICBtX3JpbmdCdWZm
ZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Ci0KICAgICBt
X2F1ZGlvQnVmZmVyTGlzdC0+c2V0U2FtcGxlQ291bnQobnVtYmVyT2ZGcmFtZXMpOwogICAgIG1f
cmluZ0J1ZmZlci0+ZmV0Y2gobV9hdWRpb0J1ZmZlckxpc3QtPmxpc3QoKSwgbnVtYmVyT2ZGcmFt
ZXMsIHRpbWUudGltZVZhbHVlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyLmgKaW5kZXggOWMwNjZjMzJhMThjMmU1N2IyMWZjYTNmMmIzZDZiYzc0NDFlNTIyOS4u
ZDUzOTI5YjQ4MTAwMTlmYzkyYWYzYzJjZjMwYjljNmRmMzNmNWI0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaApAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2xlYXIoKTsKICAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CiAgICAgdm9pZCBh
dWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYs
IGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzKTsKLSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUsIHVp
bnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRG
cmFtZSk7CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lLCB1aW50NjRf
dCBudW1iZXJPZkZyYW1lcyk7CiAKICAgICBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZSYgc3RvcmFn
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5t
ZXNzYWdlcy5pbgppbmRleCAyNTRiZjczOWIzYzE4NzM0NzViMWYyYzk0NGRmNWQ4MTNhMzVhYmMy
Li5kN2EzYTI4NGYwNWY5NzQxMTE0MjU1MDUzNjhhZmRjY2YwYWJmMWFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMuaW4KQEAgLTMx
LDcgKzMxLDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0Vm9sdW1lKGZsb2F0IHZhbHVlKQogCiAgICAgQXVk
aW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBz
dG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRp
b24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQotICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJsZShN
ZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJh
bWUsIHVpbnQ2NF90IGVuZEZyYW1lKQorICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRp
bWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHAKaW5kZXggNjc0OGQxZjVkODAwZDk1NzRmMjM4MDc1YjE4OTBiNGU0YWNlZTkxNC4uNzNlNjFj
ZDhlYzIwMjU1YzE3ODRhYjA1YjFlNjc3OGQ0OGY1MzlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC04
OSwxNCArODksMTIgQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjphdWRpb1NhbXBsZXNTdG9y
YWdlQ2hhbmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmQKICAgICBtX2F1ZGlvQnVmZmVy
TGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihtX2Rlc2NyaXB0aW9uKTsKIH0K
IAotdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFU
aW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1
aW50NjRfdCBlbmRGcmFtZSkKK3ZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6YXVkaW9TYW1wbGVz
QXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKIHsKICAg
ICBNRVNTQUdFX0NIRUNLKG1fcmluZ0J1ZmZlcik7CiAgICAgTUVTU0FHRV9DSEVDSyhtX2F1ZGlv
QnVmZmVyTGlzdCk7CiAgICAgTUVTU0FHRV9DSEVDSyhXZWJBdWRpb0J1ZmZlckxpc3Q6OmlzU3Vw
cG9ydGVkRGVzY3JpcHRpb24obV9kZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpKTsKIAotICAg
IG1fcmluZ0J1ZmZlci0+c2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUsIGVuZEZyYW1l
KTsKLQogICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5zZXRTYW1wbGVDb3VudChudW1iZXJPZkZyYW1l
cyk7CiAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaChtX2F1ZGlvQnVmZmVyTGlzdC0+bGlzdCgpLCBu
dW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKaW5kZXggM2FiNGU0
YjFjZjFjMTQxMjMwYzEzZTQ1NzZjNWVkNmU2ZWZjMmVkYi4uMzg4ZWNiYmEzOTc5MGRmM2U0YTkx
YjYyMDJmODliMjdmMTU2Y2QzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0
ZToKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNT
dG9yYWdlQ2hhbmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNv
cmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsK
LSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSk7CisgICAg
dm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZy
YW1lcyk7CiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRl
b1NhbXBsZSYmKTsKICAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgppbmRleCA0NTFjMjg3YjI3NjA1YzI5MzJj
MmYyZGU4MmNmMmRmYzIyYzJhYmI0Li44ZDA1YmMyYzU5MTVlMzg2M2JiMmE0MDIxZWIxNWZhYTIz
ZjljYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBA
CiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUmVjb3JkZXIgTm90UmVmQ291bnRlZCB7CiAgICAg
QXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3Jp
cHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQotICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZShNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0
RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKQorICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRp
YVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiAgICAgVmlkZW9TYW1wbGVBdmFp
bGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlKQogICAgIEZldGNoRGF0YSgp
IC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgYnVmZmVyLCBkb3VibGUgdGltZUNvZGUpIEFzeW5jCiAg
ICAgU3RvcFJlY29yZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5jcHAKaW5kZXggNzMwNjk0NWVmZjc3MmJlMDM4MzYz
OGFkYzdkODJiYjg3N2JjYzEyMC4uN2U2ZWZiMDZkZDYyYmJlYTU4MmMwZWNjM2ZjOWFjYzdjNGJi
MDQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlLmNwcApAQCAtNDYsOCArNDYsMTEgQEAgdm9pZCBTaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZTo6c2V0UmVhZE9ubHkoYm9vbCByZWFkT25seSkKIAogdm9pZCBTaGFyZWRSaW5n
QnVmZmVyU3RvcmFnZTo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVDb3VudCkKIHsKLSAgICBpZiAoIW1f
cmVhZE9ubHkpCi0gICAgICAgIHNldFN0b3JhZ2UoU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShieXRl
Q291bnQpKTsKKyAgICBpZiAoIW1fcmVhZE9ubHkpIHsKKyAgICAgICAgYXV0byBzaGFyZWRNZW1v
cnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGJ5dGVDb3VudCArIHNpemVvZihGcmFtZUJvdW5k
cykpOworICAgICAgICBuZXcgKE5vdE51bGwsIHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSBGcmFtZUJv
dW5kczsKKyAgICAgICAgc2V0U3RvcmFnZShXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpOworICAgIH0K
IH0KIAogdm9pZCBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6ZGVhbGxvY2F0ZSgpCkBAIC01Niwx
MSArNTksNTggQEAgdm9pZCBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6ZGVhbGxvY2F0ZSgpCiAg
ICAgICAgIHNldFN0b3JhZ2UobnVsbHB0cik7CiB9CiAKK2F1dG8gU2hhcmVkUmluZ0J1ZmZlclN0
b3JhZ2U6OnNoYXJlZEZyYW1lQm91bmRzKCkgLT4gRnJhbWVCb3VuZHMqCit7CisgICAgcmV0dXJu
IG1fc3RvcmFnZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8RnJhbWVCb3VuZHMqPihtX3N0b3JhZ2UtPmRh
dGEoKSkgOiBudWxscHRyOworfQorCiB2b2lkKiBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6ZGF0
YSgpCiB7Ci0gICAgcmV0dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+ZGF0YSgpIDogbnVsbHB0
cjsKKyAgICByZXR1cm4gbV9zdG9yYWdlID8gc3RhdGljX2Nhc3Q8Qnl0ZSo+KG1fc3RvcmFnZS0+
ZGF0YSgpKSArIHNpemVvZihGcmFtZUJvdW5kcykgOiBudWxscHRyOwogfQogCit2b2lkIFNoYXJl
ZFJpbmdCdWZmZXJTdG9yYWdlOjpnZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3QmIHN0YXJ0
RnJhbWUsIHVpbnQ2NF90JiBlbmRGcmFtZSkKK3sKKyAgICBzdGFydEZyYW1lID0gbV9zdGFydEZy
YW1lOworICAgIGVuZEZyYW1lID0gbV9lbmRGcmFtZTsKIH0KIAordm9pZCBTaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZTo6c2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVp
bnQ2NF90IGVuZEZyYW1lKQoreworICAgIG1fc3RhcnRGcmFtZSA9IHN0YXJ0RnJhbWU7CisgICAg
bV9lbmRGcmFtZSA9IGVuZEZyYW1lOworCisgICAgQVNTRVJUKCFtX3JlYWRPbmx5KTsKKyAgICBp
ZiAobV9yZWFkT25seSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogc2hhcmVkQm91bmRz
ID0gc2hhcmVkRnJhbWVCb3VuZHMoKTsKKyAgICBpZiAoIXNoYXJlZEJvdW5kcykKKyAgICAgICAg
cmV0dXJuOworCisgICAgdW5zaWduZWQgaW5kZXhUb1dyaXRlID0gKHNoYXJlZEJvdW5kcy0+Ym91
bmRzQnVmZmVySW5kZXgubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSArIDEpICUgYm91
bmRzQnVmZmVyU2l6ZTsKKyAgICBzaGFyZWRCb3VuZHMtPmJvdW5kc0J1ZmZlcltpbmRleFRvV3Jp
dGVdID0gc3RkOjptYWtlX3BhaXIoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOworICAgIHNoYXJlZEJv
dW5kcy0+Ym91bmRzQnVmZmVySW5kZXguc3RvcmUoaW5kZXhUb1dyaXRlLCBzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxlYXNlKTsKK30KKwordm9pZCBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6dXBkYXRl
RnJhbWVCb3VuZHMoKQoreworICAgIGF1dG8qIHNoYXJlZEJvdW5kcyA9IHNoYXJlZEZyYW1lQm91
bmRzKCk7CisgICAgaWYgKCFzaGFyZWRCb3VuZHMpIHsKKyAgICAgICAgbV9zdGFydEZyYW1lID0g
bV9lbmRGcmFtZSA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHBhaXIg
PSBzaGFyZWRCb3VuZHMtPmJvdW5kc0J1ZmZlcltzaGFyZWRCb3VuZHMtPmJvdW5kc0J1ZmZlcklu
ZGV4LmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSldOworICAgIG1fc3RhcnRGcmFtZSA9
IHBhaXIuZmlyc3Q7CisgICAgbV9lbmRGcmFtZSA9IHBhaXIuc2Vjb25kOworfQorCit2b2lkIFNo
YXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpmbHVzaCgpCit7CisgICAgbV9zdGFydEZyYW1lID0gbV9l
bmRGcmFtZSA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5o
CmluZGV4IGM5MzRlOTA3Zjg5N2YzN2ZlMGUwOGY5MGY2ZjE5ZTM0M2YyMGY1ZWYuLjM2ZmMwNTE5
MDIzZDNlZjA2NDUzY2FlMjc2N2ZlM2RiZjk5MjM5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaWYgVVNFKE1FRElBVE9PTEJPWCkKIAorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+
CiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZm
ZXIuaD4KIApAQCAtNTcsMTEgKzU4LDI3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFsbG9jYXRlKHNp
emVfdCkgZmluYWw7CiAgICAgdm9pZCBkZWFsbG9jYXRlKCkgZmluYWw7CiAgICAgdm9pZCogZGF0
YSgpIGZpbmFsOworICAgIHZvaWQgZ2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2NF90JiBzdGFy
dFRpbWUsIHVpbnQ2NF90JiBlbmRUaW1lKSBmaW5hbDsKKyAgICB2b2lkIHNldEN1cnJlbnRGcmFt
ZUJvdW5kcyh1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkgZmluYWw7Cisg
ICAgdWludDY0X3QgY3VycmVudFN0YXJ0RnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3N0
YXJ0RnJhbWU7IH0KKyAgICB1aW50NjRfdCBjdXJyZW50RW5kRnJhbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2VuZEZyYW1lOyB9CisgICAgdm9pZCB1cGRhdGVGcmFtZUJvdW5kcygpIGZpbmFs
OworICAgIHZvaWQgZmx1c2goKSBmaW5hbDsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGJvdW5kc0J1ZmZlclNpemUgeyAyIH07CisgICAgc3RydWN0IEZyYW1lQm91
bmRzIHsKKyAgICAgICAgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4gYm91bmRzQnVmZmVy
W2JvdW5kc0J1ZmZlclNpemVdOworICAgICAgICBBdG9taWM8dW5zaWduZWQ+IGJvdW5kc0J1ZmZl
ckluZGV4IHsgMCB9OworICAgIH07CisKKyAgICBGcmFtZUJvdW5kcyogc2hhcmVkRnJhbWVCb3Vu
ZHMoKTsKKwogICAgIENsaWVudCogbV9jbGllbnQ7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
bV9zdG9yYWdlOwogICAgIGJvb2wgbV9yZWFkT25seSB7IGZhbHNlIH07CisgICAgdWludDY0X3Qg
bV9zdGFydEZyYW1lIHsgMCB9OworICAgIHVpbnQ2NF90IG1fZW5kRnJhbWUgeyAwIH07CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDg2NzkyYWE1NWMxZTdjYjEyNzhi
YWMzOTNkODcwNDk5YWJhNjA2MmMuLjZlZjE1ODM5Y2E4NjMzY2E3YjdhNGY1Y2YzMzExNDdmMTM2
ZjQyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC0xNTYsMTAgKzE1Niw3IEBA
IHByaXZhdGU6CiAKICAgICAgICAgQVNTRVJUKGlzPFdlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9E
YXRhKSk7CiAgICAgICAgIG1fcmluZ0J1ZmZlci5zdG9yZShkb3duY2FzdDxXZWJBdWRpb0J1ZmZl
ckxpc3Q+KGF1ZGlvRGF0YSkubGlzdCgpLCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUo
KSk7Ci0gICAgICAgIHVpbnQ2NF90IHN0YXJ0RnJhbWU7Ci0gICAgICAgIHVpbnQ2NF90IGVuZEZy
YW1lOwotICAgICAgICBtX3JpbmdCdWZmZXIuZ2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJh
bWUsIGVuZEZyYW1lKTsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6QXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1faWQsIHRpbWUs
IG51bWJlck9mRnJhbWVzLCBzdGFydEZyYW1lLCBlbmRGcmFtZSksIDApOworICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpBdWRp
b1NhbXBsZXNBdmFpbGFibGUobV9pZCwgdGltZSwgbnVtYmVyT2ZGcmFtZXMpLCAwKTsKICAgICB9
CiAKICAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpIGZp
bmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCAxYWU5
OTYwNWQ3NzY4OTNhOWZiZTc3OGIzOGMyYzVkZTdmMDQ2YjZkLi42MDE2ZGE5OTdlY2U5YzA5ODVm
YjBkZjI4MzhiYWE0ZTBjM2E2MDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRp
YVNvdXJjZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFN0b3JhZ2UoY29uc3QgU2hhcmVkTWVtb3J5OjoKIAog
I2VuZGlmCiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
OjpyZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51
bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKK3Zv
aWQgU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdGVBdWRp
b1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVz
KQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghbV9idWZmZXIpIHsKQEAgLTEwOSwx
NCArMTA5LDExIEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlOjpyZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkCiAgICAgfQogCiAgICAgbV9idWZm
ZXItPnNldFNhbXBsZUNvdW50KG51bWJlck9mRnJhbWVzKTsKLSAgICBtX3JpbmdCdWZmZXItPnNl
dEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7CiAgICAgbV9yaW5nQnVm
ZmVyLT5mZXRjaChtX2J1ZmZlci0+bGlzdCgpLCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFs
dWUoKSk7CiAgICAgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsICptX2J1ZmZlciwgbV9kZXNj
cmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGltZSk7
CiAgICAgVU5VU0VEX1BBUkFNKG51bWJlck9mRnJhbWVzKTsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
cnRGcmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGVuZEZyYW1lKTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IDIyNTI0MmI5Y2RhYzlkNzQ5
MTM2ZDA2ZjZiNGQwMjk1MDhiZTdmMWMuLjhiNTEyNTBmNWNhZDdmM2Y1Y2U3OGY1OGQ2NzYzNzE5
MGNmOGJmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oCkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0b3JhZ2UoY29uc3QgU2hhcmVkTWVt
b3J5OjpIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1
aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7CiAjZW5kaWYKIAotICAgIHZvaWQgcmVtb3RlQXVkaW9T
YW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2
NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKTsKKyAgICB2b2lkIHJlbW90ZUF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKICAg
ICB2b2lkIHJlbW90ZUNhcHR1cmVGYWlsZWQoKTsKICAgICB2b2lkIHJlbW90ZVNvdXJjZVN0b3Bw
ZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyLmNwcAppbmRleCA0ZjhhODZhMDIyZWE5YmNlNzcyNmY1YmU1YjA2OTcyMGUwODQxODU2Li5h
NzUxMGE2ZjM3NzIwZDJmMTk4NzhiMWFhYWY3ZTg1NmViYTgxZjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFT
b3VyY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcApAQCAtNzQsMTAgKzc0
LDEwIEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlcjo6cmVtb3ZlU291cmNlKFNwZWVjaFJlY29nCiAgICAgc2VuZChNZXNzYWdlczo6U3BlZWNo
UmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcjo6RGVsZXRlU291cmNlKGlkZW50
aWZpZXIpKTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFT
b3VyY2VNYW5hZ2VyOjpyZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgV1RGOjpNZWRpYVRpbWUm
IHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50
NjRfdCBlbmRGcmFtZSkKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlcjo6cmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFdURjo6TWVkaWFUaW1l
JiB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKIHsKICAgICBpZiAoYXV0byBzb3VyY2Ug
PSBtX3NvdXJjZXMuZ2V0KGlkZW50aWZpZXIpKQotICAgICAgICBzb3VyY2UtPnJlbW90ZUF1ZGlv
U2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBudW1iZXJPZkZyYW1lcywgc3RhcnRGcmFtZSwgZW5kRnJh
bWUpOworICAgICAgICBzb3VyY2UtPnJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBu
dW1iZXJPZkZyYW1lcyk7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlTWFuYWdlcjo6cmVtb3RlQ2FwdHVyZUZhaWxlZChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5oCmluZGV4IDIxNDZhOWIzNjMwMjM5N2IxYjg2
NGZmNGZhOGE3MzZhNTUzYWU2NTguLmY0YjRkODgxZWY5Y2I5MTU3OTMzNWQ4OGM1ZTIzYTQ4OWQ4
YjAwNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIE1lc3Nh
Z2VzOjpTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyCi0g
ICAgdm9pZCByZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKTsKKyAgICB2
b2lkIHJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlSWRlbnRpZmllciwgY29uc3QgV1RGOjpNZWRpYVRpbWUmLCB1aW50NjRfdCBudW1iZXJPZkZy
YW1lcyk7CiAgICAgdm9pZCByZW1vdGVDYXB0dXJlRmFpbGVkKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbW90ZVNvdXJjZVN0b3BwZWQoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIpOwogI2lmIFBMQVRGT1JNKENPQ09BKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFn
ZXIubWVzc2FnZXMuaW4KaW5kZXggZDA3MTAzOThiYzdjMmM0NzA0NGIwM2U2NWQwYWNjODU4MGEx
ZWZlYS4uOGE1YTE0MmJkOTVjNzA4ZThiNmYzYmU0Y2VjNjZjZGJmZDNiNjc2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAog
bWVzc2FnZXMgLT4gU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlciBOb3RSZWZDb3VudGVkIHsKLSAgICBSZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgTWVkaWFUaW1l
IHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50
NjRfdCBlbmRGcmFtZSkKKyAgICBSZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgTWVkaWFUaW1lIHRpbWUs
IHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQogICAgIFJlbW90ZUNhcHR1cmVGYWlsZWQoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBSZW1vdGVT
b3VyY2VTdG9wcGVkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eS5jcHAKaW5kZXggYzhjNTgyOTA1MGE1MjU4ZjlkOTMxOTc2Yjk1ZjA1ZTU5N2E1NmIzMS4uNzE5
YzM4Y2NkODIzNWRiZGViNzI3MzdlZDAzNWRhYmM4YTQ3NmRhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5LmNwcApAQCAtMTQ4LDEyICsxNDgsMTIgQEAgdm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OnN0b3AoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW8KIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHk6OnJlcXVlc3RCdWZmZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90IGhv
c3RUaW1lLCB1aW50NjRfdCBmcmFtZXNUb1JlbmRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OnJlcXVlc3RCdWZmZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2
NF90IGhvc3RUaW1lLCB1aW50NjRfdCBmcmFtZXNUb1JlbmRlcikKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKIAogICAgIGlmICghaGFzRW5vdWdoRnJhbWVzKGZyYW1lc1RvUmVuZGVy
KSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKDAsIDApOworICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvIHN0YXJ0RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICBtX2F1ZGlv
QnVmZmVyTGlzdC0+c2V0U2FtcGxlQ291bnQoZnJhbWVzVG9SZW5kZXIpOwpAQCAtMTYzLDExICsx
NjMsNiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVxdWVzdEJ1ZmZlcihk
b3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdAogICAgIG1fY3VycmVudEZyYW1lICs9IGZy
YW1lc1RvUmVuZGVyOwogCiAgICAgbV9yaW5nQnVmZmVyLT5zdG9yZShtX2F1ZGlvQnVmZmVyTGlz
dC0+bGlzdCgpLCBmcmFtZXNUb1JlbmRlciwgc3RhcnRGcmFtZSk7Ci0KLSAgICB1aW50NjRfdCBi
b3VuZHNTdGFydEZyYW1lOwotICAgIHVpbnQ2NF90IGJvdW5kc0VuZEZyYW1lOwotICAgIG1fcmlu
Z0J1ZmZlci0+Z2V0Q3VycmVudEZyYW1lQm91bmRzKGJvdW5kc1N0YXJ0RnJhbWUsIGJvdW5kc0Vu
ZEZyYW1lKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihib3VuZHNTdGFydEZyYW1lLCBib3VuZHNF
bmRGcmFtZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKaW5k
ZXggMmU2MDBkNjdkYjVmYTE0ODYzZDgwMGU2YTRkYWIyOWI1YTMzMjM5OC4uMjg5ZTE1MDk4NzBl
ZDEyYTc2MDFiMzVjZDhiMGZkNTM3OTEyOTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eS5oCkBAIC00OSw2ICs0OSw4IEBAIGNsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdDsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kczsKKwog
Y2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgOiBwdWJsaWMgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hCkBAIC03Miw3ICs3NCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIHZvaWQgcmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9z
dFRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVp
bnQ2NF90IGJvdW5kc1N0YXJ0RnJhbWUsIHVpbnQ2NF90IGJvdW5kc0VuZEZyYW1lKT4mJik7Cisg
ICAgdm9pZCByZXF1ZXN0QnVmZmVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBob3N0VGlt
ZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM4NWUxMmQ3
ODEyNDczZTA1ZWY1NWJlNzhhNGEwYjY4MjRiZDk3OTUuLjU4Y2E1ZGJhYzdlMjQ1OWNiMDljMzRk
OTMzMzNlZWQzYzk5YjdlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eSBOb3RSZWZDb3VudGVkIHsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBSZXF1ZXN0QnVmZmVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBob3N0VGltZSwg
dWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpIC0+ICh1aW50NjRfdCBib3VuZHNTdGFydEZyYW1lLCB1
aW50NjRfdCBib3VuZHNFbmRGcmFtZSkgQXN5bmMKKyAgICBSZXF1ZXN0QnVmZmVyKGRvdWJsZSBz
YW1wbGVUaW1lLCB1aW50NjRfdCBob3N0VGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcApp
bmRleCBlNjIwYmNjMzEzODMyNTQxZDRkMDM3YTczZjE5YjBiM2M4NWUxN2E1Li44YjZjYzIwYjRh
MzlmYzhjNzcxZmYwOWExY2ZjMGNjZjlmMGMzOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291
cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcApAQCAtMTU2LDEwICsxNTYsOCBAQCB2b2lkIFJlbW90ZUF1
ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOjpSZW1vdGVBdWRpbzo6YXVkaW9TYW1wbGVzQXZhaWxh
YmxlKHVpbnQ2NAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBlbmRGcmFtZSA9
IHN0YXJ0RnJhbWUgKyBudW1iZXJPZkZyYW1lczsKICAgICBtX2J1ZmZlci0+c2V0U2FtcGxlQ291
bnQobnVtYmVyT2ZGcmFtZXMpOwogCi0gICAgbV9yaW5nQnVmZmVyLT5zZXRDdXJyZW50RnJhbWVC
b3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOwogICAgIG1fcmluZ0J1ZmZlci0+ZmV0Y2gobV9i
dWZmZXItPmxpc3QoKSwgbnVtYmVyT2ZGcmFtZXMsIHN0YXJ0RnJhbWUpOwogCiAgICAgbV9wcm92
aWRlci0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKCptX2J1ZmZlciwgbV9kZXNjcmlwdGlvbiwgbnVt
YmVyT2ZGcmFtZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCmlu
ZGV4IDJlMGE2YjFmODM5MzJhZTgzMzVkZjRlYWE0ZWI1MzVmODU4NzEyMTIuLmU0ZWYxYzBjNDM0
YjhlOTJjZWZlODU2Y2YwNGQzYzE1YmI1MjRmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlci5jcHAKQEAgLTk1LDEwICs5NSw3IEBAIHZvaWQgQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXI6OnB1c2hTYW1wbGVzKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3Qg
V2ViCiAKICAgICBBU1NFUlQoaXM8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PihhdWRpb0Rh
dGEpKTsKICAgICBtX3JpbmdCdWZmZXItPnN0b3JlKGRvd25jYXN0PFdlYkNvcmU6OldlYkF1ZGlv
QnVmZmVyTGlzdD4oYXVkaW9EYXRhKS5saXN0KCksIG51bWJlck9mRnJhbWVzLCB0aW1lLnRpbWVW
YWx1ZSgpKTsKLSAgICB1aW50NjRfdCBzdGFydEZyYW1lOwotICAgIHVpbnQ2NF90IGVuZEZyYW1l
OwotICAgIG1fcmluZ0J1ZmZlci0+Z2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUsIGVu
ZEZyYW1lKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyOjpBdWRpb1NhbXBsZXNBdmFpbGFibGUgeyB0aW1lLCBudW1i
ZXJPZkZyYW1lcywgc3RhcnRGcmFtZSwgZW5kRnJhbWUgfSwgbV9pZGVudGlmaWVyKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyOjpBdWRpb1NhbXBsZXNBdmFpbGFibGUgeyB0aW1lLCBudW1iZXJPZkZyYW1lcyB9LCBt
X2lkZW50aWZpZXIpOwogfQogCiB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpz
dG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIHN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5j
cHAKaW5kZXggNDAzZGYxZjU3YjRhNjhjMzk4MDQ4NWM5MjBjZjgzMTgzMTJhYzg5MS4uYThlYzA1
OGJhMDQwMGRlM2IyYzhhMDlkNjhhNTA3MGViZWYyNTUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcApAQCAtMTA0LDEwICsxMDQsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjphdWRp
b1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbAogCiAgICAg
QVNTRVJUKGlzPFdlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9EYXRhKSk7CiAgICAgbV9yaW5nQnVm
ZmVyLT5zdG9yZShkb3duY2FzdDxXZWJBdWRpb0J1ZmZlckxpc3Q+KGF1ZGlvRGF0YSkubGlzdCgp
LCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUoKSk7Ci0gICAgdWludDY0X3Qgc3RhcnRG
cmFtZTsKLSAgICB1aW50NjRfdCBlbmRGcmFtZTsKLSAgICBtX3JpbmdCdWZmZXItPmdldEN1cnJl
bnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Ci0gICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpBdWRpb1NhbXBsZXNBdmFpbGFibGUg
eyB0aW1lLCBudW1iZXJPZkZyYW1lcywgc3RhcnRGcmFtZSwgZW5kRnJhbWUgfSwgbV9pZGVudGlm
aWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3Jk
ZXI6OkF1ZGlvU2FtcGxlc0F2YWlsYWJsZSB7IHRpbWUsIG51bWJlck9mRnJhbWVzIH0sIG1faWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OnN0b3JhZ2VDaGFuZ2Vk
KFNoYXJlZE1lbW9yeSogc3RvcmFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVh
bHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwCmluZGV4IGQwZmY0NDhiZWY4OTQxYWM0OTViZTA4
ZWY1M2JmYWMxYjgwNjZlZmEuLjY3OWVmOWQxNTc0ZmQzODQ3Nzc0Yjg4OGZjYjZhYjgxMTBmOWMx
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VN
YW5hZ2VyLmNwcApAQCAtMTIxLDEwICsxMjEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIEFTU0VS
VChpczxXZWJBdWRpb0J1ZmZlckxpc3Q+KGF1ZGlvRGF0YSkpOwogICAgICAgICBtX3JpbmdCdWZm
ZXIuc3RvcmUoZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihhdWRpb0RhdGEpLmxpc3QoKSwg
bnVtYmVyT2ZGcmFtZXMsIHRpbWUudGltZVZhbHVlKCkpOwotICAgICAgICB1aW50NjRfdCBzdGFy
dEZyYW1lOwotICAgICAgICB1aW50NjRfdCBlbmRGcmFtZTsKLSAgICAgICAgbV9yaW5nQnVmZmVy
LmdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Ci0gICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlTWFuYWdlcjo6UmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1faWRlbnRp
ZmllciwgdGltZSwgbnVtYmVyT2ZGcmFtZXMsIHN0YXJ0RnJhbWUsIGVuZEZyYW1lKSwgMCk7Cisg
ICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25SZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcjo6UmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxl
KG1faWRlbnRpZmllciwgdGltZSwgbnVtYmVyT2ZGcmFtZXMpLCAwKTsKICNlbHNlCiAgICAgICAg
IFVOVVNFRF9QQVJBTSh0aW1lKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGF1ZGlvRGF0YSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyLmNwcAppbmRleCA1YjNlNzAwZTA5NThlMmZiZDU2OTE3ODA0Mjcx
ZGVkYzk0ZmM1ZTQ5Li5jNTY1YjIyNmQ3OTAzOGQzYmI4N2U2ZjBiZDg3Nzg4OWE2MTgzMjRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBSZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlcjo6YXVkaW9TdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmMKICAgICBpdGVyYXRvci0+dmFsdWUtPnNldFN0b3JhZ2UoaXBjSGFuZGxlLmhh
bmRsZSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKIH0KIAotdm9pZCBSZW1vdGVDYXB0
dXJlU2FtcGxlTWFuYWdlcjo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIE1lZGlhVGltZSB0aW1lLCB1aW50NjRf
dCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUp
Cit2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgTWVkaWFU
aW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQogewogICAgIEFTU0VSVCghV1RGOjpp
c01haW5SdW5Mb29wKCkpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBSZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlcjo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3UKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRvIGZpbmQg
c291cmNlICVsbHUgZm9yIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZSIsIGlkZW50aWZpZXIudG9VSW50
NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaXRlcmF0b3ItPnZhbHVlLT5hdWRp
b1NhbXBsZXNBdmFpbGFibGUodGltZSwgbnVtYmVyT2ZGcmFtZXMsIHN0YXJ0RnJhbWUsIGVuZEZy
YW1lKTsKKyAgICBpdGVyYXRvci0+dmFsdWUtPmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBu
dW1iZXJPZkZyYW1lcyk7CiB9CiAKIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpSZW1vdGVB
dWRpbzo6UmVtb3RlQXVkaW8oUmVmPFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNl
KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJl
bW90ZUF1ZGlvOjpzZXRTdG9yYWdlKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuCiAgICAgbV9idWZm
ZXIgPSBtYWtlVW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4oZGVzY3JpcHRpb24sIG51bWJlck9m
RnJhbWVzKTsKIH0KIAotdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6UmVtb3RlQXVk
aW86OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKQordm9pZCBS
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6UmVtb3RlQXVkaW86OmF1ZGlvU2FtcGxlc0F2YWls
YWJsZShNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiB7CiAgICAgaWYg
KCFtX2J1ZmZlcikgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJidWZmZXIg
Zm9yIGF1ZGlvIHNvdXJjZSAlbGx1IGlzIG51bGwiLCBtX3NvdXJjZS0+aWRlbnRpZmllcigpLnRv
VUludDY0KCkpOwpAQCAtMTU1LDcgKzE1NSw2IEBAIHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1h
bmFnZXI6OlJlbW90ZUF1ZGlvOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpCiAK
ICAgICBtX2J1ZmZlci0+c2V0U2FtcGxlQ291bnQobnVtYmVyT2ZGcmFtZXMpOwogCi0gICAgbV9y
aW5nQnVmZmVyLT5zZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOwog
ICAgIG1fcmluZ0J1ZmZlci0+ZmV0Y2gobV9idWZmZXItPmxpc3QoKSwgbnVtYmVyT2ZGcmFtZXMs
IHRpbWUudGltZVZhbHVlKCkpOwogCiAgICAgbV9zb3VyY2UtPnJlbW90ZUF1ZGlvU2FtcGxlc0F2
YWlsYWJsZSh0aW1lLCAqbV9idWZmZXIsIG1fZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyLmgKaW5kZXggNmZiNGJjMzdiOTM4MDE2ZmNlNWM1YzVhYzVhNDM3
MDI3ZjE4NmJlNC4uMDFhZTE1ZjhmNWZkYWY4NjA0MzE5NjNiYjIyY2IwZmIzMWY0Yjk1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1w
bGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IE1lc3NhZ2VzCiAgICAgdm9pZCBhdWRpb1N0b3JhZ2VDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNv
bnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzKTsKLSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlSWRlbnRpZmllciwgTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1l
cywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpOworICAgIHZvaWQgYXVk
aW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVy
LCBNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKIAogICAgIHZvaWQgc2V0Q29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKIApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgog
ICAgICAgICBleHBsaWNpdCBSZW1vdGVBdWRpbyhSZWY8UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZT4mJik7CiAKICAgICAgICAgdm9pZCBzZXRTdG9yYWdlKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFu
ZGxlJiwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3Qg
bnVtYmVyT2ZGcmFtZXMpOwotICAgICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRp
YVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50
NjRfdCBlbmRGcmFtZSk7CisgICAgICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlh
VGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
UmVmPFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IGQ4ZGUxYTFjMjRkNWI0NDNiYzQ4YWRiNDZi
MWNiODgyNzU3ZjY2NmEuLjZhY2UyNmJmYTgzMDY4MzE2YTgxYjZjNTFiZmFlNDY4NTNiOWZmMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1
LDcgQEAKIAogbWVzc2FnZXMgLT4gUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIgTm90UmVmQ291
bnRlZCB7CiAgICAgQXVkaW9TdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlSWRlbnRpZmllciBpZCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdl
SGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVp
bnQ2NF90IG51bWJlck9mRnJhbWVzKQotICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgTWVkaWFUaW1lIHRpbWUsIHVpbnQ2
NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFt
ZSkKKyAgICBBdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUlkZW50aWZpZXIgaWQsIE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMWU0MDI3MjBiYjQ2NDExNzQyMDE2ZGJhZjhmMDI1ZWY2ZTA1YjcwOC4uNmU0ZTI5
NzA4ODc2OGQzZGNhYjhmYWY5OGQxN2M2MjVjMzIxN2UwMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEyLTEw
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3Nd
IEN1dCBpbiBoYWxmIGFtb3VudCBvZiBJUEMgbmVlZGVkIHRvIGRvIFdlYkF1ZGlvCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3MTUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaW5vciBBUEkgdGVzdCBj
aGFuZ2VzIGR1ZSB0byBDQVJpbmdCdWZmZXIgQVBJIGNoYW5nZS4gZmV0Y2goKSBhbHdheXMgcmV0
dXJuZWQgT2sKKyAgICAgICAgc28gSSBkcm9wcGVkIHRoZSByZXR1cm4gdmFsdWUuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNaXhp
bmdUZXN0OjpydW4pOgorCiAyMDIwLTEyLTEwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBs
ZS5jb20+CiAKICAgICAgICAgcHJlcGFyZS1DaGFuZ2VMb2cgd29uJ3QgcGFyc2UgcmRhcjovL25u
bm5ubm5uIFVSTHMgaW4gZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxEYXRhKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKaW5kZXggOGJi
ZWJmNGU1YTI3MjM5OTFhZTRhZDRjYTY4YjIwN2Y2ODRhYTdkOS4uZjIwYmVmZjYwMDMzYWE3ZTQ1
YTM3ZWJjNjI2YjRjOTJhZTFiMzE4NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTEwOSw4ICsxMDksNyBAQCBURVNUX0Yo
Q0FSaW5nQnVmZmVyVGVzdCwgQmFzaWNzKQogICAgIGZsb2F0IHNjcmF0Y2hCdWZmZXJbY2FwYWNp
dHldOwogICAgIHNldExpc3REYXRhQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHNj
cmF0Y2hCdWZmZXIpLCBjYXBhY2l0eSk7CiAKLSAgICBlcnIgPSByaW5nQnVmZmVyKCkuZmV0Y2go
JmJ1ZmZlckxpc3QoKSwgc2FtcGxlQ291bnQsIDApOwotICAgIEVYUEVDVF9FUShlcnIsIENBUmlu
Z0J1ZmZlcjo6RXJyb3I6Ok9rKTsKKyAgICByaW5nQnVmZmVyKCkuZmV0Y2goJmJ1ZmZlckxpc3Qo
KSwgc2FtcGxlQ291bnQsIDApOwogICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoc291cmNlQnVmZmVy
LCBzY3JhdGNoQnVmZmVyLCBzYW1wbGVDb3VudCAqIGRlc2NyaXB0aW9uKCkuc2FtcGxlV29yZFNp
emUoKSkpOwogCiAgICAgLy8gLi4uIGFuZCB0aGUgc2Vjb25kIGhhbGYuCkBAIC0xMjIsOCArMTIx
LDcgQEAgVEVTVF9GKENBUmluZ0J1ZmZlclRlc3QsIEJhc2ljcykKICAgICBFWFBFQ1RfRVEoY2Fw
YWNpdHksIChpbnQpZW5kVGltZSk7CiAKICAgICBtZW1zZXQoc2NyYXRjaEJ1ZmZlciwgMCwgc2Ft
cGxlQ291bnQgKiBkZXNjcmlwdGlvbigpLnNhbXBsZVdvcmRTaXplKCkpOwotICAgIGVyciA9IHJp
bmdCdWZmZXIoKS5mZXRjaCgmYnVmZmVyTGlzdCgpLCBzYW1wbGVDb3VudCwgMCk7Ci0gICAgRVhQ
RUNUX0VRKGVyciwgQ0FSaW5nQnVmZmVyOjpFcnJvcjo6T2spOworICAgIHJpbmdCdWZmZXIoKS5m
ZXRjaCgmYnVmZmVyTGlzdCgpLCBzYW1wbGVDb3VudCwgMCk7CiAgICAgRVhQRUNUX1RSVUUoIW1l
bWNtcChzb3VyY2VCdWZmZXIsIHNjcmF0Y2hCdWZmZXIsIHNhbXBsZUNvdW50ICogZGVzY3JpcHRp
b24oKS5zYW1wbGVXb3JkU2l6ZSgpKSk7CiAKICAgICAvLyBGb3JjZSB0aGUgYnVmZmVyIHRvIHdy
YXAgYXJvdW5kCkBAIC0xODUsMTggKzE4MywxNCBAQCBwdWJsaWM6CiAKICAgICAgICAgbWVtc2V0
KHJlYWRCdWZmZXIsIDAsIHNhbXBsZUNvdW50ICogdGVzdC5kZXNjcmlwdGlvbigpLnNhbXBsZVdv
cmRTaXplKCkpOwogICAgICAgICB0ZXN0LnNldExpc3REYXRhQnVmZmVyKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KHJlYWRCdWZmZXIpLCBzYW1wbGVDb3VudCk7Ci0gICAgICAgIGVyciA9IHRl
c3QucmluZ0J1ZmZlcigpLmZldGNoKCZ0ZXN0LmJ1ZmZlckxpc3QoKSwgc2FtcGxlQ291bnQsIDAs
IENBUmluZ0J1ZmZlcjo6RmV0Y2hNb2RlOjpNaXgpOwotICAgICAgICBFWFBFQ1RfRVEoZXJyLCBD
QVJpbmdCdWZmZXI6OkVycm9yOjpPayk7CisgICAgICAgIHRlc3QucmluZ0J1ZmZlcigpLmZldGNo
KCZ0ZXN0LmJ1ZmZlckxpc3QoKSwgc2FtcGxlQ291bnQsIDAsIENBUmluZ0J1ZmZlcjo6RmV0Y2hN
b2RlOjpNaXgpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2FtcGxlQ291bnQ7IGkr
KykKICAgICAgICAgICAgIEVYUEVDVF9FUShyZWFkQnVmZmVyW2ldLCByZWZlcmVuY2VCdWZmZXJb
aV0pIDw8ICJSaW5nIGJ1ZmZlciB2YWx1ZSBkaWZmZXJzIGF0IGluZGV4ICIgPDwgaTsKIAotICAg
ICAgICBlcnIgPSB0ZXN0LnJpbmdCdWZmZXIoKS5mZXRjaCgmdGVzdC5idWZmZXJMaXN0KCksIHNh
bXBsZUNvdW50LCAwLCBDQVJpbmdCdWZmZXI6OkZldGNoTW9kZTo6TWl4KTsKLSAgICAgICAgRVhQ
RUNUX0VRKGVyciwgQ0FSaW5nQnVmZmVyOjpFcnJvcjo6T2spOwotICAgICAgICBlcnIgPSB0ZXN0
LnJpbmdCdWZmZXIoKS5mZXRjaCgmdGVzdC5idWZmZXJMaXN0KCksIHNhbXBsZUNvdW50LCAwLCBD
QVJpbmdCdWZmZXI6OkZldGNoTW9kZTo6TWl4KTsKLSAgICAgICAgRVhQRUNUX0VRKGVyciwgQ0FS
aW5nQnVmZmVyOjpFcnJvcjo6T2spOwotICAgICAgICBlcnIgPSB0ZXN0LnJpbmdCdWZmZXIoKS5m
ZXRjaCgmdGVzdC5idWZmZXJMaXN0KCksIHNhbXBsZUNvdW50LCAwLCBDQVJpbmdCdWZmZXI6OkZl
dGNoTW9kZTo6TWl4KTsKLSAgICAgICAgRVhQRUNUX0VRKGVyciwgQ0FSaW5nQnVmZmVyOjpFcnJv
cjo6T2spOworICAgICAgICB0ZXN0LnJpbmdCdWZmZXIoKS5mZXRjaCgmdGVzdC5idWZmZXJMaXN0
KCksIHNhbXBsZUNvdW50LCAwLCBDQVJpbmdCdWZmZXI6OkZldGNoTW9kZTo6TWl4KTsKKyAgICAg
ICAgdGVzdC5yaW5nQnVmZmVyKCkuZmV0Y2goJnRlc3QuYnVmZmVyTGlzdCgpLCBzYW1wbGVDb3Vu
dCwgMCwgQ0FSaW5nQnVmZmVyOjpGZXRjaE1vZGU6Ok1peCk7CisgICAgICAgIHRlc3QucmluZ0J1
ZmZlcigpLmZldGNoKCZ0ZXN0LmJ1ZmZlckxpc3QoKSwgc2FtcGxlQ291bnQsIDAsIENBUmluZ0J1
ZmZlcjo6RmV0Y2hNb2RlOjpNaXgpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2Ft
cGxlQ291bnQ7IGkrKykKICAgICAgICAgICAgIHJlZmVyZW5jZUJ1ZmZlcltpXSArPSBzb3VyY2VC
dWZmZXJbaV0gKiAzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415927</attachid>
            <date>2020-12-10 14:01:58 -0800</date>
            <delta_ts>2020-12-10 14:37:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219715-20201210140157.patch</filename>
            <type>text/plain</type>
            <size>53025</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE5YjdjY2JmMTY3YWI0
M2I1YWYzZWIzZmI0Y2QzMDM2MTdiZmI3ZS4uOGI2MmE5YzUyMmNjYTE1OTBkMDkzNTEwZTc0NWU0
MDBiZmE1N2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTEyLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIEN1dCBp
biBoYWxmIGFtb3VudCBvZiBJUEMgbmVlZGVkIHRvIGRvIFdlYkF1ZGlvCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3MTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXQgaW4gaGFsZiBhbW91bnQgb2Yg
SVBDIG5lZWRlZCB0byBkbyBXZWJBdWRpby4gUHJldmlvdXNseSwgd2Ugd291bGQgc2VuZCAyCisg
ICAgICAgIElQQ3MgcGVyIHJlbmRlcmluZyBxdWFudHVtOgorICAgICAgICAxLiBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIgZnJvbSBHUFVQcm9jZXNzIHRvIFdlYlBy
b2Nlc3MKKyAgICAgICAgMi4gVGhlIHJlc3BvbnNlIHRvIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eTo6UmVxdWVzdEJ1ZmZlciB3aGljaCBjb250YWluZWQKKyAgICAgICAgICAgdGhlIGZyYW1l
IGJvdW5kcyBmb3IgdGhlIFJpbmdCdWZmZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBnZXRzIHJp
ZCBvZiBJUEMgMiBieSBoYXZpbmcgdGhlIENBUmluZ0J1ZmZlciBjbGFzcyBzdG9yZSBpdHMgYm91
bmRzCisgICAgICAgIGluIGl0cyBtZW1vcnkgYmFja2luZy4gQXMgYSByZXN1bHQsIHdoZW4gdGhl
IENBUmluZ0J1ZmZlciBpcyB1c2luZyBhIHNoYXJlZAorICAgICAgICBtZW1vcnkgYmFja2luZywg
dGhlIGJvdW5kcyBnZXQgc2hhcmVkIGJldHdlZW4gcHJvY2Vzc2VzLCB3aXRob3V0IGFueSBuZWVk
IGZvcgorICAgICAgICBJUEMgdG8gc3luYyB0aGVtLgorCisgICAgICAgIFRoaXMgaXMgc3RpbGwg
dG9vIG11Y2ggSVBDIGJ1dCB0aGlzIGlzIGEgc3RlcCBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiBX
ZQorICAgICAgICBjYW4gaG9wZWZ1bGx5IGdldCByaWQgb2YgKG9yIGdyZWF0bHkgcmVkdWNlKSBJ
UEMgMSBpbiBhIGZvbGxvdy11cCBwYXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBs
ZURhdGFTb3VyY2U6OnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVua3MpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
QVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yOjpDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlcjo6Q0FSaW5nQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNBUmluZ0J1ZmZlcjo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVm
ZmVyU3RvcmFnZVZlY3Rvcjo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVy
OjpzZXRDdXJyZW50RnJhbWVCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVy
U3RvcmFnZVZlY3Rvcjo6c2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNBUmluZ0J1ZmZlcjo6Z2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNBUmluZ0J1ZmZlcjo6Z2V0Q3VycmVudEZyYW1lQm91bmRzV2l0aG91dFVwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yOjpnZXRDdXJyZW50RnJhbWVC
b3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVyOjpjbGlwVGltZUJvdW5kcyk6
CisgICAgICAgIChXZWJDb3JlOjpDQVJpbmdCdWZmZXI6OmN1cnJlbnRTdGFydEZyYW1lIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3I6OmN1cnJlbnRT
dGFydEZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlcjo6Y3VycmVu
dEVuZEZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlclN0b3JhZ2VW
ZWN0b3I6OmN1cnJlbnRFbmRGcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQVJpbmdC
dWZmZXI6OnVwZGF0ZUZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZl
cjo6ZmV0Y2hJZkhhc0Vub3VnaERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVy
OjpmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDQVJpbmdCdWZmZXI6OmZldGNoSW50ZXJuYWwp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVyU3RvcmFnZTo6dXBkYXRlRnJhbWVCb3VuZHMpOgorCiAy
MDIwLTEyLTEwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xG
Q11bSUZDXSBJbnRyb2R1Y2UgSW5saW5lVGV4dEl0ZW06OmlzV29yZFNlcGFyYXRvcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkNTM3MzdjMTNlODc0NzMwYmI3OGZlODdjYzdmYzk1M2VhNTgxOThmLi4wMGYzMmUwMjI1
MGIzNDc2M2VjMGI0NWRkMTcwYWJkMmViNzczZjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBA
CisyMDIwLTEyLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
W0dQVVByb2Nlc3NdIEN1dCBpbiBoYWxmIGFtb3VudCBvZiBJUEMgbmVlZGVkIHRvIGRvIFdlYkF1
ZGlvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3
MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXQg
aW4gaGFsZiBhbW91bnQgb2YgSVBDIG5lZWRlZCB0byBkbyBXZWJBdWRpby4gUHJldmlvdXNseSwg
d2Ugd291bGQgc2VuZCAyCisgICAgICAgIElQQ3MgcGVyIHJlbmRlcmluZyBxdWFudHVtOgorICAg
ICAgICAxLiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIgZnJvbSBH
UFVQcm9jZXNzIHRvIFdlYlByb2Nlc3MKKyAgICAgICAgMi4gVGhlIHJlc3BvbnNlIHRvIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVxdWVzdEJ1ZmZlciB3aGljaCBjb250YWluZWQKKyAg
ICAgICAgICAgdGhlIGZyYW1lIGJvdW5kcyBmb3IgdGhlIFJpbmdCdWZmZXIuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBnZXRzIHJpZCBvZiBJUEMgMiBieSBoYXZpbmcgdGhlIENBUmluZ0J1ZmZlciBj
bGFzcyBzdG9yZSBpdHMgYm91bmRzCisgICAgICAgIGluIGl0cyBtZW1vcnkgYmFja2luZy4gQXMg
YSByZXN1bHQsIHdoZW4gdGhlIENBUmluZ0J1ZmZlciBpcyB1c2luZyBhIHNoYXJlZAorICAgICAg
ICBtZW1vcnkgYmFja2luZywgdGhlIGJvdW5kcyBnZXQgc2hhcmVkIGJldHdlZW4gcHJvY2Vzc2Vz
LCB3aXRob3V0IGFueSBuZWVkIGZvcgorICAgICAgICBJUEMgdG8gc3luYyB0aGVtLgorCisgICAg
ICAgIFRoaXMgaXMgc3RpbGwgdG9vIG11Y2ggSVBDIGJ1dCB0aGlzIGlzIGEgc3RlcCBpbiB0aGUg
cmlnaHQgZGlyZWN0aW9uLiBXZQorICAgICAgICBjYW4gaG9wZWZ1bGx5IGdldCByaWQgb2YgKG9y
IGdyZWF0bHkgcmVkdWNlKSBJUEMgMSBpbiBhIGZvbGxvdy11cCBwYXRjaC4KKworICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjphdWRpb1NhbXBsZXNTdG9yYWdl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnJlbmRl
cik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJv
eHk6OnN0b3JhZ2VDaGFuZ2VkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjphdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
OjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmF1ZGlvU2FtcGxlc1N0b3JhZ2VD
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6YXVkaW9TYW1w
bGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0
b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6YWxs
b2NhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6c2hhcmVk
RnJhbWVCb3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6
ZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpnZXRDdXJy
ZW50RnJhbWVCb3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFn
ZTo6c2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2U6OnVwZGF0ZUZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2U6OmZsdXNoKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3RlQXVkaW9TYW1w
bGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjpy
ZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFn
ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5OjpyZXF1ZXN0QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5OjpzdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlk
ZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRl
ck1hbmFnZXI6OlJlbW90ZUF1ZGlvOjpzZXRTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI6OlJlbW90ZUF1ZGlvOjphdWRpb1NhbXBsZXNB
dmFpbGFibGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyOjpwdXNoU2FtcGxlcyk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyOjpzdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFSZWNvcmRlclByaXZhdGU6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUmVjb3JkZXJQcml2YXRlOjpzdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2Vy
OjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlcjo6UmVtb3RlQXVkaW86OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2Fn
ZXMuaW46CisKIDIwMjAtMTItMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MDU0Mi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckxp
c3QuY3BwCmluZGV4IGI1YjNhN2YxMjJlZjMyMjM3ZDkwNWQ4OGRhZjliMzdkZjI3OThlNmYuLmZk
ZjY3NzU3ZDFiNDc3NjA4MDhiMTNmYjQzNGU0MGIzZGZkMzBlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJMaXN0LmNwcApAQCAtMzEwLDggKzMxMCw3IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVy
TGlzdDo6Y29weUZyb20oQXVkaW9TYW1wbGVCdWZmZXJMaXN0JiBzb3VyY2UsIHNpemVfdCBmCiBP
U1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKENBUmluZ0J1ZmZlciYgcmlu
Z0J1ZmZlciwgc2l6ZV90IHNhbXBsZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lLCBDQVJpbmdC
dWZmZXI6OkZldGNoTW9kZSBtb2RlKQogewogICAgIHJlc2V0KCk7Ci0gICAgaWYgKHJpbmdCdWZm
ZXIuZmV0Y2goYnVmZmVyTGlzdCgpLmxpc3QoKSwgc2FtcGxlQ291bnQsIHN0YXJ0RnJhbWUsIG1v
ZGUpICE9IENBUmluZ0J1ZmZlcjo6T2spCi0gICAgICAgIHJldHVybiBrQXVkaW9fUGFyYW1FcnJv
cjsKKyAgICByaW5nQnVmZmVyLmZldGNoKGJ1ZmZlckxpc3QoKS5saXN0KCksIHNhbXBsZUNvdW50
LCBzdGFydEZyYW1lLCBtb2RlKTsKIAogICAgIG1fc2FtcGxlQ291bnQgPSBzYW1wbGVDb3VudDsK
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRleCBjZGUzZWI0OTc3Njk5
NTAzZjRhY2FmZThhZGVjODFjYTlkMzhlZDg5Li43NjRlYmY3ZTIzMjA3ZDdlMmU5YTdlNGNkMTkw
NGY3ZmY3Nzc0YTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0zMjQsOCArMzI0LDcg
QEAgYm9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVu
a3MoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIKICAgICB9CiAKICAgICB3aGlsZSAoZW5kRnJhbWUg
LSBzdGFydEZyYW1lID49IHNhbXBsZUNvdW50UGVyQ2h1bmspIHsKLSAgICAgICAgaWYgKG1fcmlu
Z0J1ZmZlci0+ZmV0Y2goJmJ1ZmZlciwgc2FtcGxlQ291bnRQZXJDaHVuaywgc3RhcnRGcmFtZSwg
Q0FSaW5nQnVmZmVyOjpDb3B5KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
bV9yaW5nQnVmZmVyLT5mZXRjaCgmYnVmZmVyLCBzYW1wbGVDb3VudFBlckNodW5rLCBzdGFydEZy
YW1lLCBDQVJpbmdCdWZmZXI6OkNvcHkpOwogICAgICAgICBjb25zdW1lRmlsbGVkQnVmZmVyKCk7
CiAgICAgICAgIHN0YXJ0RnJhbWUgKz0gc2FtcGxlQ291bnRQZXJDaHVuazsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNw
cAppbmRleCBlZDdhN2E1YmMxNDMzNjJmOTdhZjljYWQ5MjExMDhmYjMyMWZmODdlLi4yYWQxNWMy
NTFlZGMwYTRhNmMzODZjMzAxMGI5MTk2NmE0NjEzNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTM4LDkgKzM4
LDEzIEBAIGNvbnN0IHVpbnQzMl90IGtHZW5lcmFsUmluZ1RpbWVCb3VuZHNRdWV1ZU1hc2sgPSBr
R2VuZXJhbFJpbmdUaW1lQm91bmRzUXVldWVTaXplCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Q0FSaW5nQnVmZmVyU3RvcmFnZVZlY3Rvcjo6Q0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvcigpCisg
ICAgOiBtX3RpbWVCb3VuZHNRdWV1ZShrR2VuZXJhbFJpbmdUaW1lQm91bmRzUXVldWVTaXplKQor
eworfQorCiBDQVJpbmdCdWZmZXI6OkNBUmluZ0J1ZmZlcigpCiAgICAgOiBtX2J1ZmZlcnMobWFr
ZVVuaXF1ZVJlZjxDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yPigpKQotICAgICwgbV90aW1lQm91
bmRzUXVldWUoa0dlbmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVlU2l6ZSkKIHsKIH0KIApAQCAtNTEs
NyArNTUsNiBAQCBDQVJpbmdCdWZmZXI6On5DQVJpbmdCdWZmZXIoKQogCiBDQVJpbmdCdWZmZXI6
OkNBUmluZ0J1ZmZlcihVbmlxdWVSZWY8Q0FSaW5nQnVmZmVyU3RvcmFnZT4mJiBzdG9yYWdlKQog
ICAgIDogbV9idWZmZXJzKFdURk1vdmUoc3RvcmFnZSkpCi0gICAgLCBtX3RpbWVCb3VuZHNRdWV1
ZShrR2VuZXJhbFJpbmdUaW1lQm91bmRzUXVldWVTaXplKQogewogfQogCkBAIC0xNjUsNiArMTY4
LDExIEBAIGlubGluZSB2b2lkIFplcm9BQkwoQXVkaW9CdWZmZXJMaXN0KiBsaXN0LCBzaXplX3Qg
ZGVzdE9mZnNldCwgc2l6ZV90IG5ieXRlcykKIH0KIAogdm9pZCBDQVJpbmdCdWZmZXI6OmZsdXNo
KCkKK3sKKyAgICBtX2J1ZmZlcnMtPmZsdXNoKCk7Cit9CisKK3ZvaWQgQ0FSaW5nQnVmZmVyU3Rv
cmFnZVZlY3Rvcjo6Zmx1c2goKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY3VycmVudEZy
YW1lQm91bmRzTG9jayk7CiAgICAgZm9yIChhdXRvJiB0aW1lQm91bmRzIDogbV90aW1lQm91bmRz
UXVldWUpIHsKQEAgLTIzNCw2ICsyNDIsMTEgQEAgQ0FSaW5nQnVmZmVyOjpFcnJvciBDQVJpbmdC
dWZmZXI6OnN0b3JlKGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCogbGlzdCwgc2l6ZV90IGZyYW0KIH0K
IAogdm9pZCBDQVJpbmdCdWZmZXI6OnNldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCBzdGFy
dFRpbWUsIHVpbnQ2NF90IGVuZFRpbWUpCit7CisgICAgbV9idWZmZXJzLT5zZXRDdXJyZW50RnJh
bWVCb3VuZHMoc3RhcnRUaW1lLCBlbmRUaW1lKTsKK30KKwordm9pZCBDQVJpbmdCdWZmZXJTdG9y
YWdlVmVjdG9yOjpzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3Qgc3RhcnRUaW1lLCB1aW50
NjRfdCBlbmRUaW1lKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY3VycmVudEZyYW1lQm91
bmRzTG9jayk7CiAgICAgdWludDMyX3QgbmV4dFB0ciA9IG1fdGltZUJvdW5kc1F1ZXVlUHRyLmxv
YWQoKSArIDE7CkBAIC0yNDUsMTQgKzI1OCwyNSBAQCB2b2lkIENBUmluZ0J1ZmZlcjo6c2V0Q3Vy
cmVudEZyYW1lQm91bmRzKHVpbnQ2NF90IHN0YXJ0VGltZSwgdWludDY0X3QgZW5kVGltZSkKICAg
ICBtX3RpbWVCb3VuZHNRdWV1ZVB0cisrOwogfQogCi12b2lkIENBUmluZ0J1ZmZlcjo6Z2V0Q3Vy
cmVudEZyYW1lQm91bmRzKHVpbnQ2NF90ICZzdGFydFRpbWUsIHVpbnQ2NF90ICZlbmRUaW1lKQor
dm9pZCBDQVJpbmdCdWZmZXI6OmdldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCYgc3RhcnRG
cmFtZSwgdWludDY0X3QmIGVuZEZyYW1lKQoreworICAgIHVwZGF0ZUZyYW1lQm91bmRzKCk7Cisg
ICAgZ2V0Q3VycmVudEZyYW1lQm91bmRzV2l0aG91dFVwZGF0ZShzdGFydEZyYW1lLCBlbmRGcmFt
ZSk7Cit9CisKK3ZvaWQgQ0FSaW5nQnVmZmVyOjpnZXRDdXJyZW50RnJhbWVCb3VuZHNXaXRob3V0
VXBkYXRlKHVpbnQ2NF90JiBzdGFydEZyYW1lLCB1aW50NjRfdCYgZW5kRnJhbWUpCit7CisgICAg
bV9idWZmZXJzLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOwor
fQorCit2b2lkIENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3I6OmdldEN1cnJlbnRGcmFtZUJvdW5k
cyh1aW50NjRfdCYgc3RhcnRGcmFtZSwgdWludDY0X3QmIGVuZEZyYW1lKQogewogICAgIHVpbnQz
Ml90IGN1clB0ciA9IG1fdGltZUJvdW5kc1F1ZXVlUHRyLmxvYWQoKTsKICAgICB1aW50MzJfdCBp
bmRleCA9IGN1clB0ciAmIGtHZW5lcmFsUmluZ1RpbWVCb3VuZHNRdWV1ZU1hc2s7Ci0gICAgQ0FS
aW5nQnVmZmVyOjpUaW1lQm91bmRzJiBib3VuZHMgPSBtX3RpbWVCb3VuZHNRdWV1ZVtpbmRleF07
CisgICAgYXV0byYgYm91bmRzID0gbV90aW1lQm91bmRzUXVldWVbaW5kZXhdOwogCi0gICAgc3Rh
cnRUaW1lID0gYm91bmRzLm1fc3RhcnRGcmFtZTsKLSAgICBlbmRUaW1lID0gYm91bmRzLm1fZW5k
RnJhbWU7CisgICAgc3RhcnRGcmFtZSA9IGJvdW5kcy5tX3N0YXJ0RnJhbWU7CisgICAgZW5kRnJh
bWUgPSBib3VuZHMubV9lbmRGcmFtZTsKIH0KIAogdm9pZCBDQVJpbmdCdWZmZXI6OmNsaXBUaW1l
Qm91bmRzKHVpbnQ2NF90JiBzdGFydFJlYWQsIHVpbnQ2NF90JiBlbmRSZWFkKQpAQCAtMjYwLDcg
KzI4NCw3IEBAIHZvaWQgQ0FSaW5nQnVmZmVyOjpjbGlwVGltZUJvdW5kcyh1aW50NjRfdCYgc3Rh
cnRSZWFkLCB1aW50NjRfdCYgZW5kUmVhZCkKICAgICB1aW50NjRfdCBzdGFydFRpbWU7CiAgICAg
dWludDY0X3QgZW5kVGltZTsKIAotICAgIGdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydFRpbWUs
IGVuZFRpbWUpOworICAgIGdldEN1cnJlbnRGcmFtZUJvdW5kc1dpdGhvdXRVcGRhdGUoc3RhcnRU
aW1lLCBlbmRUaW1lKTsKIAogICAgIGlmIChzdGFydFJlYWQgPiBlbmRUaW1lIHx8IGVuZFJlYWQg
PCBzdGFydFRpbWUpIHsKICAgICAgICAgZW5kUmVhZCA9IHN0YXJ0UmVhZDsKQEAgLTI3MywyMSAr
Mjk3LDU3IEBAIHZvaWQgQ0FSaW5nQnVmZmVyOjpjbGlwVGltZUJvdW5kcyh1aW50NjRfdCYgc3Rh
cnRSZWFkLCB1aW50NjRfdCYgZW5kUmVhZCkKIH0KIAogdWludDY0X3QgQ0FSaW5nQnVmZmVyOjpj
dXJyZW50U3RhcnRGcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVmZmVycy0+Y3VycmVu
dFN0YXJ0RnJhbWUoKTsKK30KKwordWludDY0X3QgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3Rvcjo6
Y3VycmVudFN0YXJ0RnJhbWUoKSBjb25zdAogewogICAgIHVpbnQzMl90IGluZGV4ID0gbV90aW1l
Qm91bmRzUXVldWVQdHIubG9hZCgpICYga0dlbmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVlTWFzazsK
ICAgICByZXR1cm4gbV90aW1lQm91bmRzUXVldWVbaW5kZXhdLm1fc3RhcnRGcmFtZTsKIH0KIAog
dWludDY0X3QgQ0FSaW5nQnVmZmVyOjpjdXJyZW50RW5kRnJhbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2J1ZmZlcnMtPmN1cnJlbnRFbmRGcmFtZSgpOworfQorCit1aW50NjRfdCBDQVJpbmdC
dWZmZXJTdG9yYWdlVmVjdG9yOjpjdXJyZW50RW5kRnJhbWUoKSBjb25zdAogewogICAgIHVpbnQz
Ml90IGluZGV4ID0gbV90aW1lQm91bmRzUXVldWVQdHIubG9hZCgpICYga0dlbmVyYWxSaW5nVGlt
ZUJvdW5kc1F1ZXVlTWFzazsKICAgICByZXR1cm4gbV90aW1lQm91bmRzUXVldWVbaW5kZXhdLm1f
ZW5kRnJhbWU7CiB9CiAKLUNBUmluZ0J1ZmZlcjo6RXJyb3IgQ0FSaW5nQnVmZmVyOjpmZXRjaChB
dWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBuRnJhbWVzLCB1aW50NjRfdCBzdGFydFJlYWQs
IEZldGNoTW9kZSBtb2RlKQordm9pZCBDQVJpbmdCdWZmZXI6OnVwZGF0ZUZyYW1lQm91bmRzKCkK
K3sKKyAgICBtX2J1ZmZlcnMtPnVwZGF0ZUZyYW1lQm91bmRzKCk7Cit9CisKK2Jvb2wgQ0FSaW5n
QnVmZmVyOjpmZXRjaElmSGFzRW5vdWdoRGF0YShBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVf
dCBmcmFtZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lLCBGZXRjaE1vZGUgbW9kZSkKK3sKKyAg
ICAvLyBXaGVuIHRoZSBSaW5nQnVmZmVyIGlzIGJhY2tlZCBieSBzaGFyZWQgbWVtb3J5LCBtYWtl
IHN1cmUgd2UgcHVsbCBmcmFtZSBib3VuZHMgZnJvbSBzaGFyZWQgbWVtb3J5IGJlZm9yZSBmZXRj
aGluZy4KKyAgICB1cGRhdGVGcmFtZUJvdW5kcygpOworCisgICAgdWludDY0X3Qgc3RhcnQsIGVu
ZDsKKyAgICBnZXRDdXJyZW50RnJhbWVCb3VuZHNXaXRob3V0VXBkYXRlKHN0YXJ0LCBlbmQpOwor
ICAgIGlmIChzdGFydEZyYW1lIDwgc3RhcnQgfHwgc3RhcnRGcmFtZSArIGZyYW1lQ291bnQgPiBl
bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZldGNoSW50ZXJuYWwobGlzdCwgZnJh
bWVDb3VudCwgc3RhcnRGcmFtZSwgbW9kZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
Q0FSaW5nQnVmZmVyOjpmZXRjaChBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBmcmFtZUNv
dW50LCB1aW50NjRfdCBzdGFydFJlYWQsIEZldGNoTW9kZSBtb2RlKQoreworICAgIC8vIFdoZW4g
dGhlIFJpbmdCdWZmZXIgaXMgYmFja2VkIGJ5IHNoYXJlZCBtZW1vcnksIG1ha2Ugc3VyZSB3ZSBw
dWxsIGZyYW1lIGJvdW5kcyBmcm9tIHNoYXJlZCBtZW1vcnkgYmVmb3JlIGZldGNoaW5nLgorICAg
IHVwZGF0ZUZyYW1lQm91bmRzKCk7CisgICAgZmV0Y2hJbnRlcm5hbChsaXN0LCBmcmFtZUNvdW50
LCBzdGFydFJlYWQsIG1vZGUpOworfQorCit2b2lkIENBUmluZ0J1ZmZlcjo6ZmV0Y2hJbnRlcm5h
bChBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBuRnJhbWVzLCB1aW50NjRfdCBzdGFydFJl
YWQsIEZldGNoTW9kZSBtb2RlKQogewogICAgIGlmICghbkZyYW1lcykKLSAgICAgICAgcmV0dXJu
IE9rOworICAgICAgICByZXR1cm47CiAgICAgCiAgICAgc3RhcnRSZWFkID0gc3RkOjptYXg8dWlu
dDY0X3Q+KDAsIHN0YXJ0UmVhZCk7CiAgICAgCkBAIC0zMDAsNyArMzYwLDcgQEAgQ0FSaW5nQnVm
ZmVyOjpFcnJvciBDQVJpbmdCdWZmZXI6OmZldGNoKEF1ZGlvQnVmZmVyTGlzdCogbGlzdCwgc2l6
ZV90IG5GcmFtZXMsIHUKIAogICAgIGlmIChzdGFydFJlYWQgPT0gZW5kUmVhZCkgewogICAgICAg
ICBaZXJvQUJMKGxpc3QsIDAsIG5GcmFtZXMgKiBtX2J5dGVzUGVyRnJhbWUpOwotICAgICAgICBy
ZXR1cm4gT2s7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgc2l6ZV90IGJ5dGVT
aXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigoZW5kUmVhZCAtIHN0YXJ0UmVhZCkgKiBtX2J5dGVz
UGVyRnJhbWUpOwpAQCAtMzM1LDggKzM5NSw2IEBAIENBUmluZ0J1ZmZlcjo6RXJyb3IgQ0FSaW5n
QnVmZmVyOjpmZXRjaChBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBuRnJhbWVzLCB1CiAg
ICAgICAgIGRlc3QtPm1EYXRhQnl0ZVNpemUgPSBuYnl0ZXM7CiAgICAgICAgIGRlc3QrKzsKICAg
ICB9Ci0gICAgCi0gICAgcmV0dXJuIE9rOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5oCmluZGV4IDNkODk0YjA2NWUxYjVj
ZDMwYmRlOGY3NDA0MzcwNDhkNzY4Yjk3MDUuLmIzMGQ5MzFlNjVhYzM4MjBiMDVjZDdhNTRkYmM2
ZTViY2UxMmIyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0NBUmluZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0NBUmluZ0J1ZmZlci5oCkBAIC00NSwxNyArNDUsNDUgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBhbGxvY2F0ZShzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVhbGxvY2F0
ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQqIGRhdGEoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCYgc3RhcnRUaW1lLCB1aW50NjRfdCYgZW5k
VGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0
X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRnJhbWVCb3VuZHMoKSB7IH0KKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGN1cnJlbnRTdGFy
dEZyYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdWludDY0X3QgY3VycmVudEVuZEZyYW1l
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmbHVzaCgpID0gMDsKIH07CiAKIGNsYXNz
IENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3IgZmluYWwgOiBwdWJsaWMgQ0FSaW5nQnVmZmVyU3Rv
cmFnZSB7CiBwdWJsaWM6CisgICAgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvcigpOwogICAgIH5D
QVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yKCkgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIHZv
aWQgYWxsb2NhdGUoc2l6ZV90IGJ5dGVDb3VudCkgZmluYWwgeyBtX2J1ZmZlci5ncm93KGJ5dGVD
b3VudCk7IH0KICAgICB2b2lkIGRlYWxsb2NhdGUoKSBmaW5hbCB7IG1fYnVmZmVyLmNsZWFyKCk7
IH0KICAgICB2b2lkKiBkYXRhKCkgZmluYWwgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9Cisg
ICAgdm9pZCBnZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3QmIHN0YXJ0VGltZSwgdWludDY0
X3QmIGVuZFRpbWUpIGZpbmFsOworICAgIHZvaWQgc2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2
NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKSBmaW5hbDsKKyAgICB1aW50NjRfdCBj
dXJyZW50U3RhcnRGcmFtZSgpIGNvbnN0OworICAgIHVpbnQ2NF90IGN1cnJlbnRFbmRGcmFtZSgp
IGNvbnN0OworICAgIHZvaWQgZmx1c2goKSBmaW5hbDsKKworICAgIHN0cnVjdCBUaW1lQm91bmRz
IHsKKyAgICAgICAgVGltZUJvdW5kcygpCisgICAgICAgICAgICA6IG1fc3RhcnRGcmFtZSgwKQor
ICAgICAgICAgICAgLCBtX2VuZEZyYW1lKDApCisgICAgICAgICAgICAsIG1fdXBkYXRlQ291bnRl
cigwKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgdm9sYXRpbGUgdWludDY0X3QgbV9z
dGFydEZyYW1lOworICAgICAgICB2b2xhdGlsZSB1aW50NjRfdCBtX2VuZEZyYW1lOworICAgICAg
ICB2b2xhdGlsZSB1aW50MzJfdCBtX3VwZGF0ZUNvdW50ZXI7CisgICAgfTsKKwogICAgIFZlY3Rv
cjx1aW50OF90PiBtX2J1ZmZlcjsKKyAgICBWZWN0b3I8VGltZUJvdW5kcz4gbV90aW1lQm91bmRz
UXVldWU7CisgICAgTG9jayBtX2N1cnJlbnRGcmFtZUJvdW5kc0xvY2s7CisgICAgc3RkOjphdG9t
aWM8aW50MzJfdD4gbV90aW1lQm91bmRzUXVldWVQdHIgeyAwIH07CiB9OwogCiBjbGFzcyBDQVJp
bmdCdWZmZXIgewpAQCAtNzYsMjAgKzEwNCwyNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgRXJyb3Igc3RvcmUoY29uc3QgQXVkaW9CdWZmZXJMaXN0Kiwgc2l6ZV90IGZyYW1lQ291bnQs
IHVpbnQ2NF90IHN0YXJ0RnJhbWUpOwogCiAgICAgZW51bSBGZXRjaE1vZGUgeyBDb3B5LCBNaXgg
fTsKLSAgICBXRUJDT1JFX0VYUE9SVCBFcnJvciBmZXRjaChBdWRpb0J1ZmZlckxpc3QqLCBzaXpl
X3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2RlID0gQ29weSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBmZXRjaElmSGFzRW5vdWdoRGF0YShBdWRpb0J1ZmZlckxp
c3QqLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2RlID0g
Q29weSk7CisKKyAgICAvLyBGaWxscyBidWZmZXIgd2l0aCBzaWxlbmNlIGlmIHRoZXJlIGlzIG5v
dCBlbm91Z2ggZGF0YS4KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZldGNoKEF1ZGlvQnVmZmVy
TGlzdCosIHNpemVfdCBmcmFtZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lLCBGZXRjaE1vZGUg
PSBDb3B5KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmx1c2goKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZ2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2NF90ICZzdGFydFRpbWUs
IHVpbnQ2NF90ICZlbmRUaW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRG
cmFtZUJvdW5kcyh1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3QmIHN0YXJ0
RnJhbWUsIHVpbnQ2NF90JiBlbmRGcmFtZSk7CiAKICAgICB1aW50MzJfdCBjaGFubmVsQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxDb3VudDsgfQogICAgIENBUmluZ0J1ZmZlclN0b3Jh
Z2UmIHN0b3JhZ2UoKSB7IHJldHVybiBtX2J1ZmZlcnM7IH0KIAogcHJpdmF0ZToKKyAgICB2b2lk
IHVwZGF0ZUZyYW1lQm91bmRzKCk7CiAgICAgc2l6ZV90IGZyYW1lT2Zmc2V0KHVpbnQ2NF90IGZy
YW1lTnVtYmVyKSB7IHJldHVybiAoZnJhbWVOdW1iZXIgJiBtX2ZyYW1lQ291bnRNYXNrKSAqIG1f
Ynl0ZXNQZXJGcmFtZTsgfQogCiAgICAgdm9pZCBjbGlwVGltZUJvdW5kcyh1aW50NjRfdCYgc3Rh
cnRSZWFkLCB1aW50NjRfdCYgZW5kUmVhZCk7CisgICAgdm9pZCBzZXRDdXJyZW50RnJhbWVCb3Vu
ZHModWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpOworCisgICAgdm9pZCBn
ZXRDdXJyZW50RnJhbWVCb3VuZHNXaXRob3V0VXBkYXRlKHVpbnQ2NF90JiBzdGFydEZyYW1lLCB1
aW50NjRfdCYgZW5kRnJhbWUpOworICAgIHZvaWQgZmV0Y2hJbnRlcm5hbChBdWRpb0J1ZmZlckxp
c3QqLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2RlKTsK
IAogICAgIHVpbnQ2NF90IGN1cnJlbnRTdGFydEZyYW1lKCkgY29uc3Q7CiAgICAgdWludDY0X3Qg
Y3VycmVudEVuZEZyYW1lKCkgY29uc3Q7CkBAIC0xMDIsMjIgKzEzNyw3IEBAIHByaXZhdGU6CiAg
ICAgdWludDMyX3QgbV9mcmFtZUNvdW50TWFzayB7IDAgfTsKICAgICBzaXplX3QgbV9jYXBhY2l0
eUJ5dGVzIHsgMCB9OwogCi0gICAgc3RydWN0IFRpbWVCb3VuZHMgewotICAgICAgICBUaW1lQm91
bmRzKCkKLSAgICAgICAgICAgIDogbV9zdGFydEZyYW1lKDApCi0gICAgICAgICAgICAsIG1fZW5k
RnJhbWUoMCkKLSAgICAgICAgICAgICwgbV91cGRhdGVDb3VudGVyKDApCi0gICAgICAgIHsKLSAg
ICAgICAgfQotICAgICAgICB2b2xhdGlsZSB1aW50NjRfdCBtX3N0YXJ0RnJhbWU7Ci0gICAgICAg
IHZvbGF0aWxlIHVpbnQ2NF90IG1fZW5kRnJhbWU7Ci0gICAgICAgIHZvbGF0aWxlIHVpbnQzMl90
IG1fdXBkYXRlQ291bnRlcjsKLSAgICB9OwotCiAgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
IG1fZGVzY3JpcHRpb247Ci0gICAgVmVjdG9yPFRpbWVCb3VuZHM+IG1fdGltZUJvdW5kc1F1ZXVl
OwotICAgIExvY2sgbV9jdXJyZW50RnJhbWVCb3VuZHNMb2NrOwotICAgIHN0ZDo6YXRvbWljPGlu
dDMyX3Q+IG1fdGltZUJvdW5kc1F1ZXVlUHRyIHsgMCB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlci5jcHAKaW5kZXggOTU4NWZkZmE3OWQwMjhmNTQ4ZWFlMDNiMjQ2NTg0MDlk
OTQ1Mzg1MS4uOWViNWJlODM3OWQ0ZmU1MDNlYjU1NTJiYzQ1MTRkMGM4MzY0NjRhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBAIC0xNDIsMjAgKzE0MiwxMiBAQCBwcml2YXRl
OgogICAgICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24gfHwgIW1f
aXNQbGF5aW5nKQogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKIAotICAgICAgICB1aW50NjRf
dCBzdGFydDsKLSAgICAgICAgdWludDY0X3QgZW5kOwotICAgICAgICBtX3JpbmdCdWZmZXItPmdl
dEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydCwgZW5kKTsKLSAgICAgICAgaWYgKG1fc3RhcnRGcmFt
ZSA+PSBzdGFydCAmJiBtX3N0YXJ0RnJhbWUgKyBudW1iZXJPZkZyYW1lcyA8PSBlbmQpIHsKLSAg
ICAgICAgICAgIG1fcmluZ0J1ZmZlci0+ZmV0Y2goaW9EYXRhLCBudW1iZXJPZkZyYW1lcywgbV9z
dGFydEZyYW1lKTsKKyAgICAgICAgaWYgKG1fcmluZ0J1ZmZlci0+ZmV0Y2hJZkhhc0Vub3VnaERh
dGEoaW9EYXRhLCBudW1iZXJPZkZyYW1lcywgbV9zdGFydEZyYW1lKSkgewogICAgICAgICAgICAg
bV9zdGFydEZyYW1lICs9IG51bWJlck9mRnJhbWVzOwogICAgICAgICAgICAgc3RhdHVzID0gbm9F
cnI7CiAgICAgICAgIH0KIAotICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZXF1
ZXN0QnVmZmVyKHNhbXBsZVRpbWUsIGhvc3RUaW1lLCBudW1iZXJPZkZyYW1lcyksIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDY0X3QsIHVpbnQ2NF90KT4oW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0oYXV0byBib3VuZHNTdGFydEZyYW1lLCBhdXRvIGJvdW5kc0VuZEZy
YW1lKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
ICAgICAgICBpZiAoYm91bmRzRW5kRnJhbWUpCi0gICAgICAgICAgICAgICAgbV9yaW5nQnVmZmVy
LT5zZXRDdXJyZW50RnJhbWVCb3VuZHMoYm91bmRzU3RhcnRGcmFtZSwgYm91bmRzRW5kRnJhbWUp
OwotICAgICAgICB9LCBDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6Ok1haW5UaHJlYWQpLCBt
X2lkLnRvVUludDY0KCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVxdWVzdEJ1ZmZlcihzYW1w
bGVUaW1lLCBob3N0VGltZSwgbnVtYmVyT2ZGcmFtZXMpLCBtX2lkLnRvVUludDY0KCkpOwogCiAg
ICAgICAgIHJldHVybiBzdGF0dXM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyLmNwcAppbmRleCBkZTg1MjRkNGFiYjQxYTMxMmQyMmRlOTlmMjg4ZmI4NDhk
NDg1ZWMyLi40NTY1ODRjYTA3YThkZDE2YTMxMDI0NzI0M2UxNGZmMWQ2ZDU2YWNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcApAQCAtMTIxLDEzICsxMjEs
MTEgQEAgdm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6YXVkaW9TYW1w
bGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hhcmUKICAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1h
a2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihtX2Rlc2NyaXB0aW9uKTsKIH0KIAotdm9pZCBS
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6YXVkaW9TYW1wbGVzQXZhaWxhYmxl
KE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRG
cmFtZSwgdWludDY0X3QgZW5kRnJhbWUpCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90
IG51bWJlck9mRnJhbWVzKQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9hdWRpb0J1ZmZlckxpc3Qp
OwogICAgIE1FU1NBR0VfQ0hFQ0soV2ViQXVkaW9CdWZmZXJMaXN0Ojppc1N1cHBvcnRlZERlc2Ny
aXB0aW9uKG1fZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKSk7CiAKLSAgICBtX3JpbmdCdWZm
ZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Ci0KICAgICBt
X2F1ZGlvQnVmZmVyTGlzdC0+c2V0U2FtcGxlQ291bnQobnVtYmVyT2ZGcmFtZXMpOwogICAgIG1f
cmluZ0J1ZmZlci0+ZmV0Y2gobV9hdWRpb0J1ZmZlckxpc3QtPmxpc3QoKSwgbnVtYmVyT2ZGcmFt
ZXMsIHRpbWUudGltZVZhbHVlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyLmgKaW5kZXggOWMwNjZjMzJhMThjMmU1N2IyMWZjYTNmMmIzZDZiYzc0NDFlNTIyOS4u
ZDUzOTI5YjQ4MTAwMTlmYzkyYWYzYzJjZjMwYjljNmRmMzNmNWI0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaApAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2xlYXIoKTsKICAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CiAgICAgdm9pZCBh
dWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYs
IGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzKTsKLSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUsIHVp
bnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRG
cmFtZSk7CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lLCB1aW50NjRf
dCBudW1iZXJPZkZyYW1lcyk7CiAKICAgICBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZSYgc3RvcmFn
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5t
ZXNzYWdlcy5pbgppbmRleCAyNTRiZjczOWIzYzE4NzM0NzViMWYyYzk0NGRmNWQ4MTNhMzVhYmMy
Li5kN2EzYTI4NGYwNWY5NzQxMTE0MjU1MDUzNjhhZmRjY2YwYWJmMWFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMuaW4KQEAgLTMx
LDcgKzMxLDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0Vm9sdW1lKGZsb2F0IHZhbHVlKQogCiAgICAgQXVk
aW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBz
dG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRp
b24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQotICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJsZShN
ZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJh
bWUsIHVpbnQ2NF90IGVuZEZyYW1lKQorICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRp
bWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHAKaW5kZXggNjc0OGQxZjVkODAwZDk1NzRmMjM4MDc1YjE4OTBiNGU0YWNlZTkxNC4uNzNlNjFj
ZDhlYzIwMjU1YzE3ODRhYjA1YjFlNjc3OGQ0OGY1MzlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC04
OSwxNCArODksMTIgQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjphdWRpb1NhbXBsZXNTdG9y
YWdlQ2hhbmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmQKICAgICBtX2F1ZGlvQnVmZmVy
TGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihtX2Rlc2NyaXB0aW9uKTsKIH0K
IAotdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFU
aW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1
aW50NjRfdCBlbmRGcmFtZSkKK3ZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6YXVkaW9TYW1wbGVz
QXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKIHsKICAg
ICBNRVNTQUdFX0NIRUNLKG1fcmluZ0J1ZmZlcik7CiAgICAgTUVTU0FHRV9DSEVDSyhtX2F1ZGlv
QnVmZmVyTGlzdCk7CiAgICAgTUVTU0FHRV9DSEVDSyhXZWJBdWRpb0J1ZmZlckxpc3Q6OmlzU3Vw
cG9ydGVkRGVzY3JpcHRpb24obV9kZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpKTsKIAotICAg
IG1fcmluZ0J1ZmZlci0+c2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUsIGVuZEZyYW1l
KTsKLQogICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5zZXRTYW1wbGVDb3VudChudW1iZXJPZkZyYW1l
cyk7CiAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaChtX2F1ZGlvQnVmZmVyTGlzdC0+bGlzdCgpLCBu
dW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKaW5kZXggM2FiNGU0
YjFjZjFjMTQxMjMwYzEzZTQ1NzZjNWVkNmU2ZWZjMmVkYi4uMzg4ZWNiYmEzOTc5MGRmM2U0YTkx
YjYyMDJmODliMjdmMTU2Y2QzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0
ZToKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNT
dG9yYWdlQ2hhbmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNv
cmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsK
LSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSk7CisgICAg
dm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZy
YW1lcyk7CiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRl
b1NhbXBsZSYmKTsKICAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgppbmRleCA0NTFjMjg3YjI3NjA1YzI5MzJj
MmYyZGU4MmNmMmRmYzIyYzJhYmI0Li44ZDA1YmMyYzU5MTVlMzg2M2JiMmE0MDIxZWIxNWZhYTIz
ZjljYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBA
CiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUmVjb3JkZXIgTm90UmVmQ291bnRlZCB7CiAgICAg
QXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3Jp
cHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQotICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZShNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0
RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKQorICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRp
YVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiAgICAgVmlkZW9TYW1wbGVBdmFp
bGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlKQogICAgIEZldGNoRGF0YSgp
IC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgYnVmZmVyLCBkb3VibGUgdGltZUNvZGUpIEFzeW5jCiAg
ICAgU3RvcFJlY29yZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5jcHAKaW5kZXggNzMwNjk0NWVmZjc3MmJlMDM4MzYz
OGFkYzdkODJiYjg3N2JjYzEyMC4uN2U2ZWZiMDZkZDYyYmJlYTU4MmMwZWNjM2ZjOWFjYzdjNGJi
MDQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlLmNwcApAQCAtNDYsOCArNDYsMTEgQEAgdm9pZCBTaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZTo6c2V0UmVhZE9ubHkoYm9vbCByZWFkT25seSkKIAogdm9pZCBTaGFyZWRSaW5n
QnVmZmVyU3RvcmFnZTo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVDb3VudCkKIHsKLSAgICBpZiAoIW1f
cmVhZE9ubHkpCi0gICAgICAgIHNldFN0b3JhZ2UoU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShieXRl
Q291bnQpKTsKKyAgICBpZiAoIW1fcmVhZE9ubHkpIHsKKyAgICAgICAgYXV0byBzaGFyZWRNZW1v
cnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGJ5dGVDb3VudCArIHNpemVvZihGcmFtZUJvdW5k
cykpOworICAgICAgICBuZXcgKE5vdE51bGwsIHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSBGcmFtZUJv
dW5kczsKKyAgICAgICAgc2V0U3RvcmFnZShXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpOworICAgIH0K
IH0KIAogdm9pZCBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6ZGVhbGxvY2F0ZSgpCkBAIC01Niwx
MSArNTksNTggQEAgdm9pZCBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6ZGVhbGxvY2F0ZSgpCiAg
ICAgICAgIHNldFN0b3JhZ2UobnVsbHB0cik7CiB9CiAKK2F1dG8gU2hhcmVkUmluZ0J1ZmZlclN0
b3JhZ2U6OnNoYXJlZEZyYW1lQm91bmRzKCkgLT4gRnJhbWVCb3VuZHMqCit7CisgICAgcmV0dXJu
IG1fc3RvcmFnZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8RnJhbWVCb3VuZHMqPihtX3N0b3JhZ2UtPmRh
dGEoKSkgOiBudWxscHRyOworfQorCiB2b2lkKiBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6ZGF0
YSgpCiB7Ci0gICAgcmV0dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+ZGF0YSgpIDogbnVsbHB0
cjsKKyAgICByZXR1cm4gbV9zdG9yYWdlID8gc3RhdGljX2Nhc3Q8Qnl0ZSo+KG1fc3RvcmFnZS0+
ZGF0YSgpKSArIHNpemVvZihGcmFtZUJvdW5kcykgOiBudWxscHRyOwogfQogCit2b2lkIFNoYXJl
ZFJpbmdCdWZmZXJTdG9yYWdlOjpnZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3QmIHN0YXJ0
RnJhbWUsIHVpbnQ2NF90JiBlbmRGcmFtZSkKK3sKKyAgICBzdGFydEZyYW1lID0gbV9zdGFydEZy
YW1lOworICAgIGVuZEZyYW1lID0gbV9lbmRGcmFtZTsKIH0KIAordm9pZCBTaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZTo6c2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVp
bnQ2NF90IGVuZEZyYW1lKQoreworICAgIG1fc3RhcnRGcmFtZSA9IHN0YXJ0RnJhbWU7CisgICAg
bV9lbmRGcmFtZSA9IGVuZEZyYW1lOworCisgICAgQVNTRVJUKCFtX3JlYWRPbmx5KTsKKyAgICBp
ZiAobV9yZWFkT25seSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogc2hhcmVkQm91bmRz
ID0gc2hhcmVkRnJhbWVCb3VuZHMoKTsKKyAgICBpZiAoIXNoYXJlZEJvdW5kcykKKyAgICAgICAg
cmV0dXJuOworCisgICAgdW5zaWduZWQgaW5kZXhUb1dyaXRlID0gKHNoYXJlZEJvdW5kcy0+Ym91
bmRzQnVmZmVySW5kZXgubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSArIDEpICUgYm91
bmRzQnVmZmVyU2l6ZTsKKyAgICBzaGFyZWRCb3VuZHMtPmJvdW5kc0J1ZmZlcltpbmRleFRvV3Jp
dGVdID0gc3RkOjptYWtlX3BhaXIoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOworICAgIHNoYXJlZEJv
dW5kcy0+Ym91bmRzQnVmZmVySW5kZXguc3RvcmUoaW5kZXhUb1dyaXRlLCBzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxlYXNlKTsKK30KKwordm9pZCBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6dXBkYXRl
RnJhbWVCb3VuZHMoKQoreworICAgIGF1dG8qIHNoYXJlZEJvdW5kcyA9IHNoYXJlZEZyYW1lQm91
bmRzKCk7CisgICAgaWYgKCFzaGFyZWRCb3VuZHMpIHsKKyAgICAgICAgbV9zdGFydEZyYW1lID0g
bV9lbmRGcmFtZSA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHBhaXIg
PSBzaGFyZWRCb3VuZHMtPmJvdW5kc0J1ZmZlcltzaGFyZWRCb3VuZHMtPmJvdW5kc0J1ZmZlcklu
ZGV4LmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSldOworICAgIG1fc3RhcnRGcmFtZSA9
IHBhaXIuZmlyc3Q7CisgICAgbV9lbmRGcmFtZSA9IHBhaXIuc2Vjb25kOworfQorCit2b2lkIFNo
YXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpmbHVzaCgpCit7CisgICAgbV9zdGFydEZyYW1lID0gbV9l
bmRGcmFtZSA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5o
CmluZGV4IGM5MzRlOTA3Zjg5N2YzN2ZlMGUwOGY5MGY2ZjE5ZTM0M2YyMGY1ZWYuLjU4ZjI3NjY2
NGI4M2Q5Mjc0Zjg1Yzc5ZjliM2FjMzA1MzcwZjA1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaWYgVVNFKE1FRElBVE9PTEJPWCkKIAorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+
CiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZm
ZXIuaD4KIApAQCAtNTcsMTEgKzU4LDI3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFsbG9jYXRlKHNp
emVfdCkgZmluYWw7CiAgICAgdm9pZCBkZWFsbG9jYXRlKCkgZmluYWw7CiAgICAgdm9pZCogZGF0
YSgpIGZpbmFsOworICAgIHZvaWQgZ2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2NF90JiBzdGFy
dFRpbWUsIHVpbnQ2NF90JiBlbmRUaW1lKSBmaW5hbDsKKyAgICB2b2lkIHNldEN1cnJlbnRGcmFt
ZUJvdW5kcyh1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkgZmluYWw7Cisg
ICAgdWludDY0X3QgY3VycmVudFN0YXJ0RnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3N0
YXJ0RnJhbWU7IH0KKyAgICB1aW50NjRfdCBjdXJyZW50RW5kRnJhbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2VuZEZyYW1lOyB9CisgICAgdm9pZCB1cGRhdGVGcmFtZUJvdW5kcygpIGZpbmFs
OworICAgIHZvaWQgZmx1c2goKSBmaW5hbDsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGJvdW5kc0J1ZmZlclNpemUgeyAzMiB9OworICAgIHN0cnVjdCBGcmFtZUJv
dW5kcyB7CisgICAgICAgIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IGJvdW5kc0J1ZmZl
cltib3VuZHNCdWZmZXJTaXplXTsKKyAgICAgICAgQXRvbWljPHVuc2lnbmVkPiBib3VuZHNCdWZm
ZXJJbmRleCB7IDAgfTsKKyAgICB9OworCisgICAgRnJhbWVCb3VuZHMqIHNoYXJlZEZyYW1lQm91
bmRzKCk7CisKICAgICBDbGllbnQqIG1fY2xpZW50OwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IG1fc3RvcmFnZTsKICAgICBib29sIG1fcmVhZE9ubHkgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90
IG1fc3RhcnRGcmFtZSB7IDAgfTsKKyAgICB1aW50NjRfdCBtX2VuZEZyYW1lIHsgMCB9OwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRleCA4Njc5MmFhNTVjMWU3Y2IxMjc4
YmFjMzkzZDg3MDQ5OWFiYTYwNjJjLi42ZWYxNTgzOWNhODYzM2NhN2I3YTRmNWNmMzMxMTQ3ZjEz
NmY0MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcApAQCAtMTU2LDEwICsxNTYsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIEFTU0VSVChpczxXZWJBdWRpb0J1ZmZlckxpc3Q+KGF1ZGlv
RGF0YSkpOwogICAgICAgICBtX3JpbmdCdWZmZXIuc3RvcmUoZG93bmNhc3Q8V2ViQXVkaW9CdWZm
ZXJMaXN0PihhdWRpb0RhdGEpLmxpc3QoKSwgbnVtYmVyT2ZGcmFtZXMsIHRpbWUudGltZVZhbHVl
KCkpOwotICAgICAgICB1aW50NjRfdCBzdGFydEZyYW1lOwotICAgICAgICB1aW50NjRfdCBlbmRG
cmFtZTsKLSAgICAgICAgbV9yaW5nQnVmZmVyLmdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZy
YW1lLCBlbmRGcmFtZSk7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OkF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtX2lkLCB0aW1l
LCBudW1iZXJPZkZyYW1lcywgc3RhcnRGcmFtZSwgZW5kRnJhbWUpLCAwKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6QXVk
aW9TYW1wbGVzQXZhaWxhYmxlKG1faWQsIHRpbWUsIG51bWJlck9mRnJhbWVzKSwgMCk7CiAgICAg
fQogCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlKSBm
aW5hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggMWFl
OTk2MDVkNzc2ODkzYTlmYmU3NzhiMzhjMmM1ZGU3ZjA0NmI2ZC4uNjAxNmRhOTk3ZWNlOWMwOTg1
ZmIwZGYyODM4YmFhNGUwYzNhNjAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25SZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTdG9yYWdlKGNvbnN0IFNoYXJlZE1lbW9yeTo6CiAK
ICNlbmRpZgogCi12b2lkIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6cmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBu
dW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpCit2
b2lkIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3RlQXVk
aW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1l
cykKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIW1fYnVmZmVyKSB7CkBAIC0xMDks
MTQgKzEwOSwxMSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZTo6cmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZAogICAgIH0KIAogICAgIG1fYnVm
ZmVyLT5zZXRTYW1wbGVDb3VudChudW1iZXJPZkZyYW1lcyk7Ci0gICAgbV9yaW5nQnVmZmVyLT5z
ZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOwogICAgIG1fcmluZ0J1
ZmZlci0+ZmV0Y2gobV9idWZmZXItPmxpc3QoKSwgbnVtYmVyT2ZGcmFtZXMsIHRpbWUudGltZVZh
bHVlKCkpOwogICAgIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCAqbV9idWZmZXIsIG1fZGVz
Y3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHRpbWUp
OwogICAgIFVOVVNFRF9QQVJBTShudW1iZXJPZkZyYW1lcyk7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXJ0RnJhbWUpOwotICAgIFVOVVNFRF9QQVJBTShlbmRGcmFtZSk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVS
ZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaAppbmRleCAyMjUyNDJiOWNkYWM5ZDc0
OTEzNmQwNmY2YjRkMDI5NTA4YmU3ZjFjLi44YjUxMjUwZjVjYWQ3ZjNmNWNlNzhmNThkNjc2Mzcx
OTBjZjhiZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAt
NTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdG9yYWdlKGNvbnN0IFNoYXJlZE1l
bW9yeTo6SGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwg
dWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwogI2VuZGlmCiAKLSAgICB2b2lkIHJlbW90ZUF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50
NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSk7CisgICAgdm9pZCByZW1vdGVBdWRp
b1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7CiAg
ICAgdm9pZCByZW1vdGVDYXB0dXJlRmFpbGVkKCk7CiAgICAgdm9pZCByZW1vdGVTb3VyY2VTdG9w
cGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlci5jcHAKaW5kZXggNGY4YTg2YTAyMmVhOWJjZTc3MjZmNWJlNWIwNjk3MjBlMDg0MTg1Ni4u
YTc1MTBhNmYzNzcyMGQyZjE5ODc4YjFhYWFmN2U4NTZlYmE4MWY2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5jcHAKQEAgLTc0LDEwICs3
NCwxMCBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1h
bmFnZXI6OnJlbW92ZVNvdXJjZShTcGVlY2hSZWNvZwogICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVj
aFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI6OkRlbGV0ZVNvdXJjZShpZGVu
dGlmaWVyKSk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlcjo6cmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFdURjo6TWVkaWFUaW1l
JiB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWlu
dDY0X3QgZW5kRnJhbWUpCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRp
YVNvdXJjZU1hbmFnZXI6OnJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBXVEY6Ok1lZGlhVGlt
ZSYgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiB7CiAgICAgaWYgKGF1dG8gc291cmNl
ID0gbV9zb3VyY2VzLmdldChpZGVudGlmaWVyKSkKLSAgICAgICAgc291cmNlLT5yZW1vdGVBdWRp
b1NhbXBsZXNBdmFpbGFibGUodGltZSwgbnVtYmVyT2ZGcmFtZXMsIHN0YXJ0RnJhbWUsIGVuZEZy
YW1lKTsKKyAgICAgICAgc291cmNlLT5yZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUodGltZSwg
bnVtYmVyT2ZGcmFtZXMpOwogfQogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXI6OnJlbW90ZUNhcHR1cmVGYWlsZWQoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuaAppbmRleCAyMTQ2YTliMzYzMDIzOTdiMWI4
NjRmZjRmYThhNzM2YTU1M2FlNjU4Li5mNGI0ZDg4MWVmOWNiOTE1NzkzMzVkODhjNWUyM2E0ODlk
OGIwMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBNZXNz
YWdlczo6U3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcgot
ICAgIHZvaWQgcmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSk7CisgICAg
dm9pZCByZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUlkZW50aWZpZXIsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgdWludDY0X3QgbnVtYmVyT2ZG
cmFtZXMpOwogICAgIHZvaWQgcmVtb3RlQ2FwdHVyZUZhaWxlZChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1vdGVTb3VyY2VTdG9wcGVkKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyKTsKICNpZiBQTEFURk9STShDT0NPQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyLm1lc3NhZ2VzLmluCmluZGV4IGQwNzEwMzk4YmM3YzJjNDcwNDRiMDNlNjVkMGFjYzg1ODBh
MWVmZWEuLjhhNWExNDJiZDk1YzcwOGU4YjZmM2JlNGNlYzY2Y2RiZmQzYjY3NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5t
ZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAK
IG1lc3NhZ2VzIC0+IFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1h
bmFnZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgUmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIE1lZGlhVGlt
ZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWlu
dDY0X3QgZW5kRnJhbWUpCisgICAgUmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIE1lZGlhVGltZSB0aW1l
LCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKICAgICBSZW1vdGVDYXB0dXJlRmFpbGVkKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgUmVtb3Rl
U291cmNlU3RvcHBlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkuY3BwCmluZGV4IGM4YzU4MjkwNTBhNTI1OGY5ZDkzMTk3NmI5NWYwNWU1OTdhNTZiMzEuLjcx
OWMzOGNjZDgyMzVkYmRlYjcyNzM3ZWQwMzVkYWJjOGE0NzZkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTE0OCwxMiArMTQ4LDEyIEBAIHZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5OjpzdG9wKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5OjpyZXF1ZXN0QnVmZmVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBo
b3N0VGltZSwgdWludDY0X3QgZnJhbWVzVG9SZW5kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDY0X3QsIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5OjpyZXF1ZXN0QnVmZmVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50
NjRfdCBob3N0VGltZSwgdWludDY0X3QgZnJhbWVzVG9SZW5kZXIpCiB7CiAgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIWhhc0Vub3VnaEZyYW1lcyhmcmFtZXNUb1JlbmRl
cikpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigwLCAwKTsKKyAgICAgICAgcmV0
dXJuOwogCiAgICAgYXV0byBzdGFydEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgbV9hdWRp
b0J1ZmZlckxpc3QtPnNldFNhbXBsZUNvdW50KGZyYW1lc1RvUmVuZGVyKTsKQEAgLTE2MywxMSAr
MTYzLDYgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlcXVlc3RCdWZmZXIo
ZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90IGhvc3QKICAgICBtX2N1cnJlbnRGcmFtZSArPSBm
cmFtZXNUb1JlbmRlcjsKIAogICAgIG1fcmluZ0J1ZmZlci0+c3RvcmUobV9hdWRpb0J1ZmZlckxp
c3QtPmxpc3QoKSwgZnJhbWVzVG9SZW5kZXIsIHN0YXJ0RnJhbWUpOwotCi0gICAgdWludDY0X3Qg
Ym91bmRzU3RhcnRGcmFtZTsKLSAgICB1aW50NjRfdCBib3VuZHNFbmRGcmFtZTsKLSAgICBtX3Jp
bmdCdWZmZXItPmdldEN1cnJlbnRGcmFtZUJvdW5kcyhib3VuZHNTdGFydEZyYW1lLCBib3VuZHNF
bmRGcmFtZSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoYm91bmRzU3RhcnRGcmFtZSwgYm91bmRz
RW5kRnJhbWUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCmlu
ZGV4IDJlNjAwZDY3ZGI1ZmExNDg2M2Q4MDBlNmE0ZGFiMjliNWEzMzIzOTguLjI4OWUxNTA5ODcw
ZWQxMmE3NjAxYjM1Y2Q4YjBmZDUzNzkxMjk3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuaApAQCAtNDksNiArNDksOCBAQCBjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3Q7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBTaGFyZWRSaW5nQnVmZmVyRnJhbWVCb3VuZHM7CisK
IGNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eQogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYQpAQCAtNzIsNyArNzQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICB2b2lkIHJlcXVlc3RCdWZmZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90IGhv
c3RUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCBib3VuZHNTdGFydEZyYW1lLCB1aW50NjRfdCBib3VuZHNFbmRGcmFtZSk+JiYpOwor
ICAgIHZvaWQgcmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRp
bWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCAzODVlMTJk
NzgxMjQ3M2UwNWVmNTViZTc4YTRhMGI2ODI0YmQ5Nzk1Li41OGNhNWRiYWM3ZTI0NTljYjA5YzM0
ZDkzMzMzZWVkM2M5OWI3ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eS5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkgTm90UmVmQ291bnRlZCB7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgUmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUs
IHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKSAtPiAodWludDY0X3QgYm91bmRzU3RhcnRGcmFtZSwg
dWludDY0X3QgYm91bmRzRW5kRnJhbWUpIEFzeW5jCisgICAgUmVxdWVzdEJ1ZmZlcihkb3VibGUg
c2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQog
I2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5jcHAK
aW5kZXggZTYyMGJjYzMxMzgzMjU0MWQ0ZDAzN2E3M2YxOWIwYjNjODVlMTdhNS4uOGI2Y2MyMGI0
YTM5ZmM4Yzc3MWZmMDlhMWNmYzBjY2Y5ZjBjMzllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nv
dXJjZVByb3ZpZGVyTWFuYWdlci5jcHAKQEAgLTE1NiwxMCArMTU2LDggQEAgdm9pZCBSZW1vdGVB
dWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjo6UmVtb3RlQXVkaW86OmF1ZGlvU2FtcGxlc0F2YWls
YWJsZSh1aW50NjQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZW5kRnJhbWUg
PSBzdGFydEZyYW1lICsgbnVtYmVyT2ZGcmFtZXM7CiAgICAgbV9idWZmZXItPnNldFNhbXBsZUNv
dW50KG51bWJlck9mRnJhbWVzKTsKIAotICAgIG1fcmluZ0J1ZmZlci0+c2V0Q3VycmVudEZyYW1l
Qm91bmRzKHN0YXJ0RnJhbWUsIGVuZEZyYW1lKTsKICAgICBtX3JpbmdCdWZmZXItPmZldGNoKG1f
YnVmZmVyLT5saXN0KCksIG51bWJlck9mRnJhbWVzLCBzdGFydEZyYW1lKTsKIAogICAgIG1fcHJv
dmlkZXItPmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSgqbV9idWZmZXIsIG1fZGVzY3JpcHRpb24sIG51
bWJlck9mRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcApp
bmRleCAyZTBhNmIxZjgzOTMyYWU4MzM1ZGY0ZWFhNGViNTM1Zjg1ODcxMjEyLi5lNGVmMWMwYzQz
NGI4ZTkyY2VmZTg1NmNmMDRkM2MxNWJiNTI0ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIuY3BwCkBAIC05NSwxMCArOTUsNyBAQCB2b2lkIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyOjpwdXNoU2FtcGxlcyhjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0
IFdlYgogCiAgICAgQVNTRVJUKGlzPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9E
YXRhKSk7CiAgICAgbV9yaW5nQnVmZmVyLT5zdG9yZShkb3duY2FzdDxXZWJDb3JlOjpXZWJBdWRp
b0J1ZmZlckxpc3Q+KGF1ZGlvRGF0YSkubGlzdCgpLCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1l
VmFsdWUoKSk7Ci0gICAgdWludDY0X3Qgc3RhcnRGcmFtZTsKLSAgICB1aW50NjRfdCBlbmRGcmFt
ZTsKLSAgICBtX3JpbmdCdWZmZXItPmdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBl
bmRGcmFtZSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6QXVkaW9TYW1wbGVzQXZhaWxhYmxlIHsgdGltZSwgbnVt
YmVyT2ZGcmFtZXMsIHN0YXJ0RnJhbWUsIGVuZEZyYW1lIH0sIG1faWRlbnRpZmllcik7CisgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlcjo6QXVkaW9TYW1wbGVzQXZhaWxhYmxlIHsgdGltZSwgbnVtYmVyT2ZGcmFtZXMgfSwg
bV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6
c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUu
Y3BwCmluZGV4IDQwM2RmMWY1N2I0YTY4YzM5ODA0ODVjOTIwY2Y4MzE4MzEyYWM4OTEuLmE4ZWMw
NThiYTA0MDBkZTNiMmM4YTA5ZDY4YTUwNzBlYmVmMjU1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5jcHAKQEAgLTEwNCwxMCArMTA0LDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6YXVk
aW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgUGwKIAogICAg
IEFTU0VSVChpczxXZWJBdWRpb0J1ZmZlckxpc3Q+KGF1ZGlvRGF0YSkpOwogICAgIG1fcmluZ0J1
ZmZlci0+c3RvcmUoZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihhdWRpb0RhdGEpLmxpc3Qo
KSwgbnVtYmVyT2ZGcmFtZXMsIHRpbWUudGltZVZhbHVlKCkpOwotICAgIHVpbnQ2NF90IHN0YXJ0
RnJhbWU7Ci0gICAgdWludDY0X3QgZW5kRnJhbWU7Ci0gICAgbV9yaW5nQnVmZmVyLT5nZXRDdXJy
ZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOwotICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6QXVkaW9TYW1wbGVzQXZhaWxhYmxl
IHsgdGltZSwgbnVtYmVyT2ZGcmFtZXMsIHN0YXJ0RnJhbWUsIGVuZEZyYW1lIH0sIG1faWRlbnRp
Zmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29y
ZGVyOjpBdWRpb1NhbXBsZXNBdmFpbGFibGUgeyB0aW1lLCBudW1iZXJPZkZyYW1lcyB9LCBtX2lk
ZW50aWZpZXIpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzdG9yYWdlQ2hhbmdl
ZChTaGFyZWRNZW1vcnkqIHN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJl
YWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAppbmRleCBkMGZmNDQ4YmVmODk0MWFjNDk1YmUw
OGVmNTNiZmFjMWI4MDY2ZWZhLi42NzllZjlkMTU3NGZkMzg0Nzc3NGI4ODhmY2I2YWI4MTEwZjlj
MTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNl
TWFuYWdlci5jcHAKQEAgLTEyMSwxMCArMTIxLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBBU1NF
UlQoaXM8V2ViQXVkaW9CdWZmZXJMaXN0PihhdWRpb0RhdGEpKTsKICAgICAgICAgbV9yaW5nQnVm
ZmVyLnN0b3JlKGRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9EYXRhKS5saXN0KCks
IG51bWJlck9mRnJhbWVzLCB0aW1lLnRpbWVWYWx1ZSgpKTsKLSAgICAgICAgdWludDY0X3Qgc3Rh
cnRGcmFtZTsKLSAgICAgICAgdWludDY0X3QgZW5kRnJhbWU7Ci0gICAgICAgIG1fcmluZ0J1ZmZl
ci5nZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOwotICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXI6OlJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtX2lkZW50
aWZpZXIsIHRpbWUsIG51bWJlck9mRnJhbWVzLCBzdGFydEZyYW1lLCBlbmRGcmFtZSksIDApOwor
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uUmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI6OlJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZShtX2lkZW50aWZpZXIsIHRpbWUsIG51bWJlck9mRnJhbWVzKSwgMCk7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odGltZSk7CiAgICAgICAgIFVOVVNFRF9QQVJBTShhdWRpb0RhdGEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKaW5kZXggNWIzZTcwMGUwOTU4ZTJmYmQ1NjkxNzgwNDI3
MWRlZGM5NGZjNWU0OS4uYzU2NWIyMjZkNzkwMzhkM2JiODdlNmYwYmQ4Nzc4ODlhNjE4MzI0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXI6OmF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjCiAgICAgaXRlcmF0b3ItPnZhbHVlLT5zZXRTdG9yYWdlKGlwY0hhbmRsZS5o
YW5kbGUsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CiB9CiAKLXZvaWQgUmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXI6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZWRpYVRpbWUgdGltZSwgdWludDY0
X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1l
KQordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6YXVkaW9TYW1wbGVzQXZhaWxhYmxl
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIE1lZGlh
VGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKIHsKICAgICBBU1NFUlQoIVdURjo6
aXNNYWluUnVuTG9vcCgpKTsKIApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXI6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBmaW5k
IHNvdXJjZSAlbGx1IGZvciBhdWRpb1NhbXBsZXNBdmFpbGFibGUiLCBpZGVudGlmaWVyLnRvVUlu
dDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGl0ZXJhdG9yLT52YWx1ZS0+YXVk
aW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIG51bWJlck9mRnJhbWVzLCBzdGFydEZyYW1lLCBlbmRG
cmFtZSk7CisgICAgaXRlcmF0b3ItPnZhbHVlLT5hdWRpb1NhbXBsZXNBdmFpbGFibGUodGltZSwg
bnVtYmVyT2ZGcmFtZXMpOwogfQogCiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6UmVtb3Rl
QXVkaW86OlJlbW90ZUF1ZGlvKFJlZjxSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJj
ZSkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpS
ZW1vdGVBdWRpbzo6c2V0U3RvcmFnZShjb25zdCBTaGFyZWRNZW1vcnk6OkhhbgogICAgIG1fYnVm
ZmVyID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KGRlc2NyaXB0aW9uLCBudW1iZXJP
ZkZyYW1lcyk7CiB9CiAKLXZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZUF1
ZGlvOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKK3ZvaWQg
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZUF1ZGlvOjphdWRpb1NhbXBsZXNBdmFp
bGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQogewogICAgIGlm
ICghbV9idWZmZXIpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiYnVmZmVy
IGZvciBhdWRpbyBzb3VyY2UgJWxsdSBpcyBudWxsIiwgbV9zb3VyY2UtPmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKQEAgLTE1NSw3ICsxNTUsNiBAQCB2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyOjpSZW1vdGVBdWRpbzo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aQog
CiAgICAgbV9idWZmZXItPnNldFNhbXBsZUNvdW50KG51bWJlck9mRnJhbWVzKTsKIAotICAgIG1f
cmluZ0J1ZmZlci0+c2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUsIGVuZEZyYW1lKTsK
ICAgICBtX3JpbmdCdWZmZXItPmZldGNoKG1fYnVmZmVyLT5saXN0KCksIG51bWJlck9mRnJhbWVz
LCB0aW1lLnRpbWVWYWx1ZSgpKTsKIAogICAgIG1fc291cmNlLT5yZW1vdGVBdWRpb1NhbXBsZXNB
dmFpbGFibGUodGltZSwgKm1fYnVmZmVyLCBtX2Rlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlci5oCmluZGV4IDZmYjRiYzM3YjkzODAxNmZjZTVjNWM1YWM1YTQz
NzAyN2YxODZiZTQuLjAxYWUxNWY4ZjVmZGFmODYwNDMxOTYzYmIyMmNiMGZiMzFmNGI5NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlci5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBNZXNzYWdlcwogICAgIHZvaWQgYXVkaW9TdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlSWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBj
b25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJP
ZkZyYW1lcyk7Ci0gICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIE1lZGlhVGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFt
ZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKTsKKyAgICB2b2lkIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ciwgTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7CiAKICAgICB2b2lkIHNldENv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKik7CiAKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgZXhwbGljaXQgUmVtb3RlQXVkaW8oUmVmPFJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2U+JiYpOwogCiAgICAgICAgIHZvaWQgc2V0U3RvcmFnZShjb25zdCBTaGFyZWRNZW1vcnk6Okhh
bmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90
IG51bWJlck9mRnJhbWVzKTsKLSAgICAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVk
aWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWlu
dDY0X3QgZW5kRnJhbWUpOworICAgICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRp
YVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IFJlZjxSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBkOGRlMWExYzI0ZDViNDQzYmM0OGFkYjQ2
YjFjYjg4Mjc1N2Y2NjZhLi42YWNlMjZiZmE4MzA2ODMxNmE4MWI2YzUxYmZhZTQ2ODUzYjlmZjEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsy
NSw3IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyIE5vdFJlZkNv
dW50ZWQgewogICAgIEF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUlkZW50aWZpZXIgaWQsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFn
ZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1
aW50NjRfdCBudW1iZXJPZkZyYW1lcykKLSAgICBBdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIE1lZGlhVGltZSB0aW1lLCB1aW50
NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJh
bWUpCisgICAgQXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VJZGVudGlmaWVyIGlkLCBNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMp
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDFlNDAyNzIwYmI0NjQxMTc0MjAxNmRiYWY4ZjAyNWVmNmUwNWI3MDguLjZlNGUy
OTcwODg3NjhkM2RjYWI4ZmFmOThkMTdjNjI1YzMyMTdlMDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0xMi0x
MCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQcm9jZXNz
XSBDdXQgaW4gaGFsZiBhbW91bnQgb2YgSVBDIG5lZWRlZCB0byBkbyBXZWJBdWRpbworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NzE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWlub3IgQVBJIHRlc3Qg
Y2hhbmdlcyBkdWUgdG8gQ0FSaW5nQnVmZmVyIEFQSSBjaGFuZ2UuIGZldGNoKCkgYWx3YXlzIHJl
dHVybmVkIE9rCisgICAgICAgIHNvIEkgZHJvcHBlZCB0aGUgcmV0dXJuIHZhbHVlLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWl4
aW5nVGVzdDo6cnVuKToKKwogMjAyMC0xMi0xMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIHByZXBhcmUtQ2hhbmdlTG9nIHdvbid0IHBhcnNlIHJkYXI6Ly9u
bm5ubm5ubiBVUkxzIGluIGZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YSgpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCmluZGV4IDhi
YmViZjRlNWEyNzIzOTkxYWU0YWQ0Y2E2OGIyMDdmNjg0YWE3ZDkuLmYyMGJlZmY2MDAzM2FhN2U0
NWEzN2ViYzYyNmI0YzkyYWUxYjMxODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCkBAIC0xMDksOCArMTA5LDcgQEAgVEVTVF9G
KENBUmluZ0J1ZmZlclRlc3QsIEJhc2ljcykKICAgICBmbG9hdCBzY3JhdGNoQnVmZmVyW2NhcGFj
aXR5XTsKICAgICBzZXRMaXN0RGF0YUJ1ZmZlcihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihz
Y3JhdGNoQnVmZmVyKSwgY2FwYWNpdHkpOwogCi0gICAgZXJyID0gcmluZ0J1ZmZlcigpLmZldGNo
KCZidWZmZXJMaXN0KCksIHNhbXBsZUNvdW50LCAwKTsKLSAgICBFWFBFQ1RfRVEoZXJyLCBDQVJp
bmdCdWZmZXI6OkVycm9yOjpPayk7CisgICAgcmluZ0J1ZmZlcigpLmZldGNoKCZidWZmZXJMaXN0
KCksIHNhbXBsZUNvdW50LCAwKTsKICAgICBFWFBFQ1RfVFJVRSghbWVtY21wKHNvdXJjZUJ1ZmZl
ciwgc2NyYXRjaEJ1ZmZlciwgc2FtcGxlQ291bnQgKiBkZXNjcmlwdGlvbigpLnNhbXBsZVdvcmRT
aXplKCkpKTsKIAogICAgIC8vIC4uLiBhbmQgdGhlIHNlY29uZCBoYWxmLgpAQCAtMTIyLDggKzEy
MSw3IEBAIFRFU1RfRihDQVJpbmdCdWZmZXJUZXN0LCBCYXNpY3MpCiAgICAgRVhQRUNUX0VRKGNh
cGFjaXR5LCAoaW50KWVuZFRpbWUpOwogCiAgICAgbWVtc2V0KHNjcmF0Y2hCdWZmZXIsIDAsIHNh
bXBsZUNvdW50ICogZGVzY3JpcHRpb24oKS5zYW1wbGVXb3JkU2l6ZSgpKTsKLSAgICBlcnIgPSBy
aW5nQnVmZmVyKCkuZmV0Y2goJmJ1ZmZlckxpc3QoKSwgc2FtcGxlQ291bnQsIDApOwotICAgIEVY
UEVDVF9FUShlcnIsIENBUmluZ0J1ZmZlcjo6RXJyb3I6Ok9rKTsKKyAgICByaW5nQnVmZmVyKCku
ZmV0Y2goJmJ1ZmZlckxpc3QoKSwgc2FtcGxlQ291bnQsIDApOwogICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoc291cmNlQnVmZmVyLCBzY3JhdGNoQnVmZmVyLCBzYW1wbGVDb3VudCAqIGRlc2NyaXB0
aW9uKCkuc2FtcGxlV29yZFNpemUoKSkpOwogCiAgICAgLy8gRm9yY2UgdGhlIGJ1ZmZlciB0byB3
cmFwIGFyb3VuZApAQCAtMTg1LDE4ICsxODMsMTQgQEAgcHVibGljOgogCiAgICAgICAgIG1lbXNl
dChyZWFkQnVmZmVyLCAwLCBzYW1wbGVDb3VudCAqIHRlc3QuZGVzY3JpcHRpb24oKS5zYW1wbGVX
b3JkU2l6ZSgpKTsKICAgICAgICAgdGVzdC5zZXRMaXN0RGF0YUJ1ZmZlcihyZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihyZWFkQnVmZmVyKSwgc2FtcGxlQ291bnQpOwotICAgICAgICBlcnIgPSB0
ZXN0LnJpbmdCdWZmZXIoKS5mZXRjaCgmdGVzdC5idWZmZXJMaXN0KCksIHNhbXBsZUNvdW50LCAw
LCBDQVJpbmdCdWZmZXI6OkZldGNoTW9kZTo6TWl4KTsKLSAgICAgICAgRVhQRUNUX0VRKGVyciwg
Q0FSaW5nQnVmZmVyOjpFcnJvcjo6T2spOworICAgICAgICB0ZXN0LnJpbmdCdWZmZXIoKS5mZXRj
aCgmdGVzdC5idWZmZXJMaXN0KCksIHNhbXBsZUNvdW50LCAwLCBDQVJpbmdCdWZmZXI6OkZldGNo
TW9kZTo6TWl4KTsKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNhbXBsZUNvdW50OyBp
KyspCiAgICAgICAgICAgICBFWFBFQ1RfRVEocmVhZEJ1ZmZlcltpXSwgcmVmZXJlbmNlQnVmZmVy
W2ldKSA8PCAiUmluZyBidWZmZXIgdmFsdWUgZGlmZmVycyBhdCBpbmRleCAiIDw8IGk7CiAKLSAg
ICAgICAgZXJyID0gdGVzdC5yaW5nQnVmZmVyKCkuZmV0Y2goJnRlc3QuYnVmZmVyTGlzdCgpLCBz
YW1wbGVDb3VudCwgMCwgQ0FSaW5nQnVmZmVyOjpGZXRjaE1vZGU6Ok1peCk7Ci0gICAgICAgIEVY
UEVDVF9FUShlcnIsIENBUmluZ0J1ZmZlcjo6RXJyb3I6Ok9rKTsKLSAgICAgICAgZXJyID0gdGVz
dC5yaW5nQnVmZmVyKCkuZmV0Y2goJnRlc3QuYnVmZmVyTGlzdCgpLCBzYW1wbGVDb3VudCwgMCwg
Q0FSaW5nQnVmZmVyOjpGZXRjaE1vZGU6Ok1peCk7Ci0gICAgICAgIEVYUEVDVF9FUShlcnIsIENB
UmluZ0J1ZmZlcjo6RXJyb3I6Ok9rKTsKLSAgICAgICAgZXJyID0gdGVzdC5yaW5nQnVmZmVyKCku
ZmV0Y2goJnRlc3QuYnVmZmVyTGlzdCgpLCBzYW1wbGVDb3VudCwgMCwgQ0FSaW5nQnVmZmVyOjpG
ZXRjaE1vZGU6Ok1peCk7Ci0gICAgICAgIEVYUEVDVF9FUShlcnIsIENBUmluZ0J1ZmZlcjo6RXJy
b3I6Ok9rKTsKKyAgICAgICAgdGVzdC5yaW5nQnVmZmVyKCkuZmV0Y2goJnRlc3QuYnVmZmVyTGlz
dCgpLCBzYW1wbGVDb3VudCwgMCwgQ0FSaW5nQnVmZmVyOjpGZXRjaE1vZGU6Ok1peCk7CisgICAg
ICAgIHRlc3QucmluZ0J1ZmZlcigpLmZldGNoKCZ0ZXN0LmJ1ZmZlckxpc3QoKSwgc2FtcGxlQ291
bnQsIDAsIENBUmluZ0J1ZmZlcjo6RmV0Y2hNb2RlOjpNaXgpOworICAgICAgICB0ZXN0LnJpbmdC
dWZmZXIoKS5mZXRjaCgmdGVzdC5idWZmZXJMaXN0KCksIHNhbXBsZUNvdW50LCAwLCBDQVJpbmdC
dWZmZXI6OkZldGNoTW9kZTo6TWl4KTsKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNh
bXBsZUNvdW50OyBpKyspCiAgICAgICAgICAgICByZWZlcmVuY2VCdWZmZXJbaV0gKz0gc291cmNl
QnVmZmVyW2ldICogMzsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415931</attachid>
            <date>2020-12-10 14:37:02 -0800</date>
            <delta_ts>2020-12-10 18:15:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219715-20201210143701.patch</filename>
            <type>text/plain</type>
            <size>53000</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE5YjdjY2JmMTY3YWI0
M2I1YWYzZWIzZmI0Y2QzMDM2MTdiZmI3ZS4uOTAzZjcyY2RmNzg1MTk2ZjA2NTE4NTc2YTIxODg2
NmVmNmIzNmZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTEyLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIEN1dCBp
biBoYWxmIGFtb3VudCBvZiBJUEMgbmVlZGVkIHRvIGRvIFdlYkF1ZGlvCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3MTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBDdXQgaW4gaGFsZiBhbW91bnQgb2YgSVBD
IG5lZWRlZCB0byBkbyBXZWJBdWRpby4gUHJldmlvdXNseSwgd2Ugd291bGQgc2VuZCAyCisgICAg
ICAgIElQQ3MgcGVyIHJlbmRlcmluZyBxdWFudHVtOgorICAgICAgICAxLiBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIgZnJvbSBHUFVQcm9jZXNzIHRvIFdlYlByb2Nl
c3MKKyAgICAgICAgMi4gVGhlIHJlc3BvbnNlIHRvIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eTo6UmVxdWVzdEJ1ZmZlciB3aGljaCBjb250YWluZWQKKyAgICAgICAgICAgdGhlIGZyYW1lIGJv
dW5kcyBmb3IgdGhlIFJpbmdCdWZmZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBnZXRzIHJpZCBv
ZiBJUEMgMiBieSBoYXZpbmcgdGhlIENBUmluZ0J1ZmZlciBjbGFzcyBzdG9yZSBpdHMgYm91bmRz
CisgICAgICAgIGluIGl0cyBtZW1vcnkgYmFja2luZy4gQXMgYSByZXN1bHQsIHdoZW4gdGhlIENB
UmluZ0J1ZmZlciBpcyB1c2luZyBhIHNoYXJlZAorICAgICAgICBtZW1vcnkgYmFja2luZywgdGhl
IGJvdW5kcyBnZXQgc2hhcmVkIGJldHdlZW4gcHJvY2Vzc2VzLCB3aXRob3V0IGFueSBuZWVkIGZv
cgorICAgICAgICBJUEMgdG8gc3luYyB0aGVtLgorCisgICAgICAgIFRoaXMgaXMgc3RpbGwgdG9v
IG11Y2ggSVBDIGJ1dCB0aGlzIGlzIGEgc3RlcCBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiBXZQor
ICAgICAgICBjYW4gaG9wZWZ1bGx5IGdldCByaWQgb2YgKG9yIGdyZWF0bHkgcmVkdWNlKSBJUEMg
MSBpbiBhIGZvbGxvdy11cCBwYXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29h
L0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBs
ZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURh
dGFTb3VyY2U6OnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVua3MpOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQVJp
bmdCdWZmZXJTdG9yYWdlVmVjdG9yOjpDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlcjo6Q0FSaW5nQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNBUmluZ0J1ZmZlcjo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVy
U3RvcmFnZVZlY3Rvcjo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVyOjpz
ZXRDdXJyZW50RnJhbWVCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVyU3Rv
cmFnZVZlY3Rvcjo6c2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNB
UmluZ0J1ZmZlcjo6Z2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNB
UmluZ0J1ZmZlcjo6Z2V0Q3VycmVudEZyYW1lQm91bmRzV2l0aG91dFVwZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yOjpnZXRDdXJyZW50RnJhbWVCb3Vu
ZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVyOjpjbGlwVGltZUJvdW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQVJpbmdCdWZmZXI6OmN1cnJlbnRTdGFydEZyYW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3I6OmN1cnJlbnRTdGFy
dEZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlcjo6Y3VycmVudEVu
ZEZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0
b3I6OmN1cnJlbnRFbmRGcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQVJpbmdCdWZm
ZXI6OnVwZGF0ZUZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlcjo6
ZmV0Y2hJZkhhc0Vub3VnaERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVyOjpm
ZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDQVJpbmdCdWZmZXI6OmZldGNoSW50ZXJuYWwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0FSaW5nQnVmZmVyU3RvcmFnZTo6dXBkYXRlRnJhbWVCb3VuZHMpOgorCiAyMDIw
LTEyLTEwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11b
SUZDXSBJbnRyb2R1Y2UgSW5saW5lVGV4dEl0ZW06OmlzV29yZFNlcGFyYXRvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBkNTM3MzdjMTNlODc0NzMwYmI3OGZlODdjYzdmYzk1M2VhNTgxOThmLi4xMDEwZmE4YjI2NDMx
MTA4MTA5NmQzYTllMTkxZTI5OGVjY2NmMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisy
MDIwLTEyLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VVByb2Nlc3NdIEN1dCBpbiBoYWxmIGFtb3VudCBvZiBJUEMgbmVlZGVkIHRvIGRvIFdlYkF1ZGlv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3MTUK
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBDdXQgaW4gaGFs
ZiBhbW91bnQgb2YgSVBDIG5lZWRlZCB0byBkbyBXZWJBdWRpby4gUHJldmlvdXNseSwgd2Ugd291
bGQgc2VuZCAyCisgICAgICAgIElQQ3MgcGVyIHJlbmRlcmluZyBxdWFudHVtOgorICAgICAgICAx
LiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIgZnJvbSBHUFVQcm9j
ZXNzIHRvIFdlYlByb2Nlc3MKKyAgICAgICAgMi4gVGhlIHJlc3BvbnNlIHRvIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eTo6UmVxdWVzdEJ1ZmZlciB3aGljaCBjb250YWluZWQKKyAgICAgICAg
ICAgdGhlIGZyYW1lIGJvdW5kcyBmb3IgdGhlIFJpbmdCdWZmZXIuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBnZXRzIHJpZCBvZiBJUEMgMiBieSBoYXZpbmcgdGhlIENBUmluZ0J1ZmZlciBjbGFzcyBz
dG9yZSBpdHMgYm91bmRzCisgICAgICAgIGluIGl0cyBtZW1vcnkgYmFja2luZy4gQXMgYSByZXN1
bHQsIHdoZW4gdGhlIENBUmluZ0J1ZmZlciBpcyB1c2luZyBhIHNoYXJlZAorICAgICAgICBtZW1v
cnkgYmFja2luZywgdGhlIGJvdW5kcyBnZXQgc2hhcmVkIGJldHdlZW4gcHJvY2Vzc2VzLCB3aXRo
b3V0IGFueSBuZWVkIGZvcgorICAgICAgICBJUEMgdG8gc3luYyB0aGVtLgorCisgICAgICAgIFRo
aXMgaXMgc3RpbGwgdG9vIG11Y2ggSVBDIGJ1dCB0aGlzIGlzIGEgc3RlcCBpbiB0aGUgcmlnaHQg
ZGlyZWN0aW9uLiBXZQorICAgICAgICBjYW4gaG9wZWZ1bGx5IGdldCByaWQgb2YgKG9yIGdyZWF0
bHkgcmVkdWNlKSBJUEMgMSBpbiBhIGZvbGxvdy11cCBwYXRjaC4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjphdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnJlbmRlcik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHk6OnN0
b3JhZ2VDaGFuZ2VkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjphdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjphdWRp
b1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6YXVkaW9TYW1wbGVzQXZh
aWxhYmxlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6YWxsb2NhdGUp
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6c2hhcmVkRnJhbWVC
b3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6ZGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpnZXRDdXJyZW50RnJh
bWVCb3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6c2V0
Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1ZmZlclN0
b3JhZ2U6OnVwZGF0ZUZyYW1lQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2U6OmZsdXNoKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJl
Y29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3RlQXVkaW9TYW1wbGVzQXZh
aWxhYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjpyZW1vdGVB
dWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5OjpyZXF1ZXN0QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5OjpzdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFn
ZXI6OlJlbW90ZUF1ZGlvOjpzZXRTdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVk
aW9Tb3VyY2VQcm92aWRlck1hbmFnZXI6OlJlbW90ZUF1ZGlvOjphdWRpb1NhbXBsZXNBdmFpbGFi
bGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyOjpwdXNoU2FtcGxlcyk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyOjpzdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFS
ZWNvcmRlclByaXZhdGU6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUmVjb3JkZXJQcml2YXRlOjpzdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjphdWRp
b1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlcjo6UmVtb3RlQXVkaW86OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW46
CisKIDIwMjAtMTItMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MDU0Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3Bw
CmluZGV4IGI1YjNhN2YxMjJlZjMyMjM3ZDkwNWQ4OGRhZjliMzdkZjI3OThlNmYuLmZkZjY3NzU3
ZDFiNDc3NjA4MDhiMTNmYjQzNGU0MGIzZGZkMzBlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJMaXN0
LmNwcApAQCAtMzEwLDggKzMxMCw3IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6
Y29weUZyb20oQXVkaW9TYW1wbGVCdWZmZXJMaXN0JiBzb3VyY2UsIHNpemVfdCBmCiBPU1N0YXR1
cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKENBUmluZ0J1ZmZlciYgcmluZ0J1ZmZl
ciwgc2l6ZV90IHNhbXBsZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lLCBDQVJpbmdCdWZmZXI6
OkZldGNoTW9kZSBtb2RlKQogewogICAgIHJlc2V0KCk7Ci0gICAgaWYgKHJpbmdCdWZmZXIuZmV0
Y2goYnVmZmVyTGlzdCgpLmxpc3QoKSwgc2FtcGxlQ291bnQsIHN0YXJ0RnJhbWUsIG1vZGUpICE9
IENBUmluZ0J1ZmZlcjo6T2spCi0gICAgICAgIHJldHVybiBrQXVkaW9fUGFyYW1FcnJvcjsKKyAg
ICByaW5nQnVmZmVyLmZldGNoKGJ1ZmZlckxpc3QoKS5saXN0KCksIHNhbXBsZUNvdW50LCBzdGFy
dEZyYW1lLCBtb2RlKTsKIAogICAgIG1fc2FtcGxlQ291bnQgPSBzYW1wbGVDb3VudDsKICAgICBy
ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRleCBjZGUzZWI0OTc3Njk5NTAzZjRh
Y2FmZThhZGVjODFjYTlkMzhlZDg5Li43NjRlYmY3ZTIzMjA3ZDdlMmU5YTdlNGNkMTkwNGY3ZmY3
Nzc0YTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb1NhbXBsZURhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0zMjQsOCArMzI0LDcgQEAgYm9v
bCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVua3MoQXVk
aW9CdWZmZXJMaXN0JiBidWZmZXIKICAgICB9CiAKICAgICB3aGlsZSAoZW5kRnJhbWUgLSBzdGFy
dEZyYW1lID49IHNhbXBsZUNvdW50UGVyQ2h1bmspIHsKLSAgICAgICAgaWYgKG1fcmluZ0J1ZmZl
ci0+ZmV0Y2goJmJ1ZmZlciwgc2FtcGxlQ291bnRQZXJDaHVuaywgc3RhcnRGcmFtZSwgQ0FSaW5n
QnVmZmVyOjpDb3B5KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbV9yaW5n
QnVmZmVyLT5mZXRjaCgmYnVmZmVyLCBzYW1wbGVDb3VudFBlckNodW5rLCBzdGFydEZyYW1lLCBD
QVJpbmdCdWZmZXI6OkNvcHkpOwogICAgICAgICBjb25zdW1lRmlsbGVkQnVmZmVyKCk7CiAgICAg
ICAgIHN0YXJ0RnJhbWUgKz0gc2FtcGxlQ291bnRQZXJDaHVuazsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNwcAppbmRl
eCBlZDdhN2E1YmMxNDMzNjJmOTdhZjljYWQ5MjExMDhmYjMyMWZmODdlLi5jMmE1ZmU3OTU5N2I3
NWE3NzJiYmFjNWU5MTAwYzNmNTQ4OWY3ODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTM4LDkgKzM4LDEzIEBA
IGNvbnN0IHVpbnQzMl90IGtHZW5lcmFsUmluZ1RpbWVCb3VuZHNRdWV1ZU1hc2sgPSBrR2VuZXJh
bFJpbmdUaW1lQm91bmRzUXVldWVTaXplCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ0FSaW5n
QnVmZmVyU3RvcmFnZVZlY3Rvcjo6Q0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvcigpCisgICAgOiBt
X3RpbWVCb3VuZHNRdWV1ZShrR2VuZXJhbFJpbmdUaW1lQm91bmRzUXVldWVTaXplKQoreworfQor
CiBDQVJpbmdCdWZmZXI6OkNBUmluZ0J1ZmZlcigpCiAgICAgOiBtX2J1ZmZlcnMobWFrZVVuaXF1
ZVJlZjxDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yPigpKQotICAgICwgbV90aW1lQm91bmRzUXVl
dWUoa0dlbmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVlU2l6ZSkKIHsKIH0KIApAQCAtNTEsNyArNTUs
NiBAQCBDQVJpbmdCdWZmZXI6On5DQVJpbmdCdWZmZXIoKQogCiBDQVJpbmdCdWZmZXI6OkNBUmlu
Z0J1ZmZlcihVbmlxdWVSZWY8Q0FSaW5nQnVmZmVyU3RvcmFnZT4mJiBzdG9yYWdlKQogICAgIDog
bV9idWZmZXJzKFdURk1vdmUoc3RvcmFnZSkpCi0gICAgLCBtX3RpbWVCb3VuZHNRdWV1ZShrR2Vu
ZXJhbFJpbmdUaW1lQm91bmRzUXVldWVTaXplKQogewogfQogCkBAIC0xNjUsNiArMTY4LDExIEBA
IGlubGluZSB2b2lkIFplcm9BQkwoQXVkaW9CdWZmZXJMaXN0KiBsaXN0LCBzaXplX3QgZGVzdE9m
ZnNldCwgc2l6ZV90IG5ieXRlcykKIH0KIAogdm9pZCBDQVJpbmdCdWZmZXI6OmZsdXNoKCkKK3sK
KyAgICBtX2J1ZmZlcnMtPmZsdXNoKCk7Cit9CisKK3ZvaWQgQ0FSaW5nQnVmZmVyU3RvcmFnZVZl
Y3Rvcjo6Zmx1c2goKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY3VycmVudEZyYW1lQm91
bmRzTG9jayk7CiAgICAgZm9yIChhdXRvJiB0aW1lQm91bmRzIDogbV90aW1lQm91bmRzUXVldWUp
IHsKQEAgLTIzNCw2ICsyNDIsMTEgQEAgQ0FSaW5nQnVmZmVyOjpFcnJvciBDQVJpbmdCdWZmZXI6
OnN0b3JlKGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCogbGlzdCwgc2l6ZV90IGZyYW0KIH0KIAogdm9p
ZCBDQVJpbmdCdWZmZXI6OnNldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCBzdGFydFRpbWUs
IHVpbnQ2NF90IGVuZFRpbWUpCit7CisgICAgbV9idWZmZXJzLT5zZXRDdXJyZW50RnJhbWVCb3Vu
ZHMoc3RhcnRUaW1lLCBlbmRUaW1lKTsKK30KKwordm9pZCBDQVJpbmdCdWZmZXJTdG9yYWdlVmVj
dG9yOjpzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3Qgc3RhcnRUaW1lLCB1aW50NjRfdCBl
bmRUaW1lKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY3VycmVudEZyYW1lQm91bmRzTG9j
ayk7CiAgICAgdWludDMyX3QgbmV4dFB0ciA9IG1fdGltZUJvdW5kc1F1ZXVlUHRyLmxvYWQoKSAr
IDE7CkBAIC0yNDUsMTQgKzI1OCwyNSBAQCB2b2lkIENBUmluZ0J1ZmZlcjo6c2V0Q3VycmVudEZy
YW1lQm91bmRzKHVpbnQ2NF90IHN0YXJ0VGltZSwgdWludDY0X3QgZW5kVGltZSkKICAgICBtX3Rp
bWVCb3VuZHNRdWV1ZVB0cisrOwogfQogCi12b2lkIENBUmluZ0J1ZmZlcjo6Z2V0Q3VycmVudEZy
YW1lQm91bmRzKHVpbnQ2NF90ICZzdGFydFRpbWUsIHVpbnQ2NF90ICZlbmRUaW1lKQordm9pZCBD
QVJpbmdCdWZmZXI6OmdldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCYgc3RhcnRGcmFtZSwg
dWludDY0X3QmIGVuZEZyYW1lKQoreworICAgIHVwZGF0ZUZyYW1lQm91bmRzKCk7CisgICAgZ2V0
Q3VycmVudEZyYW1lQm91bmRzV2l0aG91dFVwZGF0ZShzdGFydEZyYW1lLCBlbmRGcmFtZSk7Cit9
CisKK3ZvaWQgQ0FSaW5nQnVmZmVyOjpnZXRDdXJyZW50RnJhbWVCb3VuZHNXaXRob3V0VXBkYXRl
KHVpbnQ2NF90JiBzdGFydEZyYW1lLCB1aW50NjRfdCYgZW5kRnJhbWUpCit7CisgICAgbV9idWZm
ZXJzLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOworfQorCit2
b2lkIENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3I6OmdldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50
NjRfdCYgc3RhcnRGcmFtZSwgdWludDY0X3QmIGVuZEZyYW1lKQogewogICAgIHVpbnQzMl90IGN1
clB0ciA9IG1fdGltZUJvdW5kc1F1ZXVlUHRyLmxvYWQoKTsKICAgICB1aW50MzJfdCBpbmRleCA9
IGN1clB0ciAmIGtHZW5lcmFsUmluZ1RpbWVCb3VuZHNRdWV1ZU1hc2s7Ci0gICAgQ0FSaW5nQnVm
ZmVyOjpUaW1lQm91bmRzJiBib3VuZHMgPSBtX3RpbWVCb3VuZHNRdWV1ZVtpbmRleF07CisgICAg
YXV0byYgYm91bmRzID0gbV90aW1lQm91bmRzUXVldWVbaW5kZXhdOwogCi0gICAgc3RhcnRUaW1l
ID0gYm91bmRzLm1fc3RhcnRGcmFtZTsKLSAgICBlbmRUaW1lID0gYm91bmRzLm1fZW5kRnJhbWU7
CisgICAgc3RhcnRGcmFtZSA9IGJvdW5kcy5tX3N0YXJ0RnJhbWU7CisgICAgZW5kRnJhbWUgPSBi
b3VuZHMubV9lbmRGcmFtZTsKIH0KIAogdm9pZCBDQVJpbmdCdWZmZXI6OmNsaXBUaW1lQm91bmRz
KHVpbnQ2NF90JiBzdGFydFJlYWQsIHVpbnQ2NF90JiBlbmRSZWFkKQpAQCAtMjYwLDcgKzI4NCw3
IEBAIHZvaWQgQ0FSaW5nQnVmZmVyOjpjbGlwVGltZUJvdW5kcyh1aW50NjRfdCYgc3RhcnRSZWFk
LCB1aW50NjRfdCYgZW5kUmVhZCkKICAgICB1aW50NjRfdCBzdGFydFRpbWU7CiAgICAgdWludDY0
X3QgZW5kVGltZTsKIAotICAgIGdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydFRpbWUsIGVuZFRp
bWUpOworICAgIGdldEN1cnJlbnRGcmFtZUJvdW5kc1dpdGhvdXRVcGRhdGUoc3RhcnRUaW1lLCBl
bmRUaW1lKTsKIAogICAgIGlmIChzdGFydFJlYWQgPiBlbmRUaW1lIHx8IGVuZFJlYWQgPCBzdGFy
dFRpbWUpIHsKICAgICAgICAgZW5kUmVhZCA9IHN0YXJ0UmVhZDsKQEAgLTI3MywyMSArMjk3LDU1
IEBAIHZvaWQgQ0FSaW5nQnVmZmVyOjpjbGlwVGltZUJvdW5kcyh1aW50NjRfdCYgc3RhcnRSZWFk
LCB1aW50NjRfdCYgZW5kUmVhZCkKIH0KIAogdWludDY0X3QgQ0FSaW5nQnVmZmVyOjpjdXJyZW50
U3RhcnRGcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVmZmVycy0+Y3VycmVudFN0YXJ0
RnJhbWUoKTsKK30KKwordWludDY0X3QgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3Rvcjo6Y3VycmVu
dFN0YXJ0RnJhbWUoKSBjb25zdAogewogICAgIHVpbnQzMl90IGluZGV4ID0gbV90aW1lQm91bmRz
UXVldWVQdHIubG9hZCgpICYga0dlbmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVlTWFzazsKICAgICBy
ZXR1cm4gbV90aW1lQm91bmRzUXVldWVbaW5kZXhdLm1fc3RhcnRGcmFtZTsKIH0KIAogdWludDY0
X3QgQ0FSaW5nQnVmZmVyOjpjdXJyZW50RW5kRnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiBt
X2J1ZmZlcnMtPmN1cnJlbnRFbmRGcmFtZSgpOworfQorCit1aW50NjRfdCBDQVJpbmdCdWZmZXJT
dG9yYWdlVmVjdG9yOjpjdXJyZW50RW5kRnJhbWUoKSBjb25zdAogewogICAgIHVpbnQzMl90IGlu
ZGV4ID0gbV90aW1lQm91bmRzUXVldWVQdHIubG9hZCgpICYga0dlbmVyYWxSaW5nVGltZUJvdW5k
c1F1ZXVlTWFzazsKICAgICByZXR1cm4gbV90aW1lQm91bmRzUXVldWVbaW5kZXhdLm1fZW5kRnJh
bWU7CiB9CiAKLUNBUmluZ0J1ZmZlcjo6RXJyb3IgQ0FSaW5nQnVmZmVyOjpmZXRjaChBdWRpb0J1
ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBuRnJhbWVzLCB1aW50NjRfdCBzdGFydFJlYWQsIEZldGNo
TW9kZSBtb2RlKQordm9pZCBDQVJpbmdCdWZmZXI6OnVwZGF0ZUZyYW1lQm91bmRzKCkKK3sKKyAg
ICBtX2J1ZmZlcnMtPnVwZGF0ZUZyYW1lQm91bmRzKCk7Cit9CisKK2Jvb2wgQ0FSaW5nQnVmZmVy
OjpmZXRjaElmSGFzRW5vdWdoRGF0YShBdWRpb0J1ZmZlckxpc3QqIGxpc3QsIHNpemVfdCBmcmFt
ZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lLCBGZXRjaE1vZGUgbW9kZSkKK3sKKyAgICAvLyBX
aGVuIHRoZSBSaW5nQnVmZmVyIGlzIGJhY2tlZCBieSBzaGFyZWQgbWVtb3J5LCBnZXRDdXJyZW50
RnJhbWVCb3VuZHMoKSBtYWtlcyBzdXJlIHdlIHB1bGwgZnJhbWUgYm91bmRzIGZyb20gc2hhcmVk
IG1lbW9yeSBiZWZvcmUgZmV0Y2hpbmcuCisgICAgdWludDY0X3Qgc3RhcnQsIGVuZDsKKyAgICBn
ZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnQsIGVuZCk7CisgICAgaWYgKHN0YXJ0RnJhbWUgPCBz
dGFydCB8fCBzdGFydEZyYW1lICsgZnJhbWVDb3VudCA+IGVuZCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgZmV0Y2hJbnRlcm5hbChsaXN0LCBmcmFtZUNvdW50LCBzdGFydEZyYW1lLCBt
b2RlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDQVJpbmdCdWZmZXI6OmZldGNoKEF1
ZGlvQnVmZmVyTGlzdCogbGlzdCwgc2l6ZV90IGZyYW1lQ291bnQsIHVpbnQ2NF90IHN0YXJ0UmVh
ZCwgRmV0Y2hNb2RlIG1vZGUpCit7CisgICAgLy8gV2hlbiB0aGUgUmluZ0J1ZmZlciBpcyBiYWNr
ZWQgYnkgc2hhcmVkIG1lbW9yeSwgbWFrZSBzdXJlIHdlIHB1bGwgZnJhbWUgYm91bmRzIGZyb20g
c2hhcmVkIG1lbW9yeSBiZWZvcmUgZmV0Y2hpbmcuCisgICAgdXBkYXRlRnJhbWVCb3VuZHMoKTsK
KyAgICBmZXRjaEludGVybmFsKGxpc3QsIGZyYW1lQ291bnQsIHN0YXJ0UmVhZCwgbW9kZSk7Cit9
CisKK3ZvaWQgQ0FSaW5nQnVmZmVyOjpmZXRjaEludGVybmFsKEF1ZGlvQnVmZmVyTGlzdCogbGlz
dCwgc2l6ZV90IG5GcmFtZXMsIHVpbnQ2NF90IHN0YXJ0UmVhZCwgRmV0Y2hNb2RlIG1vZGUpCiB7
CiAgICAgaWYgKCFuRnJhbWVzKQotICAgICAgICByZXR1cm4gT2s7CisgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBzdGFydFJlYWQgPSBzdGQ6Om1heDx1aW50NjRfdD4oMCwgc3RhcnRSZWFkKTsK
ICAgICAKQEAgLTMwMCw3ICszNTgsNyBAQCBDQVJpbmdCdWZmZXI6OkVycm9yIENBUmluZ0J1ZmZl
cjo6ZmV0Y2goQXVkaW9CdWZmZXJMaXN0KiBsaXN0LCBzaXplX3QgbkZyYW1lcywgdQogCiAgICAg
aWYgKHN0YXJ0UmVhZCA9PSBlbmRSZWFkKSB7CiAgICAgICAgIFplcm9BQkwobGlzdCwgMCwgbkZy
YW1lcyAqIG1fYnl0ZXNQZXJGcmFtZSk7Ci0gICAgICAgIHJldHVybiBPazsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKICAgICBzaXplX3QgYnl0ZVNpemUgPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KChlbmRSZWFkIC0gc3RhcnRSZWFkKSAqIG1fYnl0ZXNQZXJGcmFtZSk7CkBAIC0zMzUsOCAr
MzkzLDYgQEAgQ0FSaW5nQnVmZmVyOjpFcnJvciBDQVJpbmdCdWZmZXI6OmZldGNoKEF1ZGlvQnVm
ZmVyTGlzdCogbGlzdCwgc2l6ZV90IG5GcmFtZXMsIHUKICAgICAgICAgZGVzdC0+bURhdGFCeXRl
U2l6ZSA9IG5ieXRlczsKICAgICAgICAgZGVzdCsrOwogICAgIH0KLSAgICAKLSAgICByZXR1cm4g
T2s7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0NBUmluZ0J1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
Q0FSaW5nQnVmZmVyLmgKaW5kZXggM2Q4OTRiMDY1ZTFiNWNkMzBiZGU4Zjc0MDQzNzA0OGQ3Njhi
OTcwNS4uYjMwZDkzMWU2NWFjMzgyMGIwNWNkN2E1NGRiYzZlNWJjZTEyYjI4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmgKQEAg
LTQ1LDE3ICs0NSw0NSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFsbG9jYXRlKHNpemVf
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWFsbG9jYXRlKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCogZGF0YSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q3VycmVudEZyYW1lQm91bmRz
KHVpbnQ2NF90JiBzdGFydFRpbWUsIHVpbnQ2NF90JiBlbmRUaW1lKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRf
dCBlbmRGcmFtZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcmFtZUJvdW5kcygpIHsg
fQorICAgIHZpcnR1YWwgdWludDY0X3QgY3VycmVudFN0YXJ0RnJhbWUoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCB1aW50NjRfdCBjdXJyZW50RW5kRnJhbWUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGZsdXNoKCkgPSAwOwogfTsKIAogY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZVZl
Y3RvciBmaW5hbCA6IHB1YmxpYyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKIHB1YmxpYzoKKyAgICBD
QVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yKCk7CiAgICAgfkNBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0
b3IoKSA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhbGxvY2F0ZShzaXplX3QgYnl0
ZUNvdW50KSBmaW5hbCB7IG1fYnVmZmVyLmdyb3coYnl0ZUNvdW50KTsgfQogICAgIHZvaWQgZGVh
bGxvY2F0ZSgpIGZpbmFsIHsgbV9idWZmZXIuY2xlYXIoKTsgfQogICAgIHZvaWQqIGRhdGEoKSBm
aW5hbCB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICB2b2lkIGdldEN1cnJlbnRGcmFt
ZUJvdW5kcyh1aW50NjRfdCYgc3RhcnRUaW1lLCB1aW50NjRfdCYgZW5kVGltZSkgZmluYWw7Cisg
ICAgdm9pZCBzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0
X3QgZW5kRnJhbWUpIGZpbmFsOworICAgIHVpbnQ2NF90IGN1cnJlbnRTdGFydEZyYW1lKCkgY29u
c3Q7CisgICAgdWludDY0X3QgY3VycmVudEVuZEZyYW1lKCkgY29uc3Q7CisgICAgdm9pZCBmbHVz
aCgpIGZpbmFsOworCisgICAgc3RydWN0IFRpbWVCb3VuZHMgeworICAgICAgICBUaW1lQm91bmRz
KCkKKyAgICAgICAgICAgIDogbV9zdGFydEZyYW1lKDApCisgICAgICAgICAgICAsIG1fZW5kRnJh
bWUoMCkKKyAgICAgICAgICAgICwgbV91cGRhdGVDb3VudGVyKDApCisgICAgICAgIHsKKyAgICAg
ICAgfQorICAgICAgICB2b2xhdGlsZSB1aW50NjRfdCBtX3N0YXJ0RnJhbWU7CisgICAgICAgIHZv
bGF0aWxlIHVpbnQ2NF90IG1fZW5kRnJhbWU7CisgICAgICAgIHZvbGF0aWxlIHVpbnQzMl90IG1f
dXBkYXRlQ291bnRlcjsKKyAgICB9OworCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOwor
ICAgIFZlY3RvcjxUaW1lQm91bmRzPiBtX3RpbWVCb3VuZHNRdWV1ZTsKKyAgICBMb2NrIG1fY3Vy
cmVudEZyYW1lQm91bmRzTG9jazsKKyAgICBzdGQ6OmF0b21pYzxpbnQzMl90PiBtX3RpbWVCb3Vu
ZHNRdWV1ZVB0ciB7IDAgfTsKIH07CiAKIGNsYXNzIENBUmluZ0J1ZmZlciB7CkBAIC03NiwyMCAr
MTA0LDI3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBFcnJvciBzdG9yZShjb25zdCBB
dWRpb0J1ZmZlckxpc3QqLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSk7
CiAKICAgICBlbnVtIEZldGNoTW9kZSB7IENvcHksIE1peCB9OwotICAgIFdFQkNPUkVfRVhQT1JU
IEVycm9yIGZldGNoKEF1ZGlvQnVmZmVyTGlzdCosIHNpemVfdCBmcmFtZUNvdW50LCB1aW50NjRf
dCBzdGFydEZyYW1lLCBGZXRjaE1vZGUgPSBDb3B5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGZldGNoSWZIYXNFbm91Z2hEYXRhKEF1ZGlvQnVmZmVyTGlzdCosIHNpemVfdCBmcmFtZUNvdW50
LCB1aW50NjRfdCBzdGFydEZyYW1lLCBGZXRjaE1vZGUgPSBDb3B5KTsKKworICAgIC8vIEZpbGxz
IGJ1ZmZlciB3aXRoIHNpbGVuY2UgaWYgdGhlcmUgaXMgbm90IGVub3VnaCBkYXRhLgorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZmV0Y2goQXVkaW9CdWZmZXJMaXN0Kiwgc2l6ZV90IGZyYW1lQ291
bnQsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIEZldGNoTW9kZSA9IENvcHkpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBmbHVzaCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRDdXJy
ZW50RnJhbWVCb3VuZHModWludDY0X3QgJnN0YXJ0VGltZSwgdWludDY0X3QgJmVuZFRpbWUpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2NF90IHN0
YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdl
dEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCYgc3RhcnRGcmFtZSwgdWludDY0X3QmIGVuZEZy
YW1lKTsKIAogICAgIHVpbnQzMl90IGNoYW5uZWxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hh
bm5lbENvdW50OyB9CiAgICAgQ0FSaW5nQnVmZmVyU3RvcmFnZSYgc3RvcmFnZSgpIHsgcmV0dXJu
IG1fYnVmZmVyczsgfQogCiBwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlRnJhbWVCb3VuZHMoKTsK
ICAgICBzaXplX3QgZnJhbWVPZmZzZXQodWludDY0X3QgZnJhbWVOdW1iZXIpIHsgcmV0dXJuIChm
cmFtZU51bWJlciAmIG1fZnJhbWVDb3VudE1hc2spICogbV9ieXRlc1BlckZyYW1lOyB9CiAKICAg
ICB2b2lkIGNsaXBUaW1lQm91bmRzKHVpbnQ2NF90JiBzdGFydFJlYWQsIHVpbnQ2NF90JiBlbmRS
ZWFkKTsKKyAgICB2b2lkIHNldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCBzdGFydEZyYW1l
LCB1aW50NjRfdCBlbmRGcmFtZSk7CisKKyAgICB2b2lkIGdldEN1cnJlbnRGcmFtZUJvdW5kc1dp
dGhvdXRVcGRhdGUodWludDY0X3QmIHN0YXJ0RnJhbWUsIHVpbnQ2NF90JiBlbmRGcmFtZSk7Cisg
ICAgdm9pZCBmZXRjaEludGVybmFsKEF1ZGlvQnVmZmVyTGlzdCosIHNpemVfdCBmcmFtZUNvdW50
LCB1aW50NjRfdCBzdGFydEZyYW1lLCBGZXRjaE1vZGUpOwogCiAgICAgdWludDY0X3QgY3VycmVu
dFN0YXJ0RnJhbWUoKSBjb25zdDsKICAgICB1aW50NjRfdCBjdXJyZW50RW5kRnJhbWUoKSBjb25z
dDsKQEAgLTEwMiwyMiArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX2ZyYW1lQ291
bnRNYXNrIHsgMCB9OwogICAgIHNpemVfdCBtX2NhcGFjaXR5Qnl0ZXMgeyAwIH07CiAKLSAgICBz
dHJ1Y3QgVGltZUJvdW5kcyB7Ci0gICAgICAgIFRpbWVCb3VuZHMoKQotICAgICAgICAgICAgOiBt
X3N0YXJ0RnJhbWUoMCkKLSAgICAgICAgICAgICwgbV9lbmRGcmFtZSgwKQotICAgICAgICAgICAg
LCBtX3VwZGF0ZUNvdW50ZXIoMCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIHZvbGF0
aWxlIHVpbnQ2NF90IG1fc3RhcnRGcmFtZTsKLSAgICAgICAgdm9sYXRpbGUgdWludDY0X3QgbV9l
bmRGcmFtZTsKLSAgICAgICAgdm9sYXRpbGUgdWludDMyX3QgbV91cGRhdGVDb3VudGVyOwotICAg
IH07Ci0KICAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9kZXNjcmlwdGlvbjsKLSAgICBW
ZWN0b3I8VGltZUJvdW5kcz4gbV90aW1lQm91bmRzUXVldWU7Ci0gICAgTG9jayBtX2N1cnJlbnRG
cmFtZUJvdW5kc0xvY2s7Ci0gICAgc3RkOjphdG9taWM8aW50MzJfdD4gbV90aW1lQm91bmRzUXVl
dWVQdHIgeyAwIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAppbmRl
eCA5NTg1ZmRmYTc5ZDAyOGY1NDhlYWUwM2IyNDY1ODQwOWQ5NDUzODUxLi45ZWI1YmU4Mzc5ZDRm
ZTUwM2ViNTU1MmJjNDUxNGQwYzgzNjQ2NGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ci5jcHAKQEAgLTE0MiwyMCArMTQyLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX3Byb3Rl
Y3RUaGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93biB8fCAhbV9pc1BsYXlpbmcpCiAgICAgICAgICAg
ICByZXR1cm4gc3RhdHVzOwogCi0gICAgICAgIHVpbnQ2NF90IHN0YXJ0OwotICAgICAgICB1aW50
NjRfdCBlbmQ7Ci0gICAgICAgIG1fcmluZ0J1ZmZlci0+Z2V0Q3VycmVudEZyYW1lQm91bmRzKHN0
YXJ0LCBlbmQpOwotICAgICAgICBpZiAobV9zdGFydEZyYW1lID49IHN0YXJ0ICYmIG1fc3RhcnRG
cmFtZSArIG51bWJlck9mRnJhbWVzIDw9IGVuZCkgewotICAgICAgICAgICAgbV9yaW5nQnVmZmVy
LT5mZXRjaChpb0RhdGEsIG51bWJlck9mRnJhbWVzLCBtX3N0YXJ0RnJhbWUpOworICAgICAgICBp
ZiAobV9yaW5nQnVmZmVyLT5mZXRjaElmSGFzRW5vdWdoRGF0YShpb0RhdGEsIG51bWJlck9mRnJh
bWVzLCBtX3N0YXJ0RnJhbWUpKSB7CiAgICAgICAgICAgICBtX3N0YXJ0RnJhbWUgKz0gbnVtYmVy
T2ZGcmFtZXM7CiAgICAgICAgICAgICBzdGF0dXMgPSBub0VycjsKICAgICAgICAgfQogCi0gICAg
ICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIoc2FtcGxlVGltZSwg
aG9zdFRpbWUsIG51bWJlck9mRnJhbWVzKSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCwgdWludDY0X3QpPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShhdXRv
IGJvdW5kc1N0YXJ0RnJhbWUsIGF1dG8gYm91bmRzRW5kRnJhbWUpIG11dGFibGUgewotICAgICAg
ICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgICAgIGlmIChib3VuZHNFbmRG
cmFtZSkKLSAgICAgICAgICAgICAgICBtX3JpbmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5k
cyhib3VuZHNTdGFydEZyYW1lLCBib3VuZHNFbmRGcmFtZSk7Ci0gICAgICAgIH0sIENvbXBsZXRp
b25IYW5kbGVyQ2FsbFRocmVhZDo6TWFpblRocmVhZCksIG1faWQudG9VSW50NjQoKSk7CisgICAg
ICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5OjpSZXF1ZXN0QnVmZmVyKHNhbXBsZVRpbWUsIGhvc3RUaW1lLCBudW1i
ZXJPZkZyYW1lcyksIG1faWQudG9VSW50NjQoKSk7CiAKICAgICAgICAgcmV0dXJuIHN0YXR1czsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCmluZGV4
IGRlODUyNGQ0YWJiNDFhMzEyZDIyZGU5OWYyODhmYjg0OGQ0ODVlYzIuLjQ1NjU4NGNhMDdhOGRk
MTZhMzEwMjQ3MjQzZTE0ZmYxZDZkNTZhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIuY3BwCkBAIC0xMjEsMTMgKzEyMSwxMSBAQCB2b2lkIFJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjphdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChjb25z
dCBTaGFyZQogICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZl
ckxpc3Q+KG1fZGVzY3JpcHRpb24pOwogfQogCi12b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2
NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFt
ZSkKK3ZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiB7CiAg
ICAgTUVTU0FHRV9DSEVDSyhtX2F1ZGlvQnVmZmVyTGlzdCk7CiAgICAgTUVTU0FHRV9DSEVDSyhX
ZWJBdWRpb0J1ZmZlckxpc3Q6OmlzU3VwcG9ydGVkRGVzY3JpcHRpb24obV9kZXNjcmlwdGlvbiwg
bnVtYmVyT2ZGcmFtZXMpKTsKIAotICAgIG1fcmluZ0J1ZmZlci0+c2V0Q3VycmVudEZyYW1lQm91
bmRzKHN0YXJ0RnJhbWUsIGVuZEZyYW1lKTsKLQogICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5zZXRT
YW1wbGVDb3VudChudW1iZXJPZkZyYW1lcyk7CiAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaChtX2F1
ZGlvQnVmZmVyTGlzdC0+bGlzdCgpLCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaAppbmRleCA5YzA2NmMz
MmExOGMyZTU3YjIxZmNhM2YyYjNkNmJjNzQ0MWU1MjI5Li5kNTM5MjliNDgxMDAxOWZjOTJhZjNj
MmNmMzBiOWM2ZGYzM2Y1YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlci5oCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhcigpOwogICAg
IHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFu
Z2VkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6Q0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwotICAgIHZvaWQg
YXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMs
IHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKTsKKyAgICB2b2lkIGF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKIAog
ICAgIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlJiBzdG9yYWdlKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLm1lc3NhZ2VzLmluCmluZGV4IDI1NGJm
NzM5YjNjMTg3MzQ3NWIxZjJjOTQ0ZGY1ZDgxM2EzNWFiYzIuLmQ3YTNhMjg0ZjA1Zjk3NDExMTQy
NTUwNTM2OGFmZGNjZjBhYmYxYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlci5tZXNzYWdlcy5pbgpAQCAtMzEsNyArMzEsNyBAQCBtZXNzYWdlcyAt
PiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciBOb3RSZWZDb3VudGVkIHsKICAg
ICBTZXRWb2x1bWUoZmxvYXQgdmFsdWUpCiAKICAgICBBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdl
ZChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUsIFdlYkNvcmU6
OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZG
cmFtZXMpCi0gICAgQXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRf
dCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUp
CisgICAgQXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1i
ZXJPZkZyYW1lcykKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA2NzQ4ZDFmNWQ4MDBk
OTU3NGYyMzgwNzViMTg5MGI0ZTRhY2VlOTE0Li43M2U2MWNkOGVjMjAyNTVjMTc4NGFiMDViMWU2
Nzc4ZDQ4ZjUzOWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTg5LDE0ICs4OSwxMiBAQCB2b2lkIFJl
bW90ZU1lZGlhUmVjb3JkZXI6OmF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZAogICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJB
dWRpb0J1ZmZlckxpc3Q+KG1fZGVzY3JpcHRpb24pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVj
b3JkZXI6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVt
YmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKQordm9p
ZCBSZW1vdGVNZWRpYVJlY29yZGVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRp
bWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9yaW5n
QnVmZmVyKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fYXVkaW9CdWZmZXJMaXN0KTsKICAgICBNRVNT
QUdFX0NIRUNLKFdlYkF1ZGlvQnVmZmVyTGlzdDo6aXNTdXBwb3J0ZWREZXNjcmlwdGlvbihtX2Rl
c2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcykpOwogCi0gICAgbV9yaW5nQnVmZmVyLT5zZXRDdXJy
ZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOwotCiAgICAgbV9hdWRpb0J1ZmZl
ckxpc3QtPnNldFNhbXBsZUNvdW50KG51bWJlck9mRnJhbWVzKTsKICAgICBtX3JpbmdCdWZmZXIt
PmZldGNoKG1fYXVkaW9CdWZmZXJMaXN0LT5saXN0KCksIG51bWJlck9mRnJhbWVzLCB0aW1lLnRp
bWVWYWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCAzYWI0ZTRiMWNmMWMxNDEyMzBjMTNlNDU3NmM1
ZWQ2ZTZlZmMyZWRiLi4zODhlY2JiYTM5NzkwZGYzZTRhOTFiNjIwMmY4OWIyN2YxNTZjZDMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKICAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKGNvbnN0IFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwotICAgIHZvaWQgYXVkaW9TYW1wbGVz
QXZhaWxhYmxlKE1lZGlhVGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0
YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKTsKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKICAgICB2b2lkIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYpOwogICAgIHZvaWQg
ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRv
dWJsZSk+JiYpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1l
c3NhZ2VzLmluCmluZGV4IDQ1MWMyODdiMjc2MDVjMjkzMmMyZjJkZTgyY2YyZGZjMjJjMmFiYjQu
LjhkMDViYzJjNTkxNWUzODYzYmIyYTQwMjFlYjE1ZmFhMjNmOWNhMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAKIAogbWVzc2FnZXMgLT4gUmVtb3Rl
TWVkaWFSZWNvcmRlciBOb3RSZWZDb3VudGVkIHsKICAgICBBdWRpb1NhbXBsZXNTdG9yYWdlQ2hh
bmdlZChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUsIFdlYkNv
cmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMpCi0gICAgQXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50
NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJh
bWUpCisgICAgQXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBu
dW1iZXJPZkZyYW1lcykKICAgICBWaWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVW
aWRlb1NhbXBsZSBzYW1wbGUpCiAgICAgRmV0Y2hEYXRhKCkgLT4gKElQQzo6RGF0YVJlZmVyZW5j
ZSBidWZmZXIsIGRvdWJsZSB0aW1lQ29kZSkgQXN5bmMKICAgICBTdG9wUmVjb3JkaW5nKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlLmNwcAppbmRleCA3MzA2OTQ1ZWZmNzcyYmUwMzgzNjM4YWRjN2Q4MmJiODc3YmNjMTIwLi43
ZTZlZmIwNmRkNjJiYmVhNTgyYzBlY2MzZmM5YWNjN2M0YmIwNDc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuY3BwCkBA
IC00Niw4ICs0NiwxMSBAQCB2b2lkIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpzZXRSZWFkT25s
eShib29sIHJlYWRPbmx5KQogCiB2b2lkIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjphbGxvY2F0
ZShzaXplX3QgYnl0ZUNvdW50KQogewotICAgIGlmICghbV9yZWFkT25seSkKLSAgICAgICAgc2V0
U3RvcmFnZShTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGJ5dGVDb3VudCkpOworICAgIGlmICghbV9y
ZWFkT25seSkgeworICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxs
b2NhdGUoYnl0ZUNvdW50ICsgc2l6ZW9mKEZyYW1lQm91bmRzKSk7CisgICAgICAgIG5ldyAoTm90
TnVsbCwgc2hhcmVkTWVtb3J5LT5kYXRhKCkpIEZyYW1lQm91bmRzOworICAgICAgICBzZXRTdG9y
YWdlKFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CisgICAgfQogfQogCiB2b2lkIFNoYXJlZFJpbmdC
dWZmZXJTdG9yYWdlOjpkZWFsbG9jYXRlKCkKQEAgLTU2LDExICs1OSw1OCBAQCB2b2lkIFNoYXJl
ZFJpbmdCdWZmZXJTdG9yYWdlOjpkZWFsbG9jYXRlKCkKICAgICAgICAgc2V0U3RvcmFnZShudWxs
cHRyKTsKIH0KIAorYXV0byBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6c2hhcmVkRnJhbWVCb3Vu
ZHMoKSAtPiBGcmFtZUJvdW5kcyoKK3sKKyAgICByZXR1cm4gbV9zdG9yYWdlID8gcmVpbnRlcnBy
ZXRfY2FzdDxGcmFtZUJvdW5kcyo+KG1fc3RvcmFnZS0+ZGF0YSgpKSA6IG51bGxwdHI7Cit9CisK
IHZvaWQqIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpkYXRhKCkKIHsKLSAgICByZXR1cm4gbV9z
dG9yYWdlID8gbV9zdG9yYWdlLT5kYXRhKCkgOiBudWxscHRyOworICAgIHJldHVybiBtX3N0b3Jh
Z2UgPyBzdGF0aWNfY2FzdDxCeXRlKj4obV9zdG9yYWdlLT5kYXRhKCkpICsgc2l6ZW9mKEZyYW1l
Qm91bmRzKSA6IG51bGxwdHI7CiB9CiAKK3ZvaWQgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6Omdl
dEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCYgc3RhcnRGcmFtZSwgdWludDY0X3QmIGVuZEZy
YW1lKQoreworICAgIHN0YXJ0RnJhbWUgPSBtX3N0YXJ0RnJhbWU7CisgICAgZW5kRnJhbWUgPSBt
X2VuZEZyYW1lOwogfQogCit2b2lkIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpzZXRDdXJyZW50
RnJhbWVCb3VuZHModWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpCit7Cisg
ICAgbV9zdGFydEZyYW1lID0gc3RhcnRGcmFtZTsKKyAgICBtX2VuZEZyYW1lID0gZW5kRnJhbWU7
CisKKyAgICBBU1NFUlQoIW1fcmVhZE9ubHkpOworICAgIGlmIChtX3JlYWRPbmx5KQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvKiBzaGFyZWRCb3VuZHMgPSBzaGFyZWRGcmFtZUJvdW5kcygp
OworICAgIGlmICghc2hhcmVkQm91bmRzKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25l
ZCBpbmRleFRvV3JpdGUgPSAoc2hhcmVkQm91bmRzLT5ib3VuZHNCdWZmZXJJbmRleC5sb2FkKHN0
ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpICsgMSkgJSBib3VuZHNCdWZmZXJTaXplOworICAgIHNo
YXJlZEJvdW5kcy0+Ym91bmRzQnVmZmVyW2luZGV4VG9Xcml0ZV0gPSBzdGQ6Om1ha2VfcGFpcihz
dGFydEZyYW1lLCBlbmRGcmFtZSk7CisgICAgc2hhcmVkQm91bmRzLT5ib3VuZHNCdWZmZXJJbmRl
eC5zdG9yZShpbmRleFRvV3JpdGUsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOworfQorCit2
b2lkIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjp1cGRhdGVGcmFtZUJvdW5kcygpCit7CisgICAg
YXV0byogc2hhcmVkQm91bmRzID0gc2hhcmVkRnJhbWVCb3VuZHMoKTsKKyAgICBpZiAoIXNoYXJl
ZEJvdW5kcykgeworICAgICAgICBtX3N0YXJ0RnJhbWUgPSBtX2VuZEZyYW1lID0gMDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcGFpciA9IHNoYXJlZEJvdW5kcy0+Ym91bmRz
QnVmZmVyW3NoYXJlZEJvdW5kcy0+Ym91bmRzQnVmZmVySW5kZXgubG9hZChzdGQ6Om1lbW9yeV9v
cmRlcl9hY3F1aXJlKV07CisgICAgbV9zdGFydEZyYW1lID0gcGFpci5maXJzdDsKKyAgICBtX2Vu
ZEZyYW1lID0gcGFpci5zZWNvbmQ7Cit9CisKK3ZvaWQgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6
OmZsdXNoKCkKK3sKKyAgICBtX3N0YXJ0RnJhbWUgPSBtX2VuZEZyYW1lID0gMDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgKaW5kZXggYzkzNGU5MDdmODk3ZjM3
ZmUwZTA4ZjkwZjZmMTllMzQzZjIwZjVlZi4uNThmMjc2NjY0YjgzZDkyNzRmODVjNzlmOWIzYWMz
MDUzNzBmMDU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBVU0UoTUVESUFU
T09MQk9YKQogCisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlICJTaGFyZWRNZW1v
cnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogCkBAIC01NywxMSArNTgs
MjcgQEAgcHVibGljOgogICAgIHZvaWQgYWxsb2NhdGUoc2l6ZV90KSBmaW5hbDsKICAgICB2b2lk
IGRlYWxsb2NhdGUoKSBmaW5hbDsKICAgICB2b2lkKiBkYXRhKCkgZmluYWw7CisgICAgdm9pZCBn
ZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3QmIHN0YXJ0VGltZSwgdWludDY0X3QmIGVuZFRp
bWUpIGZpbmFsOworICAgIHZvaWQgc2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2NF90IHN0YXJ0
RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKSBmaW5hbDsKKyAgICB1aW50NjRfdCBjdXJyZW50U3Rh
cnRGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc3RhcnRGcmFtZTsgfQorICAgIHVpbnQ2
NF90IGN1cnJlbnRFbmRGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW5kRnJhbWU7IH0K
KyAgICB2b2lkIHVwZGF0ZUZyYW1lQm91bmRzKCkgZmluYWw7CisgICAgdm9pZCBmbHVzaCgpIGZp
bmFsOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYm91bmRzQnVm
ZmVyU2l6ZSB7IDMyIH07CisgICAgc3RydWN0IEZyYW1lQm91bmRzIHsKKyAgICAgICAgc3RkOjpw
YWlyPHVpbnQ2NF90LCB1aW50NjRfdD4gYm91bmRzQnVmZmVyW2JvdW5kc0J1ZmZlclNpemVdOwor
ICAgICAgICBBdG9taWM8dW5zaWduZWQ+IGJvdW5kc0J1ZmZlckluZGV4IHsgMCB9OworICAgIH07
CisKKyAgICBGcmFtZUJvdW5kcyogc2hhcmVkRnJhbWVCb3VuZHMoKTsKKwogICAgIENsaWVudCog
bV9jbGllbnQ7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9zdG9yYWdlOwogICAgIGJvb2wg
bV9yZWFkT25seSB7IGZhbHNlIH07CisgICAgdWludDY0X3QgbV9zdGFydEZyYW1lIHsgMCB9Owor
ICAgIHVpbnQ2NF90IG1fZW5kRnJhbWUgeyAwIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuY3BwCmluZGV4IDg2NzkyYWE1NWMxZTdjYjEyNzhiYWMzOTNkODcwNDk5YWJhNjA2MmMu
LjZlZjE1ODM5Y2E4NjMzY2E3YjdhNGY1Y2YzMzExNDdmMTM2ZjQyZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuY3BwCkBAIC0xNTYsMTAgKzE1Niw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
QVNTRVJUKGlzPFdlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9EYXRhKSk7CiAgICAgICAgIG1fcmlu
Z0J1ZmZlci5zdG9yZShkb3duY2FzdDxXZWJBdWRpb0J1ZmZlckxpc3Q+KGF1ZGlvRGF0YSkubGlz
dCgpLCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUoKSk7Ci0gICAgICAgIHVpbnQ2NF90
IHN0YXJ0RnJhbWU7Ci0gICAgICAgIHVpbnQ2NF90IGVuZEZyYW1lOwotICAgICAgICBtX3JpbmdC
dWZmZXIuZ2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUsIGVuZEZyYW1lKTsKLSAgICAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
cjo6QXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1faWQsIHRpbWUsIG51bWJlck9mRnJhbWVzLCBzdGFy
dEZyYW1lLCBlbmRGcmFtZSksIDApOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpBdWRpb1NhbXBsZXNBdmFpbGFibGUobV9p
ZCwgdGltZSwgbnVtYmVyT2ZGcmFtZXMpLCAwKTsKICAgICB9CiAKICAgICB2b2lkIHZpZGVvU2Ft
cGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpIGZpbmFsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCAxYWU5OTYwNWQ3NzY4OTNhOWZiZTc3OGIz
OGMyYzVkZTdmMDQ2YjZkLi42MDE2ZGE5OTdlY2U5YzA5ODVmYjBkZjI4MzhiYWE0ZTBjM2E2MDA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTk5LDcg
Kzk5LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldFN0b3JhZ2UoY29uc3QgU2hhcmVkTWVtb3J5OjoKIAogI2VuZGlmCiAKLXZvaWQgU3BlZWNo
UmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdGVBdWRpb1NhbXBsZXNB
dmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRf
dCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25S
ZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVk
aWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQogewogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGlmICghbV9idWZmZXIpIHsKQEAgLTEwOSwxNCArMTA5LDExIEBAIHZvaWQgU3Bl
ZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdGVBdWRpb1NhbXBs
ZXNBdmFpbGFibGUoTWVkCiAgICAgfQogCiAgICAgbV9idWZmZXItPnNldFNhbXBsZUNvdW50KG51
bWJlck9mRnJhbWVzKTsKLSAgICBtX3JpbmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhz
dGFydEZyYW1lLCBlbmRGcmFtZSk7CiAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaChtX2J1ZmZlci0+
bGlzdCgpLCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUoKSk7CiAgICAgYXVkaW9TYW1w
bGVzQXZhaWxhYmxlKHRpbWUsICptX2J1ZmZlciwgbV9kZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFt
ZXMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGltZSk7CiAgICAgVU5VU0VEX1BBUkFNKG51
bWJlck9mRnJhbWVzKTsKLSAgICBVTlVTRURfUEFSQU0oc3RhcnRGcmFtZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGVuZEZyYW1lKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCmluZGV4IDIyNTI0MmI5Y2RhYzlkNzQ5MTM2ZDA2ZjZiNGQwMjk1MDhiZTdm
MWMuLjhiNTEyNTBmNWNhZDdmM2Y1Y2U3OGY1OGQ2NzYzNzE5MGNmOGJmOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFN0b3JhZ2UoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCBjb25zdCBX
ZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1l
cyk7CiAjZW5kaWYKIAotICAgIHZvaWQgcmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlh
VGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2
NF90IGVuZEZyYW1lKTsKKyAgICB2b2lkIHJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRp
YVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKICAgICB2b2lkIHJlbW90ZUNhcHR1cmVG
YWlsZWQoKTsKICAgICB2b2lkIHJlbW90ZVNvdXJjZVN0b3BwZWQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1l
ZGlhU291cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAppbmRleCA0ZjhhODZh
MDIyZWE5YmNlNzcyNmY1YmU1YjA2OTcyMGUwODQxODU2Li5hNzUxMGE2ZjM3NzIwZDJmMTk4Nzhi
MWFhYWY3ZTg1NmViYTgxZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2VNYW5hZ2VyLmNwcApAQCAtNzQsMTAgKzc0LDEwIEBAIHZvaWQgU3BlZWNoUmVj
b2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcjo6cmVtb3ZlU291cmNlKFNw
ZWVjaFJlY29nCiAgICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1l
ZGlhU291cmNlTWFuYWdlcjo6RGVsZXRlU291cmNlKGlkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjpyZW1vdGVB
dWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgV1RGOjpNZWRpYVRpbWUmIHRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKK3ZvaWQg
U3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcjo6cmVtb3Rl
QXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiB0aW1lLCB1aW50NjRfdCBudW1i
ZXJPZkZyYW1lcykKIHsKICAgICBpZiAoYXV0byBzb3VyY2UgPSBtX3NvdXJjZXMuZ2V0KGlkZW50
aWZpZXIpKQotICAgICAgICBzb3VyY2UtPnJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1l
LCBudW1iZXJPZkZyYW1lcywgc3RhcnRGcmFtZSwgZW5kRnJhbWUpOworICAgICAgICBzb3VyY2Ut
PnJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBudW1iZXJPZkZyYW1lcyk7CiB9CiAK
IHZvaWQgU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcjo6
cmVtb3RlQ2FwdHVyZUZhaWxlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
TWFuYWdlci5oCmluZGV4IDIxNDZhOWIzNjMwMjM5N2IxYjg2NGZmNGZhOGE3MzZhNTUzYWU2NTgu
LmY0YjRkODgxZWY5Y2I5MTU3OTMzNWQ4OGM1ZTIzYTQ4OWQ4YjAwNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRp
YVNvdXJjZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgKQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlv
blJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyCi0gICAgdm9pZCByZW1vdGVBdWRpb1Nh
bXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIGNv
bnN0IFdURjo6TWVkaWFUaW1lJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0
YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKTsKKyAgICB2b2lkIHJlbW90ZUF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgY29uc3Qg
V1RGOjpNZWRpYVRpbWUmLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7CiAgICAgdm9pZCByZW1v
dGVDYXB0dXJlRmFpbGVkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyKTsK
ICAgICB2b2lkIHJlbW90ZVNvdXJjZVN0b3BwZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUlkZW50aWZpZXIpOwogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
TWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXgg
ZDA3MTAzOThiYzdjMmM0NzA0NGIwM2U2NWQwYWNjODU4MGExZWZlYS4uOGE1YTE0MmJkOTVjNzA4
ZThiNmYzYmU0Y2VjNjZjZGJmZDNiNjc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsy
NCw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogbWVzc2FnZXMgLT4gU3BlZWNoUmVj
b2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBOb3RSZWZDb3VudGVkIHsK
LSAgICBSZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKKyAgICBS
ZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJh
bWVzKQogICAgIFJlbW90ZUNhcHR1cmVGYWlsZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBSZW1vdGVTb3VyY2VTdG9wcGVkKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAjaWYgUExBVEZPUk0o
Q09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKaW5kZXggYzhjNTgyOTA1
MGE1MjU4ZjlkOTMxOTc2Yjk1ZjA1ZTU5N2E1NmIzMS4uNzE5YzM4Y2NkODIzNWRiZGViNzI3Mzdl
ZDAzNWRhYmM4YTQ3NmRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApA
QCAtMTQ4LDEyICsxNDgsMTIgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0
b3AoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW8KIH0KIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlcXVlc3RC
dWZmZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90IGhvc3RUaW1lLCB1aW50NjRfdCBmcmFt
ZXNUb1JlbmRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCwgdWludDY0X3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJl
cXVlc3RCdWZmZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90IGhvc3RUaW1lLCB1aW50NjRf
dCBmcmFtZXNUb1JlbmRlcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAogICAg
IGlmICghaGFzRW5vdWdoRnJhbWVzKGZyYW1lc1RvUmVuZGVyKSkKLSAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKDAsIDApOworICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHN0YXJ0
RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICBtX2F1ZGlvQnVmZmVyTGlzdC0+c2V0U2FtcGxl
Q291bnQoZnJhbWVzVG9SZW5kZXIpOwpAQCAtMTYzLDExICsxNjMsNiBAQCB2b2lkIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWlu
dDY0X3QgaG9zdAogICAgIG1fY3VycmVudEZyYW1lICs9IGZyYW1lc1RvUmVuZGVyOwogCiAgICAg
bV9yaW5nQnVmZmVyLT5zdG9yZShtX2F1ZGlvQnVmZmVyTGlzdC0+bGlzdCgpLCBmcmFtZXNUb1Jl
bmRlciwgc3RhcnRGcmFtZSk7Ci0KLSAgICB1aW50NjRfdCBib3VuZHNTdGFydEZyYW1lOwotICAg
IHVpbnQ2NF90IGJvdW5kc0VuZEZyYW1lOwotICAgIG1fcmluZ0J1ZmZlci0+Z2V0Q3VycmVudEZy
YW1lQm91bmRzKGJvdW5kc1N0YXJ0RnJhbWUsIGJvdW5kc0VuZEZyYW1lKTsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihib3VuZHNTdGFydEZyYW1lLCBib3VuZHNFbmRGcmFtZSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKaW5kZXggMmU2MDBkNjdkYjVmYTE0ODYz
ZDgwMGU2YTRkYWIyOWI1YTMzMjM5OC4uMjg5ZTE1MDk4NzBlZDEyYTc2MDFiMzVjZDhiMGZkNTM3
OTEyOTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCkBAIC00OSw2ICs0OSw4
IEBAIGNsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2Ns
YXNzIFNoYXJlZFJpbmdCdWZmZXJGcmFtZUJvdW5kczsKKwogY2xhc3MgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6
QXVkaW9EZXN0aW5hdGlvbkNvY29hCkBAIC03Miw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgcmVxdWVzdEJ1
ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90IGJvdW5kc1N0YXJ0RnJh
bWUsIHVpbnQ2NF90IGJvdW5kc0VuZEZyYW1lKT4mJik7CisgICAgdm9pZCByZXF1ZXN0QnVmZmVy
KGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBob3N0VGltZSwgdWludDY0X3QgbnVtYmVyT2ZG
cmFtZXMpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM4NWUxMmQ3ODEyNDczZTA1ZWY1NWJlNzhhNGEw
YjY4MjRiZDk3OTUuLjU4Y2E1ZGJhYzdlMjQ1OWNiMDljMzRkOTMzMzNlZWQzYzk5YjdlZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0y
NSw3ICsyNSw3IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBO
b3RSZWZDb3VudGVkIHsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZXF1ZXN0QnVmZmVyKGRv
dWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBob3N0VGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFt
ZXMpIC0+ICh1aW50NjRfdCBib3VuZHNTdGFydEZyYW1lLCB1aW50NjRfdCBib3VuZHNFbmRGcmFt
ZSkgQXN5bmMKKyAgICBSZXF1ZXN0QnVmZmVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBo
b3N0VGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVBy
b3ZpZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAppbmRleCBlNjIwYmNjMzEzODMyNTQx
ZDRkMDM3YTczZjE5YjBiM2M4NWUxN2E1Li44YjZjYzIwYjRhMzlmYzhjNzcxZmYwOWExY2ZjMGNj
ZjlmMGMzOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNw
cApAQCAtMTU2LDEwICsxNTYsOCBAQCB2b2lkIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5h
Z2VyOjpSZW1vdGVBdWRpbzo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHVpbnQ2NAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBlbmRGcmFtZSA9IHN0YXJ0RnJhbWUgKyBudW1iZXJP
ZkZyYW1lczsKICAgICBtX2J1ZmZlci0+c2V0U2FtcGxlQ291bnQobnVtYmVyT2ZGcmFtZXMpOwog
Ci0gICAgbV9yaW5nQnVmZmVyLT5zZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5k
RnJhbWUpOwogICAgIG1fcmluZ0J1ZmZlci0+ZmV0Y2gobV9idWZmZXItPmxpc3QoKSwgbnVtYmVy
T2ZGcmFtZXMsIHN0YXJ0RnJhbWUpOwogCiAgICAgbV9wcm92aWRlci0+YXVkaW9TYW1wbGVzQXZh
aWxhYmxlKCptX2J1ZmZlciwgbV9kZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCmluZGV4IDJlMGE2YjFmODM5MzJhZTgz
MzVkZjRlYWE0ZWI1MzVmODU4NzEyMTIuLmU0ZWYxYzBjNDM0YjhlOTJjZWZlODU2Y2YwNGQzYzE1
YmI1MjRmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKQEAg
LTk1LDEwICs5NSw3IEBAIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnB1c2hT
YW1wbGVzKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgV2ViCiAKICAgICBBU1NFUlQoaXM8
V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PihhdWRpb0RhdGEpKTsKICAgICBtX3JpbmdCdWZm
ZXItPnN0b3JlKGRvd25jYXN0PFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9EYXRh
KS5saXN0KCksIG51bWJlck9mRnJhbWVzLCB0aW1lLnRpbWVWYWx1ZSgpKTsKLSAgICB1aW50NjRf
dCBzdGFydEZyYW1lOwotICAgIHVpbnQ2NF90IGVuZEZyYW1lOwotICAgIG1fcmluZ0J1ZmZlci0+
Z2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUsIGVuZEZyYW1lKTsKLSAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
OjpBdWRpb1NhbXBsZXNBdmFpbGFibGUgeyB0aW1lLCBudW1iZXJPZkZyYW1lcywgc3RhcnRGcmFt
ZSwgZW5kRnJhbWUgfSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpBdWRpb1NhbXBsZXNB
dmFpbGFibGUgeyB0aW1lLCBudW1iZXJPZkZyYW1lcyB9LCBtX2lkZW50aWZpZXIpOwogfQogCiB2
b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzdG9yYWdlQ2hhbmdlZChTaGFyZWRN
ZW1vcnkqIHN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggNDAzZGYxZjU3YjRh
NjhjMzk4MDQ4NWM5MjBjZjgzMTgzMTJhYzg5MS4uYThlYzA1OGJhMDQwMGRlM2IyYzhhMDlkNjhh
NTA3MGViZWYyNTUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApAQCAtMTA0LDEwICsxMDQs
NyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29u
c3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbAogCiAgICAgQVNTRVJUKGlzPFdlYkF1ZGlvQnVm
ZmVyTGlzdD4oYXVkaW9EYXRhKSk7CiAgICAgbV9yaW5nQnVmZmVyLT5zdG9yZShkb3duY2FzdDxX
ZWJBdWRpb0J1ZmZlckxpc3Q+KGF1ZGlvRGF0YSkubGlzdCgpLCBudW1iZXJPZkZyYW1lcywgdGlt
ZS50aW1lVmFsdWUoKSk7Ci0gICAgdWludDY0X3Qgc3RhcnRGcmFtZTsKLSAgICB1aW50NjRfdCBl
bmRGcmFtZTsKLSAgICBtX3JpbmdCdWZmZXItPmdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZy
YW1lLCBlbmRGcmFtZSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVJlY29yZGVyOjpBdWRpb1NhbXBsZXNBdmFpbGFibGUgeyB0aW1lLCBudW1iZXJPZkZyYW1l
cywgc3RhcnRGcmFtZSwgZW5kRnJhbWUgfSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkF1ZGlvU2FtcGxlc0F2YWls
YWJsZSB7IHRpbWUsIG51bWJlck9mRnJhbWVzIH0sIG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGU6OnN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSogc3RvcmFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFn
ZXIuY3BwCmluZGV4IGQwZmY0NDhiZWY4OTQxYWM0OTViZTA4ZWY1M2JmYWMxYjgwNjZlZmEuLjY3
OWVmOWQxNTc0ZmQzODQ3Nzc0Yjg4OGZjYjZhYjgxMTBmOWMxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcApAQCAtMTIxLDEw
ICsxMjEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIEFTU0VSVChpczxXZWJBdWRpb0J1ZmZlckxp
c3Q+KGF1ZGlvRGF0YSkpOwogICAgICAgICBtX3JpbmdCdWZmZXIuc3RvcmUoZG93bmNhc3Q8V2Vi
QXVkaW9CdWZmZXJMaXN0PihhdWRpb0RhdGEpLmxpc3QoKSwgbnVtYmVyT2ZGcmFtZXMsIHRpbWUu
dGltZVZhbHVlKCkpOwotICAgICAgICB1aW50NjRfdCBzdGFydEZyYW1lOwotICAgICAgICB1aW50
NjRfdCBlbmRGcmFtZTsKLSAgICAgICAgbV9yaW5nQnVmZmVyLmdldEN1cnJlbnRGcmFtZUJvdW5k
cyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcjo6
UmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1faWRlbnRpZmllciwgdGltZSwgbnVtYmVyT2ZG
cmFtZXMsIHN0YXJ0RnJhbWUsIGVuZEZyYW1lKSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
TWFuYWdlcjo6UmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1faWRlbnRpZmllciwgdGltZSwg
bnVtYmVyT2ZGcmFtZXMpLCAwKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh0aW1lKTsK
ICAgICAgICAgVU5VU0VEX1BBUkFNKGF1ZGlvRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNw
cAppbmRleCA1YjNlNzAwZTA5NThlMmZiZDU2OTE3ODA0MjcxZGVkYzk0ZmM1ZTQ5Li5jNTY1YjIy
NmQ3OTAzOGQzYmI4N2U2ZjBiZDg3Nzg4OWE2MTgzMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
ci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6
YXVkaW9TdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmMKICAgICBpdGVy
YXRvci0+dmFsdWUtPnNldFN0b3JhZ2UoaXBjSGFuZGxlLmhhbmRsZSwgZGVzY3JpcHRpb24sIG51
bWJlck9mRnJhbWVzKTsKIH0KIAotdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6YXVk
aW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVy
IGlkZW50aWZpZXIsIE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWlu
dDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpCit2b2lkIFJlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51
bWJlck9mRnJhbWVzKQogewogICAgIEFTU0VSVCghV1RGOjppc01haW5SdW5Mb29wKCkpOwogCkBA
IC0xMDgsNyArMTA4LDcgQEAgdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3UKICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRvIGZpbmQgc291cmNlICVsbHUgZm9yIGF1ZGlv
U2FtcGxlc0F2YWlsYWJsZSIsIGlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgaXRlcmF0b3ItPnZhbHVlLT5hdWRpb1NhbXBsZXNBdmFpbGFibGUodGlt
ZSwgbnVtYmVyT2ZGcmFtZXMsIHN0YXJ0RnJhbWUsIGVuZEZyYW1lKTsKKyAgICBpdGVyYXRvci0+
dmFsdWUtPmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBudW1iZXJPZkZyYW1lcyk7CiB9CiAK
IFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpSZW1vdGVBdWRpbzo6UmVtb3RlQXVkaW8oUmVm
PFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQpAQCAtMTQxLDcgKzE0MSw3IEBA
IHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZUF1ZGlvOjpzZXRTdG9yYWdl
KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuCiAgICAgbV9idWZmZXIgPSBtYWtlVW5pcXVlPFdlYkF1
ZGlvQnVmZmVyTGlzdD4oZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKIH0KIAotdm9pZCBS
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6UmVtb3RlQXVkaW86OmF1ZGlvU2FtcGxlc0F2YWls
YWJsZShNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0
YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKQordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlcjo6UmVtb3RlQXVkaW86OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUgdGltZSwg
dWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikgewogICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJidWZmZXIgZm9yIGF1ZGlvIHNvdXJjZSAlbGx1
IGlzIG51bGwiLCBtX3NvdXJjZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwpAQCAtMTU1LDcg
KzE1NSw2IEBAIHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZUF1ZGlvOjph
dWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpCiAKICAgICBtX2J1ZmZlci0+c2V0U2Ft
cGxlQ291bnQobnVtYmVyT2ZGcmFtZXMpOwogCi0gICAgbV9yaW5nQnVmZmVyLT5zZXRDdXJyZW50
RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOwogICAgIG1fcmluZ0J1ZmZlci0+ZmV0
Y2gobV9idWZmZXItPmxpc3QoKSwgbnVtYmVyT2ZGcmFtZXMsIHRpbWUudGltZVZhbHVlKCkpOwog
CiAgICAgbV9zb3VyY2UtPnJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCAqbV9idWZm
ZXIsIG1fZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgK
aW5kZXggNmZiNGJjMzdiOTM4MDE2ZmNlNWM1YzVhYzVhNDM3MDI3ZjE4NmJlNC4uMDFhZTE1Zjhm
NWZkYWY4NjA0MzE5NjNiYjIyY2IwZmIzMWY0Yjk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgK
QEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2VzCiAgICAgdm9pZCBh
dWRpb1N0b3JhZ2VDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVy
LCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKLSAgICB2b2lkIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ciwgTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFt
ZSwgdWludDY0X3QgZW5kRnJhbWUpOworICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBNZWRpYVRpbWUsIHVpbnQ2NF90
IG51bWJlck9mRnJhbWVzKTsKIAogICAgIHZvaWQgc2V0Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rp
b24qKTsKIApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBSZW1v
dGVBdWRpbyhSZWY8UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CiAKICAgICAgICAgdm9p
ZCBzZXRTdG9yYWdlKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwotICAg
ICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSk7CisgICAg
ICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmPFJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2Vz
LmluCmluZGV4IGQ4ZGUxYTFjMjRkNWI0NDNiYzQ4YWRiNDZiMWNiODgyNzU3ZjY2NmEuLjZhY2Uy
NmJmYTgzMDY4MzE2YTgxYjZjNTFiZmFlNDY4NTNiOWZmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAKIAogbWVzc2FnZXMgLT4g
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIgTm90UmVmQ291bnRlZCB7CiAgICAgQXVkaW9TdG9y
YWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVz
KQotICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
SWRlbnRpZmllciBpZCwgTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCB1
aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKKyAgICBBdWRpb1NhbXBsZXNB
dmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIE1lZGlh
VGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWU0MDI3MjBiYjQ2
NDExNzQyMDE2ZGJhZjhmMDI1ZWY2ZTA1YjcwOC4uMzEzYjZhMzI0NTAwYTE2ZDU4OWI3MDYwYzJh
YjU0Y2Y0OWIxZTNhNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEyLTEwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIEN1dCBpbiBoYWxmIGFtb3VudCBv
ZiBJUEMgbmVlZGVkIHRvIGRvIFdlYkF1ZGlvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3MTUKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBH
YXJlbi4KKworICAgICAgICBNaW5vciBBUEkgdGVzdCBjaGFuZ2VzIGR1ZSB0byBDQVJpbmdCdWZm
ZXIgQVBJIGNoYW5nZS4gZmV0Y2goKSBhbHdheXMgcmV0dXJuZWQgT2sKKyAgICAgICAgc28gSSBk
cm9wcGVkIHRoZSByZXR1cm4gdmFsdWUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Rf
Rik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNaXhpbmdUZXN0OjpydW4pOgorCiAyMDIwLTEy
LTEwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgcHJlcGFy
ZS1DaGFuZ2VMb2cgd29uJ3QgcGFyc2UgcmRhcjovL25ubm5ubm5uIFVSTHMgaW4gZmV0Y2hSYWRh
clVSTEZyb21CdWdYTUxEYXRhKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKaW5kZXggOGJiZWJmNGU1YTI3MjM5OTFhZTRhZDRjYTY4
YjIwN2Y2ODRhYTdkOS4uZjIwYmVmZjYwMDMzYWE3ZTQ1YTM3ZWJjNjI2YjRjOTJhZTFiMzE4NyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZl
ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZl
ci5jcHAKQEAgLTEwOSw4ICsxMDksNyBAQCBURVNUX0YoQ0FSaW5nQnVmZmVyVGVzdCwgQmFzaWNz
KQogICAgIGZsb2F0IHNjcmF0Y2hCdWZmZXJbY2FwYWNpdHldOwogICAgIHNldExpc3REYXRhQnVm
ZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHNjcmF0Y2hCdWZmZXIpLCBjYXBhY2l0eSk7
CiAKLSAgICBlcnIgPSByaW5nQnVmZmVyKCkuZmV0Y2goJmJ1ZmZlckxpc3QoKSwgc2FtcGxlQ291
bnQsIDApOwotICAgIEVYUEVDVF9FUShlcnIsIENBUmluZ0J1ZmZlcjo6RXJyb3I6Ok9rKTsKKyAg
ICByaW5nQnVmZmVyKCkuZmV0Y2goJmJ1ZmZlckxpc3QoKSwgc2FtcGxlQ291bnQsIDApOwogICAg
IEVYUEVDVF9UUlVFKCFtZW1jbXAoc291cmNlQnVmZmVyLCBzY3JhdGNoQnVmZmVyLCBzYW1wbGVD
b3VudCAqIGRlc2NyaXB0aW9uKCkuc2FtcGxlV29yZFNpemUoKSkpOwogCiAgICAgLy8gLi4uIGFu
ZCB0aGUgc2Vjb25kIGhhbGYuCkBAIC0xMjIsOCArMTIxLDcgQEAgVEVTVF9GKENBUmluZ0J1ZmZl
clRlc3QsIEJhc2ljcykKICAgICBFWFBFQ1RfRVEoY2FwYWNpdHksIChpbnQpZW5kVGltZSk7CiAK
ICAgICBtZW1zZXQoc2NyYXRjaEJ1ZmZlciwgMCwgc2FtcGxlQ291bnQgKiBkZXNjcmlwdGlvbigp
LnNhbXBsZVdvcmRTaXplKCkpOwotICAgIGVyciA9IHJpbmdCdWZmZXIoKS5mZXRjaCgmYnVmZmVy
TGlzdCgpLCBzYW1wbGVDb3VudCwgMCk7Ci0gICAgRVhQRUNUX0VRKGVyciwgQ0FSaW5nQnVmZmVy
OjpFcnJvcjo6T2spOworICAgIHJpbmdCdWZmZXIoKS5mZXRjaCgmYnVmZmVyTGlzdCgpLCBzYW1w
bGVDb3VudCwgMCk7CiAgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChzb3VyY2VCdWZmZXIsIHNjcmF0
Y2hCdWZmZXIsIHNhbXBsZUNvdW50ICogZGVzY3JpcHRpb24oKS5zYW1wbGVXb3JkU2l6ZSgpKSk7
CiAKICAgICAvLyBGb3JjZSB0aGUgYnVmZmVyIHRvIHdyYXAgYXJvdW5kCkBAIC0xODUsMTggKzE4
MywxNCBAQCBwdWJsaWM6CiAKICAgICAgICAgbWVtc2V0KHJlYWRCdWZmZXIsIDAsIHNhbXBsZUNv
dW50ICogdGVzdC5kZXNjcmlwdGlvbigpLnNhbXBsZVdvcmRTaXplKCkpOwogICAgICAgICB0ZXN0
LnNldExpc3REYXRhQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHJlYWRCdWZmZXIp
LCBzYW1wbGVDb3VudCk7Ci0gICAgICAgIGVyciA9IHRlc3QucmluZ0J1ZmZlcigpLmZldGNoKCZ0
ZXN0LmJ1ZmZlckxpc3QoKSwgc2FtcGxlQ291bnQsIDAsIENBUmluZ0J1ZmZlcjo6RmV0Y2hNb2Rl
OjpNaXgpOwotICAgICAgICBFWFBFQ1RfRVEoZXJyLCBDQVJpbmdCdWZmZXI6OkVycm9yOjpPayk7
CisgICAgICAgIHRlc3QucmluZ0J1ZmZlcigpLmZldGNoKCZ0ZXN0LmJ1ZmZlckxpc3QoKSwgc2Ft
cGxlQ291bnQsIDAsIENBUmluZ0J1ZmZlcjo6RmV0Y2hNb2RlOjpNaXgpOwogCiAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgc2FtcGxlQ291bnQ7IGkrKykKICAgICAgICAgICAgIEVYUEVDVF9F
UShyZWFkQnVmZmVyW2ldLCByZWZlcmVuY2VCdWZmZXJbaV0pIDw8ICJSaW5nIGJ1ZmZlciB2YWx1
ZSBkaWZmZXJzIGF0IGluZGV4ICIgPDwgaTsKIAotICAgICAgICBlcnIgPSB0ZXN0LnJpbmdCdWZm
ZXIoKS5mZXRjaCgmdGVzdC5idWZmZXJMaXN0KCksIHNhbXBsZUNvdW50LCAwLCBDQVJpbmdCdWZm
ZXI6OkZldGNoTW9kZTo6TWl4KTsKLSAgICAgICAgRVhQRUNUX0VRKGVyciwgQ0FSaW5nQnVmZmVy
OjpFcnJvcjo6T2spOwotICAgICAgICBlcnIgPSB0ZXN0LnJpbmdCdWZmZXIoKS5mZXRjaCgmdGVz
dC5idWZmZXJMaXN0KCksIHNhbXBsZUNvdW50LCAwLCBDQVJpbmdCdWZmZXI6OkZldGNoTW9kZTo6
TWl4KTsKLSAgICAgICAgRVhQRUNUX0VRKGVyciwgQ0FSaW5nQnVmZmVyOjpFcnJvcjo6T2spOwot
ICAgICAgICBlcnIgPSB0ZXN0LnJpbmdCdWZmZXIoKS5mZXRjaCgmdGVzdC5idWZmZXJMaXN0KCks
IHNhbXBsZUNvdW50LCAwLCBDQVJpbmdCdWZmZXI6OkZldGNoTW9kZTo6TWl4KTsKLSAgICAgICAg
RVhQRUNUX0VRKGVyciwgQ0FSaW5nQnVmZmVyOjpFcnJvcjo6T2spOworICAgICAgICB0ZXN0LnJp
bmdCdWZmZXIoKS5mZXRjaCgmdGVzdC5idWZmZXJMaXN0KCksIHNhbXBsZUNvdW50LCAwLCBDQVJp
bmdCdWZmZXI6OkZldGNoTW9kZTo6TWl4KTsKKyAgICAgICAgdGVzdC5yaW5nQnVmZmVyKCkuZmV0
Y2goJnRlc3QuYnVmZmVyTGlzdCgpLCBzYW1wbGVDb3VudCwgMCwgQ0FSaW5nQnVmZmVyOjpGZXRj
aE1vZGU6Ok1peCk7CisgICAgICAgIHRlc3QucmluZ0J1ZmZlcigpLmZldGNoKCZ0ZXN0LmJ1ZmZl
ckxpc3QoKSwgc2FtcGxlQ291bnQsIDAsIENBUmluZ0J1ZmZlcjo6RmV0Y2hNb2RlOjpNaXgpOwog
CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2FtcGxlQ291bnQ7IGkrKykKICAgICAgICAg
ICAgIHJlZmVyZW5jZUJ1ZmZlcltpXSArPSBzb3VyY2VCdWZmZXJbaV0gKiAzOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>