<?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>167214</bug_id>
          
          <creation_ts>2017-01-19 14:14:20 -0800</creation_ts>
          <short_desc>Record whether a media element was prevented from playing without user interaction</short_desc>
          <delta_ts>2017-01-20 18:32:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Matt Rajca">mrajca</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1268184</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2017-01-19 14:14:20 -0800</bug_when>
    <thetext>This state will be used to notify clients when a user explicitly starts playback of a media element that was prevented from autoplaying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268185</commentid>
    <comment_count>1</comment_count>
      <attachid>299269</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2017-01-19 14:18:18 -0800</bug_when>
    <thetext>Created attachment 299269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268239</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-19 16:29:37 -0800</bug_when>
    <thetext>Attachment 299269 did not pass style-queue:


ERROR: Source/WebCore/html/HTMLMediaElement.cpp:3169:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268451</commentid>
    <comment_count>3</comment_count>
      <attachid>299269</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-01-20 10:05:45 -0800</bug_when>
    <thetext>Comment on attachment 299269
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3106
&gt; +    bool preventedPlaybackWithoutUserGesture = false;
&gt; +    if (!m_mediaSession-&gt;playbackPermitted(*this, &amp;preventedPlaybackWithoutUserGesture)) {
&gt; +        if (preventedPlaybackWithoutUserGesture)
&gt; +            m_preventedFromPlayingWithoutUserGesture = true;
&gt;          return;
&gt; +    }

When is m_preventedFromPlayingWithoutUserGesture ever reset to false?

&gt; Source/WebCore/html/HTMLMediaElement.h:719
&gt; -    bool canTransitionFromAutoplayToPlay() const;
&gt; +    bool canTransitionFromAutoplayToPlay(bool* preventedPlaybackWithoutUserGesture) const;

This and ...

&gt; Source/WebCore/html/MediaElementSession.h:55
&gt; -    bool playbackPermitted(const HTMLMediaElement&amp;) const;
&gt; +    bool playbackPermitted(const HTMLMediaElement&amp;, bool* preventedPlaybackWithoutUserGesture) const;

This.

I don&apos;t like this &quot;out boolean pointer parameter&quot; change.  We should some other way of representing failure, on the order of &quot;ExceptionOr&lt;&gt;&quot;.  For example, something like:

enum class PlaybackDenialReason {
    UserGestureRequired,
    PageConsentRequired,
    FullscreenRequired,
};
template &lt;typename T&gt;
class SuccessOr : public optional&lt;T&gt; {
public:
    explicit constexpr operator bool() const { return !optional::operator bool(); }
};

And have these methods return SuccessOr&lt;PlaybackDenialReason&gt;.  I.e.:

    SuccessOr&lt;PlaybackDenialReason&gt; playbackPermitted(const HTMLMediaElement&amp;) const;

So the call sites can remain exactly the same:

    if (!playbackPermitted(m_element)) { ... }

And in the places we care about why playback was denied, we can look at the return value:

    auto success = canTransitionFromAutoplayToPlay(&amp;preventedPlaybackWithoutUserGesture));
    if (success) { ... } else {
        m_preventedFromPlayingWithoutUserGesture = success.value() == PlaybackDenialReason:: UserGestureRequired;
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268554</commentid>
    <comment_count>4</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2017-01-20 13:59:13 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 299269 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=299269&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:3106
&gt; &gt; +    bool preventedPlaybackWithoutUserGesture = false;
&gt; &gt; +    if (!m_mediaSession-&gt;playbackPermitted(*this, &amp;preventedPlaybackWithoutUserGesture)) {
&gt; &gt; +        if (preventedPlaybackWithoutUserGesture)
&gt; &gt; +            m_preventedFromPlayingWithoutUserGesture = true;
&gt; &gt;          return;
&gt; &gt; +    }
&gt; 
&gt; When is m_preventedFromPlayingWithoutUserGesture ever reset to false?

It will get reset when the user starts playing media again with a user gesture. There&apos;s currently a FIXME in that code path but I&apos;ll make it part of this patch.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:719
&gt; &gt; -    bool canTransitionFromAutoplayToPlay() const;
&gt; &gt; +    bool canTransitionFromAutoplayToPlay(bool* preventedPlaybackWithoutUserGesture) const;
&gt; 
&gt; This and ...
&gt; 
&gt; &gt; Source/WebCore/html/MediaElementSession.h:55
&gt; &gt; -    bool playbackPermitted(const HTMLMediaElement&amp;) const;
&gt; &gt; +    bool playbackPermitted(const HTMLMediaElement&amp;, bool* preventedPlaybackWithoutUserGesture) const;
&gt; 
&gt; This.
&gt; 
&gt; I don&apos;t like this &quot;out boolean pointer parameter&quot; change.  We should some
&gt; other way of representing failure, on the order of &quot;ExceptionOr&lt;&gt;&quot;.  For
&gt; example, something like:
&gt; 
&gt; enum class PlaybackDenialReason {
&gt;     UserGestureRequired,
&gt;     PageConsentRequired,
&gt;     FullscreenRequired,
&gt; };
&gt; template &lt;typename T&gt;
&gt; class SuccessOr : public optional&lt;T&gt; {
&gt; public:
&gt;     explicit constexpr operator bool() const { return !optional::operator
&gt; bool(); }
&gt; };
&gt; 
&gt; And have these methods return SuccessOr&lt;PlaybackDenialReason&gt;.  I.e.:
&gt; 
&gt;     SuccessOr&lt;PlaybackDenialReason&gt; playbackPermitted(const
&gt; HTMLMediaElement&amp;) const;
&gt; 
&gt; So the call sites can remain exactly the same:
&gt; 
&gt;     if (!playbackPermitted(m_element)) { ... }
&gt; 
&gt; And in the places we care about why playback was denied, we can look at the
&gt; return value:
&gt; 
&gt;     auto success =
&gt; canTransitionFromAutoplayToPlay(&amp;preventedPlaybackWithoutUserGesture));
&gt;     if (success) { ... } else {
&gt;         m_preventedFromPlayingWithoutUserGesture = success.value() ==
&gt; PlaybackDenialReason:: UserGestureRequired;
&gt;     }

Thanks for the suggestion - that would make the call sites cleaner. Working on a v2 of the patch now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268627</commentid>
    <comment_count>5</comment_count>
      <attachid>299398</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2017-01-20 15:55:11 -0800</bug_when>
    <thetext>Created attachment 299398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268629</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-20 15:56:34 -0800</bug_when>
    <thetext>Attachment 299398 did not pass style-queue:


ERROR: Source/WebCore/dom/SuccessOr.h:35:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/SuccessOr.h:36:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/HTMLMediaElement.cpp:2259:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/HTMLMediaElement.cpp:2260:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/HTMLMediaElement.cpp:2261:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/HTMLMediaElement.cpp:2262:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/HTMLMediaElement.cpp:2263:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 7 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268696</commentid>
    <comment_count>7</comment_count>
      <attachid>299398</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-20 18:32:46 -0800</bug_when>
    <thetext>Comment on attachment 299398
Patch

Clearing flags on attachment: 299398

Committed r211008: &lt;http://trac.webkit.org/changeset/211008&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268697</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-20 18:32:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299269</attachid>
            <date>2017-01-19 14:18:18 -0800</date>
            <delta_ts>2017-01-20 15:55:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167214-20170119141626.patch</filename>
            <type>text/plain</type>
            <size>12546</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ0YWM3YjY1MTQ3NTgw
Njc1MjcwOTdmYWE3NTVjZWZkZWY2YjZkMy4uZmRkN2Y3YWI0MTI4NzM2NWMxZDdkMmY0YzQxMzNi
Yzc2MGJhZGE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTAxLTE5ICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWNvcmQgd2hldGhlciBhIG1l
ZGlhIGVsZW1lbnQgd2FzIHByZXZlbnRlZCBmcm9tIHBsYXlpbmcgd2l0aG91dCB1c2VyIGludGVy
YWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjcyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHN0YXRlIHdpbGwgYmUgdXNlZCB0byBub3RpZnkgY2xpZW50cyB3aGVuIGEgdXNlciBleHBs
aWNpdGx5IHN0YXJ0cyBwbGF5YmFjaworICAgICAgICBvZiBhIG1lZGlhIGVsZW1lbnQgdGhhdCB3
YXMgcHJldmVudGVkIGZyb20gYXV0b3BsYXlpbmcuCisKKyAgICAgICAgVGVzdHMgd2lsbCBiZSBh
ZGRlZCBhZnRlciBhIFdlYktpdCBjYWxsYmFjayBBUEkgaXMgYWRkZWQuCisKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OnVzZXJHZXN0dXJlUmVxdWlyZWQpOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmNhblRyYW5zaXRpb25Gcm9tQXV0b3BsYXlUb1BsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnBsYXlJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpw
YXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRk
QXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpyZXN1bWVBdXRvcGxheWluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp1cGRhdGVTaG91bGRQbGF5KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6cGxheWJhY2tQZXJtaXR0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlcik6
CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmg6CisKIDIwMTctMDEtMTMgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBvcnQgcG9zdC1wYWdl
IGxvYWQgQ1BVIHVzYWdlIHVzaW5nIGRpYWdub3N0aWMgbG9nZ2luZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5j
cHAKaW5kZXggMDc5N2I1MGI1YjIxOThkZjJkMGJmN2I0YjExNDZkMTg4YTZkMTUwNS4uODE2YzA1
MjRmNTE1NzNjMjk4YjJlNTFmMDc5MTZjNGU0NGVmNmUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3Bw
CkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzSG9zdDo6c2V0UHJlcGFyZWRU
b1JldHVyblZpZGVvTGF5ZXJUb0lubGluZShib29sIHZhbHVlKQogCiBib29sIE1lZGlhQ29udHJv
bHNIb3N0Ojp1c2VyR2VzdHVyZVJlcXVpcmVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fbWVk
aWFFbGVtZW50LT5tZWRpYVNlc3Npb24oKS5wbGF5YmFja1Blcm1pdHRlZCgqbV9tZWRpYUVsZW1l
bnQpOworICAgIHJldHVybiAhbV9tZWRpYUVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLnBsYXliYWNr
UGVybWl0dGVkKCptX21lZGlhRWxlbWVudCwgbnVsbHB0cik7CiB9CiAKIFN0cmluZyBNZWRpYUNv
bnRyb2xzSG9zdDo6ZXh0ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA1ZTIxYjgzYzY4N2FkM2ZiNTA3NjQw
NjA0ZjA2YzI1NDI4OGFmZGZlLi43ZjFkZjcwMjE4ZGVhOTIwNWMxYmUyZjg3MTZlNzMyMmIzMjc3
MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTQyNiw2
ICs0MjYsNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgICwgbV9jcmVhdGluZ0NvbnRy
b2xzKGZhbHNlKQogICAgICwgbV9yZWNlaXZlZExheW91dFNpemVDaGFuZ2VkKGZhbHNlKQogICAg
ICwgbV9oYXNFdmVyTm90aWZpZWRBYm91dFBsYXlpbmcoZmFsc2UpCisgICAgLCBtX3ByZXZlbnRl
ZEZyb21QbGF5aW5nV2l0aG91dFVzZXJHZXN0dXJlKGZhbHNlKQogICAgICwgbV9oYXNFdmVySGFk
QXVkaW8oZmFsc2UpCiAgICAgLCBtX2hhc0V2ZXJIYWRWaWRlbyhmYWxzZSkKICNpZiBFTkFCTEUo
TUVESUFfQ09OVFJPTFNfU0NSSVBUKQpAQCAtMjI1NSw3ICsyMjU2LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllclJlYWR5U3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAg
ICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogfQogCi1ib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OmNhblRyYW5zaXRpb25Gcm9tQXV0b3BsYXlUb1BsYXkoKSBjb25zdAorYm9vbCBI
VE1MTWVkaWFFbGVtZW50OjpjYW5UcmFuc2l0aW9uRnJvbUF1dG9wbGF5VG9QbGF5KGJvb2wqIHBy
ZXZlbnRlZFBsYXliYWNrV2l0aG91dFVzZXJHZXN0dXJlKSBjb25zdAogewogICAgIHJldHVybiBp
c0F1dG9wbGF5aW5nKCkKICAgICAgICAgJiYgbWVkaWFTZXNzaW9uKCkuYXV0b3BsYXlQZXJtaXR0
ZWQoKQpAQCAtMjI2Myw3ICsyMjY0LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjYW5UcmFu
c2l0aW9uRnJvbUF1dG9wbGF5VG9QbGF5KCkgY29uc3QKICAgICAgICAgJiYgYXV0b3BsYXkoKQog
ICAgICAgICAmJiAhcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCkKICAgICAgICAgJiYgIWRvY3Vt
ZW50KCkuaXNTYW5kYm94ZWQoU2FuZGJveEF1dG9tYXRpY0ZlYXR1cmVzKQotICAgICAgICAmJiBt
ZWRpYVNlc3Npb24oKS5wbGF5YmFja1Blcm1pdHRlZCgqdGhpcyk7CisgICAgICAgICYmIG1lZGlh
U2Vzc2lvbigpLnBsYXliYWNrUGVybWl0dGVkKCp0aGlzLCBwcmV2ZW50ZWRQbGF5YmFja1dpdGhv
dXRVc2VyR2VzdHVyZSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0
ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKQEAgLTIzNzcsMTMgKzIzNzgsMTUgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlIHN0YXRlKQogICAgICAgICBpZiAoaXNQb3RlbnRpYWxseVBsYXlpbmcgJiYgb2xkU3RhdGUg
PD0gSEFWRV9DVVJSRU5UX0RBVEEpCiAgICAgICAgICAgICBzY2hlZHVsZU5vdGlmeUFib3V0UGxh
eWluZygpOwogCi0gICAgICAgIGlmIChjYW5UcmFuc2l0aW9uRnJvbUF1dG9wbGF5VG9QbGF5KCkp
IHsKKyAgICAgICAgYm9vbCBwcmV2ZW50ZWRQbGF5YmFja1dpdGhvdXRVc2VyR2VzdHVyZSA9IGZh
bHNlOworICAgICAgICBpZiAoY2FuVHJhbnNpdGlvbkZyb21BdXRvcGxheVRvUGxheSgmcHJldmVu
dGVkUGxheWJhY2tXaXRob3V0VXNlckdlc3R1cmUpKSB7CiAgICAgICAgICAgICBtX3BhdXNlZCA9
IGZhbHNlOwogICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAgICAgICAg
IG1fcGxheWJhY2tTdGFydGVkVGltZSA9IGN1cnJlbnRNZWRpYVRpbWUoKS50b0RvdWJsZSgpOwog
ICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGxheUV2ZW50KTsKICAgICAg
ICAgICAgIHNjaGVkdWxlTm90aWZ5QWJvdXRQbGF5aW5nKCk7Ci0gICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIGlmIChwcmV2ZW50ZWRQbGF5YmFja1dpdGhvdXRVc2VyR2VzdHVyZSkKKyAgICAgICAg
ICAgIG1fcHJldmVudGVkRnJvbVBsYXlpbmdXaXRob3V0VXNlckdlc3R1cmUgPSB0cnVlOwogCiAg
ICAgICAgIHNob3VsZFVwZGF0ZURpc3BsYXlTdGF0ZSA9IHRydWU7CiAgICAgfQpAQCAtMzA2Nyw3
ICszMDcwLDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheShET01Qcm9taXNlPHZvaWQ+
JiYgcHJvbWlzZSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwbGF5KCVw
KSIsIHRoaXMpOwogCi0gICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+cGxheWJhY2tQZXJtaXR0ZWQo
KnRoaXMpKSB7CisgICAgYm9vbCBwcmV2ZW50ZWRQbGF5YmFja1dpdGhvdXRVc2VyR2VzdHVyZSA9
IGZhbHNlOworICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBsYXliYWNrUGVybWl0dGVkKCp0aGlz
LCAmcHJldmVudGVkUGxheWJhY2tXaXRob3V0VXNlckdlc3R1cmUpKSB7CisgICAgICAgIGlmIChw
cmV2ZW50ZWRQbGF5YmFja1dpdGhvdXRVc2VyR2VzdHVyZSkKKyAgICAgICAgICAgIG1fcHJldmVu
dGVkRnJvbVBsYXlpbmdXaXRob3V0VXNlckdlc3R1cmUgPSB0cnVlOwogICAgICAgICBwcm9taXNl
LnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzA5
Miw4ICszMDk4LDEyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheSgpCiB7CiAgICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cGxheSglcCkiLCB0aGlzKTsKIAotICAgIGlmICgh
bV9tZWRpYVNlc3Npb24tPnBsYXliYWNrUGVybWl0dGVkKCp0aGlzKSkKKyAgICBib29sIHByZXZl
bnRlZFBsYXliYWNrV2l0aG91dFVzZXJHZXN0dXJlID0gZmFsc2U7CisgICAgaWYgKCFtX21lZGlh
U2Vzc2lvbi0+cGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMsICZwcmV2ZW50ZWRQbGF5YmFja1dpdGhv
dXRVc2VyR2VzdHVyZSkpIHsKKyAgICAgICAgaWYgKHByZXZlbnRlZFBsYXliYWNrV2l0aG91dFVz
ZXJHZXN0dXJlKQorICAgICAgICAgICAgbV9wcmV2ZW50ZWRGcm9tUGxheWluZ1dpdGhvdXRVc2Vy
R2VzdHVyZSA9IHRydWU7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgaWYgKFNjcmlwdENv
bnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCiAgICAgICAgIHJlbW92
ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgpOwogCkBAIC0zMTU5
LDYgKzMxNjksMTEgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoKQogICAg
ICAgICBzY2hlZHVsZVJlc29sdmVQZW5kaW5nUGxheVByb21pc2VzKCk7CiAKICAgICBtX2F1dG9w
bGF5aW5nID0gZmFsc2U7CisKKyAgICBpZiAoU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlRm9yTWVkaWEoKSAmJiBtX3ByZXZlbnRlZEZyb21QbGF5aW5nV2l0aG91dFVzZXJH
ZXN0dXJlKSB7CisgICAgICAgIC8vIEZJWE1FOiBub3RpZnkgY2xpZW50cyBhIHVzZXIgZ2VzdHVy
ZSB3YXMgbWFkZSBhbmQgc3RhcnRlZCBwbGF5YmFjayBvZiBhbiBlbGVtZW50IHRoYXQgd2FzIG90
aGVyd2lzZSBwcmV2ZW50ZWQgZnJvbSBwbGF5aW5nLgorICAgIH0KKwogICAgIHVwZGF0ZVBsYXlT
dGF0ZSgpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zMTY4LDcgKzMxODMsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnBhdXNlKCkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjpwYXVzZSglcCkiLCB0aGlzKTsKIAotICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBsYXli
YWNrUGVybWl0dGVkKCp0aGlzKSkKKyAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5wbGF5YmFja1Bl
cm1pdHRlZCgqdGhpcywgbnVsbHB0cikpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChTY3Jp
cHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKQpAQCAtMzE5MSw3
ICszMjA2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKICAgICBp
ZiAoIW1fcGxheWVyIHx8IG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1QVFkpIHsKICAgICAg
ICAgLy8gVW5sZXNzIHRoZSByZXN0cmljdGlvbiBvbiBtZWRpYSByZXF1aXJpbmcgdXNlciBhY3Rp
b24gaGFzIGJlZW4gbGlmdGVkCiAgICAgICAgIC8vIGRvbid0IHRyaWdnZXIgbG9hZGluZyBpZiBh
IHNjcmlwdCBjYWxscyBwYXVzZSgpLgotICAgICAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5wbGF5
YmFja1Blcm1pdHRlZCgqdGhpcykpCisgICAgICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBsYXli
YWNrUGVybWl0dGVkKCp0aGlzLCBudWxscHRyKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgc2NoZWR1bGVEZWxheWVkQWN0aW9uKExvYWRNZWRpYVJlc291cmNlKTsKICAgICB9CkBAIC0z
NTA3LDcgKzM1MjIsNyBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6cGVyY2VudExvYWRlZCgp
IGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1Ry
YWNrKEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFjaykKIHsKLSAgICBpZiAoaXNQbGF5aW5nKCkgJiYg
IW1fbWVkaWFTZXNzaW9uLT5wbGF5YmFja1Blcm1pdHRlZCgqdGhpcykpCisgICAgaWYgKGlzUGxh
eWluZygpICYmICFtX21lZGlhU2Vzc2lvbi0+cGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMsIG51bGxw
dHIpKQogICAgICAgICBwYXVzZUludGVybmFsKCk7CiAKICAgICBhZGRBdWRpb1RyYWNrKEF1ZGlv
VHJhY2s6OmNyZWF0ZSgqdGhpcywgdHJhY2spKTsKQEAgLTQ2NDYsNyArNDY2MSw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQoTWVkaWFQ
bGF5ZXIqKQogICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnJlc2V0KCk7CiAgICAgdXBkYXRlUmVu
ZGVyZXIoKTsKIAotICAgIGlmICghcGF1c2VkKCkgJiYgIW1fbWVkaWFTZXNzaW9uLT5wbGF5YmFj
a1Blcm1pdHRlZCgqdGhpcykpCisgICAgaWYgKCFwYXVzZWQoKSAmJiAhbV9tZWRpYVNlc3Npb24t
PnBsYXliYWNrUGVybWl0dGVkKCp0aGlzLCBudWxscHRyKSkKICAgICAgICAgcGF1c2VJbnRlcm5h
bCgpOwogCiAgICAgbV9tZWRpYVNlc3Npb24tPnNldENhblByb2R1Y2VBdWRpbyhtX3BsYXllciAm
JiBtX3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSAmJiBoYXNBdWRpbygpKTsKQEAgLTY4NDQs
NyArNjg1OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lQXV0b3BsYXlpbmcoKQog
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJlc3VtZUF1dG9wbGF5aW5nKCVwKSAt
IHBhdXNlZCA9ICVzIiwgdGhpcywgYm9vbFN0cmluZyhwYXVzZWQoKSkpOwogICAgIG1fYXV0b3Bs
YXlpbmcgPSB0cnVlOwogCi0gICAgaWYgKGNhblRyYW5zaXRpb25Gcm9tQXV0b3BsYXlUb1BsYXko
KSkKKyAgICBpZiAoY2FuVHJhbnNpdGlvbkZyb21BdXRvcGxheVRvUGxheShudWxscHRyKSkKICAg
ICAgICAgcGxheSgpOwogfQogCkBAIC03MTU5LDkgKzcxNzQsOSBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZVNob3VsZEF1dG9wbGF5KCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1
cGRhdGVTaG91bGRQbGF5KCkKIHsKLSAgICBpZiAoIXBhdXNlZCgpICYmICFtX21lZGlhU2Vzc2lv
bi0+cGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMpKQorICAgIGlmICghcGF1c2VkKCkgJiYgIW1fbWVk
aWFTZXNzaW9uLT5wbGF5YmFja1Blcm1pdHRlZCgqdGhpcywgbnVsbHB0cikpCiAgICAgICAgIHBh
dXNlSW50ZXJuYWwoKTsKLSAgICBlbHNlIGlmIChjYW5UcmFuc2l0aW9uRnJvbUF1dG9wbGF5VG9Q
bGF5KCkpCisgICAgZWxzZSBpZiAoY2FuVHJhbnNpdGlvbkZyb21BdXRvcGxheVRvUGxheShudWxs
cHRyKSkKICAgICAgICAgcGxheSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCmluZGV4IGNhMTg5OGQ2ZTZlMjIxYTFhYzE1MzVhOTc5MGE1MjFjYzI5YTJlMDkuLmE1
NzBjMTUyYTE3ZjY3MjUzNTRlNmExMDZjMDczOWQ2MTE3ZWU4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC03MTYsNyArNzE2LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIHN0b3BwZWREdWVUb0Vycm9ycygpIGNvbnN0OwogICAgIGJvb2wgcGF1c2VkRm9yVXNlcklu
dGVyYWN0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBjb3VsZFBsYXlJZkVub3VnaERhdGEoKSBjb25z
dDsKLSAgICBib29sIGNhblRyYW5zaXRpb25Gcm9tQXV0b3BsYXlUb1BsYXkoKSBjb25zdDsKKyAg
ICBib29sIGNhblRyYW5zaXRpb25Gcm9tQXV0b3BsYXlUb1BsYXkoYm9vbCogcHJldmVudGVkUGxh
eWJhY2tXaXRob3V0VXNlckdlc3R1cmUpIGNvbnN0OwogCiAgICAgTWVkaWFUaW1lIG1pblRpbWVT
ZWVrYWJsZSgpIGNvbnN0OwogICAgIE1lZGlhVGltZSBtYXhUaW1lU2Vla2FibGUoKSBjb25zdDsK
QEAgLTk1OCw2ICs5NTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jcmVhdGluZ0NvbnRyb2xz
IDogMTsKICAgICBib29sIG1fcmVjZWl2ZWRMYXlvdXRTaXplQ2hhbmdlZCA6IDE7CiAgICAgYm9v
bCBtX2hhc0V2ZXJOb3RpZmllZEFib3V0UGxheWluZyA6IDE7CisgICAgYm9vbCBtX3ByZXZlbnRl
ZEZyb21QbGF5aW5nV2l0aG91dFVzZXJHZXN0dXJlIDogMTsKIAogICAgIGJvb2wgbV9oYXNFdmVy
SGFkQXVkaW8gOiAxOwogICAgIGJvb2wgbV9oYXNFdmVySGFkVmlkZW8gOiAxOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5kZXggNDgxNTJmYTNlZDFhYTBm
NWQyNDk5NGZlMzkzYjk1MjNkYjIyZjdmOS4uNzMxYmQ2YTUxY2RlOTQ0NGJiMDgxNDliMGU2NTY3
ZDY5NWE4YmUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24u
Y3BwCkBAIC0xNDgsOCArMTQ4LDExIEBAIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVtb3Zl
QmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljCiAgICAgbV9y
ZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOwogfQogCi1ib29sIE1lZGlhRWxlbWVudFNlc3Np
b246OnBsYXliYWNrUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNv
bnN0Citib29sIE1lZGlhRWxlbWVudFNlc3Npb246OnBsYXliYWNrUGVybWl0dGVkKGNvbnN0IEhU
TUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIGJvb2wqIHByZXZlbnRlZFBsYXliYWNrV2l0aG91dFVz
ZXJHZXN0dXJlKSBjb25zdAogeworICAgIGlmIChwcmV2ZW50ZWRQbGF5YmFja1dpdGhvdXRVc2Vy
R2VzdHVyZSkKKyAgICAgICAgKnByZXZlbnRlZFBsYXliYWNrV2l0aG91dFVzZXJHZXN0dXJlID0g
ZmFsc2U7CisKICAgICBpZiAoZWxlbWVudC5kb2N1bWVudCgpLmlzTWVkaWFEb2N1bWVudCgpICYm
ICFlbGVtZW50LmRvY3VtZW50KCkub3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCkBAIC0xNjYsMTEgKzE2OSwxNSBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OnBsYXli
YWNrUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbgogCiAgICAg
aWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yVmlkZW9SYXRlQ2hhbmdl
ICYmIGVsZW1lbnQuaXNWaWRlbygpICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNl
ckdlc3R1cmVGb3JNZWRpYSgpKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNl
c3Npb246OnBsYXliYWNrUGVybWl0dGVkIC0gcmV0dXJuaW5nIEZBTFNFIGJlY2F1c2Ugb2Ygdmlk
ZW8gcmF0ZSBjaGFuZ2UgcmVzdHJpY3Rpb24iKTsKKyAgICAgICAgaWYgKHByZXZlbnRlZFBsYXli
YWNrV2l0aG91dFVzZXJHZXN0dXJlKQorICAgICAgICAgICAgKnByZXZlbnRlZFBsYXliYWNrV2l0
aG91dFVzZXJHZXN0dXJlID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvUmF0ZUNo
YW5nZSAmJiAoIWVsZW1lbnQuaXNWaWRlbygpIHx8IGVsZW1lbnQuaGFzQXVkaW8oKSkgJiYgIWVs
ZW1lbnQubXV0ZWQoKSAmJiAhU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJl
Rm9yTWVkaWEoKSkgewogICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpw
bGF5YmFja1Blcm1pdHRlZCAtIHJldHVybmluZyBGQUxTRSBiZWNhdXNlIG9mIGF1ZGlvIHJhdGUg
Y2hhbmdlIHJlc3RyaWN0aW9uIik7CisgICAgICAgIGlmIChwcmV2ZW50ZWRQbGF5YmFja1dpdGhv
dXRVc2VyR2VzdHVyZSkKKyAgICAgICAgICAgICpwcmV2ZW50ZWRQbGF5YmFja1dpdGhvdXRVc2Vy
R2VzdHVyZSA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI5Miw3
ICsyOTksNyBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFn
ZXIoUGxheWJhY2tDb250cm9sc1B1cnBvc2UgcHVycG9zZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgaWYgKCFwbGF5YmFja1Blcm1pdHRlZChtX2VsZW1lbnQpKSB7CisgICAg
aWYgKCFwbGF5YmFja1Blcm1pdHRlZChtX2VsZW1lbnQsIG51bGxwdHIpKSB7CiAgICAgICAgIExP
RyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSBy
ZXR1cm5pbmcgRkFMU0U6IFBsYXliYWNrIG5vdCBwZXJtaXR0ZWQiKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVt
ZW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgK
aW5kZXggMDdlYWIzZTA1YjVkZjJhYmZkYTRlYmJjNzJlMjZmZTQ1MmNhNmYwNC4uY2JkZTFkZDJh
YWE1NTZlNmEyZDQwOTY0NDY2MjgzNjk1NzhlNDMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUVsZW1lbnRTZXNzaW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVnaXN0ZXJXaXRoRG9jdW1lbnQoRG9jdW1lbnQmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJXaXRo
RG9jdW1lbnQoRG9jdW1lbnQmKTsKIAotICAgIGJvb2wgcGxheWJhY2tQZXJtaXR0ZWQoY29uc3Qg
SFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIGJvb2wgcGxheWJhY2tQZXJtaXR0ZWQoY29u
c3QgSFRNTE1lZGlhRWxlbWVudCYsIGJvb2wqIHByZXZlbnRlZFBsYXliYWNrV2l0aG91dFVzZXJH
ZXN0dXJlKSBjb25zdDsKICAgICBib29sIGF1dG9wbGF5UGVybWl0dGVkKCkgY29uc3Q7CiAgICAg
Ym9vbCBkYXRhTG9hZGluZ1Blcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7
CiAgICAgYm9vbCBmdWxsc2NyZWVuUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBj
b25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299398</attachid>
            <date>2017-01-20 15:55:11 -0800</date>
            <delta_ts>2017-01-20 18:32:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167214-20170120155318.patch</filename>
            <type>text/plain</type>
            <size>15392</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwOTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzZkMTMwMzE3M2JmYzBl
OTQ1OGYzMzBlNTEzMTdmYTNlZTI2YzI0MS4uZDgyZWIwMmYxNzE1NGUxNzVlYTk4MDQwMWZmZjg0
OTc1YWZkMGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTAxLTIwICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWNvcmQgd2hldGhlciBhIG1l
ZGlhIGVsZW1lbnQgd2FzIHByZXZlbnRlZCBmcm9tIHBsYXlpbmcgd2l0aG91dCB1c2VyIGludGVy
YWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjcyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHN0YXRlIHdpbGwgYmUgdXNlZCB0byBub3RpZnkgY2xpZW50cyB3aGVuIGEgdXNlciBleHBs
aWNpdGx5IHN0YXJ0cyBwbGF5YmFjaworICAgICAgICBvZiBhIG1lZGlhIGVsZW1lbnQgdGhhdCB3
YXMgcHJldmVudGVkIGZyb20gYXV0b3BsYXlpbmcuCisKKyAgICAgICAgVGVzdHMgd2lsbCBiZSBh
ZGRlZCBhZnRlciBhIFdlYktpdCBjYWxsYmFjayBBUEkgaXMgYWRkZWQuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1N1Y2Nlc3NP
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN1Y2Nlc3NPcjo6U3VjY2Vzc09yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN1Y2Nlc3NPcjo6b3BlcmF0b3IgYm9vbCk6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OmNhblRyYW5zaXRpb25Gcm9tQXV0b3BsYXlUb1BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnBsYXlJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRWxlbWVudFNlc3Npb246OnBsYXliYWNrUGVybWl0dGVkKToKKyAgICAgICAgKiBodG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uaDoKKwogMjAxNy0wMS0yMCAgQW50b2luZSBRdWludCAgPGdyYW91
dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBBbmltYXRpb25zIHNob3VsZCBiZSBvZmYgYnkg
ZGVmYXVsdCBhbmQgZW5hYmxlZCBhcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlhNDBk
YjgyMzk5ZmIwYmY3MGQ1MmI0YWM2M2Y5MGE4OGY5N2JkYTkuLjk4OTk5MjI4MjU3NGNmYWJiNjU0
ZjY3YzEzMWQ1NzJmZjI2ZWUxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU2OTUsNiArNTY5NSw3IEBACiAJCUM5NkY1RUM2
MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5NkY1RUMy
MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5t
bSAqLzsgfTsKIAkJQzk2RjVFQzcxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM5NkY1RUMzMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlci5jcHAgKi87IH07CiAJCUM5NkY1RUM4MUI1ODcyMjYwMDkxRUE5RCAvKiBN
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzk2RjVFQzQxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlh
U2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggKi87IH07CisJCUM5OTA1ODEzMUUzMkM3NUYw
MDczQkREQSAvKiBTdWNjZXNzT3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM5OTA1ODEyMUUzMkI3MzQwMDczQkREQSAvKiBTdWNjZXNzT3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDOUQ4NTFGMDFC
MzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5RDg1MUVFMUIzOURDNzgwMDg1MDYyRSAv
KiBNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUM5REFEQkNCMUIxRDNCOTcwMDFGMTdEOCAvKiBKU01lZGlhU2Vz
c2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
OURBREJDOTFCMUQzQjI1MDAxRjE3RDggLyogSlNNZWRpYVNlc3Npb24uY3BwICovOyB9OwogCQlD
OUY4N0NGRTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUY4N0NGRDFCMjhFNUY2MDA5
NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNjI4LDYgKzEzNjI5LDcgQEAKIAkJQzk2RjVFQzIx
QjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM5
NkY1RUMzMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM5
NkY1RUM0MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDOTkwNTgxMjFF
MzJCNzM0MDA3M0JEREEgLyogU3VjY2Vzc09yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1Y2Nlc3NPci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOUQ4NTFFRTFCMzlEQzc4MDA4NTA2MkUg
LyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVkaWFTZXNzaW9uTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzlEQURCQzkxQjFEM0IyNTAwMUYxN0Q4IC8qIEpTTWVkaWFTZXNzaW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTZXNzaW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzlEQURCQ0ExQjFEM0IyNTAwMUYxN0Q4IC8qIEpTTWVkaWFT
ZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFTZXNzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDM1NSw2ICsyNDM1Nyw3IEBACiAJ
CQkJODFBQzZDMzQxMzFDNTdDMjAwMDlBN0UwIC8qIFN0cmluZ0NhbGxiYWNrLmlkbCAqLywKIAkJ
CQlBOEM0QTdFQzA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5jcHAgKi8sCiAJCQkJ
QThDNEE3RUIwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuaCAqLywKKwkJCQlDOTkw
NTgxMjFFMzJCNzM0MDA3M0JEREEgLyogU3VjY2Vzc09yLmggKi8sCiAJCQkJNDYzRUI2MjAxQjg3
ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uY3BwICovLAogCQkJCTQ2M0VCNjIxMUI4Nzg5
Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi8sCiAJCQkJQzY1MDQ2QTgxNjdCRkI1NTAw
Q0MyQTREIC8qIFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaCAqLywKQEAgLTI3NjQz
LDYgKzI3NjQ2LDcgQEAKIAkJCQk4NEE4MUY0MjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3Jh
cGhpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDAxQTI3QUUxMEM5QkZEODAwMDI2QTQyIC8qIFNw
YWNlU3BsaXRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyNkNERTBGMTE0MDQyNEMwMDFF
NUE2OCAvKiBTcGF0aWFsTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzk5MDU4MTMx
RTMyQzc1RjAwNzNCRERBIC8qIFN1Y2Nlc3NPci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUEyQTVB
RDQxNkE0ODYxMTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQUEyQTVBRDIxNkE0ODYwQTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpc0V2ZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBQTJBNUFEMDE2QTQ4NjA0MDA5NzVBMjUgLyogU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdWNjZXNzT3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdWNjZXNzT3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42NWEzMDU5MWJmOWEwMTE0Nzg4YTU2NDMwM2E4N2ZlNzk2YjA1NmU0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N1Y2Nlc3NPci5oCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgU3VjY2Vzc09yIDogcHVibGljIHN0ZDo6b3B0
aW9uYWw8VD4geworcHVibGljOgorICAgIFN1Y2Nlc3NPcigpIDogc3RkOjpvcHRpb25hbDxUPigp
IHsgfQorICAgIFN1Y2Nlc3NPcihUJiYgZXJyb3IpIDogc3RkOjpvcHRpb25hbDxUPihlcnJvcikg
eyB9CisKKyAgICBleHBsaWNpdCBjb25zdGV4cHIgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuICFzdGQ6Om9wdGlvbmFsPFQ+OjpvcGVyYXRvciBib29sKCk7IH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDQ1ZDA1MDA2MzA3YTVkOWRkOWY4Mzk0YzI3OWEyNTNjNzIxYmIxMmQuLmY5YWY3OGUwZjll
OTQyNDYzMmEzYTA2MzdhMzcxMmFmZWQ4ZGU5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtMjI1MywxNSArMjI1MywxNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogICAgIGVu
ZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6Y2FuVHJhbnNpdGlvbkZyb21BdXRvcGxheVRvUGxheSgpIGNvbnN0CitTdWNjZXNzT3I8
TWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbj4gSFRNTE1lZGlhRWxlbWVudDo6Y2FuVHJhbnNpdGlv
bkZyb21BdXRvcGxheVRvUGxheSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQXV0b3BsYXlpbmco
KQotICAgICAgICAmJiBtZWRpYVNlc3Npb24oKS5hdXRvcGxheVBlcm1pdHRlZCgpCi0gICAgICAg
ICYmIHBhdXNlZCgpCi0gICAgICAgICYmIGF1dG9wbGF5KCkKLSAgICAgICAgJiYgIXBhdXNlZEZv
clVzZXJJbnRlcmFjdGlvbigpCi0gICAgICAgICYmICFkb2N1bWVudCgpLmlzU2FuZGJveGVkKFNh
bmRib3hBdXRvbWF0aWNGZWF0dXJlcykKLSAgICAgICAgJiYgbWVkaWFTZXNzaW9uKCkucGxheWJh
Y2tQZXJtaXR0ZWQoKnRoaXMpOworICAgIGlmIChpc0F1dG9wbGF5aW5nKCkKKyAgICAgJiYgbWVk
aWFTZXNzaW9uKCkuYXV0b3BsYXlQZXJtaXR0ZWQoKQorICAgICAmJiBwYXVzZWQoKQorICAgICAm
JiBhdXRvcGxheSgpCisgICAgICYmICFwYXVzZWRGb3JVc2VySW50ZXJhY3Rpb24oKQorICAgICAm
JiAhZG9jdW1lbnQoKS5pc1NhbmRib3hlZChTYW5kYm94QXV0b21hdGljRmVhdHVyZXMpKQorICAg
ICAgICByZXR1cm4gbWVkaWFTZXNzaW9uKCkucGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMpOworCisg
ICAgcmV0dXJuIE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb246OlBhZ2VDb25zZW50UmVxdWlyZWQ7
CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZSBzdGF0ZSkKQEAgLTIzNzUsMTMgKzIzNzcsMTUgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogICAg
ICAgICBpZiAoaXNQb3RlbnRpYWxseVBsYXlpbmcgJiYgb2xkU3RhdGUgPD0gSEFWRV9DVVJSRU5U
X0RBVEEpCiAgICAgICAgICAgICBzY2hlZHVsZU5vdGlmeUFib3V0UGxheWluZygpOwogCi0gICAg
ICAgIGlmIChjYW5UcmFuc2l0aW9uRnJvbUF1dG9wbGF5VG9QbGF5KCkpIHsKKyAgICAgICAgYXV0
byBzdWNjZXNzID0gY2FuVHJhbnNpdGlvbkZyb21BdXRvcGxheVRvUGxheSgpOworICAgICAgICBp
ZiAoc3VjY2VzcykgewogICAgICAgICAgICAgbV9wYXVzZWQgPSBmYWxzZTsKICAgICAgICAgICAg
IGludmFsaWRhdGVDYWNoZWRUaW1lKCk7CiAgICAgICAgICAgICBtX3BsYXliYWNrU3RhcnRlZFRp
bWUgPSBjdXJyZW50TWVkaWFUaW1lKCkudG9Eb3VibGUoKTsKICAgICAgICAgICAgIHNjaGVkdWxl
RXZlbnQoZXZlbnROYW1lcygpLnBsYXlFdmVudCk7CiAgICAgICAgICAgICBzY2hlZHVsZU5vdGlm
eUFib3V0UGxheWluZygpOwotICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoc3VjY2Vzcy52
YWx1ZSgpID09IE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb246OlVzZXJHZXN0dXJlUmVxdWlyZWQp
CisgICAgICAgICAgICBtX3ByZXZlbnRlZEZyb21QbGF5aW5nV2l0aG91dFVzZXJHZXN0dXJlID0g
dHJ1ZTsKIAogICAgICAgICBzaG91bGRVcGRhdGVEaXNwbGF5U3RhdGUgPSB0cnVlOwogICAgIH0K
QEAgLTMwNjEsNyArMzA2NSwxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkoRE9NUHJv
bWlzZTx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6cGxheSglcCkiLCB0aGlzKTsKIAotICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBsYXliYWNr
UGVybWl0dGVkKCp0aGlzKSkgeworICAgIGF1dG8gc3VjY2VzcyA9IG1fbWVkaWFTZXNzaW9uLT5w
bGF5YmFja1Blcm1pdHRlZCgqdGhpcyk7CisgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgIGlm
IChzdWNjZXNzLnZhbHVlKCkgPT0gTWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbjo6VXNlckdlc3R1
cmVSZXF1aXJlZCkKKyAgICAgICAgICAgIG1fcHJldmVudGVkRnJvbVBsYXlpbmdXaXRob3V0VXNl
ckdlc3R1cmUgPSB0cnVlOwogICAgICAgICBwcm9taXNlLnJlamVjdChOb3RBbGxvd2VkRXJyb3Ip
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzA4Niw4ICszMDkzLDEyIEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cGxheSgpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6cGxheSglcCkiLCB0aGlzKTsKIAotICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBsYXliYWNr
UGVybWl0dGVkKCp0aGlzKSkKKyAgICBhdXRvIHN1Y2Nlc3MgPSBtX21lZGlhU2Vzc2lvbi0+cGxh
eWJhY2tQZXJtaXR0ZWQoKnRoaXMpOworICAgIGlmICghc3VjY2VzcykgeworICAgICAgICBpZiAo
c3VjY2Vzcy52YWx1ZSgpID09IE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb246OlVzZXJHZXN0dXJl
UmVxdWlyZWQpCisgICAgICAgICAgICBtX3ByZXZlbnRlZEZyb21QbGF5aW5nV2l0aG91dFVzZXJH
ZXN0dXJlID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBpZiAoU2NyaXB0Q29u
dHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSkKICAgICAgICAgcmVtb3Zl
QmVoYXZpb3JzUmVzdHJpY3Rpb25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKCk7CiAKQEAgLTMxNTIs
NiArMzE2MywxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAgICAg
fSBlbHNlIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSkKICAgICAgICAgc2No
ZWR1bGVSZXNvbHZlUGVuZGluZ1BsYXlQcm9taXNlcygpOwogCisgICAgaWYgKFNjcmlwdENvbnRy
b2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkgJiYgbV9wcmV2ZW50ZWRGcm9t
UGxheWluZ1dpdGhvdXRVc2VyR2VzdHVyZSkgeworICAgICAgICAvLyBGSVhNRTogbm90aWZ5IGNs
aWVudHMgYSB1c2VyIGdlc3R1cmUgd2FzIG1hZGUgYW5kIHN0YXJ0ZWQgcGxheWJhY2sgb2YgYW4g
ZWxlbWVudCB0aGF0IHdhcyBvdGhlcndpc2UgcHJldmVudGVkIGZyb20gcGxheWluZy4KKyAgICAg
ICAgbV9wcmV2ZW50ZWRGcm9tUGxheWluZ1dpdGhvdXRVc2VyR2VzdHVyZSA9IGZhbHNlOworICAg
IH0KKwogICAgIG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2N2JiNjE1NTAxNjNk
ZjVmNmUyMTg0NzNjMWQyNGJhZjcxNzMxN2JjLi4yOTk0YWJjNTA4OWQ2MmRmMTIyNDAwM2M4M2Mw
YWNkYjAwM2M0MzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAt
NzE5LDcgKzcxOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdG9wcGVkRHVlVG9FcnJvcnMoKSBj
b25zdDsKICAgICBib29sIHBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbigpIGNvbnN0OwogICAgIGJv
b2wgY291bGRQbGF5SWZFbm91Z2hEYXRhKCkgY29uc3Q7Ci0gICAgYm9vbCBjYW5UcmFuc2l0aW9u
RnJvbUF1dG9wbGF5VG9QbGF5KCkgY29uc3Q7CisgICAgU3VjY2Vzc09yPE1lZGlhUGxheWJhY2tE
ZW5pYWxSZWFzb24+IGNhblRyYW5zaXRpb25Gcm9tQXV0b3BsYXlUb1BsYXkoKSBjb25zdDsKIAog
ICAgIE1lZGlhVGltZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdDsKICAgICBNZWRpYVRpbWUgbWF4
VGltZVNlZWthYmxlKCkgY29uc3Q7CkBAIC05NjEsNiArOTYxLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fY3JlYXRpbmdDb250cm9scyA6IDE7CiAgICAgYm9vbCBtX3JlY2VpdmVkTGF5b3V0U2l6
ZUNoYW5nZWQgOiAxOwogICAgIGJvb2wgbV9oYXNFdmVyTm90aWZpZWRBYm91dFBsYXlpbmcgOiAx
OworICAgIGJvb2wgbV9wcmV2ZW50ZWRGcm9tUGxheWluZ1dpdGhvdXRVc2VyR2VzdHVyZSA6IDE7
CiAKICAgICBib29sIG1faGFzRXZlckhhZEF1ZGlvIDogMTsKICAgICBib29sIG1faGFzRXZlckhh
ZFZpZGVvIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3Bw
CmluZGV4IGIwZTRjNGQ5Yzg1OWUwMzA0MTBlOTgyZTdjNjcwZWQ1N2EwYjk3ZTIuLjhjYTNiNjE0
ZGFmMjliOWY0MDA2YjRkOTM3YmNlZmY4OGU5ZDQzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtMTQ4LDMzICsxNDgsMzMgQEAgdm9pZCBNZWRp
YUVsZW1lbnRTZXNzaW9uOjpyZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJp
Y3Rpb25zIHJlc3RyaWMKICAgICBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rpb247CiB9CiAK
LWJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGxheWJhY2tQZXJtaXR0ZWQoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK1N1Y2Nlc3NPcjxNZWRpYVBsYXliYWNrRGVuaWFs
UmVhc29uPiBNZWRpYUVsZW1lbnRTZXNzaW9uOjpwbGF5YmFja1Blcm1pdHRlZChjb25zdCBIVE1M
TWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAogewogICAgIGlmIChlbGVtZW50LmRvY3VtZW50
KCkuaXNNZWRpYURvY3VtZW50KCkgJiYgIWVsZW1lbnQuZG9jdW1lbnQoKS5vd25lckVsZW1lbnQo
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBTdWNjZXNzT3I8TWVkaWFQ
bGF5YmFja0RlbmlhbFJlYXNvbj4oKTsKIAogICAgIGlmIChwYWdlRXhwbGljaXRseUFsbG93c0Vs
ZW1lbnRUb0F1dG9wbGF5SW5saW5lKGVsZW1lbnQpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuIFN1Y2Nlc3NPcjxNZWRpYVBsYXliYWNrRGVuaWFsUmVhc29uPigpOwogCiAg
ICAgaWYgKHJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soZWxlbWVudCkgJiYgIWZ1
bGxzY3JlZW5QZXJtaXR0ZWQoZWxlbWVudCkpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFF
bGVtZW50U2Vzc2lvbjo6cGxheWJhY2tQZXJtaXR0ZWQgLSByZXR1cm5pbmcgRkFMU0UgYmVjYXVz
ZSBvZiBmdWxsc2NyZWVuIHJlc3RyaWN0aW9uIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb246OkZ1bGxzY3JlZW5SZXF1aXJl
ZDsKICAgICB9CiAKICAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBPdmVycmlkZVVzZXJHZXN0dXJl
UmVxdWlyZW1lbnRGb3JNYWluQ29udGVudCAmJiB1cGRhdGVJc01haW5Db250ZW50KCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gU3VjY2Vzc09yPE1lZGlhUGxheWJhY2tE
ZW5pYWxSZWFzb24+KCk7CiAKICAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdl
c3R1cmVGb3JWaWRlb1JhdGVDaGFuZ2UgJiYgZWxlbWVudC5pc1ZpZGVvKCkgJiYgIVNjcmlwdENv
bnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpIHsKICAgICAgICAgTE9H
KE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGxheWJhY2tQZXJtaXR0ZWQgLSByZXR1cm5p
bmcgRkFMU0UgYmVjYXVzZSBvZiB2aWRlbyByYXRlIGNoYW5nZSByZXN0cmljdGlvbiIpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXliYWNrRGVuaWFsUmVh
c29uOjpVc2VyR2VzdHVyZVJlcXVpcmVkOwogICAgIH0KIAogICAgIGlmIChtX3Jlc3RyaWN0aW9u
cyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvUmF0ZUNoYW5nZSAmJiAoIWVsZW1lbnQuaXNW
aWRlbygpIHx8IGVsZW1lbnQuaGFzQXVkaW8oKSkgJiYgIWVsZW1lbnQubXV0ZWQoKSAmJiAhU2Ny
aXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSkgewogICAgICAg
ICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpwbGF5YmFja1Blcm1pdHRlZCAtIHJl
dHVybmluZyBGQUxTRSBiZWNhdXNlIG9mIGF1ZGlvIHJhdGUgY2hhbmdlIHJlc3RyaWN0aW9uIik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWJhY2tEZW5p
YWxSZWFzb246OlVzZXJHZXN0dXJlUmVxdWlyZWQ7CiAgICAgfQogCi0gICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIFN1Y2Nlc3NPcjxNZWRpYVBsYXliYWNrRGVuaWFsUmVhc29uPigpOwogfQog
CiBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmF1dG9wbGF5UGVybWl0dGVkKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKaW5kZXggMDdlYWIzZTA1YjVk
ZjJhYmZkYTRlYmJjNzJlMjZmZTQ1MmNhNmYwNC4uM2I2ZDU3NzMzNWJmMGQ5NjQ0MjVkMDk4YTBj
MTNkOTFmODUyMDQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJTdWNjZXNzT3IuaCIKICNpbmNs
dWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIApAQCAtMzksNiArNDAs
MTIgQEAgZW51bSBjbGFzcyBNZWRpYVNlc3Npb25NYWluQ29udGVudFB1cnBvc2UgewogICAgIEF1
dG9wbGF5CiB9OwogCitlbnVtIGNsYXNzIE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb24geworICAg
IFVzZXJHZXN0dXJlUmVxdWlyZWQsCisgICAgRnVsbHNjcmVlblJlcXVpcmVkLAorICAgIFBhZ2VD
b25zZW50UmVxdWlyZWQsCit9OworCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQ7CiBjbGFzcyBTb3VyY2VCdWZmZXI7CkBAIC01Miw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50Jik7CiAgICAgdm9pZCB1bnJlZ2lz
dGVyV2l0aERvY3VtZW50KERvY3VtZW50Jik7CiAKLSAgICBib29sIHBsYXliYWNrUGVybWl0dGVk
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKKyAgICBTdWNjZXNzT3I8TWVkaWFQbGF5
YmFja0RlbmlhbFJlYXNvbj4gcGxheWJhY2tQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVu
dCYpIGNvbnN0OwogICAgIGJvb2wgYXV0b3BsYXlQZXJtaXR0ZWQoKSBjb25zdDsKICAgICBib29s
IGRhdGFMb2FkaW5nUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICAg
ICBib29sIGZ1bGxzY3JlZW5QZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>