<?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>134894</bug_id>
          
          <creation_ts>2014-07-14 12:56:24 -0700</creation_ts>
          <short_desc>Disable ff/rw based on canPlayFastForward and canPlayFastRewind.</short_desc>
          <delta_ts>2014-07-21 19:32:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Jones">jeremyj-wk</reporter>
          <assigned_to name="Jeremy Jones">jeremyj-wk</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1022287</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-07-14 12:56:24 -0700</bug_when>
    <thetext>Disable ff/rw based on canPlayFastForward and canPlayFastRewind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022288</commentid>
    <comment_count>1</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-07-14 12:57:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/17441240&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022385</commentid>
    <comment_count>2</comment_count>
      <attachid>234900</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-07-14 18:39:27 -0700</bug_when>
    <thetext>Created attachment 234900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022487</commentid>
    <comment_count>3</comment_count>
      <attachid>234900</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-07-15 08:56:25 -0700</bug_when>
    <thetext>Comment on attachment 234900
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3109
&gt; +#if PLATFORM(IOS)
&gt; +    if (!canPlayFastReverse() &amp;&amp; rate  &lt; 0)
&gt; +        rate = 0;
&gt; +    if (!canPlayFastForward() &amp;&amp; rate &gt; 2)
&gt; +        rate = 2;
&gt; +#endif

This is the wrong place to hard code maximum and minimum speeds, I doubt every platform will have the same max/min. Instead of canPlayFastForward and canPlayFastReverse, why don&apos;t you add something like maximumFastForwardRate and minimumFastReverseRate?

Also, I think 0 and 2 are the wrong values even for AVFoundation. The header docs for -[AVPlayerItem canPlayFastReverse] and -[AVPlayerItem canPlayFastForward] they indicate if an item is limited to +1 and -1.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4866
&gt; +void HTMLMediaElement::mediaPlayerCanPlayFastReverseChanged(MediaPlayer*)
&gt; +{
&gt; +    scheduleEvent(eventNames().canplayfastreversechangeEvent);
&gt; +}

We can&apos;t notify this way, this non-standard event will be visible to scripts.

&gt; Source/WebCore/html/HTMLMediaElement.h:542
&gt; +    virtual void mediaPlayerCanPlayFastReverseChanged(MediaPlayer*) override;

Do we only care when the reverse rate minimum changes, what about max forward rate?

I am not sure we need to a new callback (or two) just for this, couldn&apos;t you use mediaPlayerCharacteristicChanged and check for a change?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:782
&gt; +    [m_avPlayer.get() addObserver:m_objcObserver.get() forKeyPath:@&quot;canPlayFastReverse&quot; options:NSKeyValueObservingOptionNew context:(void *)MediaPlayerAVFoundationObservationContextPlayer];
&gt; +    [m_avPlayer.get() addObserver:m_objcObserver.get() forKeyPath:@&quot;canPlayFastForward&quot; options:NSKeyValueObservingOptionNew context:(void *)MediaPlayerAVFoundationObservationContextPlayer];

These new observers must be removed in MediaPlayerPrivateAVFoundationObjC::cancelLoad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023577</commentid>
    <comment_count>4</comment_count>
      <attachid>235195</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-07-20 17:41:35 -0700</bug_when>
    <thetext>Created attachment 235195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023578</commentid>
    <comment_count>5</comment_count>
      <attachid>235195</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-07-20 17:46:10 -0700</bug_when>
    <thetext>Comment on attachment 235195
Patch

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

While I’m not an expert on our media code, I think I understand this well enough to say review+

&gt; Source/WebCore/html/HTMLMediaElement.h:192
&gt; +    double minFastReverseRate();
&gt; +    double maxFastForwardRate();

Should be const, I think.

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:898
&gt; +    return m_private ? m_private-&gt;maxFastForwardRate() : DBL_MAX;

In C++ code we’d normally use std::numeric_limits instead of old school numeric limit MACROS. This one would be std::numeric_limits&lt;double&gt;::max(). Or you could use an infinity instead. Also available from numeric_limits.

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:903
&gt; +    return m_private ? m_private-&gt;minFastReverseRate() : -DBL_MAX;

This one would be -std::numeric_limits&lt;double&gt;::max(). Or -infinity.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:484
&gt; +    double minFastReverseRate();
&gt; +    double maxFastForwardRate();

Should be const, I think.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:115
&gt; +    virtual double maxFastForwardRate() const override { return m_cachedCanPlayFastForward ? DBL_MAX : 2.0; }
&gt; +    virtual double minFastReverseRate() const override { return m_cachedCanPlayFastReverse ? -DBL_MAX : 0.0; }

Same comments about DBL_MAX. Also, new overrides can and should be private unless they need to be called non-polymorphically.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2698
&gt; +        } else if ([keyPath isEqualToString:@&quot;canPlayFastReverse&quot;])
&gt; +            function = WTF::bind(&amp;MediaPlayerPrivateAVFoundationObjC::canPlayFastReverseDidChange, m_callback, [newValue boolValue]);
&gt; +        else if ([keyPath isEqualToString:@&quot;canPlayFastForward&quot;])
&gt; +            function = WTF::bind(&amp;MediaPlayerPrivateAVFoundationObjC::canPlayFastForwardDidChange, m_callback, [newValue boolValue]);

In the future we should consider using lambdas all throughout the function instead of WTF::bind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023579</commentid>
    <comment_count>6</comment_count>
      <attachid>235195</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-07-20 17:47:05 -0700</bug_when>
    <thetext>Comment on attachment 235195
Patch

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

&gt; Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm:111
&gt; +        m_videoFullscreenInterface-&gt;setCanPlayFastReverse(m_mediaElement-&gt;minFastReverseRate() &lt; 0.0);

Hmm, missed this the first time through. This seems a little strange. Why would a durationchangeEvent be the right time to evaluate or reevaluate the minimum fast reverse rate? Needs a comment I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023582</commentid>
    <comment_count>7</comment_count>
      <attachid>235195</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-07-20 17:57:14 -0700</bug_when>
    <thetext>Comment on attachment 235195
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:898
&gt;&gt; +    return m_private ? m_private-&gt;maxFastForwardRate() : DBL_MAX;
&gt; 
&gt; In C++ code we’d normally use std::numeric_limits instead of old school numeric limit MACROS. This one would be std::numeric_limits&lt;double&gt;::max(). Or you could use an infinity instead. Also available from numeric_limits.

m_private is never NULL (see where MediaPlayer::loadWithNextMediaEngine calls createNullMediaPlayer).

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:903
&gt;&gt; +    return m_private ? m_private-&gt;minFastReverseRate() : -DBL_MAX;
&gt; 
&gt; This one would be -std::numeric_limits&lt;double&gt;::max(). Or -infinity.

Ditto.

&gt; Source/WebCore/platform/graphics/MediaPlayerPrivate.h:120
&gt; +    virtual double maxFastForwardRate() const { return DBL_MAX; }
&gt; +    virtual double minFastReverseRate() const { return -DBL_MAX; }

Apply Darin&apos;s comments about using std::numeric_limits here instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023583</commentid>
    <comment_count>8</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-07-20 18:05:38 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 234900 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=234900&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:3109
&gt; &gt; +#if PLATFORM(IOS)
&gt; &gt; +    if (!canPlayFastReverse() &amp;&amp; rate  &lt; 0)
&gt; &gt; +        rate = 0;
&gt; &gt; +    if (!canPlayFastForward() &amp;&amp; rate &gt; 2)
&gt; &gt; +        rate = 2;
&gt; &gt; +#endif
&gt; 
&gt; This is the wrong place to hard code maximum and minimum speeds, I doubt every platform will have the same max/min. Instead of canPlayFastForward and canPlayFastReverse, why don&apos;t you add something like maximumFastForwardRate and minimumFastReverseRate?

Pushed down to MediaPlayer.

&gt; 
&gt; Also, I think 0 and 2 are the wrong values even for AVFoundation. The header docs for -[AVPlayerItem canPlayFastReverse] and -[AVPlayerItem canPlayFastForward] they indicate if an item is limited to +1 and -1.

Per AVF docs, when canPlayFastForward is false, it can still play at 2x.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:4866
&gt; &gt; +void HTMLMediaElement::mediaPlayerCanPlayFastReverseChanged(MediaPlayer*)
&gt; &gt; +{
&gt; &gt; +    scheduleEvent(eventNames().canplayfastreversechangeEvent);
&gt; &gt; +}
&gt; 
&gt; We can&apos;t notify this way, this non-standard event will be visible to scripts.

Removed.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:542
&gt; &gt; +    virtual void mediaPlayerCanPlayFastReverseChanged(MediaPlayer*) override;
&gt; 
&gt; Do we only care when the reverse rate minimum changes, what about max forward rate?

Only the rewind button gets disabled.

&gt; 
&gt; I am not sure we need to a new callback (or two) just for this, couldn&apos;t you use mediaPlayerCharacteristicChanged and check for a change?

I&apos;ll use duration change, since it happens at the right time.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:782
&gt; &gt; +    [m_avPlayer.get() addObserver:m_objcObserver.get() forKeyPath:@&quot;canPlayFastReverse&quot; options:NSKeyValueObservingOptionNew context:(void *)MediaPlayerAVFoundationObservationContextPlayer];
&gt; &gt; +    [m_avPlayer.get() addObserver:m_objcObserver.get() forKeyPath:@&quot;canPlayFastForward&quot; options:NSKeyValueObservingOptionNew context:(void *)MediaPlayerAVFoundationObservationContextPlayer];
&gt; 
&gt; These new observers must be removed in MediaPlayerPrivateAVFoundationObjC::cancelLoad.

I&apos;ve removed this and instead correctly observe on AVPlayerItem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023584</commentid>
    <comment_count>9</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-07-20 18:09:22 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 235195 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=235195&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:898
&gt; &gt;&gt; +    return m_private ? m_private-&gt;maxFastForwardRate() : DBL_MAX;
&gt; &gt; 
&gt; &gt; In C++ code we’d normally use std::numeric_limits instead of old school numeric limit MACROS. This one would be std::numeric_limits&lt;double&gt;::max(). Or you could use an infinity instead. Also available from numeric_limits.
&gt; 
&gt; m_private is never NULL (see where MediaPlayer::loadWithNextMediaEngine calls createNullMediaPlayer).
&gt; 

removed condition and the need for DBL_MAX.

&gt; &gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:903
&gt; &gt;&gt; +    return m_private ? m_private-&gt;minFastReverseRate() : -DBL_MAX;
&gt; &gt; 
&gt; &gt; This one would be -std::numeric_limits&lt;double&gt;::max(). Or -infinity.
&gt; 
&gt; Ditto.

Ditto.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayerPrivate.h:120
&gt; &gt; +    virtual double maxFastForwardRate() const { return DBL_MAX; }
&gt; &gt; +    virtual double minFastReverseRate() const { return -DBL_MAX; }
&gt; 
&gt; Apply Darin&apos;s comments about using std::numeric_limits here instead.

Got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023585</commentid>
    <comment_count>10</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-07-20 18:12:34 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 235195 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=235195&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm:111
&gt; &gt; +        m_videoFullscreenInterface-&gt;setCanPlayFastReverse(m_mediaElement-&gt;minFastReverseRate() &lt; 0.0);
&gt; 
&gt; Hmm, missed this the first time through. This seems a little strange. Why would a durationchangeEvent be the right time to evaluate or reevaluate the minimum fast reverse rate? Needs a comment I think.

This is a little strange:
        // These is no standard event for minFastReverseRateChange; duration change is a reasonable proxy for it.
        // It happens every time a new item becomes ready to play.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023587</commentid>
    <comment_count>11</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-07-20 18:28:01 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 235195 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=235195&amp;action=review
&gt; 
&gt; While I’m not an expert on our media code, I think I understand this well enough to say review+
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:192
&gt; &gt; +    double minFastReverseRate();
&gt; &gt; +    double maxFastForwardRate();
&gt; 
&gt; Should be const, I think.

Yup, also in MediaPlayer.h/cpp. It is already const in MediaPlayerPrivate.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:898
&gt; &gt; +    return m_private ? m_private-&gt;maxFastForwardRate() : DBL_MAX;
&gt; 
&gt; In C++ code we’d normally use std::numeric_limits instead of old school numeric limit MACROS. This one would be std::numeric_limits&lt;double&gt;::max(). Or you could use an infinity instead. Also available from numeric_limits.

Ok, infinity it is. But, this goes away per Eric&apos;s comment that m_private is never null.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:903
&gt; &gt; +    return m_private ? m_private-&gt;minFastReverseRate() : -DBL_MAX;
&gt; 
&gt; This one would be -std::numeric_limits&lt;double&gt;::max(). Or -infinity.

Ditto.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayer.h:484
&gt; &gt; +    double minFastReverseRate();
&gt; &gt; +    double maxFastForwardRate();
&gt; 
&gt; Should be const, I think.

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:115
&gt; &gt; +    virtual double maxFastForwardRate() const override { return m_cachedCanPlayFastForward ? DBL_MAX : 2.0; }
&gt; &gt; +    virtual double minFastReverseRate() const override { return m_cachedCanPlayFastReverse ? -DBL_MAX : 0.0; }
&gt; 
&gt; Same comments about DBL_MAX. Also, new overrides can and should be private unless they need to be called non-polymorphically.

Done, and moved to private: section.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2698
&gt; &gt; +        } else if ([keyPath isEqualToString:@&quot;canPlayFastReverse&quot;])
&gt; &gt; +            function = WTF::bind(&amp;MediaPlayerPrivateAVFoundationObjC::canPlayFastReverseDidChange, m_callback, [newValue boolValue]);
&gt; &gt; +        else if ([keyPath isEqualToString:@&quot;canPlayFastForward&quot;])
&gt; &gt; +            function = WTF::bind(&amp;MediaPlayerPrivateAVFoundationObjC::canPlayFastForwardDidChange, m_callback, [newValue boolValue]);
&gt; 
&gt; In the future we should consider using lambdas all throughout the function instead of WTF::bind.

This goes away as this property should actually be observed on the AVPlayerItem instead of the AVPlayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023588</commentid>
    <comment_count>12</comment_count>
      <attachid>235196</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-07-20 18:42:58 -0700</bug_when>
    <thetext>Created attachment 235196
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023589</commentid>
    <comment_count>13</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-07-20 18:45:11 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 235195 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=235195&amp;action=review
&gt; &gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2698
&gt; &gt; &gt; +        } else if ([keyPath isEqualToString:@&quot;canPlayFastReverse&quot;])
&gt; &gt; &gt; +            function = WTF::bind(&amp;MediaPlayerPrivateAVFoundationObjC::canPlayFastReverseDidChange, m_callback, [newValue boolValue]);
&gt; &gt; &gt; +        else if ([keyPath isEqualToString:@&quot;canPlayFastForward&quot;])
&gt; &gt; &gt; +            function = WTF::bind(&amp;MediaPlayerPrivateAVFoundationObjC::canPlayFastForwardDidChange, m_callback, [newValue boolValue]);
&gt; &gt; 
&gt; &gt; In the future we should consider using lambdas all throughout the function instead of WTF::bind.
&gt; 
&gt; This goes away as this property should actually be observed on the AVPlayerItem instead of the AVPlayer.

Disregard my comment here. This does not go away; it is just moved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023590</commentid>
    <comment_count>14</comment_count>
      <attachid>235197</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-07-20 18:48:36 -0700</bug_when>
    <thetext>Created attachment 235197
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023601</commentid>
    <comment_count>15</comment_count>
      <attachid>235197</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-20 20:08:44 -0700</bug_when>
    <thetext>Comment on attachment 235197
Patch for landing.

Clearing flags on attachment: 235197

Committed r171288: &lt;http://trac.webkit.org/changeset/171288&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234900</attachid>
            <date>2014-07-14 18:39:27 -0700</date>
            <delta_ts>2014-07-20 17:41:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134894-20140714183859.patch</filename>
            <type>text/plain</type>
            <size>24429</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxMDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzcwNTFjYjlhMjZlMTRk
YzhmZDFhYTZjZWU3NzBhNGNmNmU0NDJjNy4uM2JiYTY3NWI2NTgwMjY2YjQ4MTU4MThlYzRjZmJi
YjU4YThhZDc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUyIEBACiAyMDE0LTA3LTE0ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KIAorICAgICAgICBEaXNhYmxlIGZmL3J3IGJh
c2VkIG9uIGNhblBsYXlGYXN0Rm9yd2FyZCBhbmQgY2FuUGxheUZhc3RSZXdpbmQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4OTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2FucGxheWZhc3Ry
ZXZlcnNlQ2hhbmdlRXZlbnQsIGNhblBsYXlGYXN0UmV3aW5kKCksIGNhblBsYXlGYXN0Rm9yd2Fy
ZCgpLgorICAgICAgICBVc2UgdGhlc2UgdG8gbGltaXQgZmFzdCBzZWVrIHJhdGVzLiBGb3J3YXJk
IGNhblBsYXlGYXN0UmV3aW5kIHRocm91Z2ggc2V2ZXJhbAorICAgICAgICBsYXllcnMgdG8gV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQgdG8gZGlzYWJsZSB0aGUgZmFzdCByZXdpbmQg
YnV0dG9uLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IGFkZCBzeW1ib2wgZm9yIGNhblBs
YXlGYXN0UmV2ZXJzZQorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6IGFkZCBjYW5wbGF5ZmFz
dHJldmVyc2VjaGFuZ2VFdmVudAorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
IEltcGxlbWVudCBuZXcgTWVkaWFQbGF5ZXJDbGllbnRNZXRob2QgYW5kIHR3byBuZXcgYWNjZXNz
b3JzCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpuZXh0U2NhblJhdGUpOiBw
b3NzaWJsZSBsaW1pdCBzY2FuUmF0ZQorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJDYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKTogYWRkZWQKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlGYXN0Rm9yd2FyZCk6IGFkZGVkCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5RmFzdFJldmVyc2UpOiBh
ZGRlZAorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOiBkZWNsYXJlIHRocmVlIG5l
dyBtZXRob2RzCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOiBQ
bHVtYiB0aHJvdWdoIHR3byBuZXcgYWNjZXNzb3JzIGFuZCBhIGNoYW5nZSBjYWxsYmFjay4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjYW5QbGF5RmFzdEZvcndhcmQpOiBhZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjYW5QbGF5RmFzdFJldmVyc2UpOiBhZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjYW5QbGF5RmFzdFJldmVyc2VDaGFu
Z2VkKTogYWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDog
RGVjbGFyZSBuZXcgbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50
OjptZWRpYVBsYXllckNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQpOiBhZGRlZAorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOiBBZGRlZCB0d28gbmV3IG1l
dGhvZHMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmNh
blBsYXlGYXN0Rm9yd2FyZCk6IGFkZGVkCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U6OmNhblBsYXlGYXN0UmV2ZXJzZSk6IGFkZGVkCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246
OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQpOiBhZGRlZAorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDogYWRk
IG5ldyBtZXRob2QKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6IG1lbWJlciB0byBjYWNoZSBm
Zi9ydyBlbmFibGVkIHN0YXRlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBs
YXllcik6IG9ic2VydmUgZmFzdCBmb3J3YXJkIGFuZCByZXdpbmQgZW5hYmxlZCBzdGF0ZS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNhblBs
YXlGYXN0Rm9yd2FyZERpZENoYW5nZSk6IGFkZGVkLiBVcGRhdGUgY2FjaGUKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNhblBsYXlGYXN0UmV2
ZXJzZURpZENoYW5nZSk6IGFkZGVkLiBVcGRhdGUgY2FjaGUsIGRvIGNhbGxiYWNrLgorICAgICAg
ICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2Jq
ZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBvYnNlcnZlIGZhc3QgZm9yd2FyZCBhbmQgcmV3aW5kLgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaDogQWRk
IG5ldyBtZXRob2QuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lmg6IEFkZCBuZXcgbWV0aG9kLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbTogSW1wbGVtZW50IG5ldyBtZXRob2Qu
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0Q2FuUGxheUZh
c3RSZXZlcnNlKTogU2V0IHZhbHVlIG9uIFdlYkFWUGxheWVyQ29udHJvbGxlci4KKyAgICAgICAg
KC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGNhblNjYW5CYWNrd2FyZF0pOiBEZWxldGVkLgorICAg
ICAgICAoK1tXZWJBVlBsYXllckNvbnRyb2xsZXIga2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdD
YW5TY2FuQmFja3dhcmRdKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKTogaGFuZGxlIGNhblBs
YXlGYXN0UmV2ZXJzZUNoYW5nZWQgZXZlbnQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbE1lZGlhRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKTogaGFuZGxlIGNhblBsYXlGYXN0
UmV2ZXJzZUNoYW5nZWQgZXZlbnQuCisKKzIwMTQtMDctMTQgIEplcmVteSBKb25lcyAgPGplcmVt
eWpAYXBwbGUuY29tPgorCiAgICAgICAgIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
IHNob3VsZCBvbmx5IGNhbGwgdGhlIFVJIGZyb20gbWFpbiB0aHJlYWQuCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4OTAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGNlMDY0ZjIzNjBlMDIzMzczOGRmNmM0MjM2Yzg5NDIyNDJhNWJlYjAuLmI0ZjQzNjJjODUxMGEy
Mzg0MjJmYTA5MDZjMjZkNjkyMDhkYzdmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxNC0wNy0xNCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAg
RGlzYWJsZSBmZi9ydyBiYXNlZCBvbiBjYW5QbGF5RmFzdEZvcndhcmQgYW5kIGNhblBsYXlGYXN0
UmV3aW5kLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM0ODk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHNldENhblBsYXlGYXN0UmV2ZXJzZQorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46IGRpdHRvCisgICAgICAgICog
V2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOiBkaXR0bworICAgICAg
ICAqIFdlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06IGRpdHRvCisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldENhblBsYXlGYXN0
UmV2ZXJzZSk6IGRpdHRvCisKIDIwMTQtMDctMTQgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtQbHVnSW5zXSBDaGVjayBmb3IgYSBub24tbnVsbCBzbmFwc2hvdCBp
bWFnZSBiZWZvcmUgdHJ5aW5nIHRvIGRlY29kZSBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA0
N2M5YjQ4YjYyODA0NmExODdmODY0YmY1OTRiMDcyOTRlMDUwZGNjLi4yNzhkMWEwMGJiNmJlMDdk
OWZkOWJlMDUzYjkyZTY1NjkyMjY5ZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzQ0Miw2
ICszNDQyLDcgQEAgX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDE3Y2xlYW51cEZ1bGxzY3JlZW5FdgogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDE3c2V0U2Vla2FibGVSYW5nZXNFUktOU18xMFRpbWVSYW5nZXNFCiBfX1pO
N1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MThzZXRWaWRlb0RpbWVu
c2lvbnNFYmZmCiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
MTlzZXRFeHRlcm5hbFBsYXliYWNrRWJOU18yN1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTI2
RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGVFTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMzJX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDIxc2V0Q2FuUGxheUZhc3RSZXZlcnNlRWIK
IF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQyNnNldFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsRVBOU18yM1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsRQogX19aTjdX
ZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDI4cmVxdWVzdEhpZGVBbmRF
eGl0RnVsbHNjcmVlbkV2CiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0MjlzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0VSS04zV1RGNlZlY3RvcklOUzFf
NlN0cmluZ0VMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFeQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmgKaW5kZXggMzExMmEyZWI1YjdkN2NhMjBlM2I1MDIxYjAzZjI1NTY2NTE3NTdkZi4uNjM3ZDI2
NTk2N2Q2NDFhZGZmZWI5NjAwMWNmYjVkYWEyN2U4N2EwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCkBAIC0xNjIsNiArMTYyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHRp
bWV1cGRhdGUpIFwKICAgICBtYWNybyh2b2x1bWVjaGFuZ2UpIFwKICAgICBtYWNybyh3YWl0aW5n
KSBcCisgICAgbWFjcm8oY2FucGxheWZhc3RyZXZlcnNlY2hhbmdlKSBcCiAgICAgXAogICAgIG1h
Y3JvKGFjdGl2ZSkgXAogICAgIG1hY3JvKGluYWN0aXZlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA1YzBlZGVhM2I2YTNjNDUzMTFiZjc1NDZlOWVhNWM2
YTRjYzJlMzE4Li5mYjIxZWJlMGE5MzBkNzYyMmNiMWQxNzhhNzBiMWMxMDRmZTE0NjMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTMxMDEsNiArMzEwMSwx
MiBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6bmV4dFNjYW5SYXRlKCkKICAgICBkb3VibGUg
cmF0ZSA9IHN0ZDo6bWluKFNjYW5NYXhpbXVtUmF0ZSwgZmFicyhwbGF5YmFja1JhdGUoKSAqIDIp
KTsKICAgICBpZiAobV9zY2FuRGlyZWN0aW9uID09IEJhY2t3YXJkKQogICAgICAgICByYXRlICo9
IC0xOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoIWNhblBsYXlGYXN0UmV2ZXJzZSgpICYm
IHJhdGUgIDwgMCkKKyAgICAgICAgcmF0ZSA9IDA7CisgICAgaWYgKCFjYW5QbGF5RmFzdEZvcndh
cmQoKSAmJiByYXRlID4gMikKKyAgICAgICAgcmF0ZSA9IDI7CisjZW5kaWYKICAgICByZXR1cm4g
cmF0ZTsKIH0KIApAQCAtNDg1NCw2ICs0ODYwLDIxIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
ZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCkKIH0KICNlbmRp
ZgogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2FuUGxheUZhc3RSZXZlcnNl
Q2hhbmdlZChNZWRpYVBsYXllciopCit7CisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
Y2FucGxheWZhc3RyZXZlcnNlY2hhbmdlRXZlbnQpOworfQorCitib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OmNhblBsYXlGYXN0Rm9yd2FyZCgpCit7CisgICAgcmV0dXJuIG1fcGxheWVyICYmIG1fcGxh
eWVyLT5jYW5QbGF5RmFzdEZvcndhcmQoKTsKK30KKworYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpj
YW5QbGF5RmFzdFJldmVyc2UoKQoreworICAgIHJldHVybiBtX3BsYXllciAmJiBtX3BsYXllci0+
Y2FuUGxheUZhc3RSZXZlcnNlKCk7Cit9CisgICAgCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omlz
RnVsbHNjcmVlbigpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNGdWxsc2NyZWVuKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBlODRiYjlmYWQ2YTUyMTA0MDIyY2IwZWQw
YTkyYmU5ZGUzZmQwYmQ5Li4yNzczNjZiYmU5YTA2NDE0MGQ5NjBkODU1MzMxOGY2NTgxYzY4MWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTg4LDYgKzE4OCw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvdWxkQnVmZmVyRGF0YShib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGZh
c3RTZWVrKGRvdWJsZSk7CisgICAgYm9vbCBjYW5QbGF5RmFzdEZvcndhcmQoKTsKKyAgICBib29s
IGNhblBsYXlGYXN0UmV2ZXJzZSgpOwogCiAvLyBjYXB0aW9ucwogICAgIGJvb2wgd2Via2l0SGFz
Q2xvc2VkQ2FwdGlvbnMoKSBjb25zdDsKQEAgLTUzNyw2ICs1MzksOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCk7CiAj
ZW5kaWYKIAorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckNhblBsYXlGYXN0UmV2ZXJzZUNo
YW5nZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKKwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlh
UGxheWVyUmVmZXJyZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRp
YVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgQ09SU01vZGUg
bWVkaWFQbGF5ZXJDT1JTTW9kZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGQwOGZmYjFiMDU2Nzdl
ZmQxNzYwMDE3NzNmZWJhOGVlOTg1ZjdmMzUuLmFjZDM4ZWFkNGFhM2YxMGU3YTQ3N2I1MmI5YTM2
Mjg4MDk5YTBkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKQEAgLTg5Myw2ICs4OTMsMjIgQEAgdm9pZCBNZWRpYVBsYXllcjo6cGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkKCkKIH0KICNlbmRpZgogCitib29sIE1lZGlh
UGxheWVyOjpjYW5QbGF5RmFzdEZvcndhcmQoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUgJiYg
bV9wcml2YXRlLT5jYW5QbGF5RmFzdEZvcndhcmQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllcjo6
Y2FuUGxheUZhc3RSZXZlcnNlKCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0
ZS0+Y2FuUGxheUZhc3RSZXZlcnNlKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OmNhblBsYXlG
YXN0UmV2ZXJzZUNoYW5nZWQoKQoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAg
ICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckNhblBsYXlGYXN0UmV2ZXJzZUNo
YW5nZWQodGhpcyk7Cit9CisKICNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiBib29s
IE1lZGlhUGxheWVyOjpjYW5FbnRlckZ1bGxzY3JlZW4oKSBjb25zdAogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggZWE3MWZkODQ2MzNh
MmEwYTcyZmY0MWY3ZjcwMjVlNDVlMzE1M2QzNy4uZjg3NGQ4ODI2NDUzY2YzNzBiZTE5ZjMzYWRi
NjcyYThkZTlkYjcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCkBAIC0xNzYsNiArMTc2LDggQEAgcHVibGljOgogICAgIC8vIHRoZSBwbGF5
L3BhdXNlIHN0YXR1cyBjaGFuZ2VkCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUGxheWJh
Y2tTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllckNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKwogICAg
IC8vIFRoZSBNZWRpYVBsYXllciBoYXMgZm91bmQgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgbWVk
aWEgY29udGVudC4KICAgICAvLyBUaGlzIGlzIHVzZWQgaW50ZXJuYWxseSB0byB0cmlnZ2VyIHN3
YXBwaW5nIGZyb20gYSA8dmlkZW8+CiAgICAgLy8gZWxlbWVudCB0byBhbiA8ZW1iZWQ+IGluIHN0
YW5kYWxvbmUgZG9jdW1lbnRzCkBAIC00ODAsNiArNDgyLDExIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGJvb2wpOwogI2VuZGlm
CiAKKyAgICBib29sIGNhblBsYXlGYXN0UmV2ZXJzZSgpOworICAgIHZvaWQgY2FuUGxheUZhc3RS
ZXZlcnNlQ2hhbmdlZCgpOworCisgICAgYm9vbCBjYW5QbGF5RmFzdEZvcndhcmQoKTsKKwogI2lm
IFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICBib29sIGNhbkVudGVyRnVsbHNjcmVl
bigpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGNjOTEyYWRjYThlM2Q1NjJjODkyNWMy
ZDY1N2YzOGMzZGRjMGRiMjUuLmZjNGRiOTM4YmIyZWFkOTc3ZDM5OGNkODc4OGVkMDBlYzIyMTU3
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyUHJpdmF0ZS5oCkBAIC0xMTYsNiArMTE2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9ICAgIAogICAg
IHZpcnR1YWwgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkgeyB9CiAKKyAgICB2
aXJ0dWFsIGJvb2wgY2FuUGxheUZhc3RGb3J3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CisKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlT
dGF0ZSgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCBmYjIyMzE4OGYyMDk4MGI2NDlkODEzNzc2
NzY4MTE2Y2UwMTJkMDAyLi5mYTEyNjU3MzY5OGY2M2I5NDBkMGFjMDQ1OTdjMTMzNGIyZmY1Mzll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmNwcApAQCAtMTAwNiw2ICsxMDA2LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpwbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKCkKIH0KICNlbmRp
ZgogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Y2FuUGxheUZhc3RSZXZl
cnNlQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fcGxheWVyKQorICAgICAgICBtX3BsYXllci0+Y2Fu
UGxheUZhc3RSZXZlcnNlQ2hhbmdlZCgpOworfQorCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0
YShVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBrZXlVUkksIFN0cmluZyYga2V5SUQsIFJl
ZlB0cjxVaW50OEFycmF5PiYgY2VydGlmaWNhdGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKaW5kZXggNjM3MjAzOGU0OGQzZmMy
MDZkMDFkZmYzYTEzOGIwZTZjYTQ3NjdkYi4uYzZjOWM0Yzc0MWFhNThlNTgyZTQ5NWY2OTFkODY2
ZGYzNzI0NjdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb24uaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKElP
U19BSVJQTEFZKQogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZCgpOwog
I2VuZGlmCisgICAgdm9pZCBjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKCk7CiAgICAgCiAgICAg
Y2xhc3MgTm90aWZpY2F0aW9uIHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5k
ZXggMzQ5M2VjZjhhY2Y0OTljOThjMDkyODIxMjBiZjg1OTM1NTYwZDJiOS4uM2MyOGNlNWM0OTk2
YjgzNmNjNjAyMDQ5N2FjY2RlMWM4OTA2NWNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAt
MTA4LDYgKzEwOCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtZXRhZGF0YURpZEFycml2ZShSZXRh
aW5QdHI8TlNBcnJheT4sIGRvdWJsZSk7CiAgICAgdm9pZCBmaXJzdEZyYW1lQXZhaWxhYmxlRGlk
Q2hhbmdlKGJvb2wpOwogICAgIHZvaWQgdHJhY2tFbmFibGVkRGlkQ2hhbmdlKGJvb2wpOworICAg
IHZvaWQgY2FuUGxheUZhc3RSZXZlcnNlRGlkQ2hhbmdlKGJvb2wpOworICAgIHZvaWQgY2FuUGxh
eUZhc3RGb3J3YXJkRGlkQ2hhbmdlKGJvb2wpOworCisgICAgdmlydHVhbCBib29sIGNhblBsYXlG
YXN0Rm9yd2FyZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY2FjaGVkQ2FuUGxheUZhc3RG
b3J3YXJkOyB9CisgICAgdmlydHVhbCBib29sIGNhblBsYXlGYXN0UmV2ZXJzZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fY2FjaGVkQ2FuUGxheUZhc3RSZXZlcnNlOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvdWxkQnVmZmVyRGF0YShib29sKTsKIApAQCAtMzMzLDYgKzMzOCw4IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZEJ1ZmZlckRhdGE7CiAgICAgYm9vbCBtX2NhY2hl
ZElzUmVhZHlGb3JEaXNwbGF5OwogICAgIGJvb2wgbV9oYXZlQmVlbkFza2VkVG9DcmVhdGVMYXll
cjsKKyAgICBib29sIG1fY2FjaGVkQ2FuUGxheUZhc3RGb3J3YXJkOworICAgIGJvb2wgbV9jYWNo
ZWRDYW5QbGF5RmFzdFJldmVyc2U7CiAjaWYgRU5BQkxFKElPU19BSVJQTEFZKQogICAgIG11dGFi
bGUgYm9vbCBtX2FsbG93c1dpcmVsZXNzVmlkZW9QbGF5YmFjazsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KaW5kZXggOTg0OGQ5OThmYTI4YmNlYzdkZTZmODAxNTFjNjAyN2IxNGI3ZDU0
YS4uZDJkNGEzMzdiM2ZjZTY1M2JiNDYyZDE0MzQyZjE4M2I0Y2U3ZmIwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCkBAIC03NzgsNiArNzc4LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllcigpCiAgICAgW21fYXZQbGF5ZXIuZ2V0KCkg
YWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImV4dGVybmFsUGxh
eWJhY2tBY3RpdmUiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0
Oih2b2lkICopTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRQbGF5ZXJd
OwogICAgIHVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7CiAjZW5kaWYKKyAgICBbbV9h
dlBsYXllci5nZXQoKSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRo
OkAiY2FuUGxheUZhc3RSZXZlcnNlIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25O
ZXcgY29udGV4dDoodm9pZCAqKU1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250
ZXh0UGxheWVyXTsKKyAgICBbbV9hdlBsYXllci5nZXQoKSBhZGRPYnNlcnZlcjptX29iamNPYnNl
cnZlci5nZXQoKSBmb3JLZXlQYXRoOkAiY2FuUGxheUZhc3RGb3J3YXJkIiBvcHRpb25zOk5TS2V5
VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9pZCAqKU1lZGlhUGxheWVyQVZGb3Vu
ZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVyXTsKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9O
X01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQ
VVRfU1VQUE9SVCkKICAgICBbbV9hdlBsYXllci5nZXQoKSBzZXRBcHBsaWVzTWVkaWFTZWxlY3Rp
b25Dcml0ZXJpYUF1dG9tYXRpY2FsbHk6WUVTXTsKQEAgLTI1MjMsNiArMjUyNSwxNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXliYWNrVGFyZ2V0SXNXaXJl
bGVzc0RpZENoYW5nZSgpCiB9CiAjZW5kaWYKIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjYW5QbGF5RmFzdEZvcndhcmREaWRDaGFuZ2UoYm9vbCBuZXdWYWx1ZSkK
K3sKKyAgICBtX2NhY2hlZENhblBsYXlGYXN0Rm9yd2FyZCA9IG5ld1ZhbHVlOworfQorCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNhblBsYXlGYXN0UmV2ZXJzZURp
ZENoYW5nZShib29sIG5ld1ZhbHVlKQoreworICAgIG1fY2FjaGVkQ2FuUGxheUZhc3RSZXZlcnNl
ID0gbmV3VmFsdWU7CisgICAgY2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZCgpOworfQorCiBOU0Fy
cmF5KiBhc3NldE1ldGFkYXRhS2V5TmFtZXMoKQogewogICAgIHN0YXRpYyBOU0FycmF5KiBrZXlz
OwpAQCAtMjY3Niw2ICsyNjg5LDEwIEBAIE5TQXJyYXkqIGFzc2V0VHJhY2tNZXRhZGF0YUtleU5h
bWVzKCkKICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZXh0ZXJu
YWxQbGF5YmFja0FjdGl2ZSJdKQogICAgICAgICAgICAgZnVuY3Rpb24gPSBXVEY6OmJpbmQoJk1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXliYWNrVGFyZ2V0SXNXaXJlbGVz
c0RpZENoYW5nZSwgbV9jYWxsYmFjayk7CiAjZW5kaWYKKyAgICAgICAgZWxzZSBpZiAoW2tleVBh
dGggaXNFcXVhbFRvU3RyaW5nOkAiY2FuUGxheUZhc3RSZXZlcnNlIl0pCisgICAgICAgICAgICBm
dW5jdGlvbiA9IFdURjo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y2FuUGxheUZhc3RSZXZlcnNlRGlkQ2hhbmdlLCBtX2NhbGxiYWNrLCBbbmV3VmFsdWUgYm9vbFZh
bHVlXSk7CisgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImNhblBs
YXlGYXN0Rm9yd2FyZCJdKQorICAgICAgICAgICAgZnVuY3Rpb24gPSBXVEY6OmJpbmQoJk1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNhblBsYXlGYXN0Rm9yd2FyZERpZENoYW5n
ZSwgbV9jYWxsYmFjaywgW25ld1ZhbHVlIGJvb2xWYWx1ZV0pOwogICAgIH0KICAgICAKICAgICBp
ZiAoZnVuY3Rpb24uaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgKaW5kZXggYWE4YWE3MDNlNWY5
YjYyYTg4MzAxZDQ2NTJhNjQ1YzdkMmVlNzNlZS4uMmRiM2I4MjdjOTBiYTkwZmQxMTlhNjhiMDg1
YjkxY2Y2MWU5YzU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaApAQCAtNDksNiArNDksNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXli
YWNrUmF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBo
YXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1
aW50NjRfdCBzZWxlY3RlZEluZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEV4dGVybmFs
UGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgU3RyaW5n
IGxvY2FsaXplZERldmljZU5hbWUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5k
ZXggMTBmM2QwNzU3OWNiYjQ0YzJhNzZjMmJmZWE2M2NhMTQ1M2ZkODk3NC4uMzM5ZmNhYTdjNzA0
MjRiNjA1NmQ5NzQzYmNkNjhmZDliODBmZTg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
LmgKQEAgLTgzLDYgKzgzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRSYXRlKGJv
b2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0
IGhlaWdodCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNv
bnN0IFRpbWVSYW5nZXMmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FuUGxheUZh
c3RSZXZlcnNlKGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldExlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHRlcm5hbFBs
YXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFN0cmluZyBs
b2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQppbmRleCA3ODU3YmQwZDFlMjZiNzM3NGYxZThhOWE3OGI4OTI5MTVmZDYwYTU1Li5mYmZhZjM1
M2JjNWEwMjU0ZWNiMTc1Yzg3ZWYyOThjNDk5MDM2ZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCkBAIC05MSw3ICs5MSw3IEBAIFNPRlRfTElOS19DT05TVEFOVChDb3JlTWVkaWEs
IGtDTVRpbWVJbmRlZmluaXRlLCBDTVRpbWUpCiBAcHJvcGVydHkoYXNzaWduKSBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbCogZGVsZWdhdGU7CiAKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2Fu
U2NhbkZvcndhcmQ7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNjYW5CYWNrd2FyZDsK
K0Bwcm9wZXJ0eSBCT09MIGNhblNjYW5CYWNrd2FyZDsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJP
T0wgY2FuU2Vla1RvQmVnaW5uaW5nOwogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVr
VG9FbmQ7CiAKQEAgLTMwMSwxNiArMzAxLDYgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRp
YSwga0NNVGltZUluZGVmaW5pdGUsIENNVGltZSkKICAgICBzZWxmLmRlbGVnYXRlLT5lbmRTY2Fu
bmluZygpOwogfQogCi0tIChCT09MKWNhblNjYW5CYWNrd2FyZAotewotICAgIHJldHVybiBbc2Vs
ZiBjYW5QbGF5XTsKLX0KLQotKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ0Nh
blNjYW5CYWNrd2FyZAotewotICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpAImNhblBs
YXkiXTsKLX0KLQogLSAodm9pZCliZWdpblNjYW5uaW5nQmFja3dhcmQ6KGlkKXNlbmRlcgogewog
ICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwpAQCAtNjg1LDYgKzY3NSwxMSBAQCB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1l
UmFuZ2VzJiB0aW1lUgogICAgIH0pOwogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCBjYW5QbGF5RmFzdFJldmVyc2Up
Cit7CisgICAgcGxheWVyQ29udHJvbGxlcigpLmNhblNjYW5CYWNrd2FyZCA9IGNhblBsYXlGYXN0
UmV2ZXJzZTsKK30KKwogc3RhdGljIE5TTXV0YWJsZUFycmF5ICptZWRpYVNlbGVjdGlvbk9wdGlv
bnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMpCiB7CiAgICAgTlNNdXRhYmxlQXJyYXkg
KndlYk9wdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6b3B0aW9ucy5z
aXplKCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Lm1tCmluZGV4IDkwNmY5ODg3
NzYzYTM1YjJkNTc4YjBjODI5NjgwYTAxYWI2ODNmYjUuLjFiZWIxZDUzMjIyZDJjNTlhZDFkMmUw
MWFhMTk0MjliZTM3NWQ2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQubW0K
QEAgLTExNiw2ICsxMTYsMTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxl
bWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3QKICAgICAgICAgbV92
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldFJhdGUoIW1fbWVkaWFFbGVtZW50LT5wYXVzZWQo
KSwgbV9tZWRpYUVsZW1lbnQtPnBsYXliYWNrUmF0ZSgpKTsKIAogICAgIGlmIChhbGwKKyAgICAg
ICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5jYW5wbGF5ZmFzdHJldmVyc2VjaGFuZ2VF
dmVudCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldENhblBsYXlGYXN0
UmV2ZXJzZShtX21lZGlhRWxlbWVudC0+Y2FuUGxheUZhc3RSZXZlcnNlKCkpOworCisgICAgaWYg
KGFsbAogICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVu
dCkgewogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0Q3VycmVudFRpbWUo
bV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCksIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m
b10gc3lzdGVtVXB0aW1lXSk7CiAgICAgICAgIC8vIEZJWE1FOiAxMzA3ODggLSBmaW5kIGEgYmV0
dGVyIGV2ZW50IHRvIHVwZGF0ZSBzZWVrYWJsZSByYW5nZXMgZnJvbS4KQEAgLTM2Nyw2ICszNzEs
NyBAQCBjb25zdCBWZWN0b3I8QXRvbWljU3RyaW5nPiYgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxN
ZWRpYUVsZW1lbnQ6Om9ic2VydmVkRXZlbnROYQogICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5h
cHBlbmQoZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQpOwogICAgICAgICBzRXZlbnROYW1lcy5n
ZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQpOwogICAgICAgICBzRXZl
bnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLndlYmtpdGN1cnJlbnRwbGF5YmFja3Rh
cmdldGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQpOworICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5h
cHBlbmQoZXZlbnROYW1lcygpLmNhbnBsYXlmYXN0cmV2ZXJzZWNoYW5nZUV2ZW50KTsKICAgICB9
CiAgICAgcmV0dXJuIHNFdmVudE5hbWVzLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2YWZhNDgxYzg4NDAwOGJjNmVhZDk4NTg4OTRk
NzYxMWY5NjkzM2JlLi4yNzExYzA2NjNhZDI3MDNjMDM4OWMxNGMzYmE3NmM4YmU2ZjE3OTA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjUsNiAr
MjUsNyBAQCBtZXNzYWdlcyAtPiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgewogICAg
IFNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGhvc3RUaW1lKQogICAg
IFNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWdu
ZWQgaGVpZ2h0KQogICAgIFNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKFZlY3RvcjxzdGQ6OnBhaXI8
ZG91YmxlLCBkb3VibGU+PiByYW5nZXMpOworICAgIFNldENhblBsYXlGYXN0UmV2ZXJzZShib29s
IHZhbHVlKTsKICAgICBTZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhWZWN0b3I8U3RyaW5n
PiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKICAgICBTZXRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKFZlY3RvcjxTdHJpbmc+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVk
SW5kZXgpOwogICAgIFNldEV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzKGJvb2wgZW5hYmxlZCwg
dWludDMyX3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5oCmluZGV4IGViYzlkYjk3ZjZlZTE1MzY5MTgwOTAyZWUzZGI2MGZjYWY2MGFhZjMu
LmQwMWQyZmI1YTgxN2E2YzMyYTQ2MGQwYTc1Yjc0YzI0OTQ4ZjU0OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLmgKQEAgLTcxLDYgKzcxLDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzZXRS
YXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgs
IGZsb2F0IGhlaWdodCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNlZWthYmxlUmFu
Z2VzKGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgdmFsdWUpIG92ZXJyaWRlOworCiAgICAgdmly
dHVhbCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxp
emVkRGV2aWNlTmFtZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMGQzM2Ni
NGJlZjdmNjVjZDU2ZGQxMDZhNDlhMWIzNzc1YTRmYjkzLi43ZjNhZWQxZGY0YmU0YjA5ZjVjNjQ1
M2ExY2U5Nzk5OWNhMDFiMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTE0NSw2ICsxNDUs
MTEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRTZWVrYWJsZVJhbmdlcyhj
b25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJiB0aW0KICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0U2Vla2FibGVSYW5nZXNWZWN0b3Io
V1RGOjptb3ZlKHJhbmdlc1ZlY3RvcikpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAordm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCB2YWx1
ZSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6U2V0Q2FuUGxheUZhc3RSZXZlcnNlKHZhbHVlKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Cit9CisKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVj
dGVkSW5kZXgpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OlNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNl
bGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235195</attachid>
            <date>2014-07-20 17:41:35 -0700</date>
            <delta_ts>2014-07-20 17:57:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134894-20140720174113.patch</filename>
            <type>text/plain</type>
            <size>19217</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxMTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmNTU1NmI1YjY2ODEx
MTg5N2Y0MGM3YmFhZjAzODQ5ODYwMTQzYi4uYjI5MGRkZDlhOWI2NzFiNmFkZDdkNjg1YzMwYWIy
YzM2MGRlNzMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE0LTA3LTIwICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNhYmxlIGZmL3J3IGJh
c2VkIG9uIGNhblBsYXlGYXN0Rm9yd2FyZCBhbmQgY2FuUGxheUZhc3RSZXdpbmQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4OTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OiBhZGQgc3ltYm9sIGZvciBjYW5QbGF5RmFzdFJldmVyc2UKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOiBBZGQgdHdvIG5ldyBhY2Nlc3NvcnMKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Om5leHRTY2FuUmF0ZSk6IHBvc3NpYmx5IGxpbWl0IHNjYW5SYXRl
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5RmFzdEZvcndhcmQp
OiBhZGRlZAorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheUZhc3RS
ZXZlcnNlKTogYWRkZWQKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDogZGVjbGFy
ZSB0d28gbmV3IG1ldGhvZHMKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHA6IFBsdW1iIHRocm91Z2ggdHdvIG5ldyBhY2Nlc3NvcnMKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjptYXhGYXN0Rm9yd2FyZFJhdGUpOiBhZGRlZAorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6Om1pbkZhc3RSZXZlcnNlUmF0ZSk6IGFkZGVkCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDogRGVjbGFyZSBuZXcgbWV0aG9kcworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOiBBZGRlZCB0d28gbmV3
IG1ldGhvZHMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6
Om1heEZhc3RGb3J3YXJkUmF0ZSk6IGFkZGVkCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U6Om1pbkZhc3RSZXZlcnNlUmF0ZSk6IGFkZGVkCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oOiBtZW1iZXIgdG8gY2FjaGUgZmYvcncgZW5hYmxlZCBzdGF0ZQorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllcik6IG9ic2VydmUgb24gaXRlbSBj
YW5QbGF5RmFzdEZvcndhcmQgY2FuUGxheUZhc3RSZXZlcnNlCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjYW5QbGF5RmFzdEZvcndhcmREaWRD
aGFuZ2UpOiBhZGRlZAorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y2FuUGxheUZhc3RSZXZlcnNlRGlkQ2hhbmdlKTogYWRkZWQKKyAgICAgICAg
KFdlYkNvcmU6Oml0ZW1LVk9Qcm9wZXJ0aWVzKTogb2JzZXJ2ZSBjYW5QbGF5RmFzdEZvcndhcmQg
Y2FuUGxheUZhc3RSZXdpbmQKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKTogZGl0dG8KKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmg6IGFkZCBu
ZXcgbWV0aG9kCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Lmg6IGRpdHRvCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tOiBkaXR0bworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6IFNldCB2YWx1ZSBvbiBXZWJB
VlBsYXllckNvbnRyb2xsZXIuCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBjYW5T
Y2FuQmFja3dhcmRdKTogRGVsZXRlZC4KKyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVy
IGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2NhbkJhY2t3YXJkXSk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50
Lm1tOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZUZvckV2ZW50TmFtZSk6IHVwZGF0ZSBjYW5QbGF5RmFzdFJldmVyc2UuCisKIDIwMTQtMDctMTYg
IEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10g
cmVwbGFjZSBBVlBsYXllckl0ZW0gb24gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTFi
ZjE2ZDliZDFhMDMxMjEzZDA1ZmYyODllYmVhOGU3ZTIxOGE1My4uYWVkNDIwMTNkNTY0M2QzMTAy
YWFjOWEwYWJmM2JkYjAwMGQxZTUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0
LTA3LTIwICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNh
YmxlIGZmL3J3IGJhc2VkIG9uIGNhblBsYXlGYXN0Rm9yd2FyZCBhbmQgY2FuUGxheUZhc3RSZXdp
bmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4
OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
c2V0Q2FuUGxheUZhc3RSZXZlcnNlCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjogZGl0dG8KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg6IGRpdHRvCisgICAgICAgICog
V2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbTogZGl0dG8KKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0Q2FuUGxheUZhc3RSZXZl
cnNlKTogZGl0dG8KKwogMjAxNC0wNy0xNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTc2NjkwOTc+IFJFR1JFU1NJT04gKHIx
NzAxNTUpOiBTYW5kYm94IHZpb2xhdGlvbnMgdXNpbmcgYSB3cm9uZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgppbmRleCA0N2M5YjQ4YjYyODA0NmExODdmODY0YmY1OTRiMDcyOTRlMDUwZGNjLi4yNzhkMWEw
MGJiNmJlMDdkOWZkOWJlMDUzYjkyZTY1NjkyMjY5ZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpA
QCAtMzQ0Miw2ICszNDQyLDcgQEAgX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDE3Y2xlYW51cEZ1bGxzY3JlZW5FdgogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE3c2V0U2Vla2FibGVSYW5nZXNFUktOU18xMFRpbWVSYW5n
ZXNFCiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MThzZXRW
aWRlb0RpbWVuc2lvbnNFYmZmCiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0MTlzZXRFeHRlcm5hbFBsYXliYWNrRWJOU18yN1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZTI2RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGVFTjNXVEY2U3RyaW5nRQorX19aTjdX
ZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDIxc2V0Q2FuUGxheUZhc3RS
ZXZlcnNlRWIKIF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQy
NnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsRVBOU18yM1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
RQogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDI4cmVxdWVz
dEhpZGVBbmRFeGl0RnVsbHNjcmVlbkV2CiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0MjlzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0VSS04zV1RGNlZl
Y3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFeQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNWMwZWRlYTNiNmEzYzQ1MzExYmY3
NTQ2ZTllYTVjNmE0Y2MyZTMxOC4uY2FjZWU0MTJkNWQ5ZTk5OTMwMTljZTk3NjlmOWY2N2JjMGRm
MDMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zMTAx
LDYgKzMxMDEsOSBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6bmV4dFNjYW5SYXRlKCkKICAg
ICBkb3VibGUgcmF0ZSA9IHN0ZDo6bWluKFNjYW5NYXhpbXVtUmF0ZSwgZmFicyhwbGF5YmFja1Jh
dGUoKSAqIDIpKTsKICAgICBpZiAobV9zY2FuRGlyZWN0aW9uID09IEJhY2t3YXJkKQogICAgICAg
ICByYXRlICo9IC0xOworI2lmIFBMQVRGT1JNKElPUykKKyAgICByYXRlID0gc3RkOjptaW4oc3Rk
OjptYXgocmF0ZSwgbWluRmFzdFJldmVyc2VSYXRlKCkpLCBtYXhGYXN0Rm9yd2FyZFJhdGUoKSk7
CisjZW5kaWYKICAgICByZXR1cm4gcmF0ZTsKIH0KIApAQCAtNDg1NCw2ICs0ODU3LDE2IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hh
bmdlZEV2ZW50KCkKIH0KICNlbmRpZgogCitkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6bWluRmFz
dFJldmVyc2VSYXRlKCkKK3sKKyAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+bWluRmFz
dFJldmVyc2VSYXRlKCkgOiAwOworfQorCitkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6bWF4RmFz
dEZvcndhcmRSYXRlKCkKK3sKKyAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+bWF4RmFz
dEZvcndhcmRSYXRlKCkgOiAwOworfQorICAgIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Z1
bGxzY3JlZW4oKSBjb25zdAogewogICAgIGlmIChtX2lzRnVsbHNjcmVlbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZTg0YmI5ZmFkNmE1MjEwNDAyMmNiMGVkMGE5
MmJlOWRlM2ZkMGJkOS4uZmIzOGZiYjNkZTMzMzhkNzI5NTM5ZmEzY2ExNGY2YzhhZjk3ZjJhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTE4OCw2ICsxODgsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHNldFNob3VsZEJ1ZmZlckRhdGEoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmYXN0
U2Vlayhkb3VibGUpOworICAgIGRvdWJsZSBtaW5GYXN0UmV2ZXJzZVJhdGUoKTsKKyAgICBkb3Vi
bGUgbWF4RmFzdEZvcndhcmRSYXRlKCk7CiAKIC8vIGNhcHRpb25zCiAgICAgYm9vbCB3ZWJraXRI
YXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGQwOGZmYjFiMDU2NzdlZmQxNzYwMDE3NzNm
ZWJhOGVlOTg1ZjdmMzUuLjAwNWM4ZTdhNTg4NDI1N2IzN2Q0ZWRlYWM5OTljYzJjZWQxZjU4NDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKQEAgLTg5Myw2ICs4OTMsMTYgQEAgdm9pZCBNZWRpYVBsYXllcjo6cGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlDaGFuZ2VkKCkKIH0KICNlbmRpZgogCitkb3VibGUgTWVkaWFQbGF5ZXI6Om1h
eEZhc3RGb3J3YXJkUmF0ZSgpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZSA/IG1fcHJpdmF0ZS0+
bWF4RmFzdEZvcndhcmRSYXRlKCkgOiBEQkxfTUFYOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXI6
Om1pbkZhc3RSZXZlcnNlUmF0ZSgpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZSA/IG1fcHJpdmF0
ZS0+bWluRmFzdFJldmVyc2VSYXRlKCkgOiAtREJMX01BWDsKK30KKwogI2lmIFVTRShOQVRJVkVf
RlVMTFNDUkVFTl9WSURFTykKIGJvb2wgTWVkaWFQbGF5ZXI6OmNhbkVudGVyRnVsbHNjcmVlbigp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAppbmRleCBlYTcxZmQ4NDYzM2EyYTBhNzJmZjQxZjdmNzAyNWU0NWUzMTUzZDM3Li5kZTMx
ZmQyZThkM2FhYmI4MTg0YzRjOTUzODQ0NjI4OGJiNzRkZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQ4MCw2ICs0ODAsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVy
cyhib29sKTsKICNlbmRpZgogCisgICAgZG91YmxlIG1pbkZhc3RSZXZlcnNlUmF0ZSgpOworICAg
IGRvdWJsZSBtYXhGYXN0Rm9yd2FyZFJhdGUoKTsKKwogI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVF
Tl9WSURFTykKICAgICBib29sIGNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0OwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCmluZGV4IGNjOTEyYWRjYThlM2Q1NjJjODkyNWMyZDY1N2YzOGMzZGRjMGRiMjUuLjAz
NGU2MThiZWQyNTQwNTY5ODYzM2E5YjNjODQ2OTZjNmY2NGQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0x
MTYsNiArMTE2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNDbG9zZWRDYXB0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9ICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXRDbG9z
ZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkgeyB9CiAKKyAgICB2aXJ0dWFsIGRvdWJsZSBtYXhGYXN0
Rm9yd2FyZFJhdGUoKSBjb25zdCB7IHJldHVybiBEQkxfTUFYOyB9CisgICAgdmlydHVhbCBkb3Vi
bGUgbWluRmFzdFJldmVyc2VSYXRlKCkgY29uc3QgeyByZXR1cm4gLURCTF9NQVg7IH0KKwogICAg
IHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29u
c3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggYzVjOWE2YzBiNDQ1ZDU4OGRiMGEx
MmE1NTY3NmZhZTNjZTQ0MjkwZC4uNjc1MTcxNzMzY2FkYThmN2UwODc4ZGM4ZTY4MTQwZGE5YWU2
MTBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMTA4LDYgKzEwOCwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBtZXRhZGF0YURpZEFycml2ZShSZXRhaW5QdHI8TlNBcnJheT4sIGRvdWJsZSk7
CiAgICAgdm9pZCBmaXJzdEZyYW1lQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpOwogICAgIHZvaWQg
dHJhY2tFbmFibGVkRGlkQ2hhbmdlKGJvb2wpOworICAgIHZvaWQgY2FuUGxheUZhc3RSZXZlcnNl
RGlkQ2hhbmdlKGJvb2wpOworICAgIHZvaWQgY2FuUGxheUZhc3RGb3J3YXJkRGlkQ2hhbmdlKGJv
b2wpOworCisgICAgdmlydHVhbCBkb3VibGUgbWF4RmFzdEZvcndhcmRSYXRlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9jYWNoZWRDYW5QbGF5RmFzdEZvcndhcmQgPyBEQkxfTUFYIDogMi4w
OyB9CisgICAgdmlydHVhbCBkb3VibGUgbWluRmFzdFJldmVyc2VSYXRlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9jYWNoZWRDYW5QbGF5RmFzdFJldmVyc2UgPyAtREJMX01BWCA6IDAuMDsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZEJ1ZmZlckRhdGEoYm9vbCk7CiAKQEAgLTMz
NSw2ICszNDAsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRCdWZmZXJEYXRhOwogICAg
IGJvb2wgbV9jYWNoZWRJc1JlYWR5Rm9yRGlzcGxheTsKICAgICBib29sIG1faGF2ZUJlZW5Bc2tl
ZFRvQ3JlYXRlTGF5ZXI7CisgICAgYm9vbCBtX2NhY2hlZENhblBsYXlGYXN0Rm9yd2FyZDsKKyAg
ICBib29sIG1fY2FjaGVkQ2FuUGxheUZhc3RSZXZlcnNlOwogI2lmIEVOQUJMRShJT1NfQUlSUExB
WSkKICAgICBtdXRhYmxlIGJvb2wgbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2s7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGFmMDAzZGZmZTczNGQxYzZkNzY4Mzc1MmI5
OTVlODFkZjZjOTVlNzUuLmRkMzJmNzg2NjE1NTQ3NjIwNTkzNDFkY2U1M2VkNzk4Y2I1YWFjNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjUzOCw2ICsyNTM4LDE2IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxheWJhY2tUYXJnZXRJc1dpcmVsZXNz
RGlkQ2hhbmdlKCkKIH0KICNlbmRpZgogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmNhblBsYXlGYXN0Rm9yd2FyZERpZENoYW5nZShib29sIG5ld1ZhbHVlKQorewor
ICAgIG1fY2FjaGVkQ2FuUGxheUZhc3RGb3J3YXJkID0gbmV3VmFsdWU7Cit9CisKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2FuUGxheUZhc3RSZXZlcnNlRGlkQ2hh
bmdlKGJvb2wgbmV3VmFsdWUpCit7CisgICAgbV9jYWNoZWRDYW5QbGF5RmFzdFJldmVyc2UgPSBu
ZXdWYWx1ZTsKK30KKwogTlNBcnJheSogYXNzZXRNZXRhZGF0YUtleU5hbWVzKCkKIHsKICAgICBz
dGF0aWMgTlNBcnJheSoga2V5czsKQEAgLTI1NzEsNiArMjU4MSw4IEBAIE5TQXJyYXkqIGl0ZW1L
Vk9Qcm9wZXJ0aWVzKCkKICAgICAgICAgICAgICAgICBAImR1cmF0aW9uIiwKICAgICAgICAgICAg
ICAgICBAImhhc0VuYWJsZWRBdWRpbyIsCiAgICAgICAgICAgICAgICAgQCJ0aW1lZE1ldGFkYXRh
IiwKKyAgICAgICAgICAgICAgICBAImNhblBsYXlGYXN0Rm9yd2FyZCIsCisgICAgICAgICAgICAg
ICAgQCJjYW5QbGF5RmFzdFJldmVyc2UiLAogICAgICAgICAgICAgICAgIG5pbF07CiAgICAgfQog
ICAgIHJldHVybiBrZXlzOwpAQCAtMjY4MCw3ICsyNjkyLDEwIEBAIE5TQXJyYXkqIGFzc2V0VHJh
Y2tNZXRhZGF0YUtleU5hbWVzKCkKICAgICAgICAgICAgIGlmIChDTVRJTUVfSVNfTlVNRVJJQyhp
dGVtVGltZSkpCiAgICAgICAgICAgICAgICAgbm93ID0gc3RkOjptYXgobmFycm93UHJlY2lzaW9u
VG9GbG9hdChDTVRpbWVHZXRTZWNvbmRzKGl0ZW1UaW1lKSksIDAuMGYpOwogICAgICAgICAgICAg
ZnVuY3Rpb24gPSBXVEY6OmJpbmQoJk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
Om1ldGFkYXRhRGlkQXJyaXZlLCBtX2NhbGxiYWNrLCBSZXRhaW5QdHI8TlNBcnJheT4obmV3VmFs
dWUpLCBub3cpOwotICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoW2tleVBhdGggaXNFcXVh
bFRvU3RyaW5nOkAiY2FuUGxheUZhc3RSZXZlcnNlIl0pCisgICAgICAgICAgICBmdW5jdGlvbiA9
IFdURjo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2FuUGxheUZh
c3RSZXZlcnNlRGlkQ2hhbmdlLCBtX2NhbGxiYWNrLCBbbmV3VmFsdWUgYm9vbFZhbHVlXSk7Cisg
ICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImNhblBsYXlGYXN0Rm9y
d2FyZCJdKQorICAgICAgICAgICAgZnVuY3Rpb24gPSBXVEY6OmJpbmQoJk1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNhblBsYXlGYXN0Rm9yd2FyZERpZENoYW5nZSwgbV9jYWxs
YmFjaywgW25ld1ZhbHVlIGJvb2xWYWx1ZV0pOwogICAgIH0KIAogICAgIGlmIChjb250ZXh0ID09
IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVyICYmICF3aWxs
Q2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgKaW5kZXggYWE4YWE3MDNlNWY5YjYyYTg4MzAxZDQ2
NTJhNjQ1YzdkMmVlNzNlZS4uMmRiM2I4MjdjOTBiYTkwZmQxMTlhNjhiMDg1YjkxY2Y2MWU5YzU3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWVrYWJs
ZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDYW5Q
bGF5RmFzdFJldmVyc2UoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxl
Y3RlZEluZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9v
bCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERl
dmljZU5hbWUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXggMTBmM2QwNzU3
OWNiYjQ0YzJhNzZjMmJmZWE2M2NhMTQ1M2ZkODk3NC4uMzM5ZmNhYTdjNzA0MjRiNjA1NmQ5NzQz
YmNkNjhmZDliODBmZTg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTgzLDYg
KzgzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5n
LCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRl
b0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5n
ZXMmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJv
b2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5k
ZXgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wg
ZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZp
Y2VOYW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCBlYmIw
MTQxZTljM2VhNGRmOWM4Y2UzYjBmZWE4ZDFlOWE4ZjdlNjZmLi5hZjczY2MxN2ExYjg0OGNkODJj
MDUwN2VhNTU5MTIxZDhmYmMyYjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBA
IC05MSw3ICs5MSw3IEBAIFNPRlRfTElOS19DT05TVEFOVChDb3JlTWVkaWEsIGtDTVRpbWVJbmRl
ZmluaXRlLCBDTVRpbWUpCiBAcHJvcGVydHkoYXNzaWduKSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bCogZGVsZWdhdGU7CiAKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2NhbkZvcndhcmQ7
Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNjYW5CYWNrd2FyZDsKK0Bwcm9wZXJ0eSBC
T09MIGNhblNjYW5CYWNrd2FyZDsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2Vla1Rv
QmVnaW5uaW5nOwogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrVG9FbmQ7CiAKQEAg
LTMwMSwxNiArMzAxLDYgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZUlu
ZGVmaW5pdGUsIENNVGltZSkKICAgICBzZWxmLmRlbGVnYXRlLT5lbmRTY2FubmluZygpOwogfQog
Ci0tIChCT09MKWNhblNjYW5CYWNrd2FyZAotewotICAgIHJldHVybiBbc2VsZiBjYW5QbGF5XTsK
LX0KLQotKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ0NhblNjYW5CYWNrd2Fy
ZAotewotICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdDpAImNhblBsYXkiXTsKLX0KLQog
LSAodm9pZCliZWdpblNjYW5uaW5nQmFja3dhcmQ6KGlkKXNlbmRlcgogewogICAgIFVOVVNFRF9Q
QVJBTShzZW5kZXIpOwpAQCAtNjc4LDYgKzY2OCwxMSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1l
UgogICAgIH0pOwogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpz
ZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UpCit7CisgICAgcGxh
eWVyQ29udHJvbGxlcigpLmNhblNjYW5CYWNrd2FyZCA9IGNhblBsYXlGYXN0UmV2ZXJzZTsKK30K
Kwogc3RhdGljIE5TTXV0YWJsZUFycmF5ICptZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIG9wdGlvbnMpCiB7CiAgICAgTlNNdXRhYmxlQXJyYXkgKndlYk9wdGlvbnMg
PSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6b3B0aW9ucy5zaXplKCldOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Lm1tCmluZGV4IDkwNmY5ODg3NzYzYTM1YjJkNTc4
YjBjODI5NjgwYTAxYWI2ODNmYjUuLmY1MjgzMGI5NzQ4MWUxZTBmZDk5ZDhlMTYzMmIwYjRhMWI2
Y2Q1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQubW0KQEAgLTEwNiw4ICsx
MDYsMTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRl
Rm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3QKICAgICBib29sIGFsbCA9IGV2ZW50TmFt
ZSA9PSBldmVudE5hbWVBbGwoKTsKIAogICAgIGlmIChhbGwKLSAgICAgICAgfHwgZXZlbnROYW1l
ID09IGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50KQorICAgICAgICB8fCBldmVudE5h
bWUgPT0gZXZlbnROYW1lcygpLmR1cmF0aW9uY2hhbmdlRXZlbnQpIHsKICAgICAgICAgbV92aWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldER1cmF0aW9uKG1fbWVkaWFFbGVtZW50LT5kdXJhdGlv
bigpKTsKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldENhblBsYXlGYXN0
UmV2ZXJzZShtX21lZGlhRWxlbWVudC0+bWluRmFzdFJldmVyc2VSYXRlKCkgPCAwLjApOworICAg
IH0KIAogICAgIGlmIChhbGwKICAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5w
YXVzZUV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDZhZmE0ODFjODg0MDA4YmM2ZWFkOTg1ODg5NGQ3NjExZjk2OTMzYmUuLjI3MTFjMDY2M2Fk
MjcwM2MwMzg5YzE0YzNiYTc2YzhiZTZmMTc5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSB7CiAgICAgU2V0Q3VycmVudFRpbWUoZG91YmxlIGN1
cnJlbnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpCiAgICAgU2V0VmlkZW9EaW1lbnNpb25zKGJvb2wg
aGFzVmlkZW8sIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCiAgICAgU2V0U2Vla2Fi
bGVSYW5nZXNWZWN0b3IoVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcyk7
CisgICAgU2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgdmFsdWUpOwogICAgIFNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zKFZlY3RvcjxTdHJpbmc+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVj
dGVkSW5kZXgpOwogICAgIFNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoVmVjdG9yPFN0
cmluZz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7CiAgICAgU2V0RXh0ZXJuYWxQ
bGF5YmFja1Byb3BlcnRpZXMoYm9vbCBlbmFibGVkLCB1aW50MzJfdCB0YXJnZXRUeXBlLCBTdHJp
bmcgbG9jYWxpemVkRGV2aWNlTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggZWJjOWRiOTdm
NmVlMTUzNjkxODA5MDJlZTNkYjYwZmNhZjYwYWFmMy4uZDAxZDJmYjVhODE3YTZjMzJhNDYwZDBh
NzViNzRjMjQ5NDhmNTQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAtNzEsNiArNzEsOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0
IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRGltZW5z
aW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgV2ViQ29yZTo6VGltZVJh
bmdlcyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2Uo
Ym9vbCB2YWx1ZSkgb3ZlcnJpZGU7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXh0ZXJuYWxQbGF5
YmFjayhib29sIGVuYWJsZWQsIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTo6RXh0ZXJuYWxQ
bGF5YmFja1RhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGUwZDMzY2I0YmVmN2Y2NWNkNTZkZDEwNmE0OWExYjM3
NzVhNGZiOTMuLjdmM2FlZDFkZjRiZTRiMDlmNWM2NDUzYTFjZTk3OTk5Y2EwMWIxYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbQpAQCAtMTQ1LDYgKzE0NSwxMSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMm
IHRpbQogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpTZXRTZWVrYWJsZVJhbmdlc1ZlY3RvcihXVEY6Om1vdmUocmFuZ2VzVmVjdG9yKSks
IG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIHZhbHVlKQoreworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRDYW5QbGF5RmFzdFJl
dmVyc2UodmFsdWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0QXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFn
ZUlEKCkpOwo=
</data>
<flag name="review"
          id="259751"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235196</attachid>
            <date>2014-07-20 18:42:58 -0700</date>
            <delta_ts>2014-07-20 18:49:31 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-134894-20140720184234.patch</filename>
            <type>text/plain</type>
            <size>19726</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxMTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmNTU1NmI1YjY2ODEx
MTg5N2Y0MGM3YmFhZjAzODQ5ODYwMTQzYi4uYjI5MGRkZDlhOWI2NzFiNmFkZDdkNjg1YzMwYWIy
YzM2MGRlNzMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE0LTA3LTIwICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNhYmxlIGZmL3J3IGJh
c2VkIG9uIGNhblBsYXlGYXN0Rm9yd2FyZCBhbmQgY2FuUGxheUZhc3RSZXdpbmQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4OTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OiBhZGQgc3ltYm9sIGZvciBjYW5QbGF5RmFzdFJldmVyc2UKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOiBBZGQgdHdvIG5ldyBhY2Nlc3NvcnMKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Om5leHRTY2FuUmF0ZSk6IHBvc3NpYmx5IGxpbWl0IHNjYW5SYXRl
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5RmFzdEZvcndhcmQp
OiBhZGRlZAorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheUZhc3RS
ZXZlcnNlKTogYWRkZWQKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDogZGVjbGFy
ZSB0d28gbmV3IG1ldGhvZHMKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHA6IFBsdW1iIHRocm91Z2ggdHdvIG5ldyBhY2Nlc3NvcnMKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjptYXhGYXN0Rm9yd2FyZFJhdGUpOiBhZGRlZAorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6Om1pbkZhc3RSZXZlcnNlUmF0ZSk6IGFkZGVkCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDogRGVjbGFyZSBuZXcgbWV0aG9kcworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOiBBZGRlZCB0d28gbmV3
IG1ldGhvZHMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6
Om1heEZhc3RGb3J3YXJkUmF0ZSk6IGFkZGVkCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U6Om1pbkZhc3RSZXZlcnNlUmF0ZSk6IGFkZGVkCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oOiBtZW1iZXIgdG8gY2FjaGUgZmYvcncgZW5hYmxlZCBzdGF0ZQorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllcik6IG9ic2VydmUgb24gaXRlbSBj
YW5QbGF5RmFzdEZvcndhcmQgY2FuUGxheUZhc3RSZXZlcnNlCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjYW5QbGF5RmFzdEZvcndhcmREaWRD
aGFuZ2UpOiBhZGRlZAorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y2FuUGxheUZhc3RSZXZlcnNlRGlkQ2hhbmdlKTogYWRkZWQKKyAgICAgICAg
KFdlYkNvcmU6Oml0ZW1LVk9Qcm9wZXJ0aWVzKTogb2JzZXJ2ZSBjYW5QbGF5RmFzdEZvcndhcmQg
Y2FuUGxheUZhc3RSZXdpbmQKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKTogZGl0dG8KKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmg6IGFkZCBu
ZXcgbWV0aG9kCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Lmg6IGRpdHRvCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tOiBkaXR0bworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6IFNldCB2YWx1ZSBvbiBXZWJB
VlBsYXllckNvbnRyb2xsZXIuCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBjYW5T
Y2FuQmFja3dhcmRdKTogRGVsZXRlZC4KKyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVy
IGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2NhbkJhY2t3YXJkXSk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50
Lm1tOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZUZvckV2ZW50TmFtZSk6IHVwZGF0ZSBjYW5QbGF5RmFzdFJldmVyc2UuCisKIDIwMTQtMDctMTYg
IEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10g
cmVwbGFjZSBBVlBsYXllckl0ZW0gb24gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTFi
ZjE2ZDliZDFhMDMxMjEzZDA1ZmYyODllYmVhOGU3ZTIxOGE1My4uYWVkNDIwMTNkNTY0M2QzMTAy
YWFjOWEwYWJmM2JkYjAwMGQxZTUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0
LTA3LTIwICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNh
YmxlIGZmL3J3IGJhc2VkIG9uIGNhblBsYXlGYXN0Rm9yd2FyZCBhbmQgY2FuUGxheUZhc3RSZXdp
bmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4
OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
c2V0Q2FuUGxheUZhc3RSZXZlcnNlCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjogZGl0dG8KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg6IGRpdHRvCisgICAgICAgICog
V2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbTogZGl0dG8KKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0Q2FuUGxheUZhc3RSZXZl
cnNlKTogZGl0dG8KKwogMjAxNC0wNy0xNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTc2NjkwOTc+IFJFR1JFU1NJT04gKHIx
NzAxNTUpOiBTYW5kYm94IHZpb2xhdGlvbnMgdXNpbmcgYSB3cm9uZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgppbmRleCA0N2M5YjQ4YjYyODA0NmExODdmODY0YmY1OTRiMDcyOTRlMDUwZGNjLi4yNzhkMWEw
MGJiNmJlMDdkOWZkOWJlMDUzYjkyZTY1NjkyMjY5ZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpA
QCAtMzQ0Miw2ICszNDQyLDcgQEAgX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDE3Y2xlYW51cEZ1bGxzY3JlZW5FdgogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE3c2V0U2Vla2FibGVSYW5nZXNFUktOU18xMFRpbWVSYW5n
ZXNFCiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MThzZXRW
aWRlb0RpbWVuc2lvbnNFYmZmCiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0MTlzZXRFeHRlcm5hbFBsYXliYWNrRWJOU18yN1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZTI2RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGVFTjNXVEY2U3RyaW5nRQorX19aTjdX
ZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDIxc2V0Q2FuUGxheUZhc3RS
ZXZlcnNlRWIKIF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQy
NnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsRVBOU18yM1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
RQogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDI4cmVxdWVz
dEhpZGVBbmRFeGl0RnVsbHNjcmVlbkV2CiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0MjlzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0VSS04zV1RGNlZl
Y3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFeQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNWMwZWRlYTNiNmEzYzQ1MzExYmY3
NTQ2ZTllYTVjNmE0Y2MyZTMxOC4uZGNlYjNkOGVkMjkzZGUyZDY0N2EyZGU3MGI4YWJkYmNiYzI4
MWNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zMTAx
LDYgKzMxMDEsOSBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6bmV4dFNjYW5SYXRlKCkKICAg
ICBkb3VibGUgcmF0ZSA9IHN0ZDo6bWluKFNjYW5NYXhpbXVtUmF0ZSwgZmFicyhwbGF5YmFja1Jh
dGUoKSAqIDIpKTsKICAgICBpZiAobV9zY2FuRGlyZWN0aW9uID09IEJhY2t3YXJkKQogICAgICAg
ICByYXRlICo9IC0xOworI2lmIFBMQVRGT1JNKElPUykKKyAgICByYXRlID0gc3RkOjptaW4oc3Rk
OjptYXgocmF0ZSwgbWluRmFzdFJldmVyc2VSYXRlKCkpLCBtYXhGYXN0Rm9yd2FyZFJhdGUoKSk7
CisjZW5kaWYKICAgICByZXR1cm4gcmF0ZTsKIH0KIApAQCAtNDg1NCw2ICs0ODU3LDE2IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hh
bmdlZEV2ZW50KCkKIH0KICNlbmRpZgogCitkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6bWluRmFz
dFJldmVyc2VSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+
bWluRmFzdFJldmVyc2VSYXRlKCkgOiAwOworfQorCitkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6
bWF4RmFzdEZvcndhcmRSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3Bs
YXllci0+bWF4RmFzdEZvcndhcmRSYXRlKCkgOiAwOworfQorICAgIAogYm9vbCBIVE1MTWVkaWFF
bGVtZW50Ojppc0Z1bGxzY3JlZW4oKSBjb25zdAogewogICAgIGlmIChtX2lzRnVsbHNjcmVlbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZTg0YmI5ZmFkNmE1MjEw
NDAyMmNiMGVkMGE5MmJlOWRlM2ZkMGJkOS4uMDhhMThlNjJmMmM0NjNkMDI1MWFiNmFkZGUwNjdk
Nzc1ZjdmY2E3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTE4
OCw2ICsxODgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZEJ1ZmZlckRhdGEoYm9vbCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBmYXN0U2Vlayhkb3VibGUpOworICAgIGRvdWJsZSBtaW5GYXN0UmV2ZXJzZVJhdGUo
KSBjb25zdDsKKyAgICBkb3VibGUgbWF4RmFzdEZvcndhcmRSYXRlKCkgY29uc3Q7CiAKIC8vIGNh
cHRpb25zCiAgICAgYm9vbCB3ZWJraXRIYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGQw
OGZmYjFiMDU2NzdlZmQxNzYwMDE3NzNmZWJhOGVlOTg1ZjdmMzUuLmMyN2I1OTEzMDQxOTYyYWIy
M2IzNjUzZDQ2MmNjZWJmMjkyMzE4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTg5Myw2ICs4OTMsMTYgQEAgdm9pZCBNZWRp
YVBsYXllcjo6cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkKCkKIH0KICNlbmRpZgog
Citkb3VibGUgTWVkaWFQbGF5ZXI6Om1heEZhc3RGb3J3YXJkUmF0ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+bWF4RmFzdEZvcndhcmRSYXRlKCk7Cit9CisKK2RvdWJsZSBNZWRp
YVBsYXllcjo6bWluRmFzdFJldmVyc2VSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5taW5GYXN0UmV2ZXJzZVJhdGUoKTsKK30KKwogI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVF
Tl9WSURFTykKIGJvb2wgTWVkaWFQbGF5ZXI6OmNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRl
eCBlYTcxZmQ4NDYzM2EyYTBhNzJmZjQxZjdmNzAyNWU0NWUzMTUzZDM3Li5mMjE3NzhlNzMyMzNj
M2NjYmFmYjg1YTRkYjYyNGRlMDgwMGUxZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQ4MCw2ICs0ODAsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhib29sKTsK
ICNlbmRpZgogCisgICAgZG91YmxlIG1pbkZhc3RSZXZlcnNlUmF0ZSgpIGNvbnN0OworICAgIGRv
dWJsZSBtYXhGYXN0Rm9yd2FyZFJhdGUoKSBjb25zdDsKKwogI2lmIFVTRShOQVRJVkVfRlVMTFND
UkVFTl9WSURFTykKICAgICBib29sIGNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0OwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oCmluZGV4IGNjOTEyYWRjYThlM2Q1NjJjODkyNWMyZDY1N2YzOGMzZGRjMGRiMjUu
LmMwMDNkYWM4OWQ5MjM5NWJkNjczZWIwYWNmMTVlNDUwYmI2NWY0N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBA
IC0xMTYsNiArMTE2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNDbG9zZWRDYXB0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9ICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXRD
bG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkgeyB9CiAKKyAgICB2aXJ0dWFsIGRvdWJsZSBtYXhG
YXN0Rm9yd2FyZFJhdGUoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmluZmluaXR5KCk7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBtaW5GYXN0UmV2ZXJzZVJhdGUo
KSBjb25zdCB7IHJldHVybiAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgp
OyB9CisKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlT
dGF0ZSgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGM1YzlhNmMwYjQ0
NWQ1ODhkYjBhMTJhNTU2NzZmYWUzY2U0NDI5MGQuLmNlOTc0NmU3MTJmYzNiYTY2MDIwYjg4NWNi
YjkwMTQwZjU4MGU1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTEwOCw2ICsxMDgsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBtZXRhZGF0YURpZEFycml2ZShSZXRhaW5QdHI8TlNBcnJheT4s
IGRvdWJsZSk7CiAgICAgdm9pZCBmaXJzdEZyYW1lQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpOwog
ICAgIHZvaWQgdHJhY2tFbmFibGVkRGlkQ2hhbmdlKGJvb2wpOworICAgIHZvaWQgY2FuUGxheUZh
c3RSZXZlcnNlRGlkQ2hhbmdlKGJvb2wpOworICAgIHZvaWQgY2FuUGxheUZhc3RGb3J3YXJkRGlk
Q2hhbmdlKGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZEJ1ZmZlckRhdGEoYm9v
bCk7CiAKQEAgLTI2NSw2ICsyNjcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlRGlzYWJs
ZUV4dGVybmFsUGxheWJhY2soKTsKICNlbmRpZgogCisgICAgdmlydHVhbCBkb3VibGUgbWF4RmFz
dEZvcndhcmRSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jYWNoZWRDYW5QbGF5RmFz
dEZvcndhcmQgPyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkgOiAyLjA7
IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBtaW5GYXN0UmV2ZXJzZVJhdGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2NhY2hlZENhblBsYXlGYXN0UmV2ZXJzZSA/IC1zdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OmluZmluaXR5KCkgOiAwLjA7IH0KKwogICAgIFdlYWtQdHJGYWN0b3J5PE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IG1fd2Vha1B0ckZhY3Rvcnk7CiAKICAg
ICBSZXRhaW5QdHI8QVZVUkxBc3NldD4gbV9hdkFzc2V0OwpAQCAtMzM1LDYgKzM0MCw4IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZEJ1ZmZlckRhdGE7CiAgICAgYm9vbCBtX2NhY2hlZElz
UmVhZHlGb3JEaXNwbGF5OwogICAgIGJvb2wgbV9oYXZlQmVlbkFza2VkVG9DcmVhdGVMYXllcjsK
KyAgICBib29sIG1fY2FjaGVkQ2FuUGxheUZhc3RGb3J3YXJkOworICAgIGJvb2wgbV9jYWNoZWRD
YW5QbGF5RmFzdFJldmVyc2U7CiAjaWYgRU5BQkxFKElPU19BSVJQTEFZKQogICAgIG11dGFibGUg
Ym9vbCBtX2FsbG93c1dpcmVsZXNzVmlkZW9QbGF5YmFjazsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KaW5kZXggYWYwMDNkZmZlNzM0ZDFjNmQ3NjgzNzUyYjk5NWU4MWRmNmM5NWU3NS4u
ZGQzMmY3ODY2MTU1NDc2MjA1OTM0MWRjZTUzZWQ3OThjYjVhYWM0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCkBAIC0yNTM4LDYgKzI1MzgsMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpwbGF5YmFja1RhcmdldElzV2lyZWxlc3NEaWRDaGFuZ2UoKQogfQog
I2VuZGlmCiAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2FuUGxh
eUZhc3RGb3J3YXJkRGlkQ2hhbmdlKGJvb2wgbmV3VmFsdWUpCit7CisgICAgbV9jYWNoZWRDYW5Q
bGF5RmFzdEZvcndhcmQgPSBuZXdWYWx1ZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjYW5QbGF5RmFzdFJldmVyc2VEaWRDaGFuZ2UoYm9vbCBuZXdWYWx1
ZSkKK3sKKyAgICBtX2NhY2hlZENhblBsYXlGYXN0UmV2ZXJzZSA9IG5ld1ZhbHVlOworfQorCiBO
U0FycmF5KiBhc3NldE1ldGFkYXRhS2V5TmFtZXMoKQogewogICAgIHN0YXRpYyBOU0FycmF5KiBr
ZXlzOwpAQCAtMjU3MSw2ICsyNTgxLDggQEAgTlNBcnJheSogaXRlbUtWT1Byb3BlcnRpZXMoKQog
ICAgICAgICAgICAgICAgIEAiZHVyYXRpb24iLAogICAgICAgICAgICAgICAgIEAiaGFzRW5hYmxl
ZEF1ZGlvIiwKICAgICAgICAgICAgICAgICBAInRpbWVkTWV0YWRhdGEiLAorICAgICAgICAgICAg
ICAgIEAiY2FuUGxheUZhc3RGb3J3YXJkIiwKKyAgICAgICAgICAgICAgICBAImNhblBsYXlGYXN0
UmV2ZXJzZSIsCiAgICAgICAgICAgICAgICAgbmlsXTsKICAgICB9CiAgICAgcmV0dXJuIGtleXM7
CkBAIC0yNjgwLDcgKzI2OTIsMTAgQEAgTlNBcnJheSogYXNzZXRUcmFja01ldGFkYXRhS2V5TmFt
ZXMoKQogICAgICAgICAgICAgaWYgKENNVElNRV9JU19OVU1FUklDKGl0ZW1UaW1lKSkKICAgICAg
ICAgICAgICAgICBub3cgPSBzdGQ6Om1heChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KENNVGltZUdl
dFNlY29uZHMoaXRlbVRpbWUpKSwgMC4wZik7CiAgICAgICAgICAgICBmdW5jdGlvbiA9IFdURjo6
YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bWV0YWRhdGFEaWRBcnJp
dmUsIG1fY2FsbGJhY2ssIFJldGFpblB0cjxOU0FycmF5PihuZXdWYWx1ZSksIG5vdyk7Ci0gICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJjYW5Q
bGF5RmFzdFJldmVyc2UiXSkKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gV1RGOjpiaW5kKCZNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjYW5QbGF5RmFzdFJldmVyc2VEaWRDaGFu
Z2UsIG1fY2FsbGJhY2ssIFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKKyAgICAgICAgZWxzZSBpZiAo
W2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiY2FuUGxheUZhc3RGb3J3YXJkIl0pCisgICAgICAg
ICAgICBmdW5jdGlvbiA9IFdURjo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y2FuUGxheUZhc3RGb3J3YXJkRGlkQ2hhbmdlLCBtX2NhbGxiYWNrLCBbbmV3VmFsdWUg
Ym9vbFZhbHVlXSk7CiAgICAgfQogCiAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJBVkZv
dW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRQbGF5ZXIgJiYgIXdpbGxDaGFuZ2UpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2UuaAppbmRleCBhYThhYTcwM2U1ZjliNjJhODgzMDFkNDY1MmE2NDVjN2QyZWU3M2Vl
Li4yZGIzYjgyN2M5MGJhOTBmZDExOWE2OGIwODViOTFjZjYxZTljNTdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZS5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0
ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRp
bWVSYW5nZXMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShi
b29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAppbmRleCAxMGYzZDA3NTc5Y2JiNDRjMmE3NmMyYmZl
YTYzY2ExNDUzZmQ4OTc0Li4zMzlmY2FhN2M3MDQyNGI2MDU2ZDk3NDNiY2Q2OGZkOWI4MGZlODUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtODMsNiArODMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNr
UmF0ZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29s
IGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5h
bFBsYXliYWNrVGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IGViYjAxNDFlOWMzZWE0ZGY5Yzhj
ZTNiMGZlYThkMWU5YThmN2U2NmYuLmFmNzNjYzE3YTFiODQ4Y2Q4MmMwNTA3ZWE1NTkxMjFkOGZi
YzJiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTkxLDcgKzkxLDcgQEAg
U09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZUluZGVmaW5pdGUsIENNVGltZSkK
IEBwcm9wZXJ0eShhc3NpZ24pIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBkZWxlZ2F0ZTsKIAog
QHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TY2FuRm9yd2FyZDsKLUBwcm9wZXJ0eSAocmVh
ZG9ubHkpIEJPT0wgY2FuU2NhbkJhY2t3YXJkOworQHByb3BlcnR5IEJPT0wgY2FuU2NhbkJhY2t3
YXJkOwogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrVG9CZWdpbm5pbmc7CiBAcHJv
cGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNlZWtUb0VuZDsKIApAQCAtMzAxLDE2ICszMDEsNiBA
QCBTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZU1lZGlhLCBrQ01UaW1lSW5kZWZpbml0ZSwgQ01UaW1l
KQogICAgIHNlbGYuZGVsZWdhdGUtPmVuZFNjYW5uaW5nKCk7CiB9CiAKLS0gKEJPT0wpY2FuU2Nh
bkJhY2t3YXJkCi17Ci0gICAgcmV0dXJuIFtzZWxmIGNhblBsYXldOwotfQotCi0rIChOU1NldCAq
KWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2NhbkJhY2t3YXJkCi17Ci0gICAgcmV0dXJu
IFtOU1NldCBzZXRXaXRoT2JqZWN0OkAiY2FuUGxheSJdOwotfQotCiAtICh2b2lkKWJlZ2luU2Nh
bm5pbmdCYWNrd2FyZDooaWQpc2VuZGVyCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CkBA
IC02NzgsNiArNjY4LDExIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OnNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSCiAgICAgfSk7CiB9CiAK
K3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2
ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKK3sKKyAgICBwbGF5ZXJDb250cm9sbGVyKCku
Y2FuU2NhbkJhY2t3YXJkID0gY2FuUGxheUZhc3RSZXZlcnNlOworfQorCiBzdGF0aWMgTlNNdXRh
YmxlQXJyYXkgKm1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0
aW9ucykKIHsKICAgICBOU011dGFibGVBcnJheSAqd2ViT3B0aW9ucyA9IFtOU011dGFibGVBcnJh
eSBhcnJheVdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxN
ZWRpYUVsZW1lbnQubW0KaW5kZXggOTA2Zjk4ODc3NjNhMzViMmQ1NzhiMGM4Mjk2ODBhMDFhYjY4
M2ZiNS4uMjY3ZWMyNzA5ZGQ0MDI5NjQ0ZjY0NDA5NWY5YjY2MjE0Y2IxMDJkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVk
aWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5tbQpAQCAtMTA2LDggKzEwNiwxMiBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUoY29u
c3QgV1RGOjpBdG9taWNTdAogICAgIGJvb2wgYWxsID0gZXZlbnROYW1lID09IGV2ZW50TmFtZUFs
bCgpOwogCiAgICAgaWYgKGFsbAotICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygp
LmR1cmF0aW9uY2hhbmdlRXZlbnQpCisgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVz
KCkuZHVyYXRpb25jaGFuZ2VFdmVudCkgewogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZS0+c2V0RHVyYXRpb24obV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCkpOworICAgICAgICAv
LyBUaGVzZSBpcyBubyBzdGFuZGFyZCBldmVudCBmb3IgbWluRmFzdFJldmVyc2VSYXRlQ2hhbmdl
OyBkdXJhdGlvbiBjaGFuZ2UgaXMgYSByZWFzb25hYmxlIHByb3h5IGZvciBpdC4KKyAgICAgICAg
Ly8gSXQgaGFwcGVucyBldmVyeSB0aW1lIGEgbmV3IGl0ZW0gYmVjb21lcyByZWFkeSB0byBwbGF5
LgorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0Q2FuUGxheUZhc3RSZXZl
cnNlKG1fbWVkaWFFbGVtZW50LT5taW5GYXN0UmV2ZXJzZVJhdGUoKSA8IDAuMCk7CisgICAgfQog
CiAgICAgaWYgKGFsbAogICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnBhdXNl
RXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
NmFmYTQ4MWM4ODQwMDhiYzZlYWQ5ODU4ODk0ZDc2MTFmOTY5MzNiZS4uMjcxMWMwNjYzYWQyNzAz
YzAzODljMTRjM2JhNzZjOGJlNmYxNzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkubWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDcgQEAgbWVzc2FnZXMgLT4gV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5IHsKICAgICBTZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVu
dFRpbWUsIGRvdWJsZSBob3N0VGltZSkKICAgICBTZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNW
aWRlbywgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKICAgICBTZXRTZWVrYWJsZVJh
bmdlc1ZlY3RvcihWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzKTsKKyAg
ICBTZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCB2YWx1ZSk7CiAgICAgU2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnMoVmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCk7CiAgICAgU2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhWZWN0b3I8U3RyaW5n
PiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKICAgICBTZXRFeHRlcm5hbFBsYXli
YWNrUHJvcGVydGllcyhib29sIGVuYWJsZWQsIHVpbnQzMl90IHRhcmdldFR5cGUsIFN0cmluZyBs
b2NhbGl6ZWREZXZpY2VOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCBlYmM5ZGI5N2Y2ZWUx
NTM2OTE4MDkwMmVlM2RiNjBmY2FmNjBhYWYzLi5kMDFkMmZiNWE4MTdhNmMzMmE0NjBkMGE3NWI3
NGMyNDk0OGY1NDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC03MSw2ICs3MSw4IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxh
eWJhY2tSYXRlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25z
KGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2Vz
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29s
IHZhbHVlKSBvdmVycmlkZTsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0
ZWRJbmRleCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVj
dGVkSW5kZXgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNr
KGJvb2wgZW5hYmxlZCwgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXli
YWNrVGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0KaW5kZXggZTBkMzNjYjRiZWY3ZjY1Y2Q1NmRkMTA2YTQ5YTFiMzc3NWE0
ZmI5My4uN2YzYWVkMWRmNGJlNGIwOWY1YzY0NTNhMWNlOTc5OTljYTAxYjFiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tCkBAIC0xNDUsNiArMTQ1LDExIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgdGlt
CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKFdURjo6bW92ZShyYW5nZXNWZWN0b3IpKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CiB9CiAKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0
Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgdmFsdWUpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldENhblBsYXlGYXN0UmV2ZXJz
ZSh2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQo
KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235197</attachid>
            <date>2014-07-20 18:48:36 -0700</date>
            <delta_ts>2014-07-20 20:08:44 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-134894-20140720184812.patch</filename>
            <type>text/plain</type>
            <size>19720</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxMTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmNTU1NmI1YjY2ODEx
MTg5N2Y0MGM3YmFhZjAzODQ5ODYwMTQzYi4uM2M0OGZjZjBmYzM2ZDUxMzNmOWViY2NlNTc4MWI3
MTRjYzYyMGIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE0LTA3LTIwICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNhYmxlIGZmL3J3IGJh
c2VkIG9uIGNhblBsYXlGYXN0Rm9yd2FyZCBhbmQgY2FuUGxheUZhc3RSZXdpbmQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4OTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBh
ZGQgc3ltYm9sIGZvciBjYW5QbGF5RmFzdFJldmVyc2UKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOiBBZGQgdHdvIG5ldyBhY2Nlc3NvcnMKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om5leHRTY2FuUmF0ZSk6IHBvc3NpYmx5IGxpbWl0IHNjYW5SYXRlCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5RmFzdEZvcndhcmQpOiBh
ZGRlZAorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheUZhc3RSZXZl
cnNlKTogYWRkZWQKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDogZGVjbGFyZSB0
d28gbmV3IG1ldGhvZHMKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHA6IFBsdW1iIHRocm91Z2ggdHdvIG5ldyBhY2Nlc3NvcnMKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjptYXhGYXN0Rm9yd2FyZFJhdGUpOiBhZGRlZAorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6Om1pbkZhc3RSZXZlcnNlUmF0ZSk6IGFkZGVkCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDogRGVjbGFyZSBuZXcgbWV0aG9kcworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOiBBZGRlZCB0d28gbmV3IG1l
dGhvZHMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6Om1h
eEZhc3RGb3J3YXJkUmF0ZSk6IGFkZGVkCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U6Om1pbkZhc3RSZXZlcnNlUmF0ZSk6IGFkZGVkCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oOiBtZW1iZXIgdG8gY2FjaGUgZmYvcncgZW5hYmxlZCBzdGF0ZQorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllcik6IG9ic2VydmUgb24gaXRlbSBjYW5Q
bGF5RmFzdEZvcndhcmQgY2FuUGxheUZhc3RSZXZlcnNlCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjYW5QbGF5RmFzdEZvcndhcmREaWRDaGFu
Z2UpOiBhZGRlZAorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y2FuUGxheUZhc3RSZXZlcnNlRGlkQ2hhbmdlKTogYWRkZWQKKyAgICAgICAgKFdl
YkNvcmU6Oml0ZW1LVk9Qcm9wZXJ0aWVzKTogb2JzZXJ2ZSBjYW5QbGF5RmFzdEZvcndhcmQgY2Fu
UGxheUZhc3RSZXdpbmQKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgb2JzZXJ2
ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKTogZGl0dG8KKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmg6IGFkZCBuZXcg
bWV0aG9kCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lmg6IGRpdHRvCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tOiBkaXR0bworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6IFNldCB2YWx1ZSBvbiBXZWJBVlBs
YXllckNvbnRyb2xsZXIuCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBjYW5TY2Fu
QmFja3dhcmRdKTogRGVsZXRlZC4KKyAgICAgICAgKCtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGtl
eVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2NhbkJhY2t3YXJkXSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Lm1t
OgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUZv
ckV2ZW50TmFtZSk6IHVwZGF0ZSBjYW5QbGF5RmFzdFJldmVyc2UuCisKIDIwMTQtMDctMTYgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gcmVw
bGFjZSBBVlBsYXllckl0ZW0gb24gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTFiZjE2
ZDliZDFhMDMxMjEzZDA1ZmYyODllYmVhOGU3ZTIxOGE1My4uNDBlMmNhOGEzYzhkMmVmZTNiYWI0
Yzc1Y2Y2ODMzYzVmMjlmNzVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA3
LTIwICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNhYmxl
IGZmL3J3IGJhc2VkIG9uIGNhblBsYXlGYXN0Rm9yd2FyZCBhbmQgY2FuUGxheUZhc3RSZXdpbmQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4OTQK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgc2V0Q2Fu
UGxheUZhc3RSZXZlcnNlCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjogZGl0dG8KKyAgICAgICAgKiBXZWJQcm9jZXNz
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg6IGRpdHRvCisgICAgICAgICogV2ViUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbTogZGl0dG8KKyAgICAgICAgKFdl
YktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKTog
ZGl0dG8KKwogMjAxNC0wNy0xNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTc2NjkwOTc+IFJFR1JFU1NJT04gKHIxNzAxNTUp
OiBTYW5kYm94IHZpb2xhdGlvbnMgdXNpbmcgYSB3cm9uZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRl
eCA0N2M5YjQ4YjYyODA0NmExODdmODY0YmY1OTRiMDcyOTRlMDUwZGNjLi4yNzhkMWEwMGJiNmJl
MDdkOWZkOWJlMDUzYjkyZTY1NjkyMjY5ZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzQ0
Miw2ICszNDQyLDcgQEAgX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDE3Y2xlYW51cEZ1bGxzY3JlZW5FdgogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDE3c2V0U2Vla2FibGVSYW5nZXNFUktOU18xMFRpbWVSYW5nZXNFCiBf
X1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MThzZXRWaWRlb0Rp
bWVuc2lvbnNFYmZmCiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0MTlzZXRFeHRlcm5hbFBsYXliYWNrRWJOU18yN1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZTI2RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGVFTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3Jl
MzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDIxc2V0Q2FuUGxheUZhc3RSZXZlcnNl
RWIKIF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQyNnNldFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsRVBOU18yM1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsRQogX19a
TjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDI4cmVxdWVzdEhpZGVB
bmRFeGl0RnVsbHNjcmVlbkV2CiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0MjlzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0VSS04zV1RGNlZlY3RvcklO
UzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNWMwZWRlYTNiNmEzYzQ1MzExYmY3NTQ2ZTll
YTVjNmE0Y2MyZTMxOC4uZGNlYjNkOGVkMjkzZGUyZDY0N2EyZGU3MGI4YWJkYmNiYzI4MWNjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zMTAxLDYgKzMx
MDEsOSBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6bmV4dFNjYW5SYXRlKCkKICAgICBkb3Vi
bGUgcmF0ZSA9IHN0ZDo6bWluKFNjYW5NYXhpbXVtUmF0ZSwgZmFicyhwbGF5YmFja1JhdGUoKSAq
IDIpKTsKICAgICBpZiAobV9zY2FuRGlyZWN0aW9uID09IEJhY2t3YXJkKQogICAgICAgICByYXRl
ICo9IC0xOworI2lmIFBMQVRGT1JNKElPUykKKyAgICByYXRlID0gc3RkOjptaW4oc3RkOjptYXgo
cmF0ZSwgbWluRmFzdFJldmVyc2VSYXRlKCkpLCBtYXhGYXN0Rm9yd2FyZFJhdGUoKSk7CisjZW5k
aWYKICAgICByZXR1cm4gcmF0ZTsKIH0KIApAQCAtNDg1NCw2ICs0ODU3LDE2IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2
ZW50KCkKIH0KICNlbmRpZgogCitkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6bWluRmFzdFJldmVy
c2VSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+bWluRmFz
dFJldmVyc2VSYXRlKCkgOiAwOworfQorCitkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6bWF4RmFz
dEZvcndhcmRSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+
bWF4RmFzdEZvcndhcmRSYXRlKCkgOiAwOworfQorICAgIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50
Ojppc0Z1bGxzY3JlZW4oKSBjb25zdAogewogICAgIGlmIChtX2lzRnVsbHNjcmVlbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZTg0YmI5ZmFkNmE1MjEwNDAyMmNi
MGVkMGE5MmJlOWRlM2ZkMGJkOS4uMDhhMThlNjJmMmM0NjNkMDI1MWFiNmFkZGUwNjdkNzc1Zjdm
Y2E3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTE4OCw2ICsx
ODgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHNldFNob3VsZEJ1ZmZlckRhdGEoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBmYXN0U2Vlayhkb3VibGUpOworICAgIGRvdWJsZSBtaW5GYXN0UmV2ZXJzZVJhdGUoKSBjb25z
dDsKKyAgICBkb3VibGUgbWF4RmFzdEZvcndhcmRSYXRlKCkgY29uc3Q7CiAKIC8vIGNhcHRpb25z
CiAgICAgYm9vbCB3ZWJraXRIYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGQwOGZmYjFi
MDU2NzdlZmQxNzYwMDE3NzNmZWJhOGVlOTg1ZjdmMzUuLmMyN2I1OTEzMDQxOTYyYWIyM2IzNjUz
ZDQ2MmNjZWJmMjkyMzE4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTg5Myw2ICs4OTMsMTYgQEAgdm9pZCBNZWRpYVBsYXll
cjo6cGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkKCkKIH0KICNlbmRpZgogCitkb3Vi
bGUgTWVkaWFQbGF5ZXI6Om1heEZhc3RGb3J3YXJkUmF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+bWF4RmFzdEZvcndhcmRSYXRlKCk7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXll
cjo6bWluRmFzdFJldmVyc2VSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5t
aW5GYXN0UmV2ZXJzZVJhdGUoKTsKK30KKwogI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURF
TykKIGJvb2wgTWVkaWFQbGF5ZXI6OmNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0CiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBlYTcx
ZmQ4NDYzM2EyYTBhNzJmZjQxZjdmNzAyNWU0NWUzMTUzZDM3Li5mMjE3NzhlNzMyMzNjM2NjYmFm
Yjg1YTRkYjYyNGRlMDgwMGUxZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQ4MCw2ICs0ODAsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhib29sKTsKICNlbmRp
ZgogCisgICAgZG91YmxlIG1pbkZhc3RSZXZlcnNlUmF0ZSgpIGNvbnN0OworICAgIGRvdWJsZSBt
YXhGYXN0Rm9yd2FyZFJhdGUoKSBjb25zdDsKKwogI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9W
SURFTykKICAgICBib29sIGNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0OwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCmluZGV4IGNjOTEyYWRjYThlM2Q1NjJjODkyNWMyZDY1N2YzOGMzZGRjMGRiMjUuLmMwMDNk
YWM4OWQ5MjM5NWJkNjczZWIwYWNmMTVlNDUwYmI2NWY0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xMTYs
NiArMTE2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9ICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXRDbG9zZWRD
YXB0aW9uc1Zpc2libGUoYm9vbCkgeyB9CiAKKyAgICB2aXJ0dWFsIGRvdWJsZSBtYXhGYXN0Rm9y
d2FyZFJhdGUoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omlu
ZmluaXR5KCk7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBtaW5GYXN0UmV2ZXJzZVJhdGUoKSBjb25z
dCB7IHJldHVybiAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOyB9CisK
ICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgp
IGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGM1YzlhNmMwYjQ0NWQ1ODhk
YjBhMTJhNTU2NzZmYWUzY2U0NDI5MGQuLmNlOTc0NmU3MTJmYzNiYTY2MDIwYjg4NWNiYjkwMTQw
ZjU4MGU1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTEwOCw2ICsxMDgsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBtZXRhZGF0YURpZEFycml2ZShSZXRhaW5QdHI8TlNBcnJheT4sIGRvdWJs
ZSk7CiAgICAgdm9pZCBmaXJzdEZyYW1lQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpOwogICAgIHZv
aWQgdHJhY2tFbmFibGVkRGlkQ2hhbmdlKGJvb2wpOworICAgIHZvaWQgY2FuUGxheUZhc3RSZXZl
cnNlRGlkQ2hhbmdlKGJvb2wpOworICAgIHZvaWQgY2FuUGxheUZhc3RGb3J3YXJkRGlkQ2hhbmdl
KGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZEJ1ZmZlckRhdGEoYm9vbCk7CiAK
QEAgLTI2NSw2ICsyNjcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlRGlzYWJsZUV4dGVy
bmFsUGxheWJhY2soKTsKICNlbmRpZgogCisgICAgdmlydHVhbCBkb3VibGUgbWF4RmFzdEZvcndh
cmRSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jYWNoZWRDYW5QbGF5RmFzdEZvcndh
cmQgPyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkgOiAyLjA7IH0KKyAg
ICB2aXJ0dWFsIGRvdWJsZSBtaW5GYXN0UmV2ZXJzZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2NhY2hlZENhblBsYXlGYXN0UmV2ZXJzZSA/IC1zdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OmluZmluaXR5KCkgOiAwLjA7IH0KKwogICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IG1fd2Vha1B0ckZhY3Rvcnk7CiAKICAgICBSZXRh
aW5QdHI8QVZVUkxBc3NldD4gbV9hdkFzc2V0OwpAQCAtMzM1LDYgKzM0MCw4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3Nob3VsZEJ1ZmZlckRhdGE7CiAgICAgYm9vbCBtX2NhY2hlZElzUmVhZHlG
b3JEaXNwbGF5OwogICAgIGJvb2wgbV9oYXZlQmVlbkFza2VkVG9DcmVhdGVMYXllcjsKKyAgICBi
b29sIG1fY2FjaGVkQ2FuUGxheUZhc3RGb3J3YXJkOworICAgIGJvb2wgbV9jYWNoZWRDYW5QbGF5
RmFzdFJldmVyc2U7CiAjaWYgRU5BQkxFKElPU19BSVJQTEFZKQogICAgIG11dGFibGUgYm9vbCBt
X2FsbG93c1dpcmVsZXNzVmlkZW9QbGF5YmFjazsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KaW5kZXggYWYwMDNkZmZlNzM0ZDFjNmQ3NjgzNzUyYjk5NWU4MWRmNmM5NWU3NS4uZGQzMmY3
ODY2MTU1NDc2MjA1OTM0MWRjZTUzZWQ3OThjYjVhYWM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCkBAIC0yNTM4LDYgKzI1MzgsMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpwbGF5YmFja1RhcmdldElzV2lyZWxlc3NEaWRDaGFuZ2UoKQogfQogI2VuZGlm
CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2FuUGxheUZhc3RG
b3J3YXJkRGlkQ2hhbmdlKGJvb2wgbmV3VmFsdWUpCit7CisgICAgbV9jYWNoZWRDYW5QbGF5RmFz
dEZvcndhcmQgPSBuZXdWYWx1ZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpjYW5QbGF5RmFzdFJldmVyc2VEaWRDaGFuZ2UoYm9vbCBuZXdWYWx1ZSkKK3sK
KyAgICBtX2NhY2hlZENhblBsYXlGYXN0UmV2ZXJzZSA9IG5ld1ZhbHVlOworfQorCiBOU0FycmF5
KiBhc3NldE1ldGFkYXRhS2V5TmFtZXMoKQogewogICAgIHN0YXRpYyBOU0FycmF5KiBrZXlzOwpA
QCAtMjU3MSw2ICsyNTgxLDggQEAgTlNBcnJheSogaXRlbUtWT1Byb3BlcnRpZXMoKQogICAgICAg
ICAgICAgICAgIEAiZHVyYXRpb24iLAogICAgICAgICAgICAgICAgIEAiaGFzRW5hYmxlZEF1ZGlv
IiwKICAgICAgICAgICAgICAgICBAInRpbWVkTWV0YWRhdGEiLAorICAgICAgICAgICAgICAgIEAi
Y2FuUGxheUZhc3RGb3J3YXJkIiwKKyAgICAgICAgICAgICAgICBAImNhblBsYXlGYXN0UmV2ZXJz
ZSIsCiAgICAgICAgICAgICAgICAgbmlsXTsKICAgICB9CiAgICAgcmV0dXJuIGtleXM7CkBAIC0y
NjgwLDcgKzI2OTIsMTAgQEAgTlNBcnJheSogYXNzZXRUcmFja01ldGFkYXRhS2V5TmFtZXMoKQog
ICAgICAgICAgICAgaWYgKENNVElNRV9JU19OVU1FUklDKGl0ZW1UaW1lKSkKICAgICAgICAgICAg
ICAgICBub3cgPSBzdGQ6Om1heChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KENNVGltZUdldFNlY29u
ZHMoaXRlbVRpbWUpKSwgMC4wZik7CiAgICAgICAgICAgICBmdW5jdGlvbiA9IFdURjo6YmluZCgm
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bWV0YWRhdGFEaWRBcnJpdmUsIG1f
Y2FsbGJhY2ssIFJldGFpblB0cjxOU0FycmF5PihuZXdWYWx1ZSksIG5vdyk7Ci0gICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJjYW5QbGF5RmFz
dFJldmVyc2UiXSkKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gV1RGOjpiaW5kKCZNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjYW5QbGF5RmFzdFJldmVyc2VEaWRDaGFuZ2UsIG1f
Y2FsbGJhY2ssIFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKKyAgICAgICAgZWxzZSBpZiAoW2tleVBh
dGggaXNFcXVhbFRvU3RyaW5nOkAiY2FuUGxheUZhc3RGb3J3YXJkIl0pCisgICAgICAgICAgICBm
dW5jdGlvbiA9IFdURjo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y2FuUGxheUZhc3RGb3J3YXJkRGlkQ2hhbmdlLCBtX2NhbGxiYWNrLCBbbmV3VmFsdWUgYm9vbFZh
bHVlXSk7CiAgICAgfQogCiAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJBVkZvdW5kYXRp
b25PYnNlcnZhdGlvbkNvbnRleHRQbGF5ZXIgJiYgIXdpbGxDaGFuZ2UpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2UuaAppbmRleCBhYThhYTcwM2U1ZjliNjJhODgzMDFkNDY1MmE2NDVjN2QyZWU3M2VlLi4yZGIz
YjgyN2M5MGJhOTBmZDExOWE2OGIwODViOTFjZjYxZTljNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5o
CkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShib29s
IGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5n
ZXMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxh
eWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQuaAppbmRleCAxMGYzZDA3NTc5Y2JiNDRjMmE3NmMyYmZlYTYzY2Ex
NDUzZmQ4OTc0Li4zMzlmY2FhN2M3MDQyNGI2MDU2ZDk3NDNiY2Q2OGZkOWI4MGZlODUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtODMsNiArODMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1Zp
ZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXli
YWNrVGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IGViYjAxNDFlOWMzZWE0ZGY5YzhjZTNiMGZl
YThkMWU5YThmN2U2NmYuLmFmNzNjYzE3YTFiODQ4Y2Q4MmMwNTA3ZWE1NTkxMjFkOGZiYzJiM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTkxLDcgKzkxLDcgQEAgU09GVF9M
SU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZUluZGVmaW5pdGUsIENNVGltZSkKIEBwcm9w
ZXJ0eShhc3NpZ24pIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBkZWxlZ2F0ZTsKIAogQHByb3Bl
cnR5IChyZWFkb25seSkgQk9PTCBjYW5TY2FuRm9yd2FyZDsKLUBwcm9wZXJ0eSAocmVhZG9ubHkp
IEJPT0wgY2FuU2NhbkJhY2t3YXJkOworQHByb3BlcnR5IEJPT0wgY2FuU2NhbkJhY2t3YXJkOwog
QHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrVG9CZWdpbm5pbmc7CiBAcHJvcGVydHkg
KHJlYWRvbmx5KSBCT09MIGNhblNlZWtUb0VuZDsKIApAQCAtMzAxLDE2ICszMDEsNiBAQCBTT0ZU
X0xJTktfQ09OU1RBTlQoQ29yZU1lZGlhLCBrQ01UaW1lSW5kZWZpbml0ZSwgQ01UaW1lKQogICAg
IHNlbGYuZGVsZWdhdGUtPmVuZFNjYW5uaW5nKCk7CiB9CiAKLS0gKEJPT0wpY2FuU2NhbkJhY2t3
YXJkCi17Ci0gICAgcmV0dXJuIFtzZWxmIGNhblBsYXldOwotfQotCi0rIChOU1NldCAqKWtleVBh
dGhzRm9yVmFsdWVzQWZmZWN0aW5nQ2FuU2NhbkJhY2t3YXJkCi17Ci0gICAgcmV0dXJuIFtOU1Nl
dCBzZXRXaXRoT2JqZWN0OkAiY2FuUGxheSJdOwotfQotCiAtICh2b2lkKWJlZ2luU2Nhbm5pbmdC
YWNrd2FyZDooaWQpc2VuZGVyCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CkBAIC02Nzgs
NiArNjY4LDExIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFNl
ZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSCiAgICAgfSk7CiB9CiAKK3ZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShi
b29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKK3sKKyAgICBwbGF5ZXJDb250cm9sbGVyKCkuY2FuU2Nh
bkJhY2t3YXJkID0gY2FuUGxheUZhc3RSZXZlcnNlOworfQorCiBzdGF0aWMgTlNNdXRhYmxlQXJy
YXkgKm1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucykK
IHsKICAgICBOU011dGFibGVBcnJheSAqd2ViT3B0aW9ucyA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVs
ZW1lbnQubW0KaW5kZXggOTA2Zjk4ODc3NjNhMzViMmQ1NzhiMGM4Mjk2ODBhMDFhYjY4M2ZiNS4u
MjY3ZWMyNzA5ZGQ0MDI5NjQ0ZjY0NDA5NWY5YjY2MjE0Y2IxMDJkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVt
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbE1lZGlhRWxlbWVudC5tbQpAQCAtMTA2LDggKzEwNiwxMiBAQCB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RG
OjpBdG9taWNTdAogICAgIGJvb2wgYWxsID0gZXZlbnROYW1lID09IGV2ZW50TmFtZUFsbCgpOwog
CiAgICAgaWYgKGFsbAotICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLmR1cmF0
aW9uY2hhbmdlRXZlbnQpCisgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkuZHVy
YXRpb25jaGFuZ2VFdmVudCkgewogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+
c2V0RHVyYXRpb24obV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCkpOworICAgICAgICAvLyBUaGVz
ZSBpcyBubyBzdGFuZGFyZCBldmVudCBmb3IgbWluRmFzdFJldmVyc2VSYXRlQ2hhbmdlOyBkdXJh
dGlvbiBjaGFuZ2UgaXMgYSByZWFzb25hYmxlIHByb3h5IGZvciBpdC4KKyAgICAgICAgLy8gSXQg
aGFwcGVucyBldmVyeSB0aW1lIGEgbmV3IGl0ZW0gYmVjb21lcyByZWFkeSB0byBwbGF5LgorICAg
ICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKG1f
bWVkaWFFbGVtZW50LT5taW5GYXN0UmV2ZXJzZVJhdGUoKSA8IDAuMCk7CisgICAgfQogCiAgICAg
aWYgKGFsbAogICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnBhdXNlRXZlbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNmFmYTQ4
MWM4ODQwMDhiYzZlYWQ5ODU4ODk0ZDc2MTFmOTY5MzNiZS4uMjcxMWMwNjYzYWQyNzAzYzAzODlj
MTRjM2JhNzZjOGJlNmYxNzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDcgQEAgbWVzc2FnZXMgLT4gV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5IHsKICAgICBTZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUs
IGRvdWJsZSBob3N0VGltZSkKICAgICBTZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywg
dW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKICAgICBTZXRTZWVrYWJsZVJhbmdlc1Zl
Y3RvcihWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzKTsKKyAgICBTZXRD
YW5QbGF5RmFzdFJldmVyc2UoYm9vbCB2YWx1ZSk7CiAgICAgU2V0QXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbnMoVmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7
CiAgICAgU2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhWZWN0b3I8U3RyaW5nPiBvcHRp
b25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKICAgICBTZXRFeHRlcm5hbFBsYXliYWNrUHJv
cGVydGllcyhib29sIGVuYWJsZWQsIHVpbnQzMl90IHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6
ZWREZXZpY2VOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCBlYmM5ZGI5N2Y2ZWUxNTM2OTE4
MDkwMmVlM2RiNjBmY2FmNjBhYWYzLi5kMDFkMmZiNWE4MTdhNmMzMmE0NjBkMGE3NWI3NGMyNDk0
OGY1NDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC03MSw2ICs3MSw4IEBAIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tS
YXRlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wg
aGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIHZhbHVl
KSBvdmVycmlkZTsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5k
ZXgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wg
ZW5hYmxlZCwgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFy
Z2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KaW5kZXggZTBkMzNjYjRiZWY3ZjY1Y2Q1NmRkMTA2YTQ5YTFiMzc3NWE0ZmI5My4u
N2YzYWVkMWRmNGJlNGIwOWY1YzY0NTNhMWNlOTc5OTljYTAxYjFiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tCkBAIC0xNDUsNiArMTQ1LDExIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgdGltCiAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNl
dFNlZWthYmxlUmFuZ2VzVmVjdG9yKFdURjo6bW92ZShyYW5nZXNWZWN0b3IpKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CiB9CiAKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0Q2FuUGxh
eUZhc3RSZXZlcnNlKGJvb2wgdmFsdWUpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldENhblBsYXlGYXN0UmV2ZXJzZSh2YWx1
ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>