<?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>172881</bug_id>
          
          <creation_ts>2017-06-02 16:37:19 -0700</creation_ts>
          <short_desc>Modify Netflix controlsManager quirk to prevent only scrubbing</short_desc>
          <delta_ts>2017-06-05 13:30:46 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>thorton</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1315280</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-06-02 16:37:19 -0700</bug_when>
    <thetext>Modify Netflix controlsManager quirk to prevent only scrubbing

rdar://problem/32228660</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315291</commentid>
    <comment_count>1</comment_count>
      <attachid>311887</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-06-02 16:57:14 -0700</bug_when>
    <thetext>Created attachment 311887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315296</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-02 17:00:15 -0700</bug_when>
    <thetext>Attachment 311887 did not pass style-queue:


ERROR: Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:518:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:522:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:526:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:529:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:529:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:530:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/WebPlaybackControlsManager.mm:59:  Should not have spaces around = in property synthesis.  [whitespace/property] [4]
Total errors found: 7 in 15 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>1315305</commentid>
    <comment_count>3</comment_count>
      <attachid>311887</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-06-02 17:15:53 -0700</bug_when>
    <thetext>Comment on attachment 311887
Patch

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

&gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:533
&gt; +    String host = document-&gt;url().host();
&gt; +    return !(equalLettersIgnoringASCIICase(host, &quot;netflix.com&quot;) || host.endsWithIgnoringASCIICase(&quot;.netflix.com&quot;));

Not new to this patch, but the double string comparison makes me a little sad. In the past I&apos;ve done something like this:

    String netflixDomain = ASCIILiteral(&quot;netflix.com&quot;);
    if (!host.endsWithIgnoringASCIICase(netflixDomain))
        return true;

    unsigned suffixOffset = host.length() - netflixDomain.length();
    return suffixOffset &amp;&amp; host[suffixOffset - 1] != &apos;.&apos;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315341</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-02 19:24:43 -0700</bug_when>
    <thetext>Does this mean that Now Playing scrubber controls will now be enabled again for Netflix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315424</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-06-03 08:26:14 -0700</bug_when>
    <thetext>(In reply to Andy Estes from comment #3)
&gt; Comment on attachment 311887 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=311887&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:533
&gt; &gt; +    String host = document-&gt;url().host();
&gt; &gt; +    return !(equalLettersIgnoringASCIICase(host, &quot;netflix.com&quot;) || host.endsWithIgnoringASCIICase(&quot;.netflix.com&quot;));
&gt; 
&gt; Not new to this patch, but the double string comparison makes me a little
&gt; sad. In the past I&apos;ve done something like this:
&gt; 
&gt;     String netflixDomain = ASCIILiteral(&quot;netflix.com&quot;);
&gt;     if (!host.endsWithIgnoringASCIICase(netflixDomain))
&gt;         return true;
&gt; 
&gt;     unsigned suffixOffset = host.length() - netflixDomain.length();
&gt;     return suffixOffset &amp;&amp; host[suffixOffset - 1] != &apos;.&apos;;

Isn&apos;t it possible for host.length to be smaller than netflixDomain.length?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315456</commentid>
    <comment_count>6</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-06-03 11:45:41 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #5)
&gt; (In reply to Andy Estes from comment #3)
&gt; &gt; Comment on attachment 311887 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=311887&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:533
&gt; &gt; &gt; +    String host = document-&gt;url().host();
&gt; &gt; &gt; +    return !(equalLettersIgnoringASCIICase(host, &quot;netflix.com&quot;) || host.endsWithIgnoringASCIICase(&quot;.netflix.com&quot;));
&gt; &gt; 
&gt; &gt; Not new to this patch, but the double string comparison makes me a little
&gt; &gt; sad. In the past I&apos;ve done something like this:
&gt; &gt; 
&gt; &gt;     String netflixDomain = ASCIILiteral(&quot;netflix.com&quot;);
&gt; &gt;     if (!host.endsWithIgnoringASCIICase(netflixDomain))
&gt; &gt;         return true;
&gt; &gt; 
&gt; &gt;     unsigned suffixOffset = host.length() - netflixDomain.length();
&gt; &gt;     return suffixOffset &amp;&amp; host[suffixOffset - 1] != &apos;.&apos;;
&gt; 
&gt; Isn&apos;t it possible for host.length to be smaller than netflixDomain.length?

We already know that host ends with netflixDomain at this point, so it must be at least as long as netflixDomain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315458</commentid>
    <comment_count>7</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-06-03 12:24:43 -0700</bug_when>
    <thetext>(In reply to Andy Estes from comment #3)
&gt; Comment on attachment 311887 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=311887&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:533
&gt; &gt; +    String host = document-&gt;url().host();
&gt; &gt; +    return !(equalLettersIgnoringASCIICase(host, &quot;netflix.com&quot;) || host.endsWithIgnoringASCIICase(&quot;.netflix.com&quot;));
&gt; 
&gt; Not new to this patch, but the double string comparison makes me a little
&gt; sad. In the past I&apos;ve done something like this:
&gt; 
&gt;     String netflixDomain = ASCIILiteral(&quot;netflix.com&quot;);
&gt;     if (!host.endsWithIgnoringASCIICase(netflixDomain))
&gt;         return true;
&gt; 
&gt;     unsigned suffixOffset = host.length() - netflixDomain.length();
&gt;     return suffixOffset &amp;&amp; host[suffixOffset - 1] != &apos;.&apos;;

Cool, I&apos;ll try this! Thanks Andy!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315459</commentid>
    <comment_count>8</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-06-03 12:25:17 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #4)
&gt; Does this mean that Now Playing scrubber controls will now be enabled again
&gt; for Netflix?

It means that Netflix will have all of the controls, but if a user tries to use the timeline to scrub, nothing will happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315758</commentid>
    <comment_count>9</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-06-05 13:30:46 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/217791/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311887</attachid>
            <date>2017-06-02 16:57:14 -0700</date>
            <delta_ts>2017-06-02 17:15:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>20443</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzc0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDE3LTA2LTAyICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBNb2RpZnkgTmV0ZmxpeCBjb250cm9s
c01hbmFnZXIgcXVpcmsgdG8gcHJldmVudCBvbmx5IHNjcnViYmluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyODgxCisgICAgICAgIC1hbmQgY29y
cmVzcG9uZGluZy0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzIyMjg2NjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIHByZXZlbnRp
bmcgTmV0ZmxpeCBmcm9tIGdldHRpbmcgYSBjb250cm9sc01hbmFnZXIgYXQgYWxsLCB0aGlzIHBh
dGNoIAorICAgICAgICBPTkxZIHByZXZlbnRzIHRvdWNoIGJhciBzY3J1YmJpbmcgZnJvbSB3b3Jr
aW5nLiBUaGlzIG1lYW5zIHRoYXQgTmV0ZmxpeCB3aWxsIG5vdyAKKyAgICAgICAgZ2V0IGNvbnRy
b2xzIGluIHRoZSBUb3VjaEJhciwgaXQgbWVhbnMgdGhhdCB0aGUgcGxheS9wYXVzZSBhbmQgUGlQ
IGJ1dHRvbnMgd2lsbCBiZSAKKyAgICAgICAgZnVuY3Rpb25hbCwgYW5kIGl0IG1lYW5zIHRoYXQg
dGhlIHRpbWVsaW5lIHdpbGwgYWNjdXJhdGVseSByZXByZXNlbnQgdGhlIGN1cnJlbnQgCisgICAg
ICAgIHRpbWUsIEJVVCB1c2VycyB3aWxsIG5vdCBiZSBhYmxlIHRvIHVzZSB0aGUgdGltZWxpbmUg
dG8gc2NydWIgdGhlIHZpZGVvLiBUaGlzIGFsc28gCisgICAgICAgIGFsbG93cyBOZXRmbGl4IHRv
IHdvcmsgd2l0aCBvdGhlciBNZWRpYVJlbW90ZSBjbGllbnRzIHN1Y2ggYXMgQWlyUG9kcy4KKwor
ICAgICAgICBSZW1vdmUgdGhlIHF1aXJrIGNvZGUgZnJvbSBoZXJlLCBzaW5jZSB0aGlzIGlzIG5v
IGxvbmdlciB0aGUgcmlnaHQgcGxhY2UgdG8gdGVzdCAKKyAgICAgICAgaWYgdGhlIE1lZGlhRWxl
bWVudCBpcyBob3N0ZWQgYXQgTmV0ZmxpeC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YmVzdE1lZGlhRWxl
bWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgIChXZWJDb3Jl
OjpuZWVkc1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyUXVpcmspOiBEZWxldGVkLgorCisgICAgICAg
IFBhc3MgYXJvdW5kIGEgbmV3IGJvb2wgYWxsb3dzVG91Y2hCYXJTY3J1YmJpbmcuCisgICAgICAg
ICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50OjphbGxvd3NUb3VjaEJhclNjcnVi
YmluZ0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Lmg6CisKKyAgICAgICAgSGVyZeKAmXMgd2hlcmUgd2UgY2hlY2sg
aWYgd2UgbmVlZCBxdWlya3kgYmVoYXZpb3IuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojph
bGxvd3NUb3VjaEJhclNjcnViYmluZyk6CisKKyAgICAgICAgUmV0dXJuIHRoZSBib29sIHdlIGhh
dmUgcGx1bWJlZCB0aHJvdWdoIHRyYWNraW5nIHdoZXRoZXIgdGhlIGN1cnJlbnQgc2l0ZSAKKyAg
ICAgICAgYWxsb3dzVG91Y2hCYXJTY3J1YmJpbmcgZnJvbSB0aGUgZXhpc3RpbmcgZGVsZWdhdGUg
bWV0aG9kIAorICAgICAgICBjYW5CZWdpblRvdWNoQmFyU2NydWJiaW5nLiBXZSB3aWxsIGFsd2F5
cyByZXR1cm4gTk8gZm9yIHZpZGVvIGVsZW1lbnRzIG9uIE5ldGZsaXgsIAorICAgICAgICBhbmQg
dGhpcyB3aWxsIHByZXZlbnQgdXNlcnMgZnJvbSBiZSBhYmxlIHRvIHNjcnViIHdpdGggdGhlIFRv
dWNoQmFyIG9uIE5ldGZsaXguCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyLm1tOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBjYW5C
ZWdpblRvdWNoQmFyU2NydWJiaW5nXSk6CisKKyAgICAgICAgTW9yZSBwbHVtYmluZy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6YWxsb3dzVG91
Y2hCYXJTY3J1YmJpbmdDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYzo6c2V0UGxheUJhY2tDb250cm9sc01hbmFnZXIpOgorCiAyMDE3LTA2
LTAyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMjEzNDY0KTogW2lPU10gRm9udHMgZ2V0IHRvbyBib2xkIHdoZW4gdGhlICJC
b2xkIFRleHQiIGFjY2Vzc2liaWxpdHkgc2V0dGluZyBpcyBlbmFibGVkCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzcyNikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYwNiwxOSArNjA2LDYgQEAgc3RhdGljIGJvb2wgbmVlZHNBdXRvcGxheVBsYXlQYXVzZUV2ZW50
cwogICAgIHJldHVybiBsb2FkZXIgJiYgbG9hZGVyLT5hbGxvd3NBdXRvcGxheVF1aXJrcygpOwog
fQogCi1zdGF0aWMgYm9vbCBuZWVkc1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyUXVpcmsoUGFnZSYg
cGFnZSkKLXsKLSAgICBpZiAoIXBhZ2Uuc2V0dGluZ3MoKS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJr
cygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvKiBkb2N1bWVudCA9IHBhZ2Uu
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmcgaG9zdCA9IGRvY3VtZW50LT51cmwoKS5ob3N0KCk7Ci0g
ICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhvc3QsICJuZXRmbGl4LmNv
bSIpIHx8IGhvc3QuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLm5ldGZsaXguY29tIik7Ci19
Ci0KIEhUTUxNZWRpYUVsZW1lbnQqIEhUTUxNZWRpYUVsZW1lbnQ6OmJlc3RNZWRpYUVsZW1lbnRG
b3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxh
eWJhY2tDb250cm9sc1B1cnBvc2UgcHVycG9zZSkKIHsKICAgICBhdXRvIGFsbFNlc3Npb25zID0g
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuY3VycmVudFNlc3Np
b25zTWF0Y2hpbmcoW10gKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uKSB7CkBA
IC02NDMsMTUgKzYzMCw3IEBAIEhUTUxNZWRpYUVsZW1lbnQqIEhUTUxNZWRpYUVsZW1lbnQ6OmJl
c3QKICAgICBpZiAoIXN0cm9uZ2VzdFNlc3Npb25DYW5kaWRhdGUuaXNWaXNpYmxlSW5WaWV3cG9y
dE9yRnVsbHNjcmVlbiAmJiAhc3Ryb25nZXN0U2Vzc2lvbkNhbmRpZGF0ZS5pc1BsYXlpbmdBdWRp
byAmJiBhdExlYXN0T25lTm9uQ2FuZGlkYXRlTWF5QmVDb25mdXNlZEZvck1haW5Db250ZW50KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEhUTUxNZWRpYUVsZW1lbnQqIHN0cm9uZ2Vz
dEVsZW1lbnRDYW5kaWRhdGUgPSAmc3Ryb25nZXN0U2Vzc2lvbkNhbmRpZGF0ZS5zZXNzaW9uLT5l
bGVtZW50KCk7Ci0gICAgaWYgKHN0cm9uZ2VzdEVsZW1lbnRDYW5kaWRhdGUpIHsKLSAgICAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBzdHJvbmdlc3RFbGVtZW50Q2FuZGlkYXRlLT5kb2N1bWVudCgpLnBh
Z2UoKSkgewotICAgICAgICAgICAgaWYgKG5lZWRzUGxheWJhY2tDb250cm9sc01hbmFnZXJRdWly
aygqcGFnZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gc3Ryb25nZXN0RWxlbWVudENhbmRpZGF0ZTsKKyAgICByZXR1cm4g
JnN0cm9uZ2VzdFNlc3Npb25DYW5kaWRhdGUuc2Vzc2lvbi0+ZWxlbWVudCgpOwogfQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVu
dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWwuaAkocmV2aXNpb24gMjE3NzI2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaAkod29ya2luZyBjb3B5
KQpAQCAtNzgsNiArNzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZXh0ZXJuYWxQ
bGF5YmFja0xvY2FsaXplZERldmljZU5hbWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29s
IHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBpc011dGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NUb3VjaEJh
clNjcnViYmluZygpIGNvbnN0ID0gMDsKIH07CiAKIGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ2xpZW50IHsKQEAgLTk3LDYgKzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIC8qIGVuYWJsZWQgKi8sIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5nJiAvKiBs
b2NhbGl6ZWREZXZpY2VOYW1lICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBtdXRl
ZENoYW5nZWQoYm9vbCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFsbG93c1RvdWNoQmFyU2NydWJi
aW5nQ2hhbmdlZChib29sKSB7IH0KIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMjE3NzI2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODksNiArODksNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGV4dGVybmFsUGxh
eWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCB3aXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNNdXRlZCgp
IGNvbnN0IGZpbmFsOworICAgIGJvb2wgYWxsb3dzVG91Y2hCYXJTY3J1YmJpbmcoKSBjb25zdCBm
aW5hbDsKIAogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudC5tbQkocmV2aXNpb24gMjE3NzI2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDEwICszNSwxMiBAQAogI2ltcG9ydCAiSFRNTEVsZW1lbnQuaCIKICNpbXBvcnQg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIk1haW5G
cmFtZS5oIgogI2ltcG9ydCAiTWVkaWFDb250cm9sc0hvc3QuaCIKICNpbXBvcnQgIk1lZGlhU2Vs
ZWN0aW9uT3B0aW9uLmgiCiAjaW1wb3J0ICJQYWdlLmgiCiAjaW1wb3J0ICJQYWdlR3JvdXAuaCIK
KyNpbXBvcnQgIlNldHRpbmdzLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAi
VGV4dFRyYWNrTGlzdC5oIgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgpAQCAtMTcwLDYgKzE3Miwx
MSBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50CiAgICAgICAgIGZv
ciAoYXV0byBjbGllbnQgOiBtX2NsaWVudHMpCiAgICAgICAgICAgICBjbGllbnQtPm11dGVkQ2hh
bmdlZChpc011dGVkKCkpOwogICAgIH0KKyAgICAKKyAgICBpZiAoYWxsKSB7CisgICAgICAgIGZv
ciAoYXV0byBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgICAgICBjbGllbnQtPmFsbG93c1Rv
dWNoQmFyU2NydWJiaW5nQ2hhbmdlZChhbGxvd3NUb3VjaEJhclNjcnViYmluZygpKTsKKyAgICB9
CiB9CiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjphZGRDbGllbnQo
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQmIGNsaWVudCkKIHsKQEAgLTUwNiw2ICs1MTMs
MjYgQEAgYm9vbCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudAogICAgIHJldHVy
biBtX21lZGlhRWxlbWVudCA/IG1fbWVkaWFFbGVtZW50LT5tdXRlZCgpIDogZmFsc2U7CiB9CiAK
K2Jvb2wgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmFsbG93c1RvdWNoQmFy
U2NydWJiaW5nKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVkaWFFbGVtZW50KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIFBhZ2UqIHBhZ2UgPSBtX21lZGlhRWxlbWVudC0+
ZG9jdW1lbnQoKS5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIAorICAgIGF1dG8qIGRvY3VtZW50ID0gcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1l
bnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IAorICAgaWYgKCFwYWdlLT5zZXR0aW5ncygpLm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAKKyAgICBTdHJpbmcgaG9zdCA9IGRvY3VtZW50
LT51cmwoKS5ob3N0KCk7CisgICAgcmV0dXJuICEoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoaG9zdCwgIm5ldGZsaXguY29tIikgfHwgaG9zdC5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
KCIubmV0ZmxpeC5jb20iKSk7Cit9CisKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIu
aAkocmV2aXNpb24gMjE3NzI2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAg
QGludGVyZmFjZSBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciA6IAogICAgIFJldGFpblB0cjxB
VlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50TGVnaWJsZVRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb247CiAgICAgZmxvYXQgX3JhdGU7CiAgICAgQk9PTCBfY2FuVG9nZ2xl
UGxheWJhY2s7CisgICAgQk9PTCBfYWxsb3dzVG91Y2hCYXJTY3J1YmJpbmc7CiAKICAgICBSZWZQ
dHI8V2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjPiBfd2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlTWFjOwogfQpAQCAtNjgsNiArNjksNyBAQCBAaW50ZXJmYWNlIFdlYlBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyIDogCiBAcHJvcGVydHkgQk9PTCBhbGxvd3NQaWN0dXJlSW5Q
aWN0dXJlUGxheWJhY2s7CiBAcHJvcGVydHkgKGdldHRlcj1pc1BpY3R1cmVJblBpY3R1cmVBY3Rp
dmUpIEJPT0wgcGljdHVyZUluUGljdHVyZUFjdGl2ZTsKIEBwcm9wZXJ0eSBCT09MIGNhblRvZ2ds
ZVBpY3R1cmVJblBpY3R1cmU7CitAcHJvcGVydHkgQk9PTCBhbGxvd3NUb3VjaEJhclNjcnViYmlu
ZzsKIAogLSAoQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVudEF1ZGlvVG91
Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjsKIC0gKHZvaWQpc2V0Q3VycmVudEF1ZGlvVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICop
b3B0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlci5tbQkocmV2aXNpb24gMjE3NzI2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChB
VktpdCwgQVZGdW5jdGkKIEBzeW50aGVzaXplIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFj
azsKIEBzeW50aGVzaXplIHBpY3R1cmVJblBpY3R1cmVBY3RpdmU7CiBAc3ludGhlc2l6ZSBjYW5U
b2dnbGVQaWN0dXJlSW5QaWN0dXJlOworQHN5bnRoZXNpemUgYWxsb3dzVG91Y2hCYXJTY3J1YmJp
bmcgPSBfYWxsb3dzVG91Y2hCYXJTY3J1YmJpbmc7CiAKIC0gKHZvaWQpZGVhbGxvYwogewpAQCAt
MTE2LDEwICsxMTcsMTEgQEAgLSAodm9pZClnZW5lcmF0ZVRvdWNoQmFyQXVkaW9BbXBsaXR1ZGVT
YQogCiAtIChCT09MKWNhbkJlZ2luVG91Y2hCYXJTY3J1YmJpbmcKIHsKLSAgICAvLyBJdCdzIG5v
dCBpZGVhbCB0byByZXR1cm4gWUVTIGFsbCB0aGUgdGltZSBoZXJlLiBUaGUgaW50ZW50IG9mIHRo
ZSBBUEkgaXMgdGhhdCB3ZSByZXR1cm4gTk8gd2hlbiB0aGUKLSAgICAvLyBtZWRpYSBpcyBiZWlu
ZyBzY3J1YmJlZCB2aWEgdGhlIG9uLXNjcmVlbiBzY3J1YmJlci4gQnV0IHdlIGNhbiBvbmx5IHBv
c3NpYmx5IGdldCB0aGUgcmlnaHQgYW5zd2VyIGZvcgotICAgIC8vIG1lZGlhIHRoYXQgdXNlcyB0
aGUgZGVmYXVsdCBjb250cm9scy4KLSAgICByZXR1cm4gWUVTOworICAgIC8vIEF0IHRoaXMgdGlt
ZSwgX2FsbG93c1RvdWNoQmFyU2NydWJiaW5nIGlzIGFsd2F5cyBZRVMgZXhjZXB0IGZvciBOZXRm
bGl4LCB3aGljaCByZXF1aXJlcyBhIHF1aXJrIHRvCisgICAgLy8gZGlzYWJsZSBzY3J1YmJpbmcu
IEl0J3Mgbm90IGlkZWFsIHRvIHJldHVybiBZRVMgZm9yIGFsbCBvdGhlciBtZWRpYS4gVGhlIGlu
dGVudCBvZiB0aGUgQVBJIGlzIHRoYXQKKyAgICAvLyB3ZSByZXR1cm4gTk8gd2hlbiB0aGUgbWVk
aWEgaXMgYmVpbmcgc2NydWJiZWQgdmlhIHRoZSBvbi1zY3JlZW4gc2NydWJiZXIuIEJ1dCB3ZSBj
YW4gb25seSBwb3NzaWJseQorICAgIC8vIGdldCB0aGUgcmlnaHQgYW5zd2VyIGZvciBtZWRpYSB0
aGF0IHVzZXMgdGhlIGRlZmF1bHQgY29udHJvbHMuCisgICAgcmV0dXJuIF9hbGxvd3NUb3VjaEJh
clNjcnViYmluZzsKIH0KIAogLSAodm9pZCliZWdpblRvdWNoQmFyU2NydWJiaW5nCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZU1hYy5oCShyZXZpc2lvbiAyMTc3MjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCkgZmluYWw7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQodWludDY0
X3QpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQoYm9vbCAvKiBlbmFibGVkICovLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQ
bGF5YmFja1RhcmdldFR5cGUsIGNvbnN0IFN0cmluZyYgLyogbG9jYWxpemVkRGV2aWNlTmFtZSAq
LykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhbGxvd3NUb3VjaEJhclNjcnViYmlu
Z0NoYW5nZWQoYm9vbCBhbGxvd3NUb3VjaEJhclNjcnViYmluZykgZmluYWw7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVu
c3VyZUNvbnRyb2xzTWFuYWdlcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tCShy
ZXZpc2lvbiAyMTc3MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNiArMTg2LDE1
IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpleHQKICNlbmRpZgogfQog
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6YWxsb3dzVG91Y2hCYXJTY3J1
YmJpbmdDaGFuZ2VkKGJvb2wgYWxsb3dzVG91Y2hCYXJTY3J1YmJpbmcpCit7CisjaWYgRU5BQkxF
KFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQorICAgIFtwbGF5QmFja0NvbnRyb2xzTWFu
YWdlcigpIHNldEFsbG93c1RvdWNoQmFyU2NydWJiaW5nOmFsbG93c1RvdWNoQmFyU2NydWJiaW5n
XTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFsbG93c1RvdWNoQmFyU2NydWJiaW5nKTsKKyNl
bmRpZgorfQorCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6aW52YWxpZGF0
ZSgpCiB7CiAgICAgaWYgKCFtX3BsYXliYWNrU2Vzc2lvbk1vZGVsKQpAQCAtMjI4LDYgKzIzNyw3
IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXQKICAgICBtYW5hZ2Vy
LnBsYXlpbmcgPSBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5pc1BsYXlpbmcoKTsKICAgICBbbWFu
YWdlciBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczptX3BsYXliYWNrU2Vzc2lvbk1vZGVs
LT5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpIHdpdGhTZWxlY3RlZEluZGV4OnN0YXRpY19j
YXN0PE5TVUludGVnZXI+KG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmF1ZGlvTWVkaWFTZWxlY3Rl
ZEluZGV4KCkpXTsKICAgICBbbWFuYWdlciBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
Om1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSB3
aXRoU2VsZWN0ZWRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihtX3BsYXliYWNrU2Vzc2lv
bk1vZGVsLT5sZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkpXTsKKyAgICBtYW5hZ2VyLmFsbG93
c1RvdWNoQmFyU2NydWJiaW5nID0gbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+YWxsb3dzVG91Y2hC
YXJTY3J1YmJpbmcoKTsKIH0KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6
OnVwZGF0ZVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVGltaW5nKGRvdWJsZSBjdXJyZW50VGltZSwg
ZG91YmxlIGFuY2hvclRpbWUsIGRvdWJsZSBwbGF5YmFja1JhdGUsIGJvb2wgaXNQbGF5aW5nKQpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjE3NzQzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTctMDYtMDIgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGlmeSBOZXRmbGl4IGNvbnRyb2xz
TWFuYWdlciBxdWlyayB0byBwcmV2ZW50IG9ubHkgc2NydWJiaW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI4ODEKKyAgICAgICAgLWFuZCBjb3Jy
ZXNwb25kaW5nLQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMjIyODY2MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsdW1iaW5nIGZvciBhbGxvd3NU
b3VjaEJhclNjcnViYmluZy4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbENvbnRleHQ6OnNldEFsbG93c1RvdWNoQmFyU2NydWJiaW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRBbGxvd3NUb3VjaEJh
clNjcnViYmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0OjphbGxvd3NUb3VjaEJhclNjcnViYmluZ0NoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphbGxvd3NUb3VjaEJhclNjcnViYmluZ0No
YW5nZWQpOgorCiAyMDE3LTA2LTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBhcmUgbm90IHVzaW5nIHVuaXF1ZSBwYXRo
cyBkdXJpbmcgdGVzdCBydW5zCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCShy
ZXZpc2lvbiAyMTc3MjYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFjayhib29sLCBXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCk7CiAgICAg
dm9pZCBzZXRNdXRlZChib29sKTsKKyAgICB2b2lkIHNldEFsbG93c1RvdWNoQmFyU2NydWJiaW5n
KGJvb2wpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbENvbnRleHQ7CkBAIC0xMjgsNiArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgZXh0
ZXJuYWxQbGF5YmFja0xvY2FsaXplZERldmljZU5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2V4dGVybmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lOyB9CiAgICAgYm9vbCB3aXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fd2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQ7IH0KICAgICBib29sIGlzTXV0ZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX211dGVkOyB9CisgICAgYm9vbCBhbGxvd3NUb3VjaEJhclNjcnViYmluZygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYWxsb3dzVG91Y2hCYXJTY3J1YmJpbmc7IH0KIAogICAgIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOwogICAgIHVpbnQ2NF90IG1f
Y29udGV4dElkOwpAQCAtMTUxLDYgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZXh0
ZXJuYWxQbGF5YmFja0xvY2FsaXplZERldmljZU5hbWU7CiAgICAgYm9vbCBtX3dpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9hbGxvd3NUb3VjaEJhclNjcnViYmluZyB7IHRydWUgfTsKIH07CiAKIGNs
YXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgewpAQCAtMTk3LDYgKzIwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRSYXRlKHVpbnQ2
NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGRvdWJsZSByYXRlKTsKICAgICB2b2lkIGhh
bmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZSh1aW50NjRfdCwgU3RyaW5nKSBjb25zdDsK
ICAgICB2b2lkIHNldE11dGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBtdXRlZCk7CisgICAg
dm9pZCBzZXRBbGxvd3NUb3VjaEJhclNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
YWxsb3dzVG91Y2hCYXJTY3J1YmJpbmcpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcgogICAgIHZvaWQgcGxheSh1aW50NjRfdCBjb250ZXh0SWQpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyMTc3MjYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm8KICAgICBT
ZXRNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgbXV0ZWQpOwogICAgIFNldFVwUGxheWJh
Y2tDb250cm9sc01hbmFnZXJXaXRoSUQodWludDY0X3QgY29udGV4dElkKQogICAgIENsZWFyUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoKQorICAgIFNldEFsbG93c1RvdWNoQmFyU2NydWJiaW5nKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCBhbGxvd3NUb3VjaEJhclNjcnViYmluZykKIAogICAgIEhh
bmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZSh1aW50NjRfdCBjb250ZXh0SWQsIFN0cmlu
ZyBpZCkKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQkocmV2aXNpb24g
MjE3NzI2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUxLDYgKzI1MSwxMyBAQCB2
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0CiAgICAgICAgIGNsaWVudC0+
bXV0ZWRDaGFuZ2VkKG11dGVkKTsKIH0KIAordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENv
bnRleHQ6OnNldEFsbG93c1RvdWNoQmFyU2NydWJiaW5nKGJvb2wgYWxsb3dzVG91Y2hCYXJTY3J1
YmJpbmcpCit7CisgICAgbV9hbGxvd3NUb3VjaEJhclNjcnViYmluZyA9IGFsbG93c1RvdWNoQmFy
U2NydWJiaW5nOworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBj
bGllbnQtPmFsbG93c1RvdWNoQmFyU2NydWJiaW5nQ2hhbmdlZChhbGxvd3NUb3VjaEJhclNjcnVi
YmluZyk7Cit9CisKICNwcmFnbWEgbWFyayAtIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eQogCiBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UpCkBAIC00MzIsNiAr
NDM5LDExIEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXQKICAgICBl
bnN1cmVNb2RlbChjb250ZXh0SWQpLnNldE11dGVkKG11dGVkKTsKIH0KIAordm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEFsbG93c1RvdWNoQmFyU2NydWJiaW5nKHVpbnQ2
NF90IGNvbnRleHRJZCwgYm9vbCBhbGxvd3NUb3VjaEJhclNjcnViYmluZykKK3sKKyAgICBlbnN1
cmVNb2RlbChjb250ZXh0SWQpLnNldEFsbG93c1RvdWNoQmFyU2NydWJiaW5nKGFsbG93c1RvdWNo
QmFyU2NydWJiaW5nKTsKK30KKwogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNldER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQogewogICAg
IGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0RHVyYXRpb24oZHVyYXRpb24pOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLmgJKHJldmlzaW9uIDIxNzcyNikKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC04OCw2ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hh
bmdlZChib29sIGVuYWJsZWQsIFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRl
cm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXZpY2VOYW1l
KSBmaW5hbDsKICAgICB2b2lkIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChi
b29sKSBmaW5hbDsKICAgICB2b2lkIG11dGVkQ2hhbmdlZChib29sKSBmaW5hbDsKKyAgICB2b2lk
IGFsbG93c1RvdWNoQmFyU2NydWJiaW5nQ2hhbmdlZChib29sKSBmaW5hbDsKIAogICAgIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQoV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciYs
IHVpbnQ2NF90IGNvbnRleHRJZCk7CiAKQEAgLTEzNyw2ICsxMzgsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
ZW5hYmxlZCwgV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJh
Y2tUYXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSk7CiAgICAgdm9pZCB3aXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29s
KTsKICAgICB2b2lkIG11dGVkQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wpOworICAg
IHZvaWQgYWxsb3dzVG91Y2hCYXJTY3J1YmJpbmdDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Ym9vbCk7CiAKICAgICAvLyBNZXNzYWdlcyBmcm9tIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eQogICAgIHZvaWQgcGxheSh1aW50NjRfdCBjb250ZXh0SWQpOwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlci5tbQkocmV2aXNpb24gMjE3NzI2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTUsNiArMTU1LDEyIEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dDoKICAgICAgICAgbV9tYW5hZ2VyLT5tdXRlZENoYW5nZWQobV9jb250ZXh0SWQsIG11dGVkKTsK
IH0KIAordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjphbGxvd3NUb3Vj
aEJhclNjcnViYmluZ0NoYW5nZWQoYm9vbCBhbGxvd3NUb3VjaEJhclNjcnViYmluZykKK3sKKyAg
ICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPmFsbG93c1RvdWNoQmFyU2NydWJi
aW5nQ2hhbmdlZChtX2NvbnRleHRJZCwgYWxsb3dzVG91Y2hCYXJTY3J1YmJpbmcpOworfQorCiAj
cHJhZ21hIG1hcmsgLSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyCiAKIFJlZjxXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyPiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGUoV2ViUGFn
ZSYgcGFnZSkKQEAgLTM2OSw2ICszNzUsMTEgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjptdXRlZENoYQogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpTZXRNdXRlZChjb250ZXh0SWQsIG11dGVkKSk7CiB9CiAKK3ZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YWxsb3dzVG91Y2hCYXJTY3J1YmJpbmdDaGFuZ2Vk
KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBhbGxvd3NUb3VjaEJhclNjcnViYmluZykKK3sKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
U2V0QWxsb3dzVG91Y2hCYXJTY3J1YmJpbmcoY29udGV4dElkLCBhbGxvd3NUb3VjaEJhclNjcnVi
YmluZyksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCiAjcHJhZ21hIG1hcmsgTWVzc2FnZXMgZnJv
bSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6CiAKIHZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCg==
</data>
<flag name="review"
          id="332838"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>