<?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>109857</bug_id>
          
          <creation_ts>2013-02-14 13:44:41 -0800</creation_ts>
          <short_desc>Factor MediaSource methods out of MediaPlayer &amp; MediaPlayerPrivate and into a new MediaSourcePrivate interface.</short_desc>
          <delta_ts>2013-02-22 18:50:50 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>110371</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Aaron Colwell">acolwell</reporter>
          <assigned_to name="Aaron Colwell">acolwell</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>833375</commentid>
    <comment_count>0</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-14 13:44:41 -0800</bug_when>
    <thetext>Factor MediaSource methods out of MediaPlayer &amp; MediaPlayerPrivate and into a new MediaSourcePrivate interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833402</commentid>
    <comment_count>1</comment_count>
      <attachid>188422</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-14 14:09:51 -0800</bug_when>
    <thetext>Created attachment 188422
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833408</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-14 14:13:55 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834195</commentid>
    <comment_count>3</comment_count>
      <attachid>188604</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-15 11:13:35 -0800</bug_when>
    <thetext>Created attachment 188604
Moved WebMediaPlayerClient::getMediaSource() to WebMediaSource::getMediaSourceForURL().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834203</commentid>
    <comment_count>4</comment_count>
      <attachid>188604</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-15 11:21:28 -0800</bug_when>
    <thetext>Comment on attachment 188604
Moved WebMediaPlayerClient::getMediaSource() to WebMediaSource::getMediaSourceForURL().

Attachment 188604 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16525056</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834204</commentid>
    <comment_count>5</comment_count>
      <attachid>188604</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-15 11:21:42 -0800</bug_when>
    <thetext>Comment on attachment 188604
Moved WebMediaPlayerClient::getMediaSource() to WebMediaSource::getMediaSourceForURL().

Attachment 188604 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16598151</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834207</commentid>
    <comment_count>6</comment_count>
      <attachid>188605</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-15 11:26:37 -0800</bug_when>
    <thetext>Created attachment 188605
Add missing file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835512</commentid>
    <comment_count>7</comment_count>
      <attachid>188894</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-18 08:39:49 -0800</bug_when>
    <thetext>Created attachment 188894
Alternate implementation that makes MediaSource load more explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835517</commentid>
    <comment_count>8</comment_count>
      <attachid>188894</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-18 08:44:59 -0800</bug_when>
    <thetext>Comment on attachment 188894
Alternate implementation that makes MediaSource load more explicit.

Attachment 188894 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16603938</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835518</commentid>
    <comment_count>9</comment_count>
      <attachid>188894</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-18 08:45:13 -0800</bug_when>
    <thetext>Comment on attachment 188894
Alternate implementation that makes MediaSource load more explicit.

Attachment 188894 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16626089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835526</commentid>
    <comment_count>10</comment_count>
      <attachid>188897</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-18 08:53:04 -0800</bug_when>
    <thetext>Created attachment 188897
Alternate implementation that makes MediaSource load more explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835528</commentid>
    <comment_count>11</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-18 08:54:19 -0800</bug_when>
    <thetext>I&apos;ve added an alternate form of this change that makes the MediaSource load more explicit. This feels a little better than the implicit coordination that HTMLMediaElement &amp; WebMediaSource do through the MediaSourceRegistry in the original patch. I&apos;m looking for some guidance on which path is preferred.

abarth@ or fishd@ : Could you please provide feedback on the Chromium specific changes.

eric.carlson@ : Could you please provide feedback on the WebCore side of things.

Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835599</commentid>
    <comment_count>12</comment_count>
      <attachid>188897</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-02-18 10:18:12 -0800</bug_when>
    <thetext>Comment on attachment 188897
Alternate implementation that makes MediaSource load more explicit.

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:1053
&gt; +    } else if (!m_player-&gt;load(url, contentType, keySystem))
&gt; +        mediaLoadingFailed(MediaPlayer::FormatError);
&gt; +#else
&gt;      if (!m_player-&gt;load(url, contentType, keySystem))
&gt;          mediaLoadingFailed(MediaPlayer::FormatError);
&gt; +#endif

This could be cleaned up so as not to duplicate code between the #if and #else.  Something like:

#if ....
    } else
#endif
    if (!m_player-&gt;load(url, contentType, keySystem))
        mediaLoadingFailed(MediaPlayer::FormatError);

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4478
&gt; -    if (m_mediaSource)
&gt; -        m_mediaSource-&gt;setMediaPlayer(m_player.get());
&gt; +    if (m_mediaSource &amp;&amp; m_mediaSource-&gt;readyState() != MediaSource::closedKeyword())
&gt; +        m_mediaSource-&gt;setReadyState(MediaSource::closedKeyword());

MediaSource is already checking whether the passed in state == the current state.  Is this strictly necessary here?

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:445
&gt; +        else
&gt; +            m_private-&gt;load(m_url.string());
&gt; +#else
&gt;          m_private-&gt;load(m_url.string());

This could also be cleaned up to avoid duplicating code.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:41
&gt; +#if ENABLE(MEDIA_SOURCE)
&gt; +#include &quot;MediaSource.h&quot;
&gt; +#endif

Why does this need to be included (rather than forward declared)?

&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:56
&gt; +// TODO(acolwell): Remove this class once the Chromium code starts calling
&gt; +// WebMediaSource::getMediaSourceForURL() and opening the WebMediaSource object
&gt; +// itself.

Nit: ideally TODO should be FIXME with an associated bug number / link.

&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:302
&gt; +// TODO(acolwell): Remove this and sourceURL() once the Chromium code starts
&gt; +// calling WebMediaSource::getMediaSourceForURL() and opening the WebMediaSource
&gt; +// itself.

Ditto.

&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:456
&gt; +            // TODO(acolwell): Replace with m_webMediaPlayer-&gt;load(new WebMediaSourceImpl(m_mediaSource), corsMode)
&gt; +            // once the Chromium code has access to the WebMediaSource declaration.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836766</commentid>
    <comment_count>13</comment_count>
      <attachid>188897</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-19 14:10:53 -0800</bug_when>
    <thetext>Comment on attachment 188897
Alternate implementation that makes MediaSource load more explicit.

Attachment 188897 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16636043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837696</commentid>
    <comment_count>14</comment_count>
      <attachid>188897</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-20 13:25:55 -0800</bug_when>
    <thetext>Comment on attachment 188897
Alternate implementation that makes MediaSource load more explicit.

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

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:1053
&gt;&gt; +#endif
&gt; 
&gt; This could be cleaned up so as not to duplicate code between the #if and #else.  Something like:
&gt; 
&gt; #if ....
&gt;     } else
&gt; #endif
&gt;     if (!m_player-&gt;load(url, contentType, keySystem))
&gt;         mediaLoadingFailed(MediaPlayer::FormatError);

Done. I was wary of introducing an #if construct like this because I figured the dangling else would be frowned upon. :)

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:4478
&gt;&gt; +        m_mediaSource-&gt;setReadyState(MediaSource::closedKeyword());
&gt; 
&gt; MediaSource is already checking whether the passed in state == the current state.  Is this strictly necessary here?

Nope. Check removed.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:445
&gt;&gt;          m_private-&gt;load(m_url.string());
&gt; 
&gt; This could also be cleaned up to avoid duplicating code.

Done.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:41
&gt;&gt; +#endif
&gt; 
&gt; Why does this need to be included (rather than forward declared)?

It doesn&apos;t. I had it here because of m_mediaSource. I&apos;ve changed the code to forward declare in this file and then #include &quot;MediaSource.h&quot; in MediaPlayer.cpp where the include is actually needed.

&gt;&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:56
&gt;&gt; +// itself.
&gt; 
&gt; Nit: ideally TODO should be FIXME with an associated bug number / link.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:302
&gt;&gt; +// itself.
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:456
&gt;&gt; +            // once the Chromium code has access to the WebMediaSource declaration.
&gt; 
&gt; Ditto.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837726</commentid>
    <comment_count>15</comment_count>
      <attachid>189370</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-20 13:57:35 -0800</bug_when>
    <thetext>Created attachment 189370
Addressing CR comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838510</commentid>
    <comment_count>16</comment_count>
      <attachid>189370</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-21 09:32:14 -0800</bug_when>
    <thetext>Comment on attachment 189370
Addressing CR comments

Attachment 189370 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16695145</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838624</commentid>
    <comment_count>17</comment_count>
      <attachid>189370</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-21 11:22:32 -0800</bug_when>
    <thetext>Comment on attachment 189370
Addressing CR comments

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

&gt; Source/WebKit/chromium/public/WebMediaSource.h:43
&gt; +    WEBKIT_EXPORT static WebMediaSource* getMediaSourceForURL(const WebURL&amp;);

getMediaSourceForURL -&gt; create

We use the word &quot;create&quot; in functions that allocate memory so that their callers remember to delete them.

&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:59
&gt; +    WebMediaSourceClientImpl(WebMediaPlayer*);

please use the &quot;explicit&quot; keyword for one-argument constructors.

&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:74
&gt; +    WebMediaPlayer* m_webMediaPlayer;

What&apos;s the relationship between the lifetime of this class and m_webMediaPlayer?

&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:309
&gt; +        mediaSource-&gt;open(new WebMediaSourceClientImpl(m_webMediaPlayer.get()));

This &quot;naked new&quot; is concerning.  Where is the object deleted?

&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:318
&gt; +        return KURL(ParsedURLString, m_url);

Should we store m_url as a KURL instead?

&gt; Source/WebKit/chromium/src/WebMediaSource.cpp:47
&gt; +        return new WebMediaSourceImpl(mediaSource);

mediaSource.release()

&gt; Source/WebKit/chromium/src/WebMediaSourceImpl.cpp:43
&gt; +    MediaSourcePrivateImpl(PassOwnPtr&lt;WebMediaSourceClient&gt;);

Please use the &quot;explicit&quot; keyword for one-argument constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838674</commentid>
    <comment_count>18</comment_count>
      <attachid>189370</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-21 12:11:39 -0800</bug_when>
    <thetext>Comment on attachment 189370
Addressing CR comments

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

&gt;&gt; Source/WebKit/chromium/public/WebMediaSource.h:43
&gt;&gt; +    WEBKIT_EXPORT static WebMediaSource* getMediaSourceForURL(const WebURL&amp;);
&gt; 
&gt; getMediaSourceForURL -&gt; create
&gt; 
&gt; We use the word &quot;create&quot; in functions that allocate memory so that their callers remember to delete them.

Oops. This was left over from the original version. Removed.

&gt;&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:59
&gt;&gt; +    WebMediaSourceClientImpl(WebMediaPlayer*);
&gt; 
&gt; please use the &quot;explicit&quot; keyword for one-argument constructors.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:74
&gt;&gt; +    WebMediaPlayer* m_webMediaPlayer;
&gt; 
&gt; What&apos;s the relationship between the lifetime of this class and m_webMediaPlayer?

This class has a shorter lifetime than WebMediaPlayer. It isn&apos;t clear from this context, but HTMLMediaElement always makes sure the MediaSource is closed before it destroys its MediaPlayer &amp; WebMediaPlayer instances. The MediaSource destroys its instance of this class when it gets closed.

&gt;&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:309
&gt;&gt; +        mediaSource-&gt;open(new WebMediaSourceClientImpl(m_webMediaPlayer.get()));
&gt; 
&gt; This &quot;naked new&quot; is concerning.  Where is the object deleted?

The mediaSource object takes ownership of this object in the open() call. It wasn&apos;t clear to me whether PassOwnPtr&lt;&gt; could be used in WebXXX interfaces so I just pass the raw pointer here. If you look in WebMediaSourceImpl::open() you will see that this pointer is immetiately adopted into an OwnPtr&lt;WebMediaSourceClient&gt; and passed to MediaSourcePrivateImpl.

&gt;&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:318
&gt;&gt; +        return KURL(ParsedURLString, m_url);
&gt; 
&gt; Should we store m_url as a KURL instead?

Sure. Done.

&gt;&gt; Source/WebKit/chromium/src/WebMediaSource.cpp:47
&gt;&gt; +        return new WebMediaSourceImpl(mediaSource);
&gt; 
&gt; mediaSource.release()

Oops. This method left over from the old implementation. Code removed.

&gt;&gt; Source/WebKit/chromium/src/WebMediaSourceImpl.cpp:43
&gt;&gt; +    MediaSourcePrivateImpl(PassOwnPtr&lt;WebMediaSourceClient&gt;);
&gt; 
&gt; Please use the &quot;explicit&quot; keyword for one-argument constructors.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838677</commentid>
    <comment_count>19</comment_count>
      <attachid>189572</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-21 12:12:44 -0800</bug_when>
    <thetext>Created attachment 189572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839625</commentid>
    <comment_count>20</comment_count>
      <attachid>189572</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-22 08:54:04 -0800</bug_when>
    <thetext>Comment on attachment 189572
Patch

Attachment 189572 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16694996</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839770</commentid>
    <comment_count>21</comment_count>
      <attachid>189572</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-22 11:34:05 -0800</bug_when>
    <thetext>Comment on attachment 189572
Patch

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

I don&apos;t feel super confident in this review, but this patch seems plausible to me.  It looks like the apple-win bubble is red, which might indicate an issue that we should resolve before landing this patch.

&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:54
&gt; +// FIXME(acolwell): Remove this class once the Chromium code implements its own

(acolwell) &lt;--- We usually skip the name annotations in WebKit.

&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:309
&gt; +        mediaSource-&gt;open(new WebMediaSourceClientImpl(m_webMediaPlayer.get()));

It&apos;s ok that mediaSource will get deleted immediately after this line?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839772</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-22 11:35:03 -0800</bug_when>
    <thetext>10&gt;..\platform\graphics\win\MediaPlayerPrivateQuickTimeVisualContext.cpp(154) : error C2259: &apos;WebCore::MediaPlayerPrivateQuickTimeVisualContext&apos; : cannot instantiate abstract class
10&gt;        due to following members:
10&gt;        &apos;void WebCore::MediaPlayerPrivateInterface::load(const WTF::String &amp;,WTF::PassRefPtr&lt;T&gt;)&apos; : is abstract
10&gt;        with
10&gt;        [
10&gt;            T=WebCore::MediaSource
10&gt;        ]
10&gt;        c:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\graphics\MediaPlayerPrivate.h(48) : see declaration of &apos;WebCore::MediaPlayerPrivateInterface::load&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839825</commentid>
    <comment_count>23</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-22 12:43:58 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; 10&gt;..\platform\graphics\win\MediaPlayerPrivateQuickTimeVisualContext.cpp(154) : error C2259: &apos;WebCore::MediaPlayerPrivateQuickTimeVisualContext&apos; : cannot instantiate abstract class
&gt; 10&gt;        due to following members:
&gt; 10&gt;        &apos;void WebCore::MediaPlayerPrivateInterface::load(const WTF::String &amp;,WTF::PassRefPtr&lt;T&gt;)&apos; : is abstract
&gt; 10&gt;        with
&gt; 10&gt;        [
&gt; 10&gt;            T=WebCore::MediaSource
&gt; 10&gt;        ]
&gt; 10&gt;        c:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\graphics\MediaPlayerPrivate.h(48) : see declaration of &apos;WebCore::MediaPlayerPrivateInterface::load&apos;

Thanks for the review. I&apos;m trying to address the Windows issue with Bug 110494. Is there a way to force the win-ews bot to run quicker. It took almost a whole day to find out the patch failed to apply on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839831</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-22 12:50:54 -0800</bug_when>
    <thetext>&gt; Is there a way to force the win-ews bot to run quicker.

There isn&apos;t.

&gt; It took almost a whole day to find out the patch failed to apply on Windows.

You can either ask someone from apple to try the build for you, or you can make your best effort.  You shouldn&apos;t let the EWS bots slow you down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839894</commentid>
    <comment_count>25</comment_count>
      <attachid>189816</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-22 13:46:36 -0800</bug_when>
    <thetext>Created attachment 189816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839902</commentid>
    <comment_count>26</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-22 13:51:22 -0800</bug_when>
    <thetext>Please take another look. I was working on a follow up patch for this one and realized that adding SourceBuffer functionality would be much easier if the SourceBuffer specific methods were in their own SourceBufferPrivate interface. Without this MediaSourcePrivate would have to be modified everytime we wanted to add SourceBuffer functionality which is a similar problem to what was happening with MediaPlayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839908</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-22 13:54:28 -0800</bug_when>
    <thetext>62.31 KB -&gt; 87.18 KB

Can we make this second change in a separate patch on a separate bug?  This patch is getting too big to review effectively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839914</commentid>
    <comment_count>28</comment_count>
      <attachid>189572</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-22 14:01:03 -0800</bug_when>
    <thetext>Comment on attachment 189572
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:54
&gt;&gt; +// FIXME(acolwell): Remove this class once the Chromium code implements its own
&gt; 
&gt; (acolwell) &lt;--- We usually skip the name annotations in WebKit.

Done

&gt;&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:309
&gt;&gt; +        mediaSource-&gt;open(new WebMediaSourceClientImpl(m_webMediaPlayer.get()));
&gt; 
&gt; It&apos;s ok that mediaSource will get deleted immediately after this line?

Yes. The WebMediaSource only needs to stay alive long enough to be opened. open() is simply used to set the MediaSourcePrivate interface on the MediaSource object. For now WebMediaSource isn&apos;t used for anything other than that so it&apos;s ok if it gets destroyed here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839920</commentid>
    <comment_count>29</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-22 14:02:25 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; 62.31 KB -&gt; 87.18 KB
&gt; 
&gt; Can we make this second change in a separate patch on a separate bug?  This patch is getting too big to review effectively.

Sure. Sorry about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839929</commentid>
    <comment_count>30</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-22 14:04:55 -0800</bug_when>
    <thetext>Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839999</commentid>
    <comment_count>31</comment_count>
      <attachid>189833</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-02-22 14:40:07 -0800</bug_when>
    <thetext>Created attachment 189833
Removed SourceBufferPrivate changes and removed acolwell from FIXMEs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840002</commentid>
    <comment_count>32</comment_count>
      <attachid>189833</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-22 14:41:09 -0800</bug_when>
    <thetext>Comment on attachment 189833
Removed SourceBufferPrivate changes and removed acolwell from FIXMEs

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840241</commentid>
    <comment_count>33</comment_count>
      <attachid>189833</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-22 18:50:45 -0800</bug_when>
    <thetext>Comment on attachment 189833
Removed SourceBufferPrivate changes and removed acolwell from FIXMEs

Clearing flags on attachment: 189833

Committed r143826: &lt;http://trac.webkit.org/changeset/143826&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840242</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-22 18:50:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188422</attachid>
            <date>2013-02-14 14:09:51 -0800</date>
            <delta_ts>2013-02-15 11:13:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109857-20130214140618.patch</filename>
            <type>text/plain</type>
            <size>57668</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyOTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmI4ZmZjMTkzZGQxYjIw
OWMxYTE2Y2ExNDFkMmU2NmNjMTE2MTZmZS4uNzU5NDU0ZTEzNDk2ZTAyZmNkMWY5MWY0OWNiZGUz
YTc1MzYxMjdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAyLTE0ICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZhY3RvciBNZWRp
YVNvdXJjZSBtZXRob2RzIG91dCBvZiBNZWRpYVBsYXllciAmIE1lZGlhUGxheWVyUHJpdmF0ZSBh
bmQgaW50byBhIG5ldyBNZWRpYVNvdXJjZVByaXZhdGUgaW50ZXJmYWNlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODU3QQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBzaW1wbGUgcmVm
YWN0b3IgdGhhdCBtb3ZlcyBNZWRpYVNvdXJjZSByZWxhdGVkIG1ldGhvZHMgb3V0IG9mIE1lZGlh
UGxheWVyICYgTWVkaWFQbGF5ZXJQcml2YXRlCisgICAgICAgIHNvIHRoYXQgdGhlIE1lZGlhU291
cmNlIGltcGxlbWVudGF0aW9uIGNhbiBiZSB1cGRhdGVkIHdpdGhvdXQgZnVydGhlciBwb2xsdXRp
bmcgdGhlc2UgaW50ZXJmYWNlcy4KKyAgICAgICAgTWVkaWFTb3VyY2VQcml2YXRlIGlzIHRoZSBu
ZXcgV2ViQ29yZSBpbnRlcmZhY2UgdGhhdCBwb3J0cyBtdXN0IGltcGxlbWVudCB0byBzdXBwb3J0
IHRoZSBNZWRpYVNvdXJjZSBBUEkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyB1c2VyIHZp
c2libGUgYmVoYXZpb3IgaGFzIGNoYW5nZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpNZWRp
YVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6ZHVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTb3VyY2U6OnJlbW92ZVNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZTo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6ZW5k
T2ZTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTb3VyY2U6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzZXRU
aW1lc3RhbXBPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldFByaXZh
dGVBbmRPcGVuKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
b3VyY2U6Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJj
ZTo6c3RvcCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oOgor
ICAgICAgICAoTWVkaWFTb3VyY2UpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBsYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIChIVE1MTWVkaWFFbGVt
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoTWVkaWFQbGF5ZXJDbGllbnQpOgorICAgICAgICAoTWVkaWFQbGF5ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAg
ICAoTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKE1lZGlhU291cmNlUHJpdmF0ZSk6IENvbnRhaW5zIHRoZSBNZWRpYVNvdXJjZSBtZXRo
b2RzIGV4dHJhY3RlZCBmcm9tIE1lZGlhUGxheWVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
b3VyY2VQcml2YXRlOjpNZWRpYVNvdXJjZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTb3VyY2VQcml2YXRlOjp+TWVkaWFTb3VyY2VQcml2YXRlKToKKwogMjAxMy0wMi0xNCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgQWRk
IGFkZEhUVFBIZWFkZXJGaWVsZCgpIG1ldGhvZCB0byBSZXNvdXJjZVJlc3BvbnNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGNkOWJjZGM2MGUxYTA1ZGQ1N2YzY2FiMzkzOTVmYzdlNDE5
MDBjZmMuLmI2Y2IzNjk2YzkyMGVhNjM0MjA4MDRmNTFlZTEzZTM1NWE3ODBmYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMTMtMDItMTQgIEFhcm9uIENv
bHdlbGwgIDxhY29sd2VsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRmFjdG9yIE1lZGlhU291
cmNlIG1ldGhvZHMgb3V0IG9mIE1lZGlhUGxheWVyICYgTWVkaWFQbGF5ZXJQcml2YXRlIGFuZCBp
bnRvIGEgbmV3IE1lZGlhU291cmNlUHJpdmF0ZSBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk4NTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJNZWRpYVNvdXJjZSBhbmQgV2ViTWVk
aWFTb3VyY2UgY2xpZW50IHdlcmUgY3JlYXRlZCB0byByZXBsYWNlIHRoZSBNZWRpYVNvdXJjZSBt
ZXRob2RzIGluIFdlYk1lZGlhUGxheWVyIGFuZAorICAgICAgICBXZWJNZWRpYVBsYXllckNsaWVu
dC4gVGhpcyBhbGxvd3MgdGhlIE1lZGlhU291cmNlIGltcGxlbWVudGF0aW9uIHRvIGJlIHVwZGF0
ZWQgd2l0aG91dCBmdXJ0aGVyIHBvbGx1dGluZyB0aGUKKyAgICAgICAgbWVkaWEgcGxheWVyIGlu
dGVyZmFjZXMuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJN
ZWRpYVBsYXllckNsaWVudC5oOiBBZGRlZCBnZXRNZWRpYVNvdXJjZSgpIHRvIGFsbG93IENocm9t
aXVtIGNvZGUgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGlzIGEgCisgICAgICAgICAgICBXZWJNZWRp
YVNvdXJjZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBVUkwgaXQgaXMgdHJ5aW5nIHRvIGxv
YWQuIElmIHNvLCB0aGVuIHRoZSBDaHJvbWl1bSBjb2RlIGlzIGV4cGVjdGVkCisgICAgICAgICAg
ICB0byBjcmVhdGUgYSBXZWJNZWRpYVNvdXJjZUNsaWVudCBhbmQgcGFzcyBpdCB0byBvcGVuKCkg
b24gdGhlIFdlYk1lZGlhU291cmNlIG9iamVjdC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogcHVibGljL1dlYk1lZGlhU291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYk1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2U6
On5XZWJNZWRpYVNvdXJjZSk6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhU291cmNlQ2xpZW50
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhU291cmNlQ2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnQ6On5XZWJNZWRpYVNv
dXJjZUNsaWVudCk6CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgorICAg
ICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbCk6IFRlbXBvcmFyeSBXZWJNZWRp
YVNvdXJjZUNsaWVudCBpbXBsZW1lbnRhdGlvbiB0byBrZWVwIHRoaW5ncyB3b3JraW5nIHVudGls
IENocm9taXVtIGNoYW5nZXMgbGFuZC4KKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VD
bGllbnRJbXBsOjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6On5XZWJNZWRpYVNvdXJjZUNsaWVudEltcGwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmFkZElkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpyZW1vdmVJZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6YnVmZmVyZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmFwcGVuZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6YWJvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVNvdXJjZUNsaWVudEltcGw6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFTb3VyY2VDbGllbnRJbXBsOjpzZXREdXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk1l
ZGlhU291cmNlQ2xpZW50SW1wbDo6ZW5kT2ZTdHJlYW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVNvdXJjZUNsaWVudEltcGw6OnNldFRpbWVzdGFtcE9mZnNldCk6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Z2V0TWVkaWFTb3VyY2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZU9wZW5lZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlVVJMKToKKyAgICAgICAg
KiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJNZWRpYVBsYXll
ckNsaWVudEltcGwpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVNvdXJjZUltcGwuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChNZWRpYVNvdXJjZVByaXZhdGVJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6fk1lZGlhU291cmNlUHJp
dmF0ZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpNZWRp
YVNvdXJjZVByaXZhdGVJbXBsKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRl
SW1wbDo6YWRkSWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpy
ZW1vdmVJZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmJ1ZmZl
cmVkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6YXBwZW5kKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6YWJvcnQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpkdXJhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6ZW5kT2ZTdHJlYW0pOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpzZXRUaW1lc3RhbXBPZmZzZXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUltcGw6OldlYk1lZGlhU291cmNlSW1wbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlSW1wbDo6fldlYk1lZGlhU291cmNlSW1wbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlSW1wbDo6b3Blbik6CisgICAgICAgICogc3Jj
L1dlYk1lZGlhU291cmNlSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJNZWRpYVNvdXJjZUltcGwpOgorCiAyMDEzLTAyLTE0ICBEaXJrIFByYW5rZSAgPGRwcmFu
a2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGNocm9taXVtIHJvbGwgMTgy
MTUwIC0+IDE4MjQ0OApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcAppbmRleCBmZDY0Mjk1ZDU5ZDdhZWViNzY2OTU4MTg1ZGVkYjFjYThm
Mjc3NjdhLi5lNmJmZTI0MmFkMmQzMjQ2NzMxYTcwNjQ4MGE4ZDZiMTBlYzViZDdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApA
QCAtNTAsNyArNTAsNiBAQCBQYXNzUmVmUHRyPE1lZGlhU291cmNlPiBNZWRpYVNvdXJjZTo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiBNZWRpYVNvdXJjZTo6TWVkaWFT
b3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9i
amVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9yZWFkeVN0YXRlKGNsb3NlZEtleXdvcmQoKSkK
LSAgICAsIG1fcGxheWVyKDApCiAgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShHZW5lcmljRXZlbnRR
dWV1ZTo6Y3JlYXRlKHRoaXMpKQogewogICAgIG1fc291cmNlQnVmZmVycyA9IFNvdXJjZUJ1ZmZl
ckxpc3Q6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fYXN5bmNFdmVudFF1ZXVl
LmdldCgpKTsKQEAgLTg4LDcgKzg3LDcgQEAgU291cmNlQnVmZmVyTGlzdCogTWVkaWFTb3VyY2U6
OmFjdGl2ZVNvdXJjZUJ1ZmZlcnMoKQogCiBkb3VibGUgTWVkaWFTb3VyY2U6OmR1cmF0aW9uKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSA/IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKSA6IG1fcGxheWVyLT5kdXJhdGlv
bigpOworICAgIHJldHVybiBtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpID8gc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpIDogbV9wcml2YXRlLT5kdXJhdGlvbigp
OwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24sIEV4
Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTAxLDcgKzEwMCw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnNl
dER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9wbGF5
ZXItPnNvdXJjZVNldER1cmF0aW9uKGR1cmF0aW9uKTsKKyAgICBtX3ByaXZhdGUtPnNldER1cmF0
aW9uKGR1cmF0aW9uKTsKIH0KIAogU291cmNlQnVmZmVyKiBNZWRpYVNvdXJjZTo6YWRkU291cmNl
QnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMjYsNyAr
MTI1LDcgQEAgU291cmNlQnVmZmVyKiBNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKGNvbnN0
IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMKIAogICAgIC8vIDQuIElmIHRoZSByZWFk
eVN0YXRlIGF0dHJpYnV0ZSBpcyBub3QgaW4gdGhlICJvcGVuIiBzdGF0ZSB0aGVuIHRocm93IGFu
CiAgICAgLy8gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVw
cy4KLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fcmVhZHlTdGF0ZSAhPSBvcGVuS2V5d29yZCgpKSB7
CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFkeVN0YXRlICE9IG9wZW5LZXl3b3JkKCkpIHsK
ICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQpAQCAtMTQwLDIwICsxMzksMjAgQEAgU291cmNlQnVmZmVyKiBNZWRpYVNvdXJjZTo6YWRkU291
cmNlQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMKIAogICAgIFJl
ZlB0cjxTb3VyY2VCdWZmZXI+IGJ1ZmZlciA9IFNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKGlkLCB0aGlz
KTsKIAotICAgIHN3aXRjaCAobV9wbGF5ZXItPnNvdXJjZUFkZElkKGJ1ZmZlci0+aWQoKSwgY29u
dGVudFR5cGUudHlwZSgpLCBjb2RlY3MpKSB7Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6T2s6Cisg
ICAgc3dpdGNoIChtX3ByaXZhdGUtPmFkZElkKGJ1ZmZlci0+aWQoKSwgY29udGVudFR5cGUudHlw
ZSgpLCBjb2RlY3MpKSB7CisgICAgY2FzZSBNZWRpYVNvdXJjZVByaXZhdGU6Ok9rOgogICAgICAg
ICAvLyA2LiBBZGQgdGhlIG5ldyBvYmplY3QgdG8gc291cmNlQnVmZmVycyBhbmQgZmlyZSBhIGFk
ZHNvdXJjZWJ1ZmZlciBvbiB0aGF0IG9iamVjdC4KICAgICAgICAgbV9zb3VyY2VCdWZmZXJzLT5h
ZGQoYnVmZmVyKTsKICAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5hZGQoYnVmZmVyKTsK
ICAgICAgICAgLy8gNy4gUmV0dXJuIHRoZSBuZXcgb2JqZWN0IHRvIHRoZSBjYWxsZXIuCiAgICAg
ICAgIHJldHVybiBidWZmZXIuZ2V0KCk7Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6Tm90U3VwcG9y
dGVkOgorICAgIGNhc2UgTWVkaWFTb3VyY2VQcml2YXRlOjpOb3RTdXBwb3J0ZWQ6CiAgICAgICAg
IC8vIDIgKGNvbnQpLiBJZiB0eXBlIGNvbnRhaW5zIGEgTUlNRSB0eXBlIC4uLiB0aGF0IGlzIG5v
dCBzdXBwb3J0ZWQgd2l0aCB0aGUgdHlwZXMgCiAgICAgICAgIC8vIHNwZWNpZmllZCBmb3IgdGhl
IG90aGVyIFNvdXJjZUJ1ZmZlciBvYmplY3RzIGluIHNvdXJjZUJ1ZmZlcnMsIHRoZW4gdGhyb3cK
ICAgICAgICAgLy8gYSBOT1RfU1VQUE9SVEVEX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNl
IHN0ZXBzLgogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm4g
MDsKLSAgICBjYXNlIE1lZGlhUGxheWVyOjpSZWFjaGVkSWRMaW1pdDoKKyAgICBjYXNlIE1lZGlh
U291cmNlUHJpdmF0ZTo6UmVhY2hlZElkTGltaXQ6CiAgICAgICAgIC8vIDMgKGNvbnQpLiBJZiB0
aGUgdXNlciBhZ2VudCBjYW4ndCBoYW5kbGUgYW55IG1vcmUgU291cmNlQnVmZmVyIG9iamVjdHMg
dGhlbiB0aHJvdyAKICAgICAgICAgLy8gYSBRVU9UQV9FWENFRURFRF9FUlIgZXhjZXB0aW9uIGFu
ZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgZWMgPSBRVU9UQV9FWENFRURFRF9FUlI7CkBA
IC0xNzYsNyArMTc1LDcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKFNv
dXJjZUJ1ZmZlciogYnVmZmVyLCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAgIC8vIDIuIElmIHNv
dXJjZUJ1ZmZlcnMgaXMgZW1wdHkgdGhlbiB0aHJvdyBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNl
cHRpb24gYW5kCiAgICAgLy8gYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFtX3BsYXllciB8
fCAhbV9zb3VyY2VCdWZmZXJzLT5sZW5ndGgoKSkgeworICAgIGlmICghbV9wcml2YXRlIHx8ICFt
X3NvdXJjZUJ1ZmZlcnMtPmxlbmd0aCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xOTIsNyArMTkxLDcgQEAgdm9pZCBNZWRp
YVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlciogYnVmZmVyLCBFeGNlcHRp
b25Db2RlJiBlYykKIAogICAgIC8vIDcuIERlc3Ryb3kgYWxsIHJlc291cmNlcyBmb3Igc291cmNl
QnVmZmVyLgogICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy0+cmVtb3ZlKGJ1ZmZlcik7Ci0gICAg
bV9wbGF5ZXItPnNvdXJjZVJlbW92ZUlkKGJ1ZmZlci0+aWQoKSk7CisgICAgbV9wcml2YXRlLT5y
ZW1vdmVJZChidWZmZXItPmlkKCkpOwogCiAgICAgLy8gNC4gUmVtb3ZlIHRyYWNrIGluZm9ybWF0
aW9uIGZyb20gYXVkaW9UcmFja3MsIHZpZGVvVHJhY2tzLCBhbmQgdGV4dFRyYWNrcyBmb3IgYWxs
IHRyYWNrcyAKICAgICAvLyBhc3NvY2lhdGVkIHdpdGggc291cmNlQnVmZmVyIGFuZCBmaXJlIGEg
c2ltcGxlIGV2ZW50IG5hbWVkIGNoYW5nZSBvbiB0aGUgbW9kaWZpZWQgbGlzdHMuCkBAIC0yMjAs
NyArMjE5LDcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShjb25zdCBTdHJpbmcm
IHN0YXRlKQogICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAg
ICAgIG1fc291cmNlQnVmZmVycy0+Y2xlYXIoKTsKICAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZm
ZXJzLT5jbGVhcigpOwotICAgICAgICBtX3BsYXllciA9IDA7CisgICAgICAgIG1fcHJpdmF0ZS5j
bGVhcigpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRzb3VyY2Vj
bG9zZUV2ZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0MSwxOSArMjQwLDE5IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OmVuZE9mU3RyZWFtKGNvbnN0IFN0cmluZyYgZXJyb3IsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIC8vIDMuMSBodHRwOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRp
YS9yYXctZmlsZS90aXAvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI2RvbS1lbmRvZnN0
cmVhbQogICAgIC8vIDEuIElmIHRoZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSBpcyBub3QgaW4gdGhl
ICJvcGVuIiBzdGF0ZSB0aGVuIHRocm93IGFuCiAgICAgLy8gSU5WQUxJRF9TVEFURV9FUlIgZXhj
ZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fcmVh
ZHlTdGF0ZSAhPSBvcGVuS2V5d29yZCgpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFk
eVN0YXRlICE9IG9wZW5LZXl3b3JkKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VS
UjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE1lZGlhUGxheWVyOjpFbmRPZlN0cmVh
bVN0YXR1cyBlb3NTdGF0dXMgPSBNZWRpYVBsYXllcjo6RW9zTm9FcnJvcjsKKyAgICBNZWRpYVNv
dXJjZVByaXZhdGU6OkVuZE9mU3RyZWFtU3RhdHVzIGVvc1N0YXR1cyA9IE1lZGlhU291cmNlUHJp
dmF0ZTo6RW9zTm9FcnJvcjsKIAogICAgIGlmIChlcnJvci5pc051bGwoKSB8fCBlcnJvci5pc0Vt
cHR5KCkpCi0gICAgICAgIGVvc1N0YXR1cyA9IE1lZGlhUGxheWVyOjpFb3NOb0Vycm9yOworICAg
ICAgICBlb3NTdGF0dXMgPSBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05vRXJyb3I7CiAgICAgZWxz
ZSBpZiAoZXJyb3IgPT0gIm5ldHdvcmsiKQotICAgICAgICBlb3NTdGF0dXMgPSBNZWRpYVBsYXll
cjo6RW9zTmV0d29ya0Vycm9yOworICAgICAgICBlb3NTdGF0dXMgPSBNZWRpYVNvdXJjZVByaXZh
dGU6OkVvc05ldHdvcmtFcnJvcjsKICAgICBlbHNlIGlmIChlcnJvciA9PSAiZGVjb2RlIikKLSAg
ICAgICAgZW9zU3RhdHVzID0gTWVkaWFQbGF5ZXI6OkVvc0RlY29kZUVycm9yOworICAgICAgICBl
b3NTdGF0dXMgPSBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc0RlY29kZUVycm9yOwogICAgIGVsc2Ug
ewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAt
MjYxLDE3ICsyNjAsMTcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6ZW5kT2ZTdHJlYW0oY29uc3QgU3Ry
aW5nJiBlcnJvciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyAyLiBDaGFuZ2UgdGhlIHJl
YWR5U3RhdGUgYXR0cmlidXRlIHZhbHVlIHRvICJlbmRlZCIuCiAgICAgc2V0UmVhZHlTdGF0ZShl
bmRlZEtleXdvcmQoKSk7Ci0gICAgbV9wbGF5ZXItPnNvdXJjZUVuZE9mU3RyZWFtKGVvc1N0YXR1
cyk7CisgICAgbV9wcml2YXRlLT5lbmRPZlN0cmVhbShlb3NTdGF0dXMpOwogfQogCiBQYXNzUmVm
UHRyPFRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZChjb25zdCBTdHJpbmcmIGlkLCBF
eGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fcmVhZHlT
dGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZSB8fCBtX3JlYWR5
U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBtX3BsYXllci0+c291
cmNlQnVmZmVyZWQoaWQpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmJ1ZmZlcmVkKGlkKTsKIH0K
IAogdm9pZCBNZWRpYVNvdXJjZTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8
VWludDhBcnJheT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yODEsNyArMjgwLDcgQEAg
dm9pZCBNZWRpYVNvdXJjZTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8VWlu
dDhBcnJheT4gZGF0YSwgRXhjZXB0aW8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICghbV9wbGF5ZXIgfHwgbV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSkgeworICAgIGlm
ICghbV9wcml2YXRlIHx8IG1fcmVhZHlTdGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkpIHsKICAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI4
OSw3ICsyODgsNyBAQCB2b2lkIE1lZGlhU291cmNlOjphcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwg
UGFzc1JlZlB0cjxVaW50OEFycmF5PiBkYXRhLCBFeGNlcHRpbwogICAgIGlmIChtX3JlYWR5U3Rh
dGUgPT0gZW5kZWRLZXl3b3JkKCkpCiAgICAgICAgIHNldFJlYWR5U3RhdGUob3BlbktleXdvcmQo
KSk7CiAKLSAgICBpZiAoIW1fcGxheWVyLT5zb3VyY2VBcHBlbmQoaWQsIGRhdGEtPmRhdGEoKSwg
ZGF0YS0+bGVuZ3RoKCkpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUtPmFwcGVuZChpZCwgZGF0YS0+
ZGF0YSgpLCBkYXRhLT5sZW5ndGgoKSkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMjk3LDI5ICsyOTYsMzcgQEAgdm9pZCBNZWRpYVNvdXJj
ZTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZGF0YSwg
RXhjZXB0aW8KIAogdm9pZCBNZWRpYVNvdXJjZTo6YWJvcnQoY29uc3QgU3RyaW5nJiBpZCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5U3RhdGUgIT0g
b3BlbktleXdvcmQoKSkgeworICAgIGlmICghbV9wcml2YXRlIHx8IG1fcmVhZHlTdGF0ZSAhPSBv
cGVuS2V5d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fcGxheWVyLT5zb3VyY2VBYm9ydChpZCkpCisg
ICAgaWYgKCFtX3ByaXZhdGUtPmFib3J0KGlkKSkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKIGJvb2wgTWVkaWFTb3VyY2U6OnNldFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJp
bmcmIGlkLCBkb3VibGUgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIW1f
cGxheWVyIHx8IG1fcmVhZHlTdGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkpIHsKKyAgICBpZiAoIW1f
cHJpdmF0ZSB8fCBtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBpZiAoIW1fcGxheWVyLT5zb3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoaWQsIG9mZnNldCkpIHsK
KyAgICBpZiAoIW1fcHJpdmF0ZS0+c2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpKSB7CiAg
ICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgTWVkaWFTb3VyY2U6OnNldFByaXZhdGVB
bmRPcGVuKFBhc3NPd25QdHI8TWVkaWFTb3VyY2VQcml2YXRlPiBtZWRpYVNvdXJjZVByaXZhdGUp
Cit7CisgICAgQVNTRVJUKG1lZGlhU291cmNlUHJpdmF0ZSk7CisgICAgQVNTRVJUKCFtX3ByaXZh
dGUpOworICAgIG1fcHJpdmF0ZSA9IG1lZGlhU291cmNlUHJpdmF0ZTsKKyAgICBzZXRSZWFkeVN0
YXRlKG9wZW5LZXl3b3JkKCkpOworfQorCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNl
OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVy
ZmFjZUZvck1lZGlhU291cmNlOwpAQCAtMzMyLDEzICszMzksMTMgQEAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogTWVkaWFTb3VyY2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogCiBi
b29sIE1lZGlhU291cmNlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVy
biBtX3BsYXllciB8fCBtX2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpCisgICAg
cmV0dXJuIG1fcHJpdmF0ZSB8fCBtX2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygp
CiAgICAgICAgIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAK
IHZvaWQgTWVkaWFTb3VyY2U6OnN0b3AoKQogewotICAgIG1fcGxheWVyID0gMDsKKyAgICBtX3By
aXZhdGUuY2xlYXIoKTsKICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxsRXZlbnRzKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuaAppbmRleCAxZDNmMzQ3NmI2NzgxZjNjOWY1Y2U0ZmE0MmFlYzdjZTA1MTBkY2JjLi45NTM1
OGQ3Y2I5ZDE3YzQ2YWIwYTk0ZWY3NTJiN2I1Y2YxZDczMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCkBAIC0zNSw3ICszNSw3IEBA
CiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJHZW5lcmljRXZlbnRR
dWV1ZS5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU291cmNlQnVm
ZmVyTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZW5kT2ZTdHJlYW0oY29uc3QgU3RyaW5nJiBlcnJvciwgRXhj
ZXB0aW9uQ29kZSYpOwogCi0gICAgdm9pZCBzZXRNZWRpYVBsYXllcihNZWRpYVBsYXllciogcGxh
eWVyKSB7IG1fcGxheWVyID0gcGxheWVyOyB9CisgICAgdm9pZCBzZXRQcml2YXRlQW5kT3BlbihQ
YXNzT3duUHRyPE1lZGlhU291cmNlUHJpdmF0ZT4pOwogCiAgICAgUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiBidWZmZXJlZChjb25zdCBTdHJpbmcmIGlkLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAg
ICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBk
YXRhLCBFeGNlcHRpb25Db2RlJik7CkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgRXZl
bnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogCiAgICAgU3RyaW5nIG1fcmVhZHlTdGF0
ZTsKLSAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CisgICAgT3duUHRyPE1lZGlhU291cmNlUHJp
dmF0ZT4gbV9wcml2YXRlOwogCiAgICAgUmVmUHRyPFNvdXJjZUJ1ZmZlckxpc3Q+IG1fc291cmNl
QnVmZmVyczsKICAgICBSZWZQdHI8U291cmNlQnVmZmVyTGlzdD4gbV9hY3RpdmVTb3VyY2VCdWZm
ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzQ3ZmY3
MWQ5NmQwMGUxM2U1Zjg5MjM1MDU2MTkyZDZkMDc2NDhhYS4uMmY5NWM1YmE3YWNjNGRmMTJjYTI4
MWRjM2M4M2M5N2VjMzFmY2Q5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC0zMDgsMTEgKzMwOCw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAg
ICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZFJlc3Ry
aWN0aW9uKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIG1fbWVkaWFT
b3VyY2VVUkwuc2V0UHJvdG9jb2wobWVkaWFTb3VyY2VCbG9iUHJvdG9jb2wpOwotICAgIG1fbWVk
aWFTb3VyY2VVUkwuc2V0UGF0aChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOwotI2VuZGlm
Ci0KICAgICBzZXRIYXNDdXN0b21DYWxsYmFja3MoKTsKICAgICBhZGRFbGVtZW50VG9Eb2N1bWVu
dE1hcCh0aGlzLCBkb2N1bWVudCk7CiAKQEAgLTk4NiwxNCArOTgxLDggQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29uc3QgS1VSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5
cGUmIGNvbnRlbnQKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIEFTU0VSVCghbV9tZWRp
YVNvdXJjZSk7CiAKLSAgICBpZiAodXJsLnByb3RvY29sSXMobWVkaWFTb3VyY2VCbG9iUHJvdG9j
b2wpKSB7CisgICAgaWYgKHVybC5wcm90b2NvbElzKG1lZGlhU291cmNlQmxvYlByb3RvY29sKSkK
ICAgICAgICAgbV9tZWRpYVNvdXJjZSA9IE1lZGlhU291cmNlUmVnaXN0cnk6OnJlZ2lzdHJ5KCku
bG9va3VwTWVkaWFTb3VyY2UodXJsLnN0cmluZygpKTsKLQotICAgICAgICBpZiAobV9tZWRpYVNv
dXJjZSkgewotICAgICAgICAgICAgbV9tZWRpYVNvdXJjZS0+c2V0TWVkaWFQbGF5ZXIobV9wbGF5
ZXIuZ2V0KCkpOwotICAgICAgICAgICAgbV9tZWRpYVNvdXJjZVVSTCA9IHVybDsKLSAgICAgICAg
fQotICAgIH0KICNlbmRpZgogCiAgICAgLy8gVGhlIHJlc291cmNlIGZldGNoIGFsZ29yaXRobSAK
QEAgLTE4NjgsMjIgKzE4NTcsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3Rh
dGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU291cmNl
T3BlbmVkKCkKLXsKLSAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7Ci0K
LSAgICBzZXRTb3VyY2VTdGF0ZShNZWRpYVNvdXJjZTo6b3BlbktleXdvcmQoKSk7Ci0KLSAgICBl
bmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwotfQotCi1TdHJpbmcgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJTb3VyY2VVUkwoKSBjb25zdAotewotICAgIHJldHVybiBtX21l
ZGlhU291cmNlVVJMLnN0cmluZygpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleUFkZGVkKE1lZGlh
UGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
KQogewpAQCAtNDQ4MCwxMyArNDQ1MywxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0
ZU1lZGlhUGxheWVyKCkKICAgICAgICAgbV9hdWRpb1NvdXJjZU5vZGUtPmxvY2soKTsKICNlbmRp
ZgogCi0gICAgbV9wbGF5ZXIgPSBNZWRpYVBsYXllcjo6Y3JlYXRlKHRoaXMpOwotCiAjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKLSAgICBpZiAobV9tZWRpYVNvdXJjZSkKLSAgICAgICAgbV9tZWRp
YVNvdXJjZS0+c2V0TWVkaWFQbGF5ZXIobV9wbGF5ZXIuZ2V0KCkpOworICAgIGlmIChtX21lZGlh
U291cmNlICYmIG1fbWVkaWFTb3VyY2UtPnJlYWR5U3RhdGUoKSAhPSBNZWRpYVNvdXJjZTo6Y2xv
c2VkS2V5d29yZCgpKQorICAgICAgICBtX21lZGlhU291cmNlLT5zZXRSZWFkeVN0YXRlKE1lZGlh
U291cmNlOjpjbG9zZWRLZXl3b3JkKCkpOwogI2VuZGlmCiAKKyAgICBtX3BsYXllciA9IE1lZGlh
UGxheWVyOjpjcmVhdGUodGhpcyk7CisKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIGlmICht
X2F1ZGlvU291cmNlTm9kZSkgewogICAgICAgICAvLyBXaGVuIGNyZWF0aW5nIHRoZSBwbGF5ZXIs
IG1ha2Ugc3VyZSBpdHMgQXVkaW9Tb3VyY2VQcm92aWRlciBrbm93cyBhYm91dCB0aGUgTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlLgpAQCAtNDgyNyw3ICs0ODAwLDYgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb24KICAgICBpbmZvLmFkZE1lbWJlcihtX3Byb3h5V2lkZ2V0LCAicHJveHlXaWRn
ZXQiKTsKICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgaW5mby5hZGRNZW1i
ZXIobV9tZWRpYVNvdXJjZVVSTCwgIm1lZGlhU291cmNlVVJMIik7CiAgICAgaW5mby5hZGRNZW1i
ZXIobV9tZWRpYVNvdXJjZSwgIm1lZGlhU291cmNlIik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGZhMWUz
ZjI4NGVlMTk2YmZiMjFjMjJhNGY4ZjcxNzJlNDMxNjBkNDUuLjM3NGRmMmI4NTY1ODYyZjM1MzUw
N2RmNDkyODMzZDQzMjA4YTUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC00NDIsMTEgKzQ0Miw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKE1lZGlhUGxheWVyKik7CiAgICAgdmlydHVh
bCB2b2lkIG1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlhUGxheWVyKik7CiAK
LSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNv
dXJjZU9wZW5lZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291cmNlVVJMKCkg
Y29uc3Q7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVh
bCB2b2lkIG1lZGlhUGxheWVyS2V5QWRkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllcktleUVycm9yKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBNZWRpYVBsYXllckNsaWVudDo6TWVkaWFL
ZXlFcnJvckNvZGUsIHVuc2lnbmVkIHNob3J0IHN5c3RlbUNvZGUpIE9WRVJSSURFOwpAQCAtNjM5
LDcgKzYzNCw2IEBAIHByaXZhdGU6CiAgICAgaW50IG1fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2Fs
bGJhY2s7CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIEtVUkwgbV9tZWRpYVNvdXJj
ZVVSTDsKICAgICBSZWZQdHI8TWVkaWFTb3VyY2U+IG1fbWVkaWFTb3VyY2U7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmlu
ZGV4IDBiMjU0NGY5MjE2MThmMmUxMzEwNTg5YjA5NmE2MWY4YjA1ZjY5OTEuLjgzOGY1ZGY0MTFi
ODA1MzRlYzIwZjU0MWM2YTZmMGRkMWY4NzJhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE1MSwxNyArMTUxLDYgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICB2aXJ0dWFs
IE1lZGlhUGxheWVyOjpBZGRJZFN0YXR1cyBzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpIHsgcmV0dXJu
IE1lZGlhUGxheWVyOjpOb3RTdXBwb3J0ZWQ7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gc291cmNlQnVmZmVyZWQoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gVGltZVJhbmdl
czo6Y3JlYXRlKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlUmVtb3ZlSWQoY29uc3QgU3Ry
aW5nJikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBwZW5kKGNv
bnN0IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCkgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlQWJvcnQoY29uc3QgU3RyaW5nJikgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlU2V0RHVyYXRpb24oZG91YmxlKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0oTWVkaWFQbGF5ZXI6OkVuZE9m
U3RyZWFtU3RhdHVzKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlU2V0VGltZXN0YW1wT2Zm
c2V0KGNvbnN0IFN0cmluZyYsIGRvdWJsZSkgeyByZXR1cm4gZmFsc2U7IH0KLSNlbmRpZgotCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpNZWRp
YUtleUV4Y2VwdGlvbiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgY29uc3QgdW5z
aWduZWQgY2hhciosIHVuc2lnbmVkKSBPVkVSUklERSB7IHJldHVybiBNZWRpYVBsYXllcjo6SW52
YWxpZFBsYXllclN0YXRlOyB9CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNl
cHRpb24gYWRkS2V5KGNvbnN0IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25l
ZCwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKSBPVkVSUklE
RSB7IHJldHVybiBNZWRpYVBsYXllcjo6SW52YWxpZFBsYXllclN0YXRlOyB9CkBAIC00NzcsNDkg
KzQ2Niw2IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnBhdXNlKCkKICAgICBtX3ByaXZhdGUtPnBhdXNl
KCk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotCi1NZWRpYVBsYXllcjo6QWRkSWRT
dGF0dXMgTWVkaWFQbGF5ZXI6OnNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcykKLXsKLSAgICByZXR1cm4g
bV9wcml2YXRlLT5zb3VyY2VBZGRJZChpZCwgdHlwZSwgY29kZWNzKTsKLX0KLQotUGFzc1JlZlB0
cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllcjo6c291cmNlQnVmZmVyZWQoY29uc3QgU3RyaW5nJiBp
ZCkKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VCdWZmZXJlZChpZCk7Ci19Ci0KLWJv
b2wgTWVkaWFQbGF5ZXI6OnNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYgaWQpCi17Ci0gICAg
cmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlUmVtb3ZlSWQoaWQpOwotfQotCi1ib29sIE1lZGlhUGxh
eWVyOjpzb3VyY2VBcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZUFw
cGVuZChpZCwgZGF0YSwgbGVuZ3RoKTsKLX0KLQotYm9vbCBNZWRpYVBsYXllcjo6c291cmNlQWJv
cnQoY29uc3QgU3RyaW5nJiBpZCkKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VBYm9y
dChpZCk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXI6OnNvdXJjZVNldER1cmF0aW9uKGRvdWJsZSBk
dXJhdGlvbikKLXsKLSAgICBtX3ByaXZhdGUtPnNvdXJjZVNldER1cmF0aW9uKGR1cmF0aW9uKTsK
LX0KLQotdm9pZCBNZWRpYVBsYXllcjo6c291cmNlRW5kT2ZTdHJlYW0oTWVkaWFQbGF5ZXI6OkVu
ZE9mU3RyZWFtU3RhdHVzIHN0YXR1cykKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VF
bmRPZlN0cmVhbShzdGF0dXMpOwotfQotCi1ib29sIE1lZGlhUGxheWVyOjpzb3VyY2VTZXRUaW1l
c3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCkKLXsKLSAgICByZXR1
cm4gbV9wcml2YXRlLT5zb3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoaWQsIG9mZnNldCk7Ci19Ci0j
ZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiBNZWRpYVBsYXllcjo6TWVkaWFL
ZXlFeGNlcHRpb24gTWVkaWFQbGF5ZXI6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSwgY29uc3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXRE
YXRhTGVuZ3RoKQogewpAQCAtOTQ3LDIxICs4OTMsNiBAQCB2b2lkIE1lZGlhUGxheWVyOjpzZXRQ
cml2YXRlQnJvd3NpbmdNb2RlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nTW9kZSkKICAgICBtX3ByaXZh
dGUtPnNldFByaXZhdGVCcm93c2luZ01vZGUobV9wcml2YXRlQnJvd3NpbmcpOwogfQogCi0jaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKLXZvaWQgTWVkaWFQbGF5ZXI6OnNvdXJjZU9wZW5lZCgpCi17
Ci0gICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCi0gICAgICAgIG1fbWVkaWFQbGF5ZXJDbGll
bnQtPm1lZGlhUGxheWVyU291cmNlT3BlbmVkKCk7Ci19Ci0KLVN0cmluZyBNZWRpYVBsYXllcjo6
c291cmNlVVJMKCkgY29uc3QKLXsKLSAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKLSAgICAg
ICAgcmV0dXJuIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyU291cmNlVVJMKCk7Ci0g
ICAgcmV0dXJuIFN0cmluZygpOwotfQotI2VuZGlmCi0KIC8vIENsaWVudCBjYWxsYmFja3MuCiB2
b2lkIE1lZGlhUGxheWVyOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDYzY2UwOWY3OWI4NmY0
YmIwODBmOWE3OTM2Mjk4MTQ3NzZlYTc4MTcuLjlmM2MxYWY4MDVjNmQ4ZjVmMzI3MzlmNTNkNzcz
NWVmZGI4MmJlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaApAQCAtNjEsNyArNjEsNiBAQCBjbGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVyOwog
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBHU3RyZWFtZXJHV29ybGQ7CiBjbGFzcyBNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U7Ci1jbGFzcyBNZWRpYVNvdXJjZTsKIGNsYXNzIFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uOwogCiAvLyBTdHJ1Y3R1cmUgdGhhdCB3aWxsIGhvbGQgZXZlcnkgbmF0aXZl
CkBAIC0xODAsMTEgKzE3OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNl
QWRhcHRlciogbWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVkaWFQbGF5
ZXIqKSBjb25zdCB7IHJldHVybiAwOyB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyU291cmNlT3BlbmVkKCkgeyB9Ci0gICAg
dmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJTb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiAieC1t
ZWRpYS1zb3VyY2UtdW5zdXBwb3J0ZWQ6IjsgfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQogICAgIGVudW0gTWVkaWFLZXlFcnJvckNvZGUgeyBVbmtub3duRXJyb3IgPSAx
LCBDbGllbnRFcnJvciwgU2VydmljZUVycm9yLCBPdXRwdXRFcnJvciwgSGFyZHdhcmVDaGFuZ2VF
cnJvciwgRG9tYWluRXJyb3IgfTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlBZGRl
ZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYgLyoga2V5U3lzdGVtICovLCBjb25zdCBTdHJp
bmcmIC8qIHNlc3Npb25JZCAqLykgeyB9CkBAIC0yODAsMTkgKzI3NCw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHBsYXkoKTsKICAgICB2b2lkIHBhdXNlKCk7ICAgIAogCi0jaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKLSAgICBlbnVtIEFkZElkU3RhdHVzIHsgT2ssIE5vdFN1cHBvcnRlZCwgUmVhY2hl
ZElkTGltaXQgfTsKLSAgICBBZGRJZFN0YXR1cyBzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlk
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpOwotICAg
IGJvb2wgc291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCk7Ci0gICAgUGFzc1JlZlB0cjxU
aW1lUmFuZ2VzPiBzb3VyY2VCdWZmZXJlZChjb25zdCBTdHJpbmcmIGlkKTsKLSAgICBib29sIHNv
dXJjZUFwcGVuZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpOwotICAgIHZvaWQgc291cmNlU2V0RHVyYXRpb24oZG91YmxlKTsKLSAg
ICBib29sIHNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYgaWQpOwotICAgIGVudW0gRW5kT2ZTdHJl
YW1TdGF0dXMgeyBFb3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0RlY29kZUVycm9yIH07
Ci0gICAgdm9pZCBzb3VyY2VFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyk7Ci0gICAgYm9v
bCBzb3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNl
dCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgLy8gUmVwcmVz
ZW50cyBzeW5jaHJvbm91cyBleGNlcHRpb25zIHRoYXQgY2FuIGJlIHRocm93biBmcm9tIHRoZSBF
bmNyeXB0ZWQgTWVkaWEgbWV0aG9kcy4KICAgICAvLyBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHRo
ZSBhc3luY2hyb25vdXMgTWVkaWFLZXlFcnJvci4KQEAgLTQyMiwxMSArNDAzLDYgQEAgcHVibGlj
OgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKTsKICNlbmRp
ZgogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICB2b2lkIHNvdXJjZU9wZW5lZCgpOwot
ICAgIFN0cmluZyBzb3VyY2VVUkwoKSBjb25zdDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKICAgICB2b2lkIGtleUFkZGVkKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAgICAgdm9pZCBrZXlFcnJvcihjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpN
ZWRpYUtleUVycm9yQ29kZSwgdW5zaWduZWQgc2hvcnQgc3lzdGVtQ29kZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmlu
ZGV4IDVjNjY3NGQyZDNhNjM4Y2EzMDYxZDNmOTIyOWFhYWRmMjJhYTc4NDAuLmY4M2U4ZDk3NmU1
NGJlNmU0YTgzNDIyM2IwNjdjMjhkNWY2MmQ3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xNjcsMTcgKzE2
Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291
cmNlUHJvdmlkZXIoKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCi0gICAgdmlydHVhbCBNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXMgc291cmNlQWRkSWQo
Y29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgY29kZWNzKSB7IHJldHVybiBNZWRpYVBsYXllcjo6Tm90U3VwcG9ydGVkOyB9Ci0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYg
aWQpIHsgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOyB9Ci0gICAgdmlydHVhbCBib29sIHNv
dXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIHNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHNvdXJjZVNldER1cmF0aW9uKGRvdWJsZSkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKE1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cykg
eyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJp
bmcmIGlkLCBkb3VibGUgb2Zmc2V0KSB7IHJldHVybiBmYWxzZTsgfQotI2VuZGlmCi0KICNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5
RXhjZXB0aW9uIGFkZEtleShjb25zdCBTdHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5z
aWduZWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikgeyBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OktleVN5c3RlbU5vdFN1cHBvcnRlZDsgfQogICAgIHZpcnR1YWwg
TWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBT
dHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIE1lZGlhUGxh
eWVyOjpLZXlTeXN0ZW1Ob3RTdXBwb3J0ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ5MWRh
MGNmZDAxMGU2N2ZhYjc1YzVjYWNhZDNmNmJmZjkwZDFmOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZS5oCkBAIC0w
LDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworI2lmbmRlZiBNZWRpYVNvdXJjZVByaXZhdGVfaAorI2RlZmluZSBNZWRpYVNvdXJj
ZVByaXZhdGVfaAorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIlRpbWVS
YW5nZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVNvdXJjZVByaXZh
dGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhU291cmNlUHJpdmF0ZSk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIE1lZGlhU291cmNlUHJpdmF0ZSgpIHsg
fQorICAgIHZpcnR1YWwgfk1lZGlhU291cmNlUHJpdmF0ZSgpIHsgfQorCisgICAgZW51bSBBZGRJ
ZFN0YXR1cyB7IE9rLCBOb3RTdXBwb3J0ZWQsIFJlYWNoZWRJZExpbWl0IH07CisgICAgdmlydHVh
bCBBZGRJZFN0YXR1cyBhZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVt
b3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1l
UmFuZ2VzPiBidWZmZXJlZChjb25zdCBTdHJpbmcmIGlkKSA9IDA7CisgICAgdmlydHVhbCBib29s
IGFwcGVuZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkdXJhdGlvbigpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCBib29s
IGFib3J0KGNvbnN0IFN0cmluZyYgaWQpID0gMDsKKyAgICBlbnVtIEVuZE9mU3RyZWFtU3RhdHVz
IHsgRW9zTm9FcnJvciwgRW9zTmV0d29ya0Vycm9yLCBFb3NEZWNvZGVFcnJvciB9OworICAgIHZp
cnR1YWwgdm9pZCBlbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBzZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNl
dCkgPSAwOworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCmluZGV4IGFmYTU0YTAwZTYzZDQzMGI5NDM4ZmU0MDlhNDUwZGFiNWYzMTg3NWUuLjY3MGE3
MjBjMDkzNjk4OWVhYzMyYmMxMGEzNjFlYmNjNjU1MWE0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAKQEAgLTE5Niw2ICsxOTYsOCBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
TWVkaWFQbGF5ZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVBsYXllckFj
dGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50Lmgn
LAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFTb3VyY2UuaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJNZWRpYVNvdXJjZUNsaWVudC5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYk1lZGlhU3RyZWFtUmVnaXN0cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJNZW1vcnlVc2FnZUluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZW51
SXRlbUluZm8uaCcsCkBAIC01MDYsNiArNTA4LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1dl
YkxhYmVsRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVBsYXllckNsaWVu
dEltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVNvdXJjZUltcGwuY3BwJywK
KyAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhU291cmNlSW1wbC5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYk1lZGlhU3RyZWFtUmVnaXN0cnkuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJOb2RlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJNZWRpYVBsYXllckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
TWVkaWFQbGF5ZXJDbGllbnQuaAppbmRleCBkZWNhOTUzNmQ5OWE0NWNiMjE1ZThlYTVlMjA0YTYx
ODk3NTVjNGIzLi44ZWViYmNjNzA1ZDliZTRhMmFiNWIyZjI1N2ZiOTlmMzZkNjMxZTlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyQ2xp
ZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJG
cmFtZTsKK2NsYXNzIFdlYk1lZGlhU291cmNlOwogY2xhc3MgV2ViUGx1Z2luOwogY2xhc3MgV2Vi
UmVxdWVzdDsKIGNsYXNzIFdlYlVSTDsKQEAgLTczLDYgKzc0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgV2ViTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJlbG9hZCgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc291cmNlT3BlbmVkKCkgPSAwOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJV
Ukwgc291cmNlVVJMKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgV2ViTWVkaWFTb3VyY2UqIGdl
dE1lZGlhU291cmNlKGNvbnN0IFdlYktpdDo6V2ViVVJMJikgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBrZXlBZGRlZChjb25zdCBXZWJTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgV2ViU3Ry
aW5nJiBzZXNzaW9uSWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQga2V5RXJyb3IoY29uc3QgV2Vi
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFdlYlN0cmluZyYgc2Vzc2lvbklkLCBNZWRpYUtleUVy
cm9yQ29kZSwgdW5zaWduZWQgc2hvcnQgc3lzdGVtQ29kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBrZXlNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBXZWJTdHJpbmcm
IHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2Fn
ZUxlbmd0aCwgY29uc3QgV2ViVVJMJiBkZWZhdWx0VVJMKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjkyOGExN2Y2
MWY4YzVkODQ1ZWM4MjhiODQxMmU4NGFkMzk4NmFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2UuaApAQCAtMCwwICsxLDQ4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJNZWRpYVNvdXJjZV9oCisjZGVmaW5lIFdlYk1lZGlhU291cmNlX2gKKworI2lu
Y2x1ZGUgIldlYlRpbWVSYW5nZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
TWVkaWFTb3VyY2VDbGllbnQ7CisKK2NsYXNzIFdlYk1lZGlhU291cmNlIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5XZWJNZWRpYVNvdXJjZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvcGVuKFdl
Yk1lZGlhU291cmNlQ2xpZW50KikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVk
aWFTb3VyY2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlh
U291cmNlQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2U2NTA5MDRiYjQyYmY4ZmZhMGU3NmM3MzdiOWZl
ZWRjMWFlOWYxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYk1lZGlhU291cmNlQ2xpZW50LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVk
aWFTb3VyY2VDbGllbnRfaAorI2RlZmluZSBXZWJNZWRpYVNvdXJjZUNsaWVudF9oCisKKyNpbmNs
dWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3RyaW5nLmgiCisjaW5j
bHVkZSAiV2ViVGltZVJhbmdlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJN
ZWRpYVNvdXJjZUNsaWVudCB7CitwdWJsaWM6CisgICAgZW51bSBBZGRJZFN0YXR1cyB7CisgICAg
ICAgIEFkZElkU3RhdHVzT2ssCisgICAgICAgIEFkZElkU3RhdHVzTm90U3VwcG9ydGVkLAorICAg
ICAgICBBZGRJZFN0YXR1c1JlYWNoZWRJZExpbWl0CisgICAgfTsKKworICAgIGVudW0gRW5kT2ZT
dHJlYW1TdGF0dXMgeworICAgICAgICBFbmRPZlN0cmVhbVN0YXR1c05vRXJyb3IsCisgICAgICAg
IEVuZE9mU3RyZWFtU3RhdHVzTmV0d29ya0Vycm9yLAorICAgICAgICBFbmRPZlN0cmVhbVN0YXR1
c0RlY29kZUVycm9yLAorICAgIH07CisKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNvdXJjZUNsaWVu
dCgpIHsgfQorCisgICAgdmlydHVhbCBBZGRJZFN0YXR1cyBhZGRJZChjb25zdCBXZWJTdHJpbmcm
IGlkLCBjb25zdCBXZWJTdHJpbmcmIHR5cGUsIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBj
b2RlY3MpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlSWQoY29uc3QgV2ViU3RyaW5nJiBp
ZCkgPSAwOworICAgIHZpcnR1YWwgV2ViVGltZVJhbmdlcyBidWZmZXJlZChjb25zdCBXZWJTdHJp
bmcmIGlkKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFwcGVuZChjb25zdCBXZWJTdHJpbmcmIGlk
LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgYWJvcnQoY29uc3QgV2ViU3RyaW5nJiBpZCkgPSAwOworICAgIHZpcnR1YWwg
ZG91YmxlIGR1cmF0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3Vi
bGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFdlYlN0cmlu
ZyYgaWQsIGRvdWJsZSBvZmZzZXQpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1h
dGNoaW5nRW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHAKaW5kZXggYjk3MjUxNjUzZGEyZDA4M2RlZTNkMzFlYzE0NGNhNTdmMjE1NzFk
YS4uZjZiMmJiYWM3ZTM4M2JjN2VkN2ViMDkxNzY1ZDA1NWZhNjBlZWMyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTYy
LDYgKzYyLDkgQEAKICNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIkljb25VUkwu
aCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisj
aW5jbHVkZSAiTWVkaWFTb3VyY2VQcml2YXRlLmgiCisjZW5kaWYKICNpbmNsdWRlICJNZWRpYVN0
cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUg
IlBhZ2VWaXNpYmlsaXR5U3RhdGUuaCIKQEAgLTEwNSw2ICsxMDgsNyBAQAogI2luY2x1ZGUgIldl
YklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAi
V2ViTWVkaWFQbGF5ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZUNsaWVudC5o
IgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgogI2luY2x1ZGUgIldlYlBh
Z2VWaXNpYmlsaXR5U3RhdGUuaCIKICNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgpAQCAtNDA5LDE1
ICs0MTMsMTMgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6
UHJlbG9hZE1ldGFEYXRhLCBNZWRpYVBsYXllcjo6TWV0YUQKIENPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OlByZWxvYWRBdXRvLCBNZWRpYVBsYXllcjo6QXV0byk7
CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXNPaywgTWVkaWFQbGF5ZXI6Ok9rKTsKLUNPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzTm90U3Vw
cG9ydGVkLCBNZWRpYVBsYXllcjo6Tm90U3VwcG9ydGVkKTsKLUNPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzUmVhY2hlZElkTGltaXQsIE1lZGlh
UGxheWVyOjpSZWFjaGVkSWRMaW1pdCk7Ci0jZW5kaWYKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViTWVkaWFTb3VyY2VDbGllbnQ6OkFkZElkU3RhdHVzT2ssIE1lZGlhU291cmNlUHJp
dmF0ZTo6T2spOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNs
aWVudDo6QWRkSWRTdGF0dXNOb3RTdXBwb3J0ZWQsIE1lZGlhU291cmNlUHJpdmF0ZTo6Tm90U3Vw
cG9ydGVkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFTb3VyY2VDbGll
bnQ6OkFkZElkU3RhdHVzUmVhY2hlZElkTGltaXQsIE1lZGlhU291cmNlUHJpdmF0ZTo6UmVhY2hl
ZElkTGltaXQpOwogCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLUNPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzTm9FcnJvciwg
TWVkaWFQbGF5ZXI6OkVvc05vRXJyb3IpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShX
ZWJNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXNOZXR3b3JrRXJyb3IsIE1lZGlhUGxheWVy
OjpFb3NOZXR3b3JrRXJyb3IpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRp
YVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXNEZWNvZGVFcnJvciwgTWVkaWFQbGF5ZXI6OkVvc0Rl
Y29kZUVycm9yKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFTb3VyY2VD
bGllbnQ6OkVuZE9mU3RyZWFtU3RhdHVzTm9FcnJvciwgTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NO
b0Vycm9yKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFTb3VyY2VDbGll
bnQ6OkVuZE9mU3RyZWFtU3RhdHVzTmV0d29ya0Vycm9yLCBNZWRpYVNvdXJjZVByaXZhdGU6OkVv
c05ldHdvcmtFcnJvcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhU291
cmNlQ2xpZW50OjpFbmRPZlN0cmVhbVN0YXR1c0RlY29kZUVycm9yLCBNZWRpYVNvdXJjZVByaXZh
dGU6OkVvc0RlY29kZUVycm9yKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuY3BwCmluZGV4IGVmMzUwZDcxYTAwZDFmMDE3OWMwMjk0NGQ0MDdjOTgxNjlk
Y2FmZDkuLjcyNWZiODAzZGIxNWJmYzNkNTVmYTQyNjAxODY5YTNlNjNhOTlkZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsLmNwcApAQCAtMTcsNiArMTcsOSBAQAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRl
ICJLVVJMLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQorI2luY2x1ZGUgIk1lZGlhU291cmNlUmVnaXN0cnkuaCIKKyNlbmRpZgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2lu
Y2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTI2LDYgKzI5LDggQEAKICNpbmNsdWRlICJXZWJGcmFt
ZUltcGwuaCIKICNpbmNsdWRlICJXZWJIZWxwZXJQbHVnaW5JbXBsLmgiCiAjaW5jbHVkZSAiV2Vi
TWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZUNsaWVudC5oIgorI2luY2x1
ZGUgIldlYk1lZGlhU291cmNlSW1wbC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5j
bHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNTdHJpbmcuaD4K
QEAgLTQ5LDYgKzU0LDgyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorLy8gVE9ETyhhY29sd2VsbCk6IFJlbW92ZSB0aGlzIGNsYXNzIG9uY2UgdGhl
IENocm9taXVtIGNvZGUgc3RhcnRzIGNhbGxpbmcKKy8vIGdldE1lZGlhU291cmNlKCkgYW5kIG9w
ZW5pbmcgdGhlIFdlYk1lZGlhU291cmNlIG9iamVjdCBpdHNlbGYuCitjbGFzcyBXZWJNZWRpYVNv
dXJjZUNsaWVudEltcGwgOiBwdWJsaWMgV2ViTWVkaWFTb3VyY2VDbGllbnQgeworcHVibGljOgor
ICAgIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbChXZWJNZWRpYVBsYXllciopOworICAgIHZpcnR1
YWwgfldlYk1lZGlhU291cmNlQ2xpZW50SW1wbCgpOworCisgICAgLy8gV2ViTWVkaWFTb3VyY2VD
bGllbnQgbWV0aG9kcy4KKyAgICB2aXJ0dWFsIEFkZElkU3RhdHVzIGFkZElkKGNvbnN0IFdlYlN0
cmluZyYgaWQsIGNvbnN0IFdlYlN0cmluZyYgdHlwZSwgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmlu
Zz4mIGNvZGVjcyk7CisgICAgdmlydHVhbCBib29sIHJlbW92ZUlkKGNvbnN0IFdlYlN0cmluZyYg
aWQpOworICAgIHZpcnR1YWwgV2ViVGltZVJhbmdlcyBidWZmZXJlZChjb25zdCBXZWJTdHJpbmcm
IGlkKTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgdmlydHVhbCBib29s
IGFib3J0KGNvbnN0IFdlYlN0cmluZyYgaWQpOworICAgIHZpcnR1YWwgZG91YmxlIGR1cmF0aW9u
KCk7CisgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSk7CisgICAgdmlydHVhbCB2
b2lkIGVuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0
VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFdlYlN0cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpOworCitw
cml2YXRlOgorICAgIFdlYk1lZGlhUGxheWVyKiBtX3dlYk1lZGlhUGxheWVyOworfTsKKworV2Vi
TWVkaWFTb3VyY2VDbGllbnRJbXBsOjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGwoV2ViTWVkaWFQ
bGF5ZXIqIHdlYk1lZGlhUGxheWVyKQorICAgIDogbV93ZWJNZWRpYVBsYXllcih3ZWJNZWRpYVBs
YXllcikKK3sKK30KKworV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjp+V2ViTWVkaWFTb3VyY2VD
bGllbnRJbXBsKCkKK3sKK30KKworV2ViTWVkaWFTb3VyY2VDbGllbnQ6OkFkZElkU3RhdHVzIFdl
Yk1lZGlhU291cmNlQ2xpZW50SW1wbDo6YWRkSWQoY29uc3QgV2ViU3RyaW5nJiBpZCwgY29uc3Qg
V2ViU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgY29kZWNzKQorewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJNZWRpYVNvdXJjZUNsaWVudDo6QWRkSWRTdGF0dXM+
KG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUFkZElkKGlkLCB0eXBlLCBjb2RlY3MpKTsKK30KKwor
Ym9vbCBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OnJlbW92ZUlkKGNvbnN0IFdlYlN0cmluZyYg
aWQpCit7CisgICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVJlbW92ZUlkKGlkKTsK
K30KKworV2ViVGltZVJhbmdlcyBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmJ1ZmZlcmVkKGNv
bnN0IFdlYlN0cmluZyYgaWQpCit7CisgICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJj
ZUJ1ZmZlcmVkKGlkKTsKK30KKworYm9vbCBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmFwcGVu
ZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUFwcGVuZChp
ZCwgZGF0YSwgbGVuZ3RoKTsKK30KKworYm9vbCBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmFi
b3J0KGNvbnN0IFdlYlN0cmluZyYgaWQpCit7CisgICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXIt
PnNvdXJjZUFib3J0KGlkKTsKK30KKworZG91YmxlIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6
ZHVyYXRpb24oKQoreworICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5kdXJhdGlvbigpOwor
fQorCit2b2lkIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6c2V0RHVyYXRpb24oZG91YmxlIGR1
cmF0aW9uKQoreworICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VTZXREdXJhdGlv
bihkdXJhdGlvbik7Cit9CisKK3ZvaWQgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjplbmRPZlN0
cmVhbShFbmRPZlN0cmVhbVN0YXR1cyBzdGF0dXMpCit7CisgICAgbV93ZWJNZWRpYVBsYXllci0+
c291cmNlRW5kT2ZTdHJlYW0oc3RhdGljX2Nhc3Q8V2ViTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFt
U3RhdHVzPihzdGF0dXMpKTsKK30KKworYm9vbCBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OnNl
dFRpbWVzdGFtcE9mZnNldChjb25zdCBXZWJTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KQorewor
ICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoaWQs
IG9mZnNldCk7Cit9CisKIHN0YXRpYyBQYXNzT3duUHRyPFdlYk1lZGlhUGxheWVyPiBjcmVhdGVX
ZWJNZWRpYVBsYXllcihXZWJNZWRpYVBsYXllckNsaWVudCogY2xpZW50LCBjb25zdCBXZWJVUkwm
IHVybCwgRnJhbWUqIGZyYW1lKQogewogICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBXZWJG
cmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSk7CkBAIC0yMTgsMjIgKzI5OSw0MCBAQCBXZWJNZWRp
YVBsYXllcjo6UHJlbG9hZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnByZWxvYWQoKSBjb25z
dAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJNZWRpYVBsYXllcjo6UHJlbG9hZD4obV9wcmVs
b2FkKTsKIH0KIAorV2ViTWVkaWFTb3VyY2UqIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Z2V0
TWVkaWFTb3VyY2UoY29uc3QgV2ViVVJMJiB1cmwpIGNvbnN0Cit7CisjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKKyAgICBSZWZQdHI8TWVkaWFTb3VyY2U+IG1lZGlhU291cmNlID0gTWVkaWFTb3Vy
Y2VSZWdpc3RyeTo6cmVnaXN0cnkoKS5sb29rdXBNZWRpYVNvdXJjZSh1cmwuc3BlYygpLnV0ZjE2
KCkpOworCisgICAgaWYgKG1lZGlhU291cmNlKQorICAgICAgICByZXR1cm4gbmV3IFdlYk1lZGlh
U291cmNlSW1wbChtZWRpYVNvdXJjZSk7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKworLy8g
VE9ETyhhY29sd2VsbCk6IFJlbW92ZSB0aGlzIGFuZCBzb3VyY2VVUkwoKSBvbmNlIHRoZSBDaHJv
bWl1bSBjb2RlIHN0YXJ0cworLy8gY2FsbGluZyBnZXRNZWRpYVNvdXJjZSgpIGFuZCBvcGVuaW5n
IHRoZSBXZWJNZWRpYVNvdXJjZSBpdHNlbGYuCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bDo6c291cmNlT3BlbmVkKCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIEFTU0VS
VChtX21lZGlhUGxheWVyKTsKLSAgICBtX21lZGlhUGxheWVyLT5zb3VyY2VPcGVuZWQoKTsKKyAg
ICBBU1NFUlQobV93ZWJNZWRpYVBsYXllcik7CisgICAgS1VSTCB1cmwoUGFyc2VkVVJMU3RyaW5n
LCBtX3VybCk7CisgICAgT3duUHRyPFdlYk1lZGlhU291cmNlPiBtZWRpYVNvdXJjZSA9IGFkb3B0
UHRyKGdldE1lZGlhU291cmNlKHVybCkpOworICAgIGlmIChtZWRpYVNvdXJjZSkKKyAgICAgICAg
bWVkaWFTb3VyY2UtPm9wZW4obmV3IFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbChtX3dlYk1lZGlh
UGxheWVyLmdldCgpKSk7CiAjZW5kaWYKIH0KIAogV2ViS2l0OjpXZWJVUkwgV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjpzb3VyY2VVUkwoKSBjb25zdAogewogI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCi0gICAgQVNTRVJUKG1fbWVkaWFQbGF5ZXIpOwotICAgIHJldHVybiBLVVJMKFBhcnNlZFVS
TFN0cmluZywgbV9tZWRpYVBsYXllci0+c291cmNlVVJMKCkpOwotI2Vsc2UKLSAgICByZXR1cm4g
S1VSTCgpOworICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgbV91cmwpOworICAgIE93blB0
cjxXZWJNZWRpYVNvdXJjZT4gbWVkaWFTb3VyY2UgPSBhZG9wdFB0cihnZXRNZWRpYVNvdXJjZSh1
cmwpKTsKKworICAgIGlmIChtZWRpYVNvdXJjZSkKKyAgICAgICAgcmV0dXJuIHVybDsKICNlbmRp
ZgorICAgIHJldHVybiBLVVJMKCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
OjprZXlBZGRlZChjb25zdCBXZWJTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgV2ViU3RyaW5nJiBz
ZXNzaW9uSWQpCkBAIC00MDcsNzAgKzUwNiw2IEBAIGJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjpjYW5FbnRlckZ1bGxzY3JlZW4oKSBjb25zdAogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQotV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbDo6c291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKQotewotICAgIGlmICghbV93
ZWJNZWRpYVBsYXllcikKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpOb3RT
dXBwb3J0ZWQ7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OkFkZElkU3RhdHVzPihtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBZGRJZChpZCwgdHlwZSwgY29k
ZWNzKSk7Ci19Ci0KLWJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VSZW1vdmVJ
ZChjb25zdCBTdHJpbmcmIGlkKQotewotICAgIGlmICghbV93ZWJNZWRpYVBsYXllcikKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVJl
bW92ZUlkKGlkKTsKLX0KLQotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OnNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpCi17Ci0gICAgaWYgKCFt
X3dlYk1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7Ci0K
LSAgICBXZWJUaW1lUmFuZ2VzIHdlYlJhbmdlcyA9IG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUJ1
ZmZlcmVkKGlkKTsKLSAgICBSZWZQdHI8VGltZVJhbmdlcz4gcmFuZ2VzID0gVGltZVJhbmdlczo6
Y3JlYXRlKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJSYW5nZXMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIHJhbmdlcy0+YWRkKHdlYlJhbmdlc1tpXS5zdGFydCwgd2ViUmFuZ2VzW2ld
LmVuZCk7Ci0gICAgcmV0dXJuIHJhbmdlcy5yZWxlYXNlKCk7Ci19Ci0KLWJvb2wgV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VBcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgdW5z
aWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIGlmIChtX3dlYk1lZGlh
UGxheWVyKQotICAgICAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlQXBwZW5kKGlk
LCBkYXRhLCBsZW5ndGgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OnNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYgaWQpCi17Ci0gICAgaWYg
KCFtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
bV93ZWJNZWRpYVBsYXllci0+c291cmNlQWJvcnQoaWQpOwotfQotCi12b2lkIFdlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6c291cmNlU2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQotewotICAg
IGlmIChtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VT
ZXREdXJhdGlvbihkdXJhdGlvbik7Ci19Ci0KLXZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
Ojpzb3VyY2VFbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0
dXMgc3RhdHVzKQotewotICAgIGlmIChtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICBtX3dlYk1l
ZGlhUGxheWVyLT5zb3VyY2VFbmRPZlN0cmVhbShzdGF0aWNfY2FzdDxXZWJNZWRpYVBsYXllcjo6
RW5kT2ZTdHJlYW1TdGF0dXM+KHN0YXR1cykpOwotfQotCi1ib29sIFdlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbDo6c291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYgaWQsIGRvdWJs
ZSBvZmZzZXQpCi17Ci0gICAgaWYgKCFtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVNldFRpbWVzdGFtcE9m
ZnNldChpZCwgb2Zmc2V0KTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBXZWJNZWRpYVBsYXllckNsaWVudElt
cGw6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgdW5z
aWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwu
aAppbmRleCAzZjcwYzczNWNjYjY2OGRiZjVmZmI1NzM4NWQ3MGI0Y2ZiNGFlNzYxLi4zNTc2ZDMx
MDMwMTNmZGVlMDYzZDgzNDNmNDE3MjJjNzE1Nzk1NzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaApAQCAtODYsNiAr
ODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVs
b2FkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZU9wZW5lZCgpOwogICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJVUkwgc291cmNlVVJMKCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJNZWRp
YVNvdXJjZSogZ2V0TWVkaWFTb3VyY2UoY29uc3QgV2ViS2l0OjpXZWJVUkwmKSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQga2V5QWRkZWQoY29uc3QgV2ViU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFdlYlN0cmluZyYgc2Vzc2lvbklkKTsKICAgICB2aXJ0dWFsIHZvaWQga2V5RXJyb3IoY29uc3Qg
V2ViU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFdlYlN0cmluZyYgc2Vzc2lvbklkLCBNZWRpYUtl
eUVycm9yQ29kZSwgdW5zaWduZWQgc2hvcnQgc3lzdGVtQ29kZSk7CiAgICAgdmlydHVhbCB2b2lk
IGtleU1lc3NhZ2UoY29uc3QgV2ViU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFdlYlN0cmluZyYg
c2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtZXNzYWdlLCB1bnNpZ25lZCBtZXNzYWdl
TGVuZ3RoLCBjb25zdCBXZWJVUkwmIGRlZmF1bHRVUkwpOwpAQCAtMTU3LDE3ICsxNTgsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dEN1cnJlbnRGcmFtZShXZWJWaWRlb0ZyYW1lKik7
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdmlydHVhbCBXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXMgc291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKTsKLSAgICB2
aXJ0dWFsIGJvb2wgc291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VGltZVJhbmdlcz4gc291cmNlQnVmZmVyZWQoY29uc3Qg
U3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCBTdHJpbmcmLCBj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwg
Ym9vbCBzb3VyY2VBYm9ydChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNl
U2V0RHVyYXRpb24oZG91YmxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0o
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzKTsKLSAgICB2aXJ0dWFsIGJv
b2wgc291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYsIGRvdWJsZSBvZmZzZXQp
OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGdlbmVyYXRlS2V5UmVxdWVzdChj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVu
c2lnbmVkIGluaXREYXRhTGVuZ3RoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBhZGRLZXkoY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGtleSwgdW5zaWduZWQga2V5TGVuZ3RoLCBjb25zdCB1
bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgsIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYk1lZGlhU291cmNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJNZWRpYVNvdXJjZUltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMzk5YTNjMzUxYmM4NWJi
NjE0NDc0MjY5MmNhMGM4ZDVhNmM5NDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZUltcGwuY3BwCkBAIC0wLDAgKzEsMTU1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk1lZGlhU291cmNlSW1wbC5oIgorCisjaW5j
bHVkZSAiTWVkaWFTb3VyY2VQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTb3VyY2VDbGll
bnQuaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVJbXBsIDogcHVibGljIFdlYkNvcmU6Ok1lZGlhU291
cmNlUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgTWVkaWFTb3VyY2VQcml2YXRlSW1wbChQYXNzT3du
UHRyPFdlYk1lZGlhU291cmNlQ2xpZW50Pik7CisgICAgdmlydHVhbCB+TWVkaWFTb3VyY2VQcml2
YXRlSW1wbCgpIHsgfQorCisgICAgLy8gTWVkaWFTb3VyY2VQcml2YXRlIG1ldGhvZHMuCisgICAg
dmlydHVhbCBXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkFkZElkU3RhdHVzIGFkZElkKGNv
bnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGNvZGVjcyk7CisgICAgdmlydHVhbCBib29sIHJlbW92ZUlkKGNvbnN0IFN0cmluZyYgaWQpOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpUaW1lUmFuZ2VzPiBidWZmZXJlZChjb25z
dCBTdHJpbmcmIGlkKTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKGNvbnN0IFN0cmluZyYgaWQs
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgdmlydHVh
bCBib29sIGFib3J0KGNvbnN0IFN0cmluZyYgaWQpOworICAgIHZpcnR1YWwgZG91YmxlIGR1cmF0
aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSk7CisgICAgdmlydHVh
bCB2b2lkIGVuZE9mU3RyZWFtKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6RW5kT2ZTdHJl
YW1TdGF0dXMpOworICAgIHZpcnR1YWwgYm9vbCBzZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3Ry
aW5nJiBpZCwgZG91YmxlIG9mZnNldCk7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYktpdDo6
V2ViTWVkaWFTb3VyY2VDbGllbnQ+IG1fY2xpZW50OworfTsKKworTWVkaWFTb3VyY2VQcml2YXRl
SW1wbDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbChQYXNzT3duUHRyPFdlYktpdDo6V2ViTWVkaWFT
b3VyY2VDbGllbnQ+IGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKK3sKK30KKworV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRJZFN0YXR1cyBNZWRpYVNvdXJjZVByaXZhdGVJ
bXBsOjphZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBjb2RlY3MpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0
dXJuIFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6Tm90U3VwcG9ydGVkOworCisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6QWRkSWRTdGF0dXM+
KG1fY2xpZW50LT5hZGRJZChpZCwgdHlwZSwgY29kZWNzKSk7Cit9CisKK2Jvb2wgTWVkaWFTb3Vy
Y2VQcml2YXRlSW1wbDo6cmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkKK3sKKyAgICBpZiAoIW1f
Y2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jbGllbnQtPnJl
bW92ZUlkKGlkKTsKK30KKworUGFzc1JlZlB0cjxXZWJDb3JlOjpUaW1lUmFuZ2VzPiBNZWRpYVNv
dXJjZVByaXZhdGVJbXBsOjpidWZmZXJlZChjb25zdCBTdHJpbmcmIGlkKQoreworICAgIGlmICgh
bV9jbGllbnQpCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpUaW1lUmFuZ2VzOjpjcmVhdGUoKTsK
KworICAgIFdlYlRpbWVSYW5nZXMgd2ViUmFuZ2VzID0gbV9jbGllbnQtPmJ1ZmZlcmVkKGlkKTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6VGltZVJhbmdlcz4gcmFuZ2VzID0gV2ViQ29yZTo6VGltZVJh
bmdlczo6Y3JlYXRlKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJSYW5nZXMuc2l6
ZSgpOyArK2kpCisgICAgICAgIHJhbmdlcy0+YWRkKHdlYlJhbmdlc1tpXS5zdGFydCwgd2ViUmFu
Z2VzW2ldLmVuZCk7CisgICAgcmV0dXJuIHJhbmdlcy5yZWxlYXNlKCk7Cit9CisKK2Jvb2wgTWVk
aWFTb3VyY2VQcml2YXRlSW1wbDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jbGllbnQtPmFwcGVuZChpZCwg
ZGF0YSwgbGVuZ3RoKTsKK30KKworYm9vbCBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjphYm9ydChj
b25zdCBTdHJpbmcmIGlkKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBtX2NsaWVudC0+YWJvcnQoaWQpOworfQorCitkb3VibGUgTWVk
aWFTb3VyY2VQcml2YXRlSW1wbDo6ZHVyYXRpb24oKQoreworICAgIGlmICghbV9jbGllbnQpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCk7Cisg
ICAgcmV0dXJuIG1fY2xpZW50LT5kdXJhdGlvbigpOworfQorCit2b2lkIE1lZGlhU291cmNlUHJp
dmF0ZUltcGw6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBpZiAobV9jbGll
bnQpCisgICAgICAgIG1fY2xpZW50LT5zZXREdXJhdGlvbihkdXJhdGlvbik7Cit9CisKK3ZvaWQg
TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6ZW5kT2ZTdHJlYW0oV2ViQ29yZTo6TWVkaWFTb3VyY2VQ
cml2YXRlOjpFbmRPZlN0cmVhbVN0YXR1cyBzdGF0dXMpCit7CisgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICBtX2NsaWVudC0+ZW5kT2ZTdHJlYW0oc3RhdGljX2Nhc3Q8V2ViTWVkaWFTb3VyY2VD
bGllbnQ6OkVuZE9mU3RyZWFtU3RhdHVzPihzdGF0dXMpKTsKK30KKworYm9vbCBNZWRpYVNvdXJj
ZVByaXZhdGVJbXBsOjpzZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91Ymxl
IG9mZnNldCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIG1fY2xpZW50LT5zZXRUaW1lc3RhbXBPZmZzZXQoaWQsIG9mZnNldCk7Cit9CisK
KworV2ViTWVkaWFTb3VyY2VJbXBsOjpXZWJNZWRpYVNvdXJjZUltcGwoUGFzc1JlZlB0cjxXZWJD
b3JlOjpNZWRpYVNvdXJjZT4gbWVkaWFTb3VyY2UpCit7CisgICAgbV9tZWRpYVNvdXJjZSA9IG1l
ZGlhU291cmNlOworfQorCitXZWJNZWRpYVNvdXJjZUltcGw6On5XZWJNZWRpYVNvdXJjZUltcGwo
KQoreworfQorCisKK3ZvaWQgV2ViTWVkaWFTb3VyY2VJbXBsOjpvcGVuKFdlYk1lZGlhU291cmNl
Q2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKGNsaWVudCk7CisgICAgbV9tZWRpYVNvdXJj
ZS0+c2V0UHJpdmF0ZUFuZE9wZW4oYWRvcHRQdHIobmV3IE1lZGlhU291cmNlUHJpdmF0ZUltcGwo
YWRvcHRQdHIoY2xpZW50KSkpKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNlSW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhhYjMxZTJi
NWRiZjdjNWQ3ZmJlZmEyNjFlYWRmZWRjYTlmNWYwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNlSW1wbC5oCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYk1lZGlhU291cmNlSW1wbF9oCisjZGVmaW5lIFdlYk1lZGlhU291cmNlSW1w
bF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiTWVkaWFTb3VyY2Uu
aCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViTWVkaWFTb3VyY2VJbXBsIDogcHVibGljIFdlYk1lZGlhU291cmNlIHsKK3B1Ymxp
YzoKKyAgICBXZWJNZWRpYVNvdXJjZUltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJj
ZT4pOworICAgIHZpcnR1YWwgfldlYk1lZGlhU291cmNlSW1wbCgpOworCisgICAgLy8gV2ViTWVk
aWFTb3VyY2UgbWV0aG9kcy4KKyAgICB2aXJ0dWFsIHZvaWQgb3BlbihXZWJNZWRpYVNvdXJjZUNs
aWVudCopOworCitwcml2YXRlOgorICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJjZT4gbV9t
ZWRpYVNvdXJjZTsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188604</attachid>
            <date>2013-02-15 11:13:35 -0800</date>
            <delta_ts>2013-02-15 11:26:35 -0800</delta_ts>
            <desc>Moved WebMediaPlayerClient::getMediaSource() to WebMediaSource::getMediaSourceForURL().</desc>
            <filename>bug-109857-20130215111002.patch</filename>
            <type>text/plain</type>
            <size>55751</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBhZTRkNjk2MjNjNDY2
NDc1YzliMmVjMmJkMTQzZTFiMjQ3NzliNS4uMDAwYTc3YzdmZDdhZGU4NWEzZTgyODc5ZDlmY2Fh
OWQ5OWUzN2I4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAyLTE1ICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZhY3RvciBNZWRp
YVNvdXJjZSBtZXRob2RzIG91dCBvZiBNZWRpYVBsYXllciAmIE1lZGlhUGxheWVyUHJpdmF0ZSBh
bmQgaW50byBhIG5ldyBNZWRpYVNvdXJjZVByaXZhdGUgaW50ZXJmYWNlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHNpbXBsZSByZWZh
Y3RvciB0aGF0IG1vdmVzIE1lZGlhU291cmNlIHJlbGF0ZWQgbWV0aG9kcyBvdXQgb2YgTWVkaWFQ
bGF5ZXIgJiBNZWRpYVBsYXllclByaXZhdGUKKyAgICAgICAgc28gdGhhdCB0aGUgTWVkaWFTb3Vy
Y2UgaW1wbGVtZW50YXRpb24gY2FuIGJlIHVwZGF0ZWQgd2l0aG91dCBmdXJ0aGVyIHBvbGx1dGlu
ZyB0aGVzZSBpbnRlcmZhY2VzLgorICAgICAgICBNZWRpYVNvdXJjZVByaXZhdGUgaXMgdGhlIG5l
dyBXZWJDb3JlIGludGVyZmFjZSB0aGF0IHBvcnRzIG11c3QgaW1wbGVtZW50IHRvIHN1cHBvcnQg
dGhlIE1lZGlhU291cmNlIEFQSS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIHVzZXIgdmlz
aWJsZSBiZWhhdmlvciBoYXMgY2hhbmdlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Ok1lZGlh
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpkdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlOjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjplbmRP
ZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YnVmZmVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNvdXJjZTo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldFRp
bWVzdGFtcE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0
ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpzdG9wKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmg6Cisg
ICAgICAgIChNZWRpYVNvdXJjZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNZWRpYUVsZW1l
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChNZWRpYVBsYXllckNsaWVudCk6CisgICAgICAgIChNZWRpYVBsYXllcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAg
IChNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhU291cmNlUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoTWVkaWFTb3VyY2VQcml2YXRlKTogQ29udGFpbnMgdGhlIE1lZGlhU291cmNlIG1ldGhv
ZHMgZXh0cmFjdGVkIGZyb20gTWVkaWFQbGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZVByaXZhdGU6Ok1lZGlhU291cmNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGU6On5NZWRpYVNvdXJjZVByaXZhdGUpOgorCiAyMDEzLTAyLTE1ICBBbmRy
ZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBFbGVtZW50RGF0YTogTW92
ZSBsZWFmeSB0aGluZ3Mgb3V0IG9mIHRoZSBiYXNlIGNsYXNzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBjYjMxNmUwMWVlYTdhNDUzOWIxMTlmYjcyZjFmZDk5MTVmYzRmZjJlLi5iMDlj
NzM2YzcwMGRlZWI5NmEyMWQyMWFjMDg2NzlhMTJkZGUzMWU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEzLTAyLTE1ICBBYXJvbiBDb2x3ZWxsICA8YWNv
bHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZhY3RvciBNZWRpYVNvdXJjZSBtZXRob2Rz
IG91dCBvZiBNZWRpYVBsYXllciAmIE1lZGlhUGxheWVyUHJpdmF0ZSBhbmQgaW50byBhIG5ldyBN
ZWRpYVNvdXJjZVByaXZhdGUgaW50ZXJmYWNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViTWVkaWFTb3VyY2UgYW5kIFdlYk1lZGlhU291cmNlIGNs
aWVudCB3ZXJlIGNyZWF0ZWQgdG8gcmVwbGFjZSB0aGUgTWVkaWFTb3VyY2UgbWV0aG9kcyBpbiBX
ZWJNZWRpYVBsYXllciBhbmQKKyAgICAgICAgV2ViTWVkaWFQbGF5ZXJDbGllbnQuIFRoaXMgYWxs
b3dzIHRoZSBNZWRpYVNvdXJjZSBpbXBsZW1lbnRhdGlvbiB0byBiZSB1cGRhdGVkIHdpdGhvdXQg
ZnVydGhlciBwb2xsdXRpbmcgdGhlCisgICAgICAgIG1lZGlhIHBsYXllciBpbnRlcmZhY2VzLgor
CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFQbGF5ZXJD
bGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhU291
cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhU291cmNl
KToKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFTb3VyY2VDbGllbnQuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTWVkaWFTb3VyY2VDbGllbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudDo6fldlYk1lZGlhU291cmNlQ2xpZW50KToKKyAg
ICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL1dlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
TWVkaWFTb3VyY2VDbGllbnRJbXBsKTogVGVtcG9yYXJ5IFdlYk1lZGlhU291cmNlQ2xpZW50IGlt
cGxlbWVudGF0aW9uIHRvIGtlZXAgdGhpbmdzIHdvcmtpbmcgdW50aWwgQ2hyb21pdW0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgbGFuZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6On5XZWJNZWRpYVNv
dXJjZUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudElt
cGw6OmFkZElkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpy
ZW1vdmVJZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6YnVm
ZmVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmFwcGVu
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6YWJvcnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmR1cmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpzZXREdXJhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6ZW5kT2ZTdHJlYW0pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OnNldFRpbWVzdGFtcE9m
ZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNl
T3BlbmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3Vy
Y2VVUkwpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAg
ICAgKFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYk1lZGlhU291
cmNlSW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKE1lZGlhU291
cmNlUHJpdmF0ZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBs
Ojp+TWVkaWFTb3VyY2VQcml2YXRlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNl
UHJpdmF0ZUltcGw6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVNvdXJjZVByaXZhdGVJbXBsOjphZGRJZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291
cmNlUHJpdmF0ZUltcGw6OnJlbW92ZUlkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQ
cml2YXRlSW1wbDo6YnVmZmVyZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZh
dGVJbXBsOjphcHBlbmQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBs
OjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmR1cmF0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6c2V0RHVyYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjplbmRPZlN0cmVh
bSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6OnNldFRpbWVzdGFt
cE9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlSW1wbDo6V2ViTWVkaWFT
b3VyY2VJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VJbXBsOjp+V2ViTWVk
aWFTb3VyY2VJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VJbXBsOjpvcGVu
KToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhU291cmNlSW1wbCk6CisKIDIwMTMtMDItMTUgIEtl
aXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFnZVBvcHVwQ29u
dHJvbGxlci5mb3JtYXRNb250aCBzaG91bGQgc3VwcG9ydCBzaG9ydCBtb250aCBmb3JtYXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAK
aW5kZXggZmQ2NDI5NWQ1OWQ3YWVlYjc2Njk1ODE4NWRlZGIxY2E4ZjI3NzY3YS4uZTZiZmUyNDJh
ZDJkMzI0NjczMWE3MDY0ODBhOGQ2YjEwZWM1YmQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTUwLDcgKzUwLDYgQEAg
UGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4gTWVkaWFTb3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQogTWVkaWFTb3VyY2U6Ok1lZGlhU291cmNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhp
cykKICAgICAsIG1fcmVhZHlTdGF0ZShjbG9zZWRLZXl3b3JkKCkpCi0gICAgLCBtX3BsYXllcigw
KQogICAgICwgbV9hc3luY0V2ZW50UXVldWUoR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSh0aGlz
KSkKIHsKICAgICBtX3NvdXJjZUJ1ZmZlcnMgPSBTb3VyY2VCdWZmZXJMaXN0OjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX2FzeW5jRXZlbnRRdWV1ZS5nZXQoKSk7CkBAIC04OCw3
ICs4Nyw3IEBAIFNvdXJjZUJ1ZmZlckxpc3QqIE1lZGlhU291cmNlOjphY3RpdmVTb3VyY2VCdWZm
ZXJzKCkKIAogZG91YmxlIE1lZGlhU291cmNlOjpkdXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fcmVhZHlTdGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkgPyBzdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6cXVpZXRfTmFOKCkgOiBtX3BsYXllci0+ZHVyYXRpb24oKTsKKyAgICByZXR1cm4g
bV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjpxdWlldF9OYU4oKSA6IG1fcHJpdmF0ZS0+ZHVyYXRpb24oKTsKIH0KIAogdm9pZCBNZWRp
YVNvdXJjZTo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykK
QEAgLTEwMSw3ICsxMDAsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpzZXREdXJhdGlvbihkb3VibGUg
ZHVyYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVf
RVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcGxheWVyLT5zb3VyY2VTZXREdXJh
dGlvbihkdXJhdGlvbik7CisgICAgbV9wcml2YXRlLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiB9
CiAKIFNvdXJjZUJ1ZmZlciogTWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJp
bmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTI2LDcgKzEyNSw3IEBAIFNvdXJjZUJ1
ZmZlciogTWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUsIEV4
Y2VwdGlvbkNvZGUmIGVjCiAKICAgICAvLyA0LiBJZiB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUg
aXMgbm90IGluIHRoZSAib3BlbiIgc3RhdGUgdGhlbiB0aHJvdyBhbgogICAgIC8vIElOVkFMSURf
U1RBVEVfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFtX3Bs
YXllciB8fCBtX3JlYWR5U3RhdGUgIT0gb3BlbktleXdvcmQoKSkgeworICAgIGlmICghbV9wcml2
YXRlIHx8IG1fcmVhZHlTdGF0ZSAhPSBvcGVuS2V5d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE0MCwyMCArMTM5
LDIwIEBAIFNvdXJjZUJ1ZmZlciogTWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBT
dHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjCiAKICAgICBSZWZQdHI8U291cmNlQnVmZmVy
PiBidWZmZXIgPSBTb3VyY2VCdWZmZXI6OmNyZWF0ZShpZCwgdGhpcyk7CiAKLSAgICBzd2l0Y2gg
KG1fcGxheWVyLT5zb3VyY2VBZGRJZChidWZmZXItPmlkKCksIGNvbnRlbnRUeXBlLnR5cGUoKSwg
Y29kZWNzKSkgewotICAgIGNhc2UgTWVkaWFQbGF5ZXI6Ok9rOgorICAgIHN3aXRjaCAobV9wcml2
YXRlLT5hZGRJZChidWZmZXItPmlkKCksIGNvbnRlbnRUeXBlLnR5cGUoKSwgY29kZWNzKSkgewor
ICAgIGNhc2UgTWVkaWFTb3VyY2VQcml2YXRlOjpPazoKICAgICAgICAgLy8gNi4gQWRkIHRoZSBu
ZXcgb2JqZWN0IHRvIHNvdXJjZUJ1ZmZlcnMgYW5kIGZpcmUgYSBhZGRzb3VyY2VidWZmZXIgb24g
dGhhdCBvYmplY3QuCiAgICAgICAgIG1fc291cmNlQnVmZmVycy0+YWRkKGJ1ZmZlcik7CiAgICAg
ICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy0+YWRkKGJ1ZmZlcik7CiAgICAgICAgIC8vIDcuIFJl
dHVybiB0aGUgbmV3IG9iamVjdCB0byB0aGUgY2FsbGVyLgogICAgICAgICByZXR1cm4gYnVmZmVy
LmdldCgpOwotICAgIGNhc2UgTWVkaWFQbGF5ZXI6Ok5vdFN1cHBvcnRlZDoKKyAgICBjYXNlIE1l
ZGlhU291cmNlUHJpdmF0ZTo6Tm90U3VwcG9ydGVkOgogICAgICAgICAvLyAyIChjb250KS4gSWYg
dHlwZSBjb250YWlucyBhIE1JTUUgdHlwZSAuLi4gdGhhdCBpcyBub3Qgc3VwcG9ydGVkIHdpdGgg
dGhlIHR5cGVzIAogICAgICAgICAvLyBzcGVjaWZpZWQgZm9yIHRoZSBvdGhlciBTb3VyY2VCdWZm
ZXIgb2JqZWN0cyBpbiBzb3VyY2VCdWZmZXJzLCB0aGVuIHRocm93CiAgICAgICAgIC8vIGEgTk9U
X1NVUFBPUlRFRF9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBNZWRp
YVBsYXllcjo6UmVhY2hlZElkTGltaXQ6CisgICAgY2FzZSBNZWRpYVNvdXJjZVByaXZhdGU6OlJl
YWNoZWRJZExpbWl0OgogICAgICAgICAvLyAzIChjb250KS4gSWYgdGhlIHVzZXIgYWdlbnQgY2Fu
J3QgaGFuZGxlIGFueSBtb3JlIFNvdXJjZUJ1ZmZlciBvYmplY3RzIHRoZW4gdGhyb3cgCiAgICAg
ICAgIC8vIGEgUVVPVEFfRVhDRUVERURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3Rl
cHMuCiAgICAgICAgIGVjID0gUVVPVEFfRVhDRUVERURfRVJSOwpAQCAtMTc2LDcgKzE3NSw3IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXIqIGJ1ZmZl
ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyAyLiBJZiBzb3VyY2VCdWZmZXJzIGlzIGVt
cHR5IHRoZW4gdGhyb3cgYW4gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZAogICAgIC8v
IGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICghbV9wbGF5ZXIgfHwgIW1fc291cmNlQnVmZmVy
cy0+bGVuZ3RoKCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZSB8fCAhbV9zb3VyY2VCdWZmZXJzLT5s
ZW5ndGgoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMTkyLDcgKzE5MSw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnJlbW92ZVNv
dXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXIqIGJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAg
ICAvLyA3LiBEZXN0cm95IGFsbCByZXNvdXJjZXMgZm9yIHNvdXJjZUJ1ZmZlci4KICAgICBtX2Fj
dGl2ZVNvdXJjZUJ1ZmZlcnMtPnJlbW92ZShidWZmZXIpOwotICAgIG1fcGxheWVyLT5zb3VyY2VS
ZW1vdmVJZChidWZmZXItPmlkKCkpOworICAgIG1fcHJpdmF0ZS0+cmVtb3ZlSWQoYnVmZmVyLT5p
ZCgpKTsKIAogICAgIC8vIDQuIFJlbW92ZSB0cmFjayBpbmZvcm1hdGlvbiBmcm9tIGF1ZGlvVHJh
Y2tzLCB2aWRlb1RyYWNrcywgYW5kIHRleHRUcmFja3MgZm9yIGFsbCB0cmFja3MgCiAgICAgLy8g
YXNzb2NpYXRlZCB3aXRoIHNvdXJjZUJ1ZmZlciBhbmQgZmlyZSBhIHNpbXBsZSBldmVudCBuYW1l
ZCBjaGFuZ2Ugb24gdGhlIG1vZGlmaWVkIGxpc3RzLgpAQCAtMjIwLDcgKzIxOSw3IEBAIHZvaWQg
TWVkaWFTb3VyY2U6OnNldFJlYWR5U3RhdGUoY29uc3QgU3RyaW5nJiBzdGF0ZSkKICAgICBpZiAo
bV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSkgewogICAgICAgICBtX3NvdXJjZUJ1ZmZl
cnMtPmNsZWFyKCk7CiAgICAgICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy0+Y2xlYXIoKTsKLSAg
ICAgICAgbV9wbGF5ZXIgPSAwOworICAgICAgICBtX3ByaXZhdGUuY2xlYXIoKTsKICAgICAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0c291cmNlY2xvc2VFdmVudCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yNDEsMTkgKzI0MCwxOSBAQCB2b2lkIE1lZGlhU291cmNl
OjplbmRPZlN0cmVhbShjb25zdCBTdHJpbmcmIGVycm9yLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICAvLyAzLjEgaHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21l
ZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNkb20tZW5kb2ZzdHJlYW0KICAgICAvLyAxLiBJ
ZiB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgbm90IGluIHRoZSAib3BlbiIgc3RhdGUgdGhl
biB0aHJvdyBhbgogICAgIC8vIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQg
dGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5U3RhdGUgIT0gb3Blbktl
eXdvcmQoKSkgeworICAgIGlmICghbV9wcml2YXRlIHx8IG1fcmVhZHlTdGF0ZSAhPSBvcGVuS2V5
d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMgZW9zU3RhdHVz
ID0gTWVkaWFQbGF5ZXI6OkVvc05vRXJyb3I7CisgICAgTWVkaWFTb3VyY2VQcml2YXRlOjpFbmRP
ZlN0cmVhbVN0YXR1cyBlb3NTdGF0dXMgPSBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05vRXJyb3I7
CiAKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkgfHwgZXJyb3IuaXNFbXB0eSgpKQotICAgICAgICBl
b3NTdGF0dXMgPSBNZWRpYVBsYXllcjo6RW9zTm9FcnJvcjsKKyAgICAgICAgZW9zU3RhdHVzID0g
TWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOb0Vycm9yOwogICAgIGVsc2UgaWYgKGVycm9yID09ICJu
ZXR3b3JrIikKLSAgICAgICAgZW9zU3RhdHVzID0gTWVkaWFQbGF5ZXI6OkVvc05ldHdvcmtFcnJv
cjsKKyAgICAgICAgZW9zU3RhdHVzID0gTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOZXR3b3JrRXJy
b3I7CiAgICAgZWxzZSBpZiAoZXJyb3IgPT0gImRlY29kZSIpCi0gICAgICAgIGVvc1N0YXR1cyA9
IE1lZGlhUGxheWVyOjpFb3NEZWNvZGVFcnJvcjsKKyAgICAgICAgZW9zU3RhdHVzID0gTWVkaWFT
b3VyY2VQcml2YXRlOjpFb3NEZWNvZGVFcnJvcjsKICAgICBlbHNlIHsKICAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTI2MSwxNyArMjYwLDE3IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OmVuZE9mU3RyZWFtKGNvbnN0IFN0cmluZyYgZXJyb3IsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogCiAgICAgLy8gMi4gQ2hhbmdlIHRoZSByZWFkeVN0YXRlIGF0dHJpYnV0
ZSB2YWx1ZSB0byAiZW5kZWQiLgogICAgIHNldFJlYWR5U3RhdGUoZW5kZWRLZXl3b3JkKCkpOwot
ICAgIG1fcGxheWVyLT5zb3VyY2VFbmRPZlN0cmVhbShlb3NTdGF0dXMpOworICAgIG1fcHJpdmF0
ZS0+ZW5kT2ZTdHJlYW0oZW9zU3RhdHVzKTsKIH0KIAogUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBN
ZWRpYVNvdXJjZTo6YnVmZmVyZWQoY29uc3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5
d29yZCgpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFkeVN0YXRlID09IGNsb3NlZEtl
eXdvcmQoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gbV9wbGF5ZXItPnNvdXJjZUJ1ZmZlcmVkKGlkKTsK
KyAgICByZXR1cm4gbV9wcml2YXRlLT5idWZmZXJlZChpZCk7CiB9CiAKIHZvaWQgTWVkaWFTb3Vy
Y2U6OmFwcGVuZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGRhdGEs
IEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjgxLDcgKzI4MCw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6
OmFwcGVuZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGRhdGEsIEV4
Y2VwdGlvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fcGxheWVyIHx8IG1f
cmVhZHlTdGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZSB8fCBt
X3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yODksNyArMjg4LDcgQEAgdm9p
ZCBNZWRpYVNvdXJjZTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8VWludDhB
cnJheT4gZGF0YSwgRXhjZXB0aW8KICAgICBpZiAobV9yZWFkeVN0YXRlID09IGVuZGVkS2V5d29y
ZCgpKQogICAgICAgICBzZXRSZWFkeVN0YXRlKG9wZW5LZXl3b3JkKCkpOwogCi0gICAgaWYgKCFt
X3BsYXllci0+c291cmNlQXBwZW5kKGlkLCBkYXRhLT5kYXRhKCksIGRhdGEtPmxlbmd0aCgpKSkg
eworICAgIGlmICghbV9wcml2YXRlLT5hcHBlbmQoaWQsIGRhdGEtPmRhdGEoKSwgZGF0YS0+bGVu
Z3RoKCkpKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTI5NywyOSArMjk2LDM3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OmFwcGVuZChjb25zdCBT
dHJpbmcmIGlkLCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGRhdGEsIEV4Y2VwdGlvCiAKIHZvaWQg
TWVkaWFTb3VyY2U6OmFib3J0KGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewotICAgIGlmICghbV9wbGF5ZXIgfHwgbV9yZWFkeVN0YXRlICE9IG9wZW5LZXl3b3JkKCkpIHsK
KyAgICBpZiAoIW1fcHJpdmF0ZSB8fCBtX3JlYWR5U3RhdGUgIT0gb3BlbktleXdvcmQoKSkgewog
ICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKCFtX3BsYXllci0+c291cmNlQWJvcnQoaWQpKQorICAgIGlmICghbV9wcml2YXRl
LT5hYm9ydChpZCkpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBib29sIE1l
ZGlhU291cmNlOjpzZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIG9m
ZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5
U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFk
eVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVf
RVJSOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFtX3BsYXllci0+
c291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpKSB7CisgICAgaWYgKCFtX3ByaXZh
dGUtPnNldFRpbWVzdGFtcE9mZnNldChpZCwgb2Zmc2V0KSkgewogICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0
cnVlOwogfQogCit2b2lkIE1lZGlhU291cmNlOjpzZXRQcml2YXRlQW5kT3BlbihQYXNzT3duUHRy
PE1lZGlhU291cmNlUHJpdmF0ZT4gbWVkaWFTb3VyY2VQcml2YXRlKQoreworICAgIEFTU0VSVCht
ZWRpYVNvdXJjZVByaXZhdGUpOworICAgIEFTU0VSVCghbV9wcml2YXRlKTsKKyAgICBtX3ByaXZh
dGUgPSBtZWRpYVNvdXJjZVByaXZhdGU7CisgICAgc2V0UmVhZHlTdGF0ZShvcGVuS2V5d29yZCgp
KTsKK30KKwogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZTo6aW50ZXJmYWNlTmFtZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYVNvdXJj
ZTsKQEAgLTMzMiwxMyArMzM5LDEzIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU291
cmNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIAogYm9vbCBNZWRpYVNvdXJjZTo6
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wbGF5ZXIgfHwgbV9h
c3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKQorICAgIHJldHVybiBtX3ByaXZhdGUg
fHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKQogICAgICAgICB8fCBBY3Rp
dmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiB2b2lkIE1lZGlhU291cmNl
OjpzdG9wKCkKIHsKLSAgICBtX3BsYXllciA9IDA7CisgICAgbV9wcml2YXRlLmNsZWFyKCk7CiAg
ICAgbV9hc3luY0V2ZW50UXVldWUtPmNhbmNlbEFsbEV2ZW50cygpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKaW5kZXggMWQzZjM0
NzZiNjc4MWYzYzlmNWNlNGZhNDJhZWM3Y2UwNTEwZGNiYy4uOTUzNThkN2NiOWQxN2M0NmFiMGE5
NGVmNzUyYjdiNWNmMWQ3MzJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2UuaApAQCAtMzUsNyArMzUsNyBAQAogCiAjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKLSNpbmNsdWRl
ICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIlNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlckxpc3QuaCIKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGVuZE9mU3RyZWFtKGNvbnN0IFN0cmluZyYgZXJyb3IsIEV4Y2VwdGlvbkNvZGUmKTsKIAot
ICAgIHZvaWQgc2V0TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgeyBtX3BsYXllciA9
IHBsYXllcjsgfQorICAgIHZvaWQgc2V0UHJpdmF0ZUFuZE9wZW4oUGFzc093blB0cjxNZWRpYVNv
dXJjZVByaXZhdGU+KTsKIAogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoY29u
c3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNv
bnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZGF0YSwgRXhjZXB0aW9uQ29k
ZSYpOwpAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2
ZW50VGFyZ2V0RGF0YTsKIAogICAgIFN0cmluZyBtX3JlYWR5U3RhdGU7Ci0gICAgTWVkaWFQbGF5
ZXIqIG1fcGxheWVyOworICAgIE93blB0cjxNZWRpYVNvdXJjZVByaXZhdGU+IG1fcHJpdmF0ZTsK
IAogICAgIFJlZlB0cjxTb3VyY2VCdWZmZXJMaXN0PiBtX3NvdXJjZUJ1ZmZlcnM7CiAgICAgUmVm
UHRyPFNvdXJjZUJ1ZmZlckxpc3Q+IG1fYWN0aXZlU291cmNlQnVmZmVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDc5OWQwZDFmMWE5MjkxNTY4MjIwMWEx
OTNkZDVmOTQzYmE5ZjMyNGIuLjM1ZmM5ODlmNDU2MGMwMGE3NjU2NWNhOGExM2Y1MmI1MjFmYTIz
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzA4LDEx
ICszMDgsNiBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bQogICAgICAgICBhZGRCZWhhdmlvclJl
c3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWRSZXN0cmljdGlvbik7CiAgICAgfQog
Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBtX21lZGlhU291cmNlVVJMLnNldFByb3Rv
Y29sKG1lZGlhU291cmNlQmxvYlByb3RvY29sKTsKLSAgICBtX21lZGlhU291cmNlVVJMLnNldFBh
dGgoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKLSNlbmRpZgotCiAgICAgc2V0SGFzQ3Vz
dG9tQ2FsbGJhY2tzKCk7CiAgICAgYWRkRWxlbWVudFRvRG9jdW1lbnRNYXAodGhpcywgZG9jdW1l
bnQpOwogCkBAIC05ODYsMTQgKzk4MSw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJl
c291cmNlKGNvbnN0IEtVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50CiAjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBBU1NFUlQoIW1fbWVkaWFTb3VyY2UpOwogCi0gICAg
aWYgKHVybC5wcm90b2NvbElzKG1lZGlhU291cmNlQmxvYlByb3RvY29sKSkgeworICAgIGlmICh1
cmwucHJvdG9jb2xJcyhtZWRpYVNvdXJjZUJsb2JQcm90b2NvbCkpCiAgICAgICAgIG1fbWVkaWFT
b3VyY2UgPSBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLmxvb2t1cE1lZGlhU291cmNl
KHVybC5zdHJpbmcoKSk7Ci0KLSAgICAgICAgaWYgKG1fbWVkaWFTb3VyY2UpIHsKLSAgICAgICAg
ICAgIG1fbWVkaWFTb3VyY2UtPnNldE1lZGlhUGxheWVyKG1fcGxheWVyLmdldCgpKTsKLSAgICAg
ICAgICAgIG1fbWVkaWFTb3VyY2VVUkwgPSB1cmw7Ci0gICAgICAgIH0KLSAgICB9CiAjZW5kaWYK
IAogICAgIC8vIFRoZSByZXNvdXJjZSBmZXRjaCBhbGdvcml0aG0gCkBAIC0xODY4LDIyICsxODU3
LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIHN0YXRlKQogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQot
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNvdXJjZU9wZW5lZCgpCi17Ci0gICAg
YmVnaW5Qcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwotCi0gICAgc2V0U291cmNlU3Rh
dGUoTWVkaWFTb3VyY2U6Om9wZW5LZXl3b3JkKCkpOwotCi0gICAgZW5kUHJvY2Vzc2luZ01lZGlh
UGxheWVyQ2FsbGJhY2soKTsKLX0KLQotU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyU291cmNlVVJMKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVVSTC5zdHJp
bmcoKTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlBZGRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKIHsKQEAgLTQ0ODAsMTMg
KzQ0NTMsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBsYXllcigpCiAg
ICAgICAgIG1fYXVkaW9Tb3VyY2VOb2RlLT5sb2NrKCk7CiAjZW5kaWYKIAotICAgIG1fcGxheWVy
ID0gTWVkaWFQbGF5ZXI6OmNyZWF0ZSh0aGlzKTsKLQogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
Ci0gICAgaWYgKG1fbWVkaWFTb3VyY2UpCi0gICAgICAgIG1fbWVkaWFTb3VyY2UtPnNldE1lZGlh
UGxheWVyKG1fcGxheWVyLmdldCgpKTsKKyAgICBpZiAobV9tZWRpYVNvdXJjZSAmJiBtX21lZGlh
U291cmNlLT5yZWFkeVN0YXRlKCkgIT0gTWVkaWFTb3VyY2U6OmNsb3NlZEtleXdvcmQoKSkKKyAg
ICAgICAgbV9tZWRpYVNvdXJjZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVNvdXJjZTo6Y2xvc2VkS2V5
d29yZCgpKTsKICNlbmRpZgogCisgICAgbV9wbGF5ZXIgPSBNZWRpYVBsYXllcjo6Y3JlYXRlKHRo
aXMpOworCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBpZiAobV9hdWRpb1NvdXJjZU5vZGUp
IHsKICAgICAgICAgLy8gV2hlbiBjcmVhdGluZyB0aGUgcGxheWVyLCBtYWtlIHN1cmUgaXRzIEF1
ZGlvU291cmNlUHJvdmlkZXIga25vd3MgYWJvdXQgdGhlIE1lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZS4KQEAgLTQ4MjcsNyArNDgwMCw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uCiAgICAg
aW5mby5hZGRNZW1iZXIobV9wcm94eVdpZGdldCwgInByb3h5V2lkZ2V0Iik7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIGluZm8uYWRkTWVtYmVyKG1fbWVkaWFTb3VyY2VV
UkwsICJtZWRpYVNvdXJjZVVSTCIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fbWVkaWFTb3VyY2Us
ICJtZWRpYVNvdXJjZSIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBmYTFlM2YyODRlZTE5NmJmYjIxYzIy
YTRmOGY3MTcyZTQzMTYwZDQ1Li4zNzRkZjJiODU2NTg2MmYzNTM1MDdkZjQ5MjgzM2Q0MzIwOGE1
MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNDQyLDExICs0
NDIsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckZpcnN0VmlkZW9G
cmFtZUF2YWlsYWJsZShNZWRpYVBsYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
ckNoYXJhY3RlcmlzdGljQ2hhbmdlZChNZWRpYVBsYXllciopOwogCi0jaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJTb3VyY2VPcGVuZWQoKTsKLSAg
ICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclNvdXJjZVVSTCgpIGNvbnN0OwotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
cktleUFkZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJL
ZXlFcnJvcihNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTWVkaWFQbGF5ZXJDbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlLCB1bnNp
Z25lZCBzaG9ydCBzeXN0ZW1Db2RlKSBPVkVSUklERTsKQEAgLTYzOSw3ICs2MzQsNiBAQCBwcml2
YXRlOgogICAgIGludCBtX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrOwogCiAjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKLSAgICBLVVJMIG1fbWVkaWFTb3VyY2VVUkw7CiAgICAgUmVmUHRy
PE1lZGlhU291cmNlPiBtX21lZGlhU291cmNlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCAwYjI1NDRmOTIxNjE4
ZjJlMTMxMDU4OWIwOTZhNjFmOGIwNWY2OTkxLi44MzhmNWRmNDExYjgwNTM0ZWMyMGY1NDFjNmE2
ZjBkZDFmODcyYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCkBAIC0xNTEsMTcgKzE1MSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdmlydHVhbCBNZWRpYVBsYXllcjo6QWRk
SWRTdGF0dXMgc291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKSB7IHJldHVybiBNZWRpYVBsYXllcjo6Tm90
U3VwcG9ydGVkOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNvdXJjZUJ1
ZmZlcmVkKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOyB9Ci0g
ICAgdmlydHVhbCBib29sIHNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25z
dCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIHNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNvdXJjZVNldER1cmF0aW9uKGRvdWJsZSkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHNvdXJjZUVuZE9mU3RyZWFtKE1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cykgeyB9
Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcm
LCBkb3VibGUpIHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gZ2Vu
ZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNp
Z25lZCkgT1ZFUlJJREUgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsg
fQogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGFkZEtleShjb25z
dCBTdHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQsIGNvbnN0IHVuc2lnbmVk
IGNoYXIqLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyByZXR1cm4gTWVkaWFQ
bGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsgfQpAQCAtNDc3LDQ5ICs0NjYsNiBAQCB2b2lkIE1l
ZGlhUGxheWVyOjpwYXVzZSgpCiAgICAgbV9wcml2YXRlLT5wYXVzZSgpOwogfQogCi0jaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKLQotTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIE1lZGlhUGxheWVy
Ojpzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNl
QWRkSWQoaWQsIHR5cGUsIGNvZGVjcyk7Ci19Ci0KLVBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVk
aWFQbGF5ZXI6OnNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpCi17Ci0gICAgcmV0dXJu
IG1fcHJpdmF0ZS0+c291cmNlQnVmZmVyZWQoaWQpOwotfQotCi1ib29sIE1lZGlhUGxheWVyOjpz
b3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKQotewotICAgIHJldHVybiBtX3ByaXZhdGUt
PnNvdXJjZVJlbW92ZUlkKGlkKTsKLX0KLQotYm9vbCBNZWRpYVBsYXllcjo6c291cmNlQXBwZW5k
KGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VBcHBlbmQoaWQsIGRhdGEsIGxl
bmd0aCk7Ci19Ci0KLWJvb2wgTWVkaWFQbGF5ZXI6OnNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYg
aWQpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlQWJvcnQoaWQpOwotfQotCi12b2lk
IE1lZGlhUGxheWVyOjpzb3VyY2VTZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCi17Ci0gICAg
bV9wcml2YXRlLT5zb3VyY2VTZXREdXJhdGlvbihkdXJhdGlvbik7Ci19Ci0KLXZvaWQgTWVkaWFQ
bGF5ZXI6OnNvdXJjZUVuZE9mU3RyZWFtKE1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cyBz
dGF0dXMpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlRW5kT2ZTdHJlYW0oc3RhdHVz
KTsKLX0KLQotYm9vbCBNZWRpYVBsYXllcjo6c291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0
IFN0cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c291
cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpOwotfQotI2VuZGlmCi0KICNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQogTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIE1lZGlh
UGxheWVyOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkKIHsKQEAg
LTk0NywyMSArODkzLDYgQEAgdm9pZCBNZWRpYVBsYXllcjo6c2V0UHJpdmF0ZUJyb3dzaW5nTW9k
ZShib29sIHByaXZhdGVCcm93c2luZ01vZGUpCiAgICAgbV9wcml2YXRlLT5zZXRQcml2YXRlQnJv
d3NpbmdNb2RlKG1fcHJpdmF0ZUJyb3dzaW5nKTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCi12b2lkIE1lZGlhUGxheWVyOjpzb3VyY2VPcGVuZWQoKQotewotICAgIGlmIChtX21lZGlh
UGxheWVyQ2xpZW50KQotICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllclNv
dXJjZU9wZW5lZCgpOwotfQotCi1TdHJpbmcgTWVkaWFQbGF5ZXI6OnNvdXJjZVVSTCgpIGNvbnN0
Ci17Ci0gICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCi0gICAgICAgIHJldHVybiBtX21lZGlh
UGxheWVyQ2xpZW50LT5tZWRpYVBsYXllclNvdXJjZVVSTCgpOwotICAgIHJldHVybiBTdHJpbmco
KTsKLX0KLSNlbmRpZgotCiAvLyBDbGllbnQgY2FsbGJhY2tzLgogdm9pZCBNZWRpYVBsYXllcjo6
bmV0d29ya1N0YXRlQ2hhbmdlZCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA2M2NlMDlmNzliODZmNGJiMDgwZjlhNzkzNjI5ODE0
Nzc2ZWE3ODE3Li45ZjNjMWFmODA1YzZkOGY1ZjMyNzM5ZjUzZDc3MzVlZmRiODJiZWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTYx
LDcgKzYxLDYgQEAgY2xhc3MgQXVkaW9Tb3VyY2VQcm92aWRlcjsKIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgR1N0cmVhbWVyR1dvcmxkOwogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
OwotY2xhc3MgTWVkaWFTb3VyY2U7CiBjbGFzcyBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjsKIAog
Ly8gU3RydWN0dXJlIHRoYXQgd2lsbCBob2xkIGV2ZXJ5IG5hdGl2ZQpAQCAtMTgwLDExICsxNzks
NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxh
eWVyR3JhcGhpY3NEZXZpY2VBZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3QgeyByZXR1
cm4gMDsgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllclNvdXJjZU9wZW5lZCgpIHsgfQotICAgIHZpcnR1YWwgU3RyaW5nIG1l
ZGlhUGxheWVyU291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gIngtbWVkaWEtc291cmNlLXVuc3Vw
cG9ydGVkOiI7IH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBl
bnVtIE1lZGlhS2V5RXJyb3JDb2RlIHsgVW5rbm93bkVycm9yID0gMSwgQ2xpZW50RXJyb3IsIFNl
cnZpY2VFcnJvciwgT3V0cHV0RXJyb3IsIEhhcmR3YXJlQ2hhbmdlRXJyb3IsIERvbWFpbkVycm9y
IH07CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5QWRkZWQoTWVkaWFQbGF5ZXIqLCBj
b25zdCBTdHJpbmcmIC8qIGtleVN5c3RlbSAqLywgY29uc3QgU3RyaW5nJiAvKiBzZXNzaW9uSWQg
Ki8pIHsgfQpAQCAtMjgwLDE5ICsyNzQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbGF5KCk7CiAg
ICAgdm9pZCBwYXVzZSgpOyAgICAKIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgZW51
bSBBZGRJZFN0YXR1cyB7IE9rLCBOb3RTdXBwb3J0ZWQsIFJlYWNoZWRJZExpbWl0IH07Ci0gICAg
QWRkSWRTdGF0dXMgc291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKTsKLSAgICBib29sIHNvdXJjZVJlbW92
ZUlkKGNvbnN0IFN0cmluZyYgaWQpOwotICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc291cmNl
QnVmZmVyZWQoY29uc3QgU3RyaW5nJiBpZCk7Ci0gICAgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3Qg
U3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsK
LSAgICB2b2lkIHNvdXJjZVNldER1cmF0aW9uKGRvdWJsZSk7Ci0gICAgYm9vbCBzb3VyY2VBYm9y
dChjb25zdCBTdHJpbmcmIGlkKTsKLSAgICBlbnVtIEVuZE9mU3RyZWFtU3RhdHVzIHsgRW9zTm9F
cnJvciwgRW9zTmV0d29ya0Vycm9yLCBFb3NEZWNvZGVFcnJvciB9OwotICAgIHZvaWQgc291cmNl
RW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpOwotICAgIGJvb2wgc291cmNlU2V0VGltZXN0
YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpOwotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIC8vIFJlcHJlc2VudHMgc3luY2hyb25vdXMg
ZXhjZXB0aW9ucyB0aGF0IGNhbiBiZSB0aHJvd24gZnJvbSB0aGUgRW5jcnlwdGVkIE1lZGlhIG1l
dGhvZHMuCiAgICAgLy8gVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYXN5bmNocm9ub3VzIE1l
ZGlhS2V5RXJyb3IuCkBAIC00MjIsMTEgKzQwMyw2IEBAIHB1YmxpYzoKICAgICBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCi0gICAgdm9pZCBzb3VyY2VPcGVuZWQoKTsKLSAgICBTdHJpbmcgc291cmNl
VVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAg
dm9pZCBrZXlBZGRlZChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpOwogICAgIHZvaWQga2V5RXJyb3IoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBNZWRpYVBsYXllckNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUs
IHVuc2lnbmVkIHNob3J0IHN5c3RlbUNvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCA1YzY2NzRkMmQzYTYz
OGNhMzA2MWQzZjkyMjlhYWFkZjIyYWE3ODQwLi5mODNlOGQ5NzZlNTRiZTZlNGE4MzQyMjNiMDY3
YzI4ZDVmNjJkNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTY3LDE3ICsxNjcsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgeyBy
ZXR1cm4gMDsgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHZpcnR1
YWwgTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQs
IGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcykgeyByZXR1
cm4gTWVkaWFQbGF5ZXI6Ok5vdFN1cHBvcnRlZDsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxU
aW1lUmFuZ2VzPiBzb3VyY2VCdWZmZXJlZChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBUaW1l
UmFuZ2VzOjpjcmVhdGUoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VSZW1vdmVJZChjb25z
dCBTdHJpbmcmIGlkKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VB
cHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VBYm9y
dChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBz
b3VyY2VTZXREdXJhdGlvbihkb3VibGUpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VFbmRP
ZlN0cmVhbShNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMpIHsgfQotICAgIHZpcnR1YWwg
Ym9vbCBzb3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIG9m
ZnNldCkgeyByZXR1cm4gZmFsc2U7IH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBhZGRLZXko
Y29uc3QgU3RyaW5nJiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkLCBjb25zdCB1bnNp
Z25lZCBjaGFyKiwgdW5zaWduZWQsIGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIE1lZGlhUGxheWVy
OjpLZXlTeXN0ZW1Ob3RTdXBwb3J0ZWQ7IH0KICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpNZWRp
YUtleUV4Y2VwdGlvbiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgY29uc3QgdW5z
aWduZWQgY2hhciosIHVuc2lnbmVkKSB7IHJldHVybiBNZWRpYVBsYXllcjo6S2V5U3lzdGVtTm90
U3VwcG9ydGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVNvdXJjZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhU291cmNlUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkOTFkYTBjZmQwMTBlNjdmYWI3NWM1
Y2FjYWQzZjZiZmY5MGQxZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaApAQCAtMCwwICsxLDYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYg
TWVkaWFTb3VyY2VQcml2YXRlX2gKKyNkZWZpbmUgTWVkaWFTb3VyY2VQcml2YXRlX2gKKworI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTb3VyY2VQcml2YXRlIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShNZWRpYVNvdXJjZVByaXZhdGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBNZWRpYVNvdXJjZVByaXZhdGUoKSB7IH0KKyAgICB2aXJ0dWFsIH5N
ZWRpYVNvdXJjZVByaXZhdGUoKSB7IH0KKworICAgIGVudW0gQWRkSWRTdGF0dXMgeyBPaywgTm90
U3VwcG9ydGVkLCBSZWFjaGVkSWRMaW1pdCB9OworICAgIHZpcnR1YWwgQWRkSWRTdGF0dXMgYWRk
SWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgY29kZWNzKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlbW92ZUlkKGNvbnN0IFN0cmlu
ZyYgaWQpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQo
Y29uc3QgU3RyaW5nJiBpZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoY29uc3QgU3Ry
aW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSA9IDA7
CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dER1cmF0aW9uKGRvdWJsZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhYm9ydChjb25zdCBTdHJp
bmcmIGlkKSA9IDA7CisgICAgZW51bSBFbmRPZlN0cmVhbVN0YXR1cyB7IEVvc05vRXJyb3IsIEVv
c05ldHdvcmtFcnJvciwgRW9zRGVjb2RlRXJyb3IgfTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kT2ZT
dHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VGltZXN0
YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpID0gMDsKK307CisKK30K
KworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBhZmE1NGEw
MGU2M2Q0MzBiOTQzOGZlNDA5YTQ1MGRhYjVmMzE4NzVlLi4xZTlkMjhhNjc1YmRmZDBlY2QyODFh
NDEzMzExZTU0ZjdiNWY2M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xOTYs
NiArMTk2LDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlhUGxheWVyLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFQbGF5ZXJBY3Rpb24uaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVBsYXllckNsaWVudC5oJywKKyAgICAgICAgICAgICAg
ICAncHVibGljL1dlYk1lZGlhU291cmNlLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
TWVkaWFTb3VyY2VDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVN0
cmVhbVJlZ2lzdHJ5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVtb3J5VXNhZ2VJ
bmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVudUl0ZW1JbmZvLmgnLApAQCAt
NTA2LDYgKzUwOCw5IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJMYWJlbEVsZW1lbnQuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgnLAorICAgICAg
ICAgICAgICAgICdzcmMvV2ViTWVkaWFTb3VyY2UuY3BwJywKKyAgICAgICAgICAgICAgICAnc3Jj
L1dlYk1lZGlhU291cmNlSW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFT
b3VyY2VJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFTdHJlYW1SZWdpc3Ry
eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTmV0d29ya1N0YXRlTm90aWZpZXIuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk5vZGUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllckNsaWVudC5oCmluZGV4IGRlY2E5
NTM2ZDk5YTQ1Y2IyMTVlOGVhNWUyMDRhNjE4OTc1NWM0YjMuLmM4MmZkM2FjYzY1NjliYTI3MGMx
Yjc2ZDdhNjFjYjlkMzM1YTlhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOworY2xhc3MgV2ViTWVkaWFTb3VyY2U7CiBj
bGFzcyBXZWJQbHVnaW47CiBjbGFzcyBXZWJSZXF1ZXN0OwogY2xhc3MgV2ViVVJMOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU291cmNlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmIzZmFjMjkyMWZiMzY2OWRiMjY5MDZhNWQ3YWE2MTkxZjE3NmQ1ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU291cmNlLmgKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFTb3VyY2VfaAorI2RlZmluZSBXZWJNZWRpYVNvdXJj
ZV9oCisKKyNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVVJM
LmgiCisjaW5jbHVkZSAiV2ViVGltZVJhbmdlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJNZWRpYVNvdXJjZUNsaWVudDsKKworY2xhc3MgV2ViTWVkaWFTb3VyY2UgeworcHVi
bGljOgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYk1lZGlhU291cmNlKiBnZXRNZWRpYVNv
dXJjZUZvclVSTChjb25zdCBXZWJVUkwmKTsKKworICAgIHZpcnR1YWwgfldlYk1lZGlhU291cmNl
KCk7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oV2ViTWVkaWFTb3VyY2VDbGllbnQqKSA9IDA7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVNvdXJjZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2VDbGllbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZTY1MDkwNGJiNDJiZjhmZmEwZTc2YzczN2I5ZmVlZGMxYWU5ZjEwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2VDbGllbnQuaApA
QCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVNvdXJjZUNsaWVudF9oCisjZGVmaW5lIFdl
Yk1lZGlhU291cmNlQ2xpZW50X2gKKworI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJUaW1lUmFuZ2UuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU291cmNlQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBlbnVtIEFkZElkU3RhdHVzIHsKKyAgICAgICAgQWRkSWRTdGF0dXNPaywKKyAgICAgICAg
QWRkSWRTdGF0dXNOb3RTdXBwb3J0ZWQsCisgICAgICAgIEFkZElkU3RhdHVzUmVhY2hlZElkTGlt
aXQKKyAgICB9OworCisgICAgZW51bSBFbmRPZlN0cmVhbVN0YXR1cyB7CisgICAgICAgIEVuZE9m
U3RyZWFtU3RhdHVzTm9FcnJvciwKKyAgICAgICAgRW5kT2ZTdHJlYW1TdGF0dXNOZXR3b3JrRXJy
b3IsCisgICAgICAgIEVuZE9mU3RyZWFtU3RhdHVzRGVjb2RlRXJyb3IsCisgICAgfTsKKworICAg
IHZpcnR1YWwgfldlYk1lZGlhU291cmNlQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIEFkZElk
U3RhdHVzIGFkZElkKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0IFdlYlN0cmluZyYgdHlwZSwg
Y29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGNvZGVjcykgPSAwOworICAgIHZpcnR1YWwgYm9v
bCByZW1vdmVJZChjb25zdCBXZWJTdHJpbmcmIGlkKSA9IDA7CisgICAgdmlydHVhbCBXZWJUaW1l
UmFuZ2VzIGJ1ZmZlcmVkKGNvbnN0IFdlYlN0cmluZyYgaWQpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgYXBwZW5kKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhYm9ydChjb25zdCBXZWJT
dHJpbmcmIGlkKSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
bmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRU
aW1lc3RhbXBPZmZzZXQoY29uc3QgV2ViU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCkgPSAwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCBiOTcyNTE2NTNk
YTJkMDgzZGVlM2QzMWVjMTQ0Y2E1N2YyMTU3MWRhLi5mNmIyYmJhYzdlMzgzYmM3ZWQ3ZWIwOTE3
NjVkMDU1ZmE2MGVlYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNjIsNiArNjIsOSBAQAogI2luY2x1ZGUgIklEQk1l
dGFkYXRhLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgi
CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVByaXZhdGUu
aCIKKyNlbmRpZgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiTm90
aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgpAQCAt
MTA1LDYgKzEwOCw3IEBACiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
V2ViTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVudC5oIgorI2lu
Y2x1ZGUgIldlYk1lZGlhU291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9u
UHJlc2VudGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1
ZGUgIldlYlNldHRpbmdzLmgiCkBAIC00MDksMTUgKzQxMywxMyBAQCBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpQcmVsb2FkTWV0YURhdGEsIE1lZGlhUGxheWVy
OjpNZXRhRAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6UHJl
bG9hZEF1dG8sIE1lZGlhUGxheWVyOjpBdXRvKTsKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpBZGRJZFN0YXR1
c09rLCBNZWRpYVBsYXllcjo6T2spOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJN
ZWRpYVBsYXllcjo6QWRkSWRTdGF0dXNOb3RTdXBwb3J0ZWQsIE1lZGlhUGxheWVyOjpOb3RTdXBw
b3J0ZWQpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6QWRk
SWRTdGF0dXNSZWFjaGVkSWRMaW1pdCwgTWVkaWFQbGF5ZXI6OlJlYWNoZWRJZExpbWl0KTsKLSNl
bmRpZgorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6
QWRkSWRTdGF0dXNPaywgTWVkaWFTb3VyY2VQcml2YXRlOjpPayk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYk1lZGlhU291cmNlQ2xpZW50OjpBZGRJZFN0YXR1c05vdFN1cHBvcnRl
ZCwgTWVkaWFTb3VyY2VQcml2YXRlOjpOb3RTdXBwb3J0ZWQpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6QWRkSWRTdGF0dXNSZWFjaGVkSWRMaW1p
dCwgTWVkaWFTb3VyY2VQcml2YXRlOjpSZWFjaGVkSWRMaW1pdCk7CiAKLSNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXll
cjo6RW5kT2ZTdHJlYW1TdGF0dXNOb0Vycm9yLCBNZWRpYVBsYXllcjo6RW9zTm9FcnJvcik7Ci1D
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0
YXR1c05ldHdvcmtFcnJvciwgTWVkaWFQbGF5ZXI6OkVvc05ldHdvcmtFcnJvcik7Ci1DT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1c0Rl
Y29kZUVycm9yLCBNZWRpYVBsYXllcjo6RW9zRGVjb2RlRXJyb3IpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6RW5kT2ZTdHJlYW1TdGF0dXNOb0Vy
cm9yLCBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05vRXJyb3IpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6RW5kT2ZTdHJlYW1TdGF0dXNOZXR3b3Jr
RXJyb3IsIE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zTmV0d29ya0Vycm9yKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFTb3VyY2VDbGllbnQ6OkVuZE9mU3RyZWFtU3RhdHVz
RGVjb2RlRXJyb3IsIE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zRGVjb2RlRXJyb3IpOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggZWYzNTBk
NzFhMDBkMWYwMTc5YzAyOTQ0ZDQwN2M5ODE2OWRjYWZkOS4uMzYzNmM3NjRkNDFmNDU5ZmEzN2Y5
MTU4NDFhNTBmZjA1MGQzZThjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAj
aW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSGVscGVyUGx1Z2luSW1wbC5o
IgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTb3VyY2Uu
aCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXdJ
bXBsLmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YkNTdHJpbmcuaD4KQEAgLTQ5LDYgKzUxLDgzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorLy8gVE9ETyhhY29sd2VsbCk6IFJlbW92ZSB0aGlzIGNs
YXNzIG9uY2UgdGhlIENocm9taXVtIGNvZGUgc3RhcnRzIGNhbGxpbmcKKy8vIFdlYk1lZGlhU291
cmNlOjpnZXRNZWRpYVNvdXJjZUZvclVSTCgpIGFuZCBvcGVuaW5nIHRoZSBXZWJNZWRpYVNvdXJj
ZSBvYmplY3QKKy8vIGl0c2VsZi4KK2NsYXNzIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbCA6IHB1
YmxpYyBXZWJNZWRpYVNvdXJjZUNsaWVudCB7CitwdWJsaWM6CisgICAgV2ViTWVkaWFTb3VyY2VD
bGllbnRJbXBsKFdlYk1lZGlhUGxheWVyKik7CisgICAgdmlydHVhbCB+V2ViTWVkaWFTb3VyY2VD
bGllbnRJbXBsKCk7CisKKyAgICAvLyBXZWJNZWRpYVNvdXJjZUNsaWVudCBtZXRob2RzLgorICAg
IHZpcnR1YWwgQWRkSWRTdGF0dXMgYWRkSWQoY29uc3QgV2ViU3RyaW5nJiBpZCwgY29uc3QgV2Vi
U3RyaW5nJiB0eXBlLCBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgY29kZWNzKTsKKyAgICB2
aXJ0dWFsIGJvb2wgcmVtb3ZlSWQoY29uc3QgV2ViU3RyaW5nJiBpZCk7CisgICAgdmlydHVhbCBX
ZWJUaW1lUmFuZ2VzIGJ1ZmZlcmVkKGNvbnN0IFdlYlN0cmluZyYgaWQpOworICAgIHZpcnR1YWwg
Ym9vbCBhcHBlbmQoY29uc3QgV2ViU3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWJvcnQoY29uc3QgV2ViU3Ry
aW5nJiBpZCk7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RHVyYXRpb24oZG91YmxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kT2ZTdHJlYW0oRW5k
T2ZTdHJlYW1TdGF0dXMpOworICAgIHZpcnR1YWwgYm9vbCBzZXRUaW1lc3RhbXBPZmZzZXQoY29u
c3QgV2ViU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCk7CisKK3ByaXZhdGU6CisgICAgV2ViTWVk
aWFQbGF5ZXIqIG1fd2ViTWVkaWFQbGF5ZXI7Cit9OworCitXZWJNZWRpYVNvdXJjZUNsaWVudElt
cGw6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbChXZWJNZWRpYVBsYXllciogd2ViTWVkaWFQbGF5
ZXIpCisgICAgOiBtX3dlYk1lZGlhUGxheWVyKHdlYk1lZGlhUGxheWVyKQoreworfQorCitXZWJN
ZWRpYVNvdXJjZUNsaWVudEltcGw6On5XZWJNZWRpYVNvdXJjZUNsaWVudEltcGwoKQoreworfQor
CitXZWJNZWRpYVNvdXJjZUNsaWVudDo6QWRkSWRTdGF0dXMgV2ViTWVkaWFTb3VyY2VDbGllbnRJ
bXBsOjphZGRJZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCBXZWJTdHJpbmcmIHR5cGUsIGNv
bnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBjb2RlY3MpCit7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYk1lZGlhU291cmNlQ2xpZW50OjpBZGRJZFN0YXR1cz4obV93ZWJNZWRpYVBsYXllci0+
c291cmNlQWRkSWQoaWQsIHR5cGUsIGNvZGVjcykpOworfQorCitib29sIFdlYk1lZGlhU291cmNl
Q2xpZW50SW1wbDo6cmVtb3ZlSWQoY29uc3QgV2ViU3RyaW5nJiBpZCkKK3sKKyAgICByZXR1cm4g
bV93ZWJNZWRpYVBsYXllci0+c291cmNlUmVtb3ZlSWQoaWQpOworfQorCitXZWJUaW1lUmFuZ2Vz
IFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6YnVmZmVyZWQoY29uc3QgV2ViU3RyaW5nJiBpZCkK
K3sKKyAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlQnVmZmVyZWQoaWQpOworfQor
Citib29sIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6YXBwZW5kKGNvbnN0IFdlYlN0cmluZyYg
aWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBy
ZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlQXBwZW5kKGlkLCBkYXRhLCBsZW5ndGgpOwor
fQorCitib29sIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6YWJvcnQoY29uc3QgV2ViU3RyaW5n
JiBpZCkKK3sKKyAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlQWJvcnQoaWQpOwor
fQorCitkb3VibGUgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpkdXJhdGlvbigpCit7CisgICAg
cmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPmR1cmF0aW9uKCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFT
b3VyY2VDbGllbnRJbXBsOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit7CisgICAgcmV0
dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVNldER1cmF0aW9uKGR1cmF0aW9uKTsKK30KKwor
dm9pZCBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmVuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3Rh
dHVzIHN0YXR1cykKK3sKKyAgICBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VFbmRPZlN0cmVhbShz
dGF0aWNfY2FzdDxXZWJNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXM+KHN0YXR1cykpOwor
fQorCitib29sIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6c2V0VGltZXN0YW1wT2Zmc2V0KGNv
bnN0IFdlYlN0cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpCit7CisgICAgcmV0dXJuIG1fd2ViTWVk
aWFQbGF5ZXItPnNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChpZCwgb2Zmc2V0KTsKK30KKwogc3Rh
dGljIFBhc3NPd25QdHI8V2ViTWVkaWFQbGF5ZXI+IGNyZWF0ZVdlYk1lZGlhUGxheWVyKFdlYk1l
ZGlhUGxheWVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYlVSTCYgdXJsLCBGcmFtZSogZnJhbWUp
CiB7CiAgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1l
KGZyYW1lKTsKQEAgLTIxOCwyMiArMjk3LDMwIEBAIFdlYk1lZGlhUGxheWVyOjpQcmVsb2FkIFdl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cHJlbG9hZCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdlYk1lZGlhUGxheWVyOjpQcmVsb2FkPihtX3ByZWxvYWQpOwogfQogCisvLyBUT0RP
KGFjb2x3ZWxsKTogUmVtb3ZlIHRoaXMgYW5kIHNvdXJjZVVSTCgpIG9uY2UgdGhlIENocm9taXVt
IGNvZGUgc3RhcnRzCisvLyBjYWxsaW5nIFdlYk1lZGlhU291cmNlOjpnZXRNZWRpYVNvdXJjZUZv
clVSTCgpIGFuZCBvcGVuaW5nIHRoZSBXZWJNZWRpYVNvdXJjZQorLy8gaXRzZWxmLgogdm9pZCBX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZU9wZW5lZCgpCiB7CiAjaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKLSAgICBBU1NFUlQobV9tZWRpYVBsYXllcik7Ci0gICAgbV9tZWRpYVBsYXll
ci0+c291cmNlT3BlbmVkKCk7CisgICAgQVNTRVJUKG1fd2ViTWVkaWFQbGF5ZXIpOworICAgIEtV
UkwgdXJsKFBhcnNlZFVSTFN0cmluZywgbV91cmwpOworICAgIE93blB0cjxXZWJNZWRpYVNvdXJj
ZT4gbWVkaWFTb3VyY2UgPSBhZG9wdFB0cihXZWJNZWRpYVNvdXJjZTo6Z2V0TWVkaWFTb3VyY2VG
b3JVUkwodXJsKSk7CisgICAgaWYgKG1lZGlhU291cmNlKQorICAgICAgICBtZWRpYVNvdXJjZS0+
b3BlbihuZXcgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsKG1fd2ViTWVkaWFQbGF5ZXIuZ2V0KCkp
KTsKICNlbmRpZgogfQogCiBXZWJLaXQ6OldlYlVSTCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6
OnNvdXJjZVVSTCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBBU1NF
UlQobV9tZWRpYVBsYXllcik7Ci0gICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX21l
ZGlhUGxheWVyLT5zb3VyY2VVUkwoKSk7Ci0jZWxzZQotICAgIHJldHVybiBLVVJMKCk7CisgICAg
S1VSTCB1cmwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybCk7CisgICAgT3duUHRyPFdlYk1lZGlhU291
cmNlPiBtZWRpYVNvdXJjZSA9IGFkb3B0UHRyKFdlYk1lZGlhU291cmNlOjpnZXRNZWRpYVNvdXJj
ZUZvclVSTCh1cmwpKTsKKworICAgIGlmIChtZWRpYVNvdXJjZSkKKyAgICAgICAgcmV0dXJuIHVy
bDsKICNlbmRpZgorICAgIHJldHVybiBLVVJMKCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjprZXlBZGRlZChjb25zdCBXZWJTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgV2Vi
U3RyaW5nJiBzZXNzaW9uSWQpCkBAIC00MDcsNzAgKzQ5NCw2IEBAIGJvb2wgV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjpjYW5FbnRlckZ1bGxzY3JlZW4oKSBjb25zdAogfQogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQotV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVz
IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKQotewotICAg
IGlmICghbV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpOb3RTdXBwb3J0ZWQ7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OkFkZElkU3RhdHVzPihtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBZGRJZChpZCwg
dHlwZSwgY29kZWNzKSk7Ci19Ci0KLWJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3Vy
Y2VSZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKQotewotICAgIGlmICghbV93ZWJNZWRpYVBsYXll
cikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXIt
PnNvdXJjZVJlbW92ZUlkKGlkKTsKLX0KLQotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBXZWJNZWRp
YVBsYXllckNsaWVudEltcGw6OnNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpCi17Ci0g
ICAgaWYgKCFtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3Jl
YXRlKCk7Ci0KLSAgICBXZWJUaW1lUmFuZ2VzIHdlYlJhbmdlcyA9IG1fd2ViTWVkaWFQbGF5ZXIt
PnNvdXJjZUJ1ZmZlcmVkKGlkKTsKLSAgICBSZWZQdHI8VGltZVJhbmdlcz4gcmFuZ2VzID0gVGlt
ZVJhbmdlczo6Y3JlYXRlKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJSYW5nZXMu
c2l6ZSgpOyArK2kpCi0gICAgICAgIHJhbmdlcy0+YWRkKHdlYlJhbmdlc1tpXS5zdGFydCwgd2Vi
UmFuZ2VzW2ldLmVuZCk7Ci0gICAgcmV0dXJuIHJhbmdlcy5yZWxlYXNlKCk7Ci19Ci0KLWJvb2wg
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VBcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwg
Y29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIGlmICht
X3dlYk1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNl
QXBwZW5kKGlkLCBkYXRhLCBsZW5ndGgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYgaWQpCi17
Ci0gICAgaWYgKCFtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlQWJvcnQoaWQpOwotfQotCi12b2lkIFdl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlU2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9u
KQotewotICAgIGlmIChtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICBtX3dlYk1lZGlhUGxheWVy
LT5zb3VyY2VTZXREdXJhdGlvbihkdXJhdGlvbik7Ci19Ci0KLXZvaWQgV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpzb3VyY2VFbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRpYVBsYXllcjo6RW5kT2ZT
dHJlYW1TdGF0dXMgc3RhdHVzKQotewotICAgIGlmIChtX3dlYk1lZGlhUGxheWVyKQotICAgICAg
ICBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VFbmRPZlN0cmVhbShzdGF0aWNfY2FzdDxXZWJNZWRp
YVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXM+KHN0YXR1cykpOwotfQotCi1ib29sIFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbDo6c291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYg
aWQsIGRvdWJsZSBvZmZzZXQpCi17Ci0gICAgaWYgKCFtX3dlYk1lZGlhUGxheWVyKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVNldFRp
bWVzdGFtcE9mZnNldChpZCwgb2Zmc2V0KTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBXZWJNZWRpYVBsYXll
ckNsaWVudEltcGw6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Y29uc3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuaAppbmRleCAzZjcwYzczNWNjYjY2OGRiZjVmZmI1NzM4NWQ3MGI0Y2ZiNGFlNzYx
Li45OTBhZWU4ZjczZDE3ZWY1NTg5YWZhMTY2NWViMDNlYTIyYjI0YWUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaApA
QCAtMTU3LDE3ICsxNTcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dEN1cnJlbnRG
cmFtZShXZWJWaWRlb0ZyYW1lKik7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXMgc291cmNlQWRk
SWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgY29kZWNzKTsKLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlUmVtb3ZlSWQoY29uc3QgU3Ry
aW5nJik7Ci0gICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VGltZVJhbmdlcz4g
c291cmNlQnVmZmVyZWQoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUFw
cGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VBYm9ydChjb25zdCBTdHJpbmcmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc291cmNlU2V0RHVyYXRpb24oZG91YmxlKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc291cmNlRW5kT2ZTdHJlYW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3Rh
dHVzKTsKLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0
cmluZyYsIGRvdWJsZSBvZmZzZXQpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQogICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9u
IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgdW5zaWdu
ZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBhZGRLZXko
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGtleSwgdW5zaWdu
ZWQga2V5TGVuZ3RoLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5p
dERhdGFMZW5ndGgsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBPVkVSUklERTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNlSW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZUltcGwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhmMzk5YTNjMzUxYmM4NWJiNjE0NDc0MjY5MmNhMGM4ZDVhNmM5NDgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZUltcGwuY3Bw
CkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk1lZGlh
U291cmNlSW1wbC5oIgorCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VQcml2YXRlLmgiCisjaW5jbHVk
ZSAiV2ViTWVkaWFTb3VyY2VDbGllbnQuaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVJbXBsIDogcHVi
bGljIFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgTWVkaWFTb3Vy
Y2VQcml2YXRlSW1wbChQYXNzT3duUHRyPFdlYk1lZGlhU291cmNlQ2xpZW50Pik7CisgICAgdmly
dHVhbCB+TWVkaWFTb3VyY2VQcml2YXRlSW1wbCgpIHsgfQorCisgICAgLy8gTWVkaWFTb3VyY2VQ
cml2YXRlIG1ldGhvZHMuCisgICAgdmlydHVhbCBXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6
OkFkZElkU3RhdHVzIGFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcyk7CisgICAgdmlydHVhbCBib29sIHJlbW92ZUlk
KGNvbnN0IFN0cmluZyYgaWQpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpUaW1l
UmFuZ2VzPiBidWZmZXJlZChjb25zdCBTdHJpbmcmIGlkKTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBw
ZW5kKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCk7CisgICAgdmlydHVhbCBib29sIGFib3J0KGNvbnN0IFN0cmluZyYgaWQpOworICAg
IHZpcnR1YWwgZG91YmxlIGR1cmF0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9u
KGRvdWJsZSk7CisgICAgdmlydHVhbCB2b2lkIGVuZE9mU3RyZWFtKFdlYkNvcmU6Ok1lZGlhU291
cmNlUHJpdmF0ZTo6RW5kT2ZTdHJlYW1TdGF0dXMpOworICAgIHZpcnR1YWwgYm9vbCBzZXRUaW1l
c3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCk7CisKK3ByaXZhdGU6
CisgICAgT3duUHRyPFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnQ+IG1fY2xpZW50OworfTsK
KworTWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbChQYXNzT3du
UHRyPFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnQ+IGNsaWVudCkKKyAgICA6IG1fY2xpZW50
KGNsaWVudCkKK3sKK30KKworV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRJZFN0YXR1
cyBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjphZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpCit7CisgICAgaWYgKCFt
X2NsaWVudCkKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6Tm90
U3VwcG9ydGVkOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1lZGlhU291cmNl
UHJpdmF0ZTo6QWRkSWRTdGF0dXM+KG1fY2xpZW50LT5hZGRJZChpZCwgdHlwZSwgY29kZWNzKSk7
Cit9CisKK2Jvb2wgTWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6cmVtb3ZlSWQoY29uc3QgU3RyaW5n
JiBpZCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gbV9jbGllbnQtPnJlbW92ZUlkKGlkKTsKK30KKworUGFzc1JlZlB0cjxXZWJDb3Jl
OjpUaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpidWZmZXJlZChjb25zdCBTdHJp
bmcmIGlkKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpU
aW1lUmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIFdlYlRpbWVSYW5nZXMgd2ViUmFuZ2VzID0gbV9j
bGllbnQtPmJ1ZmZlcmVkKGlkKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGltZVJhbmdlcz4gcmFu
Z2VzID0gV2ViQ29yZTo6VGltZVJhbmdlczo6Y3JlYXRlKCk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB3ZWJSYW5nZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHJhbmdlcy0+YWRkKHdlYlJh
bmdlc1tpXS5zdGFydCwgd2ViUmFuZ2VzW2ldLmVuZCk7CisgICAgcmV0dXJuIHJhbmdlcy5yZWxl
YXNlKCk7Cit9CisKK2Jvb2wgTWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6YXBwZW5kKGNvbnN0IFN0
cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3sK
KyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
bV9jbGllbnQtPmFwcGVuZChpZCwgZGF0YSwgbGVuZ3RoKTsKK30KKworYm9vbCBNZWRpYVNvdXJj
ZVByaXZhdGVJbXBsOjphYm9ydChjb25zdCBTdHJpbmcmIGlkKQoreworICAgIGlmICghbV9jbGll
bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2NsaWVudC0+YWJvcnQo
aWQpOworfQorCitkb3VibGUgTWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6ZHVyYXRpb24oKQorewor
ICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6cXVpZXRfTmFOKCk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5kdXJhdGlvbigpOworfQor
Cit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlv
bikKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zZXREdXJhdGlvbihk
dXJhdGlvbik7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6ZW5kT2ZTdHJlYW0o
V2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpFbmRPZlN0cmVhbVN0YXR1cyBzdGF0dXMpCit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZW5kT2ZTdHJlYW0oc3RhdGlj
X2Nhc3Q8V2ViTWVkaWFTb3VyY2VDbGllbnQ6OkVuZE9mU3RyZWFtU3RhdHVzPihzdGF0dXMpKTsK
K30KKworYm9vbCBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpzZXRUaW1lc3RhbXBPZmZzZXQoY29u
c3QgU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY2xpZW50LT5zZXRUaW1lc3RhbXBPZmZz
ZXQoaWQsIG9mZnNldCk7Cit9CisKKworV2ViTWVkaWFTb3VyY2VJbXBsOjpXZWJNZWRpYVNvdXJj
ZUltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJjZT4gbWVkaWFTb3VyY2UpCit7Cisg
ICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOworfQorCitXZWJNZWRpYVNvdXJjZUltcGw6
On5XZWJNZWRpYVNvdXJjZUltcGwoKQoreworfQorCisKK3ZvaWQgV2ViTWVkaWFTb3VyY2VJbXBs
OjpvcGVuKFdlYk1lZGlhU291cmNlQ2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKGNsaWVu
dCk7CisgICAgbV9tZWRpYVNvdXJjZS0+c2V0UHJpdmF0ZUFuZE9wZW4oYWRvcHRQdHIobmV3IE1l
ZGlhU291cmNlUHJpdmF0ZUltcGwoYWRvcHRQdHIoY2xpZW50KSkpKTsKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNl
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjhhYjMxZTJiNWRiZjdjNWQ3ZmJlZmEyNjFlYWRmZWRjYTlmNWYwOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNl
SW1wbC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhU291cmNlSW1wbF9oCisjZGVm
aW5lIFdlYk1lZGlhU291cmNlSW1wbF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisj
aW5jbHVkZSAiTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZS5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFTb3VyY2VJbXBsIDogcHVibGljIFdl
Yk1lZGlhU291cmNlIHsKK3B1YmxpYzoKKyAgICBXZWJNZWRpYVNvdXJjZUltcGwoUGFzc1JlZlB0
cjxXZWJDb3JlOjpNZWRpYVNvdXJjZT4pOworICAgIHZpcnR1YWwgfldlYk1lZGlhU291cmNlSW1w
bCgpOworCisgICAgLy8gV2ViTWVkaWFTb3VyY2UgbWV0aG9kcy4KKyAgICB2aXJ0dWFsIHZvaWQg
b3BlbihXZWJNZWRpYVNvdXJjZUNsaWVudCopOworCitwcml2YXRlOgorICAgIFJlZlB0cjxXZWJD
b3JlOjpNZWRpYVNvdXJjZT4gbV9tZWRpYVNvdXJjZTsKK307CisKK30KKworI2VuZGlmCisKKyNl
bmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188605</attachid>
            <date>2013-02-15 11:26:37 -0800</date>
            <delta_ts>2013-02-20 13:57:30 -0800</delta_ts>
            <desc>Add missing file</desc>
            <filename>bug-109857-20130215112303.patch</filename>
            <type>text/plain</type>
            <size>58429</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBhZTRkNjk2MjNjNDY2
NDc1YzliMmVjMmJkMTQzZTFiMjQ3NzliNS4uMDAwYTc3YzdmZDdhZGU4NWEzZTgyODc5ZDlmY2Fh
OWQ5OWUzN2I4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAyLTE1ICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZhY3RvciBNZWRp
YVNvdXJjZSBtZXRob2RzIG91dCBvZiBNZWRpYVBsYXllciAmIE1lZGlhUGxheWVyUHJpdmF0ZSBh
bmQgaW50byBhIG5ldyBNZWRpYVNvdXJjZVByaXZhdGUgaW50ZXJmYWNlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHNpbXBsZSByZWZh
Y3RvciB0aGF0IG1vdmVzIE1lZGlhU291cmNlIHJlbGF0ZWQgbWV0aG9kcyBvdXQgb2YgTWVkaWFQ
bGF5ZXIgJiBNZWRpYVBsYXllclByaXZhdGUKKyAgICAgICAgc28gdGhhdCB0aGUgTWVkaWFTb3Vy
Y2UgaW1wbGVtZW50YXRpb24gY2FuIGJlIHVwZGF0ZWQgd2l0aG91dCBmdXJ0aGVyIHBvbGx1dGlu
ZyB0aGVzZSBpbnRlcmZhY2VzLgorICAgICAgICBNZWRpYVNvdXJjZVByaXZhdGUgaXMgdGhlIG5l
dyBXZWJDb3JlIGludGVyZmFjZSB0aGF0IHBvcnRzIG11c3QgaW1wbGVtZW50IHRvIHN1cHBvcnQg
dGhlIE1lZGlhU291cmNlIEFQSS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIHVzZXIgdmlz
aWJsZSBiZWhhdmlvciBoYXMgY2hhbmdlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Ok1lZGlh
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpkdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlOjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjplbmRP
ZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YnVmZmVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNvdXJjZTo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldFRp
bWVzdGFtcE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0
ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpzdG9wKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmg6Cisg
ICAgICAgIChNZWRpYVNvdXJjZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNZWRpYUVsZW1l
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChNZWRpYVBsYXllckNsaWVudCk6CisgICAgICAgIChNZWRpYVBsYXllcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAg
IChNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhU291cmNlUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoTWVkaWFTb3VyY2VQcml2YXRlKTogQ29udGFpbnMgdGhlIE1lZGlhU291cmNlIG1ldGhv
ZHMgZXh0cmFjdGVkIGZyb20gTWVkaWFQbGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZVByaXZhdGU6Ok1lZGlhU291cmNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGU6On5NZWRpYVNvdXJjZVByaXZhdGUpOgorCiAyMDEzLTAyLTE1ICBBbmRy
ZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBFbGVtZW50RGF0YTogTW92
ZSBsZWFmeSB0aGluZ3Mgb3V0IG9mIHRoZSBiYXNlIGNsYXNzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBjYjMxNmUwMWVlYTdhNDUzOWIxMTlmYjcyZjFmZDk5MTVmYzRmZjJlLi5kMTJm
ZmYzZDFkODk1OTlmMjY4MGU3YWU4ZDYzY2IwZjQ5ZjAyZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEzLTAyLTE1ICBBYXJvbiBDb2x3ZWxsICA8YWNv
bHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZhY3RvciBNZWRpYVNvdXJjZSBtZXRob2Rz
IG91dCBvZiBNZWRpYVBsYXllciAmIE1lZGlhUGxheWVyUHJpdmF0ZSBhbmQgaW50byBhIG5ldyBN
ZWRpYVNvdXJjZVByaXZhdGUgaW50ZXJmYWNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViTWVkaWFTb3VyY2UgYW5kIFdlYk1lZGlhU291cmNlIGNs
aWVudCB3ZXJlIGNyZWF0ZWQgdG8gcmVwbGFjZSB0aGUgTWVkaWFTb3VyY2UgbWV0aG9kcyBpbiBX
ZWJNZWRpYVBsYXllciBhbmQKKyAgICAgICAgV2ViTWVkaWFQbGF5ZXJDbGllbnQuIFRoaXMgYWxs
b3dzIHRoZSBNZWRpYVNvdXJjZSBpbXBsZW1lbnRhdGlvbiB0byBiZSB1cGRhdGVkIHdpdGhvdXQg
ZnVydGhlciBwb2xsdXRpbmcgdGhlCisgICAgICAgIG1lZGlhIHBsYXllciBpbnRlcmZhY2VzLgor
CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFQbGF5ZXJD
bGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhU291
cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhU291cmNl
KToKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFTb3VyY2VDbGllbnQuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTWVkaWFTb3VyY2VDbGllbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudDo6fldlYk1lZGlhU291cmNlQ2xpZW50KToKKyAg
ICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL1dlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
TWVkaWFTb3VyY2VDbGllbnRJbXBsKTogVGVtcG9yYXJ5IFdlYk1lZGlhU291cmNlQ2xpZW50IGlt
cGxlbWVudGF0aW9uIHRvIGtlZXAgdGhpbmdzIHdvcmtpbmcgdW50aWwgQ2hyb21pdW0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgbGFuZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6On5XZWJNZWRpYVNv
dXJjZUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudElt
cGw6OmFkZElkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpy
ZW1vdmVJZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6YnVm
ZmVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmFwcGVu
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6YWJvcnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmR1cmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpzZXREdXJhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6ZW5kT2ZTdHJlYW0pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OnNldFRpbWVzdGFtcE9m
ZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNl
T3BlbmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3Vy
Y2VVUkwpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAg
ICAgKFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYk1lZGlhU291
cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVNvdXJjZTo6Z2V0TWVkaWFTb3VyY2VGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVNvdXJjZTo6fldlYk1lZGlhU291cmNlKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTb3Vy
Y2VJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTWVkaWFTb3Vy
Y2VQcml2YXRlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6
On5NZWRpYVNvdXJjZVByaXZhdGVJbXBsKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQ
cml2YXRlSW1wbDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhU291cmNlUHJpdmF0ZUltcGw6OmFkZElkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3Vy
Y2VQcml2YXRlSW1wbDo6cmVtb3ZlSWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVBy
aXZhdGVJbXBsOjpidWZmZXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0
ZUltcGw6OmFwcGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6
OmFib3J0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6ZHVyYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpzZXREdXJhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmVuZE9mU3RyZWFt
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6c2V0VGltZXN0YW1w
T2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VJbXBsOjpXZWJNZWRpYVNv
dXJjZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUltcGw6On5XZWJNZWRp
YVNvdXJjZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUltcGw6Om9wZW4p
OgorICAgICAgICAqIHNyYy9XZWJNZWRpYVNvdXJjZUltcGwuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViTWVkaWFTb3VyY2VJbXBsKToKKwogMjAxMy0wMi0xNSAgS2Vp
c2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBQYWdlUG9wdXBDb250
cm9sbGVyLmZvcm1hdE1vbnRoIHNob3VsZCBzdXBwb3J0IHNob3J0IG1vbnRoIGZvcm1hdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApp
bmRleCBmZDY0Mjk1ZDU5ZDdhZWViNzY2OTU4MTg1ZGVkYjFjYThmMjc3NjdhLi5lNmJmZTI0MmFk
MmQzMjQ2NzMxYTcwNjQ4MGE4ZDZiMTBlYzViZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtNTAsNyArNTAsNiBAQCBQ
YXNzUmVmUHRyPE1lZGlhU291cmNlPiBNZWRpYVNvdXJjZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCiBNZWRpYVNvdXJjZTo6TWVkaWFTb3VyY2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlz
KQogICAgICwgbV9yZWFkeVN0YXRlKGNsb3NlZEtleXdvcmQoKSkKLSAgICAsIG1fcGxheWVyKDAp
CiAgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKHRoaXMp
KQogewogICAgIG1fc291cmNlQnVmZmVycyA9IFNvdXJjZUJ1ZmZlckxpc3Q6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIG1fYXN5bmNFdmVudFF1ZXVlLmdldCgpKTsKQEAgLTg4LDcg
Kzg3LDcgQEAgU291cmNlQnVmZmVyTGlzdCogTWVkaWFTb3VyY2U6OmFjdGl2ZVNvdXJjZUJ1ZmZl
cnMoKQogCiBkb3VibGUgTWVkaWFTb3VyY2U6OmR1cmF0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjpxdWlldF9OYU4oKSA6IG1fcGxheWVyLT5kdXJhdGlvbigpOworICAgIHJldHVybiBt
X3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpID8gc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OnF1aWV0X05hTigpIDogbV9wcml2YXRlLT5kdXJhdGlvbigpOwogfQogCiB2b2lkIE1lZGlh
U291cmNlOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQpA
QCAtMTAxLDcgKzEwMCw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnNldER1cmF0aW9uKGRvdWJsZSBk
dXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9wbGF5ZXItPnNvdXJjZVNldER1cmF0
aW9uKGR1cmF0aW9uKTsKKyAgICBtX3ByaXZhdGUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKIH0K
IAogU291cmNlQnVmZmVyKiBNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMjYsNyArMTI1LDcgQEAgU291cmNlQnVm
ZmVyKiBNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSwgRXhj
ZXB0aW9uQ29kZSYgZWMKIAogICAgIC8vIDQuIElmIHRoZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSBp
cyBub3QgaW4gdGhlICJvcGVuIiBzdGF0ZSB0aGVuIHRocm93IGFuCiAgICAgLy8gSU5WQUxJRF9T
VEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoIW1fcGxh
eWVyIHx8IG1fcmVhZHlTdGF0ZSAhPSBvcGVuS2V5d29yZCgpKSB7CisgICAgaWYgKCFtX3ByaXZh
dGUgfHwgbV9yZWFkeVN0YXRlICE9IG9wZW5LZXl3b3JkKCkpIHsKICAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTQwLDIwICsxMzks
MjAgQEAgU291cmNlQnVmZmVyKiBNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IFN0
cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMKIAogICAgIFJlZlB0cjxTb3VyY2VCdWZmZXI+
IGJ1ZmZlciA9IFNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKGlkLCB0aGlzKTsKIAotICAgIHN3aXRjaCAo
bV9wbGF5ZXItPnNvdXJjZUFkZElkKGJ1ZmZlci0+aWQoKSwgY29udGVudFR5cGUudHlwZSgpLCBj
b2RlY3MpKSB7Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6T2s6CisgICAgc3dpdGNoIChtX3ByaXZh
dGUtPmFkZElkKGJ1ZmZlci0+aWQoKSwgY29udGVudFR5cGUudHlwZSgpLCBjb2RlY3MpKSB7Cisg
ICAgY2FzZSBNZWRpYVNvdXJjZVByaXZhdGU6Ok9rOgogICAgICAgICAvLyA2LiBBZGQgdGhlIG5l
dyBvYmplY3QgdG8gc291cmNlQnVmZmVycyBhbmQgZmlyZSBhIGFkZHNvdXJjZWJ1ZmZlciBvbiB0
aGF0IG9iamVjdC4KICAgICAgICAgbV9zb3VyY2VCdWZmZXJzLT5hZGQoYnVmZmVyKTsKICAgICAg
ICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5hZGQoYnVmZmVyKTsKICAgICAgICAgLy8gNy4gUmV0
dXJuIHRoZSBuZXcgb2JqZWN0IHRvIHRoZSBjYWxsZXIuCiAgICAgICAgIHJldHVybiBidWZmZXIu
Z2V0KCk7Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6Tm90U3VwcG9ydGVkOgorICAgIGNhc2UgTWVk
aWFTb3VyY2VQcml2YXRlOjpOb3RTdXBwb3J0ZWQ6CiAgICAgICAgIC8vIDIgKGNvbnQpLiBJZiB0
eXBlIGNvbnRhaW5zIGEgTUlNRSB0eXBlIC4uLiB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCB0
aGUgdHlwZXMgCiAgICAgICAgIC8vIHNwZWNpZmllZCBmb3IgdGhlIG90aGVyIFNvdXJjZUJ1ZmZl
ciBvYmplY3RzIGluIHNvdXJjZUJ1ZmZlcnMsIHRoZW4gdGhyb3cKICAgICAgICAgLy8gYSBOT1Rf
U1VQUE9SVEVEX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIE1lZGlh
UGxheWVyOjpSZWFjaGVkSWRMaW1pdDoKKyAgICBjYXNlIE1lZGlhU291cmNlUHJpdmF0ZTo6UmVh
Y2hlZElkTGltaXQ6CiAgICAgICAgIC8vIDMgKGNvbnQpLiBJZiB0aGUgdXNlciBhZ2VudCBjYW4n
dCBoYW5kbGUgYW55IG1vcmUgU291cmNlQnVmZmVyIG9iamVjdHMgdGhlbiB0aHJvdyAKICAgICAg
ICAgLy8gYSBRVU9UQV9FWENFRURFRF9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVw
cy4KICAgICAgICAgZWMgPSBRVU9UQV9FWENFRURFRF9FUlI7CkBAIC0xNzYsNyArMTc1LDcgQEAg
dm9pZCBNZWRpYVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlciogYnVmZmVy
LCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAgIC8vIDIuIElmIHNvdXJjZUJ1ZmZlcnMgaXMgZW1w
dHkgdGhlbiB0aHJvdyBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gYW5kCiAgICAgLy8g
YWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFtX3BsYXllciB8fCAhbV9zb3VyY2VCdWZmZXJz
LT5sZW5ndGgoKSkgeworICAgIGlmICghbV9wcml2YXRlIHx8ICFtX3NvdXJjZUJ1ZmZlcnMtPmxl
bmd0aCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0xOTIsNyArMTkxLDcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6cmVtb3ZlU291
cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlciogYnVmZmVyLCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAg
IC8vIDcuIERlc3Ryb3kgYWxsIHJlc291cmNlcyBmb3Igc291cmNlQnVmZmVyLgogICAgIG1fYWN0
aXZlU291cmNlQnVmZmVycy0+cmVtb3ZlKGJ1ZmZlcik7Ci0gICAgbV9wbGF5ZXItPnNvdXJjZVJl
bW92ZUlkKGJ1ZmZlci0+aWQoKSk7CisgICAgbV9wcml2YXRlLT5yZW1vdmVJZChidWZmZXItPmlk
KCkpOwogCiAgICAgLy8gNC4gUmVtb3ZlIHRyYWNrIGluZm9ybWF0aW9uIGZyb20gYXVkaW9UcmFj
a3MsIHZpZGVvVHJhY2tzLCBhbmQgdGV4dFRyYWNrcyBmb3IgYWxsIHRyYWNrcyAKICAgICAvLyBh
c3NvY2lhdGVkIHdpdGggc291cmNlQnVmZmVyIGFuZCBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVk
IGNoYW5nZSBvbiB0aGUgbW9kaWZpZWQgbGlzdHMuCkBAIC0yMjAsNyArMjE5LDcgQEAgdm9pZCBN
ZWRpYVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShjb25zdCBTdHJpbmcmIHN0YXRlKQogICAgIGlmICht
X3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAgICAgIG1fc291cmNlQnVmZmVy
cy0+Y2xlYXIoKTsKICAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5jbGVhcigpOwotICAg
ICAgICBtX3BsYXllciA9IDA7CisgICAgICAgIG1fcHJpdmF0ZS5jbGVhcigpOwogICAgICAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRzb3VyY2VjbG9zZUV2ZW50KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTI0MSwxOSArMjQwLDE5IEBAIHZvaWQgTWVkaWFTb3VyY2U6
OmVuZE9mU3RyZWFtKGNvbnN0IFN0cmluZyYgZXJyb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IC8vIDMuMSBodHRwOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS90aXAvbWVk
aWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI2RvbS1lbmRvZnN0cmVhbQogICAgIC8vIDEuIElm
IHRoZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSBpcyBub3QgaW4gdGhlICJvcGVuIiBzdGF0ZSB0aGVu
IHRocm93IGFuCiAgICAgLy8gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fcmVhZHlTdGF0ZSAhPSBvcGVuS2V5
d29yZCgpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFkeVN0YXRlICE9IG9wZW5LZXl3
b3JkKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIE1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cyBlb3NTdGF0dXMg
PSBNZWRpYVBsYXllcjo6RW9zTm9FcnJvcjsKKyAgICBNZWRpYVNvdXJjZVByaXZhdGU6OkVuZE9m
U3RyZWFtU3RhdHVzIGVvc1N0YXR1cyA9IE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zTm9FcnJvcjsK
IAogICAgIGlmIChlcnJvci5pc051bGwoKSB8fCBlcnJvci5pc0VtcHR5KCkpCi0gICAgICAgIGVv
c1N0YXR1cyA9IE1lZGlhUGxheWVyOjpFb3NOb0Vycm9yOworICAgICAgICBlb3NTdGF0dXMgPSBN
ZWRpYVNvdXJjZVByaXZhdGU6OkVvc05vRXJyb3I7CiAgICAgZWxzZSBpZiAoZXJyb3IgPT0gIm5l
dHdvcmsiKQotICAgICAgICBlb3NTdGF0dXMgPSBNZWRpYVBsYXllcjo6RW9zTmV0d29ya0Vycm9y
OworICAgICAgICBlb3NTdGF0dXMgPSBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05ldHdvcmtFcnJv
cjsKICAgICBlbHNlIGlmIChlcnJvciA9PSAiZGVjb2RlIikKLSAgICAgICAgZW9zU3RhdHVzID0g
TWVkaWFQbGF5ZXI6OkVvc0RlY29kZUVycm9yOworICAgICAgICBlb3NTdGF0dXMgPSBNZWRpYVNv
dXJjZVByaXZhdGU6OkVvc0RlY29kZUVycm9yOwogICAgIGVsc2UgewogICAgICAgICBlYyA9IElO
VkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMjYxLDE3ICsyNjAsMTcgQEAg
dm9pZCBNZWRpYVNvdXJjZTo6ZW5kT2ZTdHJlYW0oY29uc3QgU3RyaW5nJiBlcnJvciwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAKICAgICAvLyAyLiBDaGFuZ2UgdGhlIHJlYWR5U3RhdGUgYXR0cmlidXRl
IHZhbHVlIHRvICJlbmRlZCIuCiAgICAgc2V0UmVhZHlTdGF0ZShlbmRlZEtleXdvcmQoKSk7Ci0g
ICAgbV9wbGF5ZXItPnNvdXJjZUVuZE9mU3RyZWFtKGVvc1N0YXR1cyk7CisgICAgbV9wcml2YXRl
LT5lbmRPZlN0cmVhbShlb3NTdGF0dXMpOwogfQogCiBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1l
ZGlhU291cmNlOjpidWZmZXJlZChjb25zdCBTdHJpbmcmIGlkLCBFeGNlcHRpb25Db2RlJiBlYykg
Y29uc3QKIHsKLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fcmVhZHlTdGF0ZSA9PSBjbG9zZWRLZXl3
b3JkKCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZSB8fCBtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5
d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIHJldHVybiBtX3BsYXllci0+c291cmNlQnVmZmVyZWQoaWQpOwor
ICAgIHJldHVybiBtX3ByaXZhdGUtPmJ1ZmZlcmVkKGlkKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJj
ZTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZGF0YSwg
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yODEsNyArMjgwLDcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6
YXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZGF0YSwgRXhj
ZXB0aW8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9wbGF5ZXIgfHwgbV9y
ZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSkgeworICAgIGlmICghbV9wcml2YXRlIHx8IG1f
cmVhZHlTdGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI4OSw3ICsyODgsNyBAQCB2b2lk
IE1lZGlhU291cmNlOjphcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxVaW50OEFy
cmF5PiBkYXRhLCBFeGNlcHRpbwogICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gZW5kZWRLZXl3b3Jk
KCkpCiAgICAgICAgIHNldFJlYWR5U3RhdGUob3BlbktleXdvcmQoKSk7CiAKLSAgICBpZiAoIW1f
cGxheWVyLT5zb3VyY2VBcHBlbmQoaWQsIGRhdGEtPmRhdGEoKSwgZGF0YS0+bGVuZ3RoKCkpKSB7
CisgICAgaWYgKCFtX3ByaXZhdGUtPmFwcGVuZChpZCwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5sZW5n
dGgoKSkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMjk3LDI5ICsyOTYsMzcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6YXBwZW5kKGNvbnN0IFN0
cmluZyYgaWQsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZGF0YSwgRXhjZXB0aW8KIAogdm9pZCBN
ZWRpYVNvdXJjZTo6YWJvcnQoY29uc3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
Ci0gICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5U3RhdGUgIT0gb3BlbktleXdvcmQoKSkgewor
ICAgIGlmICghbV9wcml2YXRlIHx8IG1fcmVhZHlTdGF0ZSAhPSBvcGVuS2V5d29yZCgpKSB7CiAg
ICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBpZiAoIW1fcGxheWVyLT5zb3VyY2VBYm9ydChpZCkpCisgICAgaWYgKCFtX3ByaXZhdGUt
PmFib3J0KGlkKSkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIGJvb2wgTWVk
aWFTb3VyY2U6OnNldFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zm
c2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fcmVhZHlT
dGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZSB8fCBtX3JlYWR5
U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIW1fcGxheWVyLT5z
b3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoaWQsIG9mZnNldCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0
ZS0+c2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3ZvaWQgTWVkaWFTb3VyY2U6OnNldFByaXZhdGVBbmRPcGVuKFBhc3NPd25QdHI8
TWVkaWFTb3VyY2VQcml2YXRlPiBtZWRpYVNvdXJjZVByaXZhdGUpCit7CisgICAgQVNTRVJUKG1l
ZGlhU291cmNlUHJpdmF0ZSk7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUpOworICAgIG1fcHJpdmF0
ZSA9IG1lZGlhU291cmNlUHJpdmF0ZTsKKyAgICBzZXRSZWFkeVN0YXRlKG9wZW5LZXl3b3JkKCkp
OworfQorCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlOjppbnRlcmZhY2VOYW1lKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck1lZGlhU291cmNl
OwpAQCAtMzMyLDEzICszMzksMTMgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTb3Vy
Y2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogCiBib29sIE1lZGlhU291cmNlOjpo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3BsYXllciB8fCBtX2Fz
eW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpCisgICAgcmV0dXJuIG1fcHJpdmF0ZSB8
fCBtX2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpCiAgICAgICAgIHx8IEFjdGl2
ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2U6
OnN0b3AoKQogewotICAgIG1fcGxheWVyID0gMDsKKyAgICBtX3ByaXZhdGUuY2xlYXIoKTsKICAg
ICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxsRXZlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAppbmRleCAxZDNmMzQ3
NmI2NzgxZjNjOWY1Y2U0ZmE0MmFlYzdjZTA1MTBkY2JjLi45NTM1OGQ3Y2I5ZDE3YzQ2YWIwYTk0
ZWY3NTJiN2I1Y2YxZDczMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5oCkBAIC0zNSw3ICszNSw3IEBACiAKICNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKICNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgotI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiU291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyTGlzdC5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZW5kT2ZTdHJlYW0oY29uc3QgU3RyaW5nJiBlcnJvciwgRXhjZXB0aW9uQ29kZSYpOwogCi0g
ICAgdm9pZCBzZXRNZWRpYVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSB7IG1fcGxheWVyID0g
cGxheWVyOyB9CisgICAgdm9pZCBzZXRQcml2YXRlQW5kT3BlbihQYXNzT3duUHRyPE1lZGlhU291
cmNlUHJpdmF0ZT4pOwogCiAgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZChjb25z
dCBTdHJpbmcmIGlkLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29u
c3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBkYXRhLCBFeGNlcHRpb25Db2Rl
Jik7CkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZl
bnRUYXJnZXREYXRhOwogCiAgICAgU3RyaW5nIG1fcmVhZHlTdGF0ZTsKLSAgICBNZWRpYVBsYXll
ciogbV9wbGF5ZXI7CisgICAgT3duUHRyPE1lZGlhU291cmNlUHJpdmF0ZT4gbV9wcml2YXRlOwog
CiAgICAgUmVmUHRyPFNvdXJjZUJ1ZmZlckxpc3Q+IG1fc291cmNlQnVmZmVyczsKICAgICBSZWZQ
dHI8U291cmNlQnVmZmVyTGlzdD4gbV9hY3RpdmVTb3VyY2VCdWZmZXJzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzk5ZDBkMWYxYTkyOTE1NjgyMjAxYTE5
M2RkNWY5NDNiYTlmMzI0Yi4uMzVmYzk4OWY0NTYwYzAwYTc2NTY1Y2E4YTEzZjUyYjUyMWZhMjM3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zMDgsMTEg
KzMwOCw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAgICAgIGFkZEJlaGF2aW9yUmVz
dHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZFJlc3RyaWN0aW9uKTsKICAgICB9CiAK
LSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIG1fbWVkaWFTb3VyY2VVUkwuc2V0UHJvdG9j
b2wobWVkaWFTb3VyY2VCbG9iUHJvdG9jb2wpOwotICAgIG1fbWVkaWFTb3VyY2VVUkwuc2V0UGF0
aChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOwotI2VuZGlmCi0KICAgICBzZXRIYXNDdXN0
b21DYWxsYmFja3MoKTsKICAgICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVu
dCk7CiAKQEAgLTk4NiwxNCArOTgxLDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVz
b3VyY2UoY29uc3QgS1VSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnQKICNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQogICAgIEFTU0VSVCghbV9tZWRpYVNvdXJjZSk7CiAKLSAgICBp
ZiAodXJsLnByb3RvY29sSXMobWVkaWFTb3VyY2VCbG9iUHJvdG9jb2wpKSB7CisgICAgaWYgKHVy
bC5wcm90b2NvbElzKG1lZGlhU291cmNlQmxvYlByb3RvY29sKSkKICAgICAgICAgbV9tZWRpYVNv
dXJjZSA9IE1lZGlhU291cmNlUmVnaXN0cnk6OnJlZ2lzdHJ5KCkubG9va3VwTWVkaWFTb3VyY2Uo
dXJsLnN0cmluZygpKTsKLQotICAgICAgICBpZiAobV9tZWRpYVNvdXJjZSkgewotICAgICAgICAg
ICAgbV9tZWRpYVNvdXJjZS0+c2V0TWVkaWFQbGF5ZXIobV9wbGF5ZXIuZ2V0KCkpOwotICAgICAg
ICAgICAgbV9tZWRpYVNvdXJjZVVSTCA9IHVybDsKLSAgICAgICAgfQotICAgIH0KICNlbmRpZgog
CiAgICAgLy8gVGhlIHJlc291cmNlIGZldGNoIGFsZ29yaXRobSAKQEAgLTE4NjgsMjIgKzE4NTcs
NiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUgc3RhdGUpCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU291cmNlT3BlbmVkKCkKLXsKLSAgICBi
ZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7Ci0KLSAgICBzZXRTb3VyY2VTdGF0
ZShNZWRpYVNvdXJjZTo6b3BlbktleXdvcmQoKSk7Ci0KLSAgICBlbmRQcm9jZXNzaW5nTWVkaWFQ
bGF5ZXJDYWxsYmFjaygpOwotfQotCi1TdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJTb3VyY2VVUkwoKSBjb25zdAotewotICAgIHJldHVybiBtX21lZGlhU291cmNlVVJMLnN0cmlu
ZygpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleUFkZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQogewpAQCAtNDQ4MCwxMyAr
NDQ1MywxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKCkKICAg
ICAgICAgbV9hdWRpb1NvdXJjZU5vZGUtPmxvY2soKTsKICNlbmRpZgogCi0gICAgbV9wbGF5ZXIg
PSBNZWRpYVBsYXllcjo6Y3JlYXRlKHRoaXMpOwotCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
LSAgICBpZiAobV9tZWRpYVNvdXJjZSkKLSAgICAgICAgbV9tZWRpYVNvdXJjZS0+c2V0TWVkaWFQ
bGF5ZXIobV9wbGF5ZXIuZ2V0KCkpOworICAgIGlmIChtX21lZGlhU291cmNlICYmIG1fbWVkaWFT
b3VyY2UtPnJlYWR5U3RhdGUoKSAhPSBNZWRpYVNvdXJjZTo6Y2xvc2VkS2V5d29yZCgpKQorICAg
ICAgICBtX21lZGlhU291cmNlLT5zZXRSZWFkeVN0YXRlKE1lZGlhU291cmNlOjpjbG9zZWRLZXl3
b3JkKCkpOwogI2VuZGlmCiAKKyAgICBtX3BsYXllciA9IE1lZGlhUGxheWVyOjpjcmVhdGUodGhp
cyk7CisKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIGlmIChtX2F1ZGlvU291cmNlTm9kZSkg
ewogICAgICAgICAvLyBXaGVuIGNyZWF0aW5nIHRoZSBwbGF5ZXIsIG1ha2Ugc3VyZSBpdHMgQXVk
aW9Tb3VyY2VQcm92aWRlciBrbm93cyBhYm91dCB0aGUgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlLgpAQCAtNDgyNyw3ICs0ODAwLDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb24KICAgICBp
bmZvLmFkZE1lbWJlcihtX3Byb3h5V2lkZ2V0LCAicHJveHlXaWRnZXQiKTsKICNlbmRpZgogI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgaW5mby5hZGRNZW1iZXIobV9tZWRpYVNvdXJjZVVS
TCwgIm1lZGlhU291cmNlVVJMIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9tZWRpYVNvdXJjZSwg
Im1lZGlhU291cmNlIik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGZhMWUzZjI4NGVlMTk2YmZiMjFjMjJh
NGY4ZjcxNzJlNDMxNjBkNDUuLjM3NGRmMmI4NTY1ODYyZjM1MzUwN2RmNDkyODMzZDQzMjA4YTUw
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00NDIsMTEgKzQ0
Miw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRmlyc3RWaWRlb0Zy
YW1lQXZhaWxhYmxlKE1lZGlhUGxheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
Q2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlhUGxheWVyKik7CiAKLSNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNvdXJjZU9wZW5lZCgpOwotICAg
IHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291cmNlVVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
S2V5QWRkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktl
eUVycm9yKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBNZWRpYVBsYXllckNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUsIHVuc2ln
bmVkIHNob3J0IHN5c3RlbUNvZGUpIE9WRVJSSURFOwpAQCAtNjM5LDcgKzYzNCw2IEBAIHByaXZh
dGU6CiAgICAgaW50IG1fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2s7CiAKICNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQotICAgIEtVUkwgbV9tZWRpYVNvdXJjZVVSTDsKICAgICBSZWZQdHI8
TWVkaWFTb3VyY2U+IG1fbWVkaWFTb3VyY2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDBiMjU0NGY5MjE2MThm
MmUxMzEwNTg5YjA5NmE2MWY4YjA1ZjY5OTEuLjgzOGY1ZGY0MTFiODA1MzRlYzIwZjU0MWM2YTZm
MGRkMWY4NzJhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKQEAgLTE1MSwxNyArMTUxLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpBZGRJ
ZFN0YXR1cyBzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpOb3RT
dXBwb3J0ZWQ7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc291cmNlQnVm
ZmVyZWQoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgc291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgc291cmNlQWJvcnQoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc291cmNlU2V0RHVyYXRpb24oZG91YmxlKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc291cmNlRW5kT2ZTdHJlYW0oTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzKSB7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgc291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYs
IGRvdWJsZSkgeyByZXR1cm4gZmFsc2U7IH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBnZW5l
cmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2ln
bmVkKSBPVkVSUklERSB7IHJldHVybiBNZWRpYVBsYXllcjo6SW52YWxpZFBsYXllclN0YXRlOyB9
CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gYWRkS2V5KGNvbnN0
IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCwgY29uc3QgdW5zaWduZWQg
Y2hhciosIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERSB7IHJldHVybiBNZWRpYVBs
YXllcjo6SW52YWxpZFBsYXllclN0YXRlOyB9CkBAIC00NzcsNDkgKzQ2Niw2IEBAIHZvaWQgTWVk
aWFQbGF5ZXI6OnBhdXNlKCkKICAgICBtX3ByaXZhdGUtPnBhdXNlKCk7CiB9CiAKLSNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQotCi1NZWRpYVBsYXllcjo6QWRkSWRTdGF0dXMgTWVkaWFQbGF5ZXI6
OnNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNvZGVjcykKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VB
ZGRJZChpZCwgdHlwZSwgY29kZWNzKTsKLX0KLQotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRp
YVBsYXllcjo6c291cmNlQnVmZmVyZWQoY29uc3QgU3RyaW5nJiBpZCkKLXsKLSAgICByZXR1cm4g
bV9wcml2YXRlLT5zb3VyY2VCdWZmZXJlZChpZCk7Ci19Ci0KLWJvb2wgTWVkaWFQbGF5ZXI6OnNv
dXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYgaWQpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+
c291cmNlUmVtb3ZlSWQoaWQpOwotfQotCi1ib29sIE1lZGlhUGxheWVyOjpzb3VyY2VBcHBlbmQo
Y29uc3QgU3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKQotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZUFwcGVuZChpZCwgZGF0YSwgbGVu
Z3RoKTsKLX0KLQotYm9vbCBNZWRpYVBsYXllcjo6c291cmNlQWJvcnQoY29uc3QgU3RyaW5nJiBp
ZCkKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VBYm9ydChpZCk7Ci19Ci0KLXZvaWQg
TWVkaWFQbGF5ZXI6OnNvdXJjZVNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKLXsKLSAgICBt
X3ByaXZhdGUtPnNvdXJjZVNldER1cmF0aW9uKGR1cmF0aW9uKTsKLX0KLQotdm9pZCBNZWRpYVBs
YXllcjo6c291cmNlRW5kT2ZTdHJlYW0oTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzIHN0
YXR1cykKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VFbmRPZlN0cmVhbShzdGF0dXMp
OwotfQotCi1ib29sIE1lZGlhUGxheWVyOjpzb3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoY29uc3Qg
U3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCkKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zb3Vy
Y2VTZXRUaW1lc3RhbXBPZmZzZXQoaWQsIG9mZnNldCk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCiBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gTWVkaWFQ
bGF5ZXI6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
dW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKQogewpAQCAt
OTQ3LDIxICs4OTMsNiBAQCB2b2lkIE1lZGlhUGxheWVyOjpzZXRQcml2YXRlQnJvd3NpbmdNb2Rl
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nTW9kZSkKICAgICBtX3ByaXZhdGUtPnNldFByaXZhdGVCcm93
c2luZ01vZGUobV9wcml2YXRlQnJvd3NpbmcpOwogfQogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKLXZvaWQgTWVkaWFQbGF5ZXI6OnNvdXJjZU9wZW5lZCgpCi17Ci0gICAgaWYgKG1fbWVkaWFQ
bGF5ZXJDbGllbnQpCi0gICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyU291
cmNlT3BlbmVkKCk7Ci19Ci0KLVN0cmluZyBNZWRpYVBsYXllcjo6c291cmNlVVJMKCkgY29uc3QK
LXsKLSAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKLSAgICAgICAgcmV0dXJuIG1fbWVkaWFQ
bGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyU291cmNlVVJMKCk7Ci0gICAgcmV0dXJuIFN0cmluZygp
OwotfQotI2VuZGlmCi0KIC8vIENsaWVudCBjYWxsYmFja3MuCiB2b2lkIE1lZGlhUGxheWVyOjpu
ZXR3b3JrU3RhdGVDaGFuZ2VkKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCmluZGV4IDYzY2UwOWY3OWI4NmY0YmIwODBmOWE3OTM2Mjk4MTQ3
NzZlYTc4MTcuLjlmM2MxYWY4MDVjNmQ4ZjVmMzI3MzlmNTNkNzczNWVmZGI4MmJlYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNjEs
NyArNjEsNiBAQCBjbGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVyOwogY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBHU3RyZWFtZXJHV29ybGQ7CiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U7
Ci1jbGFzcyBNZWRpYVNvdXJjZTsKIGNsYXNzIFRleHRUcmFja1JlcHJlc2VudGF0aW9uOwogCiAv
LyBTdHJ1Y3R1cmUgdGhhdCB3aWxsIGhvbGQgZXZlcnkgbmF0aXZlCkBAIC0xODAsMTEgKzE3OSw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogbWVkaWFQbGF5
ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVkaWFQbGF5ZXIqKSBjb25zdCB7IHJldHVy
biAwOyB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyU291cmNlT3BlbmVkKCkgeyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgbWVk
aWFQbGF5ZXJTb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiAieC1tZWRpYS1zb3VyY2UtdW5zdXBw
b3J0ZWQ6IjsgfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIGVu
dW0gTWVkaWFLZXlFcnJvckNvZGUgeyBVbmtub3duRXJyb3IgPSAxLCBDbGllbnRFcnJvciwgU2Vy
dmljZUVycm9yLCBPdXRwdXRFcnJvciwgSGFyZHdhcmVDaGFuZ2VFcnJvciwgRG9tYWluRXJyb3Ig
fTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlBZGRlZChNZWRpYVBsYXllciosIGNv
bnN0IFN0cmluZyYgLyoga2V5U3lzdGVtICovLCBjb25zdCBTdHJpbmcmIC8qIHNlc3Npb25JZCAq
LykgeyB9CkBAIC0yODAsMTkgKzI3NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBsYXkoKTsKICAg
ICB2b2lkIHBhdXNlKCk7ICAgIAogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBlbnVt
IEFkZElkU3RhdHVzIHsgT2ssIE5vdFN1cHBvcnRlZCwgUmVhY2hlZElkTGltaXQgfTsKLSAgICBB
ZGRJZFN0YXR1cyBzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpOwotICAgIGJvb2wgc291cmNlUmVtb3Zl
SWQoY29uc3QgU3RyaW5nJiBpZCk7Ci0gICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzb3VyY2VC
dWZmZXJlZChjb25zdCBTdHJpbmcmIGlkKTsKLSAgICBib29sIHNvdXJjZUFwcGVuZChjb25zdCBT
dHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHZvaWQgc291cmNlU2V0RHVyYXRpb24oZG91YmxlKTsKLSAgICBib29sIHNvdXJjZUFib3J0
KGNvbnN0IFN0cmluZyYgaWQpOwotICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgeyBFb3NOb0Vy
cm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0RlY29kZUVycm9yIH07Ci0gICAgdm9pZCBzb3VyY2VF
bmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyk7Ci0gICAgYm9vbCBzb3VyY2VTZXRUaW1lc3Rh
bXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCk7Ci0jZW5kaWYKLQogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgLy8gUmVwcmVzZW50cyBzeW5jaHJvbm91cyBl
eGNlcHRpb25zIHRoYXQgY2FuIGJlIHRocm93biBmcm9tIHRoZSBFbmNyeXB0ZWQgTWVkaWEgbWV0
aG9kcy4KICAgICAvLyBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBhc3luY2hyb25vdXMgTWVk
aWFLZXlFcnJvci4KQEAgLTQyMiwxMSArNDAzLDYgQEAgcHVibGljOgogICAgIEF1ZGlvU291cmNl
UHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKLSAgICB2b2lkIHNvdXJjZU9wZW5lZCgpOwotICAgIFN0cmluZyBzb3VyY2VV
UkwoKSBjb25zdDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2
b2lkIGtleUFkZGVkKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCk7CiAgICAgdm9pZCBrZXlFcnJvcihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwg
dW5zaWduZWQgc2hvcnQgc3lzdGVtQ29kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDVjNjY3NGQyZDNhNjM4
Y2EzMDYxZDNmOTIyOWFhYWRmMjJhYTc4NDAuLmY4M2U4ZDk3NmU1NGJlNmU0YTgzNDIyM2IwNjdj
MjhkNWY2MmQ3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xNjcsMTcgKzE2Nyw2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSB7IHJl
dHVybiAwOyB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdmlydHVh
bCBNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXMgc291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKSB7IHJldHVy
biBNZWRpYVBsYXllcjo6Tm90U3VwcG9ydGVkOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRp
bWVSYW5nZXM+IHNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIFRpbWVS
YW5nZXM6OmNyZWF0ZSgpOyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZVJlbW92ZUlkKGNvbnN0
IFN0cmluZyYgaWQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUFw
cGVuZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUFib3J0
KGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNv
dXJjZVNldER1cmF0aW9uKGRvdWJsZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuZE9m
U3RyZWFtKE1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cykgeyB9Ci0gICAgdmlydHVhbCBi
b29sIHNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zm
c2V0KSB7IHJldHVybiBmYWxzZTsgfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGFkZEtleShj
b25zdCBTdHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQsIGNvbnN0IHVuc2ln
bmVkIGNoYXIqLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikgeyByZXR1cm4gTWVkaWFQbGF5ZXI6
OktleVN5c3RlbU5vdFN1cHBvcnRlZDsgfQogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1lZGlh
S2V5RXhjZXB0aW9uIGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmLCBjb25zdCB1bnNp
Z25lZCBjaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpLZXlTeXN0ZW1Ob3RT
dXBwb3J0ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhU291cmNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFTb3VyY2VQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ5MWRhMGNmZDAxMGU2N2ZhYjc1YzVj
YWNhZDNmNmJmZjkwZDFmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBN
ZWRpYVNvdXJjZVByaXZhdGVfaAorI2RlZmluZSBNZWRpYVNvdXJjZVByaXZhdGVfaAorCisjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGUgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKE1lZGlhU291cmNlUHJpdmF0ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIE1lZGlhU291cmNlUHJpdmF0ZSgpIHsgfQorICAgIHZpcnR1YWwgfk1l
ZGlhU291cmNlUHJpdmF0ZSgpIHsgfQorCisgICAgZW51bSBBZGRJZFN0YXR1cyB7IE9rLCBOb3RT
dXBwb3J0ZWQsIFJlYWNoZWRJZExpbWl0IH07CisgICAgdmlydHVhbCBBZGRJZFN0YXR1cyBhZGRJ
ZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBjb2RlY3MpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlSWQoY29uc3QgU3RyaW5n
JiBpZCkgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZChj
b25zdCBTdHJpbmcmIGlkKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFwcGVuZChjb25zdCBTdHJp
bmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpID0gMDsK
KyAgICB2aXJ0dWFsIGRvdWJsZSBkdXJhdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
RHVyYXRpb24oZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFib3J0KGNvbnN0IFN0cmlu
ZyYgaWQpID0gMDsKKyAgICBlbnVtIEVuZE9mU3RyZWFtU3RhdHVzIHsgRW9zTm9FcnJvciwgRW9z
TmV0d29ya0Vycm9yLCBFb3NEZWNvZGVFcnJvciB9OworICAgIHZpcnR1YWwgdm9pZCBlbmRPZlN0
cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRUaW1lc3Rh
bXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCkgPSAwOworfTsKKworfQor
CisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGFmYTU0YTAw
ZTYzZDQzMGI5NDM4ZmU0MDlhNDUwZGFiNWYzMTg3NWUuLjFlOWQyOGE2NzViZGZkMGVjZDI4MWE0
MTMzMTFlNTRmN2I1ZjYzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE5Niw2
ICsxOTYsOCBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVBsYXllckFjdGlvbi5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50LmgnLAorICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViTWVkaWFTb3VyY2UuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJN
ZWRpYVNvdXJjZUNsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlhU3Ry
ZWFtUmVnaXN0cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZW1vcnlVc2FnZUlu
Zm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZW51SXRlbUluZm8uaCcsCkBAIC01
MDYsNiArNTA4LDkgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkxhYmVsRWxlbWVudC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCcsCisgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJNZWRpYVNvdXJjZS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMv
V2ViTWVkaWFTb3VyY2VJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVNv
dXJjZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViTm9kZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50LmgKaW5kZXggZGVjYTk1
MzZkOTlhNDVjYjIxNWU4ZWE1ZTIwNGE2MTg5NzU1YzRiMy4uYzgyZmQzYWNjNjU2OWJhMjcwYzFi
NzZkN2E2MWNiOWQzMzVhOWFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJNZWRpYVBsYXllckNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CitjbGFzcyBXZWJNZWRpYVNvdXJjZTsKIGNs
YXNzIFdlYlBsdWdpbjsKIGNsYXNzIFdlYlJlcXVlc3Q7CiBjbGFzcyBXZWJVUkw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVNvdXJjZS5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
YjNmYWMyOTIxZmIzNjY5ZGIyNjkwNmE1ZDdhYTYxOTFmMTc2ZDVlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2UuaApAQCAtMCww
ICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVNvdXJjZV9oCisjZGVmaW5lIFdlYk1lZGlhU291cmNl
X2gKKworI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJVUkwu
aCIKKyNpbmNsdWRlICJXZWJUaW1lUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYk1lZGlhU291cmNlQ2xpZW50OworCitjbGFzcyBXZWJNZWRpYVNvdXJjZSB7CitwdWJs
aWM6CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViTWVkaWFTb3VyY2UqIGdldE1lZGlhU291
cmNlRm9yVVJMKGNvbnN0IFdlYlVSTCYpOworCisgICAgdmlydHVhbCB+V2ViTWVkaWFTb3VyY2Uo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbihXZWJNZWRpYVNvdXJjZUNsaWVudCopID0gMDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVNvdXJjZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNl
NjUwOTA0YmI0MmJmOGZmYTBlNzZjNzM3YjlmZWVkYzFhZTlmMTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVNvdXJjZUNsaWVudC5oCkBA
IC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhU291cmNlQ2xpZW50X2gKKyNkZWZpbmUgV2Vi
TWVkaWFTb3VyY2VDbGllbnRfaAorCisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlRpbWVSYW5nZS5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFTb3VyY2VDbGllbnQgeworcHVibGljOgor
ICAgIGVudW0gQWRkSWRTdGF0dXMgeworICAgICAgICBBZGRJZFN0YXR1c09rLAorICAgICAgICBB
ZGRJZFN0YXR1c05vdFN1cHBvcnRlZCwKKyAgICAgICAgQWRkSWRTdGF0dXNSZWFjaGVkSWRMaW1p
dAorICAgIH07CisKKyAgICBlbnVtIEVuZE9mU3RyZWFtU3RhdHVzIHsKKyAgICAgICAgRW5kT2ZT
dHJlYW1TdGF0dXNOb0Vycm9yLAorICAgICAgICBFbmRPZlN0cmVhbVN0YXR1c05ldHdvcmtFcnJv
ciwKKyAgICAgICAgRW5kT2ZTdHJlYW1TdGF0dXNEZWNvZGVFcnJvciwKKyAgICB9OworCisgICAg
dmlydHVhbCB+V2ViTWVkaWFTb3VyY2VDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgQWRkSWRT
dGF0dXMgYWRkSWQoY29uc3QgV2ViU3RyaW5nJiBpZCwgY29uc3QgV2ViU3RyaW5nJiB0eXBlLCBj
b25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgY29kZWNzKSA9IDA7CisgICAgdmlydHVhbCBib29s
IHJlbW92ZUlkKGNvbnN0IFdlYlN0cmluZyYgaWQpID0gMDsKKyAgICB2aXJ0dWFsIFdlYlRpbWVS
YW5nZXMgYnVmZmVyZWQoY29uc3QgV2ViU3RyaW5nJiBpZCkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBhcHBlbmQoY29uc3QgV2ViU3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFib3J0KGNvbnN0IFdlYlN0
cmluZyYgaWQpID0gMDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkdXJhdGlvbigpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVu
ZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNldFRp
bWVzdGFtcE9mZnNldChjb25zdCBXZWJTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KSA9IDA7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCmluZGV4IGI5NzI1MTY1M2Rh
MmQwODNkZWUzZDMxZWMxNDRjYTU3ZjIxNTcxZGEuLmY2YjJiYmFjN2UzODNiYzdlZDdlYjA5MTc2
NWQwNTVmYTYwZWVjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
c2VydE1hdGNoaW5nRW51bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
c2VydE1hdGNoaW5nRW51bXMuY3BwCkBAIC02Miw2ICs2Miw5IEBACiAjaW5jbHVkZSAiSURCTWV0
YWRhdGEuaCIKICNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIK
KyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorI2luY2x1ZGUgIk1lZGlhU291cmNlUHJpdmF0ZS5o
IgorI2VuZGlmCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlICJOb3Rp
ZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJQYWdlVmlzaWJpbGl0eVN0YXRlLmgiCkBAIC0x
MDUsNiArMTA4LDcgQEAKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJX
ZWJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xpZW50LmgiCisjaW5j
bHVkZSAiV2ViTWVkaWFTb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25Q
cmVzZW50ZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlVmlzaWJpbGl0eVN0YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViU2V0dGluZ3MuaCIKQEAgLTQwOSwxNSArNDEzLDEzIEBAIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OlByZWxvYWRNZXRhRGF0YSwgTWVkaWFQbGF5ZXI6
Ok1ldGFECiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpQcmVs
b2FkQXV0bywgTWVkaWFQbGF5ZXI6OkF1dG8pOwogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
LUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVz
T2ssIE1lZGlhUGxheWVyOjpPayk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1l
ZGlhUGxheWVyOjpBZGRJZFN0YXR1c05vdFN1cHBvcnRlZCwgTWVkaWFQbGF5ZXI6Ok5vdFN1cHBv
cnRlZCk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpBZGRJ
ZFN0YXR1c1JlYWNoZWRJZExpbWl0LCBNZWRpYVBsYXllcjo6UmVhY2hlZElkTGltaXQpOwotI2Vu
ZGlmCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhU291cmNlQ2xpZW50OjpB
ZGRJZFN0YXR1c09rLCBNZWRpYVNvdXJjZVByaXZhdGU6Ok9rKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViTWVkaWFTb3VyY2VDbGllbnQ6OkFkZElkU3RhdHVzTm90U3VwcG9ydGVk
LCBNZWRpYVNvdXJjZVByaXZhdGU6Ok5vdFN1cHBvcnRlZCk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYk1lZGlhU291cmNlQ2xpZW50OjpBZGRJZFN0YXR1c1JlYWNoZWRJZExpbWl0
LCBNZWRpYVNvdXJjZVByaXZhdGU6OlJlYWNoZWRJZExpbWl0KTsKIAotI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCi1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVy
OjpFbmRPZlN0cmVhbVN0YXR1c05vRXJyb3IsIE1lZGlhUGxheWVyOjpFb3NOb0Vycm9yKTsKLUNP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3Rh
dHVzTmV0d29ya0Vycm9yLCBNZWRpYVBsYXllcjo6RW9zTmV0d29ya0Vycm9yKTsKLUNPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzRGVj
b2RlRXJyb3IsIE1lZGlhUGxheWVyOjpFb3NEZWNvZGVFcnJvcik7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYk1lZGlhU291cmNlQ2xpZW50OjpFbmRPZlN0cmVhbVN0YXR1c05vRXJy
b3IsIE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zTm9FcnJvcik7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYk1lZGlhU291cmNlQ2xpZW50OjpFbmRPZlN0cmVhbVN0YXR1c05ldHdvcmtF
cnJvciwgTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOZXR3b3JrRXJyb3IpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6RW5kT2ZTdHJlYW1TdGF0dXNE
ZWNvZGVFcnJvciwgTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NEZWNvZGVFcnJvcik7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAppbmRleCBlZjM1MGQ3
MWEwMGQxZjAxNzljMDI5NDRkNDA3Yzk4MTY5ZGNhZmQ5Li4zNjM2Yzc2NGQ0MWY0NTlmYTM3Zjkx
NTg0MWE1MGZmMDUwZDNlOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNp
bmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJXZWJIZWxwZXJQbHVnaW5JbXBsLmgi
CiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZS5o
IgorI2luY2x1ZGUgIldlYk1lZGlhU291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVmlld0lt
cGwuaCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2Vi
Q1N0cmluZy5oPgpAQCAtNDksNiArNTEsODMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCisvLyBUT0RPKGFjb2x3ZWxsKTogUmVtb3ZlIHRoaXMgY2xh
c3Mgb25jZSB0aGUgQ2hyb21pdW0gY29kZSBzdGFydHMgY2FsbGluZworLy8gV2ViTWVkaWFTb3Vy
Y2U6OmdldE1lZGlhU291cmNlRm9yVVJMKCkgYW5kIG9wZW5pbmcgdGhlIFdlYk1lZGlhU291cmNl
IG9iamVjdAorLy8gaXRzZWxmLgorY2xhc3MgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsIDogcHVi
bGljIFdlYk1lZGlhU291cmNlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJNZWRpYVNvdXJjZUNs
aWVudEltcGwoV2ViTWVkaWFQbGF5ZXIqKTsKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNvdXJjZUNs
aWVudEltcGwoKTsKKworICAgIC8vIFdlYk1lZGlhU291cmNlQ2xpZW50IG1ldGhvZHMuCisgICAg
dmlydHVhbCBBZGRJZFN0YXR1cyBhZGRJZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCBXZWJT
dHJpbmcmIHR5cGUsIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBjb2RlY3MpOworICAgIHZp
cnR1YWwgYm9vbCByZW1vdmVJZChjb25zdCBXZWJTdHJpbmcmIGlkKTsKKyAgICB2aXJ0dWFsIFdl
YlRpbWVSYW5nZXMgYnVmZmVyZWQoY29uc3QgV2ViU3RyaW5nJiBpZCk7CisgICAgdmlydHVhbCBi
b29sIGFwcGVuZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1YWwgYm9vbCBhYm9ydChjb25zdCBXZWJTdHJp
bmcmIGlkKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkdXJhdGlvbigpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXREdXJhdGlvbihkb3VibGUpOworICAgIHZpcnR1YWwgdm9pZCBlbmRPZlN0cmVhbShFbmRP
ZlN0cmVhbVN0YXR1cyk7CisgICAgdmlydHVhbCBib29sIHNldFRpbWVzdGFtcE9mZnNldChjb25z
dCBXZWJTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KTsKKworcHJpdmF0ZToKKyAgICBXZWJNZWRp
YVBsYXllciogbV93ZWJNZWRpYVBsYXllcjsKK307CisKK1dlYk1lZGlhU291cmNlQ2xpZW50SW1w
bDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsKFdlYk1lZGlhUGxheWVyKiB3ZWJNZWRpYVBsYXll
cikKKyAgICA6IG1fd2ViTWVkaWFQbGF5ZXIod2ViTWVkaWFQbGF5ZXIpCit7Cit9CisKK1dlYk1l
ZGlhU291cmNlQ2xpZW50SW1wbDo6fldlYk1lZGlhU291cmNlQ2xpZW50SW1wbCgpCit7Cit9CisK
K1dlYk1lZGlhU291cmNlQ2xpZW50OjpBZGRJZFN0YXR1cyBXZWJNZWRpYVNvdXJjZUNsaWVudElt
cGw6OmFkZElkKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0IFdlYlN0cmluZyYgdHlwZSwgY29u
c3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGNvZGVjcykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8V2ViTWVkaWFTb3VyY2VDbGllbnQ6OkFkZElkU3RhdHVzPihtX3dlYk1lZGlhUGxheWVyLT5z
b3VyY2VBZGRJZChpZCwgdHlwZSwgY29kZWNzKSk7Cit9CisKK2Jvb2wgV2ViTWVkaWFTb3VyY2VD
bGllbnRJbXBsOjpyZW1vdmVJZChjb25zdCBXZWJTdHJpbmcmIGlkKQoreworICAgIHJldHVybiBt
X3dlYk1lZGlhUGxheWVyLT5zb3VyY2VSZW1vdmVJZChpZCk7Cit9CisKK1dlYlRpbWVSYW5nZXMg
V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpidWZmZXJlZChjb25zdCBXZWJTdHJpbmcmIGlkKQor
eworICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VCdWZmZXJlZChpZCk7Cit9CisK
K2Jvb2wgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjphcHBlbmQoY29uc3QgV2ViU3RyaW5nJiBp
ZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJl
dHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBcHBlbmQoaWQsIGRhdGEsIGxlbmd0aCk7Cit9
CisKK2Jvb2wgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjphYm9ydChjb25zdCBXZWJTdHJpbmcm
IGlkKQoreworICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBYm9ydChpZCk7Cit9
CisKK2RvdWJsZSBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmR1cmF0aW9uKCkKK3sKKyAgICBy
ZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+ZHVyYXRpb24oKTsKK30KKwordm9pZCBXZWJNZWRpYVNv
dXJjZUNsaWVudEltcGw6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICByZXR1
cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlU2V0RHVyYXRpb24oZHVyYXRpb24pOworfQorCit2
b2lkIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6ZW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0
dXMgc3RhdHVzKQoreworICAgIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUVuZE9mU3RyZWFtKHN0
YXRpY19jYXN0PFdlYk1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cz4oc3RhdHVzKSk7Cit9
CisKK2Jvb2wgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpzZXRUaW1lc3RhbXBPZmZzZXQoY29u
c3QgV2ViU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCkKK3sKKyAgICByZXR1cm4gbV93ZWJNZWRp
YVBsYXllci0+c291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpOworfQorCiBzdGF0
aWMgUGFzc093blB0cjxXZWJNZWRpYVBsYXllcj4gY3JlYXRlV2ViTWVkaWFQbGF5ZXIoV2ViTWVk
aWFQbGF5ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViVVJMJiB1cmwsIEZyYW1lKiBmcmFtZSkK
IHsKICAgICBXZWJGcmFtZUltcGwqIHdlYkZyYW1lID0gV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUo
ZnJhbWUpOwpAQCAtMjE4LDIyICsyOTcsMzAgQEAgV2ViTWVkaWFQbGF5ZXI6OlByZWxvYWQgV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpwcmVsb2FkKCkgY29uc3QKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2ViTWVkaWFQbGF5ZXI6OlByZWxvYWQ+KG1fcHJlbG9hZCk7CiB9CiAKKy8vIFRPRE8o
YWNvbHdlbGwpOiBSZW1vdmUgdGhpcyBhbmQgc291cmNlVVJMKCkgb25jZSB0aGUgQ2hyb21pdW0g
Y29kZSBzdGFydHMKKy8vIGNhbGxpbmcgV2ViTWVkaWFTb3VyY2U6OmdldE1lZGlhU291cmNlRm9y
VVJMKCkgYW5kIG9wZW5pbmcgdGhlIFdlYk1lZGlhU291cmNlCisvLyBpdHNlbGYuCiB2b2lkIFdl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlT3BlbmVkKCkKIHsKICNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQotICAgIEFTU0VSVChtX21lZGlhUGxheWVyKTsKLSAgICBtX21lZGlhUGxheWVy
LT5zb3VyY2VPcGVuZWQoKTsKKyAgICBBU1NFUlQobV93ZWJNZWRpYVBsYXllcik7CisgICAgS1VS
TCB1cmwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybCk7CisgICAgT3duUHRyPFdlYk1lZGlhU291cmNl
PiBtZWRpYVNvdXJjZSA9IGFkb3B0UHRyKFdlYk1lZGlhU291cmNlOjpnZXRNZWRpYVNvdXJjZUZv
clVSTCh1cmwpKTsKKyAgICBpZiAobWVkaWFTb3VyY2UpCisgICAgICAgIG1lZGlhU291cmNlLT5v
cGVuKG5ldyBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGwobV93ZWJNZWRpYVBsYXllci5nZXQoKSkp
OwogI2VuZGlmCiB9CiAKIFdlYktpdDo6V2ViVVJMIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
c291cmNlVVJMKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIEFTU0VS
VChtX21lZGlhUGxheWVyKTsKLSAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fbWVk
aWFQbGF5ZXItPnNvdXJjZVVSTCgpKTsKLSNlbHNlCi0gICAgcmV0dXJuIEtVUkwoKTsKKyAgICBL
VVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIG1fdXJsKTsKKyAgICBPd25QdHI8V2ViTWVkaWFTb3Vy
Y2U+IG1lZGlhU291cmNlID0gYWRvcHRQdHIoV2ViTWVkaWFTb3VyY2U6OmdldE1lZGlhU291cmNl
Rm9yVVJMKHVybCkpOworCisgICAgaWYgKG1lZGlhU291cmNlKQorICAgICAgICByZXR1cm4gdXJs
OwogI2VuZGlmCisgICAgcmV0dXJuIEtVUkwoKTsKIH0KIAogdm9pZCBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OmtleUFkZGVkKGNvbnN0IFdlYlN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBXZWJT
dHJpbmcmIHNlc3Npb25JZCkKQEAgLTQwNyw3MCArNDk0LDYgQEAgYm9vbCBXZWJNZWRpYVBsYXll
ckNsaWVudEltcGw6OmNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0CiB9CiAjZW5kaWYKIAotI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCi1XZWJDb3JlOjpNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXMg
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpCi17Ci0gICAg
aWYgKCFtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6Ok5vdFN1cHBvcnRlZDsKLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRp
YVBsYXllcjo6QWRkSWRTdGF0dXM+KG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUFkZElkKGlkLCB0
eXBlLCBjb2RlY3MpKTsKLX0KLQotYm9vbCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJj
ZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYgaWQpCi17Ci0gICAgaWYgKCFtX3dlYk1lZGlhUGxheWVy
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+
c291cmNlUmVtb3ZlSWQoaWQpOwotfQotCi1QYXNzUmVmUHRyPFRpbWVSYW5nZXM+IFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbDo6c291cmNlQnVmZmVyZWQoY29uc3QgU3RyaW5nJiBpZCkKLXsKLSAg
ICBpZiAoIW1fd2ViTWVkaWFQbGF5ZXIpCi0gICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVh
dGUoKTsKLQotICAgIFdlYlRpbWVSYW5nZXMgd2ViUmFuZ2VzID0gbV93ZWJNZWRpYVBsYXllci0+
c291cmNlQnVmZmVyZWQoaWQpOwotICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiByYW5nZXMgPSBUaW1l
UmFuZ2VzOjpjcmVhdGUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYlJhbmdlcy5z
aXplKCk7ICsraSkKLSAgICAgICAgcmFuZ2VzLT5hZGQod2ViUmFuZ2VzW2ldLnN0YXJ0LCB3ZWJS
YW5nZXNbaV0uZW5kKTsKLSAgICByZXR1cm4gcmFuZ2VzLnJlbGVhc2UoKTsKLX0KLQotYm9vbCBX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZUFwcGVuZChjb25zdCBTdHJpbmcmIGlkLCBj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgaWYgKG1f
d2ViTWVkaWFQbGF5ZXIpCi0gICAgICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VB
cHBlbmQoaWQsIGRhdGEsIGxlbmd0aCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFdl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlQWJvcnQoY29uc3QgU3RyaW5nJiBpZCkKLXsK
LSAgICBpZiAoIW1fd2ViTWVkaWFQbGF5ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBYm9ydChpZCk7Ci19Ci0KLXZvaWQgV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VTZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24p
Ci17Ci0gICAgaWYgKG1fd2ViTWVkaWFQbGF5ZXIpCi0gICAgICAgIG1fd2ViTWVkaWFQbGF5ZXIt
PnNvdXJjZVNldER1cmF0aW9uKGR1cmF0aW9uKTsKLX0KLQotdm9pZCBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OnNvdXJjZUVuZE9mU3RyZWFtKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpFbmRPZlN0
cmVhbVN0YXR1cyBzdGF0dXMpCi17Ci0gICAgaWYgKG1fd2ViTWVkaWFQbGF5ZXIpCi0gICAgICAg
IG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUVuZE9mU3RyZWFtKHN0YXRpY19jYXN0PFdlYk1lZGlh
UGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cz4oc3RhdHVzKSk7Ci19Ci0KLWJvb2wgV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiBp
ZCwgZG91YmxlIG9mZnNldCkKLXsKLSAgICBpZiAoIW1fd2ViTWVkaWFQbGF5ZXIpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlU2V0VGlt
ZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQogTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIFdlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbDo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBj
b25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbC5oCmluZGV4IDNmNzBjNzM1Y2NiNjY4ZGJmNWZmYjU3Mzg1ZDcwYjRjZmI0YWU3NjEu
Ljk5MGFlZThmNzNkMTdlZjU1ODlhZmExNjY1ZWIwM2VhMjJiMjRhZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCkBA
IC0xNTcsMTcgKzE1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHV0Q3VycmVudEZy
YW1lKFdlYlZpZGVvRnJhbWUqKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
LSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpBZGRJZFN0YXR1cyBzb3VyY2VBZGRJ
ZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBjb2RlY3MpOwotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VSZW1vdmVJZChjb25zdCBTdHJp
bmcmKTsKLSAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpUaW1lUmFuZ2VzPiBz
b3VyY2VCdWZmZXJlZChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBw
ZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCk7Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYpOwotICAg
IHZpcnR1YWwgdm9pZCBzb3VyY2VTZXREdXJhdGlvbihkb3VibGUpOwotICAgIHZpcnR1YWwgdm9p
ZCBzb3VyY2VFbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0
dXMpOwotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3Ry
aW5nJiwgZG91YmxlIG9mZnNldCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiAgICAgdmlydHVhbCBXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24g
Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCB1bnNpZ25l
ZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGFkZEtleShj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgdW5zaWduZWQgY2hhcioga2V5LCB1bnNpZ25l
ZCBrZXlMZW5ndGgsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0
RGF0YUxlbmd0aCwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2UuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0ZjNh
MDFkYjFlMzUxODhmMTk3MDdjY2ZmYTI5ZDgzMDVhMDM0YTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZS5jcHAKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTb3VyY2UuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlUmVnaXN0cnkuaCIK
KyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZUltcGwuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViTWVkaWFTb3VyY2UqIFdlYk1lZGlhU291cmNlOjpnZXRNZWRpYVNvdXJjZUZv
clVSTChjb25zdCBXZWJVUkwmIHVybCkKK3sKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAg
IFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJjZT4gbWVkaWFTb3VyY2UgPSBXZWJDb3JlOjpNZWRp
YVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLmxvb2t1cE1lZGlhU291cmNlKHVybC5zcGVjKCku
dXRmMTYoKSk7CisKKyAgICBpZiAobWVkaWFTb3VyY2UpCisgICAgICAgIHJldHVybiBuZXcgV2Vi
TWVkaWFTb3VyY2VJbXBsKG1lZGlhU291cmNlKTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQor
CitXZWJNZWRpYVNvdXJjZTo6fldlYk1lZGlhU291cmNlKCkKK3sKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNlSW1wbC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGYzOTlhM2MzNTFiYzg1YmI2MTQ0NzQyNjkyY2EwYzhkNWE2Yzk0OAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNlSW1wbC5jcHAK
QEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFT
b3VyY2VJbXBsLmgiCisKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVByaXZhdGUuaCIKKyNpbmNsdWRl
ICJXZWJNZWRpYVNvdXJjZUNsaWVudC5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUltcGwgOiBwdWJs
aWMgV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBNZWRpYVNvdXJj
ZVByaXZhdGVJbXBsKFBhc3NPd25QdHI8V2ViTWVkaWFTb3VyY2VDbGllbnQ+KTsKKyAgICB2aXJ0
dWFsIH5NZWRpYVNvdXJjZVByaXZhdGVJbXBsKCkgeyB9CisKKyAgICAvLyBNZWRpYVNvdXJjZVBy
aXZhdGUgbWV0aG9kcy4KKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6
QWRkSWRTdGF0dXMgYWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlSWQo
Y29uc3QgU3RyaW5nJiBpZCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlRpbWVS
YW5nZXM+IGJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpOworICAgIHZpcnR1YWwgYm9vbCBhcHBl
bmQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWJvcnQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAg
dmlydHVhbCBkb3VibGUgZHVyYXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RHVyYXRpb24o
ZG91YmxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kT2ZTdHJlYW0oV2ViQ29yZTo6TWVkaWFTb3Vy
Y2VQcml2YXRlOjpFbmRPZlN0cmVhbVN0YXR1cyk7CisgICAgdmlydHVhbCBib29sIHNldFRpbWVz
dGFtcE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KTsKKworcHJpdmF0ZToK
KyAgICBPd25QdHI8V2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudD4gbV9jbGllbnQ7Cit9Owor
CitNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsKFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudD4gY2xpZW50KQorICAgIDogbV9jbGllbnQo
Y2xpZW50KQoreworfQorCitXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkFkZElkU3RhdHVz
IE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcykKK3sKKyAgICBpZiAoIW1f
Y2xpZW50KQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpOb3RT
dXBwb3J0ZWQ7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVkaWFTb3VyY2VQ
cml2YXRlOjpBZGRJZFN0YXR1cz4obV9jbGllbnQtPmFkZElkKGlkLCB0eXBlLCBjb2RlY3MpKTsK
K30KKworYm9vbCBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpyZW1vdmVJZChjb25zdCBTdHJpbmcm
IGlkKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiBtX2NsaWVudC0+cmVtb3ZlSWQoaWQpOworfQorCitQYXNzUmVmUHRyPFdlYkNvcmU6
OlRpbWVSYW5nZXM+IE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmJ1ZmZlcmVkKGNvbnN0IFN0cmlu
ZyYgaWQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRp
bWVSYW5nZXM6OmNyZWF0ZSgpOworCisgICAgV2ViVGltZVJhbmdlcyB3ZWJSYW5nZXMgPSBtX2Ns
aWVudC0+YnVmZmVyZWQoaWQpOworICAgIFJlZlB0cjxXZWJDb3JlOjpUaW1lUmFuZ2VzPiByYW5n
ZXMgPSBXZWJDb3JlOjpUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHdlYlJhbmdlcy5zaXplKCk7ICsraSkKKyAgICAgICAgcmFuZ2VzLT5hZGQod2ViUmFu
Z2VzW2ldLnN0YXJ0LCB3ZWJSYW5nZXNbaV0uZW5kKTsKKyAgICByZXR1cm4gcmFuZ2VzLnJlbGVh
c2UoKTsKK30KKworYm9vbCBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjphcHBlbmQoY29uc3QgU3Ry
aW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQorewor
ICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBt
X2NsaWVudC0+YXBwZW5kKGlkLCBkYXRhLCBsZW5ndGgpOworfQorCitib29sIE1lZGlhU291cmNl
UHJpdmF0ZUltcGw6OmFib3J0KGNvbnN0IFN0cmluZyYgaWQpCit7CisgICAgaWYgKCFtX2NsaWVu
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fY2xpZW50LT5hYm9ydChp
ZCk7Cit9CisKK2RvdWJsZSBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpkdXJhdGlvbigpCit7Cisg
ICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjpxdWlldF9OYU4oKTsKKyAgICByZXR1cm4gbV9jbGllbnQtPmR1cmF0aW9uKCk7Cit9CisK
K3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9u
KQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNldER1cmF0aW9uKGR1
cmF0aW9uKTsKK30KKwordm9pZCBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjplbmRPZlN0cmVhbShX
ZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkVuZE9mU3RyZWFtU3RhdHVzIHN0YXR1cykKK3sK
KyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5lbmRPZlN0cmVhbShzdGF0aWNf
Y2FzdDxXZWJNZWRpYVNvdXJjZUNsaWVudDo6RW5kT2ZTdHJlYW1TdGF0dXM+KHN0YXR1cykpOwor
fQorCitib29sIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OnNldFRpbWVzdGFtcE9mZnNldChjb25z
dCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KQoreworICAgIGlmICghbV9jbGllbnQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9jbGllbnQtPnNldFRpbWVzdGFtcE9mZnNl
dChpZCwgb2Zmc2V0KTsKK30KKworCitXZWJNZWRpYVNvdXJjZUltcGw6OldlYk1lZGlhU291cmNl
SW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlPiBtZWRpYVNvdXJjZSkKK3sKKyAg
ICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7Cit9CisKK1dlYk1lZGlhU291cmNlSW1wbDo6
fldlYk1lZGlhU291cmNlSW1wbCgpCit7Cit9CisKKwordm9pZCBXZWJNZWRpYVNvdXJjZUltcGw6
Om9wZW4oV2ViTWVkaWFTb3VyY2VDbGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoY2xpZW50
KTsKKyAgICBtX21lZGlhU291cmNlLT5zZXRQcml2YXRlQW5kT3BlbihhZG9wdFB0cihuZXcgTWVk
aWFTb3VyY2VQcml2YXRlSW1wbChhZG9wdFB0cihjbGllbnQpKSkpOworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZUltcGwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iOGFiMzFlMmI1ZGJmN2M1ZDdmYmVmYTI2MWVhZGZlZGNhOWY1ZjA5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJ
bXBsLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFTb3VyY2VJbXBsX2gKKyNkZWZp
bmUgV2ViTWVkaWFTb3VyY2VJbXBsX2gKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNp
bmNsdWRlICJNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIldlYk1lZGlhU291cmNlLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVNvdXJjZUltcGwgOiBwdWJsaWMgV2Vi
TWVkaWFTb3VyY2UgeworcHVibGljOgorICAgIFdlYk1lZGlhU291cmNlSW1wbChQYXNzUmVmUHRy
PFdlYkNvcmU6Ok1lZGlhU291cmNlPik7CisgICAgdmlydHVhbCB+V2ViTWVkaWFTb3VyY2VJbXBs
KCk7CisKKyAgICAvLyBXZWJNZWRpYVNvdXJjZSBtZXRob2RzLgorICAgIHZpcnR1YWwgdm9pZCBv
cGVuKFdlYk1lZGlhU291cmNlQ2xpZW50Kik7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFdlYkNv
cmU6Ok1lZGlhU291cmNlPiBtX21lZGlhU291cmNlOworfTsKKworfQorCisjZW5kaWYKKworI2Vu
ZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188894</attachid>
            <date>2013-02-18 08:39:49 -0800</date>
            <delta_ts>2013-02-18 08:53:26 -0800</delta_ts>
            <desc>Alternate implementation that makes MediaSource load more explicit.</desc>
            <filename>bug-109857-20130218083612.patch</filename>
            <type>text/plain</type>
            <size>65658</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA2YTY1YzdmYWZkMjQz
ODM4MDNhM2FjYjY0ZGYzN2RkNThhY2NhNS4uZTMzZmM4NTNhZTBkM2ZkMjFlYTMyZDYxZjk0MWY2
ZTljNTRkYjc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEzLTAyLTE4ICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZhY3RvciBNZWRp
YVNvdXJjZSBtZXRob2RzIG91dCBvZiBNZWRpYVBsYXllciAmIE1lZGlhUGxheWVyUHJpdmF0ZSBh
bmQgaW50byBhIG5ldyBNZWRpYVNvdXJjZVByaXZhdGUgaW50ZXJmYWNlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHNpbXBsZSByZWZh
Y3RvciB0aGF0IG1vdmVzIE1lZGlhU291cmNlIHJlbGF0ZWQgbWV0aG9kcyBvdXQgb2YgTWVkaWFQ
bGF5ZXIgJiBNZWRpYVBsYXllclByaXZhdGUKKyAgICAgICAgc28gdGhhdCB0aGUgTWVkaWFTb3Vy
Y2UgaW1wbGVtZW50YXRpb24gY2FuIGJlIHVwZGF0ZWQgd2l0aG91dCBmdXJ0aGVyIHBvbGx1dGlu
ZyB0aGVzZSBpbnRlcmZhY2VzLgorICAgICAgICBNZWRpYVNvdXJjZVByaXZhdGUgaXMgdGhlIG5l
dyBXZWJDb3JlIGludGVyZmFjZSB0aGF0IHBvcnRzIG11c3QgaW1wbGVtZW50IHRvIHN1cHBvcnQg
dGhlIE1lZGlhU291cmNlIEFQSS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIHVzZXIgdmlz
aWJsZSBiZWhhdmlvciBoYXMgY2hhbmdlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Ok1lZGlh
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpkdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlOjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjplbmRP
ZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YnVmZmVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNvdXJjZTo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldFRp
bWVzdGFtcE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0
ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpzdG9wKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmg6Cisg
ICAgICAgIChNZWRpYVNvdXJjZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNZWRpYUVsZW1l
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKE51bGxNZWRpYVBsYXllclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TnVsbE1lZGlh
UGxheWVyUHJpdmF0ZTo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjps
b2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTWVkaWFQbGF5ZXJDbGll
bnQpOgorICAgICAgICAoTWVkaWFQbGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1lZGlhU291cmNlUHJpdmF0ZSk6
IENvbnRhaW5zIHRoZSBNZWRpYVNvdXJjZSBtZXRob2RzIGV4dHJhY3RlZCBmcm9tIE1lZGlhUGxh
eWVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpNZWRpYVNvdXJjZVBy
aXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjp+TWVkaWFTb3Vy
Y2VQcml2YXRlKToKKwogMjAxMy0wMi0xOCAgS29uZGFwYWxseSBLYWx5YW4gIDxrYWx5YW4ua29u
ZGFwYWxseUBpbnRlbC5jb20+CiAKICAgICAgICAgW1dlYkdMXVtFRkxdIFJlZmFjdG9yIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZSB0byBhZGQgc3VwcG9ydCBmb3IgU2hhcmVkQ29udGV4dC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjQwOWZmMDkzMTlkZjA5OWNkOTM2NGViZDhkNzFm
YzZmZGYxNjRiZi4uMTZjNDE0Yzc4Y2YxNGYwNTU4ZWY1Y2RjZjhjOTNhMTIwYjJiNTdhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxMy0wMi0xOCAgQWFy
b24gQ29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBGYWN0b3IgTWVk
aWFTb3VyY2UgbWV0aG9kcyBvdXQgb2YgTWVkaWFQbGF5ZXIgJiBNZWRpYVBsYXllclByaXZhdGUg
YW5kIGludG8gYSBuZXcgTWVkaWFTb3VyY2VQcml2YXRlIGludGVyZmFjZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTg1NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYk1lZGlhU291cmNlIGFuZCBX
ZWJNZWRpYVNvdXJjZSBjbGllbnQgd2VyZSBjcmVhdGVkIHRvIHJlcGxhY2UgdGhlIE1lZGlhU291
cmNlIG1ldGhvZHMgaW4gV2ViTWVkaWFQbGF5ZXIgYW5kCisgICAgICAgIFdlYk1lZGlhUGxheWVy
Q2xpZW50LiBUaGlzIGFsbG93cyB0aGUgTWVkaWFTb3VyY2UgaW1wbGVtZW50YXRpb24gdG8gYmUg
dXBkYXRlZCB3aXRob3V0IGZ1cnRoZXIgcG9sbHV0aW5nIHRoZQorICAgICAgICBtZWRpYSBwbGF5
ZXIgaW50ZXJmYWNlcy4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGlj
L1dlYk1lZGlhUGxheWVyLmg6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50
Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHB1YmxpYy9XZWJNZWRpYVNvdXJjZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJNZWRpYVNvdXJjZSk6Cisg
ICAgICAgICogcHVibGljL1dlYk1lZGlhU291cmNlQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhU291cmNlQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViTWVkaWFTb3VyY2VDbGllbnQ6On5XZWJNZWRpYVNvdXJjZUNsaWVudCk6CisgICAgICAg
ICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBs
YXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlh
U291cmNlQ2xpZW50SW1wbCk6IFRlbXBvcmFyeSBXZWJNZWRpYVNvdXJjZUNsaWVudCBpbXBsZW1l
bnRhdGlvbiB0byBrZWVwIHRoaW5ncyB3b3JraW5nIHVudGlsIENocm9taXVtCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIGxhbmQuCisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjp+V2ViTWVkaWFTb3VyY2VD
bGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjph
ZGRJZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6cmVtb3Zl
SWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmJ1ZmZlcmVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjphcHBlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmFib3J0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpkdXJhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6c2V0RHVyYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmVuZE9mU3RyZWFtKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpzZXRUaW1lc3RhbXBPZmZzZXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZU9wZW5l
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlVVJM
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkUmVxdWVzdGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkSW50ZXJuYWwp
OgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYk1lZGlhU291cmNlLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNv
dXJjZTo6Z2V0TWVkaWFTb3VyY2VGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNv
dXJjZTo6fldlYk1lZGlhU291cmNlKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTb3VyY2VJbXBs
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTWVkaWFTb3VyY2VQcml2
YXRlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6On5NZWRp
YVNvdXJjZVByaXZhdGVJbXBsKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRl
SW1wbDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291
cmNlUHJpdmF0ZUltcGw6OmFkZElkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2
YXRlSW1wbDo6cmVtb3ZlSWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJ
bXBsOjpidWZmZXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6
OmFwcGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmFib3J0
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6ZHVyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpzZXREdXJhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmVuZE9mU3RyZWFtKToKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6c2V0VGltZXN0YW1wT2Zmc2V0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VJbXBsOjpXZWJNZWRpYVNvdXJjZUlt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUltcGw6On5XZWJNZWRpYVNvdXJj
ZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUltcGw6Om9wZW4pOgorICAg
ICAgICAqIHNyYy9XZWJNZWRpYVNvdXJjZUltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViTWVkaWFTb3VyY2VJbXBsKToKKwogMjAxMy0wMi0xOCAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
IFJvbGxlZCBDaHJvbWl1bSBERVBTIHRvIHIxODMxMDUuICBSZXF1ZXN0ZWQgYnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXgg
ZmQ2NDI5NWQ1OWQ3YWVlYjc2Njk1ODE4NWRlZGIxY2E4ZjI3NzY3YS4uZTZiZmUyNDJhZDJkMzI0
NjczMWE3MDY0ODBhOGQ2YjEwZWM1YmQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTUwLDcgKzUwLDYgQEAgUGFzc1Jl
ZlB0cjxNZWRpYVNvdXJjZT4gTWVkaWFTb3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogTWVkaWFTb3VyY2U6Ok1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAg
ICAsIG1fcmVhZHlTdGF0ZShjbG9zZWRLZXl3b3JkKCkpCi0gICAgLCBtX3BsYXllcigwKQogICAg
ICwgbV9hc3luY0V2ZW50UXVldWUoR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKIHsK
ICAgICBtX3NvdXJjZUJ1ZmZlcnMgPSBTb3VyY2VCdWZmZXJMaXN0OjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBtX2FzeW5jRXZlbnRRdWV1ZS5nZXQoKSk7CkBAIC04OCw3ICs4Nyw3
IEBAIFNvdXJjZUJ1ZmZlckxpc3QqIE1lZGlhU291cmNlOjphY3RpdmVTb3VyY2VCdWZmZXJzKCkK
IAogZG91YmxlIE1lZGlhU291cmNlOjpkdXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cmVhZHlTdGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkgPyBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6cXVpZXRfTmFOKCkgOiBtX3BsYXllci0+ZHVyYXRpb24oKTsKKyAgICByZXR1cm4gbV9yZWFk
eVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpx
dWlldF9OYU4oKSA6IG1fcHJpdmF0ZS0+ZHVyYXRpb24oKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJj
ZTo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTEw
MSw3ICsxMDAsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcGxheWVyLT5zb3VyY2VTZXREdXJhdGlvbihk
dXJhdGlvbik7CisgICAgbV9wcml2YXRlLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiB9CiAKIFNv
dXJjZUJ1ZmZlciogTWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5
cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTI2LDcgKzEyNSw3IEBAIFNvdXJjZUJ1ZmZlciog
TWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlv
bkNvZGUmIGVjCiAKICAgICAvLyA0LiBJZiB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgbm90
IGluIHRoZSAib3BlbiIgc3RhdGUgdGhlbiB0aHJvdyBhbgogICAgIC8vIElOVkFMSURfU1RBVEVf
RVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFtX3BsYXllciB8
fCBtX3JlYWR5U3RhdGUgIT0gb3BlbktleXdvcmQoKSkgeworICAgIGlmICghbV9wcml2YXRlIHx8
IG1fcmVhZHlTdGF0ZSAhPSBvcGVuS2V5d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE0MCwyMCArMTM5LDIwIEBA
IFNvdXJjZUJ1ZmZlciogTWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJpbmcm
IHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjCiAKICAgICBSZWZQdHI8U291cmNlQnVmZmVyPiBidWZm
ZXIgPSBTb3VyY2VCdWZmZXI6OmNyZWF0ZShpZCwgdGhpcyk7CiAKLSAgICBzd2l0Y2ggKG1fcGxh
eWVyLT5zb3VyY2VBZGRJZChidWZmZXItPmlkKCksIGNvbnRlbnRUeXBlLnR5cGUoKSwgY29kZWNz
KSkgewotICAgIGNhc2UgTWVkaWFQbGF5ZXI6Ok9rOgorICAgIHN3aXRjaCAobV9wcml2YXRlLT5h
ZGRJZChidWZmZXItPmlkKCksIGNvbnRlbnRUeXBlLnR5cGUoKSwgY29kZWNzKSkgeworICAgIGNh
c2UgTWVkaWFTb3VyY2VQcml2YXRlOjpPazoKICAgICAgICAgLy8gNi4gQWRkIHRoZSBuZXcgb2Jq
ZWN0IHRvIHNvdXJjZUJ1ZmZlcnMgYW5kIGZpcmUgYSBhZGRzb3VyY2VidWZmZXIgb24gdGhhdCBv
YmplY3QuCiAgICAgICAgIG1fc291cmNlQnVmZmVycy0+YWRkKGJ1ZmZlcik7CiAgICAgICAgIG1f
YWN0aXZlU291cmNlQnVmZmVycy0+YWRkKGJ1ZmZlcik7CiAgICAgICAgIC8vIDcuIFJldHVybiB0
aGUgbmV3IG9iamVjdCB0byB0aGUgY2FsbGVyLgogICAgICAgICByZXR1cm4gYnVmZmVyLmdldCgp
OwotICAgIGNhc2UgTWVkaWFQbGF5ZXI6Ok5vdFN1cHBvcnRlZDoKKyAgICBjYXNlIE1lZGlhU291
cmNlUHJpdmF0ZTo6Tm90U3VwcG9ydGVkOgogICAgICAgICAvLyAyIChjb250KS4gSWYgdHlwZSBj
b250YWlucyBhIE1JTUUgdHlwZSAuLi4gdGhhdCBpcyBub3Qgc3VwcG9ydGVkIHdpdGggdGhlIHR5
cGVzIAogICAgICAgICAvLyBzcGVjaWZpZWQgZm9yIHRoZSBvdGhlciBTb3VyY2VCdWZmZXIgb2Jq
ZWN0cyBpbiBzb3VyY2VCdWZmZXJzLCB0aGVuIHRocm93CiAgICAgICAgIC8vIGEgTk9UX1NVUFBP
UlRFRF9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgZWMgPSBO
T1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBNZWRpYVBsYXll
cjo6UmVhY2hlZElkTGltaXQ6CisgICAgY2FzZSBNZWRpYVNvdXJjZVByaXZhdGU6OlJlYWNoZWRJ
ZExpbWl0OgogICAgICAgICAvLyAzIChjb250KS4gSWYgdGhlIHVzZXIgYWdlbnQgY2FuJ3QgaGFu
ZGxlIGFueSBtb3JlIFNvdXJjZUJ1ZmZlciBvYmplY3RzIHRoZW4gdGhyb3cgCiAgICAgICAgIC8v
IGEgUVVPVEFfRVhDRUVERURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAg
ICAgICAgIGVjID0gUVVPVEFfRVhDRUVERURfRVJSOwpAQCAtMTc2LDcgKzE3NSw3IEBAIHZvaWQg
TWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXIqIGJ1ZmZlciwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyAyLiBJZiBzb3VyY2VCdWZmZXJzIGlzIGVtcHR5IHRo
ZW4gdGhyb3cgYW4gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZAogICAgIC8vIGFib3J0
IHRoZXNlIHN0ZXBzLgotICAgIGlmICghbV9wbGF5ZXIgfHwgIW1fc291cmNlQnVmZmVycy0+bGVu
Z3RoKCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZSB8fCAhbV9zb3VyY2VCdWZmZXJzLT5sZW5ndGgo
KSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTkyLDcgKzE5MSw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJjZUJ1
ZmZlcihTb3VyY2VCdWZmZXIqIGJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyA3
LiBEZXN0cm95IGFsbCByZXNvdXJjZXMgZm9yIHNvdXJjZUJ1ZmZlci4KICAgICBtX2FjdGl2ZVNv
dXJjZUJ1ZmZlcnMtPnJlbW92ZShidWZmZXIpOwotICAgIG1fcGxheWVyLT5zb3VyY2VSZW1vdmVJ
ZChidWZmZXItPmlkKCkpOworICAgIG1fcHJpdmF0ZS0+cmVtb3ZlSWQoYnVmZmVyLT5pZCgpKTsK
IAogICAgIC8vIDQuIFJlbW92ZSB0cmFjayBpbmZvcm1hdGlvbiBmcm9tIGF1ZGlvVHJhY2tzLCB2
aWRlb1RyYWNrcywgYW5kIHRleHRUcmFja3MgZm9yIGFsbCB0cmFja3MgCiAgICAgLy8gYXNzb2Np
YXRlZCB3aXRoIHNvdXJjZUJ1ZmZlciBhbmQgZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBjaGFu
Z2Ugb24gdGhlIG1vZGlmaWVkIGxpc3RzLgpAQCAtMjIwLDcgKzIxOSw3IEBAIHZvaWQgTWVkaWFT
b3VyY2U6OnNldFJlYWR5U3RhdGUoY29uc3QgU3RyaW5nJiBzdGF0ZSkKICAgICBpZiAobV9yZWFk
eVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSkgewogICAgICAgICBtX3NvdXJjZUJ1ZmZlcnMtPmNs
ZWFyKCk7CiAgICAgICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy0+Y2xlYXIoKTsKLSAgICAgICAg
bV9wbGF5ZXIgPSAwOworICAgICAgICBtX3ByaXZhdGUuY2xlYXIoKTsKICAgICAgICAgc2NoZWR1
bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0c291cmNlY2xvc2VFdmVudCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0yNDEsMTkgKzI0MCwxOSBAQCB2b2lkIE1lZGlhU291cmNlOjplbmRP
ZlN0cmVhbShjb25zdCBTdHJpbmcmIGVycm9yLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyAz
LjEgaHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNkb20tZW5kb2ZzdHJlYW0KICAgICAvLyAxLiBJZiB0aGUg
cmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgbm90IGluIHRoZSAib3BlbiIgc3RhdGUgdGhlbiB0aHJv
dyBhbgogICAgIC8vIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ug
c3RlcHMuCi0gICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5U3RhdGUgIT0gb3BlbktleXdvcmQo
KSkgeworICAgIGlmICghbV9wcml2YXRlIHx8IG1fcmVhZHlTdGF0ZSAhPSBvcGVuS2V5d29yZCgp
KSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMgZW9zU3RhdHVzID0gTWVk
aWFQbGF5ZXI6OkVvc05vRXJyb3I7CisgICAgTWVkaWFTb3VyY2VQcml2YXRlOjpFbmRPZlN0cmVh
bVN0YXR1cyBlb3NTdGF0dXMgPSBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05vRXJyb3I7CiAKICAg
ICBpZiAoZXJyb3IuaXNOdWxsKCkgfHwgZXJyb3IuaXNFbXB0eSgpKQotICAgICAgICBlb3NTdGF0
dXMgPSBNZWRpYVBsYXllcjo6RW9zTm9FcnJvcjsKKyAgICAgICAgZW9zU3RhdHVzID0gTWVkaWFT
b3VyY2VQcml2YXRlOjpFb3NOb0Vycm9yOwogICAgIGVsc2UgaWYgKGVycm9yID09ICJuZXR3b3Jr
IikKLSAgICAgICAgZW9zU3RhdHVzID0gTWVkaWFQbGF5ZXI6OkVvc05ldHdvcmtFcnJvcjsKKyAg
ICAgICAgZW9zU3RhdHVzID0gTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOZXR3b3JrRXJyb3I7CiAg
ICAgZWxzZSBpZiAoZXJyb3IgPT0gImRlY29kZSIpCi0gICAgICAgIGVvc1N0YXR1cyA9IE1lZGlh
UGxheWVyOjpFb3NEZWNvZGVFcnJvcjsKKyAgICAgICAgZW9zU3RhdHVzID0gTWVkaWFTb3VyY2VQ
cml2YXRlOjpFb3NEZWNvZGVFcnJvcjsKICAgICBlbHNlIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTI2MSwxNyArMjYwLDE3IEBAIHZvaWQg
TWVkaWFTb3VyY2U6OmVuZE9mU3RyZWFtKGNvbnN0IFN0cmluZyYgZXJyb3IsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogCiAgICAgLy8gMi4gQ2hhbmdlIHRoZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSB2YWx1
ZSB0byAiZW5kZWQiLgogICAgIHNldFJlYWR5U3RhdGUoZW5kZWRLZXl3b3JkKCkpOwotICAgIG1f
cGxheWVyLT5zb3VyY2VFbmRPZlN0cmVhbShlb3NTdGF0dXMpOworICAgIG1fcHJpdmF0ZS0+ZW5k
T2ZTdHJlYW0oZW9zU3RhdHVzKTsKIH0KIAogUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVNv
dXJjZTo6YnVmZmVyZWQoY29uc3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiB7Ci0gICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgp
KSB7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQo
KSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKLSAgICByZXR1cm4gbV9wbGF5ZXItPnNvdXJjZUJ1ZmZlcmVkKGlkKTsKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT5idWZmZXJlZChpZCk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2U6OmFw
cGVuZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGRhdGEsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpAQCAtMjgxLDcgKzI4MCw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OmFwcGVu
ZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGRhdGEsIEV4Y2VwdGlv
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fcmVhZHlT
dGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZSB8fCBtX3JlYWR5
U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yODksNyArMjg4LDcgQEAgdm9pZCBNZWRp
YVNvdXJjZTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8VWludDhBcnJheT4g
ZGF0YSwgRXhjZXB0aW8KICAgICBpZiAobV9yZWFkeVN0YXRlID09IGVuZGVkS2V5d29yZCgpKQog
ICAgICAgICBzZXRSZWFkeVN0YXRlKG9wZW5LZXl3b3JkKCkpOwogCi0gICAgaWYgKCFtX3BsYXll
ci0+c291cmNlQXBwZW5kKGlkLCBkYXRhLT5kYXRhKCksIGRhdGEtPmxlbmd0aCgpKSkgeworICAg
IGlmICghbV9wcml2YXRlLT5hcHBlbmQoaWQsIGRhdGEtPmRhdGEoKSwgZGF0YS0+bGVuZ3RoKCkp
KSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTI5NywyOSArMjk2LDM3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OmFwcGVuZChjb25zdCBTdHJpbmcm
IGlkLCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGRhdGEsIEV4Y2VwdGlvCiAKIHZvaWQgTWVkaWFT
b3VyY2U6OmFib3J0KGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAg
IGlmICghbV9wbGF5ZXIgfHwgbV9yZWFkeVN0YXRlICE9IG9wZW5LZXl3b3JkKCkpIHsKKyAgICBp
ZiAoIW1fcHJpdmF0ZSB8fCBtX3JlYWR5U3RhdGUgIT0gb3BlbktleXdvcmQoKSkgewogICAgICAg
ICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCFtX3BsYXllci0+c291cmNlQWJvcnQoaWQpKQorICAgIGlmICghbV9wcml2YXRlLT5hYm9y
dChpZCkpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBib29sIE1lZGlhU291
cmNlOjpzZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5U3RhdGUg
PT0gY2xvc2VkS2V5d29yZCgpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFkeVN0YXRl
ID09IGNsb3NlZEtleXdvcmQoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFtX3BsYXllci0+c291cmNl
U2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUtPnNl
dFRpbWVzdGFtcE9mZnNldChpZCwgb2Zmc2V0KSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RB
VEVfRVJSOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwog
fQogCit2b2lkIE1lZGlhU291cmNlOjpzZXRQcml2YXRlQW5kT3BlbihQYXNzT3duUHRyPE1lZGlh
U291cmNlUHJpdmF0ZT4gbWVkaWFTb3VyY2VQcml2YXRlKQoreworICAgIEFTU0VSVChtZWRpYVNv
dXJjZVByaXZhdGUpOworICAgIEFTU0VSVCghbV9wcml2YXRlKTsKKyAgICBtX3ByaXZhdGUgPSBt
ZWRpYVNvdXJjZVByaXZhdGU7CisgICAgc2V0UmVhZHlTdGF0ZShvcGVuS2V5d29yZCgpKTsKK30K
KwogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYVNvdXJjZTsKQEAg
LTMzMiwxMyArMzM5LDEzIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU291cmNlOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIAogYm9vbCBNZWRpYVNvdXJjZTo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wbGF5ZXIgfHwgbV9hc3luY0V2
ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKQorICAgIHJldHVybiBtX3ByaXZhdGUgfHwgbV9h
c3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKQogICAgICAgICB8fCBBY3RpdmVET01P
YmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpzdG9w
KCkKIHsKLSAgICBtX3BsYXllciA9IDA7CisgICAgbV9wcml2YXRlLmNsZWFyKCk7CiAgICAgbV9h
c3luY0V2ZW50UXVldWUtPmNhbmNlbEFsbEV2ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKaW5kZXggMWQzZjM0NzZiNjc4
MWYzYzlmNWNlNGZhNDJhZWM3Y2UwNTEwZGNiYy4uOTUzNThkN2NiOWQxN2M0NmFiMGE5NGVmNzUy
YjdiNWNmMWQ3MzJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuaApAQCAtMzUsNyArMzUsNyBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKLSNpbmNsdWRlICJNZWRp
YVBsYXllci5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlNv
dXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVu
ZE9mU3RyZWFtKGNvbnN0IFN0cmluZyYgZXJyb3IsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZv
aWQgc2V0TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgeyBtX3BsYXllciA9IHBsYXll
cjsgfQorICAgIHZvaWQgc2V0UHJpdmF0ZUFuZE9wZW4oUGFzc093blB0cjxNZWRpYVNvdXJjZVBy
aXZhdGU+KTsKIAogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoY29uc3QgU3Ry
aW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0
cmluZyYgaWQsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwpA
QCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFy
Z2V0RGF0YTsKIAogICAgIFN0cmluZyBtX3JlYWR5U3RhdGU7Ci0gICAgTWVkaWFQbGF5ZXIqIG1f
cGxheWVyOworICAgIE93blB0cjxNZWRpYVNvdXJjZVByaXZhdGU+IG1fcHJpdmF0ZTsKIAogICAg
IFJlZlB0cjxTb3VyY2VCdWZmZXJMaXN0PiBtX3NvdXJjZUJ1ZmZlcnM7CiAgICAgUmVmUHRyPFNv
dXJjZUJ1ZmZlckxpc3Q+IG1fYWN0aXZlU291cmNlQnVmZmVyczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDJiYzRlNmIxNDFlNWExNTZmODUxZDljZWVmOTFh
YmJjMTJhMGM0OWYuLjlmMjAwZWM2YjA2NmFhZTBmN2FjMDg4OWI5ZjVhM2QzZDE4NWQwYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzA4LDExICszMDgs
NiBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bQogICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0
aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWRSZXN0cmljdGlvbik7CiAgICAgfQogCi0jaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBtX21lZGlhU291cmNlVVJMLnNldFByb3RvY29sKG1l
ZGlhU291cmNlQmxvYlByb3RvY29sKTsKLSAgICBtX21lZGlhU291cmNlVVJMLnNldFBhdGgoY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKLSNlbmRpZgotCiAgICAgc2V0SGFzQ3VzdG9tU3R5
bGVDYWxsYmFja3MoKTsKICAgICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVu
dCk7CiAKQEAgLTk4NywxOSArOTgyLDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVz
b3VyY2UoY29uc3QgS1VSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIEFT
U0VSVCghbV9tZWRpYVNvdXJjZSk7Ci0KLSAgICBpZiAodXJsLnByb3RvY29sSXMobWVkaWFTb3Vy
Y2VCbG9iUHJvdG9jb2wpKSB7Ci0gICAgICAgIG1fbWVkaWFTb3VyY2UgPSBNZWRpYVNvdXJjZVJl
Z2lzdHJ5OjpyZWdpc3RyeSgpLmxvb2t1cE1lZGlhU291cmNlKHVybC5zdHJpbmcoKSk7Ci0KLSAg
ICAgICAgaWYgKG1fbWVkaWFTb3VyY2UpIHsKLSAgICAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnNl
dE1lZGlhUGxheWVyKG1fcGxheWVyLmdldCgpKTsKLSAgICAgICAgICAgIG1fbWVkaWFTb3VyY2VV
UkwgPSB1cmw7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQogICAgIC8vIFRoZSByZXNvdXJj
ZSBmZXRjaCBhbGdvcml0aG0gCiAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0xPQURJTkc7
CiAKQEAgLTEwNTQsOCArMTAzNiwyMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNv
dXJjZShjb25zdCBLVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlwZSYgY29udGVudAogICAgICAg
ICBtX211dGVkID0gdHJ1ZTsKICAgICB1cGRhdGVWb2x1bWUoKTsKIAorI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCisgICAgQVNTRVJUKCFtX21lZGlhU291cmNlKTsKKworICAgIGlmICh1cmwucHJv
dG9jb2xJcyhtZWRpYVNvdXJjZUJsb2JQcm90b2NvbCkpCisgICAgICAgIG1fbWVkaWFTb3VyY2Ug
PSBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLmxvb2t1cE1lZGlhU291cmNlKHVybC5z
dHJpbmcoKSk7CisKKyAgICBpZiAobV9tZWRpYVNvdXJjZSkgeworICAgICAgICBpZiAoIW1fcGxh
eWVyLT5sb2FkKG1fbWVkaWFTb3VyY2UpKQorICAgICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVk
KE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgfSBlbHNlIGlmICghbV9wbGF5ZXItPmxv
YWQodXJsLCBjb250ZW50VHlwZSwga2V5U3lzdGVtKSkKKyAgICAgICAgbWVkaWFMb2FkaW5nRmFp
bGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisjZWxzZQogICAgIGlmICghbV9wbGF5ZXIt
PmxvYWQodXJsLCBjb250ZW50VHlwZSwga2V5U3lzdGVtKSkKICAgICAgICAgbWVkaWFMb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisjZW5kaWYKIAogICAgIC8vIElmIHRo
ZXJlIGlzIG5vIHBvc3RlciB0byBkaXNwbGF5LCBhbGxvdyB0aGUgbWVkaWEgZW5naW5lIHRvIHJl
bmRlciB2aWRlbyBmcmFtZXMgYXMgc29vbiBhcwogICAgIC8vIHRoZXkgYXJlIGF2YWlsYWJsZS4K
QEAgLTE4NzIsMjIgKzE4NjcsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3Rh
dGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU291cmNl
T3BlbmVkKCkKLXsKLSAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7Ci0K
LSAgICBzZXRTb3VyY2VTdGF0ZShNZWRpYVNvdXJjZTo6b3BlbktleXdvcmQoKSk7Ci0KLSAgICBl
bmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwotfQotCi1TdHJpbmcgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJTb3VyY2VVUkwoKSBjb25zdAotewotICAgIHJldHVybiBtX21l
ZGlhU291cmNlVVJMLnN0cmluZygpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleUFkZGVkKE1lZGlh
UGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
KQogewpAQCAtNDQ5NCwxMyArNDQ3MywxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0
ZU1lZGlhUGxheWVyKCkKICAgICAgICAgbV9hdWRpb1NvdXJjZU5vZGUtPmxvY2soKTsKICNlbmRp
ZgogCi0gICAgbV9wbGF5ZXIgPSBNZWRpYVBsYXllcjo6Y3JlYXRlKHRoaXMpOwotCiAjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKLSAgICBpZiAobV9tZWRpYVNvdXJjZSkKLSAgICAgICAgbV9tZWRp
YVNvdXJjZS0+c2V0TWVkaWFQbGF5ZXIobV9wbGF5ZXIuZ2V0KCkpOworICAgIGlmIChtX21lZGlh
U291cmNlICYmIG1fbWVkaWFTb3VyY2UtPnJlYWR5U3RhdGUoKSAhPSBNZWRpYVNvdXJjZTo6Y2xv
c2VkS2V5d29yZCgpKQorICAgICAgICBtX21lZGlhU291cmNlLT5zZXRSZWFkeVN0YXRlKE1lZGlh
U291cmNlOjpjbG9zZWRLZXl3b3JkKCkpOwogI2VuZGlmCiAKKyAgICBtX3BsYXllciA9IE1lZGlh
UGxheWVyOjpjcmVhdGUodGhpcyk7CisKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIGlmICht
X2F1ZGlvU291cmNlTm9kZSkgewogICAgICAgICAvLyBXaGVuIGNyZWF0aW5nIHRoZSBwbGF5ZXIs
IG1ha2Ugc3VyZSBpdHMgQXVkaW9Tb3VyY2VQcm92aWRlciBrbm93cyBhYm91dCB0aGUgTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlLgpAQCAtNDg0MSw3ICs0ODIwLDYgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb24KICAgICBpbmZvLmFkZE1lbWJlcihtX3Byb3h5V2lkZ2V0LCAicHJveHlXaWRn
ZXQiKTsKICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgaW5mby5hZGRNZW1i
ZXIobV9tZWRpYVNvdXJjZVVSTCwgIm1lZGlhU291cmNlVVJMIik7CiAgICAgaW5mby5hZGRNZW1i
ZXIobV9tZWRpYVNvdXJjZSwgIm1lZGlhU291cmNlIik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGZhMWUz
ZjI4NGVlMTk2YmZiMjFjMjJhNGY4ZjcxNzJlNDMxNjBkNDUuLjM3NGRmMmI4NTY1ODYyZjM1MzUw
N2RmNDkyODMzZDQzMjA4YTUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC00NDIsMTEgKzQ0Miw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKE1lZGlhUGxheWVyKik7CiAgICAgdmlydHVh
bCB2b2lkIG1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlhUGxheWVyKik7CiAK
LSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNv
dXJjZU9wZW5lZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291cmNlVVJMKCkg
Y29uc3Q7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVh
bCB2b2lkIG1lZGlhUGxheWVyS2V5QWRkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllcktleUVycm9yKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBNZWRpYVBsYXllckNsaWVudDo6TWVkaWFL
ZXlFcnJvckNvZGUsIHVuc2lnbmVkIHNob3J0IHN5c3RlbUNvZGUpIE9WRVJSSURFOwpAQCAtNjM5
LDcgKzYzNCw2IEBAIHByaXZhdGU6CiAgICAgaW50IG1fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2Fs
bGJhY2s7CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIEtVUkwgbV9tZWRpYVNvdXJj
ZVVSTDsKICAgICBSZWZQdHI8TWVkaWFTb3VyY2U+IG1fbWVkaWFTb3VyY2U7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmlu
ZGV4IDBiMjU0NGY5MjE2MThmMmUxMzEwNTg5YjA5NmE2MWY4YjA1ZjY5OTEuLmZkMmRlOTc1ZTkw
MThmOWEyODI4MDM4Mjg0ZWQ1YzY1NzA4YjViZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTkxLDYgKzkxLDkgQEAgcHVibGlj
OgogICAgIE51bGxNZWRpYVBsYXllclByaXZhdGUoTWVkaWFQbGF5ZXIqKSB7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYpIHsgfQorI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCisgICAgdmlydHVhbCB2b2lkIGxvYWQoUGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4pIHsgfQor
I2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlVG9QbGF5KCkgeyB9CkBAIC0xNTEsMTcgKzE1NCw2IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdmlydHVhbCBNZWRpYVBs
YXllcjo6QWRkSWRTdGF0dXMgc291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKSB7IHJldHVybiBNZWRpYVBs
YXllcjo6Tm90U3VwcG9ydGVkOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IHNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0
ZSgpOyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYpIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCBTdHJp
bmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIHNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZVNldER1cmF0aW9uKGRvdWJsZSkgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKE1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0
YXR1cykgeyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChjb25z
dCBTdHJpbmcmLCBkb3VibGUpIHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKLQogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNl
cHRpb24gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNo
YXIqLCB1bnNpZ25lZCkgT1ZFUlJJREUgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5
ZXJTdGF0ZTsgfQogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGFk
ZEtleShjb25zdCBTdHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyByZXR1
cm4gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsgfQpAQCAtMzcyLDYgKzM2NCwxMCBA
QCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgQ29udGVudFR5
cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdAogICAgIG1fa2V5U3lzdGVtID0ga2V5U3lzdGVtLmxv
d2VyKCk7CiAgICAgbV9jb250ZW50TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21FeHRlbnNpb24gPSBm
YWxzZTsKIAorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgbV9tZWRpYVNvdXJjZSA9IDA7
CisjZW5kaWYKKwogICAgIC8vIElmIHRoZSBNSU1FIHR5cGUgaXMgbWlzc2luZyBvciBpcyBub3Qg
bWVhbmluZ2Z1bCwgdHJ5IHRvIGZpZ3VyZSBpdCBvdXQgZnJvbSB0aGUgVVJMLgogICAgIGlmICht
X2NvbnRlbnRNSU1FVHlwZS5pc0VtcHR5KCkgfHwgbV9jb250ZW50TUlNRVR5cGUgPT0gYXBwbGlj
YXRpb25PY3RldFN0cmVhbSgpIHx8IG1fY29udGVudE1JTUVUeXBlID09IHRleHRQbGFpbigpKSB7
CiAgICAgICAgIGlmIChtX3VybC5wcm90b2NvbElzRGF0YSgpKQpAQCAtMzk0LDYgKzM5MCwyMCBA
QCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgQ29udGVudFR5
cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdAogICAgIHJldHVybiBtX2N1cnJlbnRNZWRpYUVuZ2lu
ZTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCitib29sIE1lZGlhUGxheWVyOjpsb2Fk
KFBhc3NSZWZQdHI8TWVkaWFTb3VyY2U+IG1lZGlhU291cmNlKQoreworICAgIG1fbWVkaWFTb3Vy
Y2UgPSBtZWRpYVNvdXJjZTsKKyAgICBtX2NvbnRlbnRNSU1FVHlwZSA9ICIiOworICAgIG1fY29u
dGVudFR5cGVDb2RlY3MgPSAiIjsKKyAgICBtX3VybCA9IEtVUkwoKTsKKyAgICBtX2tleVN5c3Rl
bSA9ICIiOworICAgIG1fY29udGVudE1JTUVUeXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uID0g
ZmFsc2U7CisgICAgbG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoMCk7CisgICAgcmV0dXJuIG1fY3Vy
cmVudE1lZGlhRW5naW5lOworfQorI2VuZGlmCisKIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRo
TmV4dE1lZGlhRW5naW5lKE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKIHsKICAgICBNZWRp
YVBsYXllckZhY3RvcnkqIGVuZ2luZSA9IDA7CkBAIC00MjUsOSArNDM1LDE2IEBAIHZvaWQgTWVk
aWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKE1lZGlhUGxheWVyRmFjdG9yeSogY3Vy
cmVudCkKICAgICAgICAgICAgIG1fcHJpdmF0ZS0+cHJlcGFyZUZvclJlbmRlcmluZygpOwogICAg
IH0KIAotICAgIGlmIChtX3ByaXZhdGUpCisgICAgaWYgKG1fcHJpdmF0ZSkgeworI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCisgICAgICAgIGlmIChtX21lZGlhU291cmNlKQorICAgICAgICAgICAg
bV9wcml2YXRlLT5sb2FkKG1fbWVkaWFTb3VyY2UpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX3ByaXZhdGUtPmxvYWQobV91cmwuc3RyaW5nKCkpOworI2Vsc2UKICAgICAgICAgbV9wcml2
YXRlLT5sb2FkKG1fdXJsLnN0cmluZygpKTsKLSAgICBlbHNlIHsKKyNlbmRpZgorICAgIH0gZWxz
ZSB7CiAgICAgICAgIG1fcHJpdmF0ZSA9IGNyZWF0ZU51bGxNZWRpYVBsYXllcih0aGlzKTsKICAg
ICAgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpIHsKICAgICAgICAgICAgIG1fbWVkaWFQbGF5
ZXJDbGllbnQtPm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCh0aGlzKTsKQEAgLTQ3Nyw0OSArNDk0
LDYgQEAgdm9pZCBNZWRpYVBsYXllcjo6cGF1c2UoKQogICAgIG1fcHJpdmF0ZS0+cGF1c2UoKTsK
IH0KIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0KLU1lZGlhUGxheWVyOjpBZGRJZFN0YXR1
cyBNZWRpYVBsYXllcjo6c291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKQotewotICAgIHJldHVybiBtX3By
aXZhdGUtPnNvdXJjZUFkZElkKGlkLCB0eXBlLCBjb2RlY3MpOwotfQotCi1QYXNzUmVmUHRyPFRp
bWVSYW5nZXM+IE1lZGlhUGxheWVyOjpzb3VyY2VCdWZmZXJlZChjb25zdCBTdHJpbmcmIGlkKQot
ewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZUJ1ZmZlcmVkKGlkKTsKLX0KLQotYm9vbCBN
ZWRpYVBsYXllcjo6c291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkKLXsKLSAgICByZXR1
cm4gbV9wcml2YXRlLT5zb3VyY2VSZW1vdmVJZChpZCk7Ci19Ci0KLWJvb2wgTWVkaWFQbGF5ZXI6
OnNvdXJjZUFwcGVuZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlQXBwZW5k
KGlkLCBkYXRhLCBsZW5ndGgpOwotfQotCi1ib29sIE1lZGlhUGxheWVyOjpzb3VyY2VBYm9ydChj
b25zdCBTdHJpbmcmIGlkKQotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZUFib3J0KGlk
KTsKLX0KLQotdm9pZCBNZWRpYVBsYXllcjo6c291cmNlU2V0RHVyYXRpb24oZG91YmxlIGR1cmF0
aW9uKQotewotICAgIG1fcHJpdmF0ZS0+c291cmNlU2V0RHVyYXRpb24oZHVyYXRpb24pOwotfQot
Ci12b2lkIE1lZGlhUGxheWVyOjpzb3VyY2VFbmRPZlN0cmVhbShNZWRpYVBsYXllcjo6RW5kT2ZT
dHJlYW1TdGF0dXMgc3RhdHVzKQotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZUVuZE9m
U3RyZWFtKHN0YXR1cyk7Ci19Ci0KLWJvb2wgTWVkaWFQbGF5ZXI6OnNvdXJjZVNldFRpbWVzdGFt
cE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KQotewotICAgIHJldHVybiBt
X3ByaXZhdGUtPnNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChpZCwgb2Zmc2V0KTsKLX0KLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4
Y2VwdGlvbiBNZWRpYVBsYXllcjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFM
ZW5ndGgpCiB7CkBAIC05NDcsMjEgKzkyMSw2IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFByaXZh
dGVCcm93c2luZ01vZGUoYm9vbCBwcml2YXRlQnJvd3NpbmdNb2RlKQogICAgIG1fcHJpdmF0ZS0+
c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShtX3ByaXZhdGVCcm93c2luZyk7CiB9CiAKLSNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQotdm9pZCBNZWRpYVBsYXllcjo6c291cmNlT3BlbmVkKCkKLXsKLSAg
ICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKLSAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+
bWVkaWFQbGF5ZXJTb3VyY2VPcGVuZWQoKTsKLX0KLQotU3RyaW5nIE1lZGlhUGxheWVyOjpzb3Vy
Y2VVUkwoKSBjb25zdAotewotICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQotICAgICAgICBy
ZXR1cm4gbV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJTb3VyY2VVUkwoKTsKLSAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci19Ci0jZW5kaWYKLQogLy8gQ2xpZW50IGNhbGxiYWNrcy4KIHZvaWQg
TWVkaWFQbGF5ZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggNjNjZTA5Zjc5Yjg2ZjRiYjA4
MGY5YTc5MzYyOTgxNDc3NmVhNzgxNy4uYzNkMGIxZDgyOTgxZTEzNGRkOGIxZTQxMjM0NjdmZTA1
MGE5ZTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
IktVUkwuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2Uu
aCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTYxLDcgKzYyLDYgQEAgY2xhc3MgQXVkaW9Tb3VyY2VQcm92
aWRlcjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgR1N0cmVhbWVyR1dvcmxkOwogY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOwotY2xhc3MgTWVkaWFTb3VyY2U7CiBjbGFzcyBUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbjsKIAogLy8gU3RydWN0dXJlIHRoYXQgd2lsbCBob2xkIGV2ZXJ5
IG5hdGl2ZQpAQCAtMTgwLDExICsxODAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHcmFwaGlj
c0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VBZGFwdGVyKGNvbnN0IE1l
ZGlhUGxheWVyKikgY29uc3QgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNvdXJjZU9wZW5lZCgpIHsg
fQotICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291cmNlVVJMKCkgY29uc3QgeyByZXR1
cm4gIngtbWVkaWEtc291cmNlLXVuc3VwcG9ydGVkOiI7IH0KLSNlbmRpZgotCiAjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKICAgICBlbnVtIE1lZGlhS2V5RXJyb3JDb2RlIHsgVW5rbm93bkVy
cm9yID0gMSwgQ2xpZW50RXJyb3IsIFNlcnZpY2VFcnJvciwgT3V0cHV0RXJyb3IsIEhhcmR3YXJl
Q2hhbmdlRXJyb3IsIERvbWFpbkVycm9yIH07CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
S2V5QWRkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIC8qIGtleVN5c3RlbSAqLywgY29u
c3QgU3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8pIHsgfQpAQCAtMjcxLDYgKzI2Niw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSk7CiAKICAgICBib29sIGxv
YWQoY29uc3QgS1VSTCYsIGNvbnN0IENvbnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgYm9vbCBsb2FkKFBhc3NSZWZQdHI8
TWVkaWFTb3VyY2U+KTsKKyNlbmRpZgogICAgIHZvaWQgY2FuY2VsTG9hZCgpOwogCiAgICAgYm9v
bCB2aXNpYmxlKCkgY29uc3Q7CkBAIC0yODAsMTkgKzI3OCw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHBsYXkoKTsKICAgICB2b2lkIHBhdXNlKCk7ICAgIAogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKLSAgICBlbnVtIEFkZElkU3RhdHVzIHsgT2ssIE5vdFN1cHBvcnRlZCwgUmVhY2hlZElkTGlt
aXQgfTsKLSAgICBBZGRJZFN0YXR1cyBzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpOwotICAgIGJvb2wg
c291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCk7Ci0gICAgUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiBzb3VyY2VCdWZmZXJlZChjb25zdCBTdHJpbmcmIGlkKTsKLSAgICBib29sIHNvdXJjZUFw
cGVuZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHZvaWQgc291cmNlU2V0RHVyYXRpb24oZG91YmxlKTsKLSAgICBib29s
IHNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYgaWQpOwotICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0
dXMgeyBFb3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0RlY29kZUVycm9yIH07Ci0gICAg
dm9pZCBzb3VyY2VFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyk7Ci0gICAgYm9vbCBzb3Vy
Y2VTZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCk7Ci0j
ZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgLy8gUmVwcmVzZW50cyBz
eW5jaHJvbm91cyBleGNlcHRpb25zIHRoYXQgY2FuIGJlIHRocm93biBmcm9tIHRoZSBFbmNyeXB0
ZWQgTWVkaWEgbWV0aG9kcy4KICAgICAvLyBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBhc3lu
Y2hyb25vdXMgTWVkaWFLZXlFcnJvci4KQEAgLTQyMiwxMSArNDA3LDYgQEAgcHVibGljOgogICAg
IEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKTsKICNlbmRpZgogCi0j
aWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICB2b2lkIHNvdXJjZU9wZW5lZCgpOwotICAgIFN0
cmluZyBzb3VyY2VVUkwoKSBjb25zdDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKICAgICB2b2lkIGtleUFkZGVkKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCk7CiAgICAgdm9pZCBrZXlFcnJvcihjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtl
eUVycm9yQ29kZSwgdW5zaWduZWQgc2hvcnQgc3lzdGVtQ29kZSk7CkBAIC00ODQsNiArNDY0LDEw
IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgV2Vi
TWVkaWFQbGF5ZXJQcm94eSogbV9wbGF5ZXJQcm94eTsgICAgLy8gbm90IG93bmVkIG9yIHVzZWQs
IHBhc3NlZCB0byBtX3ByaXZhdGUKICNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
KyAgICBSZWZQdHI8TWVkaWFTb3VyY2U+IG1fbWVkaWFTb3VyY2U7CisjZW5kaWYKIH07CiAKIHR5
cGVkZWYgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+ICgqQ3JlYXRlTWVk
aWFFbmdpbmVQbGF5ZXIpKE1lZGlhUGxheWVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDVjNjY3NGQyZDNh
NjM4Y2EzMDYxZDNmOTIyOWFhYWRmMjJhYTc4NDAuLmY5NjVmYzI0NTE4ZjE1NzM5Y2VkYjJhODQy
MzllMzZhOWJlMzc0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC00NCw2ICs0NCw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5NZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UoKSB7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgdXJsKSA9IDA7CisjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChQYXNzUmVmUHRyPE1lZGlhU291cmNlPikgPSAw
OworI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKSA9IDA7CiAgICAgCiAgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVUb1BsYXkoKSB7IH0KQEAgLTE2NywxNyArMTcwLDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRl
cigpIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAg
ICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpBZGRJZFN0YXR1cyBzb3VyY2VBZGRJZChjb25zdCBTdHJp
bmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3Mp
IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpOb3RTdXBwb3J0ZWQ7IH0KLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8VGltZVJhbmdlcz4gc291cmNlQnVmZmVyZWQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1
cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlUmVtb3Zl
SWQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
c291cmNlQXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291
cmNlQWJvcnQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc291cmNlU2V0RHVyYXRpb24oZG91YmxlKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc291
cmNlRW5kT2ZTdHJlYW0oTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzKSB7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgc291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYgaWQsIGRv
dWJsZSBvZmZzZXQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24g
YWRkS2V5KGNvbnN0IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCwgY29u
c3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKSB7IHJldHVybiBNZWRp
YVBsYXllcjo6S2V5U3lzdGVtTm90U3VwcG9ydGVkOyB9CiAgICAgdmlydHVhbCBNZWRpYVBsYXll
cjo6TWVkaWFLZXlFeGNlcHRpb24gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCkgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OktleVN5
c3RlbU5vdFN1cHBvcnRlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDkxZGEwY2ZkMDEwZTY3
ZmFiNzVjNWNhY2FkM2Y2YmZmOTBkMWY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKQEAgLTAsMCArMSw2MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisj
aWZuZGVmIE1lZGlhU291cmNlUHJpdmF0ZV9oCisjZGVmaW5lIE1lZGlhU291cmNlUHJpdmF0ZV9o
CisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU291cmNlUHJpdmF0ZSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTb3VyY2VQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgTWVkaWFTb3VyY2VQcml2YXRlKCkgeyB9CisgICAgdmly
dHVhbCB+TWVkaWFTb3VyY2VQcml2YXRlKCkgeyB9CisKKyAgICBlbnVtIEFkZElkU3RhdHVzIHsg
T2ssIE5vdFN1cHBvcnRlZCwgUmVhY2hlZElkTGltaXQgfTsKKyAgICB2aXJ0dWFsIEFkZElkU3Rh
dHVzIGFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGNvZGVjcykgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZW1vdmVJZChjb25z
dCBTdHJpbmcmIGlkKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1
ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKGNv
bnN0IFN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGR1cmF0aW9uKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXREdXJhdGlvbihkb3VibGUpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYWJvcnQoY29u
c3QgU3RyaW5nJiBpZCkgPSAwOworICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgeyBFb3NOb0Vy
cm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0RlY29kZUVycm9yIH07CisgICAgdmlydHVhbCB2b2lk
IGVuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNl
dFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KSA9IDA7Cit9
OworCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXgg
ZWU0ZGEzZGIxMWZmMmY0YTJkNmM5ZmQwNWE0MTNjYTczN2QwMDBhZS4uODEyNDMzNDEzYzczM2Nk
MmVjOTY2ZjExNWRjNDNkZTZiMmVkY2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApA
QCAtMTk1LDYgKzE5NSw4IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVBsYXll
ci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlhUGxheWVyQWN0aW9uLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaCcsCisgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVNvdXJjZS5oJywKKyAgICAgICAgICAgICAgICAncHVi
bGljL1dlYk1lZGlhU291cmNlQ2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
TWVkaWFTdHJlYW1SZWdpc3RyeS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lbW9y
eVVzYWdlSW5mby5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lbnVJdGVtSW5mby5o
JywKQEAgLTUwNSw2ICs1MDcsOSBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViTGFiZWxFbGVt
ZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oJywK
KyAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhU291cmNlLmNwcCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJNZWRpYVNvdXJjZUltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dl
Yk1lZGlhU291cmNlSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhU3RyZWFt
UmVnaXN0cnkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk5ldHdvcmtTdGF0ZU5vdGlm
aWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOb2RlLmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAppbmRleCBhNDI4N2UxYzFk
ZTRhMzk5NzAxMDQ4ZmQ2YzRjMWQwN2FiYTM2ZjE4Li5iMWFkY2YyMDllZWRmODY1NjhiOTAwYzcy
M2U5OWQxMzc1MTgwMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJNZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
Yk1lZGlhUGxheWVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIi4uLy4uLy4uL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDYW52YXMuaCIKICNpbmNsdWRlICIuLi8uLi8uLi9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFT
b3VyY2UuaCIKICNpbmNsdWRlICJXZWJUaW1lUmFuZ2UuaCIKICNpbmNsdWRlICJXZWJWaWRlb0Zy
YW1lLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1l
ZGlhUGxheWVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRp
YVBsYXllckNsaWVudC5oCmluZGV4IGRlY2E5NTM2ZDk5YTQ1Y2IyMTVlOGVhNWUyMDRhNjE4OTc1
NWM0YjMuLmM4MmZkM2FjYzY1NjliYTI3MGMxYjc2ZDdhNjFjYjlkMzM1YTlhZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQu
aApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1l
OworY2xhc3MgV2ViTWVkaWFTb3VyY2U7CiBjbGFzcyBXZWJQbHVnaW47CiBjbGFzcyBXZWJSZXF1
ZXN0OwogY2xhc3MgV2ViVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
Yk1lZGlhU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmIzZmFjMjkyMWZiMzY2OWRiMjY5MDZhNWQ3YWE2
MTkxZjE3NmQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYk1lZGlhU291cmNlLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFTb3Vy
Y2VfaAorI2RlZmluZSBXZWJNZWRpYVNvdXJjZV9oCisKKyNpbmNsdWRlICIuLi8uLi8uLi9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViVGltZVJhbmdlLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVNvdXJjZUNsaWVudDsKKwor
Y2xhc3MgV2ViTWVkaWFTb3VyY2UgeworcHVibGljOgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGlj
IFdlYk1lZGlhU291cmNlKiBnZXRNZWRpYVNvdXJjZUZvclVSTChjb25zdCBXZWJVUkwmKTsKKwor
ICAgIHZpcnR1YWwgfldlYk1lZGlhU291cmNlKCk7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oV2Vi
TWVkaWFTb3VyY2VDbGllbnQqKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRp
YVNvdXJjZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFT
b3VyY2VDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTY1MDkwNGJiNDJiZjhmZmEwZTc2YzczN2I5ZmVl
ZGMxYWU5ZjEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViTWVkaWFTb3VyY2VDbGllbnQuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRp
YVNvdXJjZUNsaWVudF9oCisjZGVmaW5lIFdlYk1lZGlhU291cmNlQ2xpZW50X2gKKworI2luY2x1
ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKKyNpbmNs
dWRlICJXZWJUaW1lUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1l
ZGlhU291cmNlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBlbnVtIEFkZElkU3RhdHVzIHsKKyAgICAg
ICAgQWRkSWRTdGF0dXNPaywKKyAgICAgICAgQWRkSWRTdGF0dXNOb3RTdXBwb3J0ZWQsCisgICAg
ICAgIEFkZElkU3RhdHVzUmVhY2hlZElkTGltaXQKKyAgICB9OworCisgICAgZW51bSBFbmRPZlN0
cmVhbVN0YXR1cyB7CisgICAgICAgIEVuZE9mU3RyZWFtU3RhdHVzTm9FcnJvciwKKyAgICAgICAg
RW5kT2ZTdHJlYW1TdGF0dXNOZXR3b3JrRXJyb3IsCisgICAgICAgIEVuZE9mU3RyZWFtU3RhdHVz
RGVjb2RlRXJyb3IsCisgICAgfTsKKworICAgIHZpcnR1YWwgfldlYk1lZGlhU291cmNlQ2xpZW50
KCkgeyB9CisKKyAgICB2aXJ0dWFsIEFkZElkU3RhdHVzIGFkZElkKGNvbnN0IFdlYlN0cmluZyYg
aWQsIGNvbnN0IFdlYlN0cmluZyYgdHlwZSwgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGNv
ZGVjcykgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZW1vdmVJZChjb25zdCBXZWJTdHJpbmcmIGlk
KSA9IDA7CisgICAgdmlydHVhbCBXZWJUaW1lUmFuZ2VzIGJ1ZmZlcmVkKGNvbnN0IFdlYlN0cmlu
ZyYgaWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKGNvbnN0IFdlYlN0cmluZyYgaWQs
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBhYm9ydChjb25zdCBXZWJTdHJpbmcmIGlkKSA9IDA7CisgICAgdmlydHVhbCBk
b3VibGUgZHVyYXRpb24oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJs
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgV2ViU3RyaW5n
JiBpZCwgZG91YmxlIG9mZnNldCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0
Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGlu
Z0VudW1zLmNwcAppbmRleCBiOTcyNTE2NTNkYTJkMDgzZGVlM2QzMWVjMTQ0Y2E1N2YyMTU3MWRh
Li5mNmIyYmJhYzdlMzgzYmM3ZWQ3ZWIwOTE3NjVkMDU1ZmE2MGVlYzIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNjIs
NiArNjIsOSBAQAogI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5o
IgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyNp
bmNsdWRlICJNZWRpYVNvdXJjZVByaXZhdGUuaCIKKyNlbmRpZgogI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAi
UGFnZVZpc2liaWxpdHlTdGF0ZS5oIgpAQCAtMTA1LDYgKzEwOCw3IEBACiAjaW5jbHVkZSAiV2Vi
SW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJX
ZWJNZWRpYVBsYXllckNsaWVudC5oIgorI2luY2x1ZGUgIldlYk1lZGlhU291cmNlQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCkBAIC00MDksMTUg
KzQxMywxMyBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpQ
cmVsb2FkTWV0YURhdGEsIE1lZGlhUGxheWVyOjpNZXRhRAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJNZWRpYVBsYXllcjo6UHJlbG9hZEF1dG8sIE1lZGlhUGxheWVyOjpBdXRvKTsK
IAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYk1lZGlhUGxheWVyOjpBZGRJZFN0YXR1c09rLCBNZWRpYVBsYXllcjo6T2spOwotQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXNOb3RTdXBw
b3J0ZWQsIE1lZGlhUGxheWVyOjpOb3RTdXBwb3J0ZWQpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXNSZWFjaGVkSWRMaW1pdCwgTWVkaWFQ
bGF5ZXI6OlJlYWNoZWRJZExpbWl0KTsKLSNlbmRpZgorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6QWRkSWRTdGF0dXNPaywgTWVkaWFTb3VyY2VQcml2
YXRlOjpPayk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhU291cmNlQ2xp
ZW50OjpBZGRJZFN0YXR1c05vdFN1cHBvcnRlZCwgTWVkaWFTb3VyY2VQcml2YXRlOjpOb3RTdXBw
b3J0ZWQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVu
dDo6QWRkSWRTdGF0dXNSZWFjaGVkSWRMaW1pdCwgTWVkaWFTb3VyY2VQcml2YXRlOjpSZWFjaGVk
SWRMaW1pdCk7CiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXNOb0Vycm9yLCBN
ZWRpYVBsYXllcjo6RW9zTm9FcnJvcik7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
Yk1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1c05ldHdvcmtFcnJvciwgTWVkaWFQbGF5ZXI6
OkVvc05ldHdvcmtFcnJvcik7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlh
UGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1c0RlY29kZUVycm9yLCBNZWRpYVBsYXllcjo6RW9zRGVj
b2RlRXJyb3IpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNs
aWVudDo6RW5kT2ZTdHJlYW1TdGF0dXNOb0Vycm9yLCBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05v
RXJyb3IpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVu
dDo6RW5kT2ZTdHJlYW1TdGF0dXNOZXR3b3JrRXJyb3IsIE1lZGlhU291cmNlUHJpdmF0ZTo6RW9z
TmV0d29ya0Vycm9yKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFTb3Vy
Y2VDbGllbnQ6OkVuZE9mU3RyZWFtU3RhdHVzRGVjb2RlRXJyb3IsIE1lZGlhU291cmNlUHJpdmF0
ZTo6RW9zRGVjb2RlRXJyb3IpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5jcHAKaW5kZXggZWYzNTBkNzFhMDBkMWYwMTc5YzAyOTQ0ZDQwN2M5ODE2OWRj
YWZkOS4uN2RjYTk1MTljNjQ1YWVlMTMyZDYxODY4NzUyMmIzZjIzMWY0MTAwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudElt
cGwuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5j
bHVkZSAiV2ViSGVscGVyUGx1Z2luSW1wbC5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyLmgi
CisjaW5jbHVkZSAiV2ViTWVkaWFTb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNv
dXJjZUltcGwuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9Q
bGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDU3RyaW5nLmg+CkBAIC00OSw2ICs1MSw4
MyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKy8v
IFRPRE8oYWNvbHdlbGwpOiBSZW1vdmUgdGhpcyBjbGFzcyBvbmNlIHRoZSBDaHJvbWl1bSBjb2Rl
IHN0YXJ0cyBjYWxsaW5nCisvLyBXZWJNZWRpYVNvdXJjZTo6Z2V0TWVkaWFTb3VyY2VGb3JVUkwo
KSBhbmQgb3BlbmluZyB0aGUgV2ViTWVkaWFTb3VyY2Ugb2JqZWN0CisvLyBpdHNlbGYuCitjbGFz
cyBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGwgOiBwdWJsaWMgV2ViTWVkaWFTb3VyY2VDbGllbnQg
eworcHVibGljOgorICAgIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbChXZWJNZWRpYVBsYXllciop
OworICAgIHZpcnR1YWwgfldlYk1lZGlhU291cmNlQ2xpZW50SW1wbCgpOworCisgICAgLy8gV2Vi
TWVkaWFTb3VyY2VDbGllbnQgbWV0aG9kcy4KKyAgICB2aXJ0dWFsIEFkZElkU3RhdHVzIGFkZElk
KGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0IFdlYlN0cmluZyYgdHlwZSwgY29uc3QgV2ViVmVj
dG9yPFdlYlN0cmluZz4mIGNvZGVjcyk7CisgICAgdmlydHVhbCBib29sIHJlbW92ZUlkKGNvbnN0
IFdlYlN0cmluZyYgaWQpOworICAgIHZpcnR1YWwgV2ViVGltZVJhbmdlcyBidWZmZXJlZChjb25z
dCBXZWJTdHJpbmcmIGlkKTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKGNvbnN0IFdlYlN0cmlu
ZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAg
dmlydHVhbCBib29sIGFib3J0KGNvbnN0IFdlYlN0cmluZyYgaWQpOworICAgIHZpcnR1YWwgZG91
YmxlIGR1cmF0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSk7Cisg
ICAgdmlydHVhbCB2b2lkIGVuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKTsKKyAgICB2aXJ0
dWFsIGJvb2wgc2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFdlYlN0cmluZyYgaWQsIGRvdWJsZSBv
ZmZzZXQpOworCitwcml2YXRlOgorICAgIFdlYk1lZGlhUGxheWVyKiBtX3dlYk1lZGlhUGxheWVy
OworfTsKKworV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpXZWJNZWRpYVNvdXJjZUNsaWVudElt
cGwoV2ViTWVkaWFQbGF5ZXIqIHdlYk1lZGlhUGxheWVyKQorICAgIDogbV93ZWJNZWRpYVBsYXll
cih3ZWJNZWRpYVBsYXllcikKK3sKK30KKworV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjp+V2Vi
TWVkaWFTb3VyY2VDbGllbnRJbXBsKCkKK3sKK30KKworV2ViTWVkaWFTb3VyY2VDbGllbnQ6OkFk
ZElkU3RhdHVzIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6YWRkSWQoY29uc3QgV2ViU3RyaW5n
JiBpZCwgY29uc3QgV2ViU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYg
Y29kZWNzKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJNZWRpYVNvdXJjZUNsaWVudDo6
QWRkSWRTdGF0dXM+KG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUFkZElkKGlkLCB0eXBlLCBjb2Rl
Y3MpKTsKK30KKworYm9vbCBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OnJlbW92ZUlkKGNvbnN0
IFdlYlN0cmluZyYgaWQpCit7CisgICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVJl
bW92ZUlkKGlkKTsKK30KKworV2ViVGltZVJhbmdlcyBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6
OmJ1ZmZlcmVkKGNvbnN0IFdlYlN0cmluZyYgaWQpCit7CisgICAgcmV0dXJuIG1fd2ViTWVkaWFQ
bGF5ZXItPnNvdXJjZUJ1ZmZlcmVkKGlkKTsKK30KKworYm9vbCBXZWJNZWRpYVNvdXJjZUNsaWVu
dEltcGw6OmFwcGVuZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNv
dXJjZUFwcGVuZChpZCwgZGF0YSwgbGVuZ3RoKTsKK30KKworYm9vbCBXZWJNZWRpYVNvdXJjZUNs
aWVudEltcGw6OmFib3J0KGNvbnN0IFdlYlN0cmluZyYgaWQpCit7CisgICAgcmV0dXJuIG1fd2Vi
TWVkaWFQbGF5ZXItPnNvdXJjZUFib3J0KGlkKTsKK30KKworZG91YmxlIFdlYk1lZGlhU291cmNl
Q2xpZW50SW1wbDo6ZHVyYXRpb24oKQoreworICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5k
dXJhdGlvbigpOworfQorCit2b2lkIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6c2V0RHVyYXRp
b24oZG91YmxlIGR1cmF0aW9uKQoreworICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3Vy
Y2VTZXREdXJhdGlvbihkdXJhdGlvbik7Cit9CisKK3ZvaWQgV2ViTWVkaWFTb3VyY2VDbGllbnRJ
bXBsOjplbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyBzdGF0dXMpCit7CisgICAgbV93ZWJN
ZWRpYVBsYXllci0+c291cmNlRW5kT2ZTdHJlYW0oc3RhdGljX2Nhc3Q8V2ViTWVkaWFQbGF5ZXI6
OkVuZE9mU3RyZWFtU3RhdHVzPihzdGF0dXMpKTsKK30KKworYm9vbCBXZWJNZWRpYVNvdXJjZUNs
aWVudEltcGw6OnNldFRpbWVzdGFtcE9mZnNldChjb25zdCBXZWJTdHJpbmcmIGlkLCBkb3VibGUg
b2Zmc2V0KQoreworICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VTZXRUaW1lc3Rh
bXBPZmZzZXQoaWQsIG9mZnNldCk7Cit9CisKIHN0YXRpYyBQYXNzT3duUHRyPFdlYk1lZGlhUGxh
eWVyPiBjcmVhdGVXZWJNZWRpYVBsYXllcihXZWJNZWRpYVBsYXllckNsaWVudCogY2xpZW50LCBj
b25zdCBXZWJVUkwmIHVybCwgRnJhbWUqIGZyYW1lKQogewogICAgIFdlYkZyYW1lSW1wbCogd2Vi
RnJhbWUgPSBXZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSk7CkBAIC0yMTgsMjIgKzI5Nywy
NyBAQCBXZWJNZWRpYVBsYXllcjo6UHJlbG9hZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnBy
ZWxvYWQoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJNZWRpYVBsYXllcjo6UHJl
bG9hZD4obV9wcmVsb2FkKTsKIH0KIAorLy8gVE9ETyhhY29sd2VsbCk6IFJlbW92ZSB0aGlzIGFu
ZCBzb3VyY2VVUkwoKSBvbmNlIHRoZSBDaHJvbWl1bSBjb2RlIHN0YXJ0cworLy8gY2FsbGluZyBX
ZWJNZWRpYVNvdXJjZTo6Z2V0TWVkaWFTb3VyY2VGb3JVUkwoKSBhbmQgb3BlbmluZyB0aGUgV2Vi
TWVkaWFTb3VyY2UKKy8vIGl0c2VsZi4KIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpz
b3VyY2VPcGVuZWQoKQogewogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgQVNTRVJUKG1f
bWVkaWFQbGF5ZXIpOwotICAgIG1fbWVkaWFQbGF5ZXItPnNvdXJjZU9wZW5lZCgpOworICAgIEFT
U0VSVChtX3dlYk1lZGlhUGxheWVyKTsKKyAgICBpZiAobV9tZWRpYVNvdXJjZSkgeworICAgICAg
ICBPd25QdHI8V2ViTWVkaWFTb3VyY2U+IG1lZGlhU291cmNlID0gYWRvcHRQdHIobmV3IFdlYk1l
ZGlhU291cmNlSW1wbChtX21lZGlhU291cmNlKSk7CisgICAgICAgIG1lZGlhU291cmNlLT5vcGVu
KG5ldyBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGwobV93ZWJNZWRpYVBsYXllci5nZXQoKSkpOwor
ICAgIH0KICNlbmRpZgogfQogCiBXZWJLaXQ6OldlYlVSTCBXZWJNZWRpYVBsYXllckNsaWVudElt
cGw6OnNvdXJjZVVSTCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBB
U1NFUlQobV9tZWRpYVBsYXllcik7Ci0gICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBt
X21lZGlhUGxheWVyLT5zb3VyY2VVUkwoKSk7Ci0jZWxzZQotICAgIHJldHVybiBLVVJMKCk7Cisg
ICAgaWYgKG1fbWVkaWFTb3VyY2UpCisgICAgICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgIngtbWVkaWEtc291cmNlOiIpOwogI2VuZGlmCisgICAgcmV0dXJuIEtVUkwoKTsKIH0KIAog
dm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmtleUFkZGVkKGNvbnN0IFdlYlN0cmluZyYg
a2V5U3lzdGVtLCBjb25zdCBXZWJTdHJpbmcmIHNlc3Npb25JZCkKQEAgLTMyMyw3ICs0MDcsMjMg
QEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmRpc2FibGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nKCkKIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkKGNvbnN0IFN0cmlu
ZyYgdXJsKQogewogICAgIG1fdXJsID0gdXJsOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisg
ICAgbV9tZWRpYVNvdXJjZSA9IDA7CisjZW5kaWYKKyAgICBsb2FkUmVxdWVzdGVkKCk7Cit9CiAK
KyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQordm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6
OmxvYWQoUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJjZT4gbWVkaWFTb3VyY2UpCit7Cisg
ICAgbV91cmwgPSAiIjsKKyAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7CisgICAgbG9h
ZFJlcXVlc3RlZCgpOworfQorI2VuZGlmCisKK3ZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
Ojpsb2FkUmVxdWVzdGVkKCkKK3sKICAgICBNdXRleExvY2tlciBsb2NrZXIobV93ZWJNZWRpYVBs
YXllck11dGV4KTsKICAgICBpZiAobV9wcmVsb2FkID09IE1lZGlhUGxheWVyOjpOb25lKSB7CiAj
aWYgRU5BQkxFKFdFQl9BVURJTykKQEAgLTM0OCw5ICs0NDgsMTcgQEAgdm9pZCBXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OmxvYWRJbnRlcm5hbCgpCiAgICAgICAgIC8vIE1ha2Ugc3VyZSBpZiB3
ZSBjcmVhdGUvcmUtY3JlYXRlIHRoZSBXZWJNZWRpYVBsYXllciB0aGF0IHdlIHVwZGF0ZSBvdXIg
d3JhcHBlci4KICAgICAgICAgbV9hdWRpb1NvdXJjZVByb3ZpZGVyLndyYXAobV93ZWJNZWRpYVBs
YXllci0+YXVkaW9Tb3VyY2VQcm92aWRlcigpKTsKICNlbmRpZgotICAgICAgICBtX3dlYk1lZGlh
UGxheWVyLT5sb2FkKAotICAgICAgICAgICAgS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fdXJsKSwK
LSAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYk1lZGlhUGxheWVyOjpDT1JTTW9kZT4obV9tZWRp
YVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJDT1JTTW9kZSgpKSk7CisK
KyAgICAgICAgV2ViTWVkaWFQbGF5ZXI6OkNPUlNNb2RlIGNvcnNNb2RlID0gc3RhdGljX2Nhc3Q8
V2ViTWVkaWFQbGF5ZXI6OkNPUlNNb2RlPihtX21lZGlhUGxheWVyLT5tZWRpYVBsYXllckNsaWVu
dCgpLT5tZWRpYVBsYXllckNPUlNNb2RlKCkpOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisg
ICAgICAgIGlmIChtX21lZGlhU291cmNlKSB7CisgICAgICAgICAgICAvLyBUT0RPKGFjb2x3ZWxs
KTogUmVwbGFjZSB3aXRoIG1fd2ViTWVkaWFQbGF5ZXItPmxvYWQobmV3IFdlYk1lZGlhU291cmNl
SW1wbChtX21lZGlhU291cmNlKSwgY29yc01vZGUpCisgICAgICAgICAgICAvLyBvbmNlIHRoZSBD
aHJvbWl1bSBjb2RlIGhhcyBhY2Nlc3MgdG8gdGhlIFdlYk1lZGlhU291cmNlIGRlY2xhcmF0aW9u
LgorICAgICAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+bG9hZChzb3VyY2VVUkwoKSwgY29yc01v
ZGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgbV93
ZWJNZWRpYVBsYXllci0+bG9hZChLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmwpLCBjb3JzTW9k
ZSk7CiAgICAgfQogfQogCkBAIC00MDcsNzAgKzUxNSw2IEBAIGJvb2wgV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpjYW5FbnRlckZ1bGxzY3JlZW4oKSBjb25zdAogfQogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQotV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIFdl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKQotewotICAgIGlm
ICghbV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpOb3RTdXBwb3J0ZWQ7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OkFkZElkU3RhdHVzPihtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBZGRJZChpZCwgdHlw
ZSwgY29kZWNzKSk7Ci19Ci0KLWJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VS
ZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKQotewotICAgIGlmICghbV93ZWJNZWRpYVBsYXllcikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNv
dXJjZVJlbW92ZUlkKGlkKTsKLX0KLQotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OnNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpCi17Ci0gICAg
aWYgKCFtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRl
KCk7Ci0KLSAgICBXZWJUaW1lUmFuZ2VzIHdlYlJhbmdlcyA9IG1fd2ViTWVkaWFQbGF5ZXItPnNv
dXJjZUJ1ZmZlcmVkKGlkKTsKLSAgICBSZWZQdHI8VGltZVJhbmdlcz4gcmFuZ2VzID0gVGltZVJh
bmdlczo6Y3JlYXRlKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJSYW5nZXMuc2l6
ZSgpOyArK2kpCi0gICAgICAgIHJhbmdlcy0+YWRkKHdlYlJhbmdlc1tpXS5zdGFydCwgd2ViUmFu
Z2VzW2ldLmVuZCk7Ci0gICAgcmV0dXJuIHJhbmdlcy5yZWxlYXNlKCk7Ci19Ci0KLWJvb2wgV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VBcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgY29u
c3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIGlmIChtX3dl
Yk1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlQXBw
ZW5kKGlkLCBkYXRhLCBsZW5ndGgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYgaWQpCi17Ci0g
ICAgaWYgKCFtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBy
ZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlQWJvcnQoaWQpOwotfQotCi12b2lkIFdlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlU2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQot
ewotICAgIGlmIChtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICBtX3dlYk1lZGlhUGxheWVyLT5z
b3VyY2VTZXREdXJhdGlvbihkdXJhdGlvbik7Ci19Ci0KLXZvaWQgV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsOjpzb3VyY2VFbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRpYVBsYXllcjo6RW5kT2ZTdHJl
YW1TdGF0dXMgc3RhdHVzKQotewotICAgIGlmIChtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICBt
X3dlYk1lZGlhUGxheWVyLT5zb3VyY2VFbmRPZlN0cmVhbShzdGF0aWNfY2FzdDxXZWJNZWRpYVBs
YXllcjo6RW5kT2ZTdHJlYW1TdGF0dXM+KHN0YXR1cykpOwotfQotCi1ib29sIFdlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6c291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYgaWQs
IGRvdWJsZSBvZmZzZXQpCi17Ci0gICAgaWYgKCFtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVNldFRpbWVz
dGFtcE9mZnNldChpZCwgb2Zmc2V0KTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29u
c3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVu
dEltcGwuaAppbmRleCAzZjcwYzczNWNjYjY2OGRiZjVmZmI1NzM4NWQ3MGI0Y2ZiNGFlNzYxLi5k
MTdiNjExNmZkZmZiMzJmNzlkMTc5OWFlYmZlMGZiZjBkMmIyYTM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaApAQCAt
OTYsNiArOTYsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2UgbWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBXVEY6OlN0cmluZyYgdXJs
KTsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgdm9pZCBsb2FkKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6TWVkaWFTb3VyY2U+KTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBj
YW5jZWxMb2FkKCk7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJMYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwpAQCAtMTU3LDE3ICsx
NjAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dEN1cnJlbnRGcmFtZShXZWJWaWRl
b0ZyYW1lKik7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdmlydHVh
bCBXZWJDb3JlOjpNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXMgc291cmNlQWRkSWQoY29uc3QgU3Ry
aW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNz
KTsKLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJik7Ci0gICAg
dmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VGltZVJhbmdlcz4gc291cmNlQnVmZmVy
ZWQoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCBT
dHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHZpcnR1YWwgYm9vbCBzb3VyY2VBYm9ydChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc291cmNlU2V0RHVyYXRpb24oZG91YmxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5k
T2ZTdHJlYW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzKTsKLSAgICB2
aXJ0dWFsIGJvb2wgc291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYsIGRvdWJs
ZSBvZmZzZXQpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZp
cnR1YWwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGdlbmVyYXRlS2V5
UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgdW5zaWduZWQgY2hhciogaW5p
dERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBhZGRLZXkoY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGtleSwgdW5zaWduZWQga2V5TGVuZ3Ro
LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgs
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBPVkVSUklERTsKQEAgLTE4Miw2ICsxNzQsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKCk7CiBwcml2YXRlOgogICAg
IHZvaWQgc3RhcnREZWxheWVkTG9hZCgpOworICAgIHZvaWQgbG9hZFJlcXVlc3RlZCgpOwogICAg
IHZvaWQgbG9hZEludGVybmFsKCk7CiAKICAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShXZWJDb3JlOjpNZWRpYVBsYXllciop
OwpAQCAtMjU5LDYgKzI1MiwxMCBAQCBwcml2YXRlOgogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRl
ckltcGwgbV9hdWRpb1NvdXJjZVByb3ZpZGVyOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQorICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJjZT4gbV9tZWRpYVNvdXJjZTsK
KyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRmM2EwMWRiMWUzNTE4
OGYxOTcwN2NjZmZhMjlkODMwNWEwMzRhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNlLmNwcApAQCAtMCwwICsxLDU2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZS5oIgorCisjaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKKyNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VSZWdpc3RyeS5oIgorI2luY2x1ZGUg
IldlYk1lZGlhU291cmNlSW1wbC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJNZWRpYVNvdXJjZSogV2ViTWVkaWFTb3VyY2U6OmdldE1lZGlhU291cmNlRm9yVVJMKGNvbnN0
IFdlYlVSTCYgdXJsKQoreworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgUmVmUHRyPFdl
YkNvcmU6Ok1lZGlhU291cmNlPiBtZWRpYVNvdXJjZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlUmVn
aXN0cnk6OnJlZ2lzdHJ5KCkubG9va3VwTWVkaWFTb3VyY2UodXJsLnNwZWMoKS51dGYxNigpKTsK
KworICAgIGlmIChtZWRpYVNvdXJjZSkKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJNZWRpYVNvdXJj
ZUltcGwobWVkaWFTb3VyY2UpOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKK1dlYk1lZGlh
U291cmNlOjp+V2ViTWVkaWFTb3VyY2UoKQoreworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZUltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjM5OWEz
YzM1MWJjODViYjYxNDQ3NDI2OTJjYTBjOGQ1YTZjOTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmNwcApAQCAtMCwwICsx
LDE1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZUltcGwu
aCIKKworI2luY2x1ZGUgIk1lZGlhU291cmNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYk1lZGlh
U291cmNlQ2xpZW50LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgTWVkaWFTb3VyY2VQcml2YXRlSW1wbCA6IHB1YmxpYyBXZWJDb3Jl
OjpNZWRpYVNvdXJjZVByaXZhdGUgeworcHVibGljOgorICAgIE1lZGlhU291cmNlUHJpdmF0ZUlt
cGwoUGFzc093blB0cjxXZWJNZWRpYVNvdXJjZUNsaWVudD4pOworICAgIHZpcnR1YWwgfk1lZGlh
U291cmNlUHJpdmF0ZUltcGwoKSB7IH0KKworICAgIC8vIE1lZGlhU291cmNlUHJpdmF0ZSBtZXRo
b2RzLgorICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRJZFN0YXR1
cyBhZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBjb2RlY3MpOworICAgIHZpcnR1YWwgYm9vbCByZW1vdmVJZChjb25zdCBTdHJp
bmcmIGlkKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6VGltZVJhbmdlcz4gYnVm
ZmVyZWQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAgdmlydHVhbCBib29sIGFwcGVuZChjb25zdCBT
dHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwor
ICAgIHZpcnR1YWwgYm9vbCBhYm9ydChjb25zdCBTdHJpbmcmIGlkKTsKKyAgICB2aXJ0dWFsIGRv
dWJsZSBkdXJhdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpOwor
ICAgIHZpcnR1YWwgdm9pZCBlbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6
OkVuZE9mU3RyZWFtU3RhdHVzKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VGltZXN0YW1wT2Zmc2V0
KGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpOworCitwcml2YXRlOgorICAgIE93blB0
cjxXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50PiBtX2NsaWVudDsKK307CisKK01lZGlhU291
cmNlUHJpdmF0ZUltcGw6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGwoUGFzc093blB0cjxXZWJLaXQ6
OldlYk1lZGlhU291cmNlQ2xpZW50PiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCit7
Cit9CisKK1dlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6QWRkSWRTdGF0dXMgTWVkaWFTb3Vy
Y2VQcml2YXRlSW1wbDo6YWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKQoreworICAgIGlmICghbV9jbGllbnQpCisg
ICAgICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6Ok5vdFN1cHBvcnRlZDsK
KworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkFk
ZElkU3RhdHVzPihtX2NsaWVudC0+YWRkSWQoaWQsIHR5cGUsIGNvZGVjcykpOworfQorCitib29s
IE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OnJlbW92ZUlkKGNvbnN0IFN0cmluZyYgaWQpCit7Cisg
ICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1f
Y2xpZW50LT5yZW1vdmVJZChpZCk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViQ29yZTo6VGltZVJhbmdl
cz4gTWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6YnVmZmVyZWQoY29uc3QgU3RyaW5nJiBpZCkKK3sK
KyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGltZVJhbmdlczo6
Y3JlYXRlKCk7CisKKyAgICBXZWJUaW1lUmFuZ2VzIHdlYlJhbmdlcyA9IG1fY2xpZW50LT5idWZm
ZXJlZChpZCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRpbWVSYW5nZXM+IHJhbmdlcyA9IFdlYkNv
cmU6OlRpbWVSYW5nZXM6OmNyZWF0ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2Vi
UmFuZ2VzLnNpemUoKTsgKytpKQorICAgICAgICByYW5nZXMtPmFkZCh3ZWJSYW5nZXNbaV0uc3Rh
cnQsIHdlYlJhbmdlc1tpXS5lbmQpOworICAgIHJldHVybiByYW5nZXMucmVsZWFzZSgpOworfQor
Citib29sIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmFwcGVuZChjb25zdCBTdHJpbmcmIGlkLCBj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKCFt
X2NsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fY2xpZW50LT5h
cHBlbmQoaWQsIGRhdGEsIGxlbmd0aCk7Cit9CisKK2Jvb2wgTWVkaWFTb3VyY2VQcml2YXRlSW1w
bDo6YWJvcnQoY29uc3QgU3RyaW5nJiBpZCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jbGllbnQtPmFib3J0KGlkKTsKK30KKwor
ZG91YmxlIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmR1cmF0aW9uKCkKK3sKKyAgICBpZiAoIW1f
Y2xpZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0
X05hTigpOworICAgIHJldHVybiBtX2NsaWVudC0+ZHVyYXRpb24oKTsKK30KKwordm9pZCBNZWRp
YVNvdXJjZVByaXZhdGVJbXBsOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit7CisgICAg
aWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwor
fQorCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmVuZE9mU3RyZWFtKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZTo6RW5kT2ZTdHJlYW1TdGF0dXMgc3RhdHVzKQoreworICAgIGlmICht
X2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmVuZE9mU3RyZWFtKHN0YXRpY19jYXN0PFdlYk1l
ZGlhU291cmNlQ2xpZW50OjpFbmRPZlN0cmVhbVN0YXR1cz4oc3RhdHVzKSk7Cit9CisKK2Jvb2wg
TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6c2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYg
aWQsIGRvdWJsZSBvZmZzZXQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBtX2NsaWVudC0+c2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZz
ZXQpOworfQorCisKK1dlYk1lZGlhU291cmNlSW1wbDo6V2ViTWVkaWFTb3VyY2VJbXBsKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6TWVkaWFTb3VyY2U+IG1lZGlhU291cmNlKQoreworICAgIG1fbWVkaWFT
b3VyY2UgPSBtZWRpYVNvdXJjZTsKK30KKworV2ViTWVkaWFTb3VyY2VJbXBsOjp+V2ViTWVkaWFT
b3VyY2VJbXBsKCkKK3sKK30KKworCit2b2lkIFdlYk1lZGlhU291cmNlSW1wbDo6b3BlbihXZWJN
ZWRpYVNvdXJjZUNsaWVudCogY2xpZW50KQoreworICAgIEFTU0VSVChjbGllbnQpOworICAgIG1f
bWVkaWFTb3VyY2UtPnNldFByaXZhdGVBbmRPcGVuKGFkb3B0UHRyKG5ldyBNZWRpYVNvdXJjZVBy
aXZhdGVJbXBsKGFkb3B0UHRyKGNsaWVudCkpKSk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZUltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNlSW1wbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI4YWIzMWUyYjVkYmY3YzVkN2ZiZWZhMjYxZWFkZmVkY2E5ZjVmMDkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZUltcGwuaApAQCAt
MCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVNvdXJjZUltcGxfaAorI2RlZmluZSBXZWJNZWRp
YVNvdXJjZUltcGxfaAorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIk1l
ZGlhU291cmNlLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTb3VyY2UuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU291cmNlSW1wbCA6IHB1YmxpYyBXZWJNZWRpYVNvdXJj
ZSB7CitwdWJsaWM6CisgICAgV2ViTWVkaWFTb3VyY2VJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6
TWVkaWFTb3VyY2U+KTsKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNvdXJjZUltcGwoKTsKKworICAg
IC8vIFdlYk1lZGlhU291cmNlIG1ldGhvZHMuCisgICAgdmlydHVhbCB2b2lkIG9wZW4oV2ViTWVk
aWFTb3VyY2VDbGllbnQqKTsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFT
b3VyY2U+IG1fbWVkaWFTb3VyY2U7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYK
</data>
<flag name="commit-queue"
          id="209141"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188897</attachid>
            <date>2013-02-18 08:53:04 -0800</date>
            <delta_ts>2013-02-20 13:57:32 -0800</delta_ts>
            <desc>Alternate implementation that makes MediaSource load more explicit.</desc>
            <filename>bug-109857-20130218084927.patch</filename>
            <type>text/plain</type>
            <size>65692</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA2YTY1YzdmYWZkMjQz
ODM4MDNhM2FjYjY0ZGYzN2RkNThhY2NhNS4uZTMzZmM4NTNhZTBkM2ZkMjFlYTMyZDYxZjk0MWY2
ZTljNTRkYjc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEzLTAyLTE4ICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZhY3RvciBNZWRp
YVNvdXJjZSBtZXRob2RzIG91dCBvZiBNZWRpYVBsYXllciAmIE1lZGlhUGxheWVyUHJpdmF0ZSBh
bmQgaW50byBhIG5ldyBNZWRpYVNvdXJjZVByaXZhdGUgaW50ZXJmYWNlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHNpbXBsZSByZWZh
Y3RvciB0aGF0IG1vdmVzIE1lZGlhU291cmNlIHJlbGF0ZWQgbWV0aG9kcyBvdXQgb2YgTWVkaWFQ
bGF5ZXIgJiBNZWRpYVBsYXllclByaXZhdGUKKyAgICAgICAgc28gdGhhdCB0aGUgTWVkaWFTb3Vy
Y2UgaW1wbGVtZW50YXRpb24gY2FuIGJlIHVwZGF0ZWQgd2l0aG91dCBmdXJ0aGVyIHBvbGx1dGlu
ZyB0aGVzZSBpbnRlcmZhY2VzLgorICAgICAgICBNZWRpYVNvdXJjZVByaXZhdGUgaXMgdGhlIG5l
dyBXZWJDb3JlIGludGVyZmFjZSB0aGF0IHBvcnRzIG11c3QgaW1wbGVtZW50IHRvIHN1cHBvcnQg
dGhlIE1lZGlhU291cmNlIEFQSS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIHVzZXIgdmlz
aWJsZSBiZWhhdmlvciBoYXMgY2hhbmdlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Ok1lZGlh
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpkdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlOjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjplbmRP
ZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YnVmZmVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNvdXJjZTo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldFRp
bWVzdGFtcE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0
ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpzdG9wKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmg6Cisg
ICAgICAgIChNZWRpYVNvdXJjZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNZWRpYUVsZW1l
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKE51bGxNZWRpYVBsYXllclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TnVsbE1lZGlh
UGxheWVyUHJpdmF0ZTo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjps
b2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTWVkaWFQbGF5ZXJDbGll
bnQpOgorICAgICAgICAoTWVkaWFQbGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1lZGlhU291cmNlUHJpdmF0ZSk6
IENvbnRhaW5zIHRoZSBNZWRpYVNvdXJjZSBtZXRob2RzIGV4dHJhY3RlZCBmcm9tIE1lZGlhUGxh
eWVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpNZWRpYVNvdXJjZVBy
aXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjp+TWVkaWFTb3Vy
Y2VQcml2YXRlKToKKwogMjAxMy0wMi0xOCAgS29uZGFwYWxseSBLYWx5YW4gIDxrYWx5YW4ua29u
ZGFwYWxseUBpbnRlbC5jb20+CiAKICAgICAgICAgW1dlYkdMXVtFRkxdIFJlZmFjdG9yIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZSB0byBhZGQgc3VwcG9ydCBmb3IgU2hhcmVkQ29udGV4dC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjQwOWZmMDkzMTlkZjA5OWNkOTM2NGViZDhkNzFm
YzZmZGYxNjRiZi4uMTZjNDE0Yzc4Y2YxNGYwNTU4ZWY1Y2RjZjhjOTNhMTIwYjJiNTdhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxMy0wMi0xOCAgQWFy
b24gQ29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBGYWN0b3IgTWVk
aWFTb3VyY2UgbWV0aG9kcyBvdXQgb2YgTWVkaWFQbGF5ZXIgJiBNZWRpYVBsYXllclByaXZhdGUg
YW5kIGludG8gYSBuZXcgTWVkaWFTb3VyY2VQcml2YXRlIGludGVyZmFjZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTg1NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYk1lZGlhU291cmNlIGFuZCBX
ZWJNZWRpYVNvdXJjZSBjbGllbnQgd2VyZSBjcmVhdGVkIHRvIHJlcGxhY2UgdGhlIE1lZGlhU291
cmNlIG1ldGhvZHMgaW4gV2ViTWVkaWFQbGF5ZXIgYW5kCisgICAgICAgIFdlYk1lZGlhUGxheWVy
Q2xpZW50LiBUaGlzIGFsbG93cyB0aGUgTWVkaWFTb3VyY2UgaW1wbGVtZW50YXRpb24gdG8gYmUg
dXBkYXRlZCB3aXRob3V0IGZ1cnRoZXIgcG9sbHV0aW5nIHRoZQorICAgICAgICBtZWRpYSBwbGF5
ZXIgaW50ZXJmYWNlcy4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGlj
L1dlYk1lZGlhUGxheWVyLmg6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50
Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHB1YmxpYy9XZWJNZWRpYVNvdXJjZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJNZWRpYVNvdXJjZSk6Cisg
ICAgICAgICogcHVibGljL1dlYk1lZGlhU291cmNlQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhU291cmNlQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViTWVkaWFTb3VyY2VDbGllbnQ6On5XZWJNZWRpYVNvdXJjZUNsaWVudCk6CisgICAgICAg
ICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBs
YXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlh
U291cmNlQ2xpZW50SW1wbCk6IFRlbXBvcmFyeSBXZWJNZWRpYVNvdXJjZUNsaWVudCBpbXBsZW1l
bnRhdGlvbiB0byBrZWVwIHRoaW5ncyB3b3JraW5nIHVudGlsIENocm9taXVtCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIGxhbmQuCisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjp+V2ViTWVkaWFTb3VyY2VD
bGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjph
ZGRJZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6cmVtb3Zl
SWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmJ1ZmZlcmVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjphcHBlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmFib3J0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpkdXJhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6c2V0RHVyYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmVuZE9mU3RyZWFtKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpzZXRUaW1lc3RhbXBPZmZzZXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZU9wZW5l
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlVVJM
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkUmVxdWVzdGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkSW50ZXJuYWwp
OgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYk1lZGlhU291cmNlLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNv
dXJjZTo6Z2V0TWVkaWFTb3VyY2VGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNv
dXJjZTo6fldlYk1lZGlhU291cmNlKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTb3VyY2VJbXBs
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTWVkaWFTb3VyY2VQcml2
YXRlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6On5NZWRp
YVNvdXJjZVByaXZhdGVJbXBsKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRl
SW1wbDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291
cmNlUHJpdmF0ZUltcGw6OmFkZElkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2
YXRlSW1wbDo6cmVtb3ZlSWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJ
bXBsOjpidWZmZXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6
OmFwcGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmFib3J0
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6ZHVyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpzZXREdXJhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmVuZE9mU3RyZWFtKToKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6c2V0VGltZXN0YW1wT2Zmc2V0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VJbXBsOjpXZWJNZWRpYVNvdXJjZUlt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUltcGw6On5XZWJNZWRpYVNvdXJj
ZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUltcGw6Om9wZW4pOgorICAg
ICAgICAqIHNyYy9XZWJNZWRpYVNvdXJjZUltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViTWVkaWFTb3VyY2VJbXBsKToKKwogMjAxMy0wMi0xOCAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
IFJvbGxlZCBDaHJvbWl1bSBERVBTIHRvIHIxODMxMDUuICBSZXF1ZXN0ZWQgYnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXgg
ZmQ2NDI5NWQ1OWQ3YWVlYjc2Njk1ODE4NWRlZGIxY2E4ZjI3NzY3YS4uZTZiZmUyNDJhZDJkMzI0
NjczMWE3MDY0ODBhOGQ2YjEwZWM1YmQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTUwLDcgKzUwLDYgQEAgUGFzc1Jl
ZlB0cjxNZWRpYVNvdXJjZT4gTWVkaWFTb3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogTWVkaWFTb3VyY2U6Ok1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAg
ICAsIG1fcmVhZHlTdGF0ZShjbG9zZWRLZXl3b3JkKCkpCi0gICAgLCBtX3BsYXllcigwKQogICAg
ICwgbV9hc3luY0V2ZW50UXVldWUoR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKIHsK
ICAgICBtX3NvdXJjZUJ1ZmZlcnMgPSBTb3VyY2VCdWZmZXJMaXN0OjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBtX2FzeW5jRXZlbnRRdWV1ZS5nZXQoKSk7CkBAIC04OCw3ICs4Nyw3
IEBAIFNvdXJjZUJ1ZmZlckxpc3QqIE1lZGlhU291cmNlOjphY3RpdmVTb3VyY2VCdWZmZXJzKCkK
IAogZG91YmxlIE1lZGlhU291cmNlOjpkdXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cmVhZHlTdGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkgPyBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6cXVpZXRfTmFOKCkgOiBtX3BsYXllci0+ZHVyYXRpb24oKTsKKyAgICByZXR1cm4gbV9yZWFk
eVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpx
dWlldF9OYU4oKSA6IG1fcHJpdmF0ZS0+ZHVyYXRpb24oKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJj
ZTo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTEw
MSw3ICsxMDAsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcGxheWVyLT5zb3VyY2VTZXREdXJhdGlvbihk
dXJhdGlvbik7CisgICAgbV9wcml2YXRlLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiB9CiAKIFNv
dXJjZUJ1ZmZlciogTWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5
cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTI2LDcgKzEyNSw3IEBAIFNvdXJjZUJ1ZmZlciog
TWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlv
bkNvZGUmIGVjCiAKICAgICAvLyA0LiBJZiB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgbm90
IGluIHRoZSAib3BlbiIgc3RhdGUgdGhlbiB0aHJvdyBhbgogICAgIC8vIElOVkFMSURfU1RBVEVf
RVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFtX3BsYXllciB8
fCBtX3JlYWR5U3RhdGUgIT0gb3BlbktleXdvcmQoKSkgeworICAgIGlmICghbV9wcml2YXRlIHx8
IG1fcmVhZHlTdGF0ZSAhPSBvcGVuS2V5d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE0MCwyMCArMTM5LDIwIEBA
IFNvdXJjZUJ1ZmZlciogTWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJpbmcm
IHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjCiAKICAgICBSZWZQdHI8U291cmNlQnVmZmVyPiBidWZm
ZXIgPSBTb3VyY2VCdWZmZXI6OmNyZWF0ZShpZCwgdGhpcyk7CiAKLSAgICBzd2l0Y2ggKG1fcGxh
eWVyLT5zb3VyY2VBZGRJZChidWZmZXItPmlkKCksIGNvbnRlbnRUeXBlLnR5cGUoKSwgY29kZWNz
KSkgewotICAgIGNhc2UgTWVkaWFQbGF5ZXI6Ok9rOgorICAgIHN3aXRjaCAobV9wcml2YXRlLT5h
ZGRJZChidWZmZXItPmlkKCksIGNvbnRlbnRUeXBlLnR5cGUoKSwgY29kZWNzKSkgeworICAgIGNh
c2UgTWVkaWFTb3VyY2VQcml2YXRlOjpPazoKICAgICAgICAgLy8gNi4gQWRkIHRoZSBuZXcgb2Jq
ZWN0IHRvIHNvdXJjZUJ1ZmZlcnMgYW5kIGZpcmUgYSBhZGRzb3VyY2VidWZmZXIgb24gdGhhdCBv
YmplY3QuCiAgICAgICAgIG1fc291cmNlQnVmZmVycy0+YWRkKGJ1ZmZlcik7CiAgICAgICAgIG1f
YWN0aXZlU291cmNlQnVmZmVycy0+YWRkKGJ1ZmZlcik7CiAgICAgICAgIC8vIDcuIFJldHVybiB0
aGUgbmV3IG9iamVjdCB0byB0aGUgY2FsbGVyLgogICAgICAgICByZXR1cm4gYnVmZmVyLmdldCgp
OwotICAgIGNhc2UgTWVkaWFQbGF5ZXI6Ok5vdFN1cHBvcnRlZDoKKyAgICBjYXNlIE1lZGlhU291
cmNlUHJpdmF0ZTo6Tm90U3VwcG9ydGVkOgogICAgICAgICAvLyAyIChjb250KS4gSWYgdHlwZSBj
b250YWlucyBhIE1JTUUgdHlwZSAuLi4gdGhhdCBpcyBub3Qgc3VwcG9ydGVkIHdpdGggdGhlIHR5
cGVzIAogICAgICAgICAvLyBzcGVjaWZpZWQgZm9yIHRoZSBvdGhlciBTb3VyY2VCdWZmZXIgb2Jq
ZWN0cyBpbiBzb3VyY2VCdWZmZXJzLCB0aGVuIHRocm93CiAgICAgICAgIC8vIGEgTk9UX1NVUFBP
UlRFRF9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgZWMgPSBO
T1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBNZWRpYVBsYXll
cjo6UmVhY2hlZElkTGltaXQ6CisgICAgY2FzZSBNZWRpYVNvdXJjZVByaXZhdGU6OlJlYWNoZWRJ
ZExpbWl0OgogICAgICAgICAvLyAzIChjb250KS4gSWYgdGhlIHVzZXIgYWdlbnQgY2FuJ3QgaGFu
ZGxlIGFueSBtb3JlIFNvdXJjZUJ1ZmZlciBvYmplY3RzIHRoZW4gdGhyb3cgCiAgICAgICAgIC8v
IGEgUVVPVEFfRVhDRUVERURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAg
ICAgICAgIGVjID0gUVVPVEFfRVhDRUVERURfRVJSOwpAQCAtMTc2LDcgKzE3NSw3IEBAIHZvaWQg
TWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXIqIGJ1ZmZlciwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyAyLiBJZiBzb3VyY2VCdWZmZXJzIGlzIGVtcHR5IHRo
ZW4gdGhyb3cgYW4gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZAogICAgIC8vIGFib3J0
IHRoZXNlIHN0ZXBzLgotICAgIGlmICghbV9wbGF5ZXIgfHwgIW1fc291cmNlQnVmZmVycy0+bGVu
Z3RoKCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZSB8fCAhbV9zb3VyY2VCdWZmZXJzLT5sZW5ndGgo
KSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTkyLDcgKzE5MSw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJjZUJ1
ZmZlcihTb3VyY2VCdWZmZXIqIGJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyA3
LiBEZXN0cm95IGFsbCByZXNvdXJjZXMgZm9yIHNvdXJjZUJ1ZmZlci4KICAgICBtX2FjdGl2ZVNv
dXJjZUJ1ZmZlcnMtPnJlbW92ZShidWZmZXIpOwotICAgIG1fcGxheWVyLT5zb3VyY2VSZW1vdmVJ
ZChidWZmZXItPmlkKCkpOworICAgIG1fcHJpdmF0ZS0+cmVtb3ZlSWQoYnVmZmVyLT5pZCgpKTsK
IAogICAgIC8vIDQuIFJlbW92ZSB0cmFjayBpbmZvcm1hdGlvbiBmcm9tIGF1ZGlvVHJhY2tzLCB2
aWRlb1RyYWNrcywgYW5kIHRleHRUcmFja3MgZm9yIGFsbCB0cmFja3MgCiAgICAgLy8gYXNzb2Np
YXRlZCB3aXRoIHNvdXJjZUJ1ZmZlciBhbmQgZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBjaGFu
Z2Ugb24gdGhlIG1vZGlmaWVkIGxpc3RzLgpAQCAtMjIwLDcgKzIxOSw3IEBAIHZvaWQgTWVkaWFT
b3VyY2U6OnNldFJlYWR5U3RhdGUoY29uc3QgU3RyaW5nJiBzdGF0ZSkKICAgICBpZiAobV9yZWFk
eVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSkgewogICAgICAgICBtX3NvdXJjZUJ1ZmZlcnMtPmNs
ZWFyKCk7CiAgICAgICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy0+Y2xlYXIoKTsKLSAgICAgICAg
bV9wbGF5ZXIgPSAwOworICAgICAgICBtX3ByaXZhdGUuY2xlYXIoKTsKICAgICAgICAgc2NoZWR1
bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0c291cmNlY2xvc2VFdmVudCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0yNDEsMTkgKzI0MCwxOSBAQCB2b2lkIE1lZGlhU291cmNlOjplbmRP
ZlN0cmVhbShjb25zdCBTdHJpbmcmIGVycm9yLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyAz
LjEgaHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNkb20tZW5kb2ZzdHJlYW0KICAgICAvLyAxLiBJZiB0aGUg
cmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgbm90IGluIHRoZSAib3BlbiIgc3RhdGUgdGhlbiB0aHJv
dyBhbgogICAgIC8vIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ug
c3RlcHMuCi0gICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5U3RhdGUgIT0gb3BlbktleXdvcmQo
KSkgeworICAgIGlmICghbV9wcml2YXRlIHx8IG1fcmVhZHlTdGF0ZSAhPSBvcGVuS2V5d29yZCgp
KSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMgZW9zU3RhdHVzID0gTWVk
aWFQbGF5ZXI6OkVvc05vRXJyb3I7CisgICAgTWVkaWFTb3VyY2VQcml2YXRlOjpFbmRPZlN0cmVh
bVN0YXR1cyBlb3NTdGF0dXMgPSBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05vRXJyb3I7CiAKICAg
ICBpZiAoZXJyb3IuaXNOdWxsKCkgfHwgZXJyb3IuaXNFbXB0eSgpKQotICAgICAgICBlb3NTdGF0
dXMgPSBNZWRpYVBsYXllcjo6RW9zTm9FcnJvcjsKKyAgICAgICAgZW9zU3RhdHVzID0gTWVkaWFT
b3VyY2VQcml2YXRlOjpFb3NOb0Vycm9yOwogICAgIGVsc2UgaWYgKGVycm9yID09ICJuZXR3b3Jr
IikKLSAgICAgICAgZW9zU3RhdHVzID0gTWVkaWFQbGF5ZXI6OkVvc05ldHdvcmtFcnJvcjsKKyAg
ICAgICAgZW9zU3RhdHVzID0gTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOZXR3b3JrRXJyb3I7CiAg
ICAgZWxzZSBpZiAoZXJyb3IgPT0gImRlY29kZSIpCi0gICAgICAgIGVvc1N0YXR1cyA9IE1lZGlh
UGxheWVyOjpFb3NEZWNvZGVFcnJvcjsKKyAgICAgICAgZW9zU3RhdHVzID0gTWVkaWFTb3VyY2VQ
cml2YXRlOjpFb3NEZWNvZGVFcnJvcjsKICAgICBlbHNlIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTI2MSwxNyArMjYwLDE3IEBAIHZvaWQg
TWVkaWFTb3VyY2U6OmVuZE9mU3RyZWFtKGNvbnN0IFN0cmluZyYgZXJyb3IsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogCiAgICAgLy8gMi4gQ2hhbmdlIHRoZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSB2YWx1
ZSB0byAiZW5kZWQiLgogICAgIHNldFJlYWR5U3RhdGUoZW5kZWRLZXl3b3JkKCkpOwotICAgIG1f
cGxheWVyLT5zb3VyY2VFbmRPZlN0cmVhbShlb3NTdGF0dXMpOworICAgIG1fcHJpdmF0ZS0+ZW5k
T2ZTdHJlYW0oZW9zU3RhdHVzKTsKIH0KIAogUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVNv
dXJjZTo6YnVmZmVyZWQoY29uc3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiB7Ci0gICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgp
KSB7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQo
KSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKLSAgICByZXR1cm4gbV9wbGF5ZXItPnNvdXJjZUJ1ZmZlcmVkKGlkKTsKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT5idWZmZXJlZChpZCk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2U6OmFw
cGVuZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGRhdGEsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpAQCAtMjgxLDcgKzI4MCw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OmFwcGVu
ZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGRhdGEsIEV4Y2VwdGlv
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fcmVhZHlT
dGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZSB8fCBtX3JlYWR5
U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yODksNyArMjg4LDcgQEAgdm9pZCBNZWRp
YVNvdXJjZTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8VWludDhBcnJheT4g
ZGF0YSwgRXhjZXB0aW8KICAgICBpZiAobV9yZWFkeVN0YXRlID09IGVuZGVkS2V5d29yZCgpKQog
ICAgICAgICBzZXRSZWFkeVN0YXRlKG9wZW5LZXl3b3JkKCkpOwogCi0gICAgaWYgKCFtX3BsYXll
ci0+c291cmNlQXBwZW5kKGlkLCBkYXRhLT5kYXRhKCksIGRhdGEtPmxlbmd0aCgpKSkgeworICAg
IGlmICghbV9wcml2YXRlLT5hcHBlbmQoaWQsIGRhdGEtPmRhdGEoKSwgZGF0YS0+bGVuZ3RoKCkp
KSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTI5NywyOSArMjk2LDM3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OmFwcGVuZChjb25zdCBTdHJpbmcm
IGlkLCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGRhdGEsIEV4Y2VwdGlvCiAKIHZvaWQgTWVkaWFT
b3VyY2U6OmFib3J0KGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAg
IGlmICghbV9wbGF5ZXIgfHwgbV9yZWFkeVN0YXRlICE9IG9wZW5LZXl3b3JkKCkpIHsKKyAgICBp
ZiAoIW1fcHJpdmF0ZSB8fCBtX3JlYWR5U3RhdGUgIT0gb3BlbktleXdvcmQoKSkgewogICAgICAg
ICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCFtX3BsYXllci0+c291cmNlQWJvcnQoaWQpKQorICAgIGlmICghbV9wcml2YXRlLT5hYm9y
dChpZCkpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBib29sIE1lZGlhU291
cmNlOjpzZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5U3RhdGUg
PT0gY2xvc2VkS2V5d29yZCgpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFkeVN0YXRl
ID09IGNsb3NlZEtleXdvcmQoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFtX3BsYXllci0+c291cmNl
U2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUtPnNl
dFRpbWVzdGFtcE9mZnNldChpZCwgb2Zmc2V0KSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RB
VEVfRVJSOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwog
fQogCit2b2lkIE1lZGlhU291cmNlOjpzZXRQcml2YXRlQW5kT3BlbihQYXNzT3duUHRyPE1lZGlh
U291cmNlUHJpdmF0ZT4gbWVkaWFTb3VyY2VQcml2YXRlKQoreworICAgIEFTU0VSVChtZWRpYVNv
dXJjZVByaXZhdGUpOworICAgIEFTU0VSVCghbV9wcml2YXRlKTsKKyAgICBtX3ByaXZhdGUgPSBt
ZWRpYVNvdXJjZVByaXZhdGU7CisgICAgc2V0UmVhZHlTdGF0ZShvcGVuS2V5d29yZCgpKTsKK30K
KwogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYVNvdXJjZTsKQEAg
LTMzMiwxMyArMzM5LDEzIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU291cmNlOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIAogYm9vbCBNZWRpYVNvdXJjZTo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wbGF5ZXIgfHwgbV9hc3luY0V2
ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKQorICAgIHJldHVybiBtX3ByaXZhdGUgfHwgbV9h
c3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKQogICAgICAgICB8fCBBY3RpdmVET01P
YmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpzdG9w
KCkKIHsKLSAgICBtX3BsYXllciA9IDA7CisgICAgbV9wcml2YXRlLmNsZWFyKCk7CiAgICAgbV9h
c3luY0V2ZW50UXVldWUtPmNhbmNlbEFsbEV2ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKaW5kZXggMWQzZjM0NzZiNjc4
MWYzYzlmNWNlNGZhNDJhZWM3Y2UwNTEwZGNiYy4uOTUzNThkN2NiOWQxN2M0NmFiMGE5NGVmNzUy
YjdiNWNmMWQ3MzJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuaApAQCAtMzUsNyArMzUsNyBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKLSNpbmNsdWRlICJNZWRp
YVBsYXllci5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlNv
dXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVu
ZE9mU3RyZWFtKGNvbnN0IFN0cmluZyYgZXJyb3IsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZv
aWQgc2V0TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgeyBtX3BsYXllciA9IHBsYXll
cjsgfQorICAgIHZvaWQgc2V0UHJpdmF0ZUFuZE9wZW4oUGFzc093blB0cjxNZWRpYVNvdXJjZVBy
aXZhdGU+KTsKIAogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoY29uc3QgU3Ry
aW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0
cmluZyYgaWQsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwpA
QCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFy
Z2V0RGF0YTsKIAogICAgIFN0cmluZyBtX3JlYWR5U3RhdGU7Ci0gICAgTWVkaWFQbGF5ZXIqIG1f
cGxheWVyOworICAgIE93blB0cjxNZWRpYVNvdXJjZVByaXZhdGU+IG1fcHJpdmF0ZTsKIAogICAg
IFJlZlB0cjxTb3VyY2VCdWZmZXJMaXN0PiBtX3NvdXJjZUJ1ZmZlcnM7CiAgICAgUmVmUHRyPFNv
dXJjZUJ1ZmZlckxpc3Q+IG1fYWN0aXZlU291cmNlQnVmZmVyczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDJiYzRlNmIxNDFlNWExNTZmODUxZDljZWVmOTFh
YmJjMTJhMGM0OWYuLjlmMjAwZWM2YjA2NmFhZTBmN2FjMDg4OWI5ZjVhM2QzZDE4NWQwYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzA4LDExICszMDgs
NiBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bQogICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0
aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWRSZXN0cmljdGlvbik7CiAgICAgfQogCi0jaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBtX21lZGlhU291cmNlVVJMLnNldFByb3RvY29sKG1l
ZGlhU291cmNlQmxvYlByb3RvY29sKTsKLSAgICBtX21lZGlhU291cmNlVVJMLnNldFBhdGgoY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKLSNlbmRpZgotCiAgICAgc2V0SGFzQ3VzdG9tU3R5
bGVDYWxsYmFja3MoKTsKICAgICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVu
dCk7CiAKQEAgLTk4NywxOSArOTgyLDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVz
b3VyY2UoY29uc3QgS1VSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIEFT
U0VSVCghbV9tZWRpYVNvdXJjZSk7Ci0KLSAgICBpZiAodXJsLnByb3RvY29sSXMobWVkaWFTb3Vy
Y2VCbG9iUHJvdG9jb2wpKSB7Ci0gICAgICAgIG1fbWVkaWFTb3VyY2UgPSBNZWRpYVNvdXJjZVJl
Z2lzdHJ5OjpyZWdpc3RyeSgpLmxvb2t1cE1lZGlhU291cmNlKHVybC5zdHJpbmcoKSk7Ci0KLSAg
ICAgICAgaWYgKG1fbWVkaWFTb3VyY2UpIHsKLSAgICAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnNl
dE1lZGlhUGxheWVyKG1fcGxheWVyLmdldCgpKTsKLSAgICAgICAgICAgIG1fbWVkaWFTb3VyY2VV
UkwgPSB1cmw7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQogICAgIC8vIFRoZSByZXNvdXJj
ZSBmZXRjaCBhbGdvcml0aG0gCiAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0xPQURJTkc7
CiAKQEAgLTEwNTQsOCArMTAzNiwyMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNv
dXJjZShjb25zdCBLVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlwZSYgY29udGVudAogICAgICAg
ICBtX211dGVkID0gdHJ1ZTsKICAgICB1cGRhdGVWb2x1bWUoKTsKIAorI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCisgICAgQVNTRVJUKCFtX21lZGlhU291cmNlKTsKKworICAgIGlmICh1cmwucHJv
dG9jb2xJcyhtZWRpYVNvdXJjZUJsb2JQcm90b2NvbCkpCisgICAgICAgIG1fbWVkaWFTb3VyY2Ug
PSBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLmxvb2t1cE1lZGlhU291cmNlKHVybC5z
dHJpbmcoKSk7CisKKyAgICBpZiAobV9tZWRpYVNvdXJjZSkgeworICAgICAgICBpZiAoIW1fcGxh
eWVyLT5sb2FkKG1fbWVkaWFTb3VyY2UpKQorICAgICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVk
KE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgfSBlbHNlIGlmICghbV9wbGF5ZXItPmxv
YWQodXJsLCBjb250ZW50VHlwZSwga2V5U3lzdGVtKSkKKyAgICAgICAgbWVkaWFMb2FkaW5nRmFp
bGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisjZWxzZQogICAgIGlmICghbV9wbGF5ZXIt
PmxvYWQodXJsLCBjb250ZW50VHlwZSwga2V5U3lzdGVtKSkKICAgICAgICAgbWVkaWFMb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisjZW5kaWYKIAogICAgIC8vIElmIHRo
ZXJlIGlzIG5vIHBvc3RlciB0byBkaXNwbGF5LCBhbGxvdyB0aGUgbWVkaWEgZW5naW5lIHRvIHJl
bmRlciB2aWRlbyBmcmFtZXMgYXMgc29vbiBhcwogICAgIC8vIHRoZXkgYXJlIGF2YWlsYWJsZS4K
QEAgLTE4NzIsMjIgKzE4NjcsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3Rh
dGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU291cmNl
T3BlbmVkKCkKLXsKLSAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7Ci0K
LSAgICBzZXRTb3VyY2VTdGF0ZShNZWRpYVNvdXJjZTo6b3BlbktleXdvcmQoKSk7Ci0KLSAgICBl
bmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwotfQotCi1TdHJpbmcgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJTb3VyY2VVUkwoKSBjb25zdAotewotICAgIHJldHVybiBtX21l
ZGlhU291cmNlVVJMLnN0cmluZygpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleUFkZGVkKE1lZGlh
UGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
KQogewpAQCAtNDQ5NCwxMyArNDQ3MywxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0
ZU1lZGlhUGxheWVyKCkKICAgICAgICAgbV9hdWRpb1NvdXJjZU5vZGUtPmxvY2soKTsKICNlbmRp
ZgogCi0gICAgbV9wbGF5ZXIgPSBNZWRpYVBsYXllcjo6Y3JlYXRlKHRoaXMpOwotCiAjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKLSAgICBpZiAobV9tZWRpYVNvdXJjZSkKLSAgICAgICAgbV9tZWRp
YVNvdXJjZS0+c2V0TWVkaWFQbGF5ZXIobV9wbGF5ZXIuZ2V0KCkpOworICAgIGlmIChtX21lZGlh
U291cmNlICYmIG1fbWVkaWFTb3VyY2UtPnJlYWR5U3RhdGUoKSAhPSBNZWRpYVNvdXJjZTo6Y2xv
c2VkS2V5d29yZCgpKQorICAgICAgICBtX21lZGlhU291cmNlLT5zZXRSZWFkeVN0YXRlKE1lZGlh
U291cmNlOjpjbG9zZWRLZXl3b3JkKCkpOwogI2VuZGlmCiAKKyAgICBtX3BsYXllciA9IE1lZGlh
UGxheWVyOjpjcmVhdGUodGhpcyk7CisKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIGlmICht
X2F1ZGlvU291cmNlTm9kZSkgewogICAgICAgICAvLyBXaGVuIGNyZWF0aW5nIHRoZSBwbGF5ZXIs
IG1ha2Ugc3VyZSBpdHMgQXVkaW9Tb3VyY2VQcm92aWRlciBrbm93cyBhYm91dCB0aGUgTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlLgpAQCAtNDg0MSw3ICs0ODIwLDYgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb24KICAgICBpbmZvLmFkZE1lbWJlcihtX3Byb3h5V2lkZ2V0LCAicHJveHlXaWRn
ZXQiKTsKICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgaW5mby5hZGRNZW1i
ZXIobV9tZWRpYVNvdXJjZVVSTCwgIm1lZGlhU291cmNlVVJMIik7CiAgICAgaW5mby5hZGRNZW1i
ZXIobV9tZWRpYVNvdXJjZSwgIm1lZGlhU291cmNlIik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGZhMWUz
ZjI4NGVlMTk2YmZiMjFjMjJhNGY4ZjcxNzJlNDMxNjBkNDUuLjM3NGRmMmI4NTY1ODYyZjM1MzUw
N2RmNDkyODMzZDQzMjA4YTUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC00NDIsMTEgKzQ0Miw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKE1lZGlhUGxheWVyKik7CiAgICAgdmlydHVh
bCB2b2lkIG1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlhUGxheWVyKik7CiAK
LSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNv
dXJjZU9wZW5lZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291cmNlVVJMKCkg
Y29uc3Q7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVh
bCB2b2lkIG1lZGlhUGxheWVyS2V5QWRkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllcktleUVycm9yKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBNZWRpYVBsYXllckNsaWVudDo6TWVkaWFL
ZXlFcnJvckNvZGUsIHVuc2lnbmVkIHNob3J0IHN5c3RlbUNvZGUpIE9WRVJSSURFOwpAQCAtNjM5
LDcgKzYzNCw2IEBAIHByaXZhdGU6CiAgICAgaW50IG1fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2Fs
bGJhY2s7CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIEtVUkwgbV9tZWRpYVNvdXJj
ZVVSTDsKICAgICBSZWZQdHI8TWVkaWFTb3VyY2U+IG1fbWVkaWFTb3VyY2U7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmlu
ZGV4IDBiMjU0NGY5MjE2MThmMmUxMzEwNTg5YjA5NmE2MWY4YjA1ZjY5OTEuLmZkMmRlOTc1ZTkw
MThmOWEyODI4MDM4Mjg0ZWQ1YzY1NzA4YjViZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTkxLDYgKzkxLDkgQEAgcHVibGlj
OgogICAgIE51bGxNZWRpYVBsYXllclByaXZhdGUoTWVkaWFQbGF5ZXIqKSB7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYpIHsgfQorI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCisgICAgdmlydHVhbCB2b2lkIGxvYWQoUGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4pIHsgfQor
I2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlVG9QbGF5KCkgeyB9CkBAIC0xNTEsMTcgKzE1NCw2IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdmlydHVhbCBNZWRpYVBs
YXllcjo6QWRkSWRTdGF0dXMgc291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKSB7IHJldHVybiBNZWRpYVBs
YXllcjo6Tm90U3VwcG9ydGVkOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IHNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0
ZSgpOyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYpIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCBTdHJp
bmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIHNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZVNldER1cmF0aW9uKGRvdWJsZSkgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKE1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0
YXR1cykgeyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChjb25z
dCBTdHJpbmcmLCBkb3VibGUpIHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKLQogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNl
cHRpb24gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNo
YXIqLCB1bnNpZ25lZCkgT1ZFUlJJREUgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5
ZXJTdGF0ZTsgfQogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGFk
ZEtleShjb25zdCBTdHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyByZXR1
cm4gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsgfQpAQCAtMzcyLDYgKzM2NCwxMCBA
QCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgQ29udGVudFR5
cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdAogICAgIG1fa2V5U3lzdGVtID0ga2V5U3lzdGVtLmxv
d2VyKCk7CiAgICAgbV9jb250ZW50TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21FeHRlbnNpb24gPSBm
YWxzZTsKIAorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgbV9tZWRpYVNvdXJjZSA9IDA7
CisjZW5kaWYKKwogICAgIC8vIElmIHRoZSBNSU1FIHR5cGUgaXMgbWlzc2luZyBvciBpcyBub3Qg
bWVhbmluZ2Z1bCwgdHJ5IHRvIGZpZ3VyZSBpdCBvdXQgZnJvbSB0aGUgVVJMLgogICAgIGlmICht
X2NvbnRlbnRNSU1FVHlwZS5pc0VtcHR5KCkgfHwgbV9jb250ZW50TUlNRVR5cGUgPT0gYXBwbGlj
YXRpb25PY3RldFN0cmVhbSgpIHx8IG1fY29udGVudE1JTUVUeXBlID09IHRleHRQbGFpbigpKSB7
CiAgICAgICAgIGlmIChtX3VybC5wcm90b2NvbElzRGF0YSgpKQpAQCAtMzk0LDYgKzM5MCwyMCBA
QCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgQ29udGVudFR5
cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdAogICAgIHJldHVybiBtX2N1cnJlbnRNZWRpYUVuZ2lu
ZTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCitib29sIE1lZGlhUGxheWVyOjpsb2Fk
KFBhc3NSZWZQdHI8TWVkaWFTb3VyY2U+IG1lZGlhU291cmNlKQoreworICAgIG1fbWVkaWFTb3Vy
Y2UgPSBtZWRpYVNvdXJjZTsKKyAgICBtX2NvbnRlbnRNSU1FVHlwZSA9ICIiOworICAgIG1fY29u
dGVudFR5cGVDb2RlY3MgPSAiIjsKKyAgICBtX3VybCA9IEtVUkwoKTsKKyAgICBtX2tleVN5c3Rl
bSA9ICIiOworICAgIG1fY29udGVudE1JTUVUeXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uID0g
ZmFsc2U7CisgICAgbG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoMCk7CisgICAgcmV0dXJuIG1fY3Vy
cmVudE1lZGlhRW5naW5lOworfQorI2VuZGlmCisKIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRo
TmV4dE1lZGlhRW5naW5lKE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKIHsKICAgICBNZWRp
YVBsYXllckZhY3RvcnkqIGVuZ2luZSA9IDA7CkBAIC00MjUsOSArNDM1LDE2IEBAIHZvaWQgTWVk
aWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKE1lZGlhUGxheWVyRmFjdG9yeSogY3Vy
cmVudCkKICAgICAgICAgICAgIG1fcHJpdmF0ZS0+cHJlcGFyZUZvclJlbmRlcmluZygpOwogICAg
IH0KIAotICAgIGlmIChtX3ByaXZhdGUpCisgICAgaWYgKG1fcHJpdmF0ZSkgeworI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCisgICAgICAgIGlmIChtX21lZGlhU291cmNlKQorICAgICAgICAgICAg
bV9wcml2YXRlLT5sb2FkKG1fbWVkaWFTb3VyY2UpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX3ByaXZhdGUtPmxvYWQobV91cmwuc3RyaW5nKCkpOworI2Vsc2UKICAgICAgICAgbV9wcml2
YXRlLT5sb2FkKG1fdXJsLnN0cmluZygpKTsKLSAgICBlbHNlIHsKKyNlbmRpZgorICAgIH0gZWxz
ZSB7CiAgICAgICAgIG1fcHJpdmF0ZSA9IGNyZWF0ZU51bGxNZWRpYVBsYXllcih0aGlzKTsKICAg
ICAgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpIHsKICAgICAgICAgICAgIG1fbWVkaWFQbGF5
ZXJDbGllbnQtPm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCh0aGlzKTsKQEAgLTQ3Nyw0OSArNDk0
LDYgQEAgdm9pZCBNZWRpYVBsYXllcjo6cGF1c2UoKQogICAgIG1fcHJpdmF0ZS0+cGF1c2UoKTsK
IH0KIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0KLU1lZGlhUGxheWVyOjpBZGRJZFN0YXR1
cyBNZWRpYVBsYXllcjo6c291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKQotewotICAgIHJldHVybiBtX3By
aXZhdGUtPnNvdXJjZUFkZElkKGlkLCB0eXBlLCBjb2RlY3MpOwotfQotCi1QYXNzUmVmUHRyPFRp
bWVSYW5nZXM+IE1lZGlhUGxheWVyOjpzb3VyY2VCdWZmZXJlZChjb25zdCBTdHJpbmcmIGlkKQot
ewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZUJ1ZmZlcmVkKGlkKTsKLX0KLQotYm9vbCBN
ZWRpYVBsYXllcjo6c291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkKLXsKLSAgICByZXR1
cm4gbV9wcml2YXRlLT5zb3VyY2VSZW1vdmVJZChpZCk7Ci19Ci0KLWJvb2wgTWVkaWFQbGF5ZXI6
OnNvdXJjZUFwcGVuZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlQXBwZW5k
KGlkLCBkYXRhLCBsZW5ndGgpOwotfQotCi1ib29sIE1lZGlhUGxheWVyOjpzb3VyY2VBYm9ydChj
b25zdCBTdHJpbmcmIGlkKQotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZUFib3J0KGlk
KTsKLX0KLQotdm9pZCBNZWRpYVBsYXllcjo6c291cmNlU2V0RHVyYXRpb24oZG91YmxlIGR1cmF0
aW9uKQotewotICAgIG1fcHJpdmF0ZS0+c291cmNlU2V0RHVyYXRpb24oZHVyYXRpb24pOwotfQot
Ci12b2lkIE1lZGlhUGxheWVyOjpzb3VyY2VFbmRPZlN0cmVhbShNZWRpYVBsYXllcjo6RW5kT2ZT
dHJlYW1TdGF0dXMgc3RhdHVzKQotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZUVuZE9m
U3RyZWFtKHN0YXR1cyk7Ci19Ci0KLWJvb2wgTWVkaWFQbGF5ZXI6OnNvdXJjZVNldFRpbWVzdGFt
cE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KQotewotICAgIHJldHVybiBt
X3ByaXZhdGUtPnNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChpZCwgb2Zmc2V0KTsKLX0KLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4
Y2VwdGlvbiBNZWRpYVBsYXllcjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFM
ZW5ndGgpCiB7CkBAIC05NDcsMjEgKzkyMSw2IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFByaXZh
dGVCcm93c2luZ01vZGUoYm9vbCBwcml2YXRlQnJvd3NpbmdNb2RlKQogICAgIG1fcHJpdmF0ZS0+
c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShtX3ByaXZhdGVCcm93c2luZyk7CiB9CiAKLSNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQotdm9pZCBNZWRpYVBsYXllcjo6c291cmNlT3BlbmVkKCkKLXsKLSAg
ICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKLSAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+
bWVkaWFQbGF5ZXJTb3VyY2VPcGVuZWQoKTsKLX0KLQotU3RyaW5nIE1lZGlhUGxheWVyOjpzb3Vy
Y2VVUkwoKSBjb25zdAotewotICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQotICAgICAgICBy
ZXR1cm4gbV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJTb3VyY2VVUkwoKTsKLSAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci19Ci0jZW5kaWYKLQogLy8gQ2xpZW50IGNhbGxiYWNrcy4KIHZvaWQg
TWVkaWFQbGF5ZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggNjNjZTA5Zjc5Yjg2ZjRiYjA4
MGY5YTc5MzYyOTgxNDc3NmVhNzgxNy4uZmQyOTUwMGEyYzJhNDkyZDgyZDdhYzA2OTMyNTA0ZjBk
ZjNlZDdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCkBAIC0zNiw2ICszNiw5IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
IktVUkwuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKKyNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgorI2VuZGlmCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC02
MSw3ICs2NCw2IEBAIGNsYXNzIEF1ZGlvU291cmNlUHJvdmlkZXI7CiBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIEdTdHJlYW1lckdXb3JsZDsKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZTsKLWNsYXNzIE1lZGlhU291cmNlOwogY2xhc3MgVGV4dFRyYWNrUmVwcmVzZW50YXRpb247CiAK
IC8vIFN0cnVjdHVyZSB0aGF0IHdpbGwgaG9sZCBldmVyeSBuYXRpdmUKQEAgLTE4MCwxMSArMTgy
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBtZWRpYVBs
YXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0IHsgcmV0
dXJuIDA7IH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICB2aXJ0dWFs
IHZvaWQgbWVkaWFQbGF5ZXJTb3VyY2VPcGVuZWQoKSB7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBt
ZWRpYVBsYXllclNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuICJ4LW1lZGlhLXNvdXJjZS11bnN1
cHBvcnRlZDoiOyB9Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAg
ZW51bSBNZWRpYUtleUVycm9yQ29kZSB7IFVua25vd25FcnJvciA9IDEsIENsaWVudEVycm9yLCBT
ZXJ2aWNlRXJyb3IsIE91dHB1dEVycm9yLCBIYXJkd2FyZUNoYW5nZUVycm9yLCBEb21haW5FcnJv
ciB9OwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleUFkZGVkKE1lZGlhUGxheWVyKiwg
Y29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogc2Vzc2lvbklk
ICovKSB7IH0KQEAgLTI3MSw2ICsyNjgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaXplKGNv
bnN0IEludFNpemUmIHNpemUpOwogCiAgICAgYm9vbCBsb2FkKGNvbnN0IEtVUkwmLCBjb25zdCBD
b250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKKyNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQorICAgIGJvb2wgbG9hZChQYXNzUmVmUHRyPE1lZGlhU291cmNlPik7CisjZW5kaWYK
ICAgICB2b2lkIGNhbmNlbExvYWQoKTsKIAogICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0OwpAQCAt
MjgwLDE5ICsyODAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbGF5KCk7CiAgICAgdm9pZCBwYXVz
ZSgpOyAgICAKIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgZW51bSBBZGRJZFN0YXR1
cyB7IE9rLCBOb3RTdXBwb3J0ZWQsIFJlYWNoZWRJZExpbWl0IH07Ci0gICAgQWRkSWRTdGF0dXMg
c291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgY29kZWNzKTsKLSAgICBib29sIHNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0
cmluZyYgaWQpOwotICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc291cmNlQnVmZmVyZWQoY29u
c3QgU3RyaW5nJiBpZCk7Ci0gICAgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwg
Y29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2b2lkIHNv
dXJjZVNldER1cmF0aW9uKGRvdWJsZSk7Ci0gICAgYm9vbCBzb3VyY2VBYm9ydChjb25zdCBTdHJp
bmcmIGlkKTsKLSAgICBlbnVtIEVuZE9mU3RyZWFtU3RhdHVzIHsgRW9zTm9FcnJvciwgRW9zTmV0
d29ya0Vycm9yLCBFb3NEZWNvZGVFcnJvciB9OwotICAgIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0o
RW5kT2ZTdHJlYW1TdGF0dXMpOwotICAgIGJvb2wgc291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNv
bnN0IFN0cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQogICAgIC8vIFJlcHJlc2VudHMgc3luY2hyb25vdXMgZXhjZXB0aW9ucyB0
aGF0IGNhbiBiZSB0aHJvd24gZnJvbSB0aGUgRW5jcnlwdGVkIE1lZGlhIG1ldGhvZHMuCiAgICAg
Ly8gVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYXN5bmNocm9ub3VzIE1lZGlhS2V5RXJyb3Iu
CkBAIC00MjIsMTEgKzQwOSw2IEBAIHB1YmxpYzoKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBh
dWRpb1NvdXJjZVByb3ZpZGVyKCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
Ci0gICAgdm9pZCBzb3VyY2VPcGVuZWQoKTsKLSAgICBTdHJpbmcgc291cmNlVVJMKCkgY29uc3Q7
Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdm9pZCBrZXlBZGRl
ZChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwogICAg
IHZvaWQga2V5RXJyb3IoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBNZWRpYVBsYXllckNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUsIHVuc2lnbmVkIHNo
b3J0IHN5c3RlbUNvZGUpOwpAQCAtNDg0LDYgKzQ2NiwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgIFdlYk1lZGlhUGxheWVyUHJveHkqIG1fcGxh
eWVyUHJveHk7ICAgIC8vIG5vdCBvd25lZCBvciB1c2VkLCBwYXNzZWQgdG8gbV9wcml2YXRlCiAj
ZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgUmVmUHRyPE1lZGlhU291cmNl
PiBtX21lZGlhU291cmNlOworI2VuZGlmCiB9OwogCiB0eXBlZGVmIFBhc3NPd25QdHI8TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlPiAoKkNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKShNZWRpYVBs
YXllciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAppbmRleCA1YzY2NzRkMmQzYTYzOGNhMzA2MWQzZjkyMjlhYWFkZjIy
YWE3ODQwLi5mOTY1ZmMyNDUxOGYxNTczOWNlZGIyYTg0MjM5ZTM2YTliZTM3NDdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaApAQCAtNDQsNiArNDQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBTdHJp
bmcmIHVybCkgPSAwOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgdmlydHVhbCB2b2lk
IGxvYWQoUGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4pID0gMDsKKyNlbmRpZgogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxMb2FkKCkgPSAwOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9Q
bGF5KCkgeyB9CkBAIC0xNjcsMTcgKzE3MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEF1ZGlv
U291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSB7IHJldHVybiAwOyB9CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdmlydHVhbCBNZWRpYVBsYXllcjo6
QWRkSWRTdGF0dXMgc291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKSB7IHJldHVybiBNZWRpYVBsYXllcjo6
Tm90U3VwcG9ydGVkOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNvdXJj
ZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgp
OyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYgaWQpIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCBTdHJp
bmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYg
aWQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZVNldER1cmF0aW9u
KGRvdWJsZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKE1lZGlhUGxh
eWVyOjpFbmRPZlN0cmVhbVN0YXR1cykgeyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZVNldFRp
bWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KSB7IHJldHVybiBm
YWxzZTsgfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1
YWwgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGFkZEtleShjb25zdCBTdHJpbmcmLCBj
b25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNp
Z25lZCwgY29uc3QgU3RyaW5nJikgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OktleVN5c3RlbU5vdFN1
cHBvcnRlZDsgfQogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGdl
bmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5z
aWduZWQpIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpLZXlTeXN0ZW1Ob3RTdXBwb3J0ZWQ7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291cmNlUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2
YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGQ5MWRhMGNmZDAxMGU2N2ZhYjc1YzVjYWNhZDNmNmJmZjkwZDFm
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhU291cmNlUHJpdmF0ZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBNZWRpYVNvdXJjZVByaXZh
dGVfaAorI2RlZmluZSBNZWRpYVNvdXJjZVByaXZhdGVfaAorCisjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKKworI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1l
ZGlhU291cmNlUHJpdmF0ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IE1lZGlhU291cmNlUHJpdmF0ZSgpIHsgfQorICAgIHZpcnR1YWwgfk1lZGlhU291cmNlUHJpdmF0
ZSgpIHsgfQorCisgICAgZW51bSBBZGRJZFN0YXR1cyB7IE9rLCBOb3RTdXBwb3J0ZWQsIFJlYWNo
ZWRJZExpbWl0IH07CisgICAgdmlydHVhbCBBZGRJZFN0YXR1cyBhZGRJZChjb25zdCBTdHJpbmcm
IGlkLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkgPSAwOworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZChjb25zdCBTdHJpbmcmIGlk
KSA9IDA7CisgICAgdmlydHVhbCBib29sIGFwcGVuZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCB1
bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIGRv
dWJsZSBkdXJhdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RHVyYXRpb24oZG91Ymxl
KSA9IDA7CisgICAgdmlydHVhbCBib29sIGFib3J0KGNvbnN0IFN0cmluZyYgaWQpID0gMDsKKyAg
ICBlbnVtIEVuZE9mU3RyZWFtU3RhdHVzIHsgRW9zTm9FcnJvciwgRW9zTmV0d29ya0Vycm9yLCBF
b3NEZWNvZGVFcnJvciB9OworICAgIHZpcnR1YWwgdm9pZCBlbmRPZlN0cmVhbShFbmRPZlN0cmVh
bVN0YXR1cykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRUaW1lc3RhbXBPZmZzZXQoY29uc3Qg
U3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCkgPSAwOworfTsKKworfQorCisjZW5kaWYKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGVlNGRhM2RiMTFmZjJmNGEyZDZjOWZk
MDVhNDEzY2E3MzdkMDAwYWUuLjgxMjQzMzQxM2M3MzNjZDJlYzk2NmYxMTVkYzQzZGU2YjJlZGNm
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE5NSw2ICsxOTUsOCBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJNZWRpYVBsYXllckFjdGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYk1lZGlhUGxheWVyQ2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVk
aWFTb3VyY2UuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVNvdXJjZUNsaWVu
dC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlhU3RyZWFtUmVnaXN0cnkuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZW1vcnlVc2FnZUluZm8uaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJNZW51SXRlbUluZm8uaCcsCkBAIC01MDUsNiArNTA3LDkgQEAK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkxhYmVsRWxlbWVudC5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJNZWRpYVNvdXJjZS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFTb3VyY2VJ
bXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVNvdXJjZUltcGwuaCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViTm9kZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYk1lZGlhUGxheWVyLmgKaW5kZXggYTQyODdlMWMxZGU0YTM5OTcwMTA0OGZkNmM0YzFkMDdh
YmEzNmYxOC4uYjFhZGNmMjA5ZWVkZjg2NTY4YjkwMGM3MjNlOTlkMTM3NTE4MDA0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCkBAIC0zMyw2
ICszMyw3IEBACiAKICNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViQ2FudmFzLmgiCiAjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYk1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiV2Vi
VGltZVJhbmdlLmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllckNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaAppbmRleCBk
ZWNhOTUzNmQ5OWE0NWNiMjE1ZThlYTVlMjA0YTYxODk3NTVjNGIzLi5jODJmZDNhY2M2NTY5YmEy
NzBjMWI3NmQ3YTYxY2I5ZDMzNWE5YWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZTsKK2NsYXNzIFdlYk1lZGlhU291cmNl
OwogY2xhc3MgV2ViUGx1Z2luOwogY2xhc3MgV2ViUmVxdWVzdDsKIGNsYXNzIFdlYlVSTDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU291cmNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVNvdXJjZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJiM2ZhYzI5MjFmYjM2NjlkYjI2OTA2YTVkN2FhNjE5MWYxNzZkNWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVNvdXJjZS5oCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhU291cmNlX2gKKyNkZWZpbmUgV2ViTWVkaWFT
b3VyY2VfaAorCisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlVSTC5oIgorI2luY2x1ZGUgIldlYlRpbWVSYW5nZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViTWVkaWFTb3VyY2VDbGllbnQ7CisKK2NsYXNzIFdlYk1lZGlhU291cmNlIHsK
K3B1YmxpYzoKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJNZWRpYVNvdXJjZSogZ2V0TWVk
aWFTb3VyY2VGb3JVUkwoY29uc3QgV2ViVVJMJik7CisKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNv
dXJjZSgpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKFdlYk1lZGlhU291cmNlQ2xpZW50KikgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU291cmNlQ2xpZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2U2NTA5MDRiYjQyYmY4ZmZhMGU3NmM3MzdiOWZlZWRjMWFlOWYxMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU291cmNlQ2xpZW50
LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFTb3VyY2VDbGllbnRfaAorI2RlZmlu
ZSBXZWJNZWRpYVNvdXJjZUNsaWVudF9oCisKKyNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVGltZVJhbmdlLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVNvdXJjZUNsaWVudCB7CitwdWJs
aWM6CisgICAgZW51bSBBZGRJZFN0YXR1cyB7CisgICAgICAgIEFkZElkU3RhdHVzT2ssCisgICAg
ICAgIEFkZElkU3RhdHVzTm90U3VwcG9ydGVkLAorICAgICAgICBBZGRJZFN0YXR1c1JlYWNoZWRJ
ZExpbWl0CisgICAgfTsKKworICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgeworICAgICAgICBF
bmRPZlN0cmVhbVN0YXR1c05vRXJyb3IsCisgICAgICAgIEVuZE9mU3RyZWFtU3RhdHVzTmV0d29y
a0Vycm9yLAorICAgICAgICBFbmRPZlN0cmVhbVN0YXR1c0RlY29kZUVycm9yLAorICAgIH07CisK
KyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNvdXJjZUNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCBB
ZGRJZFN0YXR1cyBhZGRJZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCBXZWJTdHJpbmcmIHR5
cGUsIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBjb2RlY3MpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgcmVtb3ZlSWQoY29uc3QgV2ViU3RyaW5nJiBpZCkgPSAwOworICAgIHZpcnR1YWwgV2Vi
VGltZVJhbmdlcyBidWZmZXJlZChjb25zdCBXZWJTdHJpbmcmIGlkKSA9IDA7CisgICAgdmlydHVh
bCBib29sIGFwcGVuZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYWJvcnQoY29uc3Qg
V2ViU3RyaW5nJiBpZCkgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGR1cmF0aW9uKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
c2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFdlYlN0cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpID0g
MDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggYjk3MjUx
NjUzZGEyZDA4M2RlZTNkMzFlYzE0NGNhNTdmMjE1NzFkYS4uZjZiMmJiYWM3ZTM4M2JjN2VkN2Vi
MDkxNzY1ZDA1NWZhNjBlZWMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTYyLDYgKzYyLDkgQEAKICNpbmNsdWRlICJJ
REJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJNZWRpYVBsYXll
ci5oIgorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VQcml2
YXRlLmgiCisjZW5kaWYKICNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VWaXNpYmlsaXR5U3RhdGUuaCIK
QEAgLTEwNSw2ICsxMDgsNyBAQAogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1
ZGUgIldlYk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJDbGllbnQuaCIK
KyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNh
dGlvblByZXNlbnRlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VWaXNpYmlsaXR5U3RhdGUuaCIKICNp
bmNsdWRlICJXZWJTZXR0aW5ncy5oIgpAQCAtNDA5LDE1ICs0MTMsMTMgQEAgQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6UHJlbG9hZE1ldGFEYXRhLCBNZWRpYVBs
YXllcjo6TWV0YUQKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6
OlByZWxvYWRBdXRvLCBNZWRpYVBsYXllcjo6QXV0byk7CiAKICNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6QWRkSWRT
dGF0dXNPaywgTWVkaWFQbGF5ZXI6Ok9rKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzTm90U3VwcG9ydGVkLCBNZWRpYVBsYXllcjo6Tm90
U3VwcG9ydGVkKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6
OkFkZElkU3RhdHVzUmVhY2hlZElkTGltaXQsIE1lZGlhUGxheWVyOjpSZWFjaGVkSWRMaW1pdCk7
Ci0jZW5kaWYKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFTb3VyY2VDbGll
bnQ6OkFkZElkU3RhdHVzT2ssIE1lZGlhU291cmNlUHJpdmF0ZTo6T2spOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6QWRkSWRTdGF0dXNOb3RTdXBw
b3J0ZWQsIE1lZGlhU291cmNlUHJpdmF0ZTo6Tm90U3VwcG9ydGVkKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViTWVkaWFTb3VyY2VDbGllbnQ6OkFkZElkU3RhdHVzUmVhY2hlZElk
TGltaXQsIE1lZGlhU291cmNlUHJpdmF0ZTo6UmVhY2hlZElkTGltaXQpOwogCi0jaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQ
bGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzTm9FcnJvciwgTWVkaWFQbGF5ZXI6OkVvc05vRXJyb3Ip
OwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6RW5kT2ZTdHJl
YW1TdGF0dXNOZXR3b3JrRXJyb3IsIE1lZGlhUGxheWVyOjpFb3NOZXR3b3JrRXJyb3IpOwotQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0
dXNEZWNvZGVFcnJvciwgTWVkaWFQbGF5ZXI6OkVvc0RlY29kZUVycm9yKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFTb3VyY2VDbGllbnQ6OkVuZE9mU3RyZWFtU3RhdHVz
Tm9FcnJvciwgTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOb0Vycm9yKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViTWVkaWFTb3VyY2VDbGllbnQ6OkVuZE9mU3RyZWFtU3RhdHVzTmV0
d29ya0Vycm9yLCBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05ldHdvcmtFcnJvcik7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhU291cmNlQ2xpZW50OjpFbmRPZlN0cmVhbVN0
YXR1c0RlY29kZUVycm9yLCBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc0RlY29kZUVycm9yKTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4IGVm
MzUwZDcxYTAwZDFmMDE3OWMwMjk0NGQ0MDdjOTgxNjlkY2FmZDkuLjdkY2E5NTE5YzY0NWFlZTEz
MmQ2MTg2ODc1MjJiM2YyMzFmNDEwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtMjYsNiArMjYsOCBA
QAogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYkhlbHBlclBsdWdpbklt
cGwuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIldlYk1lZGlhU291
cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTb3VyY2VJbXBsLmgiCiAjaW5jbHVkZSAi
V2ViVmlld0ltcGwuaCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViQ1N0cmluZy5oPgpAQCAtNDksNiArNTEsODMgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisvLyBUT0RPKGFjb2x3ZWxsKTogUmVtb3Zl
IHRoaXMgY2xhc3Mgb25jZSB0aGUgQ2hyb21pdW0gY29kZSBzdGFydHMgY2FsbGluZworLy8gV2Vi
TWVkaWFTb3VyY2U6OmdldE1lZGlhU291cmNlRm9yVVJMKCkgYW5kIG9wZW5pbmcgdGhlIFdlYk1l
ZGlhU291cmNlIG9iamVjdAorLy8gaXRzZWxmLgorY2xhc3MgV2ViTWVkaWFTb3VyY2VDbGllbnRJ
bXBsIDogcHVibGljIFdlYk1lZGlhU291cmNlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJNZWRp
YVNvdXJjZUNsaWVudEltcGwoV2ViTWVkaWFQbGF5ZXIqKTsKKyAgICB2aXJ0dWFsIH5XZWJNZWRp
YVNvdXJjZUNsaWVudEltcGwoKTsKKworICAgIC8vIFdlYk1lZGlhU291cmNlQ2xpZW50IG1ldGhv
ZHMuCisgICAgdmlydHVhbCBBZGRJZFN0YXR1cyBhZGRJZChjb25zdCBXZWJTdHJpbmcmIGlkLCBj
b25zdCBXZWJTdHJpbmcmIHR5cGUsIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBjb2RlY3Mp
OworICAgIHZpcnR1YWwgYm9vbCByZW1vdmVJZChjb25zdCBXZWJTdHJpbmcmIGlkKTsKKyAgICB2
aXJ0dWFsIFdlYlRpbWVSYW5nZXMgYnVmZmVyZWQoY29uc3QgV2ViU3RyaW5nJiBpZCk7CisgICAg
dmlydHVhbCBib29sIGFwcGVuZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1YWwgYm9vbCBhYm9ydChjb25z
dCBXZWJTdHJpbmcmIGlkKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkdXJhdGlvbigpOworICAgIHZp
cnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpOworICAgIHZpcnR1YWwgdm9pZCBlbmRPZlN0
cmVhbShFbmRPZlN0cmVhbVN0YXR1cyk7CisgICAgdmlydHVhbCBib29sIHNldFRpbWVzdGFtcE9m
ZnNldChjb25zdCBXZWJTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KTsKKworcHJpdmF0ZToKKyAg
ICBXZWJNZWRpYVBsYXllciogbV93ZWJNZWRpYVBsYXllcjsKK307CisKK1dlYk1lZGlhU291cmNl
Q2xpZW50SW1wbDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsKFdlYk1lZGlhUGxheWVyKiB3ZWJN
ZWRpYVBsYXllcikKKyAgICA6IG1fd2ViTWVkaWFQbGF5ZXIod2ViTWVkaWFQbGF5ZXIpCit7Cit9
CisKK1dlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6fldlYk1lZGlhU291cmNlQ2xpZW50SW1wbCgp
Cit7Cit9CisKK1dlYk1lZGlhU291cmNlQ2xpZW50OjpBZGRJZFN0YXR1cyBXZWJNZWRpYVNvdXJj
ZUNsaWVudEltcGw6OmFkZElkKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0IFdlYlN0cmluZyYg
dHlwZSwgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGNvZGVjcykKK3sKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8V2ViTWVkaWFTb3VyY2VDbGllbnQ6OkFkZElkU3RhdHVzPihtX3dlYk1lZGlh
UGxheWVyLT5zb3VyY2VBZGRJZChpZCwgdHlwZSwgY29kZWNzKSk7Cit9CisKK2Jvb2wgV2ViTWVk
aWFTb3VyY2VDbGllbnRJbXBsOjpyZW1vdmVJZChjb25zdCBXZWJTdHJpbmcmIGlkKQoreworICAg
IHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VSZW1vdmVJZChpZCk7Cit9CisKK1dlYlRp
bWVSYW5nZXMgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpidWZmZXJlZChjb25zdCBXZWJTdHJp
bmcmIGlkKQoreworICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VCdWZmZXJlZChp
ZCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjphcHBlbmQoY29uc3QgV2Vi
U3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQor
eworICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBcHBlbmQoaWQsIGRhdGEsIGxl
bmd0aCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjphYm9ydChjb25zdCBX
ZWJTdHJpbmcmIGlkKQoreworICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBYm9y
dChpZCk7Cit9CisKK2RvdWJsZSBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmR1cmF0aW9uKCkK
K3sKKyAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+ZHVyYXRpb24oKTsKK30KKwordm9pZCBX
ZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3sK
KyAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlU2V0RHVyYXRpb24oZHVyYXRpb24p
OworfQorCit2b2lkIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6ZW5kT2ZTdHJlYW0oRW5kT2ZT
dHJlYW1TdGF0dXMgc3RhdHVzKQoreworICAgIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUVuZE9m
U3RyZWFtKHN0YXRpY19jYXN0PFdlYk1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cz4oc3Rh
dHVzKSk7Cit9CisKK2Jvb2wgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpzZXRUaW1lc3RhbXBP
ZmZzZXQoY29uc3QgV2ViU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCkKK3sKKyAgICByZXR1cm4g
bV93ZWJNZWRpYVBsYXllci0+c291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpOwor
fQorCiBzdGF0aWMgUGFzc093blB0cjxXZWJNZWRpYVBsYXllcj4gY3JlYXRlV2ViTWVkaWFQbGF5
ZXIoV2ViTWVkaWFQbGF5ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViVVJMJiB1cmwsIEZyYW1l
KiBmcmFtZSkKIHsKICAgICBXZWJGcmFtZUltcGwqIHdlYkZyYW1lID0gV2ViRnJhbWVJbXBsOjpm
cm9tRnJhbWUoZnJhbWUpOwpAQCAtMjE4LDIyICsyOTcsMjcgQEAgV2ViTWVkaWFQbGF5ZXI6OlBy
ZWxvYWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpwcmVsb2FkKCkgY29uc3QKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViTWVkaWFQbGF5ZXI6OlByZWxvYWQ+KG1fcHJlbG9hZCk7CiB9CiAK
Ky8vIFRPRE8oYWNvbHdlbGwpOiBSZW1vdmUgdGhpcyBhbmQgc291cmNlVVJMKCkgb25jZSB0aGUg
Q2hyb21pdW0gY29kZSBzdGFydHMKKy8vIGNhbGxpbmcgV2ViTWVkaWFTb3VyY2U6OmdldE1lZGlh
U291cmNlRm9yVVJMKCkgYW5kIG9wZW5pbmcgdGhlIFdlYk1lZGlhU291cmNlCisvLyBpdHNlbGYu
CiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlT3BlbmVkKCkKIHsKICNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQotICAgIEFTU0VSVChtX21lZGlhUGxheWVyKTsKLSAgICBtX21l
ZGlhUGxheWVyLT5zb3VyY2VPcGVuZWQoKTsKKyAgICBBU1NFUlQobV93ZWJNZWRpYVBsYXllcik7
CisgICAgaWYgKG1fbWVkaWFTb3VyY2UpIHsKKyAgICAgICAgT3duUHRyPFdlYk1lZGlhU291cmNl
PiBtZWRpYVNvdXJjZSA9IGFkb3B0UHRyKG5ldyBXZWJNZWRpYVNvdXJjZUltcGwobV9tZWRpYVNv
dXJjZSkpOworICAgICAgICBtZWRpYVNvdXJjZS0+b3BlbihuZXcgV2ViTWVkaWFTb3VyY2VDbGll
bnRJbXBsKG1fd2ViTWVkaWFQbGF5ZXIuZ2V0KCkpKTsKKyAgICB9CiAjZW5kaWYKIH0KIAogV2Vi
S2l0OjpXZWJVUkwgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VVUkwoKSBjb25zdAog
ewogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgQVNTRVJUKG1fbWVkaWFQbGF5ZXIpOwot
ICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgbV9tZWRpYVBsYXllci0+c291cmNlVVJM
KCkpOwotI2Vsc2UKLSAgICByZXR1cm4gS1VSTCgpOworICAgIGlmIChtX21lZGlhU291cmNlKQor
ICAgICAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsICJ4LW1lZGlhLXNvdXJjZToiKTsK
ICNlbmRpZgorICAgIHJldHVybiBLVVJMKCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsOjprZXlBZGRlZChjb25zdCBXZWJTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgV2ViU3Ry
aW5nJiBzZXNzaW9uSWQpCkBAIC0zMjMsNyArNDA3LDIzIEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpkaXNhYmxlQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpCiB2b2lkIFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbDo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBtX3VybCA9
IHVybDsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIG1fbWVkaWFTb3VyY2UgPSAwOwor
I2VuZGlmCisgICAgbG9hZFJlcXVlc3RlZCgpOworfQogCisjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKK3ZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6TWVkaWFTb3VyY2U+IG1lZGlhU291cmNlKQoreworICAgIG1fdXJsID0gIiI7CisgICAgbV9t
ZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOworICAgIGxvYWRSZXF1ZXN0ZWQoKTsKK30KKyNlbmRp
ZgorCit2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6bG9hZFJlcXVlc3RlZCgpCit7CiAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2ViTWVkaWFQbGF5ZXJNdXRleCk7CiAgICAgaWYgKG1f
cHJlbG9hZCA9PSBNZWRpYVBsYXllcjo6Tm9uZSkgewogI2lmIEVOQUJMRShXRUJfQVVESU8pCkBA
IC0zNDgsOSArNDQ4LDE3IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkSW50
ZXJuYWwoKQogICAgICAgICAvLyBNYWtlIHN1cmUgaWYgd2UgY3JlYXRlL3JlLWNyZWF0ZSB0aGUg
V2ViTWVkaWFQbGF5ZXIgdGhhdCB3ZSB1cGRhdGUgb3VyIHdyYXBwZXIuCiAgICAgICAgIG1fYXVk
aW9Tb3VyY2VQcm92aWRlci53cmFwKG1fd2ViTWVkaWFQbGF5ZXItPmF1ZGlvU291cmNlUHJvdmlk
ZXIoKSk7CiAjZW5kaWYKLSAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+bG9hZCgKLSAgICAgICAg
ICAgIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybCksCi0gICAgICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJNZWRpYVBsYXllcjo6Q09SU01vZGU+KG1fbWVkaWFQbGF5ZXItPm1lZGlhUGxheWVyQ2xp
ZW50KCktPm1lZGlhUGxheWVyQ09SU01vZGUoKSkpOworCisgICAgICAgIFdlYk1lZGlhUGxheWVy
OjpDT1JTTW9kZSBjb3JzTW9kZSA9IHN0YXRpY19jYXN0PFdlYk1lZGlhUGxheWVyOjpDT1JTTW9k
ZT4obV9tZWRpYVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJDT1JTTW9k
ZSgpKTsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgICAgICBpZiAobV9tZWRpYVNvdXJj
ZSkgeworICAgICAgICAgICAgLy8gVE9ETyhhY29sd2VsbCk6IFJlcGxhY2Ugd2l0aCBtX3dlYk1l
ZGlhUGxheWVyLT5sb2FkKG5ldyBXZWJNZWRpYVNvdXJjZUltcGwobV9tZWRpYVNvdXJjZSksIGNv
cnNNb2RlKQorICAgICAgICAgICAgLy8gb25jZSB0aGUgQ2hyb21pdW0gY29kZSBoYXMgYWNjZXNz
IHRvIHRoZSBXZWJNZWRpYVNvdXJjZSBkZWNsYXJhdGlvbi4KKyAgICAgICAgICAgIG1fd2ViTWVk
aWFQbGF5ZXItPmxvYWQoc291cmNlVVJMKCksIGNvcnNNb2RlKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIG1fd2ViTWVkaWFQbGF5ZXItPmxvYWQoS1VS
TChQYXJzZWRVUkxTdHJpbmcsIG1fdXJsKSwgY29yc01vZGUpOwogICAgIH0KIH0KIApAQCAtNDA3
LDcwICs1MTUsNiBAQCBib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Y2FuRW50ZXJGdWxs
c2NyZWVuKCkgY29uc3QKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLVdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpBZGRJZFN0YXR1cyBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6
OnNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNvZGVjcykKLXsKLSAgICBpZiAoIW1fd2ViTWVkaWFQbGF5ZXIpCi0g
ICAgICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVBsYXllcjo6Tm90U3VwcG9ydGVkOwotCi0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpBZGRJZFN0YXR1cz4obV93
ZWJNZWRpYVBsYXllci0+c291cmNlQWRkSWQoaWQsIHR5cGUsIGNvZGVjcykpOwotfQotCi1ib29s
IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBp
ZCkKLXsKLSAgICBpZiAoIW1fd2ViTWVkaWFQbGF5ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VSZW1vdmVJZChpZCk7Ci19Ci0K
LVBhc3NSZWZQdHI8VGltZVJhbmdlcz4gV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VC
dWZmZXJlZChjb25zdCBTdHJpbmcmIGlkKQotewotICAgIGlmICghbV93ZWJNZWRpYVBsYXllcikK
LSAgICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwotCi0gICAgV2ViVGltZVJhbmdl
cyB3ZWJSYW5nZXMgPSBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VCdWZmZXJlZChpZCk7Ci0gICAg
UmVmUHRyPFRpbWVSYW5nZXM+IHJhbmdlcyA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViUmFuZ2VzLnNpemUoKTsgKytpKQotICAgICAgICByYW5n
ZXMtPmFkZCh3ZWJSYW5nZXNbaV0uc3RhcnQsIHdlYlJhbmdlc1tpXS5lbmQpOwotICAgIHJldHVy
biByYW5nZXMucmVsZWFzZSgpOwotfQotCi1ib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
c291cmNlQXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBpZiAobV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAg
cmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUFwcGVuZChpZCwgZGF0YSwgbGVuZ3RoKTsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpz
b3VyY2VBYm9ydChjb25zdCBTdHJpbmcmIGlkKQotewotICAgIGlmICghbV93ZWJNZWRpYVBsYXll
cikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXIt
PnNvdXJjZUFib3J0KGlkKTsKLX0KLQotdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNv
dXJjZVNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKLXsKLSAgICBpZiAobV93ZWJNZWRpYVBs
YXllcikKLSAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+c291cmNlU2V0RHVyYXRpb24oZHVyYXRp
b24pOwotfQotCi12b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlRW5kT2ZTdHJl
YW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzIHN0YXR1cykKLXsKLSAg
ICBpZiAobV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+c291cmNl
RW5kT2ZTdHJlYW0oc3RhdGljX2Nhc3Q8V2ViTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVz
PihzdGF0dXMpKTsKLX0KLQotYm9vbCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZVNl
dFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KQotewotICAg
IGlmICghbV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoaWQsIG9mZnNldCk7
Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiBNZWRpYVBsYXllcjo6
TWVkaWFLZXlFeGNlcHRpb24gV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpnZW5lcmF0ZUtleVJl
cXVlc3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXRE
YXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKaW5kZXggM2Y3MGM3MzVj
Y2I2NjhkYmY1ZmZiNTczODVkNzBiNGNmYjRhZTc2MS4uZDE3YjYxMTZmZGZmYjMyZjc5ZDE3OTlh
ZWJmZTBmYmYwZDJiMmEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKQEAgLTk2LDYgKzk2LDkgQEAgcHVibGljOgog
CiAgICAgLy8gTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIG1ldGhvZHM6CiAgICAgdmlydHVh
bCB2b2lkIGxvYWQoY29uc3QgV1RGOjpTdHJpbmcmIHVybCk7CisjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291
cmNlPik7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTG9hZCgpOwogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdDsKQEAgLTE1NywxNyArMTYwLDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBwdXRDdXJyZW50RnJhbWUoV2ViVmlkZW9GcmFtZSopOwogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OkFkZElkU3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcyk7Ci0gICAgdmlydHVhbCBib29sIHNv
dXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OlRpbWVSYW5nZXM+IHNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYpOwotICAg
IHZpcnR1YWwgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlQWJv
cnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZVNldER1cmF0aW9uKGRv
dWJsZSk7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cyk7Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZVNldFRp
bWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcmLCBkb3VibGUgb2Zmc2V0KTsKLSNlbmRpZgotCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0
YUxlbmd0aCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVk
aWFLZXlFeGNlcHRpb24gYWRkS2V5KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCB1bnNp
Z25lZCBjaGFyKiBrZXksIHVuc2lnbmVkIGtleUxlbmd0aCwgY29uc3QgdW5zaWduZWQgY2hhciog
aW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCkgT1ZFUlJJREU7CkBAIC0xODIsNiArMTc0LDcgQEAgcHJvdGVjdGVkOgogICAgIFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbCgpOwogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0RGVsYXllZExvYWQo
KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0ZWQoKTsKICAgICB2b2lkIGxvYWRJbnRlcm5hbCgpOwog
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlPiBjcmVhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXIqKTsKQEAgLTI1OSw2ICsyNTIsMTAgQEAg
cHJpdmF0ZToKIAogICAgIEF1ZGlvU291cmNlUHJvdmlkZXJJbXBsIG1fYXVkaW9Tb3VyY2VQcm92
aWRlcjsKICNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6TWVkaWFTb3VyY2U+IG1fbWVkaWFTb3VyY2U7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3Vy
Y2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI0ZjNhMDFkYjFlMzUxODhmMTk3MDdjY2ZmYTI5ZDgzMDVhMDM0
YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRp
YVNvdXJjZS5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViTWVkaWFTb3VyY2UuaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisjaW5jbHVkZSAi
Li4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oIgorI2luY2x1ZGUg
Ik1lZGlhU291cmNlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZUltcGwuaCIK
KyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViTWVkaWFTb3VyY2UqIFdlYk1lZGlh
U291cmNlOjpnZXRNZWRpYVNvdXJjZUZvclVSTChjb25zdCBXZWJVUkwmIHVybCkKK3sKKyNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQorICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJjZT4gbWVk
aWFTb3VyY2UgPSBXZWJDb3JlOjpNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLmxvb2t1
cE1lZGlhU291cmNlKHVybC5zcGVjKCkudXRmMTYoKSk7CisKKyAgICBpZiAobWVkaWFTb3VyY2Up
CisgICAgICAgIHJldHVybiBuZXcgV2ViTWVkaWFTb3VyY2VJbXBsKG1lZGlhU291cmNlKTsKKyNl
bmRpZgorICAgIHJldHVybiAwOworfQorCitXZWJNZWRpYVNvdXJjZTo6fldlYk1lZGlhU291cmNl
KCkKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TWVkaWFTb3VyY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlh
U291cmNlSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGYzOTlhM2MzNTFiYzg1YmI2MTQ0NzQyNjkyY2Ew
YzhkNWE2Yzk0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk1lZGlhU291cmNlSW1wbC5jcHAKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTb3VyY2VJbXBsLmgiCisKKyNpbmNsdWRlICJNZWRpYVNv
dXJjZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZUNsaWVudC5oIgorCisjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE1lZGlh
U291cmNlUHJpdmF0ZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlIHsK
K3B1YmxpYzoKKyAgICBNZWRpYVNvdXJjZVByaXZhdGVJbXBsKFBhc3NPd25QdHI8V2ViTWVkaWFT
b3VyY2VDbGllbnQ+KTsKKyAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZVByaXZhdGVJbXBsKCkgeyB9
CisKKyAgICAvLyBNZWRpYVNvdXJjZVByaXZhdGUgbWV0aG9kcy4KKyAgICB2aXJ0dWFsIFdlYkNv
cmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6QWRkSWRTdGF0dXMgYWRkSWQoY29uc3QgU3RyaW5nJiBp
ZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlRpbWVSYW5nZXM+IGJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQp
OworICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgdW5zaWdu
ZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWJvcnQo
Y29uc3QgU3RyaW5nJiBpZCk7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kT2ZT
dHJlYW0oV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpFbmRPZlN0cmVhbVN0YXR1cyk7Cisg
ICAgdmlydHVhbCBib29sIHNldFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3Vi
bGUgb2Zmc2V0KTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJNZWRpYVNvdXJj
ZUNsaWVudD4gbV9jbGllbnQ7Cit9OworCitNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpNZWRpYVNv
dXJjZVByaXZhdGVJbXBsKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudD4g
Y2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQoreworfQorCitXZWJDb3JlOjpNZWRpYVNv
dXJjZVByaXZhdGU6OkFkZElkU3RhdHVzIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmFkZElkKGNv
bnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGNvZGVjcykKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6
TWVkaWFTb3VyY2VQcml2YXRlOjpOb3RTdXBwb3J0ZWQ7CisKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRJZFN0YXR1cz4obV9jbGllbnQtPmFk
ZElkKGlkLCB0eXBlLCBjb2RlY3MpKTsKK30KKworYm9vbCBNZWRpYVNvdXJjZVByaXZhdGVJbXBs
OjpyZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2NsaWVudC0+cmVtb3ZlSWQoaWQpOwor
fQorCitQYXNzUmVmUHRyPFdlYkNvcmU6OlRpbWVSYW5nZXM+IE1lZGlhU291cmNlUHJpdmF0ZUlt
cGw6OmJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OlRpbWVSYW5nZXM6OmNyZWF0ZSgpOworCisgICAgV2ViVGlt
ZVJhbmdlcyB3ZWJSYW5nZXMgPSBtX2NsaWVudC0+YnVmZmVyZWQoaWQpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpUaW1lUmFuZ2VzPiByYW5nZXMgPSBXZWJDb3JlOjpUaW1lUmFuZ2VzOjpjcmVhdGUo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYlJhbmdlcy5zaXplKCk7ICsraSkKKyAg
ICAgICAgcmFuZ2VzLT5hZGQod2ViUmFuZ2VzW2ldLnN0YXJ0LCB3ZWJSYW5nZXNbaV0uZW5kKTsK
KyAgICByZXR1cm4gcmFuZ2VzLnJlbGVhc2UoKTsKK30KKworYm9vbCBNZWRpYVNvdXJjZVByaXZh
dGVJbXBsOjphcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiBtX2NsaWVudC0+YXBwZW5kKGlkLCBkYXRhLCBsZW5ndGgp
OworfQorCitib29sIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmFib3J0KGNvbnN0IFN0cmluZyYg
aWQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIG1fY2xpZW50LT5hYm9ydChpZCk7Cit9CisKK2RvdWJsZSBNZWRpYVNvdXJjZVByaXZh
dGVJbXBsOjpkdXJhdGlvbigpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKKyAgICByZXR1cm4gbV9j
bGllbnQtPmR1cmF0aW9uKCk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6c2V0
RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAg
bV9jbGllbnQtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKK30KKwordm9pZCBNZWRpYVNvdXJjZVBy
aXZhdGVJbXBsOjplbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkVuZE9m
U3RyZWFtU3RhdHVzIHN0YXR1cykKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5lbmRPZlN0cmVhbShzdGF0aWNfY2FzdDxXZWJNZWRpYVNvdXJjZUNsaWVudDo6RW5kT2ZT
dHJlYW1TdGF0dXM+KHN0YXR1cykpOworfQorCitib29sIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6
OnNldFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KQorewor
ICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9j
bGllbnQtPnNldFRpbWVzdGFtcE9mZnNldChpZCwgb2Zmc2V0KTsKK30KKworCitXZWJNZWRpYVNv
dXJjZUltcGw6OldlYk1lZGlhU291cmNlSW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291
cmNlPiBtZWRpYVNvdXJjZSkKK3sKKyAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7Cit9
CisKK1dlYk1lZGlhU291cmNlSW1wbDo6fldlYk1lZGlhU291cmNlSW1wbCgpCit7Cit9CisKKwor
dm9pZCBXZWJNZWRpYVNvdXJjZUltcGw6Om9wZW4oV2ViTWVkaWFTb3VyY2VDbGllbnQqIGNsaWVu
dCkKK3sKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICBtX21lZGlhU291cmNlLT5zZXRQcml2YXRl
QW5kT3BlbihhZG9wdFB0cihuZXcgTWVkaWFTb3VyY2VQcml2YXRlSW1wbChhZG9wdFB0cihjbGll
bnQpKSkpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJNZWRpYVNvdXJjZUltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGFiMzFlMmI1ZGJmN2M1ZDdmYmVm
YTI2MWVhZGZlZGNhOWY1ZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
TWVkaWFTb3VyY2VJbXBsX2gKKyNkZWZpbmUgV2ViTWVkaWFTb3VyY2VJbXBsX2gKKworI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUg
IldlYk1lZGlhU291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRp
YVNvdXJjZUltcGwgOiBwdWJsaWMgV2ViTWVkaWFTb3VyY2UgeworcHVibGljOgorICAgIFdlYk1l
ZGlhU291cmNlSW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlPik7CisgICAgdmly
dHVhbCB+V2ViTWVkaWFTb3VyY2VJbXBsKCk7CisKKyAgICAvLyBXZWJNZWRpYVNvdXJjZSBtZXRo
b2RzLgorICAgIHZpcnR1YWwgdm9pZCBvcGVuKFdlYk1lZGlhU291cmNlQ2xpZW50Kik7CisKK3By
aXZhdGU6CisgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlPiBtX21lZGlhU291cmNlOwor
fTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189370</attachid>
            <date>2013-02-20 13:57:35 -0800</date>
            <delta_ts>2013-02-21 12:12:41 -0800</delta_ts>
            <desc>Addressing CR comments</desc>
            <filename>bug-109857-20130220135356.patch</filename>
            <type>text/plain</type>
            <size>65949</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJmNWU0M2MxY2M0NDg2
YWE2NzdmOTE3NTA5ZWU4MGViNjA1ODdjMS4uMGE3OTIyODczZmJlNTJhM2EyZWZiMTBmMTQ5MWJm
OTI5NjA1YTkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEzLTAyLTIwICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZhY3RvciBNZWRp
YVNvdXJjZSBtZXRob2RzIG91dCBvZiBNZWRpYVBsYXllciAmIE1lZGlhUGxheWVyUHJpdmF0ZSBh
bmQgaW50byBhIG5ldyBNZWRpYVNvdXJjZVByaXZhdGUgaW50ZXJmYWNlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHNpbXBsZSByZWZh
Y3RvciB0aGF0IG1vdmVzIE1lZGlhU291cmNlIHJlbGF0ZWQgbWV0aG9kcyBvdXQgb2YgTWVkaWFQ
bGF5ZXIgJiBNZWRpYVBsYXllclByaXZhdGUKKyAgICAgICAgc28gdGhhdCB0aGUgTWVkaWFTb3Vy
Y2UgaW1wbGVtZW50YXRpb24gY2FuIGJlIHVwZGF0ZWQgd2l0aG91dCBmdXJ0aGVyIHBvbGx1dGlu
ZyB0aGVzZSBpbnRlcmZhY2VzLgorICAgICAgICBNZWRpYVNvdXJjZVByaXZhdGUgaXMgdGhlIG5l
dyBXZWJDb3JlIGludGVyZmFjZSB0aGF0IHBvcnRzIG11c3QgaW1wbGVtZW50IHRvIHN1cHBvcnQg
dGhlIE1lZGlhU291cmNlIEFQSS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIHVzZXIgdmlz
aWJsZSBiZWhhdmlvciBoYXMgY2hhbmdlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Ok1lZGlh
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpkdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlOjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjplbmRP
ZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YnVmZmVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNvdXJjZTo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldFRp
bWVzdGFtcE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0
ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpzdG9wKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmg6Cisg
ICAgICAgIChNZWRpYVNvdXJjZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNZWRpYUVsZW1l
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKE51bGxNZWRpYVBsYXllclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TnVsbE1lZGlh
UGxheWVyUHJpdmF0ZTo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjps
b2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTWVkaWFQbGF5ZXJDbGll
bnQpOgorICAgICAgICAoTWVkaWFQbGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6bG9h
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZWRpYVNvdXJjZVByaXZhdGUpOiBD
b250YWlucyB0aGUgTWVkaWFTb3VyY2UgbWV0aG9kcyBleHRyYWN0ZWQgZnJvbSBNZWRpYVBsYXll
ci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6TWVkaWFTb3VyY2VQcml2
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6fk1lZGlhU291cmNl
UHJpdmF0ZSk6CisKIDIwMTMtMDItMjAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVuZGVyTGF5ZXJCYWNraW5nIHNob3VsZCBpbml0aWFsaXplIFRp
bGVkQmFja2luZydzIGlzSW5XaW5kb3cgc3RhdGUgd2l0aCBQYWdlJ3MgaXNJbldpbmRvdywgbm90
IGlzT25zY3JlZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDYzNmUzYTEwYjIyY2Jh
ODk2NDljNDU5ZWFmZmEzMjUxNjAyMmQxZi4uOTEwMTA3YzIzZTM5MzZlMWExZGNlMGRjNjJkNDE2
ZTc0YjdlMjY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAor
MjAxMy0wMi0yMCAgQWFyb24gQ29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBGYWN0b3IgTWVkaWFTb3VyY2UgbWV0aG9kcyBvdXQgb2YgTWVkaWFQbGF5ZXIgJiBNZWRp
YVBsYXllclByaXZhdGUgYW5kIGludG8gYSBuZXcgTWVkaWFTb3VyY2VQcml2YXRlIGludGVyZmFj
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTg1
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgV2ViTWVk
aWFTb3VyY2UgYW5kIFdlYk1lZGlhU291cmNlIGNsaWVudCB3ZXJlIGNyZWF0ZWQgdG8gcmVwbGFj
ZSB0aGUgTWVkaWFTb3VyY2UgbWV0aG9kcyBpbiBXZWJNZWRpYVBsYXllciBhbmQKKyAgICAgICBX
ZWJNZWRpYVBsYXllckNsaWVudC4gVGhpcyBhbGxvd3MgdGhlIE1lZGlhU291cmNlIGltcGxlbWVu
dGF0aW9uIHRvIGJlIHVwZGF0ZWQgd2l0aG91dCBmdXJ0aGVyIHBvbGx1dGluZyB0aGUKKyAgICAg
ICBtZWRpYSBwbGF5ZXIgaW50ZXJmYWNlcy4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAg
ICAgICogcHVibGljL1dlYk1lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJNZWRpYVBsYXllcik6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyOjpsb2FkKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICog
cHVibGljL1dlYk1lZGlhU291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYk1lZGlhU291cmNlKToKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFTb3VyY2VDbGll
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTWVkaWFTb3VyY2VD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudDo6fldlYk1lZGlh
U291cmNlQ2xpZW50KToKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6Cisg
ICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsKTogVGVtcG9yYXJ5IFdlYk1l
ZGlhU291cmNlQ2xpZW50IGltcGxlbWVudGF0aW9uIHRvIGtlZXAgdGhpbmdzIHdvcmtpbmcgdW50
aWwgQ2hyb21pdW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMg
bGFuZC4KKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpXZWJNZWRp
YVNvdXJjZUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVu
dEltcGw6On5XZWJNZWRpYVNvdXJjZUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVNvdXJjZUNsaWVudEltcGw6OmFkZElkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFT
b3VyY2VDbGllbnRJbXBsOjpyZW1vdmVJZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291
cmNlQ2xpZW50SW1wbDo6YnVmZmVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJj
ZUNsaWVudEltcGw6OmFwcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xp
ZW50SW1wbDo6YWJvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudElt
cGw6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBs
OjpzZXREdXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1w
bDo6ZW5kT2ZTdHJlYW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudElt
cGw6OnNldFRpbWVzdGFtcE9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbDo6c291cmNlT3BlbmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjpzb3VyY2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXll
ckNsaWVudEltcGw6OmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVu
dEltcGw6OmxvYWRSZXF1ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OmxvYWRJbnRlcm5hbCk6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbC5oOgorICAgICAgICAoV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViTWVkaWFTb3VyY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlOjpnZXRNZWRpYVNvdXJjZUZvclVSTCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlOjp+V2ViTWVkaWFTb3VyY2UpOgorICAgICAgICAq
IHNyYy9XZWJNZWRpYVNvdXJjZUltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChNZWRpYVNvdXJjZVByaXZhdGVJbXBsKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFT
b3VyY2VQcml2YXRlSW1wbDo6fk1lZGlhU291cmNlUHJpdmF0ZUltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsKToKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6YWRkSWQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpyZW1vdmVJZCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmJ1ZmZlcmVkKToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6YXBwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFT
b3VyY2VQcml2YXRlSW1wbDo6YWJvcnQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVBy
aXZhdGVJbXBsOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0
ZUltcGw6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRl
SW1wbDo6ZW5kT2ZTdHJlYW0pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJ
bXBsOjpzZXRUaW1lc3RhbXBPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJj
ZUltcGw6OldlYk1lZGlhU291cmNlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291
cmNlSW1wbDo6fldlYk1lZGlhU291cmNlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
U291cmNlSW1wbDo6b3Blbik6CisgICAgICAgICogc3JjL1dlYk1lZGlhU291cmNlSW1wbC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJNZWRpYVNvdXJjZUltcGwpOgor
CiAyMDEzLTAyLTIwICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIFJlbW92ZSBpZGJGYWN0b3J5IGZyb20gV2ViS2l0UGxhdGZvcm1TdXBw
b3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuY3BwCmluZGV4IGZkNjQyOTVkNTlkN2FlZWI3NjY5NTgxODVkZWRiMWNhOGYyNzc2N2EuLmU2
YmZlMjQyYWQyZDMyNDY3MzFhNzA2NDgwYThkNmIxMGVjNWJkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC01MCw3ICs1
MCw2IEBAIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2U+IE1lZGlhU291cmNlOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIE1lZGlhU291cmNlOjpNZWRpYVNvdXJjZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRl
eHQsIHRoaXMpCiAgICAgLCBtX3JlYWR5U3RhdGUoY2xvc2VkS2V5d29yZCgpKQotICAgICwgbV9w
bGF5ZXIoMCkKICAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVh
dGUodGhpcykpCiB7CiAgICAgbV9zb3VyY2VCdWZmZXJzID0gU291cmNlQnVmZmVyTGlzdDo6Y3Jl
YXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9hc3luY0V2ZW50UXVldWUuZ2V0KCkpOwpA
QCAtODgsNyArODcsNyBAQCBTb3VyY2VCdWZmZXJMaXN0KiBNZWRpYVNvdXJjZTo6YWN0aXZlU291
cmNlQnVmZmVycygpCiAKIGRvdWJsZSBNZWRpYVNvdXJjZTo6ZHVyYXRpb24oKSBjb25zdAogewot
ICAgIHJldHVybiBtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpID8gc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpIDogbV9wbGF5ZXItPmR1cmF0aW9uKCk7CisgICAg
cmV0dXJuIG1fcmVhZHlTdGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkgPyBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCkgOiBtX3ByaXZhdGUtPmR1cmF0aW9uKCk7CiB9CiAKIHZv
aWQgTWVkaWFTb3VyY2U6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCkBAIC0xMDEsNyArMTAwLDcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb24o
ZG91YmxlIGR1cmF0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3BsYXllci0+c291cmNl
U2V0RHVyYXRpb24oZHVyYXRpb24pOworICAgIG1fcHJpdmF0ZS0+c2V0RHVyYXRpb24oZHVyYXRp
b24pOwogfQogCiBTb3VyY2VCdWZmZXIqIE1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIoY29u
c3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTEyNiw3ICsxMjUsNyBAQCBT
b3VyY2VCdWZmZXIqIE1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgU3RyaW5nJiB0
eXBlLCBFeGNlcHRpb25Db2RlJiBlYwogCiAgICAgLy8gNC4gSWYgdGhlIHJlYWR5U3RhdGUgYXR0
cmlidXRlIGlzIG5vdCBpbiB0aGUgIm9wZW4iIHN0YXRlIHRoZW4gdGhyb3cgYW4KICAgICAvLyBJ
TlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlm
ICghbV9wbGF5ZXIgfHwgbV9yZWFkeVN0YXRlICE9IG9wZW5LZXl3b3JkKCkpIHsKKyAgICBpZiAo
IW1fcHJpdmF0ZSB8fCBtX3JlYWR5U3RhdGUgIT0gb3BlbktleXdvcmQoKSkgewogICAgICAgICBl
YyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNDAs
MjAgKzEzOSwyMCBAQCBTb3VyY2VCdWZmZXIqIE1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIo
Y29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYwogCiAgICAgUmVmUHRyPFNvdXJj
ZUJ1ZmZlcj4gYnVmZmVyID0gU291cmNlQnVmZmVyOjpjcmVhdGUoaWQsIHRoaXMpOwogCi0gICAg
c3dpdGNoIChtX3BsYXllci0+c291cmNlQWRkSWQoYnVmZmVyLT5pZCgpLCBjb250ZW50VHlwZS50
eXBlKCksIGNvZGVjcykpIHsKLSAgICBjYXNlIE1lZGlhUGxheWVyOjpPazoKKyAgICBzd2l0Y2gg
KG1fcHJpdmF0ZS0+YWRkSWQoYnVmZmVyLT5pZCgpLCBjb250ZW50VHlwZS50eXBlKCksIGNvZGVj
cykpIHsKKyAgICBjYXNlIE1lZGlhU291cmNlUHJpdmF0ZTo6T2s6CiAgICAgICAgIC8vIDYuIEFk
ZCB0aGUgbmV3IG9iamVjdCB0byBzb3VyY2VCdWZmZXJzIGFuZCBmaXJlIGEgYWRkc291cmNlYnVm
ZmVyIG9uIHRoYXQgb2JqZWN0LgogICAgICAgICBtX3NvdXJjZUJ1ZmZlcnMtPmFkZChidWZmZXIp
OwogICAgICAgICBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPmFkZChidWZmZXIpOwogICAgICAgICAv
LyA3LiBSZXR1cm4gdGhlIG5ldyBvYmplY3QgdG8gdGhlIGNhbGxlci4KICAgICAgICAgcmV0dXJu
IGJ1ZmZlci5nZXQoKTsKLSAgICBjYXNlIE1lZGlhUGxheWVyOjpOb3RTdXBwb3J0ZWQ6CisgICAg
Y2FzZSBNZWRpYVNvdXJjZVByaXZhdGU6Ok5vdFN1cHBvcnRlZDoKICAgICAgICAgLy8gMiAoY29u
dCkuIElmIHR5cGUgY29udGFpbnMgYSBNSU1FIHR5cGUgLi4uIHRoYXQgaXMgbm90IHN1cHBvcnRl
ZCB3aXRoIHRoZSB0eXBlcyAKICAgICAgICAgLy8gc3BlY2lmaWVkIGZvciB0aGUgb3RoZXIgU291
cmNlQnVmZmVyIG9iamVjdHMgaW4gc291cmNlQnVmZmVycywgdGhlbiB0aHJvdwogICAgICAgICAv
LyBhIE5PVF9TVVBQT1JURURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAg
ICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybiAwOwotICAgIGNh
c2UgTWVkaWFQbGF5ZXI6OlJlYWNoZWRJZExpbWl0OgorICAgIGNhc2UgTWVkaWFTb3VyY2VQcml2
YXRlOjpSZWFjaGVkSWRMaW1pdDoKICAgICAgICAgLy8gMyAoY29udCkuIElmIHRoZSB1c2VyIGFn
ZW50IGNhbid0IGhhbmRsZSBhbnkgbW9yZSBTb3VyY2VCdWZmZXIgb2JqZWN0cyB0aGVuIHRocm93
IAogICAgICAgICAvLyBhIFFVT1RBX0VYQ0VFREVEX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRo
ZXNlIHN0ZXBzLgogICAgICAgICBlYyA9IFFVT1RBX0VYQ0VFREVEX0VSUjsKQEAgLTE3Niw3ICsx
NzUsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpyZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVy
KiBidWZmZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgLy8gMi4gSWYgc291cmNlQnVmZmVy
cyBpcyBlbXB0eSB0aGVuIHRocm93IGFuIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBhbmQK
ICAgICAvLyBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoIW1fcGxheWVyIHx8ICFtX3NvdXJj
ZUJ1ZmZlcnMtPmxlbmd0aCgpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgIW1fc291cmNlQnVm
ZmVycy0+bGVuZ3RoKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTE5Miw3ICsxOTEsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpy
ZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyKiBidWZmZXIsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogCiAgICAgLy8gNy4gRGVzdHJveSBhbGwgcmVzb3VyY2VzIGZvciBzb3VyY2VCdWZmZXIuCiAg
ICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5yZW1vdmUoYnVmZmVyKTsKLSAgICBtX3BsYXllci0+
c291cmNlUmVtb3ZlSWQoYnVmZmVyLT5pZCgpKTsKKyAgICBtX3ByaXZhdGUtPnJlbW92ZUlkKGJ1
ZmZlci0+aWQoKSk7CiAKICAgICAvLyA0LiBSZW1vdmUgdHJhY2sgaW5mb3JtYXRpb24gZnJvbSBh
dWRpb1RyYWNrcywgdmlkZW9UcmFja3MsIGFuZCB0ZXh0VHJhY2tzIGZvciBhbGwgdHJhY2tzIAog
ICAgIC8vIGFzc29jaWF0ZWQgd2l0aCBzb3VyY2VCdWZmZXIgYW5kIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQgY2hhbmdlIG9uIHRoZSBtb2RpZmllZCBsaXN0cy4KQEAgLTIyMCw3ICsyMTksNyBA
QCB2b2lkIE1lZGlhU291cmNlOjpzZXRSZWFkeVN0YXRlKGNvbnN0IFN0cmluZyYgc3RhdGUpCiAg
ICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkpIHsKICAgICAgICAgbV9zb3Vy
Y2VCdWZmZXJzLT5jbGVhcigpOwogICAgICAgICBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPmNsZWFy
KCk7Ci0gICAgICAgIG1fcGxheWVyID0gMDsKKyAgICAgICAgbV9wcml2YXRlLmNsZWFyKCk7CiAg
ICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHNvdXJjZWNsb3NlRXZlbnQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQxLDE5ICsyNDAsMTkgQEAgdm9pZCBNZWRp
YVNvdXJjZTo6ZW5kT2ZTdHJlYW0oY29uc3QgU3RyaW5nJiBlcnJvciwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgLy8gMy4xIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxl
L3RpcC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjZG9tLWVuZG9mc3RyZWFtCiAgICAg
Ly8gMS4gSWYgdGhlIHJlYWR5U3RhdGUgYXR0cmlidXRlIGlzIG5vdCBpbiB0aGUgIm9wZW4iIHN0
YXRlIHRoZW4gdGhyb3cgYW4KICAgICAvLyBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICghbV9wbGF5ZXIgfHwgbV9yZWFkeVN0YXRlICE9
IG9wZW5LZXl3b3JkKCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZSB8fCBtX3JlYWR5U3RhdGUgIT0g
b3BlbktleXdvcmQoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzIGVv
c1N0YXR1cyA9IE1lZGlhUGxheWVyOjpFb3NOb0Vycm9yOworICAgIE1lZGlhU291cmNlUHJpdmF0
ZTo6RW5kT2ZTdHJlYW1TdGF0dXMgZW9zU3RhdHVzID0gTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NO
b0Vycm9yOwogCiAgICAgaWYgKGVycm9yLmlzTnVsbCgpIHx8IGVycm9yLmlzRW1wdHkoKSkKLSAg
ICAgICAgZW9zU3RhdHVzID0gTWVkaWFQbGF5ZXI6OkVvc05vRXJyb3I7CisgICAgICAgIGVvc1N0
YXR1cyA9IE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zTm9FcnJvcjsKICAgICBlbHNlIGlmIChlcnJv
ciA9PSAibmV0d29yayIpCi0gICAgICAgIGVvc1N0YXR1cyA9IE1lZGlhUGxheWVyOjpFb3NOZXR3
b3JrRXJyb3I7CisgICAgICAgIGVvc1N0YXR1cyA9IE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zTmV0
d29ya0Vycm9yOwogICAgIGVsc2UgaWYgKGVycm9yID09ICJkZWNvZGUiKQotICAgICAgICBlb3NT
dGF0dXMgPSBNZWRpYVBsYXllcjo6RW9zRGVjb2RlRXJyb3I7CisgICAgICAgIGVvc1N0YXR1cyA9
IE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zRGVjb2RlRXJyb3I7CiAgICAgZWxzZSB7CiAgICAgICAg
IGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm47CkBAIC0yNjEsMTcgKzI2
MCwxNyBAQCB2b2lkIE1lZGlhU291cmNlOjplbmRPZlN0cmVhbShjb25zdCBTdHJpbmcmIGVycm9y
LCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAgIC8vIDIuIENoYW5nZSB0aGUgcmVhZHlTdGF0ZSBh
dHRyaWJ1dGUgdmFsdWUgdG8gImVuZGVkIi4KICAgICBzZXRSZWFkeVN0YXRlKGVuZGVkS2V5d29y
ZCgpKTsKLSAgICBtX3BsYXllci0+c291cmNlRW5kT2ZTdHJlYW0oZW9zU3RhdHVzKTsKKyAgICBt
X3ByaXZhdGUtPmVuZE9mU3RyZWFtKGVvc1N0YXR1cyk7CiB9CiAKIFBhc3NSZWZQdHI8VGltZVJh
bmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogewotICAgIGlmICghbV9wbGF5ZXIgfHwgbV9yZWFkeVN0YXRlID09IGNs
b3NlZEtleXdvcmQoKSkgeworICAgIGlmICghbV9wcml2YXRlIHx8IG1fcmVhZHlTdGF0ZSA9PSBj
bG9zZWRLZXl3b3JkKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIG1fcGxheWVyLT5zb3VyY2VCdWZmZXJl
ZChpZCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YnVmZmVyZWQoaWQpOwogfQogCiB2b2lkIE1l
ZGlhU291cmNlOjphcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxVaW50OEFycmF5
PiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTI4MSw3ICsyODAsNyBAQCB2b2lkIE1lZGlh
U291cmNlOjphcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBk
YXRhLCBFeGNlcHRpbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFtX3BsYXll
ciB8fCBtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CisgICAgaWYgKCFtX3ByaXZh
dGUgfHwgbV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSkgewogICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjg5LDcgKzI4OCw3
IEBAIHZvaWQgTWVkaWFTb3VyY2U6OmFwcGVuZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRy
PFVpbnQ4QXJyYXk+IGRhdGEsIEV4Y2VwdGlvCiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBlbmRl
ZEtleXdvcmQoKSkKICAgICAgICAgc2V0UmVhZHlTdGF0ZShvcGVuS2V5d29yZCgpKTsKIAotICAg
IGlmICghbV9wbGF5ZXItPnNvdXJjZUFwcGVuZChpZCwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5sZW5n
dGgoKSkpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZS0+YXBwZW5kKGlkLCBkYXRhLT5kYXRhKCksIGRh
dGEtPmxlbmd0aCgpKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0yOTcsMjkgKzI5NiwzNyBAQCB2b2lkIE1lZGlhU291cmNlOjphcHBlbmQo
Y29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBkYXRhLCBFeGNlcHRpbwog
CiB2b2lkIE1lZGlhU291cmNlOjphYm9ydChjb25zdCBTdHJpbmcmIGlkLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fcmVhZHlTdGF0ZSAhPSBvcGVuS2V5d29y
ZCgpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFkeVN0YXRlICE9IG9wZW5LZXl3b3Jk
KCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmICghbV9wbGF5ZXItPnNvdXJjZUFib3J0KGlkKSkKKyAgICBpZiAoIW1f
cHJpdmF0ZS0+YWJvcnQoaWQpKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAog
Ym9vbCBNZWRpYVNvdXJjZTo6c2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYgaWQsIGRv
dWJsZSBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghbV9wbGF5ZXIgfHwg
bV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSkgeworICAgIGlmICghbV9wcml2YXRlIHx8
IG1fcmVhZHlTdGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghbV9w
bGF5ZXItPnNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChpZCwgb2Zmc2V0KSkgeworICAgIGlmICgh
bV9wcml2YXRlLT5zZXRUaW1lc3RhbXBPZmZzZXQoaWQsIG9mZnNldCkpIHsKICAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBNZWRpYVNvdXJjZTo6c2V0UHJpdmF0ZUFuZE9wZW4oUGFz
c093blB0cjxNZWRpYVNvdXJjZVByaXZhdGU+IG1lZGlhU291cmNlUHJpdmF0ZSkKK3sKKyAgICBB
U1NFUlQobWVkaWFTb3VyY2VQcml2YXRlKTsKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZSk7CisgICAg
bV9wcml2YXRlID0gbWVkaWFTb3VyY2VQcml2YXRlOworICAgIHNldFJlYWR5U3RhdGUob3Blbktl
eXdvcmQoKSk7Cit9CisKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2U6OmludGVyZmFj
ZU5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTWVk
aWFTb3VyY2U7CkBAIC0zMzIsMTMgKzMzOSwxMyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBN
ZWRpYVNvdXJjZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiAKIGJvb2wgTWVkaWFT
b3VyY2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGxheWVy
IHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCkKKyAgICByZXR1cm4gbV9w
cml2YXRlIHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCkKICAgICAgICAg
fHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0KIAogdm9pZCBNZWRp
YVNvdXJjZTo6c3RvcCgpCiB7Ci0gICAgbV9wbGF5ZXIgPSAwOworICAgIG1fcHJpdmF0ZS5jbGVh
cigpOwogICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5jYW5jZWxBbGxFdmVudHMoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4
IDFkM2YzNDc2YjY3ODFmM2M5ZjVjZTRmYTQyYWVjN2NlMDUxMGRjYmMuLjk1MzU4ZDdjYjlkMTdj
NDZhYjBhOTRlZjc1MmI3YjVjZjFkNzMyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCi0j
aW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVByaXZhdGUuaCIK
ICNpbmNsdWRlICJTb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJMaXN0Lmgi
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBlbmRPZlN0cmVhbShjb25zdCBTdHJpbmcmIGVycm9yLCBFeGNlcHRpb25Db2Rl
Jik7CiAKLSAgICB2b2lkIHNldE1lZGlhUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgbV9w
bGF5ZXIgPSBwbGF5ZXI7IH0KKyAgICB2b2lkIHNldFByaXZhdGVBbmRPcGVuKFBhc3NPd25QdHI8
TWVkaWFTb3VyY2VQcml2YXRlPik7CiAKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZl
cmVkKGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB2b2lkIGFw
cGVuZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGRhdGEsIEV4Y2Vw
dGlvbkNvZGUmKTsKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICBFdmVudFRhcmdldERh
dGEgbV9ldmVudFRhcmdldERhdGE7CiAKICAgICBTdHJpbmcgbV9yZWFkeVN0YXRlOwotICAgIE1l
ZGlhUGxheWVyKiBtX3BsYXllcjsKKyAgICBPd25QdHI8TWVkaWFTb3VyY2VQcml2YXRlPiBtX3By
aXZhdGU7CiAKICAgICBSZWZQdHI8U291cmNlQnVmZmVyTGlzdD4gbV9zb3VyY2VCdWZmZXJzOwog
ICAgIFJlZlB0cjxTb3VyY2VCdWZmZXJMaXN0PiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAyYmM0ZTZiMTQxZTVhMTU2
Zjg1MWQ5Y2VlZjkxYWJiYzEyYTBjNDlmLi5iN2FhMzM3MGYzOTc3ZWI1MmM3MmU2NWE0YmZmYTY2
ODY5OWJiNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTMwOCwxMSArMzA4LDYgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KICAgICAgICAgYWRkQmVo
YXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkUmVzdHJpY3Rpb24pOwog
ICAgIH0KIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgbV9tZWRpYVNvdXJjZVVSTC5z
ZXRQcm90b2NvbChtZWRpYVNvdXJjZUJsb2JQcm90b2NvbCk7Ci0gICAgbV9tZWRpYVNvdXJjZVVS
TC5zZXRQYXRoKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7Ci0jZW5kaWYKLQogICAgIHNl
dEhhc0N1c3RvbVN0eWxlQ2FsbGJhY2tzKCk7CiAgICAgYWRkRWxlbWVudFRvRG9jdW1lbnRNYXAo
dGhpcywgZG9jdW1lbnQpOwogCkBAIC05ODcsMTkgKzk4Miw2IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bG9hZFJlc291cmNlKGNvbnN0IEtVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBj
b250ZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0jaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKLSAgICBBU1NFUlQoIW1fbWVkaWFTb3VyY2UpOwotCi0gICAgaWYgKHVybC5wcm90b2Nv
bElzKG1lZGlhU291cmNlQmxvYlByb3RvY29sKSkgewotICAgICAgICBtX21lZGlhU291cmNlID0g
TWVkaWFTb3VyY2VSZWdpc3RyeTo6cmVnaXN0cnkoKS5sb29rdXBNZWRpYVNvdXJjZSh1cmwuc3Ry
aW5nKCkpOwotCi0gICAgICAgIGlmIChtX21lZGlhU291cmNlKSB7Ci0gICAgICAgICAgICBtX21l
ZGlhU291cmNlLT5zZXRNZWRpYVBsYXllcihtX3BsYXllci5nZXQoKSk7Ci0gICAgICAgICAgICBt
X21lZGlhU291cmNlVVJMID0gdXJsOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KICAgICAv
LyBUaGUgcmVzb3VyY2UgZmV0Y2ggYWxnb3JpdGhtIAogICAgIG1fbmV0d29ya1N0YXRlID0gTkVU
V09SS19MT0FESU5HOwogCkBAIC0xMDU0LDYgKzEwMzYsMTcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojpsb2FkUmVzb3VyY2UoY29uc3QgS1VSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNv
bnRlbnQKICAgICAgICAgbV9tdXRlZCA9IHRydWU7CiAgICAgdXBkYXRlVm9sdW1lKCk7CiAKKyNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIEFTU0VSVCghbV9tZWRpYVNvdXJjZSk7CisKKyAg
ICBpZiAodXJsLnByb3RvY29sSXMobWVkaWFTb3VyY2VCbG9iUHJvdG9jb2wpKQorICAgICAgICBt
X21lZGlhU291cmNlID0gTWVkaWFTb3VyY2VSZWdpc3RyeTo6cmVnaXN0cnkoKS5sb29rdXBNZWRp
YVNvdXJjZSh1cmwuc3RyaW5nKCkpOworCisgICAgaWYgKG1fbWVkaWFTb3VyY2UpIHsKKyAgICAg
ICAgaWYgKCFtX3BsYXllci0+bG9hZCh1cmwsIG1fbWVkaWFTb3VyY2UpKQorICAgICAgICAgICAg
bWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CisgICAgfSBlbHNl
CisjZW5kaWYKICAgICBpZiAoIW1fcGxheWVyLT5sb2FkKHVybCwgY29udGVudFR5cGUsIGtleVN5
c3RlbSkpCiAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJy
b3IpOwogCkBAIC0xODcyLDIyICsxODY1LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRS
ZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogI2VuZGlmCiB9CiAKLSNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clNvdXJjZU9wZW5lZCgpCi17Ci0gICAgYmVnaW5Qcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFj
aygpOwotCi0gICAgc2V0U291cmNlU3RhdGUoTWVkaWFTb3VyY2U6Om9wZW5LZXl3b3JkKCkpOwot
Ci0gICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKLX0KLQotU3RyaW5nIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU291cmNlVVJMKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9tZWRpYVNvdXJjZVVSTC5zdHJpbmcoKTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlBZGRl
ZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCkKIHsKQEAgLTQ0OTQsMTMgKzQ0NzEsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpjcmVhdGVNZWRpYVBsYXllcigpCiAgICAgICAgIG1fYXVkaW9Tb3VyY2VOb2RlLT5sb2NrKCk7
CiAjZW5kaWYKIAotICAgIG1fcGxheWVyID0gTWVkaWFQbGF5ZXI6OmNyZWF0ZSh0aGlzKTsKLQog
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UpCi0gICAgICAg
IG1fbWVkaWFTb3VyY2UtPnNldE1lZGlhUGxheWVyKG1fcGxheWVyLmdldCgpKTsKKyAgICAgICAg
bV9tZWRpYVNvdXJjZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVNvdXJjZTo6Y2xvc2VkS2V5d29yZCgp
KTsKICNlbmRpZgogCisgICAgbV9wbGF5ZXIgPSBNZWRpYVBsYXllcjo6Y3JlYXRlKHRoaXMpOwor
CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBpZiAobV9hdWRpb1NvdXJjZU5vZGUpIHsKICAg
ICAgICAgLy8gV2hlbiBjcmVhdGluZyB0aGUgcGxheWVyLCBtYWtlIHN1cmUgaXRzIEF1ZGlvU291
cmNlUHJvdmlkZXIga25vd3MgYWJvdXQgdGhlIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS4K
QEAgLTQ4NDEsNyArNDgxOCw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uCiAgICAgaW5mby5h
ZGRNZW1iZXIobV9wcm94eVdpZGdldCwgInByb3h5V2lkZ2V0Iik7CiAjZW5kaWYKICNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQotICAgIGluZm8uYWRkTWVtYmVyKG1fbWVkaWFTb3VyY2VVUkwsICJt
ZWRpYVNvdXJjZVVSTCIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fbWVkaWFTb3VyY2UsICJtZWRp
YVNvdXJjZSIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBmYTFlM2YyODRlZTE5NmJmYjIxYzIyYTRmOGY3
MTcyZTQzMTYwZDQ1Li4zNzRkZjJiODU2NTg2MmYzNTM1MDdkZjQ5MjgzM2Q0MzIwOGE1MGE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNDQyLDExICs0NDIsNiBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2
YWlsYWJsZShNZWRpYVBsYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckNoYXJh
Y3RlcmlzdGljQ2hhbmdlZChNZWRpYVBsYXllciopOwogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJTb3VyY2VPcGVuZWQoKTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBtZWRpYVBsYXllclNvdXJjZVVSTCgpIGNvbnN0OwotI2VuZGlmCi0KICNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleUFk
ZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlFcnJv
cihNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgTWVkaWFQbGF5ZXJDbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlLCB1bnNpZ25lZCBz
aG9ydCBzeXN0ZW1Db2RlKSBPVkVSUklERTsKQEAgLTYzOSw3ICs2MzQsNiBAQCBwcml2YXRlOgog
ICAgIGludCBtX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrOwogCiAjaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKLSAgICBLVVJMIG1fbWVkaWFTb3VyY2VVUkw7CiAgICAgUmVmUHRyPE1lZGlh
U291cmNlPiBtX21lZGlhU291cmNlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCAwYjI1NDRmOTIxNjE4ZjJlMTMx
MDU4OWIwOTZhNjFmOGIwNWY2OTkxLi4zNmUyMGY1MTM0MTlhYjA2ZjhjZDIxNjBhNTcxNTk2Nzc3
ODRkN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1By
aXZhdGUuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyNpbmNsdWRlICJN
ZWRpYVNvdXJjZS5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRdEds
b2JhbD4KICNlbmRpZgpAQCAtOTEsNiArOTUsOSBAQCBwdWJsaWM6CiAgICAgTnVsbE1lZGlhUGxh
eWVyUHJpdmF0ZShNZWRpYVBsYXllciopIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGxvYWQoY29u
c3QgU3RyaW5nJikgeyB9CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2aXJ0dWFsIHZv
aWQgbG9hZChjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPE1lZGlhU291cmNlPikgeyB9CisjZW5k
aWYKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTG9hZCgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVUb1BsYXkoKSB7IH0KQEAgLTE1MSwxNyArMTU4LDYgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICB2aXJ0dWFsIE1lZGlhUGxheWVy
OjpBZGRJZFN0YXR1cyBzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpIHsgcmV0dXJuIE1lZGlhUGxheWVy
OjpOb3RTdXBwb3J0ZWQ7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc291
cmNlQnVmZmVyZWQoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJikgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBwZW5kKGNvbnN0IFN0cmluZyYs
IGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgc291cmNlQWJvcnQoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc291cmNlU2V0RHVyYXRpb24oZG91YmxlKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0oTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVz
KSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0
cmluZyYsIGRvdWJsZSkgeyByZXR1cm4gZmFsc2U7IH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlv
biBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgY29uc3QgdW5zaWduZWQgY2hhcios
IHVuc2lnbmVkKSBPVkVSUklERSB7IHJldHVybiBNZWRpYVBsYXllcjo6SW52YWxpZFBsYXllclN0
YXRlOyB9CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gYWRkS2V5
KGNvbnN0IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCwgY29uc3QgdW5z
aWduZWQgY2hhciosIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERSB7IHJldHVybiBN
ZWRpYVBsYXllcjo6SW52YWxpZFBsYXllclN0YXRlOyB9CkBAIC0zNzIsNiArMzY4LDEwIEBAIGJv
b2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYg
Y29udGVudFR5cGUsIGNvbnN0IFN0CiAgICAgbV9rZXlTeXN0ZW0gPSBrZXlTeXN0ZW0ubG93ZXIo
KTsKICAgICBtX2NvbnRlbnRNSU1FVHlwZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiA9IGZhbHNl
OwogCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICBtX21lZGlhU291cmNlID0gMDsKKyNl
bmRpZgorCiAgICAgLy8gSWYgdGhlIE1JTUUgdHlwZSBpcyBtaXNzaW5nIG9yIGlzIG5vdCBtZWFu
aW5nZnVsLCB0cnkgdG8gZmlndXJlIGl0IG91dCBmcm9tIHRoZSBVUkwuCiAgICAgaWYgKG1fY29u
dGVudE1JTUVUeXBlLmlzRW1wdHkoKSB8fCBtX2NvbnRlbnRNSU1FVHlwZSA9PSBhcHBsaWNhdGlv
bk9jdGV0U3RyZWFtKCkgfHwgbV9jb250ZW50TUlNRVR5cGUgPT0gdGV4dFBsYWluKCkpIHsKICAg
ICAgICAgaWYgKG1fdXJsLnByb3RvY29sSXNEYXRhKCkpCkBAIC0zOTQsNiArMzk0LDIwIEBAIGJv
b2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYg
Y29udGVudFR5cGUsIGNvbnN0IFN0CiAgICAgcmV0dXJuIG1fY3VycmVudE1lZGlhRW5naW5lOwog
fQogCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKK2Jvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29u
c3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRyPE1lZGlhU291cmNlPiBtZWRpYVNvdXJjZSkKK3sKKyAg
ICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7CisgICAgbV9jb250ZW50TUlNRVR5cGUgPSAi
IjsKKyAgICBtX2NvbnRlbnRUeXBlQ29kZWNzID0gIiI7CisgICAgbV91cmwgPSB1cmw7CisgICAg
bV9rZXlTeXN0ZW0gPSAiIjsKKyAgICBtX2NvbnRlbnRNSU1FVHlwZVdhc0luZmVycmVkRnJvbUV4
dGVuc2lvbiA9IGZhbHNlOworICAgIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKDApOworICAgIHJl
dHVybiBtX2N1cnJlbnRNZWRpYUVuZ2luZTsKK30KKyNlbmRpZgorCiB2b2lkIE1lZGlhUGxheWVy
Ojpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiB7
CiAgICAgTWVkaWFQbGF5ZXJGYWN0b3J5KiBlbmdpbmUgPSAwOwpAQCAtNDI1LDkgKzQzOSwxNCBA
QCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShNZWRpYVBsYXllckZh
Y3RvcnkqIGN1cnJlbnQpCiAgICAgICAgICAgICBtX3ByaXZhdGUtPnByZXBhcmVGb3JSZW5kZXJp
bmcoKTsKICAgICB9CiAKLSAgICBpZiAobV9wcml2YXRlKQorICAgIGlmIChtX3ByaXZhdGUpIHsK
KyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgICAgICBpZiAobV9tZWRpYVNvdXJjZSkKKyAg
ICAgICAgICAgIG1fcHJpdmF0ZS0+bG9hZChtX3VybC5zdHJpbmcoKSwgbV9tZWRpYVNvdXJjZSk7
CisgICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgICBtX3ByaXZhdGUtPmxvYWQobV91cmwuc3Ry
aW5nKCkpOwotICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAgICAgICAgIG1fcHJpdmF0ZSA9IGNy
ZWF0ZU51bGxNZWRpYVBsYXllcih0aGlzKTsKICAgICAgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGll
bnQpIHsKICAgICAgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRW5naW5l
VXBkYXRlZCh0aGlzKTsKQEAgLTQ3Nyw0OSArNDk2LDYgQEAgdm9pZCBNZWRpYVBsYXllcjo6cGF1
c2UoKQogICAgIG1fcHJpdmF0ZS0+cGF1c2UoKTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCi0KLU1lZGlhUGxheWVyOjpBZGRJZFN0YXR1cyBNZWRpYVBsYXllcjo6c291cmNlQWRkSWQo
Y29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgY29kZWNzKQotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZUFkZElkKGlkLCB0eXBl
LCBjb2RlY3MpOwotfQotCi1QYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyOjpzb3Vy
Y2VCdWZmZXJlZChjb25zdCBTdHJpbmcmIGlkKQotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNv
dXJjZUJ1ZmZlcmVkKGlkKTsKLX0KLQotYm9vbCBNZWRpYVBsYXllcjo6c291cmNlUmVtb3ZlSWQo
Y29uc3QgU3RyaW5nJiBpZCkKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VSZW1vdmVJ
ZChpZCk7Ci19Ci0KLWJvb2wgTWVkaWFQbGF5ZXI6OnNvdXJjZUFwcGVuZChjb25zdCBTdHJpbmcm
IGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAg
cmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlQXBwZW5kKGlkLCBkYXRhLCBsZW5ndGgpOwotfQotCi1i
b29sIE1lZGlhUGxheWVyOjpzb3VyY2VBYm9ydChjb25zdCBTdHJpbmcmIGlkKQotewotICAgIHJl
dHVybiBtX3ByaXZhdGUtPnNvdXJjZUFib3J0KGlkKTsKLX0KLQotdm9pZCBNZWRpYVBsYXllcjo6
c291cmNlU2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQotewotICAgIG1fcHJpdmF0ZS0+c291
cmNlU2V0RHVyYXRpb24oZHVyYXRpb24pOwotfQotCi12b2lkIE1lZGlhUGxheWVyOjpzb3VyY2VF
bmRPZlN0cmVhbShNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMgc3RhdHVzKQotewotICAg
IHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZUVuZE9mU3RyZWFtKHN0YXR1cyk7Ci19Ci0KLWJvb2wg
TWVkaWFQbGF5ZXI6OnNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBk
b3VibGUgb2Zmc2V0KQotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZVNldFRpbWVzdGFt
cE9mZnNldChpZCwgb2Zmc2V0KTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBNZWRpYVBsYXllcjo6Z2VuZXJh
dGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCB1bnNpZ25lZCBjaGFy
KiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgpCiB7CkBAIC05NDcsMjEgKzkyMyw2
IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCBwcml2YXRl
QnJvd3NpbmdNb2RlKQogICAgIG1fcHJpdmF0ZS0+c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShtX3By
aXZhdGVCcm93c2luZyk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotdm9pZCBNZWRp
YVBsYXllcjo6c291cmNlT3BlbmVkKCkKLXsKLSAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkK
LSAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJTb3VyY2VPcGVuZWQoKTsK
LX0KLQotU3RyaW5nIE1lZGlhUGxheWVyOjpzb3VyY2VVUkwoKSBjb25zdAotewotICAgIGlmICht
X21lZGlhUGxheWVyQ2xpZW50KQotICAgICAgICByZXR1cm4gbV9tZWRpYVBsYXllckNsaWVudC0+
bWVkaWFQbGF5ZXJTb3VyY2VVUkwoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0jZW5kaWYK
LQogLy8gQ2xpZW50IGNhbGxiYWNrcy4KIHZvaWQgTWVkaWFQbGF5ZXI6Om5ldHdvcmtTdGF0ZUNo
YW5nZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKaW5kZXggNjNjZTA5Zjc5Yjg2ZjRiYjA4MGY5YTc5MzYyOTgxNDc3NmVhNzgxNy4uMTIz
MmE0ZDk0OWIwOTc4MDViZmFmYzI1ODFhODM0NjE1MmNhMGQ1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC02MSw3ICs2MSw5IEBAIGNs
YXNzIEF1ZGlvU291cmNlUHJvdmlkZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEdTdHJlYW1l
ckdXb3JsZDsKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTsKKyNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQogY2xhc3MgTWVkaWFTb3VyY2U7CisjZW5kaWYKIGNsYXNzIFRleHRUcmFj
a1JlcHJlc2VudGF0aW9uOwogCiAvLyBTdHJ1Y3R1cmUgdGhhdCB3aWxsIGhvbGQgZXZlcnkgbmF0
aXZlCkBAIC0xODAsMTEgKzE4Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2
aWNlQWRhcHRlciogbWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVkaWFQ
bGF5ZXIqKSBjb25zdCB7IHJldHVybiAwOyB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyU291cmNlT3BlbmVkKCkgeyB9Ci0g
ICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJTb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiAi
eC1tZWRpYS1zb3VyY2UtdW5zdXBwb3J0ZWQ6IjsgfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQogICAgIGVudW0gTWVkaWFLZXlFcnJvckNvZGUgeyBVbmtub3duRXJyb3Ig
PSAxLCBDbGllbnRFcnJvciwgU2VydmljZUVycm9yLCBPdXRwdXRFcnJvciwgSGFyZHdhcmVDaGFu
Z2VFcnJvciwgRG9tYWluRXJyb3IgfTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlB
ZGRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYgLyoga2V5U3lzdGVtICovLCBjb25zdCBT
dHJpbmcmIC8qIHNlc3Npb25JZCAqLykgeyB9CkBAIC0yNzEsNiArMjY4LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKTsKIAogICAgIGJvb2wgbG9hZChj
b25zdCBLVVJMJiwgY29uc3QgQ29udGVudFR5cGUmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7
CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICBib29sIGxvYWQoY29uc3QgS1VSTCYsIFBh
c3NSZWZQdHI8TWVkaWFTb3VyY2U+KTsKKyNlbmRpZgogICAgIHZvaWQgY2FuY2VsTG9hZCgpOwog
CiAgICAgYm9vbCB2aXNpYmxlKCkgY29uc3Q7CkBAIC0yODAsMTkgKzI4MCw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBsYXkoKTsKICAgICB2b2lkIHBhdXNlKCk7ICAgIAogCi0jaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKLSAgICBlbnVtIEFkZElkU3RhdHVzIHsgT2ssIE5vdFN1cHBvcnRlZCwgUmVh
Y2hlZElkTGltaXQgfTsKLSAgICBBZGRJZFN0YXR1cyBzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcm
IGlkLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpOwot
ICAgIGJvb2wgc291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCk7Ci0gICAgUGFzc1JlZlB0
cjxUaW1lUmFuZ2VzPiBzb3VyY2VCdWZmZXJlZChjb25zdCBTdHJpbmcmIGlkKTsKLSAgICBib29s
IHNvdXJjZUFwcGVuZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZvaWQgc291cmNlU2V0RHVyYXRpb24oZG91YmxlKTsK
LSAgICBib29sIHNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYgaWQpOwotICAgIGVudW0gRW5kT2ZT
dHJlYW1TdGF0dXMgeyBFb3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0RlY29kZUVycm9y
IH07Ci0gICAgdm9pZCBzb3VyY2VFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyk7Ci0gICAg
Ym9vbCBzb3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIG9m
ZnNldCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgLy8gUmVw
cmVzZW50cyBzeW5jaHJvbm91cyBleGNlcHRpb25zIHRoYXQgY2FuIGJlIHRocm93biBmcm9tIHRo
ZSBFbmNyeXB0ZWQgTWVkaWEgbWV0aG9kcy4KICAgICAvLyBUaGlzIGlzIGRpZmZlcmVudCBmcm9t
IHRoZSBhc3luY2hyb25vdXMgTWVkaWFLZXlFcnJvci4KQEAgLTQyMiwxMSArNDA5LDYgQEAgcHVi
bGljOgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKTsKICNl
bmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICB2b2lkIHNvdXJjZU9wZW5lZCgp
OwotICAgIFN0cmluZyBzb3VyY2VVUkwoKSBjb25zdDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKICAgICB2b2lkIGtleUFkZGVkKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAgICAgdm9pZCBrZXlFcnJvcihjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50
OjpNZWRpYUtleUVycm9yQ29kZSwgdW5zaWduZWQgc2hvcnQgc3lzdGVtQ29kZSk7CkBAIC00ODQs
NiArNDY2LDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8p
CiAgICAgV2ViTWVkaWFQbGF5ZXJQcm94eSogbV9wbGF5ZXJQcm94eTsgICAgLy8gbm90IG93bmVk
IG9yIHVzZWQsIHBhc3NlZCB0byBtX3ByaXZhdGUKICNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKKyAgICBSZWZQdHI8TWVkaWFTb3VyY2U+IG1fbWVkaWFTb3VyY2U7CisjZW5kaWYK
IH07CiAKIHR5cGVkZWYgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+ICgq
Q3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIpKE1lZGlhUGxheWVyKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDVj
NjY3NGQyZDNhNjM4Y2EzMDYxZDNmOTIyOWFhYWRmMjJhYTc4NDAuLmQ5OTVmZTBjMTYxOGMxNDlm
YjkwNjViYzdkZDE3OTNkNDMwZTI5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC00NCw2ICs0NCw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UoKSB7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgdXJsKSA9IDA7CisjaWYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIHVybCwg
UGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4pIHsgfQorI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGNh
bmNlbExvYWQoKSA9IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1BsYXkoKSB7
IH0KQEAgLTE2NywxNyArMTcwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQXVkaW9Tb3VyY2VQ
cm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCi0j
aWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpBZGRJZFN0
YXR1cyBzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpOb3RTdXBw
b3J0ZWQ7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc291cmNlQnVmZmVy
ZWQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgc291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBwZW5kKGNvbnN0IFN0cmluZyYgaWQs
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlQWJvcnQoY29uc3QgU3RyaW5nJiBpZCkgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlU2V0RHVyYXRpb24oZG91Ymxl
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0oTWVkaWFQbGF5ZXI6OkVu
ZE9mU3RyZWFtU3RhdHVzKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlU2V0VGltZXN0YW1w
T2Zmc2V0KGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCBNZWRp
YVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gYWRkS2V5KGNvbnN0IFN0cmluZyYsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqLCB1bnNpZ25lZCwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkLCBj
b25zdCBTdHJpbmcmKSB7IHJldHVybiBNZWRpYVBsYXllcjo6S2V5U3lzdGVtTm90U3VwcG9ydGVk
OyB9CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gZ2VuZXJhdGVL
ZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCkg
eyByZXR1cm4gTWVkaWFQbGF5ZXI6OktleVN5c3RlbU5vdFN1cHBvcnRlZDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ZDkxZGEwY2ZkMDEwZTY3ZmFiNzVjNWNhY2FkM2Y2YmZmOTBkMWY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3Vy
Y2VQcml2YXRlLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIE1lZGlhU291cmNlUHJpdmF0ZV9oCisj
ZGVmaW5lIE1lZGlhU291cmNlUHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQor
CisjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IE1lZGlhU291cmNlUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTb3Vy
Y2VQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgTWVkaWFT
b3VyY2VQcml2YXRlKCkgeyB9CisgICAgdmlydHVhbCB+TWVkaWFTb3VyY2VQcml2YXRlKCkgeyB9
CisKKyAgICBlbnVtIEFkZElkU3RhdHVzIHsgT2ssIE5vdFN1cHBvcnRlZCwgUmVhY2hlZElkTGlt
aXQgfTsKKyAgICB2aXJ0dWFsIEFkZElkU3RhdHVzIGFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcykgPSAwOworICAg
IHZpcnR1YWwgYm9vbCByZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKSA9IDA7CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGR1
cmF0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgYWJvcnQoY29uc3QgU3RyaW5nJiBpZCkgPSAwOworICAgIGVudW0g
RW5kT2ZTdHJlYW1TdGF0dXMgeyBFb3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0RlY29k
ZUVycm9yIH07CisgICAgdmlydHVhbCB2b2lkIGVuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVz
KSA9IDA7CisgICAgdmlydHVhbCBib29sIHNldFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcm
IGlkLCBkb3VibGUgb2Zmc2V0KSA9IDA7Cit9OworCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggZWU0ZGEzZGIxMWZmMmY0YTJkNmM5ZmQwNWE0MTNj
YTczN2QwMDBhZS4uODEyNDMzNDEzYzczM2NkMmVjOTY2ZjExNWRjNDNkZTZiMmVkY2YwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTk1LDYgKzE5NSw4IEBACiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJNZWRpYVBsYXllci5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYk1lZGlhUGxheWVyQWN0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVk
aWFQbGF5ZXJDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVNvdXJj
ZS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlhU291cmNlQ2xpZW50LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYk1lbW9yeVVzYWdlSW5mby5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYk1lbnVJdGVtSW5mby5oJywKQEAgLTUwNSw2ICs1MDcsOSBAQAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViTGFiZWxFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlh
U291cmNlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVNvdXJjZUltcGwuY3Bw
JywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhU291cmNlSW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYk1lZGlhU3RyZWFtUmVnaXN0cnkuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJOb2RlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJNZWRpYVBsYXllci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVk
aWFQbGF5ZXIuaAppbmRleCBhNDI4N2UxYzFkZTRhMzk5NzAxMDQ4ZmQ2YzRjMWQwN2FiYTM2ZjE4
Li5lM2U5YTZlZDk0MDg3OGU3NWYwZjlmNzQxMWFhYzE1MzRkYTUzZjIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKQEAgLTMzLDYgKzMzLDcg
QEAKIAogI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDYW52
YXMuaCIKICNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3Ry
aW5nLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJXZWJUaW1lUmFu
Z2UuaCIKICNpbmNsdWRlICJXZWJWaWRlb0ZyYW1lLmgiCiAKQEAgLTEwOSw2ICsxMTAsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+V2ViTWVkaWFQbGF5ZXIoKSB7fQogCiAgICAgdmlydHVhbCB2
b2lkIGxvYWQoY29uc3QgV2ViVVJMJiwgQ09SU01vZGUpID0gMDsKKyAgICAvLyBGSVhNRShhY29s
d2VsbCkgOiBSZW1vdmUgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb25jZSB0aGUgQ2hyb21p
dW0gY29kZSBpbXBsZW1lbnRzIHRoaXMgbWV0aG9kLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzNzEKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25z
dCBXZWJVUkwmIHVybCwgV2ViTWVkaWFTb3VyY2UqIG1lZGlhU291cmNlLCBDT1JTTW9kZSBjb3Jz
TW9kZSkgeyBkZWxldGUgbWVkaWFTb3VyY2U7IGxvYWQodXJsLCBjb3JzTW9kZSk7IH07CiAgICAg
dmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKSA9IDA7CiAKICAgICAvLyBQbGF5YmFjayBjb250cm9s
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxh
eWVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXll
ckNsaWVudC5oCmluZGV4IGRlY2E5NTM2ZDk5YTQ1Y2IyMTVlOGVhNWUyMDRhNjE4OTc1NWM0YjMu
LmM4MmZkM2FjYzY1NjliYTI3MGMxYjc2ZDdhNjFjYjlkMzM1YTlhZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaApAQCAt
MzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOworY2xh
c3MgV2ViTWVkaWFTb3VyY2U7CiBjbGFzcyBXZWJQbHVnaW47CiBjbGFzcyBXZWJSZXF1ZXN0Owog
Y2xhc3MgV2ViVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlh
U291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmIzZmFjMjkyMWZiMzY2OWRiMjY5MDZhNWQ3YWE2MTkxZjE3
NmQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
Yk1lZGlhU291cmNlLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFTb3VyY2VfaAor
I2RlZmluZSBXZWJNZWRpYVNvdXJjZV9oCisKKyNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViVGltZVJhbmdlLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVNvdXJjZUNsaWVudDsKKworY2xhc3Mg
V2ViTWVkaWFTb3VyY2UgeworcHVibGljOgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYk1l
ZGlhU291cmNlKiBnZXRNZWRpYVNvdXJjZUZvclVSTChjb25zdCBXZWJVUkwmKTsKKworICAgIHZp
cnR1YWwgfldlYk1lZGlhU291cmNlKCk7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oV2ViTWVkaWFT
b3VyY2VDbGllbnQqKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVNvdXJj
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2VD
bGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZTY1MDkwNGJiNDJiZjhmZmEwZTc2YzczN2I5ZmVlZGMxYWU5
ZjEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
TWVkaWFTb3VyY2VDbGllbnQuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVNvdXJj
ZUNsaWVudF9oCisjZGVmaW5lIFdlYk1lZGlhU291cmNlQ2xpZW50X2gKKworI2luY2x1ZGUgIi4u
Ly4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJX
ZWJUaW1lUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU291
cmNlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBlbnVtIEFkZElkU3RhdHVzIHsKKyAgICAgICAgQWRk
SWRTdGF0dXNPaywKKyAgICAgICAgQWRkSWRTdGF0dXNOb3RTdXBwb3J0ZWQsCisgICAgICAgIEFk
ZElkU3RhdHVzUmVhY2hlZElkTGltaXQKKyAgICB9OworCisgICAgZW51bSBFbmRPZlN0cmVhbVN0
YXR1cyB7CisgICAgICAgIEVuZE9mU3RyZWFtU3RhdHVzTm9FcnJvciwKKyAgICAgICAgRW5kT2ZT
dHJlYW1TdGF0dXNOZXR3b3JrRXJyb3IsCisgICAgICAgIEVuZE9mU3RyZWFtU3RhdHVzRGVjb2Rl
RXJyb3IsCisgICAgfTsKKworICAgIHZpcnR1YWwgfldlYk1lZGlhU291cmNlQ2xpZW50KCkgeyB9
CisKKyAgICB2aXJ0dWFsIEFkZElkU3RhdHVzIGFkZElkKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNv
bnN0IFdlYlN0cmluZyYgdHlwZSwgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGNvZGVjcykg
PSAwOworICAgIHZpcnR1YWwgYm9vbCByZW1vdmVJZChjb25zdCBXZWJTdHJpbmcmIGlkKSA9IDA7
CisgICAgdmlydHVhbCBXZWJUaW1lUmFuZ2VzIGJ1ZmZlcmVkKGNvbnN0IFdlYlN0cmluZyYgaWQp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBhYm9ydChjb25zdCBXZWJTdHJpbmcmIGlkKSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUg
ZHVyYXRpb24oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBlbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBzZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgV2ViU3RyaW5nJiBpZCwg
ZG91YmxlIG9mZnNldCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdF
bnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcAppbmRleCBiOTcyNTE2NTNkYTJkMDgzZGVlM2QzMWVjMTQ0Y2E1N2YyMTU3MWRhLi5mNmIy
YmJhYzdlMzgzYmM3ZWQ3ZWIwOTE3NjVkMDU1ZmE2MGVlYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNjIsNiArNjIs
OSBAQAogI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyNpbmNsdWRl
ICJNZWRpYVNvdXJjZVByaXZhdGUuaCIKKyNlbmRpZgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291
cmNlLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZVZp
c2liaWxpdHlTdGF0ZS5oIgpAQCAtMTA1LDYgKzEwOCw3IEBACiAjaW5jbHVkZSAiV2ViSW5wdXRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJXZWJNZWRp
YVBsYXllckNsaWVudC5oIgorI2luY2x1ZGUgIldlYk1lZGlhU291cmNlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVZpc2li
aWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCkBAIC00MDksMTUgKzQxMywx
MyBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpQcmVsb2Fk
TWV0YURhdGEsIE1lZGlhUGxheWVyOjpNZXRhRAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJNZWRpYVBsYXllcjo6UHJlbG9hZEF1dG8sIE1lZGlhUGxheWVyOjpBdXRvKTsKIAogI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCi1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1l
ZGlhUGxheWVyOjpBZGRJZFN0YXR1c09rLCBNZWRpYVBsYXllcjo6T2spOwotQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXNOb3RTdXBwb3J0ZWQs
IE1lZGlhUGxheWVyOjpOb3RTdXBwb3J0ZWQpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXNSZWFjaGVkSWRMaW1pdCwgTWVkaWFQbGF5ZXI6
OlJlYWNoZWRJZExpbWl0KTsKLSNlbmRpZgorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShX
ZWJNZWRpYVNvdXJjZUNsaWVudDo6QWRkSWRTdGF0dXNPaywgTWVkaWFTb3VyY2VQcml2YXRlOjpP
ayk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhU291cmNlQ2xpZW50OjpB
ZGRJZFN0YXR1c05vdFN1cHBvcnRlZCwgTWVkaWFTb3VyY2VQcml2YXRlOjpOb3RTdXBwb3J0ZWQp
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6QWRk
SWRTdGF0dXNSZWFjaGVkSWRMaW1pdCwgTWVkaWFTb3VyY2VQcml2YXRlOjpSZWFjaGVkSWRMaW1p
dCk7CiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXNOb0Vycm9yLCBNZWRpYVBs
YXllcjo6RW9zTm9FcnJvcik7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlh
UGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1c05ldHdvcmtFcnJvciwgTWVkaWFQbGF5ZXI6OkVvc05l
dHdvcmtFcnJvcik7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVy
OjpFbmRPZlN0cmVhbVN0YXR1c0RlY29kZUVycm9yLCBNZWRpYVBsYXllcjo6RW9zRGVjb2RlRXJy
b3IpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6
RW5kT2ZTdHJlYW1TdGF0dXNOb0Vycm9yLCBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05vRXJyb3Ip
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6RW5k
T2ZTdHJlYW1TdGF0dXNOZXR3b3JrRXJyb3IsIE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zTmV0d29y
a0Vycm9yKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFTb3VyY2VDbGll
bnQ6OkVuZE9mU3RyZWFtU3RhdHVzRGVjb2RlRXJyb3IsIE1lZGlhU291cmNlUHJpdmF0ZTo6RW9z
RGVjb2RlRXJyb3IpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbC5jcHAKaW5kZXggZWYzNTBkNzFhMDBkMWYwMTc5YzAyOTQ0ZDQwN2M5ODE2OWRjYWZkOS4u
OWY0MDZhYjhkN2NhYmEzZDFlNzQ1ZWI5MWI5MGIyY2ZhNWZhNzI2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3Bw
CkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAi
V2ViSGVscGVyUGx1Z2luSW1wbC5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyLmgiCisjaW5j
bHVkZSAiV2ViTWVkaWFTb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZUlt
cGwuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9y
bS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDU3RyaW5nLmg+CkBAIC00OSw2ICs1MSw4MyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKy8vIEZJWE1F
KGFjb2x3ZWxsKTogUmVtb3ZlIHRoaXMgY2xhc3Mgb25jZSB0aGUgQ2hyb21pdW0gY29kZSBpbXBs
ZW1lbnRzIGl0cyBvd24KKy8vIHZlcnNpb24gb2YgV2ViTWVkaWFQbGF5ZXI6OmxvYWQoV2ViVVJM
LCBXZWJNZWRpYVNvdXJjZSwgQ09SU01vZGUpLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDM3MQorY2xhc3MgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsIDog
cHVibGljIFdlYk1lZGlhU291cmNlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJNZWRpYVNvdXJj
ZUNsaWVudEltcGwoV2ViTWVkaWFQbGF5ZXIqKTsKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNvdXJj
ZUNsaWVudEltcGwoKTsKKworICAgIC8vIFdlYk1lZGlhU291cmNlQ2xpZW50IG1ldGhvZHMuCisg
ICAgdmlydHVhbCBBZGRJZFN0YXR1cyBhZGRJZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCBX
ZWJTdHJpbmcmIHR5cGUsIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBjb2RlY3MpOworICAg
IHZpcnR1YWwgYm9vbCByZW1vdmVJZChjb25zdCBXZWJTdHJpbmcmIGlkKTsKKyAgICB2aXJ0dWFs
IFdlYlRpbWVSYW5nZXMgYnVmZmVyZWQoY29uc3QgV2ViU3RyaW5nJiBpZCk7CisgICAgdmlydHVh
bCBib29sIGFwcGVuZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1YWwgYm9vbCBhYm9ydChjb25zdCBXZWJT
dHJpbmcmIGlkKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkdXJhdGlvbigpOworICAgIHZpcnR1YWwg
dm9pZCBzZXREdXJhdGlvbihkb3VibGUpOworICAgIHZpcnR1YWwgdm9pZCBlbmRPZlN0cmVhbShF
bmRPZlN0cmVhbVN0YXR1cyk7CisgICAgdmlydHVhbCBib29sIHNldFRpbWVzdGFtcE9mZnNldChj
b25zdCBXZWJTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KTsKKworcHJpdmF0ZToKKyAgICBXZWJN
ZWRpYVBsYXllciogbV93ZWJNZWRpYVBsYXllcjsKK307CisKK1dlYk1lZGlhU291cmNlQ2xpZW50
SW1wbDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsKFdlYk1lZGlhUGxheWVyKiB3ZWJNZWRpYVBs
YXllcikKKyAgICA6IG1fd2ViTWVkaWFQbGF5ZXIod2ViTWVkaWFQbGF5ZXIpCit7Cit9CisKK1dl
Yk1lZGlhU291cmNlQ2xpZW50SW1wbDo6fldlYk1lZGlhU291cmNlQ2xpZW50SW1wbCgpCit7Cit9
CisKK1dlYk1lZGlhU291cmNlQ2xpZW50OjpBZGRJZFN0YXR1cyBXZWJNZWRpYVNvdXJjZUNsaWVu
dEltcGw6OmFkZElkKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0IFdlYlN0cmluZyYgdHlwZSwg
Y29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGNvZGVjcykKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2ViTWVkaWFTb3VyY2VDbGllbnQ6OkFkZElkU3RhdHVzPihtX3dlYk1lZGlhUGxheWVy
LT5zb3VyY2VBZGRJZChpZCwgdHlwZSwgY29kZWNzKSk7Cit9CisKK2Jvb2wgV2ViTWVkaWFTb3Vy
Y2VDbGllbnRJbXBsOjpyZW1vdmVJZChjb25zdCBXZWJTdHJpbmcmIGlkKQoreworICAgIHJldHVy
biBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VSZW1vdmVJZChpZCk7Cit9CisKK1dlYlRpbWVSYW5n
ZXMgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpidWZmZXJlZChjb25zdCBXZWJTdHJpbmcmIGlk
KQoreworICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VCdWZmZXJlZChpZCk7Cit9
CisKK2Jvb2wgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjphcHBlbmQoY29uc3QgV2ViU3RyaW5n
JiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBcHBlbmQoaWQsIGRhdGEsIGxlbmd0aCk7
Cit9CisKK2Jvb2wgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjphYm9ydChjb25zdCBXZWJTdHJp
bmcmIGlkKQoreworICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBYm9ydChpZCk7
Cit9CisKK2RvdWJsZSBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmR1cmF0aW9uKCkKK3sKKyAg
ICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+ZHVyYXRpb24oKTsKK30KKwordm9pZCBXZWJNZWRp
YVNvdXJjZUNsaWVudEltcGw6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBy
ZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlU2V0RHVyYXRpb24oZHVyYXRpb24pOworfQor
Cit2b2lkIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6ZW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1T
dGF0dXMgc3RhdHVzKQoreworICAgIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUVuZE9mU3RyZWFt
KHN0YXRpY19jYXN0PFdlYk1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cz4oc3RhdHVzKSk7
Cit9CisKK2Jvb2wgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpzZXRUaW1lc3RhbXBPZmZzZXQo
Y29uc3QgV2ViU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCkKK3sKKyAgICByZXR1cm4gbV93ZWJN
ZWRpYVBsYXllci0+c291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpOworfQorCiBz
dGF0aWMgUGFzc093blB0cjxXZWJNZWRpYVBsYXllcj4gY3JlYXRlV2ViTWVkaWFQbGF5ZXIoV2Vi
TWVkaWFQbGF5ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViVVJMJiB1cmwsIEZyYW1lKiBmcmFt
ZSkKIHsKICAgICBXZWJGcmFtZUltcGwqIHdlYkZyYW1lID0gV2ViRnJhbWVJbXBsOjpmcm9tRnJh
bWUoZnJhbWUpOwpAQCAtMjE4LDIyICsyOTcsMjcgQEAgV2ViTWVkaWFQbGF5ZXI6OlByZWxvYWQg
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpwcmVsb2FkKCkgY29uc3QKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V2ViTWVkaWFQbGF5ZXI6OlByZWxvYWQ+KG1fcHJlbG9hZCk7CiB9CiAKKy8vIEZJ
WE1FKGFjb2x3ZWxsKSA6IFJlbW92ZSB0aGlzIGFuZCBzb3VyY2VVUkwoKSBvbmNlIHRoZSBDaHJv
bWl1bSBjb2RlIGltcGxlbWVudHMKKy8vIGl0cyBvd24gdmVyc2lvbiBvZiBXZWJNZWRpYVBsYXll
cjo6bG9hZChXZWJVUkwsIFdlYk1lZGlhU291cmNlLCBDT1JTTW9kZSkuCisvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMzcxCiB2b2lkIFdlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbDo6c291cmNlT3BlbmVkKCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQot
ICAgIEFTU0VSVChtX21lZGlhUGxheWVyKTsKLSAgICBtX21lZGlhUGxheWVyLT5zb3VyY2VPcGVu
ZWQoKTsKKyAgICBBU1NFUlQobV93ZWJNZWRpYVBsYXllcik7CisgICAgaWYgKG1fbWVkaWFTb3Vy
Y2UpIHsKKyAgICAgICAgT3duUHRyPFdlYk1lZGlhU291cmNlPiBtZWRpYVNvdXJjZSA9IGFkb3B0
UHRyKG5ldyBXZWJNZWRpYVNvdXJjZUltcGwobV9tZWRpYVNvdXJjZSkpOworICAgICAgICBtZWRp
YVNvdXJjZS0+b3BlbihuZXcgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsKG1fd2ViTWVkaWFQbGF5
ZXIuZ2V0KCkpKTsKKyAgICB9CiAjZW5kaWYKIH0KIAogV2ViS2l0OjpXZWJVUkwgV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VVUkwoKSBjb25zdAogewogI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCi0gICAgQVNTRVJUKG1fbWVkaWFQbGF5ZXIpOwotICAgIHJldHVybiBLVVJMKFBhcnNl
ZFVSTFN0cmluZywgbV9tZWRpYVBsYXllci0+c291cmNlVVJMKCkpOwotI2Vsc2UKLSAgICByZXR1
cm4gS1VSTCgpOworICAgIGlmIChtX21lZGlhU291cmNlKQorICAgICAgICByZXR1cm4gS1VSTChQ
YXJzZWRVUkxTdHJpbmcsIG1fdXJsKTsKICNlbmRpZgorICAgIHJldHVybiBLVVJMKCk7CiB9CiAK
IHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjprZXlBZGRlZChjb25zdCBXZWJTdHJpbmcm
IGtleVN5c3RlbSwgY29uc3QgV2ViU3RyaW5nJiBzZXNzaW9uSWQpCkBAIC0zMjMsNyArNDA3LDIz
IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpkaXNhYmxlQWNjZWxlcmF0ZWRDb21w
b3NpdGluZygpCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6bG9hZChjb25zdCBTdHJp
bmcmIHVybCkKIHsKICAgICBtX3VybCA9IHVybDsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQor
ICAgIG1fbWVkaWFTb3VyY2UgPSAwOworI2VuZGlmCisgICAgbG9hZFJlcXVlc3RlZCgpOworfQor
CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKK3ZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
Ojpsb2FkKGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNl
PiBtZWRpYVNvdXJjZSkKK3sKKyAgICBtX3VybCA9IHVybDsKKyAgICBtX21lZGlhU291cmNlID0g
bWVkaWFTb3VyY2U7CisgICAgbG9hZFJlcXVlc3RlZCgpOworfQorI2VuZGlmCiAKK3ZvaWQgV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkUmVxdWVzdGVkKCkKK3sKICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV93ZWJNZWRpYVBsYXllck11dGV4KTsKICAgICBpZiAobV9wcmVsb2FkID09IE1l
ZGlhUGxheWVyOjpOb25lKSB7CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKQEAgLTM0OCw5ICs0NDgs
MTYgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmxvYWRJbnRlcm5hbCgpCiAgICAg
ICAgIC8vIE1ha2Ugc3VyZSBpZiB3ZSBjcmVhdGUvcmUtY3JlYXRlIHRoZSBXZWJNZWRpYVBsYXll
ciB0aGF0IHdlIHVwZGF0ZSBvdXIgd3JhcHBlci4KICAgICAgICAgbV9hdWRpb1NvdXJjZVByb3Zp
ZGVyLndyYXAobV93ZWJNZWRpYVBsYXllci0+YXVkaW9Tb3VyY2VQcm92aWRlcigpKTsKICNlbmRp
ZgotICAgICAgICBtX3dlYk1lZGlhUGxheWVyLT5sb2FkKAotICAgICAgICAgICAgS1VSTChQYXJz
ZWRVUkxTdHJpbmcsIG1fdXJsKSwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYk1lZGlhUGxh
eWVyOjpDT1JTTW9kZT4obV9tZWRpYVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQ
bGF5ZXJDT1JTTW9kZSgpKSk7CisKKyAgICAgICAgS1VSTCB1cmwoUGFyc2VkVVJMU3RyaW5nLCBt
X3VybCk7CisgICAgICAgIFdlYk1lZGlhUGxheWVyOjpDT1JTTW9kZSBjb3JzTW9kZSA9IHN0YXRp
Y19jYXN0PFdlYk1lZGlhUGxheWVyOjpDT1JTTW9kZT4obV9tZWRpYVBsYXllci0+bWVkaWFQbGF5
ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJDT1JTTW9kZSgpKTsKKyNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQorICAgICAgICBpZiAobV9tZWRpYVNvdXJjZSkgeworICAgICAgICAgICAgbV93ZWJNZWRp
YVBsYXllci0+bG9hZCh1cmwsIG5ldyBXZWJNZWRpYVNvdXJjZUltcGwobV9tZWRpYVNvdXJjZSks
IGNvcnNNb2RlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisgICAg
ICAgIG1fd2ViTWVkaWFQbGF5ZXItPmxvYWQodXJsLCBjb3JzTW9kZSk7CiAgICAgfQogfQogCkBA
IC00MDcsNzAgKzUxNCw2IEBAIGJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpjYW5FbnRl
ckZ1bGxzY3JlZW4oKSBjb25zdAogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQotV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIFdlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbDo6c291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKQotewotICAgIGlmICghbV93ZWJNZWRpYVBsYXll
cikKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpOb3RTdXBwb3J0ZWQ7Ci0K
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVz
PihtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBZGRJZChpZCwgdHlwZSwgY29kZWNzKSk7Ci19Ci0K
LWJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VSZW1vdmVJZChjb25zdCBTdHJp
bmcmIGlkKQotewotICAgIGlmICghbV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVJlbW92ZUlkKGlkKTsK
LX0KLQotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNv
dXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpCi17Ci0gICAgaWYgKCFtX3dlYk1lZGlhUGxh
eWVyKQotICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7Ci0KLSAgICBXZWJUaW1l
UmFuZ2VzIHdlYlJhbmdlcyA9IG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUJ1ZmZlcmVkKGlkKTsK
LSAgICBSZWZQdHI8VGltZVJhbmdlcz4gcmFuZ2VzID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJSYW5nZXMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IHJhbmdlcy0+YWRkKHdlYlJhbmdlc1tpXS5zdGFydCwgd2ViUmFuZ2VzW2ldLmVuZCk7Ci0gICAg
cmV0dXJuIHJhbmdlcy5yZWxlYXNlKCk7Ci19Ci0KLWJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjpzb3VyY2VBcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIGlmIChtX3dlYk1lZGlhUGxheWVyKQotICAg
ICAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlQXBwZW5kKGlkLCBkYXRhLCBsZW5n
dGgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBXZWJNZWRpYVBsYXllckNsaWVudElt
cGw6OnNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYgaWQpCi17Ci0gICAgaWYgKCFtX3dlYk1lZGlh
UGxheWVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV93ZWJNZWRpYVBs
YXllci0+c291cmNlQWJvcnQoaWQpOwotfQotCi12b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bDo6c291cmNlU2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQotewotICAgIGlmIChtX3dlYk1l
ZGlhUGxheWVyKQotICAgICAgICBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VTZXREdXJhdGlvbihk
dXJhdGlvbik7Ci19Ci0KLXZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VFbmRP
ZlN0cmVhbShXZWJDb3JlOjpNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMgc3RhdHVzKQot
ewotICAgIGlmIChtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICBtX3dlYk1lZGlhUGxheWVyLT5z
b3VyY2VFbmRPZlN0cmVhbShzdGF0aWNfY2FzdDxXZWJNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1T
dGF0dXM+KHN0YXR1cykpOwotfQotCi1ib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291
cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpCi17
Ci0gICAgaWYgKCFtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChpZCwgb2Zm
c2V0KTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIE1lZGlhUGxh
eWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmdlbmVyYXRl
S2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgdW5zaWduZWQgY2hhciog
aW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAppbmRleCAzZjcw
YzczNWNjYjY2OGRiZjVmZmI1NzM4NWQ3MGI0Y2ZiNGFlNzYxLi44ZGExNGRlY2VkNmM5NzE4OTcx
Y2M3MGYwYzFmNzdlY2ZlMDhjOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaApAQCAtOTYsNiArOTYsOSBAQCBwdWJs
aWM6CiAKICAgICAvLyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgbWV0aG9kczoKICAgICB2
aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBXVEY6OlN0cmluZyYgdXJsKTsKKyNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQorICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFdURjo6U3RyaW5nJiB1cmws
IFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTb3VyY2U+KTsKKyNlbmRpZgogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxMb2FkKCk7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAg
IHZpcnR1YWwgV2ViS2l0OjpXZWJMYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwpAQCAtMTU3
LDE3ICsxNjAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dEN1cnJlbnRGcmFtZShX
ZWJWaWRlb0ZyYW1lKik7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAg
dmlydHVhbCBXZWJDb3JlOjpNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXMgc291cmNlQWRkSWQoY29u
c3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
Y29kZWNzKTsKLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJik7
Ci0gICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VGltZVJhbmdlcz4gc291cmNl
QnVmZmVyZWQoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUFwcGVuZChj
b25zdCBTdHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
OwotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VBYm9ydChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc291cmNlU2V0RHVyYXRpb24oZG91YmxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgc291
cmNlRW5kT2ZTdHJlYW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzKTsK
LSAgICB2aXJ0dWFsIGJvb2wgc291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYs
IGRvdWJsZSBvZmZzZXQpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGdlbmVy
YXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgdW5zaWduZWQgY2hh
ciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBhZGRLZXkoY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGtleSwgdW5zaWduZWQga2V5
TGVuZ3RoLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFM
ZW5ndGgsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBPVkVSUklERTsKQEAgLTE4Miw2ICsxNzQs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKCk7CiBwcml2YXRl
OgogICAgIHZvaWQgc3RhcnREZWxheWVkTG9hZCgpOworICAgIHZvaWQgbG9hZFJlcXVlc3RlZCgp
OwogICAgIHZvaWQgbG9hZEludGVybmFsKCk7CiAKICAgICBzdGF0aWMgUGFzc093blB0cjxXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShXZWJDb3JlOjpNZWRpYVBs
YXllciopOwpAQCAtMjU5LDYgKzI1MiwxMCBAQCBwcml2YXRlOgogCiAgICAgQXVkaW9Tb3VyY2VQ
cm92aWRlckltcGwgbV9hdWRpb1NvdXJjZVByb3ZpZGVyOwogI2VuZGlmCisKKyNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJjZT4gbV9tZWRpYVNv
dXJjZTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRmM2EwMWRi
MWUzNTE4OGYxOTcwN2NjZmZhMjlkODMwNWEwMzRhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNlLmNwcApAQCAtMCwwICsxLDU2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZS5oIgorCisjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKKyNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VSZWdpc3RyeS5oIgorI2lu
Y2x1ZGUgIldlYk1lZGlhU291cmNlSW1wbC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitXZWJNZWRpYVNvdXJjZSogV2ViTWVkaWFTb3VyY2U6OmdldE1lZGlhU291cmNlRm9yVVJM
KGNvbnN0IFdlYlVSTCYgdXJsKQoreworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlPiBtZWRpYVNvdXJjZSA9IFdlYkNvcmU6Ok1lZGlhU291
cmNlUmVnaXN0cnk6OnJlZ2lzdHJ5KCkubG9va3VwTWVkaWFTb3VyY2UodXJsLnNwZWMoKS51dGYx
NigpKTsKKworICAgIGlmIChtZWRpYVNvdXJjZSkKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJNZWRp
YVNvdXJjZUltcGwobWVkaWFTb3VyY2UpOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKK1dl
Yk1lZGlhU291cmNlOjp+V2ViTWVkaWFTb3VyY2UoKQoreworfQorCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZUltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZjM5OWEzYzM1MWJjODViYjYxNDQ3NDI2OTJjYTBjOGQ1YTZjOTQ4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmNwcApAQCAt
MCwwICsxLDE1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJj
ZUltcGwuaCIKKworI2luY2x1ZGUgIk1lZGlhU291cmNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldl
Yk1lZGlhU291cmNlQ2xpZW50LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTWVkaWFTb3VyY2VQcml2YXRlSW1wbCA6IHB1YmxpYyBX
ZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGUgeworcHVibGljOgorICAgIE1lZGlhU291cmNlUHJp
dmF0ZUltcGwoUGFzc093blB0cjxXZWJNZWRpYVNvdXJjZUNsaWVudD4pOworICAgIHZpcnR1YWwg
fk1lZGlhU291cmNlUHJpdmF0ZUltcGwoKSB7IH0KKworICAgIC8vIE1lZGlhU291cmNlUHJpdmF0
ZSBtZXRob2RzLgorICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRJ
ZFN0YXR1cyBhZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpOworICAgIHZpcnR1YWwgYm9vbCByZW1vdmVJZChjb25z
dCBTdHJpbmcmIGlkKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6VGltZVJhbmdl
cz4gYnVmZmVyZWQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAgdmlydHVhbCBib29sIGFwcGVuZChj
b25zdCBTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIHZpcnR1YWwgYm9vbCBhYm9ydChjb25zdCBTdHJpbmcmIGlkKTsKKyAgICB2aXJ0
dWFsIGRvdWJsZSBkdXJhdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3Vi
bGUpOworICAgIHZpcnR1YWwgdm9pZCBlbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRpYVNvdXJjZVBy
aXZhdGU6OkVuZE9mU3RyZWFtU3RhdHVzKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VGltZXN0YW1w
T2Zmc2V0KGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpOworCitwcml2YXRlOgorICAg
IE93blB0cjxXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50PiBtX2NsaWVudDsKK307CisKK01l
ZGlhU291cmNlUHJpdmF0ZUltcGw6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGwoUGFzc093blB0cjxX
ZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50PiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGll
bnQpCit7Cit9CisKK1dlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6QWRkSWRTdGF0dXMgTWVk
aWFTb3VyY2VQcml2YXRlSW1wbDo6YWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKQoreworICAgIGlmICghbV9jbGll
bnQpCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6Ok5vdFN1cHBv
cnRlZDsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZh
dGU6OkFkZElkU3RhdHVzPihtX2NsaWVudC0+YWRkSWQoaWQsIHR5cGUsIGNvZGVjcykpOworfQor
Citib29sIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OnJlbW92ZUlkKGNvbnN0IFN0cmluZyYgaWQp
Cit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIG1fY2xpZW50LT5yZW1vdmVJZChpZCk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViQ29yZTo6VGlt
ZVJhbmdlcz4gTWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6YnVmZmVyZWQoY29uc3QgU3RyaW5nJiBp
ZCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGltZVJh
bmdlczo6Y3JlYXRlKCk7CisKKyAgICBXZWJUaW1lUmFuZ2VzIHdlYlJhbmdlcyA9IG1fY2xpZW50
LT5idWZmZXJlZChpZCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRpbWVSYW5nZXM+IHJhbmdlcyA9
IFdlYkNvcmU6OlRpbWVSYW5nZXM6OmNyZWF0ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgd2ViUmFuZ2VzLnNpemUoKTsgKytpKQorICAgICAgICByYW5nZXMtPmFkZCh3ZWJSYW5nZXNb
aV0uc3RhcnQsIHdlYlJhbmdlc1tpXS5lbmQpOworICAgIHJldHVybiByYW5nZXMucmVsZWFzZSgp
OworfQorCitib29sIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmFwcGVuZChjb25zdCBTdHJpbmcm
IGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAg
aWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fY2xp
ZW50LT5hcHBlbmQoaWQsIGRhdGEsIGxlbmd0aCk7Cit9CisKK2Jvb2wgTWVkaWFTb3VyY2VQcml2
YXRlSW1wbDo6YWJvcnQoY29uc3QgU3RyaW5nJiBpZCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jbGllbnQtPmFib3J0KGlkKTsK
K30KKworZG91YmxlIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmR1cmF0aW9uKCkKK3sKKyAgICBp
ZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46
OnF1aWV0X05hTigpOworICAgIHJldHVybiBtX2NsaWVudC0+ZHVyYXRpb24oKTsKK30KKwordm9p
ZCBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c2V0RHVyYXRpb24oZHVyYXRp
b24pOworfQorCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmVuZE9mU3RyZWFtKFdlYkNv
cmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6RW5kT2ZTdHJlYW1TdGF0dXMgc3RhdHVzKQoreworICAg
IGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmVuZE9mU3RyZWFtKHN0YXRpY19jYXN0
PFdlYk1lZGlhU291cmNlQ2xpZW50OjpFbmRPZlN0cmVhbVN0YXR1cz4oc3RhdHVzKSk7Cit9CisK
K2Jvb2wgTWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6c2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0
cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2NsaWVudC0+c2V0VGltZXN0YW1wT2Zmc2V0KGlk
LCBvZmZzZXQpOworfQorCisKK1dlYk1lZGlhU291cmNlSW1wbDo6V2ViTWVkaWFTb3VyY2VJbXBs
KFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTb3VyY2U+IG1lZGlhU291cmNlKQoreworICAgIG1f
bWVkaWFTb3VyY2UgPSBtZWRpYVNvdXJjZTsKK30KKworV2ViTWVkaWFTb3VyY2VJbXBsOjp+V2Vi
TWVkaWFTb3VyY2VJbXBsKCkKK3sKK30KKworCit2b2lkIFdlYk1lZGlhU291cmNlSW1wbDo6b3Bl
bihXZWJNZWRpYVNvdXJjZUNsaWVudCogY2xpZW50KQoreworICAgIEFTU0VSVChjbGllbnQpOwor
ICAgIG1fbWVkaWFTb3VyY2UtPnNldFByaXZhdGVBbmRPcGVuKGFkb3B0UHRyKG5ldyBNZWRpYVNv
dXJjZVByaXZhdGVJbXBsKGFkb3B0UHRyKGNsaWVudCkpKSk7Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZUltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNlSW1wbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI4YWIzMWUyYjVkYmY3YzVkN2ZiZWZhMjYxZWFkZmVkY2E5ZjVmMDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZUltcGwu
aApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVNvdXJjZUltcGxfaAorI2RlZmluZSBX
ZWJNZWRpYVNvdXJjZUltcGxfaAorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1
ZGUgIk1lZGlhU291cmNlLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTb3VyY2UuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU291cmNlSW1wbCA6IHB1YmxpYyBXZWJNZWRp
YVNvdXJjZSB7CitwdWJsaWM6CisgICAgV2ViTWVkaWFTb3VyY2VJbXBsKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6TWVkaWFTb3VyY2U+KTsKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNvdXJjZUltcGwoKTsK
KworICAgIC8vIFdlYk1lZGlhU291cmNlIG1ldGhvZHMuCisgICAgdmlydHVhbCB2b2lkIG9wZW4o
V2ViTWVkaWFTb3VyY2VDbGllbnQqKTsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8V2ViQ29yZTo6
TWVkaWFTb3VyY2U+IG1fbWVkaWFTb3VyY2U7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189572</attachid>
            <date>2013-02-21 12:12:44 -0800</date>
            <delta_ts>2013-02-22 14:01:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109857-20130221120904.patch</filename>
            <type>text/plain</type>
            <size>63805</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ5NjU5MzRiMGEyNTM1
MTBkNzhkOWYyYTFlOWY3OTlhNDY4ZTVmMy4uMTJhMTNhNTE3NDkzYmJlZmIzMTg0NjFhMjE5ZTI2
M2RkZDdjMTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEzLTAyLTIxICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZhY3RvciBNZWRp
YVNvdXJjZSBtZXRob2RzIG91dCBvZiBNZWRpYVBsYXllciAmIE1lZGlhUGxheWVyUHJpdmF0ZSBh
bmQgaW50byBhIG5ldyBNZWRpYVNvdXJjZVByaXZhdGUgaW50ZXJmYWNlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHNpbXBsZSByZWZh
Y3RvciB0aGF0IG1vdmVzIE1lZGlhU291cmNlIHJlbGF0ZWQgbWV0aG9kcyBvdXQgb2YgTWVkaWFQ
bGF5ZXIgJiBNZWRpYVBsYXllclByaXZhdGUKKyAgICAgICAgc28gdGhhdCB0aGUgTWVkaWFTb3Vy
Y2UgaW1wbGVtZW50YXRpb24gY2FuIGJlIHVwZGF0ZWQgd2l0aG91dCBmdXJ0aGVyIHBvbGx1dGlu
ZyB0aGVzZSBpbnRlcmZhY2VzLgorICAgICAgICBNZWRpYVNvdXJjZVByaXZhdGUgaXMgdGhlIG5l
dyBXZWJDb3JlIGludGVyZmFjZSB0aGF0IHBvcnRzIG11c3QgaW1wbGVtZW50IHRvIHN1cHBvcnQg
dGhlIE1lZGlhU291cmNlIEFQSS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIHVzZXIgdmlz
aWJsZSBiZWhhdmlvciBoYXMgY2hhbmdlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Ok1lZGlh
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpkdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlOjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjplbmRP
ZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YnVmZmVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNvdXJjZTo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldFRp
bWVzdGFtcE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0
ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpzdG9wKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmg6Cisg
ICAgICAgIChNZWRpYVNvdXJjZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNZWRpYUVsZW1l
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKE51bGxNZWRpYVBsYXllclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TnVsbE1lZGlh
UGxheWVyUHJpdmF0ZTo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjps
b2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTWVkaWFQbGF5ZXJDbGll
bnQpOgorICAgICAgICAoTWVkaWFQbGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1lZGlhU291cmNlUHJpdmF0ZSk6
IENvbnRhaW5zIHRoZSBNZWRpYVNvdXJjZSBtZXRob2RzIGV4dHJhY3RlZCBmcm9tIE1lZGlhUGxh
eWVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpNZWRpYVNvdXJjZVBy
aXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjp+TWVkaWFTb3Vy
Y2VQcml2YXRlKToKKwogMjAxMy0wMi0yMSAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgT3ZlcmZsb3cgY2FuIGJlIGNsZWFyZWQganVzdCBiZWZvcmUgaXQgaXMg
Y29tcHV0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggY2ExYWQ5NzUyYmQ4OTZmNWIw
MWRhMjFlOGMyMjA0MjhjYTJjMjA0Ny4uYTgzZTJmYjkwMjc1MjVjNGJiNmY2OTVmNTQ1NGM2NWIx
ODIyNzQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAx
My0wMi0yMSAgQWFyb24gQ29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBGYWN0b3IgTWVkaWFTb3VyY2UgbWV0aG9kcyBvdXQgb2YgTWVkaWFQbGF5ZXIgJiBNZWRpYVBs
YXllclByaXZhdGUgYW5kIGludG8gYSBuZXcgTWVkaWFTb3VyY2VQcml2YXRlIGludGVyZmFjZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTg1Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYk1lZGlh
U291cmNlIGFuZCBXZWJNZWRpYVNvdXJjZSBjbGllbnQgd2VyZSBjcmVhdGVkIHRvIHJlcGxhY2Ug
dGhlIE1lZGlhU291cmNlIG1ldGhvZHMgaW4gV2ViTWVkaWFQbGF5ZXIgYW5kCisgICAgICAgIFdl
Yk1lZGlhUGxheWVyQ2xpZW50LiBUaGlzIGFsbG93cyB0aGUgTWVkaWFTb3VyY2UgaW1wbGVtZW50
YXRpb24gdG8gYmUgdXBkYXRlZCB3aXRob3V0IGZ1cnRoZXIgcG9sbHV0aW5nIHRoZQorICAgICAg
ICBtZWRpYSBwbGF5ZXIgaW50ZXJmYWNlcy4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAg
ICAgICogcHVibGljL1dlYk1lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJNZWRpYVBsYXllcik6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyOjpsb2FkKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICog
cHVibGljL1dlYk1lZGlhU291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYk1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2U6On5X
ZWJNZWRpYVNvdXJjZSk6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhU291cmNlQ2xpZW50Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhU291cmNlQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnQ6On5XZWJNZWRpYVNvdXJj
ZUNsaWVudCk6CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAg
ICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbCk6IFRlbXBvcmFyeSBXZWJNZWRpYVNv
dXJjZUNsaWVudCBpbXBsZW1lbnRhdGlvbiB0byBrZWVwIHRoaW5ncyB3b3JraW5nIHVudGlsIENo
cm9taXVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIGxhbmQu
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6V2ViTWVkaWFTb3Vy
Y2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBs
Ojp+V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFT
b3VyY2VDbGllbnRJbXBsOjphZGRJZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNl
Q2xpZW50SW1wbDo6cmVtb3ZlSWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNs
aWVudEltcGw6OmJ1ZmZlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGll
bnRJbXBsOjphcHBlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudElt
cGw6OmFib3J0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpk
dXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6c2V0
RHVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmVu
ZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpz
ZXRUaW1lc3RhbXBPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVu
dEltcGw6OnNvdXJjZU9wZW5lZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbDo6c291cmNlVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
Ojpsb2FkUmVxdWVzdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjpsb2FkSW50ZXJuYWwpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudElt
cGwuaDoKKyAgICAgICAgKFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3Jj
L1dlYk1lZGlhU291cmNlSW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKE1lZGlhU291cmNlUHJpdmF0ZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJj
ZVByaXZhdGVJbXBsOjp+TWVkaWFTb3VyY2VQcml2YXRlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGwpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjphZGRJZCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6OnJlbW92ZUlkKToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6YnVmZmVyZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVNvdXJjZVByaXZhdGVJbXBsOjphcHBlbmQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJj
ZVByaXZhdGVJbXBsOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0
ZUltcGw6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1w
bDo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBs
OjplbmRPZlN0cmVhbSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6
OnNldFRpbWVzdGFtcE9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlSW1w
bDo6V2ViTWVkaWFTb3VyY2VJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VJ
bXBsOjp+V2ViTWVkaWFTb3VyY2VJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3Vy
Y2VJbXBsOjpvcGVuKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhU291cmNlSW1wbCk6CisKIDIw
MTMtMDItMjEgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogR2V0IHJpZCBvZiBwYXJzZWRVUkwgaW4gdWlTb3VyY2VDb2RlLCB1
c2UgbmFtZSBhbmQgcGF0aCBmb3IgZGlzcGxheU5hbWUgaW5zdGVhZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZmQ2NDI5
NWQ1OWQ3YWVlYjc2Njk1ODE4NWRlZGIxY2E4ZjI3NzY3YS4uZTZiZmUyNDJhZDJkMzI0NjczMWE3
MDY0ODBhOGQ2YjEwZWM1YmQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTUwLDcgKzUwLDYgQEAgUGFzc1JlZlB0cjxN
ZWRpYVNvdXJjZT4gTWVkaWFTb3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQogTWVkaWFTb3VyY2U6Ok1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1f
cmVhZHlTdGF0ZShjbG9zZWRLZXl3b3JkKCkpCi0gICAgLCBtX3BsYXllcigwKQogICAgICwgbV9h
c3luY0V2ZW50UXVldWUoR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKIHsKICAgICBt
X3NvdXJjZUJ1ZmZlcnMgPSBTb3VyY2VCdWZmZXJMaXN0OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBtX2FzeW5jRXZlbnRRdWV1ZS5nZXQoKSk7CkBAIC04OCw3ICs4Nyw3IEBAIFNv
dXJjZUJ1ZmZlckxpc3QqIE1lZGlhU291cmNlOjphY3RpdmVTb3VyY2VCdWZmZXJzKCkKIAogZG91
YmxlIE1lZGlhU291cmNlOjpkdXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcmVhZHlT
dGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkgPyBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVp
ZXRfTmFOKCkgOiBtX3BsYXllci0+ZHVyYXRpb24oKTsKKyAgICByZXR1cm4gbV9yZWFkeVN0YXRl
ID09IGNsb3NlZEtleXdvcmQoKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9O
YU4oKSA6IG1fcHJpdmF0ZS0+ZHVyYXRpb24oKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZTo6c2V0
RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTEwMSw3ICsx
MDAsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24sIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIG1fcGxheWVyLT5zb3VyY2VTZXREdXJhdGlvbihkdXJhdGlv
bik7CisgICAgbV9wcml2YXRlLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiB9CiAKIFNvdXJjZUJ1
ZmZlciogTWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTI2LDcgKzEyNSw3IEBAIFNvdXJjZUJ1ZmZlciogTWVkaWFT
b3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUm
IGVjCiAKICAgICAvLyA0LiBJZiB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgbm90IGluIHRo
ZSAib3BlbiIgc3RhdGUgdGhlbiB0aHJvdyBhbgogICAgIC8vIElOVkFMSURfU1RBVEVfRVJSIGV4
Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFtX3BsYXllciB8fCBtX3Jl
YWR5U3RhdGUgIT0gb3BlbktleXdvcmQoKSkgeworICAgIGlmICghbV9wcml2YXRlIHx8IG1fcmVh
ZHlTdGF0ZSAhPSBvcGVuS2V5d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE0MCwyMCArMTM5LDIwIEBAIFNvdXJj
ZUJ1ZmZlciogTWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUs
IEV4Y2VwdGlvbkNvZGUmIGVjCiAKICAgICBSZWZQdHI8U291cmNlQnVmZmVyPiBidWZmZXIgPSBT
b3VyY2VCdWZmZXI6OmNyZWF0ZShpZCwgdGhpcyk7CiAKLSAgICBzd2l0Y2ggKG1fcGxheWVyLT5z
b3VyY2VBZGRJZChidWZmZXItPmlkKCksIGNvbnRlbnRUeXBlLnR5cGUoKSwgY29kZWNzKSkgewot
ICAgIGNhc2UgTWVkaWFQbGF5ZXI6Ok9rOgorICAgIHN3aXRjaCAobV9wcml2YXRlLT5hZGRJZChi
dWZmZXItPmlkKCksIGNvbnRlbnRUeXBlLnR5cGUoKSwgY29kZWNzKSkgeworICAgIGNhc2UgTWVk
aWFTb3VyY2VQcml2YXRlOjpPazoKICAgICAgICAgLy8gNi4gQWRkIHRoZSBuZXcgb2JqZWN0IHRv
IHNvdXJjZUJ1ZmZlcnMgYW5kIGZpcmUgYSBhZGRzb3VyY2VidWZmZXIgb24gdGhhdCBvYmplY3Qu
CiAgICAgICAgIG1fc291cmNlQnVmZmVycy0+YWRkKGJ1ZmZlcik7CiAgICAgICAgIG1fYWN0aXZl
U291cmNlQnVmZmVycy0+YWRkKGJ1ZmZlcik7CiAgICAgICAgIC8vIDcuIFJldHVybiB0aGUgbmV3
IG9iamVjdCB0byB0aGUgY2FsbGVyLgogICAgICAgICByZXR1cm4gYnVmZmVyLmdldCgpOwotICAg
IGNhc2UgTWVkaWFQbGF5ZXI6Ok5vdFN1cHBvcnRlZDoKKyAgICBjYXNlIE1lZGlhU291cmNlUHJp
dmF0ZTo6Tm90U3VwcG9ydGVkOgogICAgICAgICAvLyAyIChjb250KS4gSWYgdHlwZSBjb250YWlu
cyBhIE1JTUUgdHlwZSAuLi4gdGhhdCBpcyBub3Qgc3VwcG9ydGVkIHdpdGggdGhlIHR5cGVzIAog
ICAgICAgICAvLyBzcGVjaWZpZWQgZm9yIHRoZSBvdGhlciBTb3VyY2VCdWZmZXIgb2JqZWN0cyBp
biBzb3VyY2VCdWZmZXJzLCB0aGVuIHRocm93CiAgICAgICAgIC8vIGEgTk9UX1NVUFBPUlRFRF9F
UlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgZWMgPSBOT1RfU1VQ
UE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6UmVh
Y2hlZElkTGltaXQ6CisgICAgY2FzZSBNZWRpYVNvdXJjZVByaXZhdGU6OlJlYWNoZWRJZExpbWl0
OgogICAgICAgICAvLyAzIChjb250KS4gSWYgdGhlIHVzZXIgYWdlbnQgY2FuJ3QgaGFuZGxlIGFu
eSBtb3JlIFNvdXJjZUJ1ZmZlciBvYmplY3RzIHRoZW4gdGhyb3cgCiAgICAgICAgIC8vIGEgUVVP
VEFfRVhDRUVERURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgICAg
IGVjID0gUVVPVEFfRVhDRUVERURfRVJSOwpAQCAtMTc2LDcgKzE3NSw3IEBAIHZvaWQgTWVkaWFT
b3VyY2U6OnJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXIqIGJ1ZmZlciwgRXhjZXB0aW9u
Q29kZSYgZWMpCiAKICAgICAvLyAyLiBJZiBzb3VyY2VCdWZmZXJzIGlzIGVtcHR5IHRoZW4gdGhy
b3cgYW4gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZAogICAgIC8vIGFib3J0IHRoZXNl
IHN0ZXBzLgotICAgIGlmICghbV9wbGF5ZXIgfHwgIW1fc291cmNlQnVmZmVycy0+bGVuZ3RoKCkp
IHsKKyAgICBpZiAoIW1fcHJpdmF0ZSB8fCAhbV9zb3VyY2VCdWZmZXJzLT5sZW5ndGgoKSkgewog
ICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTkyLDcgKzE5MSw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJjZUJ1ZmZlcihT
b3VyY2VCdWZmZXIqIGJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyA3LiBEZXN0
cm95IGFsbCByZXNvdXJjZXMgZm9yIHNvdXJjZUJ1ZmZlci4KICAgICBtX2FjdGl2ZVNvdXJjZUJ1
ZmZlcnMtPnJlbW92ZShidWZmZXIpOwotICAgIG1fcGxheWVyLT5zb3VyY2VSZW1vdmVJZChidWZm
ZXItPmlkKCkpOworICAgIG1fcHJpdmF0ZS0+cmVtb3ZlSWQoYnVmZmVyLT5pZCgpKTsKIAogICAg
IC8vIDQuIFJlbW92ZSB0cmFjayBpbmZvcm1hdGlvbiBmcm9tIGF1ZGlvVHJhY2tzLCB2aWRlb1Ry
YWNrcywgYW5kIHRleHRUcmFja3MgZm9yIGFsbCB0cmFja3MgCiAgICAgLy8gYXNzb2NpYXRlZCB3
aXRoIHNvdXJjZUJ1ZmZlciBhbmQgZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBjaGFuZ2Ugb24g
dGhlIG1vZGlmaWVkIGxpc3RzLgpAQCAtMjIwLDcgKzIxOSw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6
OnNldFJlYWR5U3RhdGUoY29uc3QgU3RyaW5nJiBzdGF0ZSkKICAgICBpZiAobV9yZWFkeVN0YXRl
ID09IGNsb3NlZEtleXdvcmQoKSkgewogICAgICAgICBtX3NvdXJjZUJ1ZmZlcnMtPmNsZWFyKCk7
CiAgICAgICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy0+Y2xlYXIoKTsKLSAgICAgICAgbV9wbGF5
ZXIgPSAwOworICAgICAgICBtX3ByaXZhdGUuY2xlYXIoKTsKICAgICAgICAgc2NoZWR1bGVFdmVu
dChldmVudE5hbWVzKCkud2Via2l0c291cmNlY2xvc2VFdmVudCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0yNDEsMTkgKzI0MCwxOSBAQCB2b2lkIE1lZGlhU291cmNlOjplbmRPZlN0cmVh
bShjb25zdCBTdHJpbmcmIGVycm9yLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyAzLjEgaHR0
cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2UuaHRtbCNkb20tZW5kb2ZzdHJlYW0KICAgICAvLyAxLiBJZiB0aGUgcmVhZHlT
dGF0ZSBhdHRyaWJ1dGUgaXMgbm90IGluIHRoZSAib3BlbiIgc3RhdGUgdGhlbiB0aHJvdyBhbgog
ICAgIC8vIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMu
Ci0gICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5U3RhdGUgIT0gb3BlbktleXdvcmQoKSkgewor
ICAgIGlmICghbV9wcml2YXRlIHx8IG1fcmVhZHlTdGF0ZSAhPSBvcGVuS2V5d29yZCgpKSB7CiAg
ICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMgZW9zU3RhdHVzID0gTWVkaWFQbGF5
ZXI6OkVvc05vRXJyb3I7CisgICAgTWVkaWFTb3VyY2VQcml2YXRlOjpFbmRPZlN0cmVhbVN0YXR1
cyBlb3NTdGF0dXMgPSBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05vRXJyb3I7CiAKICAgICBpZiAo
ZXJyb3IuaXNOdWxsKCkgfHwgZXJyb3IuaXNFbXB0eSgpKQotICAgICAgICBlb3NTdGF0dXMgPSBN
ZWRpYVBsYXllcjo6RW9zTm9FcnJvcjsKKyAgICAgICAgZW9zU3RhdHVzID0gTWVkaWFTb3VyY2VQ
cml2YXRlOjpFb3NOb0Vycm9yOwogICAgIGVsc2UgaWYgKGVycm9yID09ICJuZXR3b3JrIikKLSAg
ICAgICAgZW9zU3RhdHVzID0gTWVkaWFQbGF5ZXI6OkVvc05ldHdvcmtFcnJvcjsKKyAgICAgICAg
ZW9zU3RhdHVzID0gTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOZXR3b3JrRXJyb3I7CiAgICAgZWxz
ZSBpZiAoZXJyb3IgPT0gImRlY29kZSIpCi0gICAgICAgIGVvc1N0YXR1cyA9IE1lZGlhUGxheWVy
OjpFb3NEZWNvZGVFcnJvcjsKKyAgICAgICAgZW9zU3RhdHVzID0gTWVkaWFTb3VyY2VQcml2YXRl
OjpFb3NEZWNvZGVFcnJvcjsKICAgICBlbHNlIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VT
U19FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTI2MSwxNyArMjYwLDE3IEBAIHZvaWQgTWVkaWFT
b3VyY2U6OmVuZE9mU3RyZWFtKGNvbnN0IFN0cmluZyYgZXJyb3IsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogCiAgICAgLy8gMi4gQ2hhbmdlIHRoZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSB2YWx1ZSB0byAi
ZW5kZWQiLgogICAgIHNldFJlYWR5U3RhdGUoZW5kZWRLZXl3b3JkKCkpOwotICAgIG1fcGxheWVy
LT5zb3VyY2VFbmRPZlN0cmVhbShlb3NTdGF0dXMpOworICAgIG1fcHJpdmF0ZS0+ZW5kT2ZTdHJl
YW0oZW9zU3RhdHVzKTsKIH0KIAogUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZTo6
YnVmZmVyZWQoY29uc3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7Cisg
ICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSkgewog
ICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICByZXR1cm4gbV9wbGF5ZXItPnNvdXJjZUJ1ZmZlcmVkKGlkKTsKKyAgICByZXR1cm4g
bV9wcml2YXRlLT5idWZmZXJlZChpZCk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2U6OmFwcGVuZChj
b25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGRhdGEsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQpAQCAtMjgxLDcgKzI4MCw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OmFwcGVuZChjb25z
dCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGRhdGEsIEV4Y2VwdGlvCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fcmVhZHlTdGF0ZSA9
PSBjbG9zZWRLZXl3b3JkKCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZSB8fCBtX3JlYWR5U3RhdGUg
PT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yODksNyArMjg4LDcgQEAgdm9pZCBNZWRpYVNvdXJj
ZTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZGF0YSwg
RXhjZXB0aW8KICAgICBpZiAobV9yZWFkeVN0YXRlID09IGVuZGVkS2V5d29yZCgpKQogICAgICAg
ICBzZXRSZWFkeVN0YXRlKG9wZW5LZXl3b3JkKCkpOwogCi0gICAgaWYgKCFtX3BsYXllci0+c291
cmNlQXBwZW5kKGlkLCBkYXRhLT5kYXRhKCksIGRhdGEtPmxlbmd0aCgpKSkgeworICAgIGlmICgh
bV9wcml2YXRlLT5hcHBlbmQoaWQsIGRhdGEtPmRhdGEoKSwgZGF0YS0+bGVuZ3RoKCkpKSB7CiAg
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI5Nywy
OSArMjk2LDM3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OmFwcGVuZChjb25zdCBTdHJpbmcmIGlkLCBQ
YXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGRhdGEsIEV4Y2VwdGlvCiAKIHZvaWQgTWVkaWFTb3VyY2U6
OmFib3J0KGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICgh
bV9wbGF5ZXIgfHwgbV9yZWFkeVN0YXRlICE9IG9wZW5LZXl3b3JkKCkpIHsKKyAgICBpZiAoIW1f
cHJpdmF0ZSB8fCBtX3JlYWR5U3RhdGUgIT0gb3BlbktleXdvcmQoKSkgewogICAgICAgICBlYyA9
IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFt
X3BsYXllci0+c291cmNlQWJvcnQoaWQpKQorICAgIGlmICghbV9wcml2YXRlLT5hYm9ydChpZCkp
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBib29sIE1lZGlhU291cmNlOjpz
ZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5U3RhdGUgPT0gY2xv
c2VkS2V5d29yZCgpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFkeVN0YXRlID09IGNs
b3NlZEtleXdvcmQoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFtX3BsYXllci0+c291cmNlU2V0VGlt
ZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUtPnNldFRpbWVz
dGFtcE9mZnNldChpZCwgb2Zmc2V0KSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCit2
b2lkIE1lZGlhU291cmNlOjpzZXRQcml2YXRlQW5kT3BlbihQYXNzT3duUHRyPE1lZGlhU291cmNl
UHJpdmF0ZT4gbWVkaWFTb3VyY2VQcml2YXRlKQoreworICAgIEFTU0VSVChtZWRpYVNvdXJjZVBy
aXZhdGUpOworICAgIEFTU0VSVCghbV9wcml2YXRlKTsKKyAgICBtX3ByaXZhdGUgPSBtZWRpYVNv
dXJjZVByaXZhdGU7CisgICAgc2V0UmVhZHlTdGF0ZShvcGVuS2V5d29yZCgpKTsKK30KKwogY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYVNvdXJjZTsKQEAgLTMzMiwx
MyArMzM5LDEzIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU291cmNlOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKIAogYm9vbCBNZWRpYVNvdXJjZTo6aGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wbGF5ZXIgfHwgbV9hc3luY0V2ZW50UXVl
dWUtPmhhc1BlbmRpbmdFdmVudHMoKQorICAgIHJldHVybiBtX3ByaXZhdGUgfHwgbV9hc3luY0V2
ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKQogICAgICAgICB8fCBBY3RpdmVET01PYmplY3Q6
Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpzdG9wKCkKIHsK
LSAgICBtX3BsYXllciA9IDA7CisgICAgbV9wcml2YXRlLmNsZWFyKCk7CiAgICAgbV9hc3luY0V2
ZW50UXVldWUtPmNhbmNlbEFsbEV2ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKaW5kZXggMWQzZjM0NzZiNjc4MWYzYzlm
NWNlNGZhNDJhZWM3Y2UwNTEwZGNiYy4uOTUzNThkN2NiOWQxN2M0NmFiMGE5NGVmNzUyYjdiNWNm
MWQ3MzJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2UuaApAQCAtMzUsNyArMzUsNyBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKLSNpbmNsdWRlICJNZWRpYVBsYXll
ci5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVuZE9mU3Ry
ZWFtKGNvbnN0IFN0cmluZyYgZXJyb3IsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZvaWQgc2V0
TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgeyBtX3BsYXllciA9IHBsYXllcjsgfQor
ICAgIHZvaWQgc2V0UHJpdmF0ZUFuZE9wZW4oUGFzc093blB0cjxNZWRpYVNvdXJjZVByaXZhdGU+
KTsKIAogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoY29uc3QgU3RyaW5nJiBp
ZCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYg
aWQsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtOTcs
NyArOTcsNyBAQCBwcml2YXRlOgogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0
YTsKIAogICAgIFN0cmluZyBtX3JlYWR5U3RhdGU7Ci0gICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVy
OworICAgIE93blB0cjxNZWRpYVNvdXJjZVByaXZhdGU+IG1fcHJpdmF0ZTsKIAogICAgIFJlZlB0
cjxTb3VyY2VCdWZmZXJMaXN0PiBtX3NvdXJjZUJ1ZmZlcnM7CiAgICAgUmVmUHRyPFNvdXJjZUJ1
ZmZlckxpc3Q+IG1fYWN0aXZlU291cmNlQnVmZmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCmluZGV4IDJiYzRlNmIxNDFlNWExNTZmODUxZDljZWVmOTFhYmJjMTJh
MGM0OWYuLmI3YWEzMzcwZjM5NzdlYjUyYzcyZTY1YTRiZmZhNjY4Njk5YmI2ZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzA4LDExICszMDgsNiBAQCBI
VE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bQogICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJl
cXVpcmVVc2VyR2VzdHVyZUZvckxvYWRSZXN0cmljdGlvbik7CiAgICAgfQogCi0jaWYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKLSAgICBtX21lZGlhU291cmNlVVJMLnNldFByb3RvY29sKG1lZGlhU291
cmNlQmxvYlByb3RvY29sKTsKLSAgICBtX21lZGlhU291cmNlVVJMLnNldFBhdGgoY3JlYXRlQ2Fu
b25pY2FsVVVJRFN0cmluZygpKTsKLSNlbmRpZgotCiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVDYWxs
YmFja3MoKTsKICAgICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVudCk7CiAK
QEAgLTk4NywxOSArOTgyLDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2Uo
Y29uc3QgS1VSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnQKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIEFTU0VSVCgh
bV9tZWRpYVNvdXJjZSk7Ci0KLSAgICBpZiAodXJsLnByb3RvY29sSXMobWVkaWFTb3VyY2VCbG9i
UHJvdG9jb2wpKSB7Ci0gICAgICAgIG1fbWVkaWFTb3VyY2UgPSBNZWRpYVNvdXJjZVJlZ2lzdHJ5
OjpyZWdpc3RyeSgpLmxvb2t1cE1lZGlhU291cmNlKHVybC5zdHJpbmcoKSk7Ci0KLSAgICAgICAg
aWYgKG1fbWVkaWFTb3VyY2UpIHsKLSAgICAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnNldE1lZGlh
UGxheWVyKG1fcGxheWVyLmdldCgpKTsKLSAgICAgICAgICAgIG1fbWVkaWFTb3VyY2VVUkwgPSB1
cmw7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQogICAgIC8vIFRoZSByZXNvdXJjZSBmZXRj
aCBhbGdvcml0aG0gCiAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0xPQURJTkc7CiAKQEAg
LTEwNTQsNiArMTAzNiwxNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShj
b25zdCBLVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlwZSYgY29udGVudAogICAgICAgICBtX211
dGVkID0gdHJ1ZTsKICAgICB1cGRhdGVWb2x1bWUoKTsKIAorI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCisgICAgQVNTRVJUKCFtX21lZGlhU291cmNlKTsKKworICAgIGlmICh1cmwucHJvdG9jb2xJ
cyhtZWRpYVNvdXJjZUJsb2JQcm90b2NvbCkpCisgICAgICAgIG1fbWVkaWFTb3VyY2UgPSBNZWRp
YVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLmxvb2t1cE1lZGlhU291cmNlKHVybC5zdHJpbmco
KSk7CisKKyAgICBpZiAobV9tZWRpYVNvdXJjZSkgeworICAgICAgICBpZiAoIW1fcGxheWVyLT5s
b2FkKHVybCwgbV9tZWRpYVNvdXJjZSkpCisgICAgICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQo
TWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yKTsKKyAgICB9IGVsc2UKKyNlbmRpZgogICAgIGlmICgh
bV9wbGF5ZXItPmxvYWQodXJsLCBjb250ZW50VHlwZSwga2V5U3lzdGVtKSkKICAgICAgICAgbWVk
aWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAKQEAgLTE4NzIsMjIg
KzE4NjUsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU291cmNlT3BlbmVkKCkKLXsK
LSAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7Ci0KLSAgICBzZXRTb3Vy
Y2VTdGF0ZShNZWRpYVNvdXJjZTo6b3BlbktleXdvcmQoKSk7Ci0KLSAgICBlbmRQcm9jZXNzaW5n
TWVkaWFQbGF5ZXJDYWxsYmFjaygpOwotfQotCi1TdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJTb3VyY2VVUkwoKSBjb25zdAotewotICAgIHJldHVybiBtX21lZGlhU291cmNlVVJM
LnN0cmluZygpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleUFkZGVkKE1lZGlhUGxheWVyKiwgY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQogewpAQCAtNDQ5
NCwxMyArNDQ3MSwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVy
KCkKICAgICAgICAgbV9hdWRpb1NvdXJjZU5vZGUtPmxvY2soKTsKICNlbmRpZgogCi0gICAgbV9w
bGF5ZXIgPSBNZWRpYVBsYXllcjo6Y3JlYXRlKHRoaXMpOwotCiAjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKICAgICBpZiAobV9tZWRpYVNvdXJjZSkKLSAgICAgICAgbV9tZWRpYVNvdXJjZS0+c2V0
TWVkaWFQbGF5ZXIobV9wbGF5ZXIuZ2V0KCkpOworICAgICAgICBtX21lZGlhU291cmNlLT5zZXRS
ZWFkeVN0YXRlKE1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKCkpOwogI2VuZGlmCiAKKyAgICBt
X3BsYXllciA9IE1lZGlhUGxheWVyOjpjcmVhdGUodGhpcyk7CisKICNpZiBFTkFCTEUoV0VCX0FV
RElPKQogICAgIGlmIChtX2F1ZGlvU291cmNlTm9kZSkgewogICAgICAgICAvLyBXaGVuIGNyZWF0
aW5nIHRoZSBwbGF5ZXIsIG1ha2Ugc3VyZSBpdHMgQXVkaW9Tb3VyY2VQcm92aWRlciBrbm93cyBh
Ym91dCB0aGUgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLgpAQCAtNDg0MSw3ICs0ODE4LDYg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb24KICAgICBpbmZvLmFkZE1lbWJlcihtX3Byb3h5V2lk
Z2V0LCAicHJveHlXaWRnZXQiKTsKICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0g
ICAgaW5mby5hZGRNZW1iZXIobV9tZWRpYVNvdXJjZVVSTCwgIm1lZGlhU291cmNlVVJMIik7CiAg
ICAgaW5mby5hZGRNZW1iZXIobV9tZWRpYVNvdXJjZSwgIm1lZGlhU291cmNlIik7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IGZhMWUzZjI4NGVlMTk2YmZiMjFjMjJhNGY4ZjcxNzJlNDMxNjBkNDUuLjM3NGRm
MmI4NTY1ODYyZjM1MzUwN2RmNDkyODMzZDQzMjA4YTUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC00NDIsMTEgKzQ0Miw2IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKE1lZGlhUGxheWVy
Kik7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1l
ZGlhUGxheWVyKik7CiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHZpcnR1YWwgdm9p
ZCBtZWRpYVBsYXllclNvdXJjZU9wZW5lZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxh
eWVyU291cmNlVVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5QWRkZWQoTWVkaWFQbGF5ZXIqLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleUVycm9yKE1lZGlhUGxheWVyKiwgY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBNZWRpYVBsYXll
ckNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUsIHVuc2lnbmVkIHNob3J0IHN5c3RlbUNvZGUpIE9W
RVJSSURFOwpAQCAtNjM5LDcgKzYzNCw2IEBAIHByaXZhdGU6CiAgICAgaW50IG1fcHJvY2Vzc2lu
Z01lZGlhUGxheWVyQ2FsbGJhY2s7CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIEtV
UkwgbV9tZWRpYVNvdXJjZVVSTDsKICAgICBSZWZQdHI8TWVkaWFTb3VyY2U+IG1fbWVkaWFTb3Vy
Y2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCmluZGV4IDBiMjU0NGY5MjE2MThmMmUxMzEwNTg5YjA5NmE2MWY4YjA1ZjY5
OTEuLjM2ZTIwZjUxMzQxOWFiMDZmOGNkMjE2MGE1NzE1OTY3Nzc4NGQ3YTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTQ0LDYg
KzQ0LDEwIEBACiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorI2luY2x1ZGUgIk1lZGlhU291cmNlLmgiCisjZW5k
aWYKKwogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFF0R2xvYmFsPgogI2VuZGlmCkBAIC05
MSw2ICs5NSw5IEBAIHB1YmxpYzoKICAgICBOdWxsTWVkaWFQbGF5ZXJQcml2YXRlKE1lZGlhUGxh
eWVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmKSB7IH0KKyNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmlu
ZyYsIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2U+KSB7IH0KKyNlbmRpZgogICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWxMb2FkKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvUGxheSgpIHsg
fQpAQCAtMTUxLDE3ICsxNTgsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzU2lu
Z2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQotICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIHNvdXJj
ZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGNvZGVjcykgeyByZXR1cm4gTWVkaWFQbGF5ZXI6Ok5vdFN1cHBvcnRlZDsgfQot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzb3VyY2VCdWZmZXJlZChjb25zdCBT
dHJpbmcmKSB7IHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsgfQotICAgIHZpcnR1YWwgYm9v
bCBzb3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgdW5zaWduZWQgY2hh
ciosIHVuc2lnbmVkKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VB
Ym9ydChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBz
b3VyY2VTZXREdXJhdGlvbihkb3VibGUpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VFbmRP
ZlN0cmVhbShNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMpIHsgfQotICAgIHZpcnR1YWwg
Ym9vbCBzb3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiwgZG91YmxlKSB7IHJl
dHVybiBmYWxzZTsgfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAg
IHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGdlbmVyYXRlS2V5UmVxdWVz
dChjb25zdCBTdHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpIE9WRVJSSURF
IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVyU3RhdGU7IH0KICAgICB2aXJ0dWFs
IE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBhZGRLZXkoY29uc3QgU3RyaW5nJiwgY29u
c3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWdu
ZWQsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpJbnZhbGlk
UGxheWVyU3RhdGU7IH0KQEAgLTM3Miw2ICszNjgsMTAgQEAgYm9vbCBNZWRpYVBsYXllcjo6bG9h
ZChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3Qg
U3QKICAgICBtX2tleVN5c3RlbSA9IGtleVN5c3RlbS5sb3dlcigpOwogICAgIG1fY29udGVudE1J
TUVUeXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uID0gZmFsc2U7CiAKKyNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQorICAgIG1fbWVkaWFTb3VyY2UgPSAwOworI2VuZGlmCisKICAgICAvLyBJZiB0
aGUgTUlNRSB0eXBlIGlzIG1pc3Npbmcgb3IgaXMgbm90IG1lYW5pbmdmdWwsIHRyeSB0byBmaWd1
cmUgaXQgb3V0IGZyb20gdGhlIFVSTC4KICAgICBpZiAobV9jb250ZW50TUlNRVR5cGUuaXNFbXB0
eSgpIHx8IG1fY29udGVudE1JTUVUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSB8fCBt
X2NvbnRlbnRNSU1FVHlwZSA9PSB0ZXh0UGxhaW4oKSkgewogICAgICAgICBpZiAobV91cmwucHJv
dG9jb2xJc0RhdGEoKSkKQEAgLTM5NCw2ICszOTQsMjAgQEAgYm9vbCBNZWRpYVBsYXllcjo6bG9h
ZChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3Qg
U3QKICAgICByZXR1cm4gbV9jdXJyZW50TWVkaWFFbmdpbmU7CiB9CiAKKyNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQorYm9vbCBNZWRpYVBsYXllcjo6bG9hZChjb25zdCBLVVJMJiB1cmwsIFBhc3NS
ZWZQdHI8TWVkaWFTb3VyY2U+IG1lZGlhU291cmNlKQoreworICAgIG1fbWVkaWFTb3VyY2UgPSBt
ZWRpYVNvdXJjZTsKKyAgICBtX2NvbnRlbnRNSU1FVHlwZSA9ICIiOworICAgIG1fY29udGVudFR5
cGVDb2RlY3MgPSAiIjsKKyAgICBtX3VybCA9IHVybDsKKyAgICBtX2tleVN5c3RlbSA9ICIiOwor
ICAgIG1fY29udGVudE1JTUVUeXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uID0gZmFsc2U7Cisg
ICAgbG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoMCk7CisgICAgcmV0dXJuIG1fY3VycmVudE1lZGlh
RW5naW5lOworfQorI2VuZGlmCisKIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlh
RW5naW5lKE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKIHsKICAgICBNZWRpYVBsYXllckZh
Y3RvcnkqIGVuZ2luZSA9IDA7CkBAIC00MjUsOSArNDM5LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXI6
OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKICAg
ICAgICAgICAgIG1fcHJpdmF0ZS0+cHJlcGFyZUZvclJlbmRlcmluZygpOwogICAgIH0KIAotICAg
IGlmIChtX3ByaXZhdGUpCisgICAgaWYgKG1fcHJpdmF0ZSkgeworI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCisgICAgICAgIGlmIChtX21lZGlhU291cmNlKQorICAgICAgICAgICAgbV9wcml2YXRl
LT5sb2FkKG1fdXJsLnN0cmluZygpLCBtX21lZGlhU291cmNlKTsKKyAgICAgICAgZWxzZQorI2Vu
ZGlmCiAgICAgICAgIG1fcHJpdmF0ZS0+bG9hZChtX3VybC5zdHJpbmcoKSk7Ci0gICAgZWxzZSB7
CisgICAgfSBlbHNlIHsKICAgICAgICAgbV9wcml2YXRlID0gY3JlYXRlTnVsbE1lZGlhUGxheWVy
KHRoaXMpOwogICAgICAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkgewogICAgICAgICAgICAg
bV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKHRoaXMpOwpAQCAt
NDc3LDQ5ICs0OTYsNiBAQCB2b2lkIE1lZGlhUGxheWVyOjpwYXVzZSgpCiAgICAgbV9wcml2YXRl
LT5wYXVzZSgpOwogfQogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLQotTWVkaWFQbGF5ZXI6
OkFkZElkU3RhdHVzIE1lZGlhUGxheWVyOjpzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpCi17Ci0gICAg
cmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlQWRkSWQoaWQsIHR5cGUsIGNvZGVjcyk7Ci19Ci0KLVBh
c3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXI6OnNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0
cmluZyYgaWQpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlQnVmZmVyZWQoaWQpOwot
fQotCi1ib29sIE1lZGlhUGxheWVyOjpzb3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKQot
ewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZVJlbW92ZUlkKGlkKTsKLX0KLQotYm9vbCBN
ZWRpYVBsYXllcjo6c291cmNlQXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5z
b3VyY2VBcHBlbmQoaWQsIGRhdGEsIGxlbmd0aCk7Ci19Ci0KLWJvb2wgTWVkaWFQbGF5ZXI6OnNv
dXJjZUFib3J0KGNvbnN0IFN0cmluZyYgaWQpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c291
cmNlQWJvcnQoaWQpOwotfQotCi12b2lkIE1lZGlhUGxheWVyOjpzb3VyY2VTZXREdXJhdGlvbihk
b3VibGUgZHVyYXRpb24pCi17Ci0gICAgbV9wcml2YXRlLT5zb3VyY2VTZXREdXJhdGlvbihkdXJh
dGlvbik7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXI6OnNvdXJjZUVuZE9mU3RyZWFtKE1lZGlhUGxh
eWVyOjpFbmRPZlN0cmVhbVN0YXR1cyBzdGF0dXMpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+
c291cmNlRW5kT2ZTdHJlYW0oc3RhdHVzKTsKLX0KLQotYm9vbCBNZWRpYVBsYXllcjo6c291cmNl
U2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpCi17Ci0g
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQp
OwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogTWVkaWFQbGF5ZXI6
Ok1lZGlhS2V5RXhjZXB0aW9uIE1lZGlhUGxheWVyOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25l
ZCBpbml0RGF0YUxlbmd0aCkKIHsKQEAgLTk0NywyMSArOTIzLDYgQEAgdm9pZCBNZWRpYVBsYXll
cjo6c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShib29sIHByaXZhdGVCcm93c2luZ01vZGUpCiAgICAg
bV9wcml2YXRlLT5zZXRQcml2YXRlQnJvd3NpbmdNb2RlKG1fcHJpdmF0ZUJyb3dzaW5nKTsKIH0K
IAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi12b2lkIE1lZGlhUGxheWVyOjpzb3VyY2VPcGVu
ZWQoKQotewotICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQotICAgICAgICBtX21lZGlhUGxh
eWVyQ2xpZW50LT5tZWRpYVBsYXllclNvdXJjZU9wZW5lZCgpOwotfQotCi1TdHJpbmcgTWVkaWFQ
bGF5ZXI6OnNvdXJjZVVSTCgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQp
Ci0gICAgICAgIHJldHVybiBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllclNvdXJjZVVS
TCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLSNlbmRpZgotCiAvLyBDbGllbnQgY2FsbGJh
Y2tzLgogdm9pZCBNZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCgpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA2M2NlMDlm
NzliODZmNGJiMDgwZjlhNzkzNjI5ODE0Nzc2ZWE3ODE3Li4xMjMyYTRkOTQ5YjA5NzgwNWJmYWZj
MjU4MWE4MzQ2MTUyY2EwZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKQEAgLTYxLDcgKzYxLDkgQEAgY2xhc3MgQXVkaW9Tb3VyY2VQcm92
aWRlcjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgR1N0cmVhbWVyR1dvcmxkOwogY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiBjbGFz
cyBNZWRpYVNvdXJjZTsKKyNlbmRpZgogY2xhc3MgVGV4dFRyYWNrUmVwcmVzZW50YXRpb247CiAK
IC8vIFN0cnVjdHVyZSB0aGF0IHdpbGwgaG9sZCBldmVyeSBuYXRpdmUKQEAgLTE4MCwxMSArMTgy
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBtZWRpYVBs
YXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0IHsgcmV0
dXJuIDA7IH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICB2aXJ0dWFs
IHZvaWQgbWVkaWFQbGF5ZXJTb3VyY2VPcGVuZWQoKSB7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBt
ZWRpYVBsYXllclNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuICJ4LW1lZGlhLXNvdXJjZS11bnN1
cHBvcnRlZDoiOyB9Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAg
ZW51bSBNZWRpYUtleUVycm9yQ29kZSB7IFVua25vd25FcnJvciA9IDEsIENsaWVudEVycm9yLCBT
ZXJ2aWNlRXJyb3IsIE91dHB1dEVycm9yLCBIYXJkd2FyZUNoYW5nZUVycm9yLCBEb21haW5FcnJv
ciB9OwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleUFkZGVkKE1lZGlhUGxheWVyKiwg
Y29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogc2Vzc2lvbklk
ICovKSB7IH0KQEAgLTI3MSw2ICsyNjgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaXplKGNv
bnN0IEludFNpemUmIHNpemUpOwogCiAgICAgYm9vbCBsb2FkKGNvbnN0IEtVUkwmLCBjb25zdCBD
b250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKKyNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQorICAgIGJvb2wgbG9hZChjb25zdCBLVVJMJiwgUGFzc1JlZlB0cjxNZWRpYVNvdXJj
ZT4pOworI2VuZGlmCiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAKICAgICBib29sIHZpc2libGUo
KSBjb25zdDsKQEAgLTI4MCwxOSArMjgwLDYgQEAgcHVibGljOgogICAgIHZvaWQgcGxheSgpOwog
ICAgIHZvaWQgcGF1c2UoKTsgICAgCiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIGVu
dW0gQWRkSWRTdGF0dXMgeyBPaywgTm90U3VwcG9ydGVkLCBSZWFjaGVkSWRMaW1pdCB9OwotICAg
IEFkZElkU3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcyk7Ci0gICAgYm9vbCBzb3VyY2VSZW1v
dmVJZChjb25zdCBTdHJpbmcmIGlkKTsKLSAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNvdXJj
ZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpOwotICAgIGJvb2wgc291cmNlQXBwZW5kKGNvbnN0
IFN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgdm9pZCBzb3VyY2VTZXREdXJhdGlvbihkb3VibGUpOwotICAgIGJvb2wgc291cmNlQWJv
cnQoY29uc3QgU3RyaW5nJiBpZCk7Ci0gICAgZW51bSBFbmRPZlN0cmVhbVN0YXR1cyB7IEVvc05v
RXJyb3IsIEVvc05ldHdvcmtFcnJvciwgRW9zRGVjb2RlRXJyb3IgfTsKLSAgICB2b2lkIHNvdXJj
ZUVuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKTsKLSAgICBib29sIHNvdXJjZVNldFRpbWVz
dGFtcE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KTsKLSNlbmRpZgotCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICAvLyBSZXByZXNlbnRzIHN5bmNocm9ub3Vz
IGV4Y2VwdGlvbnMgdGhhdCBjYW4gYmUgdGhyb3duIGZyb20gdGhlIEVuY3J5cHRlZCBNZWRpYSBt
ZXRob2RzLgogICAgIC8vIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIGFzeW5jaHJvbm91cyBN
ZWRpYUtleUVycm9yLgpAQCAtNDIyLDExICs0MDksNiBAQCBwdWJsaWM6CiAgICAgQXVkaW9Tb3Vy
Y2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQotICAgIHZvaWQgc291cmNlT3BlbmVkKCk7Ci0gICAgU3RyaW5nIHNvdXJj
ZVVSTCgpIGNvbnN0OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAg
IHZvaWQga2V5QWRkZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkKTsKICAgICB2b2lkIGtleUVycm9yKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgTWVkaWFQbGF5ZXJDbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2Rl
LCB1bnNpZ25lZCBzaG9ydCBzeXN0ZW1Db2RlKTsKQEAgLTQ4NCw2ICs0NjYsMTAgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICBXZWJNZWRpYVBsYXll
clByb3h5KiBtX3BsYXllclByb3h5OyAgICAvLyBub3Qgb3duZWQgb3IgdXNlZCwgcGFzc2VkIHRv
IG1fcHJpdmF0ZQogI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIFJlZlB0
cjxNZWRpYVNvdXJjZT4gbV9tZWRpYVNvdXJjZTsKKyNlbmRpZgogfTsKIAogdHlwZWRlZiBQYXNz
T3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gKCpDcmVhdGVNZWRpYUVuZ2luZVBs
YXllcikoTWVkaWFQbGF5ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggNWM2Njc0ZDJkM2E2MzhjYTMwNjFk
M2Y5MjI5YWFhZGYyMmFhNzg0MC4uMWYzZjNlMTBhODdjOTM5NTc1YjNiYzc3NzM4YmMxMjg4MGQx
YTU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmgKQEAgLTQ0LDYgKzQ0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fk1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGxv
YWQoY29uc3QgU3RyaW5nJiB1cmwpID0gMDsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAg
IHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPE1lZGlhU291
cmNlPikgPSAwOworI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKSA9IDA7CiAg
ICAgCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1BsYXkoKSB7IH0KQEAgLTE2NywxNyArMTcw
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3Vy
Y2VQcm92aWRlcigpIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKLSAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpBZGRJZFN0YXR1cyBzb3VyY2VBZGRJZChj
b25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBjb2RlY3MpIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpOb3RTdXBwb3J0ZWQ7IH0KLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc291cmNlQnVmZmVyZWQoY29uc3QgU3RyaW5nJiBp
ZCkgeyByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291
cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgc291cmNlQXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgc291cmNlQWJvcnQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc291cmNlU2V0RHVyYXRpb24oZG91YmxlKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc291cmNlRW5kT2ZTdHJlYW0oTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzKSB7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmlu
ZyYgaWQsIGRvdWJsZSBvZmZzZXQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKLQogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TWVkaWFLZXlF
eGNlcHRpb24gYWRkS2V5KGNvbnN0IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNp
Z25lZCwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKSB7IHJl
dHVybiBNZWRpYVBsYXllcjo6S2V5U3lzdGVtTm90U3VwcG9ydGVkOyB9CiAgICAgdmlydHVhbCBN
ZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0
cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCkgeyByZXR1cm4gTWVkaWFQbGF5
ZXI6OktleVN5c3RlbU5vdFN1cHBvcnRlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDkxZGEw
Y2ZkMDEwZTY3ZmFiNzVjNWNhY2FkM2Y2YmZmOTBkMWY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisjaWZuZGVmIE1lZGlhU291cmNlUHJpdmF0ZV9oCisjZGVmaW5lIE1lZGlhU291cmNl
UHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiVGltZVJh
bmdlcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU291cmNlUHJpdmF0
ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTb3VyY2VQcml2YXRlKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgTWVkaWFTb3VyY2VQcml2YXRlKCkgeyB9
CisgICAgdmlydHVhbCB+TWVkaWFTb3VyY2VQcml2YXRlKCkgeyB9CisKKyAgICBlbnVtIEFkZElk
U3RhdHVzIHsgT2ssIE5vdFN1cHBvcnRlZCwgUmVhY2hlZElkTGltaXQgfTsKKyAgICB2aXJ0dWFs
IEFkZElkU3RhdHVzIGFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcykgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZW1v
dmVJZChjb25zdCBTdHJpbmcmIGlkKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IGJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
YXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGR1cmF0aW9uKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
YWJvcnQoY29uc3QgU3RyaW5nJiBpZCkgPSAwOworICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMg
eyBFb3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0RlY29kZUVycm9yIH07CisgICAgdmly
dHVhbCB2b2lkIGVuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKSA9IDA7CisgICAgdmlydHVh
bCBib29sIHNldFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0
KSA9IDA7Cit9OworCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKaW5kZXggZWU0ZGEzZGIxMWZmMmY0YTJkNmM5ZmQwNWE0MTNjYTczN2QwMDBhZS4uOThhMzQz
ZDhiNjJiNzRkYmVjZWVhZmFhNmVkYzkwOWQzY2U0YjljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cApAQCAtMTk1LDYgKzE5NSw4IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJN
ZWRpYVBsYXllci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlhUGxheWVyQWN0
aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaCcs
CisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVNvdXJjZS5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYk1lZGlhU291cmNlQ2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYk1lbW9yeVVzYWdlSW5mby5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lbnVJ
dGVtSW5mby5oJywKQEAgLTUwNSw2ICs1MDcsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
TGFiZWxFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhU291cmNlSW1wbC5jcHAnLAor
ICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
Yk5vZGUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
Yk1lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBs
YXllci5oCmluZGV4IGE0Mjg3ZTFjMWRlNGEzOTk3MDEwNDhmZDZjNGMxZDA3YWJhMzZmMTguLmUz
ZTlhNmVkOTQwODc4ZTc1ZjBmOWY3NDExYWFjMTUzNGRhNTNmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaApAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNhbnZhcy5o
IgogI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcu
aCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgIldlYlRpbWVSYW5nZS5o
IgogI2luY2x1ZGUgIldlYlZpZGVvRnJhbWUuaCIKIApAQCAtMTA5LDYgKzExMCw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5XZWJNZWRpYVBsYXllcigpIHt9CiAKICAgICB2aXJ0dWFsIHZvaWQg
bG9hZChjb25zdCBXZWJVUkwmLCBDT1JTTW9kZSkgPSAwOworICAgIC8vIEZJWE1FKGFjb2x3ZWxs
KSA6IFJlbW92ZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvbmNlIHRoZSBDaHJvbWl1bSBj
b2RlIGltcGxlbWVudHMgdGhpcyBtZXRob2QuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMDM3MQorICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFdl
YlVSTCYgdXJsLCBXZWJNZWRpYVNvdXJjZSogbWVkaWFTb3VyY2UsIENPUlNNb2RlIGNvcnNNb2Rl
KSB7IGRlbGV0ZSBtZWRpYVNvdXJjZTsgbG9hZCh1cmwsIGNvcnNNb2RlKTsgfTsKICAgICB2aXJ0
dWFsIHZvaWQgY2FuY2VsTG9hZCgpID0gMDsKIAogICAgIC8vIFBsYXliYWNrIGNvbnRyb2xzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyQ2xp
ZW50LmgKaW5kZXggZGVjYTk1MzZkOTlhNDVjYjIxNWU4ZWE1ZTIwNGE2MTg5NzU1YzRiMy4uYzgy
ZmQzYWNjNjU2OWJhMjcwYzFiNzZkN2E2MWNiOWQzMzVhOWFkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllckNsaWVudC5oCkBAIC0zNiw2
ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CitjbGFzcyBX
ZWJNZWRpYVNvdXJjZTsKIGNsYXNzIFdlYlBsdWdpbjsKIGNsYXNzIFdlYlJlcXVlc3Q7CiBjbGFz
cyBXZWJVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJN
ZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3Vy
Y2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZTc4NjRiMzA5MGQ0NWQxNTVkY2UzYTU1ODcyZDZmNmEyNzgzMGM0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVk
aWFTb3VyY2UuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVNvdXJjZV9oCisjZGVm
aW5lIFdlYk1lZGlhU291cmNlX2gKKworI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJVUkwuaCIKKyNpbmNsdWRlICJXZWJUaW1lUmFuZ2UuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU291cmNlQ2xpZW50OworCitjbGFzcyBXZWJN
ZWRpYVNvdXJjZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViTWVkaWFTb3VyY2UoKSB7IH07
CisgICAgdmlydHVhbCB2b2lkIG9wZW4oV2ViTWVkaWFTb3VyY2VDbGllbnQqKSA9IDA7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVNvdXJjZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2VDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTY1
MDkwNGJiNDJiZjhmZmEwZTc2YzczN2I5ZmVlZGMxYWU5ZjEwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2VDbGllbnQuaApAQCAt
MCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVNvdXJjZUNsaWVudF9oCisjZGVmaW5lIFdlYk1l
ZGlhU291cmNlQ2xpZW50X2gKKworI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJUaW1lUmFuZ2UuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU291cmNlQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICBlbnVtIEFkZElkU3RhdHVzIHsKKyAgICAgICAgQWRkSWRTdGF0dXNPaywKKyAgICAgICAgQWRk
SWRTdGF0dXNOb3RTdXBwb3J0ZWQsCisgICAgICAgIEFkZElkU3RhdHVzUmVhY2hlZElkTGltaXQK
KyAgICB9OworCisgICAgZW51bSBFbmRPZlN0cmVhbVN0YXR1cyB7CisgICAgICAgIEVuZE9mU3Ry
ZWFtU3RhdHVzTm9FcnJvciwKKyAgICAgICAgRW5kT2ZTdHJlYW1TdGF0dXNOZXR3b3JrRXJyb3Is
CisgICAgICAgIEVuZE9mU3RyZWFtU3RhdHVzRGVjb2RlRXJyb3IsCisgICAgfTsKKworICAgIHZp
cnR1YWwgfldlYk1lZGlhU291cmNlQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIEFkZElkU3Rh
dHVzIGFkZElkKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0IFdlYlN0cmluZyYgdHlwZSwgY29u
c3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGNvZGVjcykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBy
ZW1vdmVJZChjb25zdCBXZWJTdHJpbmcmIGlkKSA9IDA7CisgICAgdmlydHVhbCBXZWJUaW1lUmFu
Z2VzIGJ1ZmZlcmVkKGNvbnN0IFdlYlN0cmluZyYgaWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
YXBwZW5kKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhYm9ydChjb25zdCBXZWJTdHJp
bmcmIGlkKSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRP
ZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRUaW1l
c3RhbXBPZmZzZXQoY29uc3QgV2ViU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCkgPSAwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCBiOTcyNTE2NTNkYTJk
MDgzZGVlM2QzMWVjMTQ0Y2E1N2YyMTU3MWRhLi5mNmIyYmJhYzdlMzgzYmM3ZWQ3ZWIwOTE3NjVk
MDU1ZmE2MGVlYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3Nl
cnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3Nl
cnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNjIsNiArNjIsOSBAQAogI2luY2x1ZGUgIklEQk1ldGFk
YXRhLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisj
aWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVByaXZhdGUuaCIK
KyNlbmRpZgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgpAQCAtMTA1
LDYgKzEwOCw3IEBACiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2Vi
TWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVudC5oIgorI2luY2x1
ZGUgIldlYk1lZGlhU291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uUHJl
c2VudGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUg
IldlYlNldHRpbmdzLmgiCkBAIC00MDksMTUgKzQxMywxMyBAQCBDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpQcmVsb2FkTWV0YURhdGEsIE1lZGlhUGxheWVyOjpN
ZXRhRAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6UHJlbG9h
ZEF1dG8sIE1lZGlhUGxheWVyOjpBdXRvKTsKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi1D
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpBZGRJZFN0YXR1c09r
LCBNZWRpYVBsYXllcjo6T2spOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRp
YVBsYXllcjo6QWRkSWRTdGF0dXNOb3RTdXBwb3J0ZWQsIE1lZGlhUGxheWVyOjpOb3RTdXBwb3J0
ZWQpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6QWRkSWRT
dGF0dXNSZWFjaGVkSWRMaW1pdCwgTWVkaWFQbGF5ZXI6OlJlYWNoZWRJZExpbWl0KTsKLSNlbmRp
ZgorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6QWRk
SWRTdGF0dXNPaywgTWVkaWFTb3VyY2VQcml2YXRlOjpPayk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYk1lZGlhU291cmNlQ2xpZW50OjpBZGRJZFN0YXR1c05vdFN1cHBvcnRlZCwg
TWVkaWFTb3VyY2VQcml2YXRlOjpOb3RTdXBwb3J0ZWQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6QWRkSWRTdGF0dXNSZWFjaGVkSWRMaW1pdCwg
TWVkaWFTb3VyY2VQcml2YXRlOjpSZWFjaGVkSWRMaW1pdCk7CiAKLSNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6
RW5kT2ZTdHJlYW1TdGF0dXNOb0Vycm9yLCBNZWRpYVBsYXllcjo6RW9zTm9FcnJvcik7Ci1DT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1
c05ldHdvcmtFcnJvciwgTWVkaWFQbGF5ZXI6OkVvc05ldHdvcmtFcnJvcik7Ci1DT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1c0RlY29k
ZUVycm9yLCBNZWRpYVBsYXllcjo6RW9zRGVjb2RlRXJyb3IpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6RW5kT2ZTdHJlYW1TdGF0dXNOb0Vycm9y
LCBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05vRXJyb3IpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6RW5kT2ZTdHJlYW1TdGF0dXNOZXR3b3JrRXJy
b3IsIE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zTmV0d29ya0Vycm9yKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViTWVkaWFTb3VyY2VDbGllbnQ6OkVuZE9mU3RyZWFtU3RhdHVzRGVj
b2RlRXJyb3IsIE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zRGVjb2RlRXJyb3IpOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggZWYzNTBkNzFh
MDBkMWYwMTc5YzAyOTQ0ZDQwN2M5ODE2OWRjYWZkOS4uMmYwYjIwODI1MDg5NTYxNzg0N2E4OWYw
M2Y2MDk0ZmJiOTZhY2VkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5j
bHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSGVscGVyUGx1Z2luSW1wbC5oIgog
I2luY2x1ZGUgIldlYk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTb3VyY2VDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZUltcGwuaCIKICNpbmNsdWRlICJXZWJWaWV3
SW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJDU3RyaW5nLmg+CkBAIC00OSw2ICs1MSw4MyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKy8vIEZJWE1FKGFjb2x3ZWxsKTogUmVtb3ZlIHRoaXMg
Y2xhc3Mgb25jZSB0aGUgQ2hyb21pdW0gY29kZSBpbXBsZW1lbnRzIGl0cyBvd24KKy8vIHZlcnNp
b24gb2YgV2ViTWVkaWFQbGF5ZXI6OmxvYWQoV2ViVVJMLCBXZWJNZWRpYVNvdXJjZSwgQ09SU01v
ZGUpLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDM3MQor
Y2xhc3MgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsIDogcHVibGljIFdlYk1lZGlhU291cmNlQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGwoV2Vi
TWVkaWFQbGF5ZXIqKTsKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNvdXJjZUNsaWVudEltcGwoKTsK
KworICAgIC8vIFdlYk1lZGlhU291cmNlQ2xpZW50IG1ldGhvZHMuCisgICAgdmlydHVhbCBBZGRJ
ZFN0YXR1cyBhZGRJZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCBXZWJTdHJpbmcmIHR5cGUs
IGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBjb2RlY3MpOworICAgIHZpcnR1YWwgYm9vbCBy
ZW1vdmVJZChjb25zdCBXZWJTdHJpbmcmIGlkKTsKKyAgICB2aXJ0dWFsIFdlYlRpbWVSYW5nZXMg
YnVmZmVyZWQoY29uc3QgV2ViU3RyaW5nJiBpZCk7CisgICAgdmlydHVhbCBib29sIGFwcGVuZChj
b25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIHZpcnR1YWwgYm9vbCBhYm9ydChjb25zdCBXZWJTdHJpbmcmIGlkKTsKKyAg
ICB2aXJ0dWFsIGRvdWJsZSBkdXJhdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlv
bihkb3VibGUpOworICAgIHZpcnR1YWwgdm9pZCBlbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1
cyk7CisgICAgdmlydHVhbCBib29sIHNldFRpbWVzdGFtcE9mZnNldChjb25zdCBXZWJTdHJpbmcm
IGlkLCBkb3VibGUgb2Zmc2V0KTsKKworcHJpdmF0ZToKKyAgICBXZWJNZWRpYVBsYXllciogbV93
ZWJNZWRpYVBsYXllcjsKK307CisKK1dlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6V2ViTWVkaWFT
b3VyY2VDbGllbnRJbXBsKFdlYk1lZGlhUGxheWVyKiB3ZWJNZWRpYVBsYXllcikKKyAgICA6IG1f
d2ViTWVkaWFQbGF5ZXIod2ViTWVkaWFQbGF5ZXIpCit7Cit9CisKK1dlYk1lZGlhU291cmNlQ2xp
ZW50SW1wbDo6fldlYk1lZGlhU291cmNlQ2xpZW50SW1wbCgpCit7Cit9CisKK1dlYk1lZGlhU291
cmNlQ2xpZW50OjpBZGRJZFN0YXR1cyBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmFkZElkKGNv
bnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0IFdlYlN0cmluZyYgdHlwZSwgY29uc3QgV2ViVmVjdG9y
PFdlYlN0cmluZz4mIGNvZGVjcykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTWVkaWFT
b3VyY2VDbGllbnQ6OkFkZElkU3RhdHVzPihtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBZGRJZChp
ZCwgdHlwZSwgY29kZWNzKSk7Cit9CisKK2Jvb2wgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpy
ZW1vdmVJZChjb25zdCBXZWJTdHJpbmcmIGlkKQoreworICAgIHJldHVybiBtX3dlYk1lZGlhUGxh
eWVyLT5zb3VyY2VSZW1vdmVJZChpZCk7Cit9CisKK1dlYlRpbWVSYW5nZXMgV2ViTWVkaWFTb3Vy
Y2VDbGllbnRJbXBsOjpidWZmZXJlZChjb25zdCBXZWJTdHJpbmcmIGlkKQoreworICAgIHJldHVy
biBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VCdWZmZXJlZChpZCk7Cit9CisKK2Jvb2wgV2ViTWVk
aWFTb3VyY2VDbGllbnRJbXBsOjphcHBlbmQoY29uc3QgV2ViU3RyaW5nJiBpZCwgY29uc3QgdW5z
aWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBtX3dlYk1l
ZGlhUGxheWVyLT5zb3VyY2VBcHBlbmQoaWQsIGRhdGEsIGxlbmd0aCk7Cit9CisKK2Jvb2wgV2Vi
TWVkaWFTb3VyY2VDbGllbnRJbXBsOjphYm9ydChjb25zdCBXZWJTdHJpbmcmIGlkKQoreworICAg
IHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBYm9ydChpZCk7Cit9CisKK2RvdWJsZSBX
ZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmR1cmF0aW9uKCkKK3sKKyAgICByZXR1cm4gbV93ZWJN
ZWRpYVBsYXllci0+ZHVyYXRpb24oKTsKK30KKwordm9pZCBXZWJNZWRpYVNvdXJjZUNsaWVudElt
cGw6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICByZXR1cm4gbV93ZWJNZWRp
YVBsYXllci0+c291cmNlU2V0RHVyYXRpb24oZHVyYXRpb24pOworfQorCit2b2lkIFdlYk1lZGlh
U291cmNlQ2xpZW50SW1wbDo6ZW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMgc3RhdHVzKQor
eworICAgIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUVuZE9mU3RyZWFtKHN0YXRpY19jYXN0PFdl
Yk1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cz4oc3RhdHVzKSk7Cit9CisKK2Jvb2wgV2Vi
TWVkaWFTb3VyY2VDbGllbnRJbXBsOjpzZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgV2ViU3RyaW5n
JiBpZCwgZG91YmxlIG9mZnNldCkKK3sKKyAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291
cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpOworfQorCiBzdGF0aWMgUGFzc093blB0
cjxXZWJNZWRpYVBsYXllcj4gY3JlYXRlV2ViTWVkaWFQbGF5ZXIoV2ViTWVkaWFQbGF5ZXJDbGll
bnQqIGNsaWVudCwgY29uc3QgV2ViVVJMJiB1cmwsIEZyYW1lKiBmcmFtZSkKIHsKICAgICBXZWJG
cmFtZUltcGwqIHdlYkZyYW1lID0gV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpOwpAQCAt
MjE4LDIyICsyOTcsMjcgQEAgV2ViTWVkaWFQbGF5ZXI6OlByZWxvYWQgV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpwcmVsb2FkKCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTWVk
aWFQbGF5ZXI6OlByZWxvYWQ+KG1fcHJlbG9hZCk7CiB9CiAKKy8vIEZJWE1FKGFjb2x3ZWxsKSA6
IFJlbW92ZSB0aGlzIGFuZCBzb3VyY2VVUkwoKSBvbmNlIHRoZSBDaHJvbWl1bSBjb2RlIGltcGxl
bWVudHMKKy8vIGl0cyBvd24gdmVyc2lvbiBvZiBXZWJNZWRpYVBsYXllcjo6bG9hZChXZWJVUkws
IFdlYk1lZGlhU291cmNlLCBDT1JTTW9kZSkuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEwMzcxCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291
cmNlT3BlbmVkKCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIEFTU0VSVChtX21l
ZGlhUGxheWVyKTsKLSAgICBtX21lZGlhUGxheWVyLT5zb3VyY2VPcGVuZWQoKTsKKyAgICBBU1NF
UlQobV93ZWJNZWRpYVBsYXllcik7CisgICAgaWYgKG1fbWVkaWFTb3VyY2UpIHsKKyAgICAgICAg
T3duUHRyPFdlYk1lZGlhU291cmNlPiBtZWRpYVNvdXJjZSA9IGFkb3B0UHRyKG5ldyBXZWJNZWRp
YVNvdXJjZUltcGwobV9tZWRpYVNvdXJjZSkpOworICAgICAgICBtZWRpYVNvdXJjZS0+b3Blbihu
ZXcgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsKG1fd2ViTWVkaWFQbGF5ZXIuZ2V0KCkpKTsKKyAg
ICB9CiAjZW5kaWYKIH0KIAogV2ViS2l0OjpXZWJVUkwgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
Ojpzb3VyY2VVUkwoKSBjb25zdAogewogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgQVNT
RVJUKG1fbWVkaWFQbGF5ZXIpOwotICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgbV9t
ZWRpYVBsYXllci0+c291cmNlVVJMKCkpOwotI2Vsc2UKLSAgICByZXR1cm4gS1VSTCgpOworICAg
IGlmIChtX21lZGlhU291cmNlKQorICAgICAgICByZXR1cm4gbV91cmw7CiAjZW5kaWYKKyAgICBy
ZXR1cm4gS1VSTCgpOwogfQogCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6a2V5QWRk
ZWQoY29uc3QgV2ViU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFdlYlN0cmluZyYgc2Vzc2lvbklk
KQpAQCAtMzIyLDggKzQwNiwyNCBAQCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6ZGlz
YWJsZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKQogCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbDo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBtX3VybCA9IHVybDsKKyAgICBt
X3VybCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOworI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCisgICAgbV9tZWRpYVNvdXJjZSA9IDA7CisjZW5kaWYKKyAgICBsb2FkUmVxdWVzdGVkKCk7
Cit9CiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQordm9pZCBXZWJNZWRpYVBsYXllckNsaWVu
dEltcGw6OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFT
b3VyY2U+IG1lZGlhU291cmNlKQoreworICAgIG1fdXJsID0gS1VSTChQYXJzZWRVUkxTdHJpbmcs
IHVybCk7CisgICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOworICAgIGxvYWRSZXF1ZXN0
ZWQoKTsKK30KKyNlbmRpZgorCit2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6bG9hZFJl
cXVlc3RlZCgpCit7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2ViTWVkaWFQbGF5ZXJNdXRl
eCk7CiAgICAgaWYgKG1fcHJlbG9hZCA9PSBNZWRpYVBsYXllcjo6Tm9uZSkgewogI2lmIEVOQUJM
RShXRUJfQVVESU8pCkBAIC0zNDIsMTUgKzQ0MiwyMSBAQCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbDo6bG9hZEludGVybmFsKCkKICNlbmRpZgogCiAgICAgRnJhbWUqIGZyYW1lID0gc3Rh
dGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG1fbWVkaWFQbGF5ZXItPm1lZGlhUGxheWVyQ2xp
ZW50KCkpLT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIG1fd2ViTWVkaWFQbGF5ZXIgPSBjcmVh
dGVXZWJNZWRpYVBsYXllcih0aGlzLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmwpLCBmcmFt
ZSk7CisgICAgbV93ZWJNZWRpYVBsYXllciA9IGNyZWF0ZVdlYk1lZGlhUGxheWVyKHRoaXMsIG1f
dXJsLCBmcmFtZSk7CiAgICAgaWYgKG1fd2ViTWVkaWFQbGF5ZXIpIHsKICNpZiBFTkFCTEUoV0VC
X0FVRElPKQogICAgICAgICAvLyBNYWtlIHN1cmUgaWYgd2UgY3JlYXRlL3JlLWNyZWF0ZSB0aGUg
V2ViTWVkaWFQbGF5ZXIgdGhhdCB3ZSB1cGRhdGUgb3VyIHdyYXBwZXIuCiAgICAgICAgIG1fYXVk
aW9Tb3VyY2VQcm92aWRlci53cmFwKG1fd2ViTWVkaWFQbGF5ZXItPmF1ZGlvU291cmNlUHJvdmlk
ZXIoKSk7CiAjZW5kaWYKLSAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+bG9hZCgKLSAgICAgICAg
ICAgIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybCksCi0gICAgICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJNZWRpYVBsYXllcjo6Q09SU01vZGU+KG1fbWVkaWFQbGF5ZXItPm1lZGlhUGxheWVyQ2xp
ZW50KCktPm1lZGlhUGxheWVyQ09SU01vZGUoKSkpOworCisgICAgICAgIFdlYk1lZGlhUGxheWVy
OjpDT1JTTW9kZSBjb3JzTW9kZSA9IHN0YXRpY19jYXN0PFdlYk1lZGlhUGxheWVyOjpDT1JTTW9k
ZT4obV9tZWRpYVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJDT1JTTW9k
ZSgpKTsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgICAgICBpZiAobV9tZWRpYVNvdXJj
ZSkgeworICAgICAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+bG9hZChtX3VybCwgbmV3IFdlYk1l
ZGlhU291cmNlSW1wbChtX21lZGlhU291cmNlKSwgY29yc01vZGUpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+bG9hZCht
X3VybCwgY29yc01vZGUpOwogICAgIH0KIH0KIApAQCAtNDA3LDcwICs1MTMsNiBAQCBib29sIFdl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Y2FuRW50ZXJGdWxsc2NyZWVuKCkgY29uc3QKIH0KICNl
bmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLVdlYkNvcmU6Ok1lZGlhUGxheWVyOjpB
ZGRJZFN0YXR1cyBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZUFkZElkKGNvbnN0IFN0
cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVj
cykKLXsKLSAgICBpZiAoIW1fd2ViTWVkaWFQbGF5ZXIpCi0gICAgICAgIHJldHVybiBXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6Tm90U3VwcG9ydGVkOwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpBZGRJZFN0YXR1cz4obV93ZWJNZWRpYVBsYXllci0+c291cmNl
QWRkSWQoaWQsIHR5cGUsIGNvZGVjcykpOwotfQotCi1ib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbDo6c291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkKLXsKLSAgICBpZiAoIW1fd2Vi
TWVkaWFQbGF5ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX3dlYk1l
ZGlhUGxheWVyLT5zb3VyY2VSZW1vdmVJZChpZCk7Ci19Ci0KLVBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VCdWZmZXJlZChjb25zdCBTdHJpbmcm
IGlkKQotewotICAgIGlmICghbV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAgcmV0dXJuIFRpbWVS
YW5nZXM6OmNyZWF0ZSgpOwotCi0gICAgV2ViVGltZVJhbmdlcyB3ZWJSYW5nZXMgPSBtX3dlYk1l
ZGlhUGxheWVyLT5zb3VyY2VCdWZmZXJlZChpZCk7Ci0gICAgUmVmUHRyPFRpbWVSYW5nZXM+IHJh
bmdlcyA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
d2ViUmFuZ2VzLnNpemUoKTsgKytpKQotICAgICAgICByYW5nZXMtPmFkZCh3ZWJSYW5nZXNbaV0u
c3RhcnQsIHdlYlJhbmdlc1tpXS5lbmQpOwotICAgIHJldHVybiByYW5nZXMucmVsZWFzZSgpOwot
fQotCi1ib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlQXBwZW5kKGNvbnN0IFN0
cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKLXsK
LSAgICBpZiAobV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5
ZXItPnNvdXJjZUFwcGVuZChpZCwgZGF0YSwgbGVuZ3RoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLWJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VBYm9ydChjb25zdCBTdHJp
bmcmIGlkKQotewotICAgIGlmICghbV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUFib3J0KGlkKTsKLX0K
LQotdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZVNldER1cmF0aW9uKGRvdWJs
ZSBkdXJhdGlvbikKLXsKLSAgICBpZiAobV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAgbV93ZWJN
ZWRpYVBsYXllci0+c291cmNlU2V0RHVyYXRpb24oZHVyYXRpb24pOwotfQotCi12b2lkIFdlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlRW5kT2ZTdHJlYW0oV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OkVuZE9mU3RyZWFtU3RhdHVzIHN0YXR1cykKLXsKLSAgICBpZiAobV93ZWJNZWRpYVBsYXll
cikKLSAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+c291cmNlRW5kT2ZTdHJlYW0oc3RhdGljX2Nh
c3Q8V2ViTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzPihzdGF0dXMpKTsKLX0KLQotYm9v
bCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChjb25z
dCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KQotewotICAgIGlmICghbV93ZWJNZWRpYVBsYXll
cikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5z
b3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoaWQsIG9mZnNldCk7Ci19Ci0jZW5kaWYKLQogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0
YUxlbmd0aCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmgKaW5kZXggM2Y3MGM3MzVjY2I2NjhkYmY1ZmZiNTczODVkNzBi
NGNmYjRhZTc2MS4uOTlkMmU4YmRiZTg0NTQ4MGI3NWQxM2FmZWU5YzUzZWRkOTRlMGY3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsLmgKQEAgLTk2LDYgKzk2LDkgQEAgcHVibGljOgogCiAgICAgLy8gTWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlIG1ldGhvZHM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3QgV1RG
OjpTdHJpbmcmIHVybCk7CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2aXJ0dWFsIHZv
aWQgbG9hZChjb25zdCBXVEY6OlN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlh
U291cmNlPik7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTG9hZCgpOwogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKQEAgLTE1NywxNyArMTYwLDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwdXRDdXJyZW50RnJhbWUoV2ViVmlkZW9GcmFtZSopOwogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OkFkZElkU3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcyk7Ci0gICAgdmlydHVhbCBib29s
IHNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OlRpbWVSYW5nZXM+IHNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYpOwot
ICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgdW5zaWdu
ZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIGJvb2wgc291cmNl
QWJvcnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZVNldER1cmF0aW9u
KGRvdWJsZSk7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cyk7Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZVNl
dFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcmLCBkb3VibGUgb2Zmc2V0KTsKLSNlbmRpZgot
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0
RGF0YUxlbmd0aCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpNZWRpYVBsYXllcjo6
TWVkaWFLZXlFeGNlcHRpb24gYWRkS2V5KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCB1
bnNpZ25lZCBjaGFyKiBrZXksIHVuc2lnbmVkIGtleUxlbmd0aCwgY29uc3QgdW5zaWduZWQgY2hh
ciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCkgT1ZFUlJJREU7CkBAIC0xODIsNiArMTc0LDcgQEAgcHJvdGVjdGVkOgogICAgIFdlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbCgpOwogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0RGVsYXllZExv
YWQoKTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0ZWQoKTsKICAgICB2b2lkIGxvYWRJbnRlcm5hbCgp
OwogCiAgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlPiBjcmVhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXIqKTsKQEAgLTIwMSw3ICsxOTQsNyBA
QCBwcml2YXRlOgogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyKiBtX21lZGlhUGxheWVyOwogICAg
IE93blB0cjxXZWJNZWRpYVBsYXllcj4gbV93ZWJNZWRpYVBsYXllcjsKICAgICBXZWJWaWRlb0Zy
YW1lKiBtX2N1cnJlbnRWaWRlb0ZyYW1lOwotICAgIFN0cmluZyBtX3VybDsKKyAgICBXZWJDb3Jl
OjpLVVJMIG1fdXJsOwogICAgIGJvb2wgbV9kZWxheWluZ0xvYWQ7CiAgICAgV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OlByZWxvYWQgbV9wcmVsb2FkOwogICAgIFJlZlB0cjxXZWJIZWxwZXJQbHVnaW5J
bXBsPiBtX2hlbHBlclBsdWdpbjsKQEAgLTI1OSw2ICsyNTIsMTAgQEAgcHJpdmF0ZToKIAogICAg
IEF1ZGlvU291cmNlUHJvdmlkZXJJbXBsIG1fYXVkaW9Tb3VyY2VQcm92aWRlcjsKICNlbmRpZgor
CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTb3Vy
Y2U+IG1fbWVkaWFTb3VyY2U7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNlSW1wbC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTVlYzg5MjJjZmY3MmI0YzFlMzhlMmVlMTdjMzMwZWI2NDE4OTBjNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNl
SW1wbC5jcHAKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViTWVkaWFTb3VyY2VJbXBsLmgiCisKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVByaXZhdGUuaCIK
KyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZUNsaWVudC5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUlt
cGwgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBNZWRpYVNvdXJjZVByaXZhdGVJbXBsKFBhc3NPd25QdHI8V2ViTWVkaWFTb3VyY2VD
bGllbnQ+KTsKKyAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZVByaXZhdGVJbXBsKCkgeyB9CisKKyAg
ICAvLyBNZWRpYVNvdXJjZVByaXZhdGUgbWV0aG9kcy4KKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZTo6QWRkSWRTdGF0dXMgYWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKTsKKyAgICB2aXJ0
dWFsIGJvb2wgcmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlRpbWVSYW5nZXM+IGJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpOworICAg
IHZpcnR1YWwgYm9vbCBhcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWJvcnQoY29uc3Qg
U3RyaW5nJiBpZCk7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kT2ZTdHJlYW0o
V2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpFbmRPZlN0cmVhbVN0YXR1cyk7CisgICAgdmly
dHVhbCBib29sIHNldFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zm
c2V0KTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVu
dD4gbV9jbGllbnQ7Cit9OworCitNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpNZWRpYVNvdXJjZVBy
aXZhdGVJbXBsKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudD4gY2xpZW50
KQorICAgIDogbV9jbGllbnQoY2xpZW50KQoreworfQorCitXZWJDb3JlOjpNZWRpYVNvdXJjZVBy
aXZhdGU6OkFkZElkU3RhdHVzIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmFkZElkKGNvbnN0IFN0
cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVj
cykKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFT
b3VyY2VQcml2YXRlOjpOb3RTdXBwb3J0ZWQ7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRJZFN0YXR1cz4obV9jbGllbnQtPmFkZElkKGlk
LCB0eXBlLCBjb2RlY3MpKTsKK30KKworYm9vbCBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpyZW1v
dmVJZChjb25zdCBTdHJpbmcmIGlkKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2NsaWVudC0+cmVtb3ZlSWQoaWQpOworfQorCitQ
YXNzUmVmUHRyPFdlYkNvcmU6OlRpbWVSYW5nZXM+IE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmJ1
ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OlRpbWVSYW5nZXM6OmNyZWF0ZSgpOworCisgICAgV2ViVGltZVJhbmdl
cyB3ZWJSYW5nZXMgPSBtX2NsaWVudC0+YnVmZmVyZWQoaWQpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpUaW1lUmFuZ2VzPiByYW5nZXMgPSBXZWJDb3JlOjpUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYlJhbmdlcy5zaXplKCk7ICsraSkKKyAgICAgICAg
cmFuZ2VzLT5hZGQod2ViUmFuZ2VzW2ldLnN0YXJ0LCB3ZWJSYW5nZXNbaV0uZW5kKTsKKyAgICBy
ZXR1cm4gcmFuZ2VzLnJlbGVhc2UoKTsKK30KKworYm9vbCBNZWRpYVNvdXJjZVByaXZhdGVJbXBs
OjphcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiBtX2NsaWVudC0+YXBwZW5kKGlkLCBkYXRhLCBsZW5ndGgpOworfQor
Citib29sIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmFib3J0KGNvbnN0IFN0cmluZyYgaWQpCit7
CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IG1fY2xpZW50LT5hYm9ydChpZCk7Cit9CisKK2RvdWJsZSBNZWRpYVNvdXJjZVByaXZhdGVJbXBs
OjpkdXJhdGlvbigpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKKyAgICByZXR1cm4gbV9jbGllbnQt
PmR1cmF0aW9uKCk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6c2V0RHVyYXRp
b24oZG91YmxlIGR1cmF0aW9uKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGll
bnQtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKK30KKwordm9pZCBNZWRpYVNvdXJjZVByaXZhdGVJ
bXBsOjplbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkVuZE9mU3RyZWFt
U3RhdHVzIHN0YXR1cykKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5l
bmRPZlN0cmVhbShzdGF0aWNfY2FzdDxXZWJNZWRpYVNvdXJjZUNsaWVudDo6RW5kT2ZTdHJlYW1T
dGF0dXM+KHN0YXR1cykpOworfQorCitib29sIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OnNldFRp
bWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KQoreworICAgIGlm
ICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9jbGllbnQt
PnNldFRpbWVzdGFtcE9mZnNldChpZCwgb2Zmc2V0KTsKK30KKworCitXZWJNZWRpYVNvdXJjZUlt
cGw6OldlYk1lZGlhU291cmNlSW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlPiBt
ZWRpYVNvdXJjZSkKK3sKKyAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7Cit9CisKK1dl
Yk1lZGlhU291cmNlSW1wbDo6fldlYk1lZGlhU291cmNlSW1wbCgpCit7Cit9CisKKwordm9pZCBX
ZWJNZWRpYVNvdXJjZUltcGw6Om9wZW4oV2ViTWVkaWFTb3VyY2VDbGllbnQqIGNsaWVudCkKK3sK
KyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICBtX21lZGlhU291cmNlLT5zZXRQcml2YXRlQW5kT3Bl
bihhZG9wdFB0cihuZXcgTWVkaWFTb3VyY2VQcml2YXRlSW1wbChhZG9wdFB0cihjbGllbnQpKSkp
OworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTWVkaWFTb3VyY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJN
ZWRpYVNvdXJjZUltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGFiMzFlMmI1ZGJmN2M1ZDdmYmVmYTI2MWVh
ZGZlZGNhOWY1ZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTWVkaWFTb3VyY2VJbXBsLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFT
b3VyY2VJbXBsX2gKKyNkZWZpbmUgV2ViTWVkaWFTb3VyY2VJbXBsX2gKKworI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIldlYk1l
ZGlhU291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVNvdXJj
ZUltcGwgOiBwdWJsaWMgV2ViTWVkaWFTb3VyY2UgeworcHVibGljOgorICAgIFdlYk1lZGlhU291
cmNlSW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlPik7CisgICAgdmlydHVhbCB+
V2ViTWVkaWFTb3VyY2VJbXBsKCk7CisKKyAgICAvLyBXZWJNZWRpYVNvdXJjZSBtZXRob2RzLgor
ICAgIHZpcnR1YWwgdm9pZCBvcGVuKFdlYk1lZGlhU291cmNlQ2xpZW50Kik7CisKK3ByaXZhdGU6
CisgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlPiBtX21lZGlhU291cmNlOworfTsKKwor
fQorCisjZW5kaWYKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189816</attachid>
            <date>2013-02-22 13:46:36 -0800</date>
            <delta_ts>2013-02-22 14:40:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109857-20130222134255.patch</filename>
            <type>text/plain</type>
            <size>89272</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI5ODRhMzJhOWNlNDk1
ZDM2MGIxY2Y4OWJhZWVkZGJmYjdiYjkzMy4uZmQzMzU3MTYzYzBlOTNjYzBkODkxM2E2MmFkNWVi
YTM1MjYwZmIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTAyLTIyICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZhY3RvciBNZWRp
YVNvdXJjZSBtZXRob2RzIG91dCBvZiBNZWRpYVBsYXllciAmIE1lZGlhUGxheWVyUHJpdmF0ZSBh
bmQgaW50byBuZXcgTWVkaWFTb3VyY2VQcml2YXRlICYgU291cmNlQnVmZmVyUHJpdmF0ZSBpbnRl
cmZhY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA5ODU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBpcyBhIHNpbXBsZSByZWZhY3RvciB0aGF0IG1vdmVzIE1lZGlhU291cmNlIHJlbGF0ZWQg
bWV0aG9kcyBvdXQgb2YgTWVkaWFQbGF5ZXIgJiBNZWRpYVBsYXllclByaXZhdGUKKyAgICAgICAg
c28gdGhhdCB0aGUgTWVkaWFTb3VyY2UgaW1wbGVtZW50YXRpb24gY2FuIGJlIHVwZGF0ZWQgd2l0
aG91dCBmdXJ0aGVyIHBvbGx1dGluZyB0aGVzZSBpbnRlcmZhY2VzLgorICAgICAgICBNZWRpYVNv
dXJjZVByaXZhdGUgYW5kIFNvdXJjZUJ1ZmZlclByaXZhdGUgYXJlIHRoZSBuZXcgV2ViQ29yZSBp
bnRlcmZhY2VzIHRoYXQgcG9ydHMgbXVzdCBpbXBsZW1lbnQgdG8gCisgICAgICAgIHN1cHBvcnQg
dGhlIE1lZGlhU291cmNlIEFQSS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIHVzZXIgdmlz
aWJsZSBiZWhhdmlvciBoYXMgY2hhbmdlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Ok1lZGlh
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpkdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlOjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjplbmRP
ZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0ZUFuZE9w
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Omhhc1BlbmRpbmdBY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c3RvcCk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oOgorICAgICAgICAoTWVkaWFTb3VyY2UpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpTb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyOjpidWZmZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXI6OnNldFRpbWVzdGFtcE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6
OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFib3J0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyOjppc0Nsb3NlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU291cmNlQnVmZmVyKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyTGlzdDo6U291cmNlQnVmZmVyTGlzdCk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0Lmg6CisgICAgICAgIChT
b3VyY2VCdWZmZXJMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoSFRNTE1lZGlhRWxlbWVudCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAo
TnVsbE1lZGlhUGxheWVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOdWxsTWVkaWFQbGF5
ZXJQcml2YXRlOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpsb2FkKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRX
aXRoTmV4dE1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZWRpYVBsYXllckNsaWVudCk6
CisgICAgICAgIChNZWRpYVBsYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZS5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZWRpYVNvdXJjZVByaXZhdGUpOiBDb250YWlucyB0
aGUgTWVkaWFTb3VyY2UgbWV0aG9kcyBleHRyYWN0ZWQgZnJvbSBNZWRpYVBsYXllci4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6TWVkaWFTb3VyY2VQcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6fk1lZGlhU291cmNlUHJpdmF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oOiAKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU291cmNlQnVmZmVyUHJpdmF0ZSk6IENvbnRhaW5z
IHRoZSBTb3VyY2VCdWZmZXIgbWV0aG9kcyBleHRyYWN0ZWQgZnJvbSBNZWRpYVBsYXllci4KKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6flNvdXJjZUJ1ZmZlclBy
aXZhdGUpOgorCiAyMDEzLTAyLTIyICBDaHJpcyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+
CiAKICAgICAgICAgQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCkgbmVlZHMgZXh0cmEgZGV2aWNl
IGlkZW50aWZpY2F0aW9uIGluZm9ybWF0aW9uIGZvciBsaXZlL2xvY2FsIGlucHV0IHN0cmVhbXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYTIyMDViNmM0MGFlNmZiMDQ0ZDhlY2ZhN2Iw
MTQxOWIzOTNkZDdlZC4uOWI2MmU1ODBjY2RkNDE4YzEzMjliN2U3NTU1YjBkZjBiOGYzY2YwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MCBAQAorMjAxMy0wMi0yMiAg
QWFyb24gQ29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBGYWN0b3Ig
TWVkaWFTb3VyY2UgbWV0aG9kcyBvdXQgb2YgTWVkaWFQbGF5ZXIgJiBNZWRpYVBsYXllclByaXZh
dGUgYW5kIGludG8gbmV3IE1lZGlhU291cmNlUHJpdmF0ZSAmIFNvdWNlQnVmZmVyUHJpdmF0ZSBp
bnRlcmZhY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA5ODU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2ViTWVkaWFTb3VyY2UsIFdlYk1lZGlhU291cmNlQ2xpZW50LCBhbmQgV2ViU291cmNlQnVm
ZmVyIHdlcmUgY3JlYXRlZCB0byByZXBsYWNlIHRoZSBNZWRpYVNvdXJjZSBtZXRob2RzIGluIAor
ICAgICAgICBXZWJNZWRpYVBsYXllciBhbmQgV2ViTWVkaWFQbGF5ZXJDbGllbnQuIFRoaXMgYWxs
b3dzIHRoZSBNZWRpYVNvdXJjZSBpbXBsZW1lbnRhdGlvbiB0byBiZSB1cGRhdGVkIHdpdGhvdXQg
CisgICAgICAgIGZ1cnRoZXIgcG9sbHV0aW5nIHRoZSBtZWRpYSBwbGF5ZXIgaW50ZXJmYWNlcy4K
KworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhUGxheWVy
Lmg6CisgICAgICAgIChXZWJNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
UGxheWVyOjpsb2FkKToKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhU291cmNlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTWVkaWFTb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZTo6fldlYk1lZGlhU291cmNlKToKKyAgICAgICAgKiBw
dWJsaWMvV2ViTWVkaWFTb3VyY2VDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJNZWRpYVNvdXJjZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
U291cmNlQ2xpZW50Ojp+V2ViTWVkaWFTb3VyY2VDbGllbnQpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJTb3VyY2VCdWZmZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJT
b3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VyY2VCdWZmZXI6On5XZWJTb3Vy
Y2VCdWZmZXIpOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKKyAgICAg
ICAgKiBzcmMvTWVkaWFTb3VyY2VQcml2YXRlSW1wbC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6Ok1lZGlhU291
cmNlUHJpdmF0ZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBs
OjphZGRTb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJ
bXBsOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6
OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6
ZW5kT2ZTdHJlYW0pOgorICAgICAgICAqIHNyYy9NZWRpYVNvdXJjZVByaXZhdGVJbXBsLmg6IAor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKE1lZGlhU291cmNlUHJpdmF0ZUltcGwpOiBJbXBs
ZW1lbnRzIE1lZGlhU291cmNlUHJpdmF0ZSB1c2luZyBXZWJNZWRpYVNvdXJjZS4KKyAgICAgICAg
KFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6fk1lZGlhU291cmNlUHJpdmF0ZUltcGwp
OgorICAgICAgICAqIHNyYy9Tb3VyY2VCdWZmZXJQcml2YXRlSW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlSW1wbDo6U291cmNl
QnVmZmVyUHJpdmF0ZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRl
SW1wbDo6YnVmZmVyZWQpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlSW1w
bDo6YXBwZW5kKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZUltcGw6OmFi
b3J0KToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZUltcGw6OnNldFRpbWVz
dGFtcE9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVJbXBsOjpy
ZW1vdmVkRnJvbU1lZGlhU291cmNlKToKKyAgICAgICAgKiBzcmMvU291cmNlQnVmZmVyUHJpdmF0
ZUltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChTb3VyY2VCdWZmZXJQcml2YXRl
SW1wbCk6IEltcGxlbWVudHMgU291cmNlQnVmZmVyUHJpdmF0ZSB1c2luZyBXZWJTb3VyY2VCdWZm
ZXIuCisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVJbXBsOjp+U291cmNlQnVm
ZmVyUHJpdmF0ZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhU291cmNlQ2xpZW50SW1w
bCk6IFRlbXBvcmFyeSBXZWJNZWRpYVNvdXJjZUNsaWVudCBpbXBsZW1lbnRhdGlvbiB0byBrZWVw
IHRoaW5ncyB3b3JraW5nIHVudGlsIENocm9taXVtCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VzIGxhbmQuCisgICAgICAgIChXZWJTb3VyY2VCdWZmZXJJbXBsKTog
VGVtcG9yYXJ5IFdlYlNvdXJjZUJ1ZmZlciBpbXBsZW1lbnRhdGlvbiB0byBrZWVwIHRoaW5ncyB3
b3JraW5nIHVudGlsIENocm9taXVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
bmdlcyBsYW5kLgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6Oldl
Yk1lZGlhU291cmNlQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNl
Q2xpZW50SW1wbDo6fldlYk1lZGlhU291cmNlQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6YWRkU291cmNlQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmVuZE9mU3RyZWFtKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU291cmNlQnVmZmVySW1wbDo6V2ViU291cmNlQnVmZmVySW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNvdXJjZUJ1ZmZlckltcGw6OmJ1ZmZlcmVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU291cmNlQnVmZmVySW1wbDo6YXBwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291
cmNlQnVmZmVySW1wbDo6YWJvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VyY2VCdWZmZXJJ
bXBsOjpzZXRUaW1lc3RhbXBPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VyY2VCdWZm
ZXJJbXBsOjpyZW1vdmVkRnJvbU1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VPcGVuZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZVVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbDo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6bG9hZFJlcXVlc3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbDo6bG9hZEludGVybmFsKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJNZWRpYVBsYXllckNsaWVudEltcGwpOgor
ICAgICAgICAqIHNyYy9XZWJNZWRpYVNvdXJjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VJbXBsOjpXZWJNZWRpYVNvdXJjZUltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUltcGw6On5XZWJNZWRpYVNvdXJjZUlt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNvdXJjZUltcGw6Om9wZW4pOgorICAgICAg
ICAqIHNyYy9XZWJNZWRpYVNvdXJjZUltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJNZWRpYVNvdXJjZUltcGwpOgorCiAyMDEzLTAyLTIyICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTQzNzM0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcAppbmRleCBmZDY0Mjk1ZDU5ZDdhZWViNzY2OTU4MTg1ZGVkYjFjYThmMjc3
NjdhLi44MGNmNmMxMzk4YmE4MzgyNmY0YWM4NDFjNjQwYzY2ZTVlNDdhNzA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAt
MzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKICNpbmNsdWRlICJFdmVu
dC5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGUuaCIKICNpbmNsdWRlICJUaW1lUmFu
Z2VzLmgiCiAjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KIApAQCAtNTAsNyArNTEsNiBAQCBQ
YXNzUmVmUHRyPE1lZGlhU291cmNlPiBNZWRpYVNvdXJjZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCiBNZWRpYVNvdXJjZTo6TWVkaWFTb3VyY2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlz
KQogICAgICwgbV9yZWFkeVN0YXRlKGNsb3NlZEtleXdvcmQoKSkKLSAgICAsIG1fcGxheWVyKDAp
CiAgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKHRoaXMp
KQogewogICAgIG1fc291cmNlQnVmZmVycyA9IFNvdXJjZUJ1ZmZlckxpc3Q6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIG1fYXN5bmNFdmVudFF1ZXVlLmdldCgpKTsKQEAgLTg4LDcg
Kzg4LDcgQEAgU291cmNlQnVmZmVyTGlzdCogTWVkaWFTb3VyY2U6OmFjdGl2ZVNvdXJjZUJ1ZmZl
cnMoKQogCiBkb3VibGUgTWVkaWFTb3VyY2U6OmR1cmF0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjpxdWlldF9OYU4oKSA6IG1fcGxheWVyLT5kdXJhdGlvbigpOworICAgIHJldHVybiBt
X3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpID8gc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OnF1aWV0X05hTigpIDogbV9wcml2YXRlLT5kdXJhdGlvbigpOwogfQogCiB2b2lkIE1lZGlh
U291cmNlOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQpA
QCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnNldER1cmF0aW9uKGRvdWJsZSBk
dXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9wbGF5ZXItPnNvdXJjZVNldER1cmF0
aW9uKGR1cmF0aW9uKTsKKyAgICBtX3ByaXZhdGUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKIH0K
IAogU291cmNlQnVmZmVyKiBNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMjYsMzQgKzEyNiwzMSBAQCBTb3VyY2VC
dWZmZXIqIE1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlLCBF
eGNlcHRpb25Db2RlJiBlYwogCiAgICAgLy8gNC4gSWYgdGhlIHJlYWR5U3RhdGUgYXR0cmlidXRl
IGlzIG5vdCBpbiB0aGUgIm9wZW4iIHN0YXRlIHRoZW4gdGhyb3cgYW4KICAgICAvLyBJTlZBTElE
X1NUQVRFX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICghbV9w
bGF5ZXIgfHwgbV9yZWFkeVN0YXRlICE9IG9wZW5LZXl3b3JkKCkpIHsKKyAgICBpZiAoIW1fcHJp
dmF0ZSB8fCBtX3JlYWR5U3RhdGUgIT0gb3BlbktleXdvcmQoKSkgewogICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICAvLyA1LiBD
cmVhdGUgYSBuZXcgU291cmNlQnVmZmVyIG9iamVjdCBhbmQgYXNzb2NpYXRlZCByZXNvdXJjZXMu
Ci0gICAgU3RyaW5nIGlkID0gbV9zb3VyY2VCdWZmZXJzLT5nZW5lcmF0ZVVuaXF1ZUlkKCk7Ci0g
ICAgaWYgKGlkID09IGVtcHR5U3RyaW5nKCkpIHsKLSAgICAgICAgZWMgPSBRVU9UQV9FWENFRURF
RF9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBPd25QdHI8U291cmNlQnVmZmVy
UHJpdmF0ZT4gc291cmNlQnVmZmVyUHJpdmF0ZTsKKyAgICBzd2l0Y2ggKG1fcHJpdmF0ZS0+YWRk
U291cmNlQnVmZmVyKGNvbnRlbnRUeXBlLnR5cGUoKSwgY29kZWNzLCAmc291cmNlQnVmZmVyUHJp
dmF0ZSkpIHsKKyAgICBjYXNlIE1lZGlhU291cmNlUHJpdmF0ZTo6T2s6IHsKKyAgICAgICAgQVNT
RVJUKHNvdXJjZUJ1ZmZlclByaXZhdGUpOworICAgICAgICBSZWZQdHI8U291cmNlQnVmZmVyPiBi
dWZmZXIgPSBTb3VyY2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VCdWZmZXJQcml2YXRlLnJlbGVhc2Uo
KSwgdGhpcyk7CiAKLSAgICBSZWZQdHI8U291cmNlQnVmZmVyPiBidWZmZXIgPSBTb3VyY2VCdWZm
ZXI6OmNyZWF0ZShpZCwgdGhpcyk7Ci0KLSAgICBzd2l0Y2ggKG1fcGxheWVyLT5zb3VyY2VBZGRJ
ZChidWZmZXItPmlkKCksIGNvbnRlbnRUeXBlLnR5cGUoKSwgY29kZWNzKSkgewotICAgIGNhc2Ug
TWVkaWFQbGF5ZXI6Ok9rOgogICAgICAgICAvLyA2LiBBZGQgdGhlIG5ldyBvYmplY3QgdG8gc291
cmNlQnVmZmVycyBhbmQgZmlyZSBhIGFkZHNvdXJjZWJ1ZmZlciBvbiB0aGF0IG9iamVjdC4KICAg
ICAgICAgbV9zb3VyY2VCdWZmZXJzLT5hZGQoYnVmZmVyKTsKICAgICAgICAgbV9hY3RpdmVTb3Vy
Y2VCdWZmZXJzLT5hZGQoYnVmZmVyKTsKICAgICAgICAgLy8gNy4gUmV0dXJuIHRoZSBuZXcgb2Jq
ZWN0IHRvIHRoZSBjYWxsZXIuCiAgICAgICAgIHJldHVybiBidWZmZXIuZ2V0KCk7Ci0gICAgY2Fz
ZSBNZWRpYVBsYXllcjo6Tm90U3VwcG9ydGVkOgorICAgIH0KKyAgICBjYXNlIE1lZGlhU291cmNl
UHJpdmF0ZTo6Tm90U3VwcG9ydGVkOgogICAgICAgICAvLyAyIChjb250KS4gSWYgdHlwZSBjb250
YWlucyBhIE1JTUUgdHlwZSAuLi4gdGhhdCBpcyBub3Qgc3VwcG9ydGVkIHdpdGggdGhlIHR5cGVz
IAogICAgICAgICAvLyBzcGVjaWZpZWQgZm9yIHRoZSBvdGhlciBTb3VyY2VCdWZmZXIgb2JqZWN0
cyBpbiBzb3VyY2VCdWZmZXJzLCB0aGVuIHRocm93CiAgICAgICAgIC8vIGEgTk9UX1NVUFBPUlRF
RF9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgZWMgPSBOT1Rf
U1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6
UmVhY2hlZElkTGltaXQ6CisgICAgY2FzZSBNZWRpYVNvdXJjZVByaXZhdGU6OlJlYWNoZWRJZExp
bWl0OgogICAgICAgICAvLyAzIChjb250KS4gSWYgdGhlIHVzZXIgYWdlbnQgY2FuJ3QgaGFuZGxl
IGFueSBtb3JlIFNvdXJjZUJ1ZmZlciBvYmplY3RzIHRoZW4gdGhyb3cgCiAgICAgICAgIC8vIGEg
UVVPVEFfRVhDRUVERURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAg
ICAgIGVjID0gUVVPVEFfRVhDRUVERURfRVJSOwpAQCAtMTc2LDcgKzE3Myw3IEBAIHZvaWQgTWVk
aWFTb3VyY2U6OnJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXIqIGJ1ZmZlciwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAKICAgICAvLyAyLiBJZiBzb3VyY2VCdWZmZXJzIGlzIGVtcHR5IHRoZW4g
dGhyb3cgYW4gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZAogICAgIC8vIGFib3J0IHRo
ZXNlIHN0ZXBzLgotICAgIGlmICghbV9wbGF5ZXIgfHwgIW1fc291cmNlQnVmZmVycy0+bGVuZ3Ro
KCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZSB8fCAhbV9zb3VyY2VCdWZmZXJzLT5sZW5ndGgoKSkg
ewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMTkyLDcgKzE4OSw2IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJjZUJ1ZmZl
cihTb3VyY2VCdWZmZXIqIGJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyA3LiBE
ZXN0cm95IGFsbCByZXNvdXJjZXMgZm9yIHNvdXJjZUJ1ZmZlci4KICAgICBtX2FjdGl2ZVNvdXJj
ZUJ1ZmZlcnMtPnJlbW92ZShidWZmZXIpOwotICAgIG1fcGxheWVyLT5zb3VyY2VSZW1vdmVJZChi
dWZmZXItPmlkKCkpOwogCiAgICAgLy8gNC4gUmVtb3ZlIHRyYWNrIGluZm9ybWF0aW9uIGZyb20g
YXVkaW9UcmFja3MsIHZpZGVvVHJhY2tzLCBhbmQgdGV4dFRyYWNrcyBmb3IgYWxsIHRyYWNrcyAK
ICAgICAvLyBhc3NvY2lhdGVkIHdpdGggc291cmNlQnVmZmVyIGFuZCBmaXJlIGEgc2ltcGxlIGV2
ZW50IG5hbWVkIGNoYW5nZSBvbiB0aGUgbW9kaWZpZWQgbGlzdHMuCkBAIC0yMjAsNyArMjE2LDcg
QEAgdm9pZCBNZWRpYVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShjb25zdCBTdHJpbmcmIHN0YXRlKQog
ICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAgICAgIG1fc291
cmNlQnVmZmVycy0+Y2xlYXIoKTsKICAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5jbGVh
cigpOwotICAgICAgICBtX3BsYXllciA9IDA7CisgICAgICAgIG1fcHJpdmF0ZS5jbGVhcigpOwog
ICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRzb3VyY2VjbG9zZUV2ZW50
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0MSwxOSArMjM3LDE5IEBAIHZvaWQgTWVk
aWFTb3VyY2U6OmVuZE9mU3RyZWFtKGNvbnN0IFN0cmluZyYgZXJyb3IsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIC8vIDMuMSBodHRwOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmls
ZS90aXAvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI2RvbS1lbmRvZnN0cmVhbQogICAg
IC8vIDEuIElmIHRoZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSBpcyBub3QgaW4gdGhlICJvcGVuIiBz
dGF0ZSB0aGVuIHRocm93IGFuCiAgICAgLy8gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFu
ZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fcmVhZHlTdGF0ZSAh
PSBvcGVuS2V5d29yZCgpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFkeVN0YXRlICE9
IG9wZW5LZXl3b3JkKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIE1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cyBl
b3NTdGF0dXMgPSBNZWRpYVBsYXllcjo6RW9zTm9FcnJvcjsKKyAgICBNZWRpYVNvdXJjZVByaXZh
dGU6OkVuZE9mU3RyZWFtU3RhdHVzIGVvc1N0YXR1cyA9IE1lZGlhU291cmNlUHJpdmF0ZTo6RW9z
Tm9FcnJvcjsKIAogICAgIGlmIChlcnJvci5pc051bGwoKSB8fCBlcnJvci5pc0VtcHR5KCkpCi0g
ICAgICAgIGVvc1N0YXR1cyA9IE1lZGlhUGxheWVyOjpFb3NOb0Vycm9yOworICAgICAgICBlb3NT
dGF0dXMgPSBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05vRXJyb3I7CiAgICAgZWxzZSBpZiAoZXJy
b3IgPT0gIm5ldHdvcmsiKQotICAgICAgICBlb3NTdGF0dXMgPSBNZWRpYVBsYXllcjo6RW9zTmV0
d29ya0Vycm9yOworICAgICAgICBlb3NTdGF0dXMgPSBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05l
dHdvcmtFcnJvcjsKICAgICBlbHNlIGlmIChlcnJvciA9PSAiZGVjb2RlIikKLSAgICAgICAgZW9z
U3RhdHVzID0gTWVkaWFQbGF5ZXI6OkVvc0RlY29kZUVycm9yOworICAgICAgICBlb3NTdGF0dXMg
PSBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc0RlY29kZUVycm9yOwogICAgIGVsc2UgewogICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMjYxLDYzICsy
NTcsMTUgQEAgdm9pZCBNZWRpYVNvdXJjZTo6ZW5kT2ZTdHJlYW0oY29uc3QgU3RyaW5nJiBlcnJv
ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyAyLiBDaGFuZ2UgdGhlIHJlYWR5U3RhdGUg
YXR0cmlidXRlIHZhbHVlIHRvICJlbmRlZCIuCiAgICAgc2V0UmVhZHlTdGF0ZShlbmRlZEtleXdv
cmQoKSk7Ci0gICAgbV9wbGF5ZXItPnNvdXJjZUVuZE9mU3RyZWFtKGVvc1N0YXR1cyk7Ci19Ci0K
LVBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKGNvbnN0IFN0cmlu
ZyYgaWQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAotewotICAgIGlmICghbV9wbGF5ZXIgfHwg
bV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSkgewotICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV9wbGF5
ZXItPnNvdXJjZUJ1ZmZlcmVkKGlkKTsKLX0KLQotdm9pZCBNZWRpYVNvdXJjZTo6YXBwZW5kKGNv
bnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZGF0YSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCi17Ci0gICAgaWYgKCFkYXRhLmdldCgpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9B
Q0NFU1NfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX3BsYXllciB8
fCBtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV9yZWFkeVN0
YXRlID09IGVuZGVkS2V5d29yZCgpKQotICAgICAgICBzZXRSZWFkeVN0YXRlKG9wZW5LZXl3b3Jk
KCkpOwotCi0gICAgaWYgKCFtX3BsYXllci0+c291cmNlQXBwZW5kKGlkLCBkYXRhLT5kYXRhKCks
IGRhdGEtPmxlbmd0aCgpKSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgbV9wcml2YXRlLT5lbmRPZlN0cmVhbShlb3NTdGF0dXMpOwogfQog
Ci12b2lkIE1lZGlhU291cmNlOjphYm9ydChjb25zdCBTdHJpbmcmIGlkLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgTWVkaWFTb3VyY2U6OnNldFByaXZhdGVBbmRPcGVuKFBhc3NPd25QdHI8TWVk
aWFTb3VyY2VQcml2YXRlPiBtZWRpYVNvdXJjZVByaXZhdGUpCiB7Ci0gICAgaWYgKCFtX3BsYXll
ciB8fCBtX3JlYWR5U3RhdGUgIT0gb3BlbktleXdvcmQoKSkgewotICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX3BsYXll
ci0+c291cmNlQWJvcnQoaWQpKQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQot
Ym9vbCBNZWRpYVNvdXJjZTo6c2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYgaWQsIGRv
dWJsZSBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghbV9wbGF5ZXIgfHwg
bV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSkgewotICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFtX3Bs
YXllci0+c291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpKSB7Ci0gICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
cmV0dXJuIHRydWU7CisgICAgQVNTRVJUKG1lZGlhU291cmNlUHJpdmF0ZSk7CisgICAgQVNTRVJU
KCFtX3ByaXZhdGUpOworICAgIG1fcHJpdmF0ZSA9IG1lZGlhU291cmNlUHJpdmF0ZTsKKyAgICBz
ZXRSZWFkeVN0YXRlKG9wZW5LZXl3b3JkKCkpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1l
ZGlhU291cmNlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKQEAgLTMzMiwxMyArMjgwLDEzIEBAIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU291cmNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QKIAogYm9vbCBNZWRpYVNvdXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9wbGF5ZXIgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdF
dmVudHMoKQorICAgIHJldHVybiBtX3ByaXZhdGUgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1Bl
bmRpbmdFdmVudHMoKQogICAgICAgICB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rp
dml0eSgpOwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpzdG9wKCkKIHsKLSAgICBtX3BsYXllciA9
IDA7CisgICAgbV9wcml2YXRlLmNsZWFyKCk7CiAgICAgbV9hc3luY0V2ZW50UXVldWUtPmNhbmNl
bEFsbEV2ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmgKaW5kZXggMWQzZjM0NzZiNjc4MWYzYzlmNWNlNGZhNDJhZWM3Y2Uw
NTEwZGNiYy4uMjYwOTBhYTNkYmJjMmZhZDRlMGRlNjhmMDQ0MjhmZjI3YTQ5ZmQ3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaApAQCAt
MzUsNyArMzUsNyBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAi
R2VuZXJpY0V2ZW50UXVldWUuaCIKLSNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUg
Ik1lZGlhU291cmNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5oIgogI2luY2x1
ZGUgIlNvdXJjZUJ1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAt
NjUsMTIgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBlbmRPZlN0cmVhbShjb25zdCBTdHJp
bmcmIGVycm9yLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICB2b2lkIHNldE1lZGlhUGxheWVyKE1l
ZGlhUGxheWVyKiBwbGF5ZXIpIHsgbV9wbGF5ZXIgPSBwbGF5ZXI7IH0KLQotICAgIFBhc3NSZWZQ
dHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoY29uc3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8VWlu
dDhBcnJheT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYWJvcnQoY29uc3QgU3Ry
aW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIGJvb2wgc2V0VGltZXN0YW1wT2Zmc2V0KGNv
bnN0IFN0cmluZyYgaWQsIGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0UHJp
dmF0ZUFuZE9wZW4oUGFzc093blB0cjxNZWRpYVNvdXJjZVByaXZhdGU+KTsKIAogICAgIC8vIEV2
ZW50VGFyZ2V0IGludGVyZmFjZQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRl
cmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CkBAIC05Nyw3ICs5Miw3IEBAIHByaXZhdGU6CiAg
ICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogCiAgICAgU3RyaW5nIG1fcmVh
ZHlTdGF0ZTsKLSAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CisgICAgT3duUHRyPE1lZGlhU291
cmNlUHJpdmF0ZT4gbV9wcml2YXRlOwogCiAgICAgUmVmUHRyPFNvdXJjZUJ1ZmZlckxpc3Q+IG1f
c291cmNlQnVmZmVyczsKICAgICBSZWZQdHI8U291cmNlQnVmZmVyTGlzdD4gbV9hY3RpdmVTb3Vy
Y2VCdWZmZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuY3BwCmluZGV4IDFkNmU2MDZhN2FiN2QxZGMzZTc1ODQ0MmFjNmYxNDcyYTdi
YjczODYuLjJjMGYzN2MyYzc5ZmNhZTBmZjRhNGFiOTUzMDlmM2JhMjQxM2JkODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAK
QEAgLTMzLDEzICszMywyMCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAorI2luY2x1
ZGUgIk1lZGlhU291cmNlLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNvdXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgaWQsIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2U+IHNvdXJjZSkKLSAgICA6IG1faWQoaWQpCitQ
YXNzUmVmUHRyPFNvdXJjZUJ1ZmZlcj4gU291cmNlQnVmZmVyOjpjcmVhdGUoUGFzc093blB0cjxT
b3VyY2VCdWZmZXJQcml2YXRlPiBzb3VyY2VCdWZmZXJQcml2YXRlLCBQYXNzUmVmUHRyPE1lZGlh
U291cmNlPiBzb3VyY2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb3VyY2VCdWZmZXIo
c291cmNlQnVmZmVyUHJpdmF0ZSwgc291cmNlKSk7Cit9CisKK1NvdXJjZUJ1ZmZlcjo6U291cmNl
QnVmZmVyKFBhc3NPd25QdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4gc291cmNlQnVmZmVyUHJpdmF0
ZSwgUGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4gc291cmNlKQorICAgIDogbV9wcml2YXRlKHNvdXJj
ZUJ1ZmZlclByaXZhdGUpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX3RpbWVzdGFt
cE9mZnNldCgwKQogewpAQCAtNTEsMTIgKzU4LDEyIEBAIFNvdXJjZUJ1ZmZlcjo6flNvdXJjZUJ1
ZmZlcigpCiAKIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gU291cmNlQnVmZmVyOjpidWZmZXJlZChF
eGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKLSAgICBpZiAoIW1fc291cmNlKSB7CisgICAgaWYg
KGlzQ2xvc2VkKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIG1fc291cmNlLT5idWZmZXJlZChpZCgpLCBl
Yyk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YnVmZmVyZWQoKTsKIH0KIAogZG91YmxlIFNvdXJj
ZUJ1ZmZlcjo6dGltZXN0YW1wT2Zmc2V0KCkgY29uc3QKQEAgLTY2LDMzICs3Myw2MyBAQCBkb3Vi
bGUgU291cmNlQnVmZmVyOjp0aW1lc3RhbXBPZmZzZXQoKSBjb25zdAogCiB2b2lkIFNvdXJjZUJ1
ZmZlcjo6c2V0VGltZXN0YW1wT2Zmc2V0KGRvdWJsZSBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIGlmICghbV9zb3VyY2UpIHsKKyAgICBpZiAoaXNDbG9zZWQoKSkgewogICAgICAg
ICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKG1fc291cmNlLT5zZXRUaW1lc3RhbXBPZmZzZXQoaWQoKSwgb2Zmc2V0LCBlYykpCi0gICAg
ICAgIG1fdGltZXN0YW1wT2Zmc2V0ID0gb2Zmc2V0OworICAgIGlmIChtX3NvdXJjZS0+cmVhZHlT
dGF0ZSgpID09IE1lZGlhU291cmNlOjplbmRlZEtleXdvcmQoKSkKKyAgICAgICAgbV9zb3VyY2Ut
PnNldFJlYWR5U3RhdGUoTWVkaWFTb3VyY2U6Om9wZW5LZXl3b3JkKCkpOworCisgICAgaWYgKCFt
X3ByaXZhdGUtPnNldFRpbWVzdGFtcE9mZnNldChvZmZzZXQpKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV90aW1lc3RhbXBP
ZmZzZXQgPSBvZmZzZXQ7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjphcHBlbmQoUGFzc1JlZlB0
cjxVaW50OEFycmF5PiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIW1fc291
cmNlKSB7CisgICAgaWYgKGlzQ2xvc2VkKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc291cmNlLT5hcHBlbmQoaWQo
KSwgZGF0YSwgZWMpOworICAgIGlmICghZGF0YS5nZXQoKSkgeworICAgICAgICBlYyA9IElOVkFM
SURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3NvdXJj
ZS0+cmVhZHlTdGF0ZSgpID09IE1lZGlhU291cmNlOjplbmRlZEtleXdvcmQoKSkKKyAgICAgICAg
bV9zb3VyY2UtPnNldFJlYWR5U3RhdGUoTWVkaWFTb3VyY2U6Om9wZW5LZXl3b3JkKCkpOworCisg
ICAgaWYgKCFtX3ByaXZhdGUtPmFwcGVuZChkYXRhLT5kYXRhKCksIGRhdGEtPmxlbmd0aCgpKSkg
eworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CiB9CiAK
IHZvaWQgU291cmNlQnVmZmVyOjphYm9ydChFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAo
IW1fc291cmNlKSB7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgIW1fc291cmNlIHx8IG1fc291cmNl
LT5yZWFkeVN0YXRlKCkgIT0gTWVkaWFTb3VyY2U6Om9wZW5LZXl3b3JkKCkpIHsKICAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
c291cmNlLT5hYm9ydChpZCgpLCBlYyk7CisgICAgbV9wcml2YXRlLT5hYm9ydCgpOworfQorCit2
b2lkIFNvdXJjZUJ1ZmZlcjo6Y2xlYXIoKQoreworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAg
IG1fcHJpdmF0ZS0+cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpOworICAgIG1fc291cmNlLmNsZWFy
KCk7CisgICAgbV9wcml2YXRlLmNsZWFyKCk7Cit9CisKK2Jvb2wgU291cmNlQnVmZmVyOjppc0Ns
b3NlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3ByaXZhdGUgfHwgIW1fc291cmNlIHx8IG1f
c291cmNlLT5yZWFkeVN0YXRlKCkgPT0gTWVkaWFTb3VyY2U6OmNsb3NlZEtleXdvcmQoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggN2QxZTU4NjFjMGYyMWRkZWVhY2QzNDdh
NzhjYmYyM2UwMzNlM2I3Yy4uZTUyYmRjYjM3ODM3YzBhODA2MzRhNTg4N2YzMTg2Zjc0Yzc3MTBm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5oCkBAIC0zNCw0MyArMzQsMzggQEAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIk1lZGlhU291cmNlLmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KK2Ns
YXNzIE1lZGlhU291cmNlOworY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZTsKIGNsYXNzIFRpbWVS
YW5nZXM7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNvdXJjZUJ1
ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvdXJjZUJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2U+IHNvdXJjZSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyKGlkLCBzb3VyY2Up
KTsKLSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U291cmNlQnVmZmVyPiBjcmVhdGUoUGFz
c093blB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiwgUGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4pOwog
CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyKCk7CiAKKyAgICAvLyBTb3VyY2VCdWZmZXIuaWRs
IG1ldGhvZHMKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKLQogICAgIGRvdWJsZSB0aW1lc3RhbXBPZmZzZXQoKSBjb25zdDsKICAgICB2
b2lkIHNldFRpbWVzdGFtcE9mZnNldChkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKLQogICAgIHZv
aWQgYXBwZW5kKFBhc3NSZWZQdHI8VWludDhBcnJheT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwot
CiAgICAgdm9pZCBhYm9ydChFeGNlcHRpb25Db2RlJik7Ci0gICAgCi0gICAgY29uc3QgU3RyaW5n
JiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAotICAgIHZvaWQgY2xlYXIoKSB7IG1fc291
cmNlLmNsZWFyKCk7IH0KKyAgICB2b2lkIGNsZWFyKCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgU291cmNlQnVmZmVyKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2U+
KTsKKyAgICBTb3VyY2VCdWZmZXIoUGFzc093blB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiwgUGFz
c1JlZlB0cjxNZWRpYVNvdXJjZT4pOworCisgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0OwogCi0g
ICAgU3RyaW5nIG1faWQ7CisgICAgT3duUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+IG1fcHJpdmF0
ZTsKICAgICBSZWZQdHI8TWVkaWFTb3VyY2U+IG1fc291cmNlOwotICAgIAorCiAgICAgZG91Ymxl
IG1fdGltZXN0YW1wT2Zmc2V0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAKaW5kZXggNTgzNzI0YmExNTU5
NTg0YmU1M2Y3ZmRhYzg5ZDMxNTI2MGFjODg1Yi4uOWRiNWZhNDExZWIyYWFiYzZlNDQyZjRhYTll
MjcwZjQzZDc2NzZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiR2VuZXJp
Y0V2ZW50UXVldWUuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXIuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDIsNyArNDMsNiBAQCBTb3VyY2VCdWZmZXJMaXN0OjpTb3VyY2VCdWZmZXJM
aXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdlbmVyaWNFdmVudFF1ZXVlKiBhc3luY0V2ZW50UXVldWUpCiAgICAg
OiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKICAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKGFzeW5jRXZlbnRRdWV1ZSkKLSAgICAsIG1fbGFzdFNvdXJjZUJ1ZmZlcklkKDApCiB7CiB9
CiAKQEAgLTgyLDM0ICs4Miw2IEBAIHZvaWQgU291cmNlQnVmZmVyTGlzdDo6Y2xlYXIoKQogICAg
ICAgICByZW1vdmUobV9saXN0W2ldLmdldCgpKTsKIH0KIAotU3RyaW5nIFNvdXJjZUJ1ZmZlckxp
c3Q6OmdlbmVyYXRlVW5pcXVlSWQoKQotewotICAgIC8vIEVuc3VyZSBhIHVuaXF1ZSBpZC4gVW50
aWwgbV9sYXN0U291cmNlQnVmZmVySWQgd3JhcHMgYXJvdW5kICh2ZXJ5IHVubGlrZWx5KSwKLSAg
ICAvLyB0aGlzIGxvb3Agd2lsbCBleGl0IGFmdGVyIG9uZSBjaGVjay4gSWYgbV9sYXN0U291cmNl
QnVmZmVySWQgZG9lcyB3cmFwLAotICAgIC8vIHRoaXMgbG9vcCBtYXkgcnVuIGFzIG1hbnkgdGlt
ZXMgYXMgdGhlIHNpemUgb2YgbV9saXN0LCBidXQgaW4gbW9zdAotICAgIC8vIGNhc2VzIHRoYXQg
c2hvdWxkIGJlIGxlc3MgdGhhbiAxMC4gV2UgbWF5IHdhbnQgdG8gaW52ZXN0aWdhdGUgYSBtb3Jl
Ci0gICAgLy8gZWZmaWNpZW50IGFwcHJvYWNoIGlmIG1hbnkgbW9yZSBTb3VyY2VCdWZmZXJzIGFy
ZSBhbGxvd2VkIGluIHRoZSBmdXR1cmUuCi0gICAgc2l6ZV90IG5leHRTb3VyY2VCdWZmZXJJZCA9
IG1fbGFzdFNvdXJjZUJ1ZmZlcklkICsgMTsKLQotICAgIHdoaWxlIChjb250YWlucyhuZXh0U291
cmNlQnVmZmVySWQpKSB7Ci0gICAgICAgIGlmIChuZXh0U291cmNlQnVmZmVySWQgPT0gbV9sYXN0
U291cmNlQnVmZmVySWQpCi0gICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICAg
ICAgbmV4dFNvdXJjZUJ1ZmZlcklkKys7Ci0gICAgfQotICAgIG1fbGFzdFNvdXJjZUJ1ZmZlcklk
ID0gbmV4dFNvdXJjZUJ1ZmZlcklkOwotCi0gICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG5leHRT
b3VyY2VCdWZmZXJJZCk7Ci19Ci0KLWJvb2wgU291cmNlQnVmZmVyTGlzdDo6Y29udGFpbnMoc2l6
ZV90IGlkKSBjb25zdAotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9saXN0LnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2xpc3RbaV0tPmlkKCkgPT0gU3RyaW5nOjpudW1iZXIo
aWQpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQogdm9pZCBTb3VyY2VCdWZmZXJMaXN0OjpjcmVhdGVBbmRGaXJlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudE5hbWUpCiB7CiAgICAgQVNTRVJUKG1fYXN5bmNFdmVudFF1ZXVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXJMaXN0LmgKaW5kZXggYTk1YTgzNzY4YmM2M2Y4YTBkMmE4NzY3MjIxNTc5YzkwMzcwZGFhOS4u
MGQ0NzY0ZTEzZDExYTE0MGU4OTE5MWE1NzlhN2ZjZDA0ZWIxOTRlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmgKQEAg
LTU3LDEwICs1Nyw2IEBAIHB1YmxpYzoKICAgICBib29sIHJlbW92ZShTb3VyY2VCdWZmZXIqKTsK
ICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICAvLyBHZW5lcmF0ZXMgYW4gaWQgZm9yIGFkZGluZyBh
IG5ldyBTb3VyY2VCdWZmZXIuIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nCi0gICAgLy8gaWYgdGhp
cyBTb3VyY2VCdWZmZXJMaXN0IGlzIGZ1bGwuCi0gICAgU3RyaW5nIGdlbmVyYXRlVW5pcXVlSWQo
KTsKLQogICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZF
UlJJREU7CkBAIC03NSw3ICs3MSw2IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgU291cmNl
QnVmZmVyTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgR2VuZXJpY0V2ZW50UXVldWUqKTsK
IAotICAgIGJvb2wgY29udGFpbnMoc2l6ZV90IGlkKSBjb25zdDsKICAgICB2b2lkIGNyZWF0ZUFu
ZEZpcmVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KQEAgLTg2LDcgKzgxLDYgQEAgcHJpdmF0
ZToKICAgICBHZW5lcmljRXZlbnRRdWV1ZSogbV9hc3luY0V2ZW50UXVldWU7CiAKICAgICBWZWN0
b3I8UmVmUHRyPFNvdXJjZUJ1ZmZlcj4gPiBtX2xpc3Q7Ci0gICAgc2l6ZV90IG1fbGFzdFNvdXJj
ZUJ1ZmZlcklkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMmJjNGU2YjE0MWU1YTE1NmY4NTFkOWNlZWY5
MWFiYmMxMmEwYzQ5Zi4uZmQ2OTIzZGM3OGYwZTVmZDFhOWY5ZWJlMzE3YzUxYmE2NzczODEzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC03OSw3ICs3OSw2
IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5j
bHVkZSAiVGltZVJhbmdlcy5oIgotI2luY2x1ZGUgIlVVSUQuaCIKICNpbmNsdWRlICJXZWJDb3Jl
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgpAQCAtMzA4LDExICszMDcsNiBAQCBIVE1MTWVkaWFFbGVtZW50OjpI
VE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bQogICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZv
ckxvYWRSZXN0cmljdGlvbik7CiAgICAgfQogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAg
ICBtX21lZGlhU291cmNlVVJMLnNldFByb3RvY29sKG1lZGlhU291cmNlQmxvYlByb3RvY29sKTsK
LSAgICBtX21lZGlhU291cmNlVVJMLnNldFBhdGgoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
KTsKLSNlbmRpZgotCiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVDYWxsYmFja3MoKTsKICAgICBhZGRF
bGVtZW50VG9Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVudCk7CiAKQEAgLTk4NywxOSArOTgxLDYg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29uc3QgS1VSTCYgaW5pdGlh
bFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIEFTU0VSVCghbV9tZWRpYVNvdXJjZSk7Ci0K
LSAgICBpZiAodXJsLnByb3RvY29sSXMobWVkaWFTb3VyY2VCbG9iUHJvdG9jb2wpKSB7Ci0gICAg
ICAgIG1fbWVkaWFTb3VyY2UgPSBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLmxvb2t1
cE1lZGlhU291cmNlKHVybC5zdHJpbmcoKSk7Ci0KLSAgICAgICAgaWYgKG1fbWVkaWFTb3VyY2Up
IHsKLSAgICAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnNldE1lZGlhUGxheWVyKG1fcGxheWVyLmdl
dCgpKTsKLSAgICAgICAgICAgIG1fbWVkaWFTb3VyY2VVUkwgPSB1cmw7Ci0gICAgICAgIH0KLSAg
ICB9Ci0jZW5kaWYKLQogICAgIC8vIFRoZSByZXNvdXJjZSBmZXRjaCBhbGdvcml0aG0gCiAgICAg
bV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0xPQURJTkc7CiAKQEAgLTEwNTQsNiArMTAzNSwxNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBLVVJMJiBpbml0aWFs
VVJMLCBDb250ZW50VHlwZSYgY29udGVudAogICAgICAgICBtX211dGVkID0gdHJ1ZTsKICAgICB1
cGRhdGVWb2x1bWUoKTsKIAorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgQVNTRVJUKCFt
X21lZGlhU291cmNlKTsKKworICAgIGlmICh1cmwucHJvdG9jb2xJcyhtZWRpYVNvdXJjZUJsb2JQ
cm90b2NvbCkpCisgICAgICAgIG1fbWVkaWFTb3VyY2UgPSBNZWRpYVNvdXJjZVJlZ2lzdHJ5Ojpy
ZWdpc3RyeSgpLmxvb2t1cE1lZGlhU291cmNlKHVybC5zdHJpbmcoKSk7CisKKyAgICBpZiAobV9t
ZWRpYVNvdXJjZSkgeworICAgICAgICBpZiAoIW1fcGxheWVyLT5sb2FkKHVybCwgbV9tZWRpYVNv
dXJjZSkpCisgICAgICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkZvcm1h
dEVycm9yKTsKKyAgICB9IGVsc2UKKyNlbmRpZgogICAgIGlmICghbV9wbGF5ZXItPmxvYWQodXJs
LCBjb250ZW50VHlwZSwga2V5U3lzdGVtKSkKICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1l
ZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAKQEAgLTE4NzIsMjIgKzE4NjQsNiBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3Rh
dGUpCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyU291cmNlT3BlbmVkKCkKLXsKLSAgICBiZWdpblByb2Nlc3Np
bmdNZWRpYVBsYXllckNhbGxiYWNrKCk7Ci0KLSAgICBzZXRTb3VyY2VTdGF0ZShNZWRpYVNvdXJj
ZTo6b3BlbktleXdvcmQoKSk7Ci0KLSAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFj
aygpOwotfQotCi1TdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTb3VyY2VVUkwo
KSBjb25zdAotewotICAgIHJldHVybiBtX21lZGlhU291cmNlVVJMLnN0cmluZygpOwotfQotI2Vu
ZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllcktleUFkZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQogewpAQCAtNDQ5NCwxMyArNDQ3MCwxMyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKCkKICAgICAgICAgbV9hdWRp
b1NvdXJjZU5vZGUtPmxvY2soKTsKICNlbmRpZgogCi0gICAgbV9wbGF5ZXIgPSBNZWRpYVBsYXll
cjo6Y3JlYXRlKHRoaXMpOwotCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBpZiAobV9t
ZWRpYVNvdXJjZSkKLSAgICAgICAgbV9tZWRpYVNvdXJjZS0+c2V0TWVkaWFQbGF5ZXIobV9wbGF5
ZXIuZ2V0KCkpOworICAgICAgICBtX21lZGlhU291cmNlLT5zZXRSZWFkeVN0YXRlKE1lZGlhU291
cmNlOjpjbG9zZWRLZXl3b3JkKCkpOwogI2VuZGlmCiAKKyAgICBtX3BsYXllciA9IE1lZGlhUGxh
eWVyOjpjcmVhdGUodGhpcyk7CisKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIGlmIChtX2F1
ZGlvU291cmNlTm9kZSkgewogICAgICAgICAvLyBXaGVuIGNyZWF0aW5nIHRoZSBwbGF5ZXIsIG1h
a2Ugc3VyZSBpdHMgQXVkaW9Tb3VyY2VQcm92aWRlciBrbm93cyBhYm91dCB0aGUgTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLgpAQCAtNDg0MSw3ICs0ODE3LDYgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb24KICAgICBpbmZvLmFkZE1lbWJlcihtX3Byb3h5V2lkZ2V0LCAicHJveHlXaWRnZXQi
KTsKICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgaW5mby5hZGRNZW1iZXIo
bV9tZWRpYVNvdXJjZVVSTCwgIm1lZGlhU291cmNlVVJMIik7CiAgICAgaW5mby5hZGRNZW1iZXIo
bV9tZWRpYVNvdXJjZSwgIm1lZGlhU291cmNlIik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGZhMWUzZjI4
NGVlMTk2YmZiMjFjMjJhNGY4ZjcxNzJlNDMxNjBkNDUuLjM3NGRmMmI4NTY1ODYyZjM1MzUwN2Rm
NDkyODMzZDQzMjA4YTUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CkBAIC00NDIsMTEgKzQ0Miw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKE1lZGlhUGxheWVyKik7CiAgICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlhUGxheWVyKik7CiAKLSNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNvdXJj
ZU9wZW5lZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291cmNlVVJMKCkgY29u
c3Q7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyS2V5QWRkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBtZWRpYVBsYXllcktleUVycm9yKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBNZWRpYVBsYXllckNsaWVudDo6TWVkaWFLZXlF
cnJvckNvZGUsIHVuc2lnbmVkIHNob3J0IHN5c3RlbUNvZGUpIE9WRVJSSURFOwpAQCAtNjM5LDcg
KzYzNCw2IEBAIHByaXZhdGU6CiAgICAgaW50IG1fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJh
Y2s7CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIEtVUkwgbV9tZWRpYVNvdXJjZVVS
TDsKICAgICBSZWZQdHI8TWVkaWFTb3VyY2U+IG1fbWVkaWFTb3VyY2U7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDBiMjU0NGY5MjE2MThmMmUxMzEwNTg5YjA5NmE2MWY4YjA1ZjY5OTEuLjM2ZTIwZjUxMzQxOWFi
MDZmOGNkMjE2MGE1NzE1OTY3Nzc4NGQ3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTQ0LDYgKzQ0LDEwIEBACiAjaW5jbHVk
ZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQorI2luY2x1ZGUgIk1lZGlhU291cmNlLmgiCisjZW5kaWYKKwogI2lmIFBMQVRGT1JN
KFFUKQogI2luY2x1ZGUgPFF0R2xvYmFsPgogI2VuZGlmCkBAIC05MSw2ICs5NSw5IEBAIHB1Ymxp
YzoKICAgICBOdWxsTWVkaWFQbGF5ZXJQcml2YXRlKE1lZGlhUGxheWVyKikgeyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmKSB7IH0KKyNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQorICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8TWVk
aWFTb3VyY2U+KSB7IH0KKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxMb2FkKCkgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvUGxheSgpIHsgfQpAQCAtMTUxLDE3ICsxNTgs
NiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4o
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAg
IHZpcnR1YWwgTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmlu
ZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcykg
eyByZXR1cm4gTWVkaWFQbGF5ZXI6Ok5vdFN1cHBvcnRlZDsgfQotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxUaW1lUmFuZ2VzPiBzb3VyY2VCdWZmZXJlZChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBU
aW1lUmFuZ2VzOjpjcmVhdGUoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VSZW1vdmVJZChj
b25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VB
cHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VBYm9ydChjb25zdCBTdHJpbmcm
KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VTZXREdXJhdGlvbihk
b3VibGUpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VFbmRPZlN0cmVhbShNZWRpYVBsYXll
cjo6RW5kT2ZTdHJlYW1TdGF0dXMpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VTZXRUaW1l
c3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiwgZG91YmxlKSB7IHJldHVybiBmYWxzZTsgfQotI2Vu
ZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgTWVkaWFQbGF5
ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmLCBj
b25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpIE9WRVJSSURFIHsgcmV0dXJuIE1lZGlhUGxh
eWVyOjpJbnZhbGlkUGxheWVyU3RhdGU7IH0KICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpNZWRp
YUtleUV4Y2VwdGlvbiBhZGRLZXkoY29uc3QgU3RyaW5nJiwgY29uc3QgdW5zaWduZWQgY2hhcios
IHVuc2lnbmVkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQsIGNvbnN0IFN0cmluZyYp
IE9WRVJSSURFIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVyU3RhdGU7IH0KQEAg
LTM3Miw2ICszNjgsMTAgQEAgYm9vbCBNZWRpYVBsYXllcjo6bG9hZChjb25zdCBLVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3QKICAgICBtX2tleVN5c3Rl
bSA9IGtleVN5c3RlbS5sb3dlcigpOwogICAgIG1fY29udGVudE1JTUVUeXBlV2FzSW5mZXJyZWRG
cm9tRXh0ZW5zaW9uID0gZmFsc2U7CiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIG1f
bWVkaWFTb3VyY2UgPSAwOworI2VuZGlmCisKICAgICAvLyBJZiB0aGUgTUlNRSB0eXBlIGlzIG1p
c3Npbmcgb3IgaXMgbm90IG1lYW5pbmdmdWwsIHRyeSB0byBmaWd1cmUgaXQgb3V0IGZyb20gdGhl
IFVSTC4KICAgICBpZiAobV9jb250ZW50TUlNRVR5cGUuaXNFbXB0eSgpIHx8IG1fY29udGVudE1J
TUVUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSB8fCBtX2NvbnRlbnRNSU1FVHlwZSA9
PSB0ZXh0UGxhaW4oKSkgewogICAgICAgICBpZiAobV91cmwucHJvdG9jb2xJc0RhdGEoKSkKQEAg
LTM5NCw2ICszOTQsMjAgQEAgYm9vbCBNZWRpYVBsYXllcjo6bG9hZChjb25zdCBLVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3QKICAgICByZXR1cm4gbV9j
dXJyZW50TWVkaWFFbmdpbmU7CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorYm9vbCBN
ZWRpYVBsYXllcjo6bG9hZChjb25zdCBLVVJMJiB1cmwsIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2U+
IG1lZGlhU291cmNlKQoreworICAgIG1fbWVkaWFTb3VyY2UgPSBtZWRpYVNvdXJjZTsKKyAgICBt
X2NvbnRlbnRNSU1FVHlwZSA9ICIiOworICAgIG1fY29udGVudFR5cGVDb2RlY3MgPSAiIjsKKyAg
ICBtX3VybCA9IHVybDsKKyAgICBtX2tleVN5c3RlbSA9ICIiOworICAgIG1fY29udGVudE1JTUVU
eXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uID0gZmFsc2U7CisgICAgbG9hZFdpdGhOZXh0TWVk
aWFFbmdpbmUoMCk7CisgICAgcmV0dXJuIG1fY3VycmVudE1lZGlhRW5naW5lOworfQorI2VuZGlm
CisKIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKE1lZGlhUGxheWVy
RmFjdG9yeSogY3VycmVudCkKIHsKICAgICBNZWRpYVBsYXllckZhY3RvcnkqIGVuZ2luZSA9IDA7
CkBAIC00MjUsOSArNDM5LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlh
RW5naW5lKE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKICAgICAgICAgICAgIG1fcHJpdmF0
ZS0+cHJlcGFyZUZvclJlbmRlcmluZygpOwogICAgIH0KIAotICAgIGlmIChtX3ByaXZhdGUpCisg
ICAgaWYgKG1fcHJpdmF0ZSkgeworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgICAgIGlm
IChtX21lZGlhU291cmNlKQorICAgICAgICAgICAgbV9wcml2YXRlLT5sb2FkKG1fdXJsLnN0cmlu
ZygpLCBtX21lZGlhU291cmNlKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgIG1fcHJp
dmF0ZS0+bG9hZChtX3VybC5zdHJpbmcoKSk7Ci0gICAgZWxzZSB7CisgICAgfSBlbHNlIHsKICAg
ICAgICAgbV9wcml2YXRlID0gY3JlYXRlTnVsbE1lZGlhUGxheWVyKHRoaXMpOwogICAgICAgICBp
ZiAobV9tZWRpYVBsYXllckNsaWVudCkgewogICAgICAgICAgICAgbV9tZWRpYVBsYXllckNsaWVu
dC0+bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKHRoaXMpOwpAQCAtNDc3LDQ5ICs0OTYsNiBAQCB2
b2lkIE1lZGlhUGxheWVyOjpwYXVzZSgpCiAgICAgbV9wcml2YXRlLT5wYXVzZSgpOwogfQogCi0j
aWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLQotTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIE1lZGlh
UGxheWVyOjpzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+
c291cmNlQWRkSWQoaWQsIHR5cGUsIGNvZGVjcyk7Ci19Ci0KLVBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gTWVkaWFQbGF5ZXI6OnNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpCi17Ci0gICAg
cmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlQnVmZmVyZWQoaWQpOwotfQotCi1ib29sIE1lZGlhUGxh
eWVyOjpzb3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKQotewotICAgIHJldHVybiBtX3By
aXZhdGUtPnNvdXJjZVJlbW92ZUlkKGlkKTsKLX0KLQotYm9vbCBNZWRpYVBsYXllcjo6c291cmNl
QXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VBcHBlbmQoaWQsIGRh
dGEsIGxlbmd0aCk7Ci19Ci0KLWJvb2wgTWVkaWFQbGF5ZXI6OnNvdXJjZUFib3J0KGNvbnN0IFN0
cmluZyYgaWQpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlQWJvcnQoaWQpOwotfQot
Ci12b2lkIE1lZGlhUGxheWVyOjpzb3VyY2VTZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCi17
Ci0gICAgbV9wcml2YXRlLT5zb3VyY2VTZXREdXJhdGlvbihkdXJhdGlvbik7Ci19Ci0KLXZvaWQg
TWVkaWFQbGF5ZXI6OnNvdXJjZUVuZE9mU3RyZWFtKE1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0
YXR1cyBzdGF0dXMpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlRW5kT2ZTdHJlYW0o
c3RhdHVzKTsKLX0KLQotYm9vbCBNZWRpYVBsYXllcjo6c291cmNlU2V0VGltZXN0YW1wT2Zmc2V0
KGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0
ZS0+c291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpOwotfQotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9u
IE1lZGlhUGxheWVyOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkK
IHsKQEAgLTk0NywyMSArOTIzLDYgQEAgdm9pZCBNZWRpYVBsYXllcjo6c2V0UHJpdmF0ZUJyb3dz
aW5nTW9kZShib29sIHByaXZhdGVCcm93c2luZ01vZGUpCiAgICAgbV9wcml2YXRlLT5zZXRQcml2
YXRlQnJvd3NpbmdNb2RlKG1fcHJpdmF0ZUJyb3dzaW5nKTsKIH0KIAotI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCi12b2lkIE1lZGlhUGxheWVyOjpzb3VyY2VPcGVuZWQoKQotewotICAgIGlmICht
X21lZGlhUGxheWVyQ2xpZW50KQotICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBs
YXllclNvdXJjZU9wZW5lZCgpOwotfQotCi1TdHJpbmcgTWVkaWFQbGF5ZXI6OnNvdXJjZVVSTCgp
IGNvbnN0Ci17Ci0gICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCi0gICAgICAgIHJldHVybiBt
X21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllclNvdXJjZVVSTCgpOwotICAgIHJldHVybiBT
dHJpbmcoKTsKLX0KLSNlbmRpZgotCiAvLyBDbGllbnQgY2FsbGJhY2tzLgogdm9pZCBNZWRpYVBs
YXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA2M2NlMDlmNzliODZmNGJiMDgwZjlhNzkz
NjI5ODE0Nzc2ZWE3ODE3Li4xMjMyYTRkOTQ5YjA5NzgwNWJmYWZjMjU4MWE4MzQ2MTUyY2EwZDVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
QEAgLTYxLDcgKzYxLDkgQEAgY2xhc3MgQXVkaW9Tb3VyY2VQcm92aWRlcjsKIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgR1N0cmVhbWVyR1dvcmxkOwogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiBjbGFzcyBNZWRpYVNvdXJjZTsKKyNl
bmRpZgogY2xhc3MgVGV4dFRyYWNrUmVwcmVzZW50YXRpb247CiAKIC8vIFN0cnVjdHVyZSB0aGF0
IHdpbGwgaG9sZCBldmVyeSBuYXRpdmUKQEAgLTE4MCwxMSArMTgyLDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBtZWRpYVBsYXllckdyYXBoaWNzRGV2aWNl
QWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0IHsgcmV0dXJuIDA7IH0KICNlbmRpZgog
Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJT
b3VyY2VPcGVuZWQoKSB7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclNvdXJjZVVS
TCgpIGNvbnN0IHsgcmV0dXJuICJ4LW1lZGlhLXNvdXJjZS11bnN1cHBvcnRlZDoiOyB9Ci0jZW5k
aWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgZW51bSBNZWRpYUtleUVycm9y
Q29kZSB7IFVua25vd25FcnJvciA9IDEsIENsaWVudEVycm9yLCBTZXJ2aWNlRXJyb3IsIE91dHB1
dEVycm9yLCBIYXJkd2FyZUNoYW5nZUVycm9yLCBEb21haW5FcnJvciB9OwogICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllcktleUFkZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiAvKiBr
ZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogc2Vzc2lvbklkICovKSB7IH0KQEAgLTI3MSw2
ICsyNjgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUp
OwogCiAgICAgYm9vbCBsb2FkKGNvbnN0IEtVUkwmLCBjb25zdCBDb250ZW50VHlwZSYsIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKTsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIGJvb2wg
bG9hZChjb25zdCBLVVJMJiwgUGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4pOworI2VuZGlmCiAgICAg
dm9pZCBjYW5jZWxMb2FkKCk7CiAKICAgICBib29sIHZpc2libGUoKSBjb25zdDsKQEAgLTI4MCwx
OSArMjgwLDYgQEAgcHVibGljOgogICAgIHZvaWQgcGxheSgpOwogICAgIHZvaWQgcGF1c2UoKTsg
ICAgCiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIGVudW0gQWRkSWRTdGF0dXMgeyBP
aywgTm90U3VwcG9ydGVkLCBSZWFjaGVkSWRMaW1pdCB9OwotICAgIEFkZElkU3RhdHVzIHNvdXJj
ZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGNvZGVjcyk7Ci0gICAgYm9vbCBzb3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcm
IGlkKTsKLSAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0
cmluZyYgaWQpOwotICAgIGJvb2wgc291cmNlQXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdm9pZCBzb3VyY2VT
ZXREdXJhdGlvbihkb3VibGUpOwotICAgIGJvb2wgc291cmNlQWJvcnQoY29uc3QgU3RyaW5nJiBp
ZCk7Ci0gICAgZW51bSBFbmRPZlN0cmVhbVN0YXR1cyB7IEVvc05vRXJyb3IsIEVvc05ldHdvcmtF
cnJvciwgRW9zRGVjb2RlRXJyb3IgfTsKLSAgICB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKEVuZE9m
U3RyZWFtU3RhdHVzKTsKLSAgICBib29sIHNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChjb25zdCBT
dHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKICAgICAvLyBSZXByZXNlbnRzIHN5bmNocm9ub3VzIGV4Y2VwdGlvbnMgdGhhdCBj
YW4gYmUgdGhyb3duIGZyb20gdGhlIEVuY3J5cHRlZCBNZWRpYSBtZXRob2RzLgogICAgIC8vIFRo
aXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIGFzeW5jaHJvbm91cyBNZWRpYUtleUVycm9yLgpAQCAt
NDIyLDExICs0MDksNiBAQCBwdWJsaWM6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9T
b3VyY2VQcm92aWRlcigpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAg
IHZvaWQgc291cmNlT3BlbmVkKCk7Ci0gICAgU3RyaW5nIHNvdXJjZVVSTCgpIGNvbnN0OwotI2Vu
ZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZvaWQga2V5QWRkZWQoY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKICAgICB2b2lk
IGtleUVycm9yKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTWVkaWFQbGF5ZXJDbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlLCB1bnNpZ25lZCBzaG9ydCBz
eXN0ZW1Db2RlKTsKQEAgLTQ4NCw2ICs0NjYsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoUExV
R0lOX1BST1hZX0ZPUl9WSURFTykKICAgICBXZWJNZWRpYVBsYXllclByb3h5KiBtX3BsYXllclBy
b3h5OyAgICAvLyBub3Qgb3duZWQgb3IgdXNlZCwgcGFzc2VkIHRvIG1fcHJpdmF0ZQogI2VuZGlm
CisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4gbV9t
ZWRpYVNvdXJjZTsKKyNlbmRpZgogfTsKIAogdHlwZWRlZiBQYXNzT3duUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gKCpDcmVhdGVNZWRpYUVuZ2luZVBsYXllcikoTWVkaWFQbGF5ZXIq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmgKaW5kZXggNWM2Njc0ZDJkM2E2MzhjYTMwNjFkM2Y5MjI5YWFhZGYyMmFhNzg0
MC4uMWYzZjNlMTBhODdjOTM5NTc1YjNiYzc3NzM4YmMxMjg4MGQxYTU0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgK
QEAgLTQ0LDYgKzQ0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZSgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiB1
cmwpID0gMDsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgdm9pZCBsb2Fk
KGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPE1lZGlhU291cmNlPikgPSAwOworI2VuZGlm
CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKSA9IDA7CiAgICAgCiAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVUb1BsYXkoKSB7IH0KQEAgLTE2NywxNyArMTcwLDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIHsgcmV0
dXJuIDA7IH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICB2aXJ0dWFs
IE1lZGlhUGxheWVyOjpBZGRJZFN0YXR1cyBzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3MpIHsgcmV0dXJu
IE1lZGlhUGxheWVyOjpOb3RTdXBwb3J0ZWQ7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gc291cmNlQnVmZmVyZWQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1cm4gVGltZVJh
bmdlczo6Y3JlYXRlKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlUmVtb3ZlSWQoY29uc3Qg
U3RyaW5nJiBpZCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBw
ZW5kKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlQWJvcnQo
Y29uc3QgU3RyaW5nJiBpZCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc291
cmNlU2V0RHVyYXRpb24oZG91YmxlKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5kT2ZT
dHJlYW0oTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzKSB7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgc291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBvZmZz
ZXQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gYWRkS2V5KGNv
bnN0IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCwgY29uc3QgdW5zaWdu
ZWQgY2hhciosIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKSB7IHJldHVybiBNZWRpYVBsYXllcjo6
S2V5U3lzdGVtTm90U3VwcG9ydGVkOyB9CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TWVkaWFL
ZXlFeGNlcHRpb24gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYsIGNvbnN0IHVuc2ln
bmVkIGNoYXIqLCB1bnNpZ25lZCkgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OktleVN5c3RlbU5vdFN1
cHBvcnRlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFTb3VyY2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVNvdXJjZVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTE3NWNkZjdmNjE4NGYyNTc3MTVhMDNh
OThmOGNlOTU0MTZhM2UxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIE1l
ZGlhU291cmNlUHJpdmF0ZV9oCisjZGVmaW5lIE1lZGlhU291cmNlUHJpdmF0ZV9oCisKKyNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZTsKKworY2xh
c3MgTWVkaWFTb3VyY2VQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBNZWRpYVNvdXJjZVByaXZhdGUo
KSB7IH0KKyAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZVByaXZhdGUoKSB7IH0KKworICAgIGVudW0g
QWRkU3RhdHVzIHsgT2ssIE5vdFN1cHBvcnRlZCwgUmVhY2hlZElkTGltaXQgfTsKKyAgICB2aXJ0
dWFsIEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgY29kZWNzLCBPd25QdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4qKSA9IDA7
CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dER1cmF0aW9uKGRvdWJsZSkgPSAwOworICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgeyBFb3NO
b0Vycm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0RlY29kZUVycm9yIH07CisgICAgdmlydHVhbCB2
b2lkIGVuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKSA9IDA7Cit9OworCit9CisKKyNlbmRp
ZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
b3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
b3VyY2VCdWZmZXJQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWEwZWNlZDJjMGE2MjAwOTQzY2I0YzI4
NmM4OWY3MTI4NjA0OTBjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtMCwwICsxLDU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYg
U291cmNlQnVmZmVyUHJpdmF0ZV9oCisjZGVmaW5lIFNvdXJjZUJ1ZmZlclByaXZhdGVfaAorCisj
aWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlIHsKK3B1YmxpYzoK
KyAgICBTb3VyY2VCdWZmZXJQcml2YXRlKCkgeyB9CisgICAgdmlydHVhbCB+U291cmNlQnVmZmVy
UHJpdmF0ZSgpIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZl
cmVkKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFib3J0KCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzZXRUaW1lc3RhbXBPZmZzZXQoZG91YmxlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSA9IDA7Cit9OworCit9CisKKyNl
bmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggNTczMDJkZjg2ZGNm
OWExN2JkNWM1NWUyYmIxMjFlZjM1ZmM0OTJmNS4uODBiYTE3MjZhZjRkOWQ5Yjg1YmFhNjM1ZGIy
MzdhYmU3ZDQ2MTA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTk1LDYgKzE5
NSw4IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVBsYXllci5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYk1lZGlhUGxheWVyQWN0aW9uLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJNZWRpYVNvdXJjZS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlh
U291cmNlQ2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFTdHJlYW1S
ZWdpc3RyeS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lbW9yeVVzYWdlSW5mby5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lbnVJdGVtSW5mby5oJywKQEAgLTM4Myw2
ICszODUsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvbWFjL1dlYlNjcmVlbkluZm9GYWN0b3J5
Lm1tJywKICAgICAgICAgICAgICAgICAnc3JjL21hYy9XZWJTdWJzdHJpbmdVdGlsLm1tJywKICAg
ICAgICAgICAgICAgICAnc3JjL0xvY2FsRmlsZVN5c3RlbUNocm9taXVtLmNwcCcsCisgICAgICAg
ICAgICAgICAgJ3NyYy9NZWRpYVNvdXJjZVByaXZhdGVJbXBsLmNwcCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9NZWRpYVNvdXJjZVByaXZhdGVJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
Tm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL05vdGlm
aWNhdGlvblByZXNlbnRlckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL3BhaW50aW5n
L0NvbnRpbnVvdXNQYWludGVyLmgnLApAQCAtMzk5LDYgKzQwMyw4IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9TY3JvbGxiYXJHcm91cC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvU2Nyb2xs
YmFyR3JvdXAuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9Tb3VyY2VCdWZmZXJQcml2YXRlSW1wbC5jcHAn
LAorICAgICAgICAgICAgICAgICdzcmMvU291cmNlQnVmZmVyUHJpdmF0ZUltcGwuaCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L1NwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHkuY3BwJywKQEAgLTUwNCw2ICs1MTAsOCBAQAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViTGFiZWxFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dl
Yk1lZGlhU291cmNlSW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFTb3Vy
Y2VJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYk5vZGUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCmluZGV4IGE0Mjg3ZTFjMWRlNGEzOTk3MDEw
NDhmZDZjNGMxZDA3YWJhMzZmMTguLmUzZTlhNmVkOTQwODc4ZTc1ZjBmOWY3NDExYWFjMTUzNGRh
NTNmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlh
UGxheWVyLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5
ZXIuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkNhbnZhcy5oIgogI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZS5oIgog
I2luY2x1ZGUgIldlYlRpbWVSYW5nZS5oIgogI2luY2x1ZGUgIldlYlZpZGVvRnJhbWUuaCIKIApA
QCAtMTA5LDYgKzExMCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJNZWRpYVBsYXllcigp
IHt9CiAKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBXZWJVUkwmLCBDT1JTTW9kZSkgPSAw
OworICAgIC8vIEZJWE1FKGFjb2x3ZWxsKSA6IFJlbW92ZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRh
dGlvbiBvbmNlIHRoZSBDaHJvbWl1bSBjb2RlIGltcGxlbWVudHMgdGhpcyBtZXRob2QuCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDM3MQorICAgIHZp
cnR1YWwgdm9pZCBsb2FkKGNvbnN0IFdlYlVSTCYgdXJsLCBXZWJNZWRpYVNvdXJjZSogbWVkaWFT
b3VyY2UsIENPUlNNb2RlIGNvcnNNb2RlKSB7IGRlbGV0ZSBtZWRpYVNvdXJjZTsgbG9hZCh1cmws
IGNvcnNNb2RlKTsgfTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTG9hZCgpID0gMDsKIAogICAg
IC8vIFBsYXliYWNrIGNvbnRyb2xzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50LmgKaW5kZXggZGVjYTk1MzZkOTlhNDVjYjIxNWU4
ZWE1ZTIwNGE2MTg5NzU1YzRiMy4uYzgyZmQzYWNjNjU2OWJhMjcwYzFiNzZkN2E2MWNiOWQzMzVh
OWFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQ
bGF5ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRp
YVBsYXllckNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViRnJhbWU7CitjbGFzcyBXZWJNZWRpYVNvdXJjZTsKIGNsYXNzIFdlYlBsdWdpbjsK
IGNsYXNzIFdlYlJlcXVlc3Q7CiBjbGFzcyBXZWJVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTc4NjRiMzA5MGQ0NWQx
NTVkY2UzYTU1ODcyZDZmNmEyNzgzMGM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2UuaApAQCAtMCwwICsxLDQ5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJNZWRpYVNvdXJjZV9oCisjZGVmaW5lIFdlYk1lZGlhU291cmNlX2gKKworI2luY2x1ZGUg
Ii4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJVUkwuaCIKKyNpbmNsdWRlICJX
ZWJUaW1lUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU291
cmNlQ2xpZW50OworCitjbGFzcyBXZWJNZWRpYVNvdXJjZSB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+V2ViTWVkaWFTb3VyY2UoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIG9wZW4oV2ViTWVkaWFT
b3VyY2VDbGllbnQqKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVNvdXJj
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2VD
bGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NmM0MjE5Y2Q2NWJhOTI5YTEwYWFmNjBlZDA0ZWMzNDVhN2M5
ZjYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
TWVkaWFTb3VyY2VDbGllbnQuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVNvdXJj
ZUNsaWVudF9oCisjZGVmaW5lIFdlYk1lZGlhU291cmNlQ2xpZW50X2gKKworI2luY2x1ZGUgIi4u
Ly4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJX
ZWJUaW1lUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNvdXJjZUJ1
ZmZlcjsKKworY2xhc3MgV2ViTWVkaWFTb3VyY2VDbGllbnQgeworcHVibGljOgorICAgIGVudW0g
QWRkU3RhdHVzIHsKKyAgICAgICAgQWRkU3RhdHVzT2ssCisgICAgICAgIEFkZFN0YXR1c05vdFN1
cHBvcnRlZCwKKyAgICAgICAgQWRkU3RhdHVzUmVhY2hlZElkTGltaXQKKyAgICB9OworCisgICAg
ZW51bSBFbmRPZlN0cmVhbVN0YXR1cyB7CisgICAgICAgIEVuZE9mU3RyZWFtU3RhdHVzTm9FcnJv
ciwKKyAgICAgICAgRW5kT2ZTdHJlYW1TdGF0dXNOZXR3b3JrRXJyb3IsCisgICAgICAgIEVuZE9m
U3RyZWFtU3RhdHVzRGVjb2RlRXJyb3IsCisgICAgfTsKKworICAgIHZpcnR1YWwgfldlYk1lZGlh
U291cmNlQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZm
ZXIoY29uc3QgV2ViU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgY29k
ZWNzLCBXZWJTb3VyY2VCdWZmZXIqKikgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGR1cmF0aW9u
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU291cmNlQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjAxNzgyYjEwOThmZTg3Nzhj
ZWU5M2RmMWQ2NWQ3OWU1MWY5ZDA2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNvdXJjZUJ1ZmZlci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYlNvdXJjZUJ1ZmZlcl9oCisjZGVmaW5lIFdlYlNvdXJjZUJ1ZmZlcl9oCisKKyNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiV2ViVGltZVJhbmdlLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJTb3VyY2VCdWZmZXIgeworcHVibGljOgorICAgIHZpcnR1
YWwgfldlYlNvdXJjZUJ1ZmZlcigpIHsgfQorCisgICAgdmlydHVhbCBXZWJUaW1lUmFuZ2VzIGJ1
ZmZlcmVkKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFib3J0KCkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRUaW1lc3RhbXBPZmZzZXQoZG91YmxlKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCBiOTcyNTE2NTNk
YTJkMDgzZGVlM2QzMWVjMTQ0Y2E1N2YyMTU3MWRhLi41N2MxZGY5ZmM2YjFjZGVkMDA0MWJlOTZm
OWQ3NmEyNGJiMGVlYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNjIsNiArNjIsOSBAQAogI2luY2x1ZGUgIklEQk1l
dGFkYXRhLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgi
CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVByaXZhdGUu
aCIKKyNlbmRpZgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiTm90
aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgpAQCAt
MTA1LDYgKzEwOCw3IEBACiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
V2ViTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVudC5oIgorI2lu
Y2x1ZGUgIldlYk1lZGlhU291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9u
UHJlc2VudGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1
ZGUgIldlYlNldHRpbmdzLmgiCkBAIC00MDksMTUgKzQxMywxMyBAQCBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpQcmVsb2FkTWV0YURhdGEsIE1lZGlhUGxheWVy
OjpNZXRhRAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6UHJl
bG9hZEF1dG8sIE1lZGlhUGxheWVyOjpBdXRvKTsKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpBZGRJZFN0YXR1
c09rLCBNZWRpYVBsYXllcjo6T2spOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJN
ZWRpYVBsYXllcjo6QWRkSWRTdGF0dXNOb3RTdXBwb3J0ZWQsIE1lZGlhUGxheWVyOjpOb3RTdXBw
b3J0ZWQpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6QWRk
SWRTdGF0dXNSZWFjaGVkSWRMaW1pdCwgTWVkaWFQbGF5ZXI6OlJlYWNoZWRJZExpbWl0KTsKLSNl
bmRpZgorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6
QWRkU3RhdHVzT2ssIE1lZGlhU291cmNlUHJpdmF0ZTo6T2spOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6QWRkU3RhdHVzTm90U3VwcG9ydGVkLCBN
ZWRpYVNvdXJjZVByaXZhdGU6Ok5vdFN1cHBvcnRlZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYk1lZGlhU291cmNlQ2xpZW50OjpBZGRTdGF0dXNSZWFjaGVkSWRMaW1pdCwgTWVk
aWFTb3VyY2VQcml2YXRlOjpSZWFjaGVkSWRMaW1pdCk7CiAKLSNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6RW5k
T2ZTdHJlYW1TdGF0dXNOb0Vycm9yLCBNZWRpYVBsYXllcjo6RW9zTm9FcnJvcik7Ci1DT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1c05l
dHdvcmtFcnJvciwgTWVkaWFQbGF5ZXI6OkVvc05ldHdvcmtFcnJvcik7Ci1DT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1c0RlY29kZUVy
cm9yLCBNZWRpYVBsYXllcjo6RW9zRGVjb2RlRXJyb3IpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6RW5kT2ZTdHJlYW1TdGF0dXNOb0Vycm9yLCBN
ZWRpYVNvdXJjZVByaXZhdGU6OkVvc05vRXJyb3IpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6RW5kT2ZTdHJlYW1TdGF0dXNOZXR3b3JrRXJyb3Is
IE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zTmV0d29ya0Vycm9yKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViTWVkaWFTb3VyY2VDbGllbnQ6OkVuZE9mU3RyZWFtU3RhdHVzRGVjb2Rl
RXJyb3IsIE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zRGVjb2RlRXJyb3IpOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvTWVkaWFTb3VyY2VQcml2YXRlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9NZWRpYVNvdXJjZVByaXZhdGVJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTgxZmZkYzRm
NzkxNzdhNTZmY2U5NjQ0NTc0MDgxYjYzMjFlM2YzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvTWVkaWFTb3VyY2VQcml2YXRlSW1wbC5jcHAKQEAgLTAsMCAr
MSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVByaXZhdGVJ
bXBsLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiU291cmNlQnVm
ZmVyUHJpdmF0ZUltcGwuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZUNsaWVudC5oIgorI2lu
Y2x1ZGUgIldlYlNvdXJjZUJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpNZWRpYVNvdXJj
ZVByaXZhdGVJbXBsKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudD4gY2xp
ZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQoreworfQorCitXZWJDb3JlOjpNZWRpYVNvdXJj
ZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjphZGRTb3VyY2VCdWZm
ZXIoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzLAorICAg
IE93blB0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlPiogc291cmNlQnVmZmVyKQorewor
ICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVNvdXJjZVBy
aXZhdGU6Ok5vdFN1cHBvcnRlZDsKKworICAgIFdlYlNvdXJjZUJ1ZmZlciogd2ViU291cmNlQnVm
ZmVyID0gMDsKKyAgICBXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyByZXN1
bHQgPQorICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkFk
ZFN0YXR1cz4obV9jbGllbnQtPmFkZFNvdXJjZUJ1ZmZlcih0eXBlLCBjb2RlY3MsICZ3ZWJTb3Vy
Y2VCdWZmZXIpKTsKKworICAgIGlmIChyZXN1bHQgPT0gV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2
YXRlOjpPaykgeworICAgICAgICBBU1NFUlQod2ViU291cmNlQnVmZmVyKTsKKyAgICAgICAgKnNv
dXJjZUJ1ZmZlciA9IGFkb3B0UHRyKG5ldyBTb3VyY2VCdWZmZXJQcml2YXRlSW1wbChhZG9wdFB0
cih3ZWJTb3VyY2VCdWZmZXIpKSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Rv
dWJsZSBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpkdXJhdGlvbigpCit7CisgICAgaWYgKCFtX2Ns
aWVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9O
YU4oKTsKKyAgICByZXR1cm4gbV9jbGllbnQtPmR1cmF0aW9uKCk7Cit9CisKK3ZvaWQgTWVkaWFT
b3VyY2VQcml2YXRlSW1wbDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQoreworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKK30K
Kwordm9pZCBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjplbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGU6OkVuZE9mU3RyZWFtU3RhdHVzIHN0YXR1cykKK3sKKyAgICBpZiAobV9j
bGllbnQpCisgICAgICAgIG1fY2xpZW50LT5lbmRPZlN0cmVhbShzdGF0aWNfY2FzdDxXZWJNZWRp
YVNvdXJjZUNsaWVudDo6RW5kT2ZTdHJlYW1TdGF0dXM+KHN0YXR1cykpOworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTWVkaWFTb3VyY2VQ
cml2YXRlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTWVkaWFTb3VyY2VQcml2
YXRlSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MzE4ZTA3ZjI2OWJiYWM5MmE3ZmI4M2YyNjJlM2E4ZTk0
Y2E0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9NZWRp
YVNvdXJjZVByaXZhdGVJbXBsLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFTb3VyY2VQ
cml2YXRlSW1wbF9oCisjZGVmaW5lIE1lZGlhU291cmNlUHJpdmF0ZUltcGxfaAorCisjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIk1lZGlhU291cmNlUHJpdmF0ZS5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFTb3VyY2VDbGllbnQ7CisKK2NsYXNz
IE1lZGlhU291cmNlUHJpdmF0ZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2
YXRlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBNZWRpYVNvdXJjZVByaXZhdGVJbXBsKFBhc3NP
d25QdHI8V2ViTWVkaWFTb3VyY2VDbGllbnQ+KTsKKyAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZVBy
aXZhdGVJbXBsKCkgeyB9CisKKyAgICAvLyBNZWRpYVNvdXJjZVByaXZhdGUgbWV0aG9kcy4KKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIGFkZFNvdXJj
ZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2RlY3Ms
CisgICAgICAgIE93blB0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlPiopOworICAgIHZp
cnR1YWwgZG91YmxlIGR1cmF0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRv
dWJsZSk7CisgICAgdmlydHVhbCB2b2lkIGVuZE9mU3RyZWFtKFdlYkNvcmU6Ok1lZGlhU291cmNl
UHJpdmF0ZTo6RW5kT2ZTdHJlYW1TdGF0dXMpOworCitwcml2YXRlOgorICAgIE93blB0cjxXZWJL
aXQ6OldlYk1lZGlhU291cmNlQ2xpZW50PiBtX2NsaWVudDsKK307CisKK30KKworI2VuZGlmCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU291cmNlQnVm
ZmVyUHJpdmF0ZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU291cmNlQnVm
ZmVyUHJpdmF0ZUltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViZmM3NGY4NGY0NTlkNTU2MGY4MDQyMDFk
ZTA3N2I5Y2VmN2NjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Tb3VyY2VCdWZmZXJQcml2YXRlSW1wbC5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlSW1wbC5oIgorCisjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIldlYlNvdXJjZUJ1ZmZlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworU291cmNlQnVmZmVyUHJpdmF0ZUltcGw6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVJbXBsKFdURjo6UGFzc093blB0cjxXZWJTb3VyY2VCdWZmZXI+IHNvdXJjZUJ1ZmZlcikK
KyAgICA6IG1fc291cmNlQnVmZmVyKHNvdXJjZUJ1ZmZlcikKK3sKK30KKworUGFzc1JlZlB0cjxX
ZWJDb3JlOjpUaW1lUmFuZ2VzPiBTb3VyY2VCdWZmZXJQcml2YXRlSW1wbDo6YnVmZmVyZWQoKQor
eworICAgIGlmICghbV9zb3VyY2VCdWZmZXIpCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpUaW1l
UmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIFdlYlRpbWVSYW5nZXMgd2ViUmFuZ2VzID0gbV9zb3Vy
Y2VCdWZmZXItPmJ1ZmZlcmVkKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRpbWVSYW5nZXM+IHJh
bmdlcyA9IFdlYkNvcmU6OlRpbWVSYW5nZXM6OmNyZWF0ZSgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd2ViUmFuZ2VzLnNpemUoKTsgKytpKQorICAgICAgICByYW5nZXMtPmFkZCh3ZWJS
YW5nZXNbaV0uc3RhcnQsIHdlYlJhbmdlc1tpXS5lbmQpOworICAgIHJldHVybiByYW5nZXMucmVs
ZWFzZSgpOworfQorCitib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVJbXBsOjphcHBlbmQoY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmICghbV9zb3Vy
Y2VCdWZmZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9zb3VyY2VCdWZm
ZXItPmFwcGVuZChkYXRhLCBsZW5ndGgpOworfQorCitib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVJ
bXBsOjphYm9ydCgpCit7CisgICAgaWYgKCFtX3NvdXJjZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBtX3NvdXJjZUJ1ZmZlci0+YWJvcnQoKTsKK30KKworYm9vbCBT
b3VyY2VCdWZmZXJQcml2YXRlSW1wbDo6c2V0VGltZXN0YW1wT2Zmc2V0KGRvdWJsZSBvZmZzZXQp
Cit7CisgICAgaWYgKCFtX3NvdXJjZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIG1fc291cmNlQnVmZmVyLT5zZXRUaW1lc3RhbXBPZmZzZXQob2Zmc2V0KTsKK30K
Kwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlSW1wbDo6cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgp
Cit7CisgICAgaWYgKCFtX3NvdXJjZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fc291
cmNlQnVmZmVyLT5yZW1vdmVkRnJvbU1lZGlhU291cmNlKCk7CisgICAgbV9zb3VyY2VCdWZmZXIu
Y2xlYXIoKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1NvdXJjZUJ1ZmZlclByaXZhdGVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Tb3VyY2VCdWZmZXJQcml2YXRlSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkOTBmMDliZGEy
OTBmYWNhMWMwYmRmM2UzZmI2NWQwYmRjYjhlZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Tb3VyY2VCdWZmZXJQcml2YXRlSW1wbC5oCkBAIC0wLDAgKzEs
NjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFNvdXJjZUJ1ZmZlclByaXZhdGVJbXBsX2gKKyNkZWZpbmUgU291cmNlQnVm
ZmVyUHJpdmF0ZUltcGxfaAorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUg
IlNvdXJjZUJ1ZmZlclByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlNvdXJjZUJ1ZmZlcjsKKworY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUltcGwgOiBwdWJsaWMg
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU291
cmNlQnVmZmVyUHJpdmF0ZUltcGwoV1RGOjpQYXNzT3duUHRyPFdlYlNvdXJjZUJ1ZmZlcj4pOwor
ICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGVJbXBsKCkgeyB9CisKKyAgICAvLyBTb3Vy
Y2VCdWZmZXJQcml2YXRlIG1ldGhvZHMuCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OlRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCk7CisgICAgdmlydHVhbCBib29sIGFwcGVuZChjb25zdCB1
bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1YWwgYm9vbCBh
Ym9ydCgpOworICAgIHZpcnR1YWwgYm9vbCBzZXRUaW1lc3RhbXBPZmZzZXQoZG91YmxlKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpOworCitwcml2YXRlOgorICAg
IFdURjo6T3duUHRyPFdlYlNvdXJjZUJ1ZmZlcj4gbV9zb3VyY2VCdWZmZXI7Cit9OworCisKK30K
KworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4IGVmMzUwZDcxYTAwZDFmMDE3OWMw
Mjk0NGQ0MDdjOTgxNjlkY2FmZDkuLjJiYjc1MjI5ZDQ4YmFlMjk4ZGEwMGNmOTViODU3MWE1NWRh
ODhhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtMjEsMTEgKzIxLDE1IEBACiAjaW5jbHVkZSAiUGxh
dGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJU
aW1lUmFuZ2VzLmgiCisjaW5jbHVkZSAiVVVJRC5oIgogI2luY2x1ZGUgIldlYkF1ZGlvU291cmNl
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZy
YW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYkhlbHBlclBsdWdpbkltcGwuaCIKICNpbmNsdWRlICJX
ZWJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIldlYk1lZGlhU291cmNlQ2xpZW50LmgiCisjaW5j
bHVkZSAiV2ViTWVkaWFTb3VyY2VJbXBsLmgiCisjaW5jbHVkZSAiV2ViU291cmNlQnVmZmVyLmgi
CiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4K
ICNpbmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5oPgpAQCAtNDksNiArNTMsMTEzIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorLy8gRklYTUU6IFJl
bW92ZSB0aGlzIGNsYXNzIG9uY2UgdGhlIENocm9taXVtIGNvZGUgaW1wbGVtZW50cyBpdHMgb3du
CisvLyB2ZXJzaW9uIG9mIFdlYk1lZGlhUGxheWVyOjpsb2FkKFdlYlVSTCwgV2ViTWVkaWFTb3Vy
Y2UsIENPUlNNb2RlKS4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTAzNzEKK2NsYXNzIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJNZWRp
YVNvdXJjZUNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViTWVkaWFTb3VyY2VDbGll
bnRJbXBsKFdlYk1lZGlhUGxheWVyKik7CisgICAgdmlydHVhbCB+V2ViTWVkaWFTb3VyY2VDbGll
bnRJbXBsKCk7CisKKyAgICAvLyBXZWJNZWRpYVNvdXJjZUNsaWVudCBtZXRob2RzLgorICAgIHZp
cnR1YWwgQWRkU3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBXZWJTdHJpbmcmIHR5cGUsIGNv
bnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBjb2RlY3MsIFdlYlNvdXJjZUJ1ZmZlcioqKTsKKyAg
ICB2aXJ0dWFsIGRvdWJsZSBkdXJhdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlv
bihkb3VibGUpOworICAgIHZpcnR1YWwgdm9pZCBlbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1
cyk7CisKK3ByaXZhdGU6CisgICAgV2ViTWVkaWFQbGF5ZXIqIG1fd2ViTWVkaWFQbGF5ZXI7Cit9
OworCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY2xhc3Mgb25jZSB0aGUgQ2hyb21pdW0gY29kZSBp
bXBsZW1lbnRzIGl0cyBvd24KKy8vIHZlcnNpb24gb2YgV2ViTWVkaWFQbGF5ZXI6OmxvYWQoV2Vi
VVJMLCBXZWJNZWRpYVNvdXJjZSwgQ09SU01vZGUpLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMDM3MQorY2xhc3MgV2ViU291cmNlQnVmZmVySW1wbCA6IHB1
YmxpYyBXZWJTb3VyY2VCdWZmZXIgeworcHVibGljOgorICAgIFdlYlNvdXJjZUJ1ZmZlckltcGwo
V2ViTWVkaWFQbGF5ZXIqLCBjb25zdCBXZWJTdHJpbmcmIGlkKTsKKworICAgIC8vIFdlYlNvdXJj
ZUJ1ZmZlciBtZXRob2RzLgorICAgIHZpcnR1YWwgV2ViVGltZVJhbmdlcyBidWZmZXJlZCgpOwor
ICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWJvcnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wg
c2V0VGltZXN0YW1wT2Zmc2V0KGRvdWJsZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9t
TWVkaWFTb3VyY2UoKTsKKworcHJpdmF0ZToKKyAgICBXZWJNZWRpYVBsYXllciogbV93ZWJNZWRp
YVBsYXllcjsKKyAgICBXZWJTdHJpbmcgbV9pZDsKK307CisKK1dlYk1lZGlhU291cmNlQ2xpZW50
SW1wbDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsKFdlYk1lZGlhUGxheWVyKiB3ZWJNZWRpYVBs
YXllcikKKyAgICA6IG1fd2ViTWVkaWFQbGF5ZXIod2ViTWVkaWFQbGF5ZXIpCit7Cit9CisKK1dl
Yk1lZGlhU291cmNlQ2xpZW50SW1wbDo6fldlYk1lZGlhU291cmNlQ2xpZW50SW1wbCgpCit7Cit9
CisKK1dlYk1lZGlhU291cmNlQ2xpZW50OjpBZGRTdGF0dXMgV2ViTWVkaWFTb3VyY2VDbGllbnRJ
bXBsOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgV2ViU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJWZWN0
b3I8V2ViU3RyaW5nPiYgY29kZWNzLAorICAgIFdlYlNvdXJjZUJ1ZmZlcioqIHNvdXJjZUJ1ZmZl
cikKK3sKKyAgICBXZWJTdHJpbmcgaWQgPSBXZWJDb3JlOjpjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCk7CisgICAgV2ViTWVkaWFTb3VyY2VDbGllbnQ6OkFkZFN0YXR1cyByZXN1bHQgPSBzdGF0
aWNfY2FzdDxXZWJNZWRpYVNvdXJjZUNsaWVudDo6QWRkU3RhdHVzPihtX3dlYk1lZGlhUGxheWVy
LT5zb3VyY2VBZGRJZChpZCwgdHlwZSwgY29kZWNzKSk7CisgICAgaWYgKHJlc3VsdCA9PSBXZWJN
ZWRpYVNvdXJjZUNsaWVudDo6QWRkU3RhdHVzT2spCisgICAgICAgICpzb3VyY2VCdWZmZXIgPSBu
ZXcgV2ViU291cmNlQnVmZmVySW1wbChtX3dlYk1lZGlhUGxheWVyLCBpZCk7CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitkb3VibGUgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpkdXJhdGlv
bigpCit7CisgICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPmR1cmF0aW9uKCk7Cit9CisKK3Zv
aWQgV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24p
Cit7CisgICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVNldER1cmF0aW9uKGR1cmF0
aW9uKTsKK30KKwordm9pZCBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmVuZE9mU3RyZWFtKEVu
ZE9mU3RyZWFtU3RhdHVzIHN0YXR1cykKK3sKKyAgICBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VF
bmRPZlN0cmVhbShzdGF0aWNfY2FzdDxXZWJNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXM+
KHN0YXR1cykpOworfQorCitXZWJTb3VyY2VCdWZmZXJJbXBsOjpXZWJTb3VyY2VCdWZmZXJJbXBs
KFdlYk1lZGlhUGxheWVyKiB3ZWJNZWRpYVBsYXllciwgY29uc3QgV2ViU3RyaW5nJiBpZCkKKyAg
ICA6IG1fd2ViTWVkaWFQbGF5ZXIod2ViTWVkaWFQbGF5ZXIpCisgICAgLCBtX2lkKGlkKQorewor
fQorCitXZWJUaW1lUmFuZ2VzIFdlYlNvdXJjZUJ1ZmZlckltcGw6OmJ1ZmZlcmVkKCkKK3sKKyAg
ICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlQnVmZmVyZWQobV9pZCk7Cit9CisKK2Jv
b2wgV2ViU291cmNlQnVmZmVySW1wbDo6YXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNl
QXBwZW5kKG1faWQsIGRhdGEsIGxlbmd0aCk7Cit9CisKK2Jvb2wgV2ViU291cmNlQnVmZmVySW1w
bDo6YWJvcnQoKQoreworICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBYm9ydCht
X2lkKTsKK30KKworYm9vbCBXZWJTb3VyY2VCdWZmZXJJbXBsOjpzZXRUaW1lc3RhbXBPZmZzZXQo
ZG91YmxlIG9mZnNldCkKK3sKKyAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlU2V0
VGltZXN0YW1wT2Zmc2V0KG1faWQsIG9mZnNldCk7Cit9CisKK3ZvaWQgV2ViU291cmNlQnVmZmVy
SW1wbDo6cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpCit7CisgICAgaWYgKCFtX3dlYk1lZGlhUGxh
eWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VSZW1v
dmVJZChtX2lkKTsKKyAgICBtX3dlYk1lZGlhUGxheWVyID0gMDsKK30KKwogc3RhdGljIFBhc3NP
d25QdHI8V2ViTWVkaWFQbGF5ZXI+IGNyZWF0ZVdlYk1lZGlhUGxheWVyKFdlYk1lZGlhUGxheWVy
Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYlVSTCYgdXJsLCBGcmFtZSogZnJhbWUpCiB7CiAgICAg
V2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsK
QEAgLTIxOCwyMiArMzI5LDI3IEBAIFdlYk1lZGlhUGxheWVyOjpQcmVsb2FkIFdlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6cHJlbG9hZCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdl
Yk1lZGlhUGxheWVyOjpQcmVsb2FkPihtX3ByZWxvYWQpOwogfQogCisvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgYW5kIHNvdXJjZVVSTCgpIG9uY2UgdGhlIENocm9taXVtIGNvZGUgaW1wbGVtZW50cwor
Ly8gaXRzIG93biB2ZXJzaW9uIG9mIFdlYk1lZGlhUGxheWVyOjpsb2FkKFdlYlVSTCwgV2ViTWVk
aWFTb3VyY2UsIENPUlNNb2RlKS4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTAzNzEKIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VPcGVu
ZWQoKQogewogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgQVNTRVJUKG1fbWVkaWFQbGF5
ZXIpOwotICAgIG1fbWVkaWFQbGF5ZXItPnNvdXJjZU9wZW5lZCgpOworICAgIEFTU0VSVChtX3dl
Yk1lZGlhUGxheWVyKTsKKyAgICBpZiAobV9tZWRpYVNvdXJjZSkgeworICAgICAgICBPd25QdHI8
V2ViTWVkaWFTb3VyY2U+IG1lZGlhU291cmNlID0gYWRvcHRQdHIobmV3IFdlYk1lZGlhU291cmNl
SW1wbChtX21lZGlhU291cmNlKSk7CisgICAgICAgIG1lZGlhU291cmNlLT5vcGVuKG5ldyBXZWJN
ZWRpYVNvdXJjZUNsaWVudEltcGwobV93ZWJNZWRpYVBsYXllci5nZXQoKSkpOworICAgIH0KICNl
bmRpZgogfQogCiBXZWJLaXQ6OldlYlVSTCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJj
ZVVSTCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBBU1NFUlQobV9t
ZWRpYVBsYXllcik7Ci0gICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX21lZGlhUGxh
eWVyLT5zb3VyY2VVUkwoKSk7Ci0jZWxzZQotICAgIHJldHVybiBLVVJMKCk7CisgICAgaWYgKG1f
bWVkaWFTb3VyY2UpCisgICAgICAgIHJldHVybiBtX3VybDsKICNlbmRpZgorICAgIHJldHVybiBL
VVJMKCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjprZXlBZGRlZChjb25z
dCBXZWJTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgV2ViU3RyaW5nJiBzZXNzaW9uSWQpCkBAIC0z
MjIsOCArNDM4LDI0IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpkaXNhYmxlQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZygpCiAKIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjps
b2FkKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIG1fdXJsID0gdXJsOworICAgIG1fdXJsID0g
S1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAg
ICBtX21lZGlhU291cmNlID0gMDsKKyNlbmRpZgorICAgIGxvYWRSZXF1ZXN0ZWQoKTsKK30KIAor
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCit2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
bG9hZChjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJjZT4g
bWVkaWFTb3VyY2UpCit7CisgICAgbV91cmwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsK
KyAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7CisgICAgbG9hZFJlcXVlc3RlZCgpOwor
fQorI2VuZGlmCisKK3ZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkUmVxdWVzdGVk
KCkKK3sKICAgICBNdXRleExvY2tlciBsb2NrZXIobV93ZWJNZWRpYVBsYXllck11dGV4KTsKICAg
ICBpZiAobV9wcmVsb2FkID09IE1lZGlhUGxheWVyOjpOb25lKSB7CiAjaWYgRU5BQkxFKFdFQl9B
VURJTykKQEAgLTM0MiwxNSArNDc0LDIxIEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
Ojpsb2FkSW50ZXJuYWwoKQogI2VuZGlmCiAKICAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2Fz
dDxIVE1MTWVkaWFFbGVtZW50Kj4obV9tZWRpYVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKSkt
PmRvY3VtZW50KCktPmZyYW1lKCk7Ci0gICAgbV93ZWJNZWRpYVBsYXllciA9IGNyZWF0ZVdlYk1l
ZGlhUGxheWVyKHRoaXMsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybCksIGZyYW1lKTsKKyAg
ICBtX3dlYk1lZGlhUGxheWVyID0gY3JlYXRlV2ViTWVkaWFQbGF5ZXIodGhpcywgbV91cmwsIGZy
YW1lKTsKICAgICBpZiAobV93ZWJNZWRpYVBsYXllcikgewogI2lmIEVOQUJMRShXRUJfQVVESU8p
CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBpZiB3ZSBjcmVhdGUvcmUtY3JlYXRlIHRoZSBXZWJNZWRp
YVBsYXllciB0aGF0IHdlIHVwZGF0ZSBvdXIgd3JhcHBlci4KICAgICAgICAgbV9hdWRpb1NvdXJj
ZVByb3ZpZGVyLndyYXAobV93ZWJNZWRpYVBsYXllci0+YXVkaW9Tb3VyY2VQcm92aWRlcigpKTsK
ICNlbmRpZgotICAgICAgICBtX3dlYk1lZGlhUGxheWVyLT5sb2FkKAotICAgICAgICAgICAgS1VS
TChQYXJzZWRVUkxTdHJpbmcsIG1fdXJsKSwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYk1l
ZGlhUGxheWVyOjpDT1JTTW9kZT4obV9tZWRpYVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+
bWVkaWFQbGF5ZXJDT1JTTW9kZSgpKSk7CisKKyAgICAgICAgV2ViTWVkaWFQbGF5ZXI6OkNPUlNN
b2RlIGNvcnNNb2RlID0gc3RhdGljX2Nhc3Q8V2ViTWVkaWFQbGF5ZXI6OkNPUlNNb2RlPihtX21l
ZGlhUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllckNPUlNNb2RlKCkpOwor
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgICAgIGlmIChtX21lZGlhU291cmNlKSB7Cisg
ICAgICAgICAgICBtX3dlYk1lZGlhUGxheWVyLT5sb2FkKG1fdXJsLCBuZXcgV2ViTWVkaWFTb3Vy
Y2VJbXBsKG1fbWVkaWFTb3VyY2UpLCBjb3JzTW9kZSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyNlbmRpZgorICAgICAgICBtX3dlYk1lZGlhUGxheWVyLT5sb2FkKG1fdXJsLCBj
b3JzTW9kZSk7CiAgICAgfQogfQogCkBAIC00MDcsNzAgKzU0NSw2IEBAIGJvb2wgV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpjYW5FbnRlckZ1bGxzY3JlZW4oKSBjb25zdAogfQogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkFkZElkU3Rh
dHVzIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBp
ZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKQotewot
ICAgIGlmICghbV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpOb3RTdXBwb3J0ZWQ7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
TWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzPihtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBZGRJZChp
ZCwgdHlwZSwgY29kZWNzKSk7Ci19Ci0KLWJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpz
b3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKQotewotICAgIGlmICghbV93ZWJNZWRpYVBs
YXllcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5
ZXItPnNvdXJjZVJlbW92ZUlkKGlkKTsKLX0KLQotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpCi17
Ci0gICAgaWYgKCFtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6
Y3JlYXRlKCk7Ci0KLSAgICBXZWJUaW1lUmFuZ2VzIHdlYlJhbmdlcyA9IG1fd2ViTWVkaWFQbGF5
ZXItPnNvdXJjZUJ1ZmZlcmVkKGlkKTsKLSAgICBSZWZQdHI8VGltZVJhbmdlcz4gcmFuZ2VzID0g
VGltZVJhbmdlczo6Y3JlYXRlKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJSYW5n
ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJhbmdlcy0+YWRkKHdlYlJhbmdlc1tpXS5zdGFydCwg
d2ViUmFuZ2VzW2ldLmVuZCk7Ci0gICAgcmV0dXJuIHJhbmdlcy5yZWxlYXNlKCk7Ci19Ci0KLWJv
b2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VBcHBlbmQoY29uc3QgU3RyaW5nJiBp
ZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIGlm
IChtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291
cmNlQXBwZW5kKGlkLCBkYXRhLCBsZW5ndGgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9v
bCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYgaWQp
Ci17Ci0gICAgaWYgKCFtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlQWJvcnQoaWQpOwotfQotCi12b2lk
IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlU2V0RHVyYXRpb24oZG91YmxlIGR1cmF0
aW9uKQotewotICAgIGlmIChtX3dlYk1lZGlhUGxheWVyKQotICAgICAgICBtX3dlYk1lZGlhUGxh
eWVyLT5zb3VyY2VTZXREdXJhdGlvbihkdXJhdGlvbik7Ci19Ci0KLXZvaWQgV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjpzb3VyY2VFbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRpYVBsYXllcjo6RW5k
T2ZTdHJlYW1TdGF0dXMgc3RhdHVzKQotewotICAgIGlmIChtX3dlYk1lZGlhUGxheWVyKQotICAg
ICAgICBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VFbmRPZlN0cmVhbShzdGF0aWNfY2FzdDxXZWJN
ZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXM+KHN0YXR1cykpOwotfQotCi1ib29sIFdlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmlu
ZyYgaWQsIGRvdWJsZSBvZmZzZXQpCi17Ci0gICAgaWYgKCFtX3dlYk1lZGlhUGxheWVyKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVNl
dFRpbWVzdGFtcE9mZnNldChpZCwgb2Zmc2V0KTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3Ro
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuaAppbmRleCAzZjcwYzczNWNjYjY2OGRiZjVmZmI1NzM4NWQ3MGI0Y2ZiNGFl
NzYxLi45OWQyZThiZGJlODQ1NDgwYjc1ZDEzYWZlZTljNTNlZGQ5NGUwZjc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwu
aApAQCAtOTYsNiArOTYsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhY2UgbWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBXVEY6OlN0cmlu
ZyYgdXJsKTsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgdm9pZCBsb2Fk
KGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTb3VyY2U+
KTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxMb2FkKCk7CiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJMYXllciogcGxhdGZv
cm1MYXllcigpIGNvbnN0OwpAQCAtMTU3LDE3ICsxNjAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHB1dEN1cnJlbnRGcmFtZShXZWJWaWRlb0ZyYW1lKik7CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdmlydHVhbCBXZWJDb3JlOjpNZWRpYVBsYXllcjo6QWRk
SWRTdGF0dXMgc291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKTsKLSAgICB2aXJ0dWFsIGJvb2wgc291cmNl
UmVtb3ZlSWQoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6VGltZVJhbmdlcz4gc291cmNlQnVmZmVyZWQoY29uc3QgU3RyaW5nJik7Ci0gICAgdmly
dHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFy
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VBYm9ydChj
b25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlU2V0RHVyYXRpb24oZG91Ymxl
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0oV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OkVuZE9mU3RyZWFtU3RhdHVzKTsKLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlU2V0VGltZXN0
YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYsIGRvdWJsZSBvZmZzZXQpOwotI2VuZGlmCi0KICNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
Ok1lZGlhS2V5RXhjZXB0aW9uIGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSwgY29uc3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVu
Z3RoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpNZWRpYUtl
eUV4Y2VwdGlvbiBhZGRLZXkoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIGtleSwgdW5zaWduZWQga2V5TGVuZ3RoLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0
RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBP
VkVSUklERTsKQEAgLTE4Miw2ICsxNzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsKCk7CiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnREZWxheWVkTG9hZCgpOwor
ICAgIHZvaWQgbG9hZFJlcXVlc3RlZCgpOwogICAgIHZvaWQgbG9hZEludGVybmFsKCk7CiAKICAg
ICBzdGF0aWMgUGFzc093blB0cjxXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+
IGNyZWF0ZShXZWJDb3JlOjpNZWRpYVBsYXllciopOwpAQCAtMjAxLDcgKzE5NCw3IEBAIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXIqIG1fbWVkaWFQbGF5ZXI7CiAgICAgT3duUHRy
PFdlYk1lZGlhUGxheWVyPiBtX3dlYk1lZGlhUGxheWVyOwogICAgIFdlYlZpZGVvRnJhbWUqIG1f
Y3VycmVudFZpZGVvRnJhbWU7Ci0gICAgU3RyaW5nIG1fdXJsOworICAgIFdlYkNvcmU6OktVUkwg
bV91cmw7CiAgICAgYm9vbCBtX2RlbGF5aW5nTG9hZDsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
cjo6UHJlbG9hZCBtX3ByZWxvYWQ7CiAgICAgUmVmUHRyPFdlYkhlbHBlclBsdWdpbkltcGw+IG1f
aGVscGVyUGx1Z2luOwpAQCAtMjU5LDYgKzI1MiwxMCBAQCBwcml2YXRlOgogCiAgICAgQXVkaW9T
b3VyY2VQcm92aWRlckltcGwgbV9hdWRpb1NvdXJjZVByb3ZpZGVyOwogI2VuZGlmCisKKyNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQorICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJjZT4gbV9t
ZWRpYVNvdXJjZTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZUltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yYmEyYzIzYzI3ZDBmZjdmNjNmY2I4MWE3YjE3ZWEwM2E1Y2FlMGI3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmNw
cApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk1lZGlh
U291cmNlSW1wbC5oIgorCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VQcml2YXRlSW1wbC5oIgorI2lu
Y2x1ZGUgIldlYk1lZGlhU291cmNlQ2xpZW50LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworCitXZWJNZWRpYVNvdXJjZUltcGw6OldlYk1lZGlh
U291cmNlSW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlPiBtZWRpYVNvdXJjZSkK
K3sKKyAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7Cit9CisKK1dlYk1lZGlhU291cmNl
SW1wbDo6fldlYk1lZGlhU291cmNlSW1wbCgpCit7Cit9CisKKwordm9pZCBXZWJNZWRpYVNvdXJj
ZUltcGw6Om9wZW4oV2ViTWVkaWFTb3VyY2VDbGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NFUlQo
Y2xpZW50KTsKKyAgICBtX21lZGlhU291cmNlLT5zZXRQcml2YXRlQW5kT3BlbihhZG9wdFB0cihu
ZXcgTWVkaWFTb3VyY2VQcml2YXRlSW1wbChhZG9wdFB0cihjbGllbnQpKSkpOworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFT
b3VyY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNvdXJjZUlt
cGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iOGFiMzFlMmI1ZGJmN2M1ZDdmYmVmYTI2MWVhZGZlZGNhOWY1ZjA5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFT
b3VyY2VJbXBsLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFTb3VyY2VJbXBsX2gK
KyNkZWZpbmUgV2ViTWVkaWFTb3VyY2VJbXBsX2gKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CisKKyNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIldlYk1lZGlhU291cmNlLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVNvdXJjZUltcGwgOiBwdWJs
aWMgV2ViTWVkaWFTb3VyY2UgeworcHVibGljOgorICAgIFdlYk1lZGlhU291cmNlSW1wbChQYXNz
UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlPik7CisgICAgdmlydHVhbCB+V2ViTWVkaWFTb3Vy
Y2VJbXBsKCk7CisKKyAgICAvLyBXZWJNZWRpYVNvdXJjZSBtZXRob2RzLgorICAgIHZpcnR1YWwg
dm9pZCBvcGVuKFdlYk1lZGlhU291cmNlQ2xpZW50Kik7CisKK3ByaXZhdGU6CisgICAgUmVmUHRy
PFdlYkNvcmU6Ok1lZGlhU291cmNlPiBtX21lZGlhU291cmNlOworfTsKKworfQorCisjZW5kaWYK
KworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189833</attachid>
            <date>2013-02-22 14:40:07 -0800</date>
            <delta_ts>2013-02-22 18:50:44 -0800</delta_ts>
            <desc>Removed SourceBufferPrivate changes and removed acolwell from FIXMEs</desc>
            <filename>bug-109857-20130222143626.patch</filename>
            <type>text/plain</type>
            <size>63742</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJlZGY2YTEyN2ZkMDY5
YTJjZjE4MTM0NzU5Y2NjZmZjZmIxMTZkZS4uM2FhYTlmY2MzZjRiZmNlYjc4M2Q1OTgwZTdiZmQ4
YTY5YzJmMDY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEzLTAyLTIyICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZhY3RvciBNZWRp
YVNvdXJjZSBtZXRob2RzIG91dCBvZiBNZWRpYVBsYXllciAmIE1lZGlhUGxheWVyUHJpdmF0ZSBh
bmQgaW50byBhIG5ldyBNZWRpYVNvdXJjZVByaXZhdGUgaW50ZXJmYWNlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHNpbXBsZSByZWZh
Y3RvciB0aGF0IG1vdmVzIE1lZGlhU291cmNlIHJlbGF0ZWQgbWV0aG9kcyBvdXQgb2YgTWVkaWFQ
bGF5ZXIgJiBNZWRpYVBsYXllclByaXZhdGUKKyAgICAgICAgc28gdGhhdCB0aGUgTWVkaWFTb3Vy
Y2UgaW1wbGVtZW50YXRpb24gY2FuIGJlIHVwZGF0ZWQgd2l0aG91dCBmdXJ0aGVyIHBvbGx1dGlu
ZyB0aGVzZSBpbnRlcmZhY2VzLgorICAgICAgICBNZWRpYVNvdXJjZVByaXZhdGUgaXMgdGhlIG5l
dyBXZWJDb3JlIGludGVyZmFjZSB0aGF0IHBvcnRzIG11c3QgaW1wbGVtZW50IHRvIHN1cHBvcnQg
dGhlIE1lZGlhU291cmNlIEFQSS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIHVzZXIgdmlz
aWJsZSBiZWhhdmlvciBoYXMgY2hhbmdlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Ok1lZGlh
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpkdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlOjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjplbmRP
ZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YnVmZmVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNvdXJjZTo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldFRp
bWVzdGFtcE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0
ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpzdG9wKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmg6Cisg
ICAgICAgIChNZWRpYVNvdXJjZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNZWRpYUVsZW1l
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKE51bGxNZWRpYVBsYXllclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TnVsbE1lZGlh
UGxheWVyUHJpdmF0ZTo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjps
b2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTWVkaWFQbGF5ZXJDbGll
bnQpOgorICAgICAgICAoTWVkaWFQbGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1lZGlhU291cmNlUHJpdmF0ZSk6
IENvbnRhaW5zIHRoZSBNZWRpYVNvdXJjZSBtZXRob2RzIGV4dHJhY3RlZCBmcm9tIE1lZGlhUGxh
eWVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpNZWRpYVNvdXJjZVBy
aXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjp+TWVkaWFTb3Vy
Y2VQcml2YXRlKToKKwogMjAxMy0wMi0yMiAgSm9lIE1hc29uICA8am1hc29uQHJpbS5jb20+CiAK
ICAgICAgICAgW0JsYWNrQmVycnldIFJlcmVhZCBjb29raWVzIHdoZW4gcmV0cnlpbmcgYSByZXF1
ZXN0IHdpdGggbmV3IGF1dGggY3JlZGVudGlhbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggMDc3MjUwNjQwMGE5OTgzNzlkZTdjMTJmNWQyNTY1YzExNjZlOWEyMC4uZTZiMTkwODk1MTI2
OTljNjE5MzgwMmQ0YWQ0NWUwM2FkYjRiZTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw3MiBAQAorMjAxMy0wMi0yMiAgQWFyb24gQ29sd2VsbCAgPGFjb2x3ZWxsQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBGYWN0b3IgTWVkaWFTb3VyY2UgbWV0aG9kcyBvdXQgb2Yg
TWVkaWFQbGF5ZXIgJiBNZWRpYVBsYXllclByaXZhdGUgYW5kIGludG8gYSBuZXcgTWVkaWFTb3Vy
Y2VQcml2YXRlIGludGVyZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwOTg1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYk1lZGlhU291cmNlIGFuZCBXZWJNZWRpYVNvdXJjZSBjbGllbnQgd2Vy
ZSBjcmVhdGVkIHRvIHJlcGxhY2UgdGhlIE1lZGlhU291cmNlIG1ldGhvZHMgaW4gV2ViTWVkaWFQ
bGF5ZXIgYW5kCisgICAgICAgIFdlYk1lZGlhUGxheWVyQ2xpZW50LiBUaGlzIGFsbG93cyB0aGUg
TWVkaWFTb3VyY2UgaW1wbGVtZW50YXRpb24gdG8gYmUgdXBkYXRlZCB3aXRob3V0IGZ1cnRoZXIg
cG9sbHV0aW5nIHRoZQorICAgICAgICBtZWRpYSBwbGF5ZXIgaW50ZXJmYWNlcy4KKworICAgICAg
ICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhUGxheWVyLmg6CisgICAg
ICAgIChXZWJNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyOjps
b2FkKToKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaDoKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhU291cmNlLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTWVkaWFTb3VyY2U6On5XZWJNZWRpYVNvdXJjZSk6CisgICAgICAgICogcHVibGljL1dl
Yk1lZGlhU291cmNlQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYk1lZGlhU291cmNlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VD
bGllbnQ6On5XZWJNZWRpYVNvdXJjZUNsaWVudCk6CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbCk6
IFRlbXBvcmFyeSBXZWJNZWRpYVNvdXJjZUNsaWVudCBpbXBsZW1lbnRhdGlvbiB0byBrZWVwIHRo
aW5ncyB3b3JraW5nIHVudGlsIENocm9taXVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VzIGxhbmQuCisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xp
ZW50SW1wbDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVkaWFTb3VyY2VDbGllbnRJbXBsOjp+V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjphZGRJZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6cmVtb3ZlSWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmJ1ZmZlcmVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjphcHBlbmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmFib3J0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFTb3VyY2VDbGllbnRJbXBsOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
U291cmNlQ2xpZW50SW1wbDo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVNvdXJjZUNsaWVudEltcGw6OmVuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFTb3VyY2VDbGllbnRJbXBsOjpzZXRUaW1lc3RhbXBPZmZzZXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZU9wZW5lZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlVVJMKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkUmVxdWVzdGVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkSW50ZXJuYWwpOgorICAgICAgICAqIHNyYy9X
ZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbCk6CisgICAgICAgICogc3JjL1dlYk1lZGlhU291cmNlSW1wbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKE1lZGlhU291cmNlUHJpdmF0ZUltcGwpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjp+TWVkaWFTb3VyY2VQcml2YXRlSW1w
bCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6Ok1lZGlhU291cmNl
UHJpdmF0ZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjph
ZGRJZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6OnJlbW92ZUlk
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6YnVmZmVyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjphcHBlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjphYm9ydCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVNvdXJjZVByaXZhdGVJbXBsOjplbmRPZlN0cmVhbSk6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhU291cmNlUHJpdmF0ZUltcGw6OnNldFRpbWVzdGFtcE9mZnNldCk6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU291cmNlSW1wbDo6V2ViTWVkaWFTb3VyY2VJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFTb3VyY2VJbXBsOjp+V2ViTWVkaWFTb3VyY2VJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTWVkaWFTb3VyY2VJbXBsOjpvcGVuKToKKyAgICAgICAgKiBzcmMvV2ViTWVk
aWFTb3VyY2VJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1l
ZGlhU291cmNlSW1wbCk6CisKIDIwMTMtMDItMjIgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBFeHBvc2Ugc2hhZG93Um9vdCB0byB0aGUg
V2ViS2l0IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcAppbmRleCBmZDY0Mjk1ZDU5ZDdhZWViNzY2OTU4MTg1ZGVkYjFjYThmMjc3
NjdhLi5lNmJmZTI0MmFkMmQzMjQ2NzMxYTcwNjQ4MGE4ZDZiMTBlYzViZDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAt
NTAsNyArNTAsNiBAQCBQYXNzUmVmUHRyPE1lZGlhU291cmNlPiBNZWRpYVNvdXJjZTo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiBNZWRpYVNvdXJjZTo6TWVkaWFTb3Vy
Y2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVj
dChjb250ZXh0LCB0aGlzKQogICAgICwgbV9yZWFkeVN0YXRlKGNsb3NlZEtleXdvcmQoKSkKLSAg
ICAsIG1fcGxheWVyKDApCiAgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShHZW5lcmljRXZlbnRRdWV1
ZTo6Y3JlYXRlKHRoaXMpKQogewogICAgIG1fc291cmNlQnVmZmVycyA9IFNvdXJjZUJ1ZmZlckxp
c3Q6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fYXN5bmNFdmVudFF1ZXVlLmdl
dCgpKTsKQEAgLTg4LDcgKzg3LDcgQEAgU291cmNlQnVmZmVyTGlzdCogTWVkaWFTb3VyY2U6OmFj
dGl2ZVNvdXJjZUJ1ZmZlcnMoKQogCiBkb3VibGUgTWVkaWFTb3VyY2U6OmR1cmF0aW9uKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSA/IHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKSA6IG1fcGxheWVyLT5kdXJhdGlvbigp
OworICAgIHJldHVybiBtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpID8gc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpIDogbV9wcml2YXRlLT5kdXJhdGlvbigpOwog
fQogCiB2b2lkIE1lZGlhU291cmNlOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpAQCAtMTAxLDcgKzEwMCw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnNldER1
cmF0aW9uKGRvdWJsZSBkdXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0g
SU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9wbGF5ZXIt
PnNvdXJjZVNldER1cmF0aW9uKGR1cmF0aW9uKTsKKyAgICBtX3ByaXZhdGUtPnNldER1cmF0aW9u
KGR1cmF0aW9uKTsKIH0KIAogU291cmNlQnVmZmVyKiBNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVm
ZmVyKGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMjYsNyArMTI1
LDcgQEAgU291cmNlQnVmZmVyKiBNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IFN0
cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMKIAogICAgIC8vIDQuIElmIHRoZSByZWFkeVN0
YXRlIGF0dHJpYnV0ZSBpcyBub3QgaW4gdGhlICJvcGVuIiBzdGF0ZSB0aGVuIHRocm93IGFuCiAg
ICAgLy8gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4K
LSAgICBpZiAoIW1fcGxheWVyIHx8IG1fcmVhZHlTdGF0ZSAhPSBvcGVuS2V5d29yZCgpKSB7Cisg
ICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFkeVN0YXRlICE9IG9wZW5LZXl3b3JkKCkpIHsKICAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpA
QCAtMTQwLDIwICsxMzksMjAgQEAgU291cmNlQnVmZmVyKiBNZWRpYVNvdXJjZTo6YWRkU291cmNl
QnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMKIAogICAgIFJlZlB0
cjxTb3VyY2VCdWZmZXI+IGJ1ZmZlciA9IFNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKGlkLCB0aGlzKTsK
IAotICAgIHN3aXRjaCAobV9wbGF5ZXItPnNvdXJjZUFkZElkKGJ1ZmZlci0+aWQoKSwgY29udGVu
dFR5cGUudHlwZSgpLCBjb2RlY3MpKSB7Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6T2s6CisgICAg
c3dpdGNoIChtX3ByaXZhdGUtPmFkZElkKGJ1ZmZlci0+aWQoKSwgY29udGVudFR5cGUudHlwZSgp
LCBjb2RlY3MpKSB7CisgICAgY2FzZSBNZWRpYVNvdXJjZVByaXZhdGU6Ok9rOgogICAgICAgICAv
LyA2LiBBZGQgdGhlIG5ldyBvYmplY3QgdG8gc291cmNlQnVmZmVycyBhbmQgZmlyZSBhIGFkZHNv
dXJjZWJ1ZmZlciBvbiB0aGF0IG9iamVjdC4KICAgICAgICAgbV9zb3VyY2VCdWZmZXJzLT5hZGQo
YnVmZmVyKTsKICAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5hZGQoYnVmZmVyKTsKICAg
ICAgICAgLy8gNy4gUmV0dXJuIHRoZSBuZXcgb2JqZWN0IHRvIHRoZSBjYWxsZXIuCiAgICAgICAg
IHJldHVybiBidWZmZXIuZ2V0KCk7Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6Tm90U3VwcG9ydGVk
OgorICAgIGNhc2UgTWVkaWFTb3VyY2VQcml2YXRlOjpOb3RTdXBwb3J0ZWQ6CiAgICAgICAgIC8v
IDIgKGNvbnQpLiBJZiB0eXBlIGNvbnRhaW5zIGEgTUlNRSB0eXBlIC4uLiB0aGF0IGlzIG5vdCBz
dXBwb3J0ZWQgd2l0aCB0aGUgdHlwZXMgCiAgICAgICAgIC8vIHNwZWNpZmllZCBmb3IgdGhlIG90
aGVyIFNvdXJjZUJ1ZmZlciBvYmplY3RzIGluIHNvdXJjZUJ1ZmZlcnMsIHRoZW4gdGhyb3cKICAg
ICAgICAgLy8gYSBOT1RfU1VQUE9SVEVEX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0
ZXBzLgogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm4gMDsK
LSAgICBjYXNlIE1lZGlhUGxheWVyOjpSZWFjaGVkSWRMaW1pdDoKKyAgICBjYXNlIE1lZGlhU291
cmNlUHJpdmF0ZTo6UmVhY2hlZElkTGltaXQ6CiAgICAgICAgIC8vIDMgKGNvbnQpLiBJZiB0aGUg
dXNlciBhZ2VudCBjYW4ndCBoYW5kbGUgYW55IG1vcmUgU291cmNlQnVmZmVyIG9iamVjdHMgdGhl
biB0aHJvdyAKICAgICAgICAgLy8gYSBRVU9UQV9FWENFRURFRF9FUlIgZXhjZXB0aW9uIGFuZCBh
Ym9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgZWMgPSBRVU9UQV9FWENFRURFRF9FUlI7CkBAIC0x
NzYsNyArMTc1LDcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJj
ZUJ1ZmZlciogYnVmZmVyLCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAgIC8vIDIuIElmIHNvdXJj
ZUJ1ZmZlcnMgaXMgZW1wdHkgdGhlbiB0aHJvdyBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRp
b24gYW5kCiAgICAgLy8gYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFtX3BsYXllciB8fCAh
bV9zb3VyY2VCdWZmZXJzLT5sZW5ndGgoKSkgeworICAgIGlmICghbV9wcml2YXRlIHx8ICFtX3Nv
dXJjZUJ1ZmZlcnMtPmxlbmd0aCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xOTIsNyArMTkxLDcgQEAgdm9pZCBNZWRpYVNv
dXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlciogYnVmZmVyLCBFeGNlcHRpb25D
b2RlJiBlYykKIAogICAgIC8vIDcuIERlc3Ryb3kgYWxsIHJlc291cmNlcyBmb3Igc291cmNlQnVm
ZmVyLgogICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy0+cmVtb3ZlKGJ1ZmZlcik7Ci0gICAgbV9w
bGF5ZXItPnNvdXJjZVJlbW92ZUlkKGJ1ZmZlci0+aWQoKSk7CisgICAgbV9wcml2YXRlLT5yZW1v
dmVJZChidWZmZXItPmlkKCkpOwogCiAgICAgLy8gNC4gUmVtb3ZlIHRyYWNrIGluZm9ybWF0aW9u
IGZyb20gYXVkaW9UcmFja3MsIHZpZGVvVHJhY2tzLCBhbmQgdGV4dFRyYWNrcyBmb3IgYWxsIHRy
YWNrcyAKICAgICAvLyBhc3NvY2lhdGVkIHdpdGggc291cmNlQnVmZmVyIGFuZCBmaXJlIGEgc2lt
cGxlIGV2ZW50IG5hbWVkIGNoYW5nZSBvbiB0aGUgbW9kaWZpZWQgbGlzdHMuCkBAIC0yMjAsNyAr
MjE5LDcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShjb25zdCBTdHJpbmcmIHN0
YXRlKQogICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAgICAg
IG1fc291cmNlQnVmZmVycy0+Y2xlYXIoKTsKICAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJz
LT5jbGVhcigpOwotICAgICAgICBtX3BsYXllciA9IDA7CisgICAgICAgIG1fcHJpdmF0ZS5jbGVh
cigpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRzb3VyY2VjbG9z
ZUV2ZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0MSwxOSArMjQwLDE5IEBAIHZv
aWQgTWVkaWFTb3VyY2U6OmVuZE9mU3RyZWFtKGNvbnN0IFN0cmluZyYgZXJyb3IsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgIC8vIDMuMSBodHRwOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9y
YXctZmlsZS90aXAvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI2RvbS1lbmRvZnN0cmVh
bQogICAgIC8vIDEuIElmIHRoZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSBpcyBub3QgaW4gdGhlICJv
cGVuIiBzdGF0ZSB0aGVuIHRocm93IGFuCiAgICAgLy8gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0
aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fcmVhZHlT
dGF0ZSAhPSBvcGVuS2V5d29yZCgpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZWFkeVN0
YXRlICE9IG9wZW5LZXl3b3JkKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0
YXR1cyBlb3NTdGF0dXMgPSBNZWRpYVBsYXllcjo6RW9zTm9FcnJvcjsKKyAgICBNZWRpYVNvdXJj
ZVByaXZhdGU6OkVuZE9mU3RyZWFtU3RhdHVzIGVvc1N0YXR1cyA9IE1lZGlhU291cmNlUHJpdmF0
ZTo6RW9zTm9FcnJvcjsKIAogICAgIGlmIChlcnJvci5pc051bGwoKSB8fCBlcnJvci5pc0VtcHR5
KCkpCi0gICAgICAgIGVvc1N0YXR1cyA9IE1lZGlhUGxheWVyOjpFb3NOb0Vycm9yOworICAgICAg
ICBlb3NTdGF0dXMgPSBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05vRXJyb3I7CiAgICAgZWxzZSBp
ZiAoZXJyb3IgPT0gIm5ldHdvcmsiKQotICAgICAgICBlb3NTdGF0dXMgPSBNZWRpYVBsYXllcjo6
RW9zTmV0d29ya0Vycm9yOworICAgICAgICBlb3NTdGF0dXMgPSBNZWRpYVNvdXJjZVByaXZhdGU6
OkVvc05ldHdvcmtFcnJvcjsKICAgICBlbHNlIGlmIChlcnJvciA9PSAiZGVjb2RlIikKLSAgICAg
ICAgZW9zU3RhdHVzID0gTWVkaWFQbGF5ZXI6OkVvc0RlY29kZUVycm9yOworICAgICAgICBlb3NT
dGF0dXMgPSBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc0RlY29kZUVycm9yOwogICAgIGVsc2Ugewog
ICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMjYx
LDE3ICsyNjAsMTcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6ZW5kT2ZTdHJlYW0oY29uc3QgU3RyaW5n
JiBlcnJvciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyAyLiBDaGFuZ2UgdGhlIHJlYWR5
U3RhdGUgYXR0cmlidXRlIHZhbHVlIHRvICJlbmRlZCIuCiAgICAgc2V0UmVhZHlTdGF0ZShlbmRl
ZEtleXdvcmQoKSk7Ci0gICAgbV9wbGF5ZXItPnNvdXJjZUVuZE9mU3RyZWFtKGVvc1N0YXR1cyk7
CisgICAgbV9wcml2YXRlLT5lbmRPZlN0cmVhbShlb3NTdGF0dXMpOwogfQogCiBQYXNzUmVmUHRy
PFRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZChjb25zdCBTdHJpbmcmIGlkLCBFeGNl
cHRpb25Db2RlJiBlYykgY29uc3QKIHsKLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fcmVhZHlTdGF0
ZSA9PSBjbG9zZWRLZXl3b3JkKCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0ZSB8fCBtX3JlYWR5U3Rh
dGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBtX3BsYXllci0+c291cmNl
QnVmZmVyZWQoaWQpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmJ1ZmZlcmVkKGlkKTsKIH0KIAog
dm9pZCBNZWRpYVNvdXJjZTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8VWlu
dDhBcnJheT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yODEsNyArMjgwLDcgQEAgdm9p
ZCBNZWRpYVNvdXJjZTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8VWludDhB
cnJheT4gZGF0YSwgRXhjZXB0aW8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICgh
bV9wbGF5ZXIgfHwgbV9yZWFkeVN0YXRlID09IGNsb3NlZEtleXdvcmQoKSkgeworICAgIGlmICgh
bV9wcml2YXRlIHx8IG1fcmVhZHlTdGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkpIHsKICAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI4OSw3
ICsyODgsNyBAQCB2b2lkIE1lZGlhU291cmNlOjphcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgUGFz
c1JlZlB0cjxVaW50OEFycmF5PiBkYXRhLCBFeGNlcHRpbwogICAgIGlmIChtX3JlYWR5U3RhdGUg
PT0gZW5kZWRLZXl3b3JkKCkpCiAgICAgICAgIHNldFJlYWR5U3RhdGUob3BlbktleXdvcmQoKSk7
CiAKLSAgICBpZiAoIW1fcGxheWVyLT5zb3VyY2VBcHBlbmQoaWQsIGRhdGEtPmRhdGEoKSwgZGF0
YS0+bGVuZ3RoKCkpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUtPmFwcGVuZChpZCwgZGF0YS0+ZGF0
YSgpLCBkYXRhLT5sZW5ndGgoKSkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMjk3LDI5ICsyOTYsMzcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6
YXBwZW5kKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZGF0YSwgRXhj
ZXB0aW8KIAogdm9pZCBNZWRpYVNvdXJjZTo6YWJvcnQoY29uc3QgU3RyaW5nJiBpZCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFtX3BsYXllciB8fCBtX3JlYWR5U3RhdGUgIT0gb3Bl
bktleXdvcmQoKSkgeworICAgIGlmICghbV9wcml2YXRlIHx8IG1fcmVhZHlTdGF0ZSAhPSBvcGVu
S2V5d29yZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fcGxheWVyLT5zb3VyY2VBYm9ydChpZCkpCisgICAg
aWYgKCFtX3ByaXZhdGUtPmFib3J0KGlkKSkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKIGJvb2wgTWVkaWFTb3VyY2U6OnNldFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcm
IGlkLCBkb3VibGUgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIW1fcGxh
eWVyIHx8IG1fcmVhZHlTdGF0ZSA9PSBjbG9zZWRLZXl3b3JkKCkpIHsKKyAgICBpZiAoIW1fcHJp
dmF0ZSB8fCBtX3JlYWR5U3RhdGUgPT0gY2xvc2VkS2V5d29yZCgpKSB7CiAgICAgICAgIGVjID0g
SU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBp
ZiAoIW1fcGxheWVyLT5zb3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoaWQsIG9mZnNldCkpIHsKKyAg
ICBpZiAoIW1fcHJpdmF0ZS0+c2V0VGltZXN0YW1wT2Zmc2V0KGlkLCBvZmZzZXQpKSB7CiAgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgTWVkaWFTb3VyY2U6OnNldFByaXZhdGVBbmRP
cGVuKFBhc3NPd25QdHI8TWVkaWFTb3VyY2VQcml2YXRlPiBtZWRpYVNvdXJjZVByaXZhdGUpCit7
CisgICAgQVNTRVJUKG1lZGlhU291cmNlUHJpdmF0ZSk7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUp
OworICAgIG1fcHJpdmF0ZSA9IG1lZGlhU291cmNlUHJpdmF0ZTsKKyAgICBzZXRSZWFkeVN0YXRl
KG9wZW5LZXl3b3JkKCkpOworfQorCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlOjpp
bnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFj
ZUZvck1lZGlhU291cmNlOwpAQCAtMzMyLDEzICszMzksMTMgQEAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogTWVkaWFTb3VyY2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogCiBib29s
IE1lZGlhU291cmNlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVybiBt
X3BsYXllciB8fCBtX2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpCisgICAgcmV0
dXJuIG1fcHJpdmF0ZSB8fCBtX2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpCiAg
ICAgICAgIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKIHZv
aWQgTWVkaWFTb3VyY2U6OnN0b3AoKQogewotICAgIG1fcGxheWVyID0gMDsKKyAgICBtX3ByaXZh
dGUuY2xlYXIoKTsKICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxsRXZlbnRzKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aAppbmRleCAxZDNmMzQ3NmI2NzgxZjNjOWY1Y2U0ZmE0MmFlYzdjZTA1MTBkY2JjLi45NTM1OGQ3
Y2I5ZDE3YzQ2YWIwYTk0ZWY3NTJiN2I1Y2YxZDczMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCkBAIC0zNSw3ICszNSw3IEBACiAK
ICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1
ZS5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VQcml2
YXRlLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVy
TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZW5kT2ZTdHJlYW0oY29uc3QgU3RyaW5nJiBlcnJvciwgRXhjZXB0
aW9uQ29kZSYpOwogCi0gICAgdm9pZCBzZXRNZWRpYVBsYXllcihNZWRpYVBsYXllciogcGxheWVy
KSB7IG1fcGxheWVyID0gcGxheWVyOyB9CisgICAgdm9pZCBzZXRQcml2YXRlQW5kT3BlbihQYXNz
T3duUHRyPE1lZGlhU291cmNlUHJpdmF0ZT4pOwogCiAgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBidWZmZXJlZChjb25zdCBTdHJpbmcmIGlkLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAg
dm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBkYXRh
LCBFeGNlcHRpb25Db2RlJik7CkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgRXZlbnRU
YXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogCiAgICAgU3RyaW5nIG1fcmVhZHlTdGF0ZTsK
LSAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CisgICAgT3duUHRyPE1lZGlhU291cmNlUHJpdmF0
ZT4gbV9wcml2YXRlOwogCiAgICAgUmVmUHRyPFNvdXJjZUJ1ZmZlckxpc3Q+IG1fc291cmNlQnVm
ZmVyczsKICAgICBSZWZQdHI8U291cmNlQnVmZmVyTGlzdD4gbV9hY3RpdmVTb3VyY2VCdWZmZXJz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMmJjNGU2YjE0
MWU1YTE1NmY4NTFkOWNlZWY5MWFiYmMxMmEwYzQ5Zi4uYjdhYTMzNzBmMzk3N2ViNTJjNzJlNjVh
NGJmZmE2Njg2OTliYjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC0zMDgsMTEgKzMwOCw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAgICAg
IGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZFJlc3RyaWN0
aW9uKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIG1fbWVkaWFTb3Vy
Y2VVUkwuc2V0UHJvdG9jb2wobWVkaWFTb3VyY2VCbG9iUHJvdG9jb2wpOwotICAgIG1fbWVkaWFT
b3VyY2VVUkwuc2V0UGF0aChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOwotI2VuZGlmCi0K
ICAgICBzZXRIYXNDdXN0b21TdHlsZUNhbGxiYWNrcygpOwogICAgIGFkZEVsZW1lbnRUb0RvY3Vt
ZW50TWFwKHRoaXMsIGRvY3VtZW50KTsKIApAQCAtOTg3LDE5ICs5ODIsNiBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBLVVJMJiBpbml0aWFsVVJMLCBDb250ZW50
VHlwZSYgY29udGVudAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCi0gICAgQVNTRVJUKCFtX21lZGlhU291cmNlKTsKLQotICAgIGlmICh1cmwu
cHJvdG9jb2xJcyhtZWRpYVNvdXJjZUJsb2JQcm90b2NvbCkpIHsKLSAgICAgICAgbV9tZWRpYVNv
dXJjZSA9IE1lZGlhU291cmNlUmVnaXN0cnk6OnJlZ2lzdHJ5KCkubG9va3VwTWVkaWFTb3VyY2Uo
dXJsLnN0cmluZygpKTsKLQotICAgICAgICBpZiAobV9tZWRpYVNvdXJjZSkgewotICAgICAgICAg
ICAgbV9tZWRpYVNvdXJjZS0+c2V0TWVkaWFQbGF5ZXIobV9wbGF5ZXIuZ2V0KCkpOwotICAgICAg
ICAgICAgbV9tZWRpYVNvdXJjZVVSTCA9IHVybDsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgot
CiAgICAgLy8gVGhlIHJlc291cmNlIGZldGNoIGFsZ29yaXRobSAKICAgICBtX25ldHdvcmtTdGF0
ZSA9IE5FVFdPUktfTE9BRElORzsKIApAQCAtMTA1NCw2ICsxMDM2LDE3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNvbnN0IEtVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRU
eXBlJiBjb250ZW50CiAgICAgICAgIG1fbXV0ZWQgPSB0cnVlOwogICAgIHVwZGF0ZVZvbHVtZSgp
OwogCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICBBU1NFUlQoIW1fbWVkaWFTb3VyY2Up
OworCisgICAgaWYgKHVybC5wcm90b2NvbElzKG1lZGlhU291cmNlQmxvYlByb3RvY29sKSkKKyAg
ICAgICAgbV9tZWRpYVNvdXJjZSA9IE1lZGlhU291cmNlUmVnaXN0cnk6OnJlZ2lzdHJ5KCkubG9v
a3VwTWVkaWFTb3VyY2UodXJsLnN0cmluZygpKTsKKworICAgIGlmIChtX21lZGlhU291cmNlKSB7
CisgICAgICAgIGlmICghbV9wbGF5ZXItPmxvYWQodXJsLCBtX21lZGlhU291cmNlKSkKKyAgICAg
ICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOworICAg
IH0gZWxzZQorI2VuZGlmCiAgICAgaWYgKCFtX3BsYXllci0+bG9hZCh1cmwsIGNvbnRlbnRUeXBl
LCBrZXlTeXN0ZW0pKQogICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkZv
cm1hdEVycm9yKTsKIApAQCAtMTg3MiwyMiArMTg2NSw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKICNlbmRpZgog
fQogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJTb3VyY2VPcGVuZWQoKQotewotICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVy
Q2FsbGJhY2soKTsKLQotICAgIHNldFNvdXJjZVN0YXRlKE1lZGlhU291cmNlOjpvcGVuS2V5d29y
ZCgpKTsKLQotICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7Ci19Ci0KLVN0
cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNvdXJjZVVSTCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VVUkwuc3RyaW5nKCk7Ci19Ci0jZW5kaWYKLQogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
S2V5QWRkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQpCiB7CkBAIC00NDk0LDEzICs0NDcxLDEzIEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXIoKQogICAgICAgICBtX2F1ZGlvU291cmNlTm9kZS0+
bG9jaygpOwogI2VuZGlmCiAKLSAgICBtX3BsYXllciA9IE1lZGlhUGxheWVyOjpjcmVhdGUodGhp
cyk7Ci0KICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIGlmIChtX21lZGlhU291cmNlKQot
ICAgICAgICBtX21lZGlhU291cmNlLT5zZXRNZWRpYVBsYXllcihtX3BsYXllci5nZXQoKSk7Cisg
ICAgICAgIG1fbWVkaWFTb3VyY2UtPnNldFJlYWR5U3RhdGUoTWVkaWFTb3VyY2U6OmNsb3NlZEtl
eXdvcmQoKSk7CiAjZW5kaWYKIAorICAgIG1fcGxheWVyID0gTWVkaWFQbGF5ZXI6OmNyZWF0ZSh0
aGlzKTsKKwogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgaWYgKG1fYXVkaW9Tb3VyY2VOb2Rl
KSB7CiAgICAgICAgIC8vIFdoZW4gY3JlYXRpbmcgdGhlIHBsYXllciwgbWFrZSBzdXJlIGl0cyBB
dWRpb1NvdXJjZVByb3ZpZGVyIGtub3dzIGFib3V0IHRoZSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUuCkBAIC00ODQxLDcgKzQ4MTgsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbgogICAg
IGluZm8uYWRkTWVtYmVyKG1fcHJveHlXaWRnZXQsICJwcm94eVdpZGdldCIpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBpbmZvLmFkZE1lbWJlcihtX21lZGlhU291cmNl
VVJMLCAibWVkaWFTb3VyY2VVUkwiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX21lZGlhU291cmNl
LCAibWVkaWFTb3VyY2UiKTsKICNlbmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZmExZTNmMjg0ZWUxOTZiZmIyMWMy
MmE0ZjhmNzE3MmU0MzE2MGQ0NS4uMzc0ZGYyYjg1NjU4NjJmMzUzNTA3ZGY0OTI4MzNkNDMyMDhh
NTBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTQ0MiwxMSAr
NDQyLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJGaXJzdFZpZGVv
RnJhbWVBdmFpbGFibGUoTWVkaWFQbGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKIAotI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyU291cmNlT3BlbmVkKCk7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJTb3VyY2VVUkwoKSBjb25zdDsKLSNlbmRpZgot
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJLZXlBZGRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
S2V5RXJyb3IoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdW5z
aWduZWQgc2hvcnQgc3lzdGVtQ29kZSkgT1ZFUlJJREU7CkBAIC02MzksNyArNjM0LDYgQEAgcHJp
dmF0ZToKICAgICBpbnQgbV9wcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjazsKIAogI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCi0gICAgS1VSTCBtX21lZGlhU291cmNlVVJMOwogICAgIFJlZlB0
cjxNZWRpYVNvdXJjZT4gbV9tZWRpYVNvdXJjZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggMGIyNTQ0ZjkyMTYx
OGYyZTEzMTA1ODliMDk2YTYxZjhiMDVmNjk5MS4uMzZlMjBmNTEzNDE5YWIwNmY4Y2QyMTYwYTU3
MTU5Njc3Nzg0ZDdhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlICJJbmJhbmRUZXh0
VHJhY2tQcml2YXRlLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisjaW5j
bHVkZSAiTWVkaWFTb3VyY2UuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVk
ZSA8UXRHbG9iYWw+CiAjZW5kaWYKQEAgLTkxLDYgKzk1LDkgQEAgcHVibGljOgogICAgIE51bGxN
ZWRpYVBsYXllclByaXZhdGUoTWVkaWFQbGF5ZXIqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBs
b2FkKGNvbnN0IFN0cmluZyYpIHsgfQorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgdmly
dHVhbCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4pIHsg
fQorI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKSB7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlVG9QbGF5KCkgeyB9CkBAIC0xNTEsMTcgKzE1OCw2IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdmlydHVhbCBNZWRp
YVBsYXllcjo6QWRkSWRTdGF0dXMgc291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKSB7IHJldHVybiBNZWRp
YVBsYXllcjo6Tm90U3VwcG9ydGVkOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IHNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIFRpbWVSYW5nZXM6OmNy
ZWF0ZSgpOyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYp
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCBT
dHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUFib3J0KGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZVNldER1cmF0aW9uKGRvdWJsZSkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKE1lZGlhUGxheWVyOjpFbmRPZlN0cmVh
bVN0YXR1cykgeyB9Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChj
b25zdCBTdHJpbmcmLCBkb3VibGUpIHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKLQogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TWVkaWFLZXlF
eGNlcHRpb24gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVk
IGNoYXIqLCB1bnNpZ25lZCkgT1ZFUlJJREUgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkludmFsaWRQ
bGF5ZXJTdGF0ZTsgfQogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9u
IGFkZEtleShjb25zdCBTdHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsgfQpAQCAtMzcyLDYgKzM2OCwx
MCBAQCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgQ29udGVu
dFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdAogICAgIG1fa2V5U3lzdGVtID0ga2V5U3lzdGVt
Lmxvd2VyKCk7CiAgICAgbV9jb250ZW50TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21FeHRlbnNpb24g
PSBmYWxzZTsKIAorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgbV9tZWRpYVNvdXJjZSA9
IDA7CisjZW5kaWYKKwogICAgIC8vIElmIHRoZSBNSU1FIHR5cGUgaXMgbWlzc2luZyBvciBpcyBu
b3QgbWVhbmluZ2Z1bCwgdHJ5IHRvIGZpZ3VyZSBpdCBvdXQgZnJvbSB0aGUgVVJMLgogICAgIGlm
IChtX2NvbnRlbnRNSU1FVHlwZS5pc0VtcHR5KCkgfHwgbV9jb250ZW50TUlNRVR5cGUgPT0gYXBw
bGljYXRpb25PY3RldFN0cmVhbSgpIHx8IG1fY29udGVudE1JTUVUeXBlID09IHRleHRQbGFpbigp
KSB7CiAgICAgICAgIGlmIChtX3VybC5wcm90b2NvbElzRGF0YSgpKQpAQCAtMzk0LDYgKzM5NCwy
MCBAQCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgQ29udGVu
dFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdAogICAgIHJldHVybiBtX2N1cnJlbnRNZWRpYUVu
Z2luZTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCitib29sIE1lZGlhUGxheWVyOjps
b2FkKGNvbnN0IEtVUkwmIHVybCwgUGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4gbWVkaWFTb3VyY2Up
Cit7CisgICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOworICAgIG1fY29udGVudE1JTUVU
eXBlID0gIiI7CisgICAgbV9jb250ZW50VHlwZUNvZGVjcyA9ICIiOworICAgIG1fdXJsID0gdXJs
OworICAgIG1fa2V5U3lzdGVtID0gIiI7CisgICAgbV9jb250ZW50TUlNRVR5cGVXYXNJbmZlcnJl
ZEZyb21FeHRlbnNpb24gPSBmYWxzZTsKKyAgICBsb2FkV2l0aE5leHRNZWRpYUVuZ2luZSgwKTsK
KyAgICByZXR1cm4gbV9jdXJyZW50TWVkaWFFbmdpbmU7Cit9CisjZW5kaWYKKwogdm9pZCBNZWRp
YVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJy
ZW50KQogewogICAgIE1lZGlhUGxheWVyRmFjdG9yeSogZW5naW5lID0gMDsKQEAgLTQyNSw5ICs0
MzksMTQgQEAgdm9pZCBNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoTWVkaWFQ
bGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogICAgICAgICAgICAgbV9wcml2YXRlLT5wcmVwYXJlRm9y
UmVuZGVyaW5nKCk7CiAgICAgfQogCi0gICAgaWYgKG1fcHJpdmF0ZSkKKyAgICBpZiAobV9wcml2
YXRlKSB7CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICAgICAgaWYgKG1fbWVkaWFTb3Vy
Y2UpCisgICAgICAgICAgICBtX3ByaXZhdGUtPmxvYWQobV91cmwuc3RyaW5nKCksIG1fbWVkaWFT
b3VyY2UpOworICAgICAgICBlbHNlCisjZW5kaWYKICAgICAgICAgbV9wcml2YXRlLT5sb2FkKG1f
dXJsLnN0cmluZygpKTsKLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogICAgICAgICBtX3ByaXZh
dGUgPSBjcmVhdGVOdWxsTWVkaWFQbGF5ZXIodGhpcyk7CiAgICAgICAgIGlmIChtX21lZGlhUGxh
eWVyQ2xpZW50KSB7CiAgICAgICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXll
ckVuZ2luZVVwZGF0ZWQodGhpcyk7CkBAIC00NzcsNDkgKzQ5Niw2IEBAIHZvaWQgTWVkaWFQbGF5
ZXI6OnBhdXNlKCkKICAgICBtX3ByaXZhdGUtPnBhdXNlKCk7CiB9CiAKLSNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQotCi1NZWRpYVBsYXllcjo6QWRkSWRTdGF0dXMgTWVkaWFQbGF5ZXI6OnNvdXJj
ZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGNvZGVjcykKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VBZGRJZChp
ZCwgdHlwZSwgY29kZWNzKTsKLX0KLQotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXll
cjo6c291cmNlQnVmZmVyZWQoY29uc3QgU3RyaW5nJiBpZCkKLXsKLSAgICByZXR1cm4gbV9wcml2
YXRlLT5zb3VyY2VCdWZmZXJlZChpZCk7Ci19Ci0KLWJvb2wgTWVkaWFQbGF5ZXI6OnNvdXJjZVJl
bW92ZUlkKGNvbnN0IFN0cmluZyYgaWQpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNl
UmVtb3ZlSWQoaWQpOwotfQotCi1ib29sIE1lZGlhUGxheWVyOjpzb3VyY2VBcHBlbmQoY29uc3Qg
U3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQot
ewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZUFwcGVuZChpZCwgZGF0YSwgbGVuZ3RoKTsK
LX0KLQotYm9vbCBNZWRpYVBsYXllcjo6c291cmNlQWJvcnQoY29uc3QgU3RyaW5nJiBpZCkKLXsK
LSAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VBYm9ydChpZCk7Ci19Ci0KLXZvaWQgTWVkaWFQ
bGF5ZXI6OnNvdXJjZVNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKLXsKLSAgICBtX3ByaXZh
dGUtPnNvdXJjZVNldER1cmF0aW9uKGR1cmF0aW9uKTsKLX0KLQotdm9pZCBNZWRpYVBsYXllcjo6
c291cmNlRW5kT2ZTdHJlYW0oTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzIHN0YXR1cykK
LXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VFbmRPZlN0cmVhbShzdGF0dXMpOwotfQot
Ci1ib29sIE1lZGlhUGxheWVyOjpzb3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgU3RyaW5n
JiBpZCwgZG91YmxlIG9mZnNldCkKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VTZXRU
aW1lc3RhbXBPZmZzZXQoaWQsIG9mZnNldCk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCiBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gTWVkaWFQbGF5ZXI6
OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgdW5zaWdu
ZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKQogewpAQCAtOTQ3LDIx
ICs5MjMsNiBAQCB2b2lkIE1lZGlhUGxheWVyOjpzZXRQcml2YXRlQnJvd3NpbmdNb2RlKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nTW9kZSkKICAgICBtX3ByaXZhdGUtPnNldFByaXZhdGVCcm93c2luZ01v
ZGUobV9wcml2YXRlQnJvd3NpbmcpOwogfQogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLXZv
aWQgTWVkaWFQbGF5ZXI6OnNvdXJjZU9wZW5lZCgpCi17Ci0gICAgaWYgKG1fbWVkaWFQbGF5ZXJD
bGllbnQpCi0gICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyU291cmNlT3Bl
bmVkKCk7Ci19Ci0KLVN0cmluZyBNZWRpYVBsYXllcjo6c291cmNlVVJMKCkgY29uc3QKLXsKLSAg
ICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKLSAgICAgICAgcmV0dXJuIG1fbWVkaWFQbGF5ZXJD
bGllbnQtPm1lZGlhUGxheWVyU291cmNlVVJMKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQot
I2VuZGlmCi0KIC8vIENsaWVudCBjYWxsYmFja3MuCiB2b2lkIE1lZGlhUGxheWVyOjpuZXR3b3Jr
U3RhdGVDaGFuZ2VkKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCmluZGV4IDYzY2UwOWY3OWI4NmY0YmIwODBmOWE3OTM2Mjk4MTQ3NzZlYTc4
MTcuLjEyMzJhNGQ5NDliMDk3ODA1YmZhZmMyNTgxYTgzNDYxNTJjYTBkNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNjEsNyArNjEs
OSBAQCBjbGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBH
U3RyZWFtZXJHV29ybGQ7CiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U7CisjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKIGNsYXNzIE1lZGlhU291cmNlOworI2VuZGlmCiBjbGFzcyBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbjsKIAogLy8gU3RydWN0dXJlIHRoYXQgd2lsbCBob2xkIGV2
ZXJ5IG5hdGl2ZQpAQCAtMTgwLDExICsxODIsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHcmFw
aGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VBZGFwdGVyKGNvbnN0
IE1lZGlhUGxheWVyKikgY29uc3QgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNvdXJjZU9wZW5lZCgp
IHsgfQotICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291cmNlVVJMKCkgY29uc3QgeyBy
ZXR1cm4gIngtbWVkaWEtc291cmNlLXVuc3VwcG9ydGVkOiI7IH0KLSNlbmRpZgotCiAjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBlbnVtIE1lZGlhS2V5RXJyb3JDb2RlIHsgVW5rbm93
bkVycm9yID0gMSwgQ2xpZW50RXJyb3IsIFNlcnZpY2VFcnJvciwgT3V0cHV0RXJyb3IsIEhhcmR3
YXJlQ2hhbmdlRXJyb3IsIERvbWFpbkVycm9yIH07CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyS2V5QWRkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIC8qIGtleVN5c3RlbSAqLywg
Y29uc3QgU3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8pIHsgfQpAQCAtMjcxLDYgKzI2OCw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSk7CiAKICAgICBib29s
IGxvYWQoY29uc3QgS1VSTCYsIGNvbnN0IENvbnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0pOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgYm9vbCBsb2FkKGNvbnN0IEtV
UkwmLCBQYXNzUmVmUHRyPE1lZGlhU291cmNlPik7CisjZW5kaWYKICAgICB2b2lkIGNhbmNlbExv
YWQoKTsKIAogICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0OwpAQCAtMjgwLDE5ICsyODAsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBwbGF5KCk7CiAgICAgdm9pZCBwYXVzZSgpOyAgICAKIAotI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCi0gICAgZW51bSBBZGRJZFN0YXR1cyB7IE9rLCBOb3RTdXBwb3J0
ZWQsIFJlYWNoZWRJZExpbWl0IH07Ci0gICAgQWRkSWRTdGF0dXMgc291cmNlQWRkSWQoY29uc3Qg
U3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29k
ZWNzKTsKLSAgICBib29sIHNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYgaWQpOwotICAgIFBh
c3NSZWZQdHI8VGltZVJhbmdlcz4gc291cmNlQnVmZmVyZWQoY29uc3QgU3RyaW5nJiBpZCk7Ci0g
ICAgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2b2lkIHNvdXJjZVNldER1cmF0aW9uKGRv
dWJsZSk7Ci0gICAgYm9vbCBzb3VyY2VBYm9ydChjb25zdCBTdHJpbmcmIGlkKTsKLSAgICBlbnVt
IEVuZE9mU3RyZWFtU3RhdHVzIHsgRW9zTm9FcnJvciwgRW9zTmV0d29ya0Vycm9yLCBFb3NEZWNv
ZGVFcnJvciB9OwotICAgIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMp
OwotICAgIGJvb2wgc291cmNlU2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFN0cmluZyYgaWQsIGRv
dWJsZSBvZmZzZXQpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAg
IC8vIFJlcHJlc2VudHMgc3luY2hyb25vdXMgZXhjZXB0aW9ucyB0aGF0IGNhbiBiZSB0aHJvd24g
ZnJvbSB0aGUgRW5jcnlwdGVkIE1lZGlhIG1ldGhvZHMuCiAgICAgLy8gVGhpcyBpcyBkaWZmZXJl
bnQgZnJvbSB0aGUgYXN5bmNocm9ub3VzIE1lZGlhS2V5RXJyb3IuCkBAIC00MjIsMTEgKzQwOSw2
IEBAIHB1YmxpYzoKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVy
KCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdm9pZCBzb3VyY2VP
cGVuZWQoKTsKLSAgICBTdHJpbmcgc291cmNlVVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdm9pZCBrZXlBZGRlZChjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwogICAgIHZvaWQga2V5RXJyb3IoY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBNZWRpYVBsYXll
ckNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUsIHVuc2lnbmVkIHNob3J0IHN5c3RlbUNvZGUpOwpA
QCAtNDg0LDYgKzQ2NiwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9S
X1ZJREVPKQogICAgIFdlYk1lZGlhUGxheWVyUHJveHkqIG1fcGxheWVyUHJveHk7ICAgIC8vIG5v
dCBvd25lZCBvciB1c2VkLCBwYXNzZWQgdG8gbV9wcml2YXRlCiAjZW5kaWYKKworI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCisgICAgUmVmUHRyPE1lZGlhU291cmNlPiBtX21lZGlhU291cmNlOwor
I2VuZGlmCiB9OwogCiB0eXBlZGVmIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlPiAoKkNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKShNZWRpYVBsYXllciopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApp
bmRleCA1YzY2NzRkMmQzYTYzOGNhMzA2MWQzZjkyMjlhYWFkZjIyYWE3ODQwLi4xZjNmM2UxMGE4
N2M5Mzk1NzViM2JjNzc3MzhiYzEyODgwZDFhNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtNDQsNiArNDQs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKCkg
eyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIHVybCkgPSAwOworI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3QgU3RyaW5n
JiB1cmwsIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2U+KSA9IDA7CisjZW5kaWYKICAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsTG9hZCgpID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRv
UGxheSgpIHsgfQpAQCAtMTY3LDE3ICsxNzAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBdWRp
b1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgeyByZXR1cm4gMDsgfQogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6
OkFkZElkU3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcykgeyByZXR1cm4gTWVkaWFQbGF5ZXI6
Ok5vdFN1cHBvcnRlZDsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzb3Vy
Y2VCdWZmZXJlZChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUo
KTsgfQotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKSB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgU3Ry
aW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VBYm9ydChjb25zdCBTdHJpbmcm
IGlkKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VTZXREdXJhdGlv
bihkb3VibGUpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VFbmRPZlN0cmVhbShNZWRpYVBs
YXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VTZXRU
aW1lc3RhbXBPZmZzZXQoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIG9mZnNldCkgeyByZXR1cm4g
ZmFsc2U7IH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0
dWFsIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBhZGRLZXkoY29uc3QgU3RyaW5nJiwg
Y29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5z
aWduZWQsIGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpLZXlTeXN0ZW1Ob3RT
dXBwb3J0ZWQ7IH0KICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBn
ZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVu
c2lnbmVkKSB7IHJldHVybiBNZWRpYVBsYXllcjo6S2V5U3lzdGVtTm90U3VwcG9ydGVkOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291cmNlUHJp
dmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhkOTFkYTBjZmQwMTBlNjdmYWI3NWM1Y2FjYWQzZjZiZmY5MGQx
ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVNvdXJjZVByaXZhdGUuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgTWVkaWFTb3VyY2VQcml2
YXRlX2gKKyNkZWZpbmUgTWVkaWFTb3VyY2VQcml2YXRlX2gKKworI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCisKKyNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTWVkaWFTb3VyY2VQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShN
ZWRpYVNvdXJjZVByaXZhdGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBNZWRpYVNvdXJjZVByaXZhdGUoKSB7IH0KKyAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZVByaXZh
dGUoKSB7IH0KKworICAgIGVudW0gQWRkSWRTdGF0dXMgeyBPaywgTm90U3VwcG9ydGVkLCBSZWFj
aGVkSWRMaW1pdCB9OworICAgIHZpcnR1YWwgQWRkSWRTdGF0dXMgYWRkSWQoY29uc3QgU3RyaW5n
JiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKSA9
IDA7CisgICAgdmlydHVhbCBib29sIHJlbW92ZUlkKGNvbnN0IFN0cmluZyYgaWQpID0gMDsKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoY29uc3QgU3RyaW5nJiBp
ZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCBk
b3VibGUgZHVyYXRpb24oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJs
ZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhYm9ydChjb25zdCBTdHJpbmcmIGlkKSA9IDA7Cisg
ICAgZW51bSBFbmRPZlN0cmVhbVN0YXR1cyB7IEVvc05vRXJyb3IsIEVvc05ldHdvcmtFcnJvciwg
RW9zRGVjb2RlRXJyb3IgfTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kT2ZTdHJlYW0oRW5kT2ZTdHJl
YW1TdGF0dXMpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0
IFN0cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpID0gMDsKK307CisKK30KKworI2VuZGlmCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA1NzMwMmRmODZkY2Y5YTE3YmQ1YzU1
ZTJiYjEyMWVmMzVmYzQ5MmY1Li5mNDViMDZhYzQ4ZDkwMTUwZGU3Mzc4ODJiODFhMmVlODEyMjhm
YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xOTUsNiArMTk1LDggQEAKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlhUGxheWVyLmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViTWVkaWFQbGF5ZXJBY3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJNZWRpYVBsYXllckNsaWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYk1l
ZGlhU291cmNlLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFTb3VyY2VDbGll
bnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5Lmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVtb3J5VXNhZ2VJbmZvLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViTWVudUl0ZW1JbmZvLmgnLApAQCAtNTA0LDYgKzUwNiw4IEBA
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJMYWJlbEVsZW1lbnQuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMv
V2ViTWVkaWFTb3VyY2VJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVNv
dXJjZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViTm9kZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKaW5kZXggYTQyODdlMWMxZGU0YTM5OTcw
MTA0OGZkNmM0YzFkMDdhYmEzNmYxOC4uZjlhN2ZhZmY4YmNlYTFiYzAzNjNhODU5MmZhOWE0ODE3
MDc5MmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVk
aWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBs
YXllci5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViQ2FudmFzLmgiCiAjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYk1lZGlhU291cmNlLmgi
CiAjaW5jbHVkZSAiV2ViVGltZVJhbmdlLmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgog
CkBAIC0xMDksNiArMTEwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYk1lZGlhUGxheWVy
KCkge30KIAogICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFdlYlVSTCYsIENPUlNNb2RlKSA9
IDA7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvbmNl
IHRoZSBDaHJvbWl1bSBjb2RlIGltcGxlbWVudHMgdGhpcyBtZXRob2QuCisgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDM3MQorICAgIHZpcnR1YWwgdm9p
ZCBsb2FkKGNvbnN0IFdlYlVSTCYgdXJsLCBXZWJNZWRpYVNvdXJjZSogbWVkaWFTb3VyY2UsIENP
UlNNb2RlIGNvcnNNb2RlKSB7IGRlbGV0ZSBtZWRpYVNvdXJjZTsgbG9hZCh1cmwsIGNvcnNNb2Rl
KTsgfTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTG9hZCgpID0gMDsKIAogICAgIC8vIFBsYXli
YWNrIGNvbnRyb2xzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViTWVkaWFQbGF5ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
Yk1lZGlhUGxheWVyQ2xpZW50LmgKaW5kZXggZGVjYTk1MzZkOTlhNDVjYjIxNWU4ZWE1ZTIwNGE2
MTg5NzU1YzRiMy4uYzgyZmQzYWNjNjU2OWJhMjcwYzFiNzZkN2E2MWNiOWQzMzVhOWFkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllckNs
aWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2Vi
RnJhbWU7CitjbGFzcyBXZWJNZWRpYVNvdXJjZTsKIGNsYXNzIFdlYlBsdWdpbjsKIGNsYXNzIFdl
YlJlcXVlc3Q7CiBjbGFzcyBXZWJVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViTWVkaWFTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTc4NjRiMzA5MGQ0NWQxNTVkY2UzYTU1
ODcyZDZmNmEyNzgzMGM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2UuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRp
YVNvdXJjZV9oCisjZGVmaW5lIFdlYk1lZGlhU291cmNlX2gKKworI2luY2x1ZGUgIi4uLy4uLy4u
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJVUkwuaCIKKyNpbmNsdWRlICJXZWJUaW1lUmFu
Z2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU291cmNlQ2xpZW50
OworCitjbGFzcyBXZWJNZWRpYVNvdXJjZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViTWVk
aWFTb3VyY2UoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIG9wZW4oV2ViTWVkaWFTb3VyY2VDbGll
bnQqKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVNvdXJjZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3VyY2VDbGllbnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZTY1MDkwNGJiNDJiZjhmZmEwZTc2YzczN2I5ZmVlZGMxYWU5ZjEwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTb3Vy
Y2VDbGllbnQuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJNZWRpYVNvdXJjZUNsaWVudF9o
CisjZGVmaW5lIFdlYk1lZGlhU291cmNlQ2xpZW50X2gKKworI2luY2x1ZGUgIi4uLy4uLy4uL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJUaW1lUmFu
Z2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1lZGlhU291cmNlQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICBlbnVtIEFkZElkU3RhdHVzIHsKKyAgICAgICAgQWRkSWRTdGF0dXNP
aywKKyAgICAgICAgQWRkSWRTdGF0dXNOb3RTdXBwb3J0ZWQsCisgICAgICAgIEFkZElkU3RhdHVz
UmVhY2hlZElkTGltaXQKKyAgICB9OworCisgICAgZW51bSBFbmRPZlN0cmVhbVN0YXR1cyB7Cisg
ICAgICAgIEVuZE9mU3RyZWFtU3RhdHVzTm9FcnJvciwKKyAgICAgICAgRW5kT2ZTdHJlYW1TdGF0
dXNOZXR3b3JrRXJyb3IsCisgICAgICAgIEVuZE9mU3RyZWFtU3RhdHVzRGVjb2RlRXJyb3IsCisg
ICAgfTsKKworICAgIHZpcnR1YWwgfldlYk1lZGlhU291cmNlQ2xpZW50KCkgeyB9CisKKyAgICB2
aXJ0dWFsIEFkZElkU3RhdHVzIGFkZElkKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0IFdlYlN0
cmluZyYgdHlwZSwgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGNvZGVjcykgPSAwOworICAg
IHZpcnR1YWwgYm9vbCByZW1vdmVJZChjb25zdCBXZWJTdHJpbmcmIGlkKSA9IDA7CisgICAgdmly
dHVhbCBXZWJUaW1lUmFuZ2VzIGJ1ZmZlcmVkKGNvbnN0IFdlYlN0cmluZyYgaWQpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgYXBwZW5kKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhYm9y
dChjb25zdCBXZWJTdHJpbmcmIGlkKSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24o
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBlbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBzZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgV2ViU3RyaW5nJiBpZCwgZG91YmxlIG9m
ZnNldCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRl
eCBiOTcyNTE2NTNkYTJkMDgzZGVlM2QzMWVjMTQ0Y2E1N2YyMTU3MWRhLi5mNmIyYmJhYzdlMzgz
YmM3ZWQ3ZWIwOTE3NjVkMDU1ZmE2MGVlYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNjIsNiArNjIsOSBAQAogI2lu
Y2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIk1l
ZGlhUGxheWVyLmgiCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyNpbmNsdWRlICJNZWRpYVNv
dXJjZVByaXZhdGUuaCIKKyNlbmRpZgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAj
aW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlT
dGF0ZS5oIgpAQCAtMTA1LDYgKzEwOCw3IEBACiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckNs
aWVudC5oIgorI2luY2x1ZGUgIldlYk1lZGlhU291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
Tm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVZpc2liaWxpdHlTdGF0
ZS5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCkBAIC00MDksMTUgKzQxMywxMyBAQCBDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpQcmVsb2FkTWV0YURhdGEs
IE1lZGlhUGxheWVyOjpNZXRhRAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRp
YVBsYXllcjo6UHJlbG9hZEF1dG8sIE1lZGlhUGxheWVyOjpBdXRvKTsKIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCi1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVy
OjpBZGRJZFN0YXR1c09rLCBNZWRpYVBsYXllcjo6T2spOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXNOb3RTdXBwb3J0ZWQsIE1lZGlhUGxh
eWVyOjpOb3RTdXBwb3J0ZWQpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRp
YVBsYXllcjo6QWRkSWRTdGF0dXNSZWFjaGVkSWRMaW1pdCwgTWVkaWFQbGF5ZXI6OlJlYWNoZWRJ
ZExpbWl0KTsKLSNlbmRpZgorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNv
dXJjZUNsaWVudDo6QWRkSWRTdGF0dXNPaywgTWVkaWFTb3VyY2VQcml2YXRlOjpPayk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhU291cmNlQ2xpZW50OjpBZGRJZFN0YXR1
c05vdFN1cHBvcnRlZCwgTWVkaWFTb3VyY2VQcml2YXRlOjpOb3RTdXBwb3J0ZWQpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6QWRkSWRTdGF0dXNS
ZWFjaGVkSWRMaW1pdCwgTWVkaWFTb3VyY2VQcml2YXRlOjpSZWFjaGVkSWRMaW1pdCk7CiAKLSNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShX
ZWJNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXNOb0Vycm9yLCBNZWRpYVBsYXllcjo6RW9z
Tm9FcnJvcik7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpF
bmRPZlN0cmVhbVN0YXR1c05ldHdvcmtFcnJvciwgTWVkaWFQbGF5ZXI6OkVvc05ldHdvcmtFcnJv
cik7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpFbmRPZlN0
cmVhbVN0YXR1c0RlY29kZUVycm9yLCBNZWRpYVBsYXllcjo6RW9zRGVjb2RlRXJyb3IpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6RW5kT2ZTdHJl
YW1TdGF0dXNOb0Vycm9yLCBNZWRpYVNvdXJjZVByaXZhdGU6OkVvc05vRXJyb3IpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVNvdXJjZUNsaWVudDo6RW5kT2ZTdHJlYW1T
dGF0dXNOZXR3b3JrRXJyb3IsIE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zTmV0d29ya0Vycm9yKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFTb3VyY2VDbGllbnQ6OkVuZE9m
U3RyZWFtU3RhdHVzRGVjb2RlRXJyb3IsIE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zRGVjb2RlRXJy
b3IpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAK
aW5kZXggZWYzNTBkNzFhMDBkMWYwMTc5YzAyOTQ0ZDQwN2M5ODE2OWRjYWZkOS4uNGM4ZGY4OTI3
N2M1NTg1NTYyODExYzc1ZWMyN2ZiYTliNmQyZGI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0yNiw2
ICsyNiw4IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSGVscGVy
UGx1Z2luSW1wbC5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiV2Vi
TWVkaWFTb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNvdXJjZUltcGwuaCIKICNp
bmNsdWRlICJXZWJWaWV3SW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJDU3RyaW5nLmg+CkBAIC00OSw2ICs1MSw4MyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKy8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBjbGFzcyBvbmNlIHRoZSBDaHJvbWl1bSBjb2RlIGltcGxlbWVudHMgaXRzIG93bgorLy8g
dmVyc2lvbiBvZiBXZWJNZWRpYVBsYXllcjo6bG9hZChXZWJVUkwsIFdlYk1lZGlhU291cmNlLCBD
T1JTTW9kZSkuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEw
MzcxCitjbGFzcyBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGwgOiBwdWJsaWMgV2ViTWVkaWFTb3Vy
Y2VDbGllbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYk1lZGlhU291cmNlQ2xpZW50SW1w
bChXZWJNZWRpYVBsYXllciopOworICAgIHZpcnR1YWwgfldlYk1lZGlhU291cmNlQ2xpZW50SW1w
bCgpOworCisgICAgLy8gV2ViTWVkaWFTb3VyY2VDbGllbnQgbWV0aG9kcy4KKyAgICB2aXJ0dWFs
IEFkZElkU3RhdHVzIGFkZElkKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0IFdlYlN0cmluZyYg
dHlwZSwgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGNvZGVjcyk7CisgICAgdmlydHVhbCBi
b29sIHJlbW92ZUlkKGNvbnN0IFdlYlN0cmluZyYgaWQpOworICAgIHZpcnR1YWwgV2ViVGltZVJh
bmdlcyBidWZmZXJlZChjb25zdCBXZWJTdHJpbmcmIGlkKTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBw
ZW5kKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgdmlydHVhbCBib29sIGFib3J0KGNvbnN0IFdlYlN0cmluZyYgaWQp
OworICAgIHZpcnR1YWwgZG91YmxlIGR1cmF0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIHNldER1
cmF0aW9uKGRvdWJsZSk7CisgICAgdmlydHVhbCB2b2lkIGVuZE9mU3RyZWFtKEVuZE9mU3RyZWFt
U3RhdHVzKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IFdlYlN0
cmluZyYgaWQsIGRvdWJsZSBvZmZzZXQpOworCitwcml2YXRlOgorICAgIFdlYk1lZGlhUGxheWVy
KiBtX3dlYk1lZGlhUGxheWVyOworfTsKKworV2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsOjpXZWJN
ZWRpYVNvdXJjZUNsaWVudEltcGwoV2ViTWVkaWFQbGF5ZXIqIHdlYk1lZGlhUGxheWVyKQorICAg
IDogbV93ZWJNZWRpYVBsYXllcih3ZWJNZWRpYVBsYXllcikKK3sKK30KKworV2ViTWVkaWFTb3Vy
Y2VDbGllbnRJbXBsOjp+V2ViTWVkaWFTb3VyY2VDbGllbnRJbXBsKCkKK3sKK30KKworV2ViTWVk
aWFTb3VyY2VDbGllbnQ6OkFkZElkU3RhdHVzIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6YWRk
SWQoY29uc3QgV2ViU3RyaW5nJiBpZCwgY29uc3QgV2ViU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJW
ZWN0b3I8V2ViU3RyaW5nPiYgY29kZWNzKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJN
ZWRpYVNvdXJjZUNsaWVudDo6QWRkSWRTdGF0dXM+KG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUFk
ZElkKGlkLCB0eXBlLCBjb2RlY3MpKTsKK30KKworYm9vbCBXZWJNZWRpYVNvdXJjZUNsaWVudElt
cGw6OnJlbW92ZUlkKGNvbnN0IFdlYlN0cmluZyYgaWQpCit7CisgICAgcmV0dXJuIG1fd2ViTWVk
aWFQbGF5ZXItPnNvdXJjZVJlbW92ZUlkKGlkKTsKK30KKworV2ViVGltZVJhbmdlcyBXZWJNZWRp
YVNvdXJjZUNsaWVudEltcGw6OmJ1ZmZlcmVkKGNvbnN0IFdlYlN0cmluZyYgaWQpCit7CisgICAg
cmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUJ1ZmZlcmVkKGlkKTsKK30KKworYm9vbCBX
ZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmFwcGVuZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25z
dCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIG1f
d2ViTWVkaWFQbGF5ZXItPnNvdXJjZUFwcGVuZChpZCwgZGF0YSwgbGVuZ3RoKTsKK30KKworYm9v
bCBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OmFib3J0KGNvbnN0IFdlYlN0cmluZyYgaWQpCit7
CisgICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUFib3J0KGlkKTsKK30KKworZG91
YmxlIFdlYk1lZGlhU291cmNlQ2xpZW50SW1wbDo6ZHVyYXRpb24oKQoreworICAgIHJldHVybiBt
X3dlYk1lZGlhUGxheWVyLT5kdXJhdGlvbigpOworfQorCit2b2lkIFdlYk1lZGlhU291cmNlQ2xp
ZW50SW1wbDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQoreworICAgIHJldHVybiBtX3dl
Yk1lZGlhUGxheWVyLT5zb3VyY2VTZXREdXJhdGlvbihkdXJhdGlvbik7Cit9CisKK3ZvaWQgV2Vi
TWVkaWFTb3VyY2VDbGllbnRJbXBsOjplbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyBzdGF0
dXMpCit7CisgICAgbV93ZWJNZWRpYVBsYXllci0+c291cmNlRW5kT2ZTdHJlYW0oc3RhdGljX2Nh
c3Q8V2ViTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzPihzdGF0dXMpKTsKK30KKworYm9v
bCBXZWJNZWRpYVNvdXJjZUNsaWVudEltcGw6OnNldFRpbWVzdGFtcE9mZnNldChjb25zdCBXZWJT
dHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KQoreworICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVy
LT5zb3VyY2VTZXRUaW1lc3RhbXBPZmZzZXQoaWQsIG9mZnNldCk7Cit9CisKIHN0YXRpYyBQYXNz
T3duUHRyPFdlYk1lZGlhUGxheWVyPiBjcmVhdGVXZWJNZWRpYVBsYXllcihXZWJNZWRpYVBsYXll
ckNsaWVudCogY2xpZW50LCBjb25zdCBXZWJVUkwmIHVybCwgRnJhbWUqIGZyYW1lKQogewogICAg
IFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBXZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSk7
CkBAIC0yMTgsMjIgKzI5NywyNyBAQCBXZWJNZWRpYVBsYXllcjo6UHJlbG9hZCBXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OnByZWxvYWQoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxX
ZWJNZWRpYVBsYXllcjo6UHJlbG9hZD4obV9wcmVsb2FkKTsKIH0KIAorLy8gRklYTUU6IFJlbW92
ZSB0aGlzIGFuZCBzb3VyY2VVUkwoKSBvbmNlIHRoZSBDaHJvbWl1bSBjb2RlIGltcGxlbWVudHMK
Ky8vIGl0cyBvd24gdmVyc2lvbiBvZiBXZWJNZWRpYVBsYXllcjo6bG9hZChXZWJVUkwsIFdlYk1l
ZGlhU291cmNlLCBDT1JTTW9kZSkuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTEwMzcxCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlT3Bl
bmVkKCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIEFTU0VSVChtX21lZGlhUGxh
eWVyKTsKLSAgICBtX21lZGlhUGxheWVyLT5zb3VyY2VPcGVuZWQoKTsKKyAgICBBU1NFUlQobV93
ZWJNZWRpYVBsYXllcik7CisgICAgaWYgKG1fbWVkaWFTb3VyY2UpIHsKKyAgICAgICAgT3duUHRy
PFdlYk1lZGlhU291cmNlPiBtZWRpYVNvdXJjZSA9IGFkb3B0UHRyKG5ldyBXZWJNZWRpYVNvdXJj
ZUltcGwobV9tZWRpYVNvdXJjZSkpOworICAgICAgICBtZWRpYVNvdXJjZS0+b3BlbihuZXcgV2Vi
TWVkaWFTb3VyY2VDbGllbnRJbXBsKG1fd2ViTWVkaWFQbGF5ZXIuZ2V0KCkpKTsKKyAgICB9CiAj
ZW5kaWYKIH0KIAogV2ViS2l0OjpXZWJVUkwgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3Vy
Y2VVUkwoKSBjb25zdAogewogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgQVNTRVJUKG1f
bWVkaWFQbGF5ZXIpOwotICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgbV9tZWRpYVBs
YXllci0+c291cmNlVVJMKCkpOwotI2Vsc2UKLSAgICByZXR1cm4gS1VSTCgpOworICAgIGlmICht
X21lZGlhU291cmNlKQorICAgICAgICByZXR1cm4gbV91cmw7CiAjZW5kaWYKKyAgICByZXR1cm4g
S1VSTCgpOwogfQogCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6a2V5QWRkZWQoY29u
c3QgV2ViU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFdlYlN0cmluZyYgc2Vzc2lvbklkKQpAQCAt
MzIyLDggKzQwNiwyNCBAQCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6ZGlzYWJsZUFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcoKQogCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
bG9hZChjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBtX3VybCA9IHVybDsKKyAgICBtX3VybCA9
IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisg
ICAgbV9tZWRpYVNvdXJjZSA9IDA7CisjZW5kaWYKKyAgICBsb2FkUmVxdWVzdGVkKCk7Cit9CiAK
KyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQordm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6
OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTb3VyY2U+
IG1lZGlhU291cmNlKQoreworICAgIG1fdXJsID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7
CisgICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOworICAgIGxvYWRSZXF1ZXN0ZWQoKTsK
K30KKyNlbmRpZgorCit2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6bG9hZFJlcXVlc3Rl
ZCgpCit7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2ViTWVkaWFQbGF5ZXJNdXRleCk7CiAg
ICAgaWYgKG1fcHJlbG9hZCA9PSBNZWRpYVBsYXllcjo6Tm9uZSkgewogI2lmIEVOQUJMRShXRUJf
QVVESU8pCkBAIC0zNDIsMTUgKzQ0MiwyMSBAQCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bDo6bG9hZEludGVybmFsKCkKICNlbmRpZgogCiAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nh
c3Q8SFRNTE1lZGlhRWxlbWVudCo+KG1fbWVkaWFQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkp
LT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIG1fd2ViTWVkaWFQbGF5ZXIgPSBjcmVhdGVXZWJN
ZWRpYVBsYXllcih0aGlzLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmwpLCBmcmFtZSk7Cisg
ICAgbV93ZWJNZWRpYVBsYXllciA9IGNyZWF0ZVdlYk1lZGlhUGxheWVyKHRoaXMsIG1fdXJsLCBm
cmFtZSk7CiAgICAgaWYgKG1fd2ViTWVkaWFQbGF5ZXIpIHsKICNpZiBFTkFCTEUoV0VCX0FVRElP
KQogICAgICAgICAvLyBNYWtlIHN1cmUgaWYgd2UgY3JlYXRlL3JlLWNyZWF0ZSB0aGUgV2ViTWVk
aWFQbGF5ZXIgdGhhdCB3ZSB1cGRhdGUgb3VyIHdyYXBwZXIuCiAgICAgICAgIG1fYXVkaW9Tb3Vy
Y2VQcm92aWRlci53cmFwKG1fd2ViTWVkaWFQbGF5ZXItPmF1ZGlvU291cmNlUHJvdmlkZXIoKSk7
CiAjZW5kaWYKLSAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+bG9hZCgKLSAgICAgICAgICAgIEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybCksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJN
ZWRpYVBsYXllcjo6Q09SU01vZGU+KG1fbWVkaWFQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkt
Pm1lZGlhUGxheWVyQ09SU01vZGUoKSkpOworCisgICAgICAgIFdlYk1lZGlhUGxheWVyOjpDT1JT
TW9kZSBjb3JzTW9kZSA9IHN0YXRpY19jYXN0PFdlYk1lZGlhUGxheWVyOjpDT1JTTW9kZT4obV9t
ZWRpYVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJDT1JTTW9kZSgpKTsK
KyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgICAgICBpZiAobV9tZWRpYVNvdXJjZSkgewor
ICAgICAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+bG9hZChtX3VybCwgbmV3IFdlYk1lZGlhU291
cmNlSW1wbChtX21lZGlhU291cmNlKSwgY29yc01vZGUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+bG9hZChtX3VybCwg
Y29yc01vZGUpOwogICAgIH0KIH0KIApAQCAtNDA3LDcwICs1MTMsNiBAQCBib29sIFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbDo6Y2FuRW50ZXJGdWxsc2NyZWVuKCkgY29uc3QKIH0KICNlbmRpZgog
Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLVdlYkNvcmU6Ok1lZGlhUGxheWVyOjpBZGRJZFN0
YXR1cyBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYg
aWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcykKLXsK
LSAgICBpZiAoIW1fd2ViTWVkaWFQbGF5ZXIpCi0gICAgICAgIHJldHVybiBXZWJDb3JlOjpNZWRp
YVBsYXllcjo6Tm90U3VwcG9ydGVkOwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpBZGRJZFN0YXR1cz4obV93ZWJNZWRpYVBsYXllci0+c291cmNlQWRkSWQo
aWQsIHR5cGUsIGNvZGVjcykpOwotfQotCi1ib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
c291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkKLXsKLSAgICBpZiAoIW1fd2ViTWVkaWFQ
bGF5ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX3dlYk1lZGlhUGxh
eWVyLT5zb3VyY2VSZW1vdmVJZChpZCk7Ci19Ci0KLVBhc3NSZWZQdHI8VGltZVJhbmdlcz4gV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VCdWZmZXJlZChjb25zdCBTdHJpbmcmIGlkKQot
ewotICAgIGlmICghbV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6
OmNyZWF0ZSgpOwotCi0gICAgV2ViVGltZVJhbmdlcyB3ZWJSYW5nZXMgPSBtX3dlYk1lZGlhUGxh
eWVyLT5zb3VyY2VCdWZmZXJlZChpZCk7Ci0gICAgUmVmUHRyPFRpbWVSYW5nZXM+IHJhbmdlcyA9
IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViUmFu
Z2VzLnNpemUoKTsgKytpKQotICAgICAgICByYW5nZXMtPmFkZCh3ZWJSYW5nZXNbaV0uc3RhcnQs
IHdlYlJhbmdlc1tpXS5lbmQpOwotICAgIHJldHVybiByYW5nZXMucmVsZWFzZSgpOwotfQotCi1i
b29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlQXBwZW5kKGNvbnN0IFN0cmluZyYg
aWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBp
ZiAobV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNv
dXJjZUFwcGVuZChpZCwgZGF0YSwgbGVuZ3RoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJv
b2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VBYm9ydChjb25zdCBTdHJpbmcmIGlk
KQotewotICAgIGlmICghbV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUFib3J0KGlkKTsKLX0KLQotdm9p
ZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZVNldER1cmF0aW9uKGRvdWJsZSBkdXJh
dGlvbikKLXsKLSAgICBpZiAobV93ZWJNZWRpYVBsYXllcikKLSAgICAgICAgbV93ZWJNZWRpYVBs
YXllci0+c291cmNlU2V0RHVyYXRpb24oZHVyYXRpb24pOwotfQotCi12b2lkIFdlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6c291cmNlRW5kT2ZTdHJlYW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkVu
ZE9mU3RyZWFtU3RhdHVzIHN0YXR1cykKLXsKLSAgICBpZiAobV93ZWJNZWRpYVBsYXllcikKLSAg
ICAgICAgbV93ZWJNZWRpYVBsYXllci0+c291cmNlRW5kT2ZTdHJlYW0oc3RhdGljX2Nhc3Q8V2Vi
TWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzPihzdGF0dXMpKTsKLX0KLQotYm9vbCBXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZVNldFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJp
bmcmIGlkLCBkb3VibGUgb2Zmc2V0KQotewotICAgIGlmICghbV93ZWJNZWRpYVBsYXllcikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VT
ZXRUaW1lc3RhbXBPZmZzZXQoaWQsIG9mZnNldCk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCiBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0
aCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsLmgKaW5kZXggM2Y3MGM3MzVjY2I2NjhkYmY1ZmZiNTczODVkNzBiNGNmYjRh
ZTc2MS4uOTlkMmU4YmRiZTg0NTQ4MGI3NWQxM2FmZWU5YzUzZWRkOTRlMGY3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
LmgKQEAgLTk2LDYgKzk2LDkgQEAgcHVibGljOgogCiAgICAgLy8gTWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlIG1ldGhvZHM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3QgV1RGOjpTdHJp
bmcmIHVybCk7CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2aXJ0dWFsIHZvaWQgbG9h
ZChjb25zdCBXVEY6OlN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNl
Pik7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTG9hZCgpOwogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViTGF5ZXIqIHBsYXRm
b3JtTGF5ZXIoKSBjb25zdDsKQEAgLTE1NywxNyArMTYwLDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBwdXRDdXJyZW50RnJhbWUoV2ViVmlkZW9GcmFtZSopOwogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQotICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkFk
ZElkU3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcyk7Ci0gICAgdmlydHVhbCBib29sIHNvdXJj
ZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OlRpbWVSYW5nZXM+IHNvdXJjZUJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYpOwotICAgIHZp
cnR1YWwgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlQWJvcnQo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZVNldER1cmF0aW9uKGRvdWJs
ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpFbmRPZlN0cmVhbVN0YXR1cyk7Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZVNldFRpbWVz
dGFtcE9mZnNldChjb25zdCBTdHJpbmcmLCBkb3VibGUgb2Zmc2V0KTsKLSNlbmRpZgotCiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpNZWRpYUtleUV4Y2VwdGlvbiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxl
bmd0aCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFL
ZXlFeGNlcHRpb24gYWRkS2V5KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCB1bnNpZ25l
ZCBjaGFyKiBrZXksIHVuc2lnbmVkIGtleUxlbmd0aCwgY29uc3QgdW5zaWduZWQgY2hhciogaW5p
dERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkg
T1ZFUlJJREU7CkBAIC0xODIsNiArMTc0LDcgQEAgcHJvdGVjdGVkOgogICAgIFdlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbCgpOwogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0RGVsYXllZExvYWQoKTsK
KyAgICB2b2lkIGxvYWRSZXF1ZXN0ZWQoKTsKICAgICB2b2lkIGxvYWRJbnRlcm5hbCgpOwogCiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
PiBjcmVhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXIqKTsKQEAgLTIwMSw3ICsxOTQsNyBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyKiBtX21lZGlhUGxheWVyOwogICAgIE93blB0
cjxXZWJNZWRpYVBsYXllcj4gbV93ZWJNZWRpYVBsYXllcjsKICAgICBXZWJWaWRlb0ZyYW1lKiBt
X2N1cnJlbnRWaWRlb0ZyYW1lOwotICAgIFN0cmluZyBtX3VybDsKKyAgICBXZWJDb3JlOjpLVVJM
IG1fdXJsOwogICAgIGJvb2wgbV9kZWxheWluZ0xvYWQ7CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OlByZWxvYWQgbV9wcmVsb2FkOwogICAgIFJlZlB0cjxXZWJIZWxwZXJQbHVnaW5JbXBsPiBt
X2hlbHBlclBsdWdpbjsKQEAgLTI1OSw2ICsyNTIsMTAgQEAgcHJpdmF0ZToKIAogICAgIEF1ZGlv
U291cmNlUHJvdmlkZXJJbXBsIG1fYXVkaW9Tb3VyY2VQcm92aWRlcjsKICNlbmRpZgorCisjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTb3VyY2U+IG1f
bWVkaWFTb3VyY2U7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTb3VyY2VJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNlSW1wbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTVlYzg5MjJjZmY3MmI0YzFlMzhlMmVlMTdjMzMwZWI2NDE4OTBjNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU291cmNlSW1wbC5j
cHAKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTWVk
aWFTb3VyY2VJbXBsLmgiCisKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVByaXZhdGUuaCIKKyNpbmNs
dWRlICJXZWJNZWRpYVNvdXJjZUNsaWVudC5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUltcGwgOiBw
dWJsaWMgV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBNZWRpYVNvdXJjZVByaXZhdGVJbXBsKFBhc3NPd25QdHI8V2ViTWVkaWFTb3VyY2VDbGllbnQ+
KTsKKyAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZVByaXZhdGVJbXBsKCkgeyB9CisKKyAgICAvLyBN
ZWRpYVNvdXJjZVByaXZhdGUgbWV0aG9kcy4KKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhU291
cmNlUHJpdmF0ZTo6QWRkSWRTdGF0dXMgYWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKTsKKyAgICB2aXJ0dWFsIGJv
b2wgcmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OlRpbWVSYW5nZXM+IGJ1ZmZlcmVkKGNvbnN0IFN0cmluZyYgaWQpOworICAgIHZpcnR1
YWwgYm9vbCBhcHBlbmQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWJvcnQoY29uc3QgU3RyaW5n
JiBpZCk7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RHVyYXRpb24oZG91YmxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kT2ZTdHJlYW0oV2ViQ29y
ZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpFbmRPZlN0cmVhbVN0YXR1cyk7CisgICAgdmlydHVhbCBi
b29sIHNldFRpbWVzdGFtcE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KTsK
KworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudD4gbV9j
bGllbnQ7Cit9OworCitNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpNZWRpYVNvdXJjZVByaXZhdGVJ
bXBsKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJNZWRpYVNvdXJjZUNsaWVudD4gY2xpZW50KQorICAg
IDogbV9jbGllbnQoY2xpZW50KQoreworfQorCitXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6
OkFkZElkU3RhdHVzIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmFkZElkKGNvbnN0IFN0cmluZyYg
aWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcykKK3sK
KyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFTb3VyY2VQ
cml2YXRlOjpOb3RTdXBwb3J0ZWQ7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRJZFN0YXR1cz4obV9jbGllbnQtPmFkZElkKGlkLCB0eXBl
LCBjb2RlY3MpKTsKK30KKworYm9vbCBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpyZW1vdmVJZChj
b25zdCBTdHJpbmcmIGlkKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBtX2NsaWVudC0+cmVtb3ZlSWQoaWQpOworfQorCitQYXNzUmVm
UHRyPFdlYkNvcmU6OlRpbWVSYW5nZXM+IE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmJ1ZmZlcmVk
KGNvbnN0IFN0cmluZyYgaWQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OlRpbWVSYW5nZXM6OmNyZWF0ZSgpOworCisgICAgV2ViVGltZVJhbmdlcyB3ZWJS
YW5nZXMgPSBtX2NsaWVudC0+YnVmZmVyZWQoaWQpOworICAgIFJlZlB0cjxXZWJDb3JlOjpUaW1l
UmFuZ2VzPiByYW5nZXMgPSBXZWJDb3JlOjpUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHdlYlJhbmdlcy5zaXplKCk7ICsraSkKKyAgICAgICAgcmFuZ2Vz
LT5hZGQod2ViUmFuZ2VzW2ldLnN0YXJ0LCB3ZWJSYW5nZXNbaV0uZW5kKTsKKyAgICByZXR1cm4g
cmFuZ2VzLnJlbGVhc2UoKTsKK30KKworYm9vbCBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjphcHBl
bmQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBtX2NsaWVudC0+YXBwZW5kKGlkLCBkYXRhLCBsZW5ndGgpOworfQorCitib29s
IE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OmFib3J0KGNvbnN0IFN0cmluZyYgaWQpCit7CisgICAg
aWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fY2xp
ZW50LT5hYm9ydChpZCk7Cit9CisKK2RvdWJsZSBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpkdXJh
dGlvbigpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKKyAgICByZXR1cm4gbV9jbGllbnQtPmR1cmF0
aW9uKCk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlSW1wbDo6c2V0RHVyYXRpb24oZG91
YmxlIGR1cmF0aW9uKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNl
dER1cmF0aW9uKGR1cmF0aW9uKTsKK30KKwordm9pZCBNZWRpYVNvdXJjZVByaXZhdGVJbXBsOjpl
bmRPZlN0cmVhbShXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkVuZE9mU3RyZWFtU3RhdHVz
IHN0YXR1cykKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5lbmRPZlN0
cmVhbShzdGF0aWNfY2FzdDxXZWJNZWRpYVNvdXJjZUNsaWVudDo6RW5kT2ZTdHJlYW1TdGF0dXM+
KHN0YXR1cykpOworfQorCitib29sIE1lZGlhU291cmNlUHJpdmF0ZUltcGw6OnNldFRpbWVzdGFt
cE9mZnNldChjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgb2Zmc2V0KQoreworICAgIGlmICghbV9j
bGllbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9jbGllbnQtPnNldFRp
bWVzdGFtcE9mZnNldChpZCwgb2Zmc2V0KTsKK30KKworCitXZWJNZWRpYVNvdXJjZUltcGw6Oldl
Yk1lZGlhU291cmNlSW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlPiBtZWRpYVNv
dXJjZSkKK3sKKyAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7Cit9CisKK1dlYk1lZGlh
U291cmNlSW1wbDo6fldlYk1lZGlhU291cmNlSW1wbCgpCit7Cit9CisKKwordm9pZCBXZWJNZWRp
YVNvdXJjZUltcGw6Om9wZW4oV2ViTWVkaWFTb3VyY2VDbGllbnQqIGNsaWVudCkKK3sKKyAgICBB
U1NFUlQoY2xpZW50KTsKKyAgICBtX21lZGlhU291cmNlLT5zZXRQcml2YXRlQW5kT3BlbihhZG9w
dFB0cihuZXcgTWVkaWFTb3VyY2VQcml2YXRlSW1wbChhZG9wdFB0cihjbGllbnQpKSkpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TWVkaWFTb3VyY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVNv
dXJjZUltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGFiMzFlMmI1ZGJmN2M1ZDdmYmVmYTI2MWVhZGZlZGNh
OWY1ZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TWVkaWFTb3VyY2VJbXBsLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVkaWFTb3VyY2VJ
bXBsX2gKKyNkZWZpbmUgV2ViTWVkaWFTb3VyY2VJbXBsX2gKKworI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCisKKyNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIldlYk1lZGlhU291
cmNlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVNvdXJjZUltcGwg
OiBwdWJsaWMgV2ViTWVkaWFTb3VyY2UgeworcHVibGljOgorICAgIFdlYk1lZGlhU291cmNlSW1w
bChQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlPik7CisgICAgdmlydHVhbCB+V2ViTWVk
aWFTb3VyY2VJbXBsKCk7CisKKyAgICAvLyBXZWJNZWRpYVNvdXJjZSBtZXRob2RzLgorICAgIHZp
cnR1YWwgdm9pZCBvcGVuKFdlYk1lZGlhU291cmNlQ2xpZW50Kik7CisKK3ByaXZhdGU6CisgICAg
UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlPiBtX21lZGlhU291cmNlOworfTsKKworfQorCisj
ZW5kaWYKKworI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>