<?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>172114</bug_id>
          
          <creation_ts>2017-05-15 05:30:32 -0700</creation_ts>
          <short_desc>Align WebKitCSSMatrix stringifier with spec for DOMMatrix</short_desc>
          <delta_ts>2017-05-16 14:14:20 -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>DOM</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=172130</see_also>
          <bug_file_loc>https://drafts.fxtf.org/geometry/#dom-dommatrixreadonly-stringifier</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>FromImplementor</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Pieters (:zcorpan)">zcorpan</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1308635</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Pieters (:zcorpan)">zcorpan</who>
    <bug_when>2017-05-15 05:30:32 -0700</bug_when>
    <thetext>See
https://github.com/w3c/fxtf-drafts/issues/120
https://github.com/w3c/fxtf-drafts/pull/148
https://github.com/w3c/web-platform-tests/pull/5885

In WebKit the numbers are serialized always with 6 digits, per spec it should use JS&apos;s ToString.

Fail	WebKitCSSMatrix stringifier: identity (2d)	assert_equals: expected &quot;matrix(1, 0, 0, 1, 0, 0)&quot; but got &quot;matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)&quot;


NaN and Infinity values should cause an InvalidStateError exception in the stringifier.

http://software.hixie.ch/utilities/js/live-dom-viewer/saved/5168

&lt;!DOCTYPE html&gt;
&lt;script&gt;
var m = new WebKitCSSMatrix();
m.a = NaN;
m.b = Infinity;
m.c = -Infinity;
w(String(m));
&lt;/script&gt;

log: matrix(nan, inf, -inf, 1.000000, 0.000000, 0.000000)


Related bugs:
https://bugs.webkit.org/show_bug.cgi?id=153675
https://bugs.webkit.org/show_bug.cgi?id=110001
https://bugs.webkit.org/show_bug.cgi?id=163505</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308675</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-15 09:34:29 -0700</bug_when>
    <thetext>(In reply to Simon Pieters from comment #0)
&gt; See
&gt; https://github.com/w3c/fxtf-drafts/issues/120
&gt; https://github.com/w3c/fxtf-drafts/pull/148
&gt; https://github.com/w3c/web-platform-tests/pull/5885
&gt; 
&gt; In WebKit the numbers are serialized always with 6 digits, per spec it
&gt; should use JS&apos;s ToString.
&gt; 
&gt; Fail	WebKitCSSMatrix stringifier: identity (2d)	assert_equals: expected
&gt; &quot;matrix(1, 0, 0, 1, 0, 0)&quot; but got &quot;matrix(1.000000, 0.000000, 0.000000,
&gt; 1.000000, 0.000000, 0.000000)&quot;

Ok, it seems Firefox does this. Seems like a good thing to fix.

&gt; 
&gt; 
&gt; NaN and Infinity values should cause an InvalidStateError exception in the
&gt; stringifier.
&gt; 
&gt; http://software.hixie.ch/utilities/js/live-dom-viewer/saved/5168
&gt; 
&gt; &lt;!DOCTYPE html&gt;
&gt; &lt;script&gt;
&gt; var m = new WebKitCSSMatrix();
&gt; m.a = NaN;
&gt; m.b = Infinity;
&gt; m.c = -Infinity;
&gt; w(String(m));
&gt; &lt;/script&gt;
&gt; 
&gt; log: matrix(nan, inf, -inf, 1.000000, 0.000000, 0.000000)

That part, I am less sure of. No other browser seems to throw and I expect compatibility risks if we started throwing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308737</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-15 11:39:42 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #1)
&gt; (In reply to Simon Pieters from comment #0)
&gt; &gt; See
&gt; &gt; https://github.com/w3c/fxtf-drafts/issues/120
&gt; &gt; https://github.com/w3c/fxtf-drafts/pull/148
&gt; &gt; https://github.com/w3c/web-platform-tests/pull/5885
&gt; &gt; 
&gt; &gt; In WebKit the numbers are serialized always with 6 digits, per spec it
&gt; &gt; should use JS&apos;s ToString.
&gt; &gt; 
&gt; &gt; Fail	WebKitCSSMatrix stringifier: identity (2d)	assert_equals: expected
&gt; &gt; &quot;matrix(1, 0, 0, 1, 0, 0)&quot; but got &quot;matrix(1.000000, 0.000000, 0.000000,
&gt; &gt; 1.000000, 0.000000, 0.000000)&quot;
&gt; 
&gt; Ok, it seems Firefox does this. Seems like a good thing to fix.
&gt; 
&gt; &gt; 
&gt; &gt; 
&gt; &gt; NaN and Infinity values should cause an InvalidStateError exception in the
&gt; &gt; stringifier.
&gt; &gt; 
&gt; &gt; http://software.hixie.ch/utilities/js/live-dom-viewer/saved/5168
&gt; &gt; 
&gt; &gt; &lt;!DOCTYPE html&gt;
&gt; &gt; &lt;script&gt;
&gt; &gt; var m = new WebKitCSSMatrix();
&gt; &gt; m.a = NaN;
&gt; &gt; m.b = Infinity;
&gt; &gt; m.c = -Infinity;
&gt; &gt; w(String(m));
&gt; &gt; &lt;/script&gt;
&gt; &gt; 
&gt; &gt; log: matrix(nan, inf, -inf, 1.000000, 0.000000, 0.000000)
&gt; 
&gt; That part, I am less sure of. No other browser seems to throw and I expect
&gt; compatibility risks if we started throwing.

Looks like Simon is Ok with this change so I&apos;ll look into doing this part too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308749</commentid>
    <comment_count>3</comment_count>
      <attachid>310154</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-15 12:18:35 -0700</bug_when>
    <thetext>Created attachment 310154
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308762</commentid>
    <comment_count>4</comment_count>
      <attachid>310156</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-15 12:50:26 -0700</bug_when>
    <thetext>Created attachment 310156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308787</commentid>
    <comment_count>5</comment_count>
      <attachid>310156</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-15 14:11:58 -0700</bug_when>
    <thetext>Comment on attachment 310156
Patch

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

&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:1702
&gt; +        &amp;&amp; std::isfinite(m_matrix[3][3]);

What happened to m_matrix[3][0], m_matrix[3][1], m_matrix[3][2] ?

&gt; LayoutTests/fast/css/matrix-stringifier-expected.txt:19
&gt; +FAIL DOMMatrix stringifier: identity (2d) undefined is not a constructor (evaluating &apos;new self[constr]()&apos;)
&gt; +FAIL DOMMatrix stringifier: integer 2d undefined is not a constructor (evaluating &apos;new self[constr](&quot;matrix(1, 0, 0, 1, 0, 0)&quot;)&apos;)
&gt; +FAIL DOMMatrix stringifier: integer 3d undefined is not a constructor (evaluating &apos;new self[constr](&quot;matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)&quot;)&apos;)
&gt; +FAIL DOMMatrix stringifier: floating point 2d undefined is not a constructor (evaluating &apos;new self[constr](&quot;matrix(0.1, 0.2, 0.3, 0.4, 0.5, 0.6)&quot;)&apos;)
&gt; +FAIL DOMMatrix stringifier: floating point 3d undefined is not a constructor (evaluating &apos;new self[constr](&quot;matrix3d(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7)&quot;)&apos;)
&gt; +FAIL DOMMatrix stringifier: NaN undefined is not a constructor (evaluating &apos;new self[constr]()&apos;)
&gt; +FAIL DOMMatrix stringifier: Infinity undefined is not a constructor (evaluating &apos;new self[constr]()&apos;)
&gt; +FAIL DOMMatrix stringifier: -Infinity undefined is not a constructor (evaluating &apos;new self[constr]()&apos;)
&gt; +FAIL ${constr}.toString should be enumerable undefined is not an object (evaluating &apos;self[constr].prototype&apos;)
&gt; +FAIL DOMMatrixReadOnly stringifier: identity (2d) undefined is not a constructor (evaluating &apos;new self[constr]()&apos;)
&gt; +FAIL DOMMatrixReadOnly stringifier: integer 2d undefined is not a constructor (evaluating &apos;new self[constr](&quot;matrix(1, 0, 0, 1, 0, 0)&quot;)&apos;)
&gt; +FAIL DOMMatrixReadOnly stringifier: integer 3d undefined is not a constructor (evaluating &apos;new self[constr](&quot;matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)&quot;)&apos;)
&gt; +FAIL DOMMatrixReadOnly stringifier: floating point 2d undefined is not a constructor (evaluating &apos;new self[constr](&quot;matrix(0.1, 0.2, 0.3, 0.4, 0.5, 0.6)&quot;)&apos;)
&gt; +FAIL DOMMatrixReadOnly stringifier: floating point 3d undefined is not a constructor (evaluating &apos;new self[constr](&quot;matrix3d(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7)&quot;)&apos;)
&gt; +FAIL DOMMatrixReadOnly stringifier: NaN undefined is not a constructor (evaluating &apos;new self[constr]()&apos;)
&gt; +FAIL DOMMatrixReadOnly stringifier: Infinity undefined is not a constructor (evaluating &apos;new self[constr]()&apos;)
&gt; +FAIL DOMMatrixReadOnly stringifier: -Infinity undefined is not a constructor (evaluating &apos;new self[constr]()&apos;)
&gt; +FAIL ${constr}.toString should be enumerable undefined is not an object (evaluating &apos;self[constr].prototype&apos;)

I assume these fails are expected at this point?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308790</commentid>
    <comment_count>6</comment_count>
      <attachid>310156</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-15 14:15:43 -0700</bug_when>
    <thetext>Comment on attachment 310156
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:1702
&gt;&gt; +        &amp;&amp; std::isfinite(m_matrix[3][3]);
&gt; 
&gt; What happened to m_matrix[3][0], m_matrix[3][1], m_matrix[3][2] ?

Well, this is an excellent question :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308791</commentid>
    <comment_count>7</comment_count>
      <attachid>310156</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-15 14:16:53 -0700</bug_when>
    <thetext>Comment on attachment 310156
Patch

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

&gt;&gt; LayoutTests/fast/css/matrix-stringifier-expected.txt:19
&gt;&gt; +FAIL ${constr}.toString should be enumerable undefined is not an object (evaluating &apos;self[constr].prototype&apos;)
&gt; 
&gt; I assume these fails are expected at this point?

And yes, those are expected at this point since we do not support DOMMatrix or DOMMatrixReadOnly yet.

That said, the ${constr} in the message is a bug, I&apos;ll fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308792</commentid>
    <comment_count>8</comment_count>
      <attachid>310162</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-15 14:21:25 -0700</bug_when>
    <thetext>Created attachment 310162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308826</commentid>
    <comment_count>9</comment_count>
      <attachid>310162</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-15 15:08:00 -0700</bug_when>
    <thetext>Comment on attachment 310162
Patch

Clearing flags on attachment: 310162

Committed r216881: &lt;http://trac.webkit.org/changeset/216881&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308827</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-15 15:08:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309282</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Pieters (:zcorpan)">zcorpan</who>
    <bug_when>2017-05-16 14:14:20 -0700</bug_when>
    <thetext>Let me know if throwing causes problems. The reason I think it should be OK is because the current behavior will throw upon parsing anyway:

var m = new WebKitCSSMatrix();
m.a = NaN;
var m2 = new WebKitCSSMatrix(String(m)); // SyntaxError (DOM Exception 12): The string did not match the expected pattern.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310154</attachid>
            <date>2017-05-15 12:18:35 -0700</date>
            <delta_ts>2017-05-15 12:50:25 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172114_WebKitCSSMatrix_wip.patch</filename>
            <type>text/plain</type>
            <size>11666</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL21hdHJpeC1zdHJpbmdpZmllci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9tYXRyaXgtc3RyaW5naWZpZXItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMjgyMzFlODJm
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL21hdHJpeC1zdHJpbmdp
Zmllci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNiBAQAorCitGQUlMIERPTU1hdHJpeCBzdHJp
bmdpZmllcjogaWRlbnRpdHkgKDJkKSB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2
YWx1YXRpbmcgJ25ldyBzZWxmW2NvbnN0cl0oKScpCitGQUlMIERPTU1hdHJpeCBzdHJpbmdpZmll
cjogaW50ZWdlciAyZCB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcg
J25ldyBzZWxmW2NvbnN0cl0oIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIpJykKK0ZBSUwgRE9N
TWF0cml4IHN0cmluZ2lmaWVyOiBpbnRlZ2VyIDNkIHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1
Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNlbGZbY29uc3RyXSgibWF0cml4M2QoMSwgMCwgMCwgMCwg
MCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSkiKScpCitGQUlMIERPTU1hdHJpeCBz
dHJpbmdpZmllcjogZmxvYXRpbmcgcG9pbnQgMmQgdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVj
dG9yIChldmFsdWF0aW5nICduZXcgc2VsZltjb25zdHJdKCJtYXRyaXgoMC4xLCAwLjIsIDAuMywg
MC40LCAwLjUsIDAuNikiKScpCitGQUlMIERPTU1hdHJpeCBzdHJpbmdpZmllcjogZmxvYXRpbmcg
cG9pbnQgM2QgdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcg
c2VsZltjb25zdHJdKCJtYXRyaXgzZCgwLjEsIDAuMiwgMC4zLCAwLjQsIDAuNSwgMC42LCAwLjcs
IDAuOCwgMC45LCAwLjEsIDAuMiwgMC4zLCAwLjQsIDAuNSwgMC42LCAwLjcpIiknKQorRkFJTCBE
T01NYXRyaXggc3RyaW5naWZpZXI6IE5hTiB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3Ig
KGV2YWx1YXRpbmcgJ25ldyBzZWxmW2NvbnN0cl0oKScpCitGQUlMIERPTU1hdHJpeCBzdHJpbmdp
ZmllcjogSW5maW5pdHkgdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5n
ICduZXcgc2VsZltjb25zdHJdKCknKQorRkFJTCBET01NYXRyaXggc3RyaW5naWZpZXI6IC1JbmZp
bml0eSB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBzZWxm
W2NvbnN0cl0oKScpCitGQUlMIERPTU1hdHJpeFJlYWRPbmx5IHN0cmluZ2lmaWVyOiBpZGVudGl0
eSAoMmQpIHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNl
bGZbY29uc3RyXSgpJykKK0ZBSUwgRE9NTWF0cml4UmVhZE9ubHkgc3RyaW5naWZpZXI6IGludGVn
ZXIgMmQgdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgc2Vs
Zltjb25zdHJdKCJtYXRyaXgoMSwgMCwgMCwgMSwgMCwgMCkiKScpCitGQUlMIERPTU1hdHJpeFJl
YWRPbmx5IHN0cmluZ2lmaWVyOiBpbnRlZ2VyIDNkIHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1
Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNlbGZbY29uc3RyXSgibWF0cml4M2QoMSwgMCwgMCwgMCwg
MCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSkiKScpCitGQUlMIERPTU1hdHJpeFJl
YWRPbmx5IHN0cmluZ2lmaWVyOiBmbG9hdGluZyBwb2ludCAyZCB1bmRlZmluZWQgaXMgbm90IGEg
Y29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBzZWxmW2NvbnN0cl0oIm1hdHJpeCgwLjEsIDAu
MiwgMC4zLCAwLjQsIDAuNSwgMC42KSIpJykKK0ZBSUwgRE9NTWF0cml4UmVhZE9ubHkgc3RyaW5n
aWZpZXI6IGZsb2F0aW5nIHBvaW50IDNkIHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAo
ZXZhbHVhdGluZyAnbmV3IHNlbGZbY29uc3RyXSgibWF0cml4M2QoMC4xLCAwLjIsIDAuMywgMC40
LCAwLjUsIDAuNiwgMC43LCAwLjgsIDAuOSwgMC4xLCAwLjIsIDAuMywgMC40LCAwLjUsIDAuNiwg
MC43KSIpJykKK0ZBSUwgRE9NTWF0cml4UmVhZE9ubHkgc3RyaW5naWZpZXI6IE5hTiB1bmRlZmlu
ZWQgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBzZWxmW2NvbnN0cl0oKScp
CitGQUlMIERPTU1hdHJpeFJlYWRPbmx5IHN0cmluZ2lmaWVyOiBJbmZpbml0eSB1bmRlZmluZWQg
aXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBzZWxmW2NvbnN0cl0oKScpCitG
QUlMIERPTU1hdHJpeFJlYWRPbmx5IHN0cmluZ2lmaWVyOiAtSW5maW5pdHkgdW5kZWZpbmVkIGlz
IG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgc2VsZltjb25zdHJdKCknKQorUEFT
UyBXZWJLaXRDU1NNYXRyaXggc3RyaW5naWZpZXI6IGlkZW50aXR5ICgyZCkgCitQQVNTIFdlYktp
dENTU01hdHJpeCBzdHJpbmdpZmllcjogaW50ZWdlciAyZCAKK1BBU1MgV2ViS2l0Q1NTTWF0cml4
IHN0cmluZ2lmaWVyOiBpbnRlZ2VyIDNkIAorUEFTUyBXZWJLaXRDU1NNYXRyaXggc3RyaW5naWZp
ZXI6IGZsb2F0aW5nIHBvaW50IDJkIAorUEFTUyBXZWJLaXRDU1NNYXRyaXggc3RyaW5naWZpZXI6
IGZsb2F0aW5nIHBvaW50IDNkIAorUEFTUyBXZWJLaXRDU1NNYXRyaXggc3RyaW5naWZpZXI6IE5h
TiAKK1BBU1MgV2ViS2l0Q1NTTWF0cml4IHN0cmluZ2lmaWVyOiBJbmZpbml0eSAKK1BBU1MgV2Vi
S2l0Q1NTTWF0cml4IHN0cmluZ2lmaWVyOiAtSW5maW5pdHkgCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzL21hdHJpeC1zdHJpbmdpZmllci5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvbWF0cml4LXN0cmluZ2lmaWVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmFhZWY1OTQwODJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvbWF0cml4LXN0cmluZ2lmaWVyLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitbIkRPTU1hdHJpeCIsICJE
T01NYXRyaXhSZWFkT25seSIsICJXZWJLaXRDU1NNYXRyaXgiXS5mb3JFYWNoKGNvbnN0ciA9PiB7
CisgICAgY29uc3QgcHJlZml4ID0gYCR7Y29uc3RyfSBzdHJpbmdpZmllcjpgOworICAgIHRlc3Qo
KCkgPT4geworICAgICAgICBjb25zdCBtYXRyaXggPSBuZXcgc2VsZltjb25zdHJdKCk7CisgICAg
ICAgIGFzc2VydF9lcXVhbHMoU3RyaW5nKG1hdHJpeCksICJtYXRyaXgoMSwgMCwgMCwgMSwgMCwg
MCkiKTsKKyAgICB9LCBgJHtwcmVmaXh9IGlkZW50aXR5ICgyZClgKTsKKworICAgIHRlc3QoKCkg
PT4geworICAgICAgICBjb25zdCBtYXRyaXggPSBuZXcgc2VsZltjb25zdHJdKCJtYXRyaXgoMSwg
MCwgMCwgMSwgMCwgMCkiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhTdHJpbmcobWF0cml4KSwg
Im1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIpOworICAgIH0sIGAke3ByZWZpeH0gaW50ZWdlciAy
ZGApOworIAorICAgIHRlc3QoKCkgPT4geworICAgICAgICBjb25zdCBtYXRyaXggPSBuZXcgc2Vs
Zltjb25zdHJdKCJtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAw
LCAwLCAwLCAxKSIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKFN0cmluZyhtYXRyaXgpLCAibWF0
cml4KDEsIDAsIDAsIDEsIDAsIDApIik7CisgICAgfSwgYCR7cHJlZml4fSBpbnRlZ2VyIDNkYCk7
CisKKyAgICB0ZXN0KCgpID0+IHsKKyAgICAgICAgY29uc3QgbWF0cml4ID0gbmV3IHNlbGZbY29u
c3RyXSgibWF0cml4KDAuMSwgMC4yLCAwLjMsIDAuNCwgMC41LCAwLjYpIik7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoU3RyaW5nKG1hdHJpeCksICJtYXRyaXgoMC4xLCAwLjIsIDAuMywgMC40LCAw
LjUsIDAuNikiKTsKKyAgICB9LCBgJHtwcmVmaXh9IGZsb2F0aW5nIHBvaW50IDJkYCkKKworICAg
IHRlc3QoKCkgPT4geworICAgICAgICBjb25zdCBtYXRyaXggPSBuZXcgc2VsZltjb25zdHJdKCJt
YXRyaXgzZCgwLjEsIDAuMiwgMC4zLCAwLjQsIDAuNSwgMC42LCAwLjcsIDAuOCwgMC45LCAwLjEs
IDAuMiwgMC4zLCAwLjQsIDAuNSwgMC42LCAwLjcpIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
U3RyaW5nKG1hdHJpeCksICJtYXRyaXgzZCgwLjEsIDAuMiwgMC4zLCAwLjQsIDAuNSwgMC42LCAw
LjcsIDAuOCwgMC45LCAwLjEsIDAuMiwgMC4zLCAwLjQsIDAuNSwgMC42LCAwLjcpIik7CisgICAg
fSwgYCR7cHJlZml4fSBmbG9hdGluZyBwb2ludCAzZGApOworCisgICAgW05hTiwgSW5maW5pdHks
IC1JbmZpbml0eV0uZm9yRWFjaChudW0gPT4geworICAgICAgICB0ZXN0KCgpID0+IHsKKyAgICAg
ICAgICAgIGNvbnN0IG1hdHJpeCA9IG5ldyBzZWxmW2NvbnN0cl0oKTsKKyAgICAgICAgICAgIG1h
dHJpeC5hID0gbnVtOworICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJy
b3IiLCAoKSA9PiBTdHJpbmcobWF0cml4KSk7CisgICAgICAgIH0sIGAke3ByZWZpeH0gJHtudW19
YCk7CisgICAgfSk7Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAppbmRleCAxY2I3NjY2ODg1ZC4uZjhlNjQ5NmQwZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtRnVuY3Rp
b25zLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTk3LDE2ICsxOTgs
NjEgQEAgUmVmPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpza2V3WShkb3VibGUg
YW5nbGUpIGNvbnN0CiAgICAgcmV0dXJuIG1hdHJpeDsKIH0KIAotU3RyaW5nIFdlYktpdENTU01h
dHJpeDo6dG9TdHJpbmcoKSBjb25zdAorRXhjZXB0aW9uT3I8U3RyaW5nPiBXZWJLaXRDU1NNYXRy
aXg6OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRSAtIE5lZWQgdG8gZW5zdXJlIHZh
bGlkIENTUyBmbG9hdGluZyBwb2ludCB2YWx1ZXMgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDY3NCkKLSAgICBpZiAobV9tYXRyaXguaXNBZmZpbmUoKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJtYXRyaXgoJWYsICVmLCAlZiwgJWYsICVmLCAlZiki
LCBtX21hdHJpeC5hKCksIG1fbWF0cml4LmIoKSwgbV9tYXRyaXguYygpLCBtX21hdHJpeC5kKCks
IG1fbWF0cml4LmUoKSwgbV9tYXRyaXguZigpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQo
Im1hdHJpeDNkKCVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYs
ICVmLCAlZiwgJWYsICVmKSIsCi0gICAgICAgIG1fbWF0cml4Lm0xMSgpLCBtX21hdHJpeC5tMTIo
KSwgbV9tYXRyaXgubTEzKCksIG1fbWF0cml4Lm0xNCgpLAotICAgICAgICBtX21hdHJpeC5tMjEo
KSwgbV9tYXRyaXgubTIyKCksIG1fbWF0cml4Lm0yMygpLCBtX21hdHJpeC5tMjQoKSwKLSAgICAg
ICAgbV9tYXRyaXgubTMxKCksIG1fbWF0cml4Lm0zMigpLCBtX21hdHJpeC5tMzMoKSwgbV9tYXRy
aXgubTM0KCksCi0gICAgICAgIG1fbWF0cml4Lm00MSgpLCBtX21hdHJpeC5tNDIoKSwgbV9tYXRy
aXgubTQzKCksIG1fbWF0cml4Lm00NCgpKTsKKyAgICBpZiAoIW1fbWF0cml4LmNvbnRhaW5zT25s
eUZpbml0ZVZhbHVlcygpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9TVEFU
RV9FUlIsIEFTQ0lJTGl0ZXJhbCgiTWF0cml4IGNvbnRhaW5zIG5vbi1maW5pdGUgdmFsdWVzIikg
fTsKKworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBpZiAobV9tYXRyaXguaXNBZmZp
bmUoKSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm1hdHJpeCgiKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobV9tYXRy
aXguYSgpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobV9tYXRyaXgu
YigpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobV9tYXRyaXguYygp
KSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobV9tYXRyaXguZCgpKSk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobV9tYXRyaXguZSgpKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobV9tYXRyaXguZigpKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJtYXRyaXgzZCgiKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobV9t
YXRyaXgubTExKCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChtX21h
dHJpeC5tMTIoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG1fbWF0
cml4Lm0xMygpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobV9tYXRy
aXgubTE0KCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChtX21hdHJp
eC5tMjEoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG1fbWF0cml4
Lm0yMigpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobV9tYXRyaXgu
bTIzKCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChtX21hdHJpeC5t
MjQoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG1fbWF0cml4Lm0z
MSgpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobV9tYXRyaXgubTMy
KCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChtX21hdHJpeC5tMzMo
KSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG1fbWF0cml4Lm0zNCgp
KSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobV9tYXRyaXgubTQxKCkp
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChtX21hdHJpeC5tNDIoKSkp
OworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG1fbWF0cml4Lm00MygpKSk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobV9tYXRyaXgubTQ0KCkpKTsK
KyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTTWF0cml4LmgKaW5kZXggODRjMDI3OWJmNTAuLmJmM2MwZTNmNjFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU01hdHJpeC5oCkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWF0cml4OyB9CiAKLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKyAgICBFeGNlcHRpb25P
cjxTdHJpbmc+IHRvU3RyaW5nKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0Q1NTTWF0
cml4KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U01hdHJpeC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAppbmRl
eCA1MzMzNzc2NjAwNS4uMTVmMWYzMjAzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NNYXRyaXguaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NN
YXRyaXguaWRsCkBAIC05MSw1ICs5MSw1IEBACiAgICAgLy8gUGFzc2luZyBhIE5hTiB3aWxsIHVz
ZSBhIHZhbHVlIG9mIDAuCiAgICAgV2ViS2l0Q1NTTWF0cml4IHNrZXdZKG9wdGlvbmFsIHVucmVz
dHJpY3RlZCBkb3VibGUgYW5nbGUgPSBOYU4pOwogCi0gICAgW05vdEVudW1lcmFibGVdIERPTVN0
cmluZyB0b1N0cmluZygpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHRvU3Ry
aW5nKCk7IC8vIEZJWE1FOiBTaG91bGQgYmUgc3RyaW5naWZpZXI7IG9uY2Ugd2Ugc3VwcG9ydCBp
dC4KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCmluZGV4IDI0Mjdi
MDFjMTdhLi4yZDlhNWYxMTg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJp
eC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAi
TGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNpbmNsdWRlIDxjbWF0aD4K
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAKQEAgLTE2OTMsNiArMTY5NCwxNCBAQCBib29sIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojppc0lu
dGVnZXJUcmFuc2xhdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgVHJh
bnNmb3JtYXRpb25NYXRyaXg6OmNvbnRhaW5zT25seUZpbml0ZVZhbHVlcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHN0ZDo6aXNmaW5pdGUobV9tYXRyaXhbMF1bMF0pICYmIHN0ZDo6aXNmaW5pdGUo
bV9tYXRyaXhbMF1bMV0pICYmIHN0ZDo6aXNmaW5pdGUobV9tYXRyaXhbMF1bMl0pICYmIHN0ZDo6
aXNmaW5pdGUobV9tYXRyaXhbMF1bM10pCisgICAgICAgICYmIHN0ZDo6aXNmaW5pdGUobV9tYXRy
aXhbMV1bMF0pICYmIHN0ZDo6aXNmaW5pdGUobV9tYXRyaXhbMV1bMV0pICYmIHN0ZDo6aXNmaW5p
dGUobV9tYXRyaXhbMV1bMl0pICYmIHN0ZDo6aXNmaW5pdGUobV9tYXRyaXhbMV1bM10pCisgICAg
ICAgICYmIHN0ZDo6aXNmaW5pdGUobV9tYXRyaXhbMl1bMF0pICYmIHN0ZDo6aXNmaW5pdGUobV9t
YXRyaXhbMl1bMV0pICYmIHN0ZDo6aXNmaW5pdGUobV9tYXRyaXhbMl1bMl0pICYmIHN0ZDo6aXNm
aW5pdGUobV9tYXRyaXhbMl1bM10pCisgICAgICAgICYmIHN0ZDo6aXNmaW5pdGUobV9tYXRyaXhb
M11bM10pOworfQorCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
dG8yZFRyYW5zZm9ybSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4
KG1fbWF0cml4WzBdWzBdLCBtX21hdHJpeFswXVsxXSwgMCwgbV9tYXRyaXhbMF1bM10sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggNWRiMGMwMDJhMmQuLjU2ZjIyNWEz
YTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCkBAIC0zODAsNiArMzgw
LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0ludGVnZXJUcmFuc2xhdGlvbigpIGNvbnN0Owog
CisgICAgYm9vbCBjb250YWluc09ubHlGaW5pdGVWYWx1ZXMoKSBjb25zdDsKKwogICAgIC8vIFJl
dHVybnMgdGhlIG1hdHJpeCB3aXRob3V0IDNEIGNvbXBvbmVudHMuCiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggdG8yZFRyYW5zZm9ybSgpIGNvbnN0OwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310156</attachid>
            <date>2017-05-15 12:50:26 -0700</date>
            <delta_ts>2017-05-15 14:21:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172114-20170515125100.patch</filename>
            <type>text/plain</type>
            <size>18360</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRlNzlmODZmNTk0NzQ0
ZjAyN2M0NGMwYmI3NmUxZjVkZTg5OTAwNi4uZGUxNThmNjViNzE2OGU4MDhlZTk3MmY0NGI4NGM2
ZjA1YWY2MTIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA1LTE1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWxpZ24gV2ViS2l0Q1NTTWF0
cml4IHN0cmluZ2lmaWVyIHdpdGggc3BlYyBmb3IgRE9NTWF0cml4CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGlnbiBXZWJLaXRDU1NNYXRyaXggc3Ry
aW5naWZpZXIgd2l0aCBzcGVjIGZvciBET01NYXRyaXggYWZ0ZXI6CisgICAgICAgIC0gaHR0cHM6
Ly9naXRodWIuY29tL3czYy9meHRmLWRyYWZ0cy9wdWxsLzE0OAorCisgICAgICAgIFRoZSBmb2xs
b3dpbmcgY2hhbmdlcyB3ZXJlIG1hZGU6CisgICAgICAgIC0gVXNlIEVjbWFTY3JpcHQncyBUb1N0
cmluZygpIHRvIGNvbnZlcnQgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIHRvIHN0cmluZworICAgICAg
ICAtIFRocm93IGFuIGludmFsaWQgc3RhdGUgZXJyb3IgaWYgdGhlIG1hdHJpeCBjb250YWlucyBu
b24tZmluaXRlIHZhbHVlcworICAgICAgICAtIE1hZGUgV2ViS2l0Q1NTTWF0cml4LnRvU3RyaW5n
IGVudW1lcmFibGUgYXMgcGVyIFsxXS4KKworICAgICAgICBbMV0gaHR0cHM6Ly9oZXljYW0uZ2l0
aHViLmlvL3dlYmlkbC8jZXMtc3RyaW5naWZpZXIKKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy9t
YXRyaXgtc3RyaW5naWZpZXIuaHRtbAorCisgICAgICAgICogY3NzL1dlYktpdENTU01hdHJpeC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnRvU3RyaW5nKToKKyAgICAg
ICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4Lmg6CisgICAgICAgICogY3NzL1dlYktpdENTU01hdHJp
eC5pZGw6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1h
dGlvbk1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
Y29udGFpbnNPbmx5RmluaXRlVmFsdWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisKIDIwMTctMDUtMTUgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1wbGUgbGluZSBsYXlvdXQ6IExl
YWRpbmcgd2hpdGVzcGFjZSBmb2xsb3dlZCBieSBhIDxicj4gcHJvZHVjZXMgYW4gZXh0cmEgbGlu
ZWJyZWFrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAppbmRleCAxY2I3NjY2
ODg1ZGFlMTdkOTQyZDgxNDNhMjliYjA2OTZlZTJmZDdjLi5mOGU2NDk2ZDBlMWZkODg4Y2M2NzY4
MGRmYmRlMzMxODlmYmFiYTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNw
cApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1
ZGUgIlRyYW5zZm9ybUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTE5NywxNiArMTk4LDYxIEBAIFJlZjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01h
dHJpeDo6c2tld1koZG91YmxlIGFuZ2xlKSBjb25zdAogICAgIHJldHVybiBtYXRyaXg7CiB9CiAK
LVN0cmluZyBXZWJLaXRDU1NNYXRyaXg6OnRvU3RyaW5nKCkgY29uc3QKK0V4Y2VwdGlvbk9yPFN0
cmluZz4gV2ViS2l0Q1NTTWF0cml4Ojp0b1N0cmluZygpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUg
LSBOZWVkIHRvIGVuc3VyZSB2YWxpZCBDU1MgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIChodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NzQpCi0gICAgaWYgKG1fbWF0cml4
LmlzQWZmaW5lKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgibWF0cml4KCVmLCAl
ZiwgJWYsICVmLCAlZiwgJWYpIiwgbV9tYXRyaXguYSgpLCBtX21hdHJpeC5iKCksIG1fbWF0cml4
LmMoKSwgbV9tYXRyaXguZCgpLCBtX21hdHJpeC5lKCksIG1fbWF0cml4LmYoKSk7Ci0gICAgcmV0
dXJuIFN0cmluZzo6Zm9ybWF0KCJtYXRyaXgzZCglZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwg
JWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZikiLAotICAgICAgICBtX21hdHJpeC5t
MTEoKSwgbV9tYXRyaXgubTEyKCksIG1fbWF0cml4Lm0xMygpLCBtX21hdHJpeC5tMTQoKSwKLSAg
ICAgICAgbV9tYXRyaXgubTIxKCksIG1fbWF0cml4Lm0yMigpLCBtX21hdHJpeC5tMjMoKSwgbV9t
YXRyaXgubTI0KCksCi0gICAgICAgIG1fbWF0cml4Lm0zMSgpLCBtX21hdHJpeC5tMzIoKSwgbV9t
YXRyaXgubTMzKCksIG1fbWF0cml4Lm0zNCgpLAotICAgICAgICBtX21hdHJpeC5tNDEoKSwgbV9t
YXRyaXgubTQyKCksIG1fbWF0cml4Lm00MygpLCBtX21hdHJpeC5tNDQoKSk7CisgICAgaWYgKCFt
X21hdHJpeC5jb250YWluc09ubHlGaW5pdGVWYWx1ZXMoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IElOVkFMSURfU1RBVEVfRVJSLCBBU0NJSUxpdGVyYWwoIk1hdHJpeCBjb250YWlucyBu
b24tZmluaXRlIHZhbHVlcyIpIH07CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAg
aWYgKG1fbWF0cml4LmlzQWZmaW5lKCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJtYXRyaXgoIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJp
bmdFQ01BU2NyaXB0KG1fbWF0cml4LmEoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdF
Q01BU2NyaXB0KG1fbWF0cml4LmIoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01B
U2NyaXB0KG1fbWF0cml4LmMoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwg
Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2Ny
aXB0KG1fbWF0cml4LmQoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0
KG1fbWF0cml4LmUoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG1f
bWF0cml4LmYoKSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgibWF0cml4M2QoIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9T
dHJpbmdFQ01BU2NyaXB0KG1fbWF0cml4Lm0xMSgpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0
cmluZ0VDTUFTY3JpcHQobV9tYXRyaXgubTEyKCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3Ry
aW5nRUNNQVNjcmlwdChtX21hdHJpeC5tMTMoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJp
bmdFQ01BU2NyaXB0KG1fbWF0cml4Lm0xNCgpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmlu
Z0VDTUFTY3JpcHQobV9tYXRyaXgubTIxKCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5n
RUNNQVNjcmlwdChtX21hdHJpeC5tMjIoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdF
Q01BU2NyaXB0KG1fbWF0cml4Lm0yMygpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VD
TUFTY3JpcHQobV9tYXRyaXgubTI0KCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNN
QVNjcmlwdChtX21hdHJpeC5tMzEoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01B
U2NyaXB0KG1fbWF0cml4Lm0zMigpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFT
Y3JpcHQobV9tYXRyaXgubTMzKCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIs
ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNj
cmlwdChtX21hdHJpeC5tMzQoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwg
Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2Ny
aXB0KG1fbWF0cml4Lm00MSgpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAi
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3Jp
cHQobV9tYXRyaXgubTQyKCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIp
OworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlw
dChtX21hdHJpeC5tNDMoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0
KG1fbWF0cml4Lm00NCgpKSk7CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CisgICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5oCmluZGV4IDg0YzAyNzliZjUwZTc1NTIwODMx
ZTQzYmI4YWY2ODZmYjI2ZmEyMWQuLmJmM2MwZTNmNjFjYWI0NWQ3N2IwOGE2YTA5ZWM1NjBiYzg5
ZmQ5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmgKQEAgLTEzNyw3ICsxMzcs
NyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXg7IH0KIAotICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0OworICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gdG9TdHJpbmcoKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBXZWJLaXRDU1NNYXRyaXgoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NNYXRyaXguaWRsCmluZGV4IDUzMzM3NzY2MDA1OTU3MTk2NGM1Njc3YWY1NzM1MDFjNTMw
ZjU2MTAuLjE1ZjFmMzIwMzUzMGViYmY1YzllZmU1ODk5MGMxNGQ5OGE3NmM0MmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCkBAIC05MSw1ICs5MSw1IEBACiAgICAgLy8g
UGFzc2luZyBhIE5hTiB3aWxsIHVzZSBhIHZhbHVlIG9mIDAuCiAgICAgV2ViS2l0Q1NTTWF0cml4
IHNrZXdZKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgYW5nbGUgPSBOYU4pOwogCi0gICAg
W05vdEVudW1lcmFibGVdIERPTVN0cmluZyB0b1N0cmluZygpOworICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gRE9NU3RyaW5nIHRvU3RyaW5nKCk7IC8vIEZJWE1FOiBTaG91bGQgYmUgc3RyaW5naWZp
ZXI7IG9uY2Ugd2Ugc3VwcG9ydCBpdC4KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguY3BwCmluZGV4IDI0MjdiMDFjMTdhY2RmYTg4ZTE3OTIwMTg3NGY1OTE3YjU4OWU2OWIu
LjJkOWE1ZjExODZhN2IwMjc0ODM0YjI2NmI3ZjI5ZmY3NmZlOTY2YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCisjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC0xNjkzLDYgKzE2OTQsMTQgQEAgYm9vbCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6aXNJbnRlZ2VyVHJhbnNsYXRpb24oKSBjb25zdAogICAgIHJldHVy
biB0cnVlOwogfQogCitib29sIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpjb250YWluc09ubHlGaW5p
dGVWYWx1ZXMoKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzBd
WzBdKSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzBdWzFdKSAmJiBzdGQ6OmlzZmluaXRlKG1f
bWF0cml4WzBdWzJdKSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzBdWzNdKQorICAgICAgICAm
JiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzFdWzBdKSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4
WzFdWzFdKSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzFdWzJdKSAmJiBzdGQ6OmlzZmluaXRl
KG1fbWF0cml4WzFdWzNdKQorICAgICAgICAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzJdWzBd
KSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzJdWzFdKSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0
cml4WzJdWzJdKSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzJdWzNdKQorICAgICAgICAmJiBz
dGQ6OmlzZmluaXRlKG1fbWF0cml4WzNdWzNdKTsKK30KKwogVHJhbnNmb3JtYXRpb25NYXRyaXgg
VHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvMmRUcmFuc2Zvcm0oKSBjb25zdAogewogICAgIHJldHVy
biBUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX21hdHJpeFswXVswXSwgbV9tYXRyaXhbMF1bMV0sIDAs
IG1fbWF0cml4WzBdWzNdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4
IDVkYjBjMDAyYTJkOGZiNGVlYTBmY2NmODRkZTBlNTNmMzE5NDY0YzEuLjU2ZjIyNWEzYTZhZDQ1
NjVjODU4NTEwZGY3NTg2Mjk2NDFiNzQ1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9u
TWF0cml4LmgKQEAgLTM4MCw2ICszODAsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzSW50ZWdl
clRyYW5zbGF0aW9uKCkgY29uc3Q7CiAKKyAgICBib29sIGNvbnRhaW5zT25seUZpbml0ZVZhbHVl
cygpIGNvbnN0OworCiAgICAgLy8gUmV0dXJucyB0aGUgbWF0cml4IHdpdGhvdXQgM0QgY29tcG9u
ZW50cy4KICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0bzJkVHJhbnNmb3JtKCkgY29uc3Q7CiAg
ICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggY2FhZTliMmEwMmNlNDliNWQ2Y2E5MTM1OTE4MzlhNjQ0ODU2YjQ0Yy4uODFj
MjkxMDcyNjhhYTUyZWZkNzEzNDA2NWEzZTE1ZDdlMjVlYTk3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDE3LTA1LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWxpZ24gV2ViS2l0Q1NTTWF0cml4IHN0cmluZ2lmaWVyIHdpdGggc3BlYyBmb3IgRE9NTWF0
cml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIx
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvY3NzL21hdHJpeC1zdHJpbmdpZmllci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvY3NzL21hdHJpeC1zdHJpbmdpZmllci5odG1sOiBBZGRlZC4KKyAgICAgICAgQWRkIGxh
eW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93L2N1c3RvbS1j
b25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9jdXN0
b20tY29uc3RydWN0b3JzLmh0bWw6CisgICAgICAgIFJlYmFzZWxpbmUgZXhpc3RpbmcgdGVzdCB0
byByZWZsZWN0IGJlaGF2aW9yIGNoYW5nZS4KKwogMjAxNy0wNS0xNSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsZSBsaW5lIGxheW91dDogTGVhZGluZyB3
aGl0ZXNwYWNlIGZvbGxvd2VkIGJ5IGEgPGJyPiBwcm9kdWNlcyBhbiBleHRyYSBsaW5lYnJlYWsu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9tYXRyaXgtc3RyaW5naWZpZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWF0cml4LXN0cmluZ2lmaWVyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZDlkMDc3Yzc3ZTA5M2FlYWViMzIzMjczNGYwNDIwM2I5ZmYw
MzE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWF0cml4LXN0cmlu
Z2lmaWVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI5IEBACisKK0ZBSUwgRE9NTWF0cml4IHN0
cmluZ2lmaWVyOiBpZGVudGl0eSAoMmQpIHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAo
ZXZhbHVhdGluZyAnbmV3IHNlbGZbY29uc3RyXSgpJykKK0ZBSUwgRE9NTWF0cml4IHN0cmluZ2lm
aWVyOiBpbnRlZ2VyIDJkIHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGlu
ZyAnbmV3IHNlbGZbY29uc3RyXSgibWF0cml4KDEsIDAsIDAsIDEsIDAsIDApIiknKQorRkFJTCBE
T01NYXRyaXggc3RyaW5naWZpZXI6IGludGVnZXIgM2QgdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0
cnVjdG9yIChldmFsdWF0aW5nICduZXcgc2VsZltjb25zdHJdKCJtYXRyaXgzZCgxLCAwLCAwLCAw
LCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxKSIpJykKK0ZBSUwgRE9NTWF0cml4
IHN0cmluZ2lmaWVyOiBmbG9hdGluZyBwb2ludCAyZCB1bmRlZmluZWQgaXMgbm90IGEgY29uc3Ry
dWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBzZWxmW2NvbnN0cl0oIm1hdHJpeCgwLjEsIDAuMiwgMC4z
LCAwLjQsIDAuNSwgMC42KSIpJykKK0ZBSUwgRE9NTWF0cml4IHN0cmluZ2lmaWVyOiBmbG9hdGlu
ZyBwb2ludCAzZCB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25l
dyBzZWxmW2NvbnN0cl0oIm1hdHJpeDNkKDAuMSwgMC4yLCAwLjMsIDAuNCwgMC41LCAwLjYsIDAu
NywgMC44LCAwLjksIDAuMSwgMC4yLCAwLjMsIDAuNCwgMC41LCAwLjYsIDAuNykiKScpCitGQUlM
IERPTU1hdHJpeCBzdHJpbmdpZmllcjogTmFOIHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3Rv
ciAoZXZhbHVhdGluZyAnbmV3IHNlbGZbY29uc3RyXSgpJykKK0ZBSUwgRE9NTWF0cml4IHN0cmlu
Z2lmaWVyOiBJbmZpbml0eSB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRp
bmcgJ25ldyBzZWxmW2NvbnN0cl0oKScpCitGQUlMIERPTU1hdHJpeCBzdHJpbmdpZmllcjogLUlu
ZmluaXR5IHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNl
bGZbY29uc3RyXSgpJykKK0ZBSUwgJHtjb25zdHJ9LnRvU3RyaW5nIHNob3VsZCBiZSBlbnVtZXJh
YmxlIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdzZWxmW2NvbnN0cl0u
cHJvdG90eXBlJykKK0ZBSUwgRE9NTWF0cml4UmVhZE9ubHkgc3RyaW5naWZpZXI6IGlkZW50aXR5
ICgyZCkgdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgc2Vs
Zltjb25zdHJdKCknKQorRkFJTCBET01NYXRyaXhSZWFkT25seSBzdHJpbmdpZmllcjogaW50ZWdl
ciAyZCB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBzZWxm
W2NvbnN0cl0oIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIpJykKK0ZBSUwgRE9NTWF0cml4UmVh
ZE9ubHkgc3RyaW5naWZpZXI6IGludGVnZXIgM2QgdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVj
dG9yIChldmFsdWF0aW5nICduZXcgc2VsZltjb25zdHJdKCJtYXRyaXgzZCgxLCAwLCAwLCAwLCAw
LCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxKSIpJykKK0ZBSUwgRE9NTWF0cml4UmVh
ZE9ubHkgc3RyaW5naWZpZXI6IGZsb2F0aW5nIHBvaW50IDJkIHVuZGVmaW5lZCBpcyBub3QgYSBj
b25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNlbGZbY29uc3RyXSgibWF0cml4KDAuMSwgMC4y
LCAwLjMsIDAuNCwgMC41LCAwLjYpIiknKQorRkFJTCBET01NYXRyaXhSZWFkT25seSBzdHJpbmdp
ZmllcjogZmxvYXRpbmcgcG9pbnQgM2QgdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChl
dmFsdWF0aW5nICduZXcgc2VsZltjb25zdHJdKCJtYXRyaXgzZCgwLjEsIDAuMiwgMC4zLCAwLjQs
IDAuNSwgMC42LCAwLjcsIDAuOCwgMC45LCAwLjEsIDAuMiwgMC4zLCAwLjQsIDAuNSwgMC42LCAw
LjcpIiknKQorRkFJTCBET01NYXRyaXhSZWFkT25seSBzdHJpbmdpZmllcjogTmFOIHVuZGVmaW5l
ZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNlbGZbY29uc3RyXSgpJykK
K0ZBSUwgRE9NTWF0cml4UmVhZE9ubHkgc3RyaW5naWZpZXI6IEluZmluaXR5IHVuZGVmaW5lZCBp
cyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNlbGZbY29uc3RyXSgpJykKK0ZB
SUwgRE9NTWF0cml4UmVhZE9ubHkgc3RyaW5naWZpZXI6IC1JbmZpbml0eSB1bmRlZmluZWQgaXMg
bm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBzZWxmW2NvbnN0cl0oKScpCitGQUlM
ICR7Y29uc3RyfS50b1N0cmluZyBzaG91bGQgYmUgZW51bWVyYWJsZSB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnc2VsZltjb25zdHJdLnByb3RvdHlwZScpCitQQVNTIFdl
YktpdENTU01hdHJpeCBzdHJpbmdpZmllcjogaWRlbnRpdHkgKDJkKSAKK1BBU1MgV2ViS2l0Q1NT
TWF0cml4IHN0cmluZ2lmaWVyOiBpbnRlZ2VyIDJkIAorUEFTUyBXZWJLaXRDU1NNYXRyaXggc3Ry
aW5naWZpZXI6IGludGVnZXIgM2QgCitQQVNTIFdlYktpdENTU01hdHJpeCBzdHJpbmdpZmllcjog
ZmxvYXRpbmcgcG9pbnQgMmQgCitQQVNTIFdlYktpdENTU01hdHJpeCBzdHJpbmdpZmllcjogZmxv
YXRpbmcgcG9pbnQgM2QgCitQQVNTIFdlYktpdENTU01hdHJpeCBzdHJpbmdpZmllcjogTmFOIAor
UEFTUyBXZWJLaXRDU1NNYXRyaXggc3RyaW5naWZpZXI6IEluZmluaXR5IAorUEFTUyBXZWJLaXRD
U1NNYXRyaXggc3RyaW5naWZpZXI6IC1JbmZpbml0eSAKK1BBU1MgJHtjb25zdHJ9LnRvU3RyaW5n
IHNob3VsZCBiZSBlbnVtZXJhYmxlIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9tYXRyaXgtc3RyaW5naWZpZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL21hdHJpeC1z
dHJpbmdpZmllci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3NjIyOWRhNGRkZTcxYTU5MDAzMTA5YTM5N2Q5
Y2QyNmU2NjAzZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9tYXRy
aXgtc3RyaW5naWZpZXIuaHRtbApAQCAtMCwwICsxLDQ4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK1siRE9NTWF0cml4IiwgIkRPTU1hdHJpeFJlYWRP
bmx5IiwgIldlYktpdENTU01hdHJpeCJdLmZvckVhY2goY29uc3RyID0+IHsKKyAgICBjb25zdCBw
cmVmaXggPSBgJHtjb25zdHJ9IHN0cmluZ2lmaWVyOmA7CisgICAgdGVzdCgoKSA9PiB7CisgICAg
ICAgIGNvbnN0IG1hdHJpeCA9IG5ldyBzZWxmW2NvbnN0cl0oKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhTdHJpbmcobWF0cml4KSwgIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIpOworICAgIH0s
IGAke3ByZWZpeH0gaWRlbnRpdHkgKDJkKWApOworCisgICAgdGVzdCgoKSA9PiB7CisgICAgICAg
IGNvbnN0IG1hdHJpeCA9IG5ldyBzZWxmW2NvbnN0cl0oIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAw
KSIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKFN0cmluZyhtYXRyaXgpLCAibWF0cml4KDEsIDAs
IDAsIDEsIDAsIDApIik7CisgICAgfSwgYCR7cHJlZml4fSBpbnRlZ2VyIDJkYCk7CisgCisgICAg
dGVzdCgoKSA9PiB7CisgICAgICAgIGNvbnN0IG1hdHJpeCA9IG5ldyBzZWxmW2NvbnN0cl0oIm1h
dHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEpIik7
CisgICAgICAgIGFzc2VydF9lcXVhbHMoU3RyaW5nKG1hdHJpeCksICJtYXRyaXgoMSwgMCwgMCwg
MSwgMCwgMCkiKTsKKyAgICB9LCBgJHtwcmVmaXh9IGludGVnZXIgM2RgKTsKKworICAgIHRlc3Qo
KCkgPT4geworICAgICAgICBjb25zdCBtYXRyaXggPSBuZXcgc2VsZltjb25zdHJdKCJtYXRyaXgo
MC4xLCAwLjIsIDAuMywgMC40LCAwLjUsIDAuNikiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhT
dHJpbmcobWF0cml4KSwgIm1hdHJpeCgwLjEsIDAuMiwgMC4zLCAwLjQsIDAuNSwgMC42KSIpOwor
ICAgIH0sIGAke3ByZWZpeH0gZmxvYXRpbmcgcG9pbnQgMmRgKQorCisgICAgdGVzdCgoKSA9PiB7
CisgICAgICAgIGNvbnN0IG1hdHJpeCA9IG5ldyBzZWxmW2NvbnN0cl0oIm1hdHJpeDNkKDAuMSwg
MC4yLCAwLjMsIDAuNCwgMC41LCAwLjYsIDAuNywgMC44LCAwLjksIDAuMSwgMC4yLCAwLjMsIDAu
NCwgMC41LCAwLjYsIDAuNykiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhTdHJpbmcobWF0cml4
KSwgIm1hdHJpeDNkKDAuMSwgMC4yLCAwLjMsIDAuNCwgMC41LCAwLjYsIDAuNywgMC44LCAwLjks
IDAuMSwgMC4yLCAwLjMsIDAuNCwgMC41LCAwLjYsIDAuNykiKTsKKyAgICB9LCBgJHtwcmVmaXh9
IGZsb2F0aW5nIHBvaW50IDNkYCk7CisKKyAgICBbTmFOLCBJbmZpbml0eSwgLUluZmluaXR5XS5m
b3JFYWNoKG51bSA9PiB7CisgICAgICAgIHRlc3QoKCkgPT4geworICAgICAgICAgICAgY29uc3Qg
bWF0cml4ID0gbmV3IHNlbGZbY29uc3RyXSgpOworICAgICAgICAgICAgbWF0cml4LmEgPSBudW07
CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IFN0
cmluZyhtYXRyaXgpKTsKKyAgICAgICAgfSwgYCR7cHJlZml4fSAke251bX1gKTsKKyAgICB9KTsK
KworICAgIHRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZShPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHNlbGZbY29uc3RyXS5wcm90b3R5cGUsICJ0b1N0cmluZyIpLmVudW1l
cmFibGUpOworICAgIH0sICIke2NvbnN0cn0udG9TdHJpbmcgc2hvdWxkIGJlIGVudW1lcmFibGUi
KTsKK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50
eHQKaW5kZXggNDhkMThhMDg3ZmM4NDUzODhjNTllNzFiNmU5MzEwZGU3YWYyOGE1OC4uNjgxNzVl
MDI5NDRmYjljY2I0ZDc2ZWVjNWJlMWZkMTYzYTJhZjVkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLWV4cGVjdGVk
LnR4dApAQCAtNiw5ICs2LDkgQEAgUEFTUyBBdWRpby5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChu
ZXcgQXVkaW8pIGlzICdbb2JqZWN0IEhUTUxBdWRpb0VsZW1lbnRdJwogUEFTUyBJbWFnZS5wcm90
b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgSW1hZ2UpIGlzICdbb2JqZWN0IEhUTUxJbWFnZUVsZW1l
bnRdJwogUEFTUyBPcHRpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IE9wdGlvbikgaXMg
J1tvYmplY3QgSFRNTE9wdGlvbkVsZW1lbnRdJwogUEFTUyBXZWJLaXRQb2ludC5wcm90b3R5cGUu
dG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0UG9pbnQpIGlzICdbb2JqZWN0IFdlYktpdFBvaW50XScK
LVBBU1MgV2ViS2l0Q1NTTWF0cml4LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRD
U1NNYXRyaXgpIGlzICdtYXRyaXgoMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCwgMS4wMDAw
MDAsIDAuMDAwMDAwLCAwLjAwMDAwMCknCi1QQVNTIFdlYktpdENTU01hdHJpeC5wcm90b3R5cGUu
dG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0Q1NTTWF0cml4KCkpIGlzICdtYXRyaXgoMS4wMDAwMDAs
IDAuMDAwMDAwLCAwLjAwMDAwMCwgMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCknCi1QQVNT
IFdlYktpdENTU01hdHJpeC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0Q1NTTWF0
cml4KHVuZGVmaW5lZCkpIGlzICdtYXRyaXgoMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCwg
MS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCknCitQQVNTIFdlYktpdENTU01hdHJpeC5wcm90
b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0Q1NTTWF0cml4KSBpcyAnbWF0cml4KDEsIDAs
IDAsIDEsIDAsIDApJworUEFTUyBXZWJLaXRDU1NNYXRyaXgucHJvdG90eXBlLnRvU3RyaW5nLmNh
bGwobmV3IFdlYktpdENTU01hdHJpeCgpKSBpcyAnbWF0cml4KDEsIDAsIDAsIDEsIDAsIDApJwor
UEFTUyBXZWJLaXRDU1NNYXRyaXgucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IFdlYktpdENT
U01hdHJpeCh1bmRlZmluZWQpKSBpcyAnbWF0cml4KDEsIDAsIDAsIDEsIDAsIDApJwogUEFTUyBu
ZXcgV2ViS2l0Q1NTTWF0cml4KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvciAoRE9N
IEV4Y2VwdGlvbiAxMik6IFRoZSBzdHJpbmcgZGlkIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgcGF0
dGVybi4uCiBQQVNTIFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBY
TUxIdHRwUmVxdWVzdCkgaXMgJ1tvYmplY3QgWE1MSHR0cFJlcXVlc3RdJwogUEFTUyBYU0xUUHJv
Y2Vzc29yLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBYU0xUUHJvY2Vzc29yKSBpcyAnW29i
amVjdCBYU0xUUHJvY2Vzc29yXScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy9jdXN0b20tY29uc3RydWN0b3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvY3VzdG9tLWNvbnN0cnVjdG9ycy5odG1sCmluZGV4IDU1MzVjNThjZjhmMWI5ZWM0MGM5ODEy
N2I0YWNhMjA5NjI4ZDMyYmIuLjg1NzQ4ZjM5NjFlMjExZGIwODUwY2ZhYTM3MTIyZTQ0ZjRjOTJm
NDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3Ry
dWN0b3JzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2N1c3RvbS1jb25z
dHJ1Y3RvcnMuaHRtbApAQCAtMTUsOSArMTUsOSBAQAogICAgIHNob3VsZEJlKCJJbWFnZS5wcm90
b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgSW1hZ2UpIiwgIidbb2JqZWN0IEhUTUxJbWFnZUVsZW1l
bnRdJyIpOwogICAgIHNob3VsZEJlKCJPcHRpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3
IE9wdGlvbikiLCAiJ1tvYmplY3QgSFRNTE9wdGlvbkVsZW1lbnRdJyIpOwogICAgIHNob3VsZEJl
KCJXZWJLaXRQb2ludC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0UG9pbnQpIiwg
Iidbb2JqZWN0IFdlYktpdFBvaW50XSciKTsKLSAgICBzaG91bGRCZSgiV2ViS2l0Q1NTTWF0cml4
LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRDU1NNYXRyaXgpIiwgIidtYXRyaXgo
MS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCwgMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAw
MCknIik7Ci0gICAgc2hvdWxkQmUoIldlYktpdENTU01hdHJpeC5wcm90b3R5cGUudG9TdHJpbmcu
Y2FsbChuZXcgV2ViS2l0Q1NTTWF0cml4KCkpIiwgIidtYXRyaXgoMS4wMDAwMDAsIDAuMDAwMDAw
LCAwLjAwMDAwMCwgMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCknIik7Ci0gICAgc2hvdWxk
QmUoIldlYktpdENTU01hdHJpeC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0Q1NT
TWF0cml4KHVuZGVmaW5lZCkpIiwgIidtYXRyaXgoMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAw
MCwgMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCknIik7CisgICAgc2hvdWxkQmUoIldlYktp
dENTU01hdHJpeC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0Q1NTTWF0cml4KSIs
ICInbWF0cml4KDEsIDAsIDAsIDEsIDAsIDApJyIpOworICAgIHNob3VsZEJlKCJXZWJLaXRDU1NN
YXRyaXgucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IFdlYktpdENTU01hdHJpeCgpKSIsICIn
bWF0cml4KDEsIDAsIDAsIDEsIDAsIDApJyIpOworICAgIHNob3VsZEJlKCJXZWJLaXRDU1NNYXRy
aXgucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IFdlYktpdENTU01hdHJpeCh1bmRlZmluZWQp
KSIsICInbWF0cml4KDEsIDAsIDAsIDEsIDAsIDApJyIpOwogICAgIHNob3VsZFRocm93KCJuZXcg
V2ViS2l0Q1NTTWF0cml4KG51bGwpIik7CiAgICAgc2hvdWxkQmUoIlhNTEh0dHBSZXF1ZXN0LnBy
b3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBYTUxIdHRwUmVxdWVzdCkiLCAiJ1tvYmplY3QgWE1M
SHR0cFJlcXVlc3RdJyIpOwogICAgIHNob3VsZEJlKCJYU0xUUHJvY2Vzc29yLnByb3RvdHlwZS50
b1N0cmluZy5jYWxsKG5ldyBYU0xUUHJvY2Vzc29yKSIsICInW29iamVjdCBYU0xUUHJvY2Vzc29y
XSciKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310162</attachid>
            <date>2017-05-15 14:21:25 -0700</date>
            <delta_ts>2017-05-15 15:08:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172114-20170515142125.patch</filename>
            <type>text/plain</type>
            <size>18479</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTBiZTU5YTFjN2RmYTdl
ZGMxMDZiYjY1NTEzNmY3Y2U2MWZiMTI0Yi4uOWMwMzVjYmU1MzcwZmM0ODI2MjM1N2NlZWRiYjc4
YTMzMDk2ZDQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA1LTE1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWxpZ24gV2ViS2l0Q1NTTWF0
cml4IHN0cmluZ2lmaWVyIHdpdGggc3BlYyBmb3IgRE9NTWF0cml4CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgQWxpZ24gV2ViS2l0Q1NTTWF0cml4IHN0cmlu
Z2lmaWVyIHdpdGggc3BlYyBmb3IgRE9NTWF0cml4IGFmdGVyOgorICAgICAgICAtIGh0dHBzOi8v
Z2l0aHViLmNvbS93M2MvZnh0Zi1kcmFmdHMvcHVsbC8xNDgKKworICAgICAgICBUaGUgZm9sbG93
aW5nIGNoYW5nZXMgd2VyZSBtYWRlOgorICAgICAgICAtIFVzZSBFY21hU2NyaXB0J3MgVG9TdHJp
bmcoKSB0byBjb252ZXJ0IGZsb2F0aW5nIHBvaW50IHZhbHVlcyB0byBzdHJpbmcKKyAgICAgICAg
LSBUaHJvdyBhbiBpbnZhbGlkIHN0YXRlIGVycm9yIGlmIHRoZSBtYXRyaXggY29udGFpbnMgbm9u
LWZpbml0ZSB2YWx1ZXMKKyAgICAgICAgLSBNYWRlIFdlYktpdENTU01hdHJpeC50b1N0cmluZyBl
bnVtZXJhYmxlIGFzIHBlciBbMV0uCisKKyAgICAgICAgWzFdIGh0dHBzOi8vaGV5Y2FtLmdpdGh1
Yi5pby93ZWJpZGwvI2VzLXN0cmluZ2lmaWVyCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3MvbWF0
cml4LXN0cmluZ2lmaWVyLmh0bWwKKworICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojp0b1N0cmluZyk6CisgICAgICAg
ICogY3NzL1dlYktpdENTU01hdHJpeC5oOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXgu
aWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmNv
bnRhaW5zT25seUZpbml0ZVZhbHVlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oOgorCiAyMDE3LTA1LTE1ICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBXb3JrZXJSdW5Mb29wOjpUYXNrOjpwZXJm
b3JtVGFzaygpIHNob3VsZCBjaGVjayAhc2NyaXB0Q29udHJvbGxlci0+aXNUZXJtaW5hdGluZ0V4
ZWN1dGlvbigpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJp
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAppbmRleCAxY2I3
NjY2ODg1ZGFlMTdkOTQyZDgxNDNhMjliYjA2OTZlZTJmZDdjLi5mOGU2NDk2ZDBlMWZkODg4Y2M2
NzY4MGRmYmRlMzMxODlmYmFiYTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2lu
Y2x1ZGUgIlRyYW5zZm9ybUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTE5NywxNiArMTk4LDYxIEBAIFJlZjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENT
U01hdHJpeDo6c2tld1koZG91YmxlIGFuZ2xlKSBjb25zdAogICAgIHJldHVybiBtYXRyaXg7CiB9
CiAKLVN0cmluZyBXZWJLaXRDU1NNYXRyaXg6OnRvU3RyaW5nKCkgY29uc3QKK0V4Y2VwdGlvbk9y
PFN0cmluZz4gV2ViS2l0Q1NTTWF0cml4Ojp0b1N0cmluZygpIGNvbnN0CiB7Ci0gICAgLy8gRklY
TUUgLSBOZWVkIHRvIGVuc3VyZSB2YWxpZCBDU1MgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIChodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NzQpCi0gICAgaWYgKG1fbWF0
cml4LmlzQWZmaW5lKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgibWF0cml4KCVm
LCAlZiwgJWYsICVmLCAlZiwgJWYpIiwgbV9tYXRyaXguYSgpLCBtX21hdHJpeC5iKCksIG1fbWF0
cml4LmMoKSwgbV9tYXRyaXguZCgpLCBtX21hdHJpeC5lKCksIG1fbWF0cml4LmYoKSk7Ci0gICAg
cmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJtYXRyaXgzZCglZiwgJWYsICVmLCAlZiwgJWYsICVmLCAl
ZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZikiLAotICAgICAgICBtX21hdHJp
eC5tMTEoKSwgbV9tYXRyaXgubTEyKCksIG1fbWF0cml4Lm0xMygpLCBtX21hdHJpeC5tMTQoKSwK
LSAgICAgICAgbV9tYXRyaXgubTIxKCksIG1fbWF0cml4Lm0yMigpLCBtX21hdHJpeC5tMjMoKSwg
bV9tYXRyaXgubTI0KCksCi0gICAgICAgIG1fbWF0cml4Lm0zMSgpLCBtX21hdHJpeC5tMzIoKSwg
bV9tYXRyaXgubTMzKCksIG1fbWF0cml4Lm0zNCgpLAotICAgICAgICBtX21hdHJpeC5tNDEoKSwg
bV9tYXRyaXgubTQyKCksIG1fbWF0cml4Lm00MygpLCBtX21hdHJpeC5tNDQoKSk7CisgICAgaWYg
KCFtX21hdHJpeC5jb250YWluc09ubHlGaW5pdGVWYWx1ZXMoKSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVfRVJSLCBBU0NJSUxpdGVyYWwoIk1hdHJpeCBjb250YWlu
cyBub24tZmluaXRlIHZhbHVlcyIpIH07CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Cisg
ICAgaWYgKG1fbWF0cml4LmlzQWZmaW5lKCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJtYXRyaXgoIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9T
dHJpbmdFQ01BU2NyaXB0KG1fbWF0cml4LmEoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJp
bmdFQ01BU2NyaXB0KG1fbWF0cml4LmIoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdF
Q01BU2NyaXB0KG1fbWF0cml4LmMoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01B
U2NyaXB0KG1fbWF0cml4LmQoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwg
Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2Ny
aXB0KG1fbWF0cml4LmUoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0
KG1fbWF0cml4LmYoKSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgibWF0cml4M2QoIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVy
VG9TdHJpbmdFQ01BU2NyaXB0KG1fbWF0cml4Lm0xMSgpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJU
b1N0cmluZ0VDTUFTY3JpcHQobV9tYXRyaXgubTEyKCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRv
U3RyaW5nRUNNQVNjcmlwdChtX21hdHJpeC5tMTMoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9T
dHJpbmdFQ01BU2NyaXB0KG1fbWF0cml4Lm0xNCgpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0
cmluZ0VDTUFTY3JpcHQobV9tYXRyaXgubTIxKCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3Ry
aW5nRUNNQVNjcmlwdChtX21hdHJpeC5tMjIoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJp
bmdFQ01BU2NyaXB0KG1fbWF0cml4Lm0yMygpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmlu
Z0VDTUFTY3JpcHQobV9tYXRyaXgubTI0KCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5n
RUNNQVNjcmlwdChtX21hdHJpeC5tMzEoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdF
Q01BU2NyaXB0KG1fbWF0cml4Lm0zMigpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VD
TUFTY3JpcHQobV9tYXRyaXgubTMzKCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNN
QVNjcmlwdChtX21hdHJpeC5tMzQoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01B
U2NyaXB0KG1fbWF0cml4Lm00MSgpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFT
Y3JpcHQobV9tYXRyaXgubTQyKCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIs
ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNj
cmlwdChtX21hdHJpeC5tNDMoKSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwg
Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2Ny
aXB0KG1fbWF0cml4Lm00NCgpKSk7CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7Cisg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5oCmluZGV4IDg0YzAyNzliZjUwZTc1NTIw
ODMxZTQzYmI4YWY2ODZmYjI2ZmEyMWQuLmJmM2MwZTNmNjFjYWI0NWQ3N2IwOGE2YTA5ZWM1NjBi
Yzg5ZmQ5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXgu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmgKQEAgLTEzNyw3ICsx
MzcsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXg7IH0KIAotICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gdG9TdHJpbmcoKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBXZWJLaXRDU1NNYXRyaXgoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NNYXRyaXguaWRsCmluZGV4IDUzMzM3NzY2MDA1OTU3MTk2NGM1Njc3YWY1NzM1MDFj
NTMwZjU2MTAuLjE1ZjFmMzIwMzUzMGViYmY1YzllZmU1ODk5MGMxNGQ5OGE3NmM0MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCkBAIC05MSw1ICs5MSw1IEBACiAgICAg
Ly8gUGFzc2luZyBhIE5hTiB3aWxsIHVzZSBhIHZhbHVlIG9mIDAuCiAgICAgV2ViS2l0Q1NTTWF0
cml4IHNrZXdZKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgYW5nbGUgPSBOYU4pOwogCi0g
ICAgW05vdEVudW1lcmFibGVdIERPTVN0cmluZyB0b1N0cmluZygpOworICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gRE9NU3RyaW5nIHRvU3RyaW5nKCk7IC8vIEZJWE1FOiBTaG91bGQgYmUgc3RyaW5n
aWZpZXI7IG9uY2Ugd2Ugc3VwcG9ydCBpdC4KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwCmluZGV4IDI0MjdiMDFjMTdhY2RmYTg4ZTE3OTIwMTg3NGY1OTE3YjU4OWU2
OWIuLjdhNzgzYWE3MDE2OGUzNTQzNzU0ZWI0MmQ4YjRiZjk4ODZiM2FhODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJUZXh0U3Ry
ZWFtLmgiCisjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC0xNjkzLDYgKzE2OTQsMTQgQEAgYm9vbCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJbnRlZ2VyVHJhbnNsYXRpb24oKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCitib29sIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpjb250YWluc09ubHlG
aW5pdGVWYWx1ZXMoKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4
WzBdWzBdKSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzBdWzFdKSAmJiBzdGQ6OmlzZmluaXRl
KG1fbWF0cml4WzBdWzJdKSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzBdWzNdKQorICAgICAg
ICAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzFdWzBdKSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0
cml4WzFdWzFdKSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzFdWzJdKSAmJiBzdGQ6OmlzZmlu
aXRlKG1fbWF0cml4WzFdWzNdKQorICAgICAgICAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzJd
WzBdKSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzJdWzFdKSAmJiBzdGQ6OmlzZmluaXRlKG1f
bWF0cml4WzJdWzJdKSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzJdWzNdKQorICAgICAgICAm
JiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzNdWzBdKSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4
WzNdWzFdKSAmJiBzdGQ6OmlzZmluaXRlKG1fbWF0cml4WzNdWzJdKSAmJiBzdGQ6OmlzZmluaXRl
KG1fbWF0cml4WzNdWzNdKTsKK30KKwogVHJhbnNmb3JtYXRpb25NYXRyaXggVHJhbnNmb3JtYXRp
b25NYXRyaXg6OnRvMmRUcmFuc2Zvcm0oKSBjb25zdAogewogICAgIHJldHVybiBUcmFuc2Zvcm1h
dGlvbk1hdHJpeChtX21hdHJpeFswXVswXSwgbV9tYXRyaXhbMF1bMV0sIDAsIG1fbWF0cml4WzBd
WzNdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4IDVkYjBjMDAyYTJk
OGZiNGVlYTBmY2NmODRkZTBlNTNmMzE5NDY0YzEuLjU2ZjIyNWEzYTZhZDQ1NjVjODU4NTEwZGY3
NTg2Mjk2NDFiNzQ1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAg
LTM4MCw2ICszODAsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzSW50ZWdlclRyYW5zbGF0aW9u
KCkgY29uc3Q7CiAKKyAgICBib29sIGNvbnRhaW5zT25seUZpbml0ZVZhbHVlcygpIGNvbnN0Owor
CiAgICAgLy8gUmV0dXJucyB0aGUgbWF0cml4IHdpdGhvdXQgM0QgY29tcG9uZW50cy4KICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCB0bzJkVHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzdmZWQ4NzMzOWFiZTI2MGJlYzgyMDhlNWM1ZDU4Mzk3YzA4ZGQ2ZS4uYmFlYzFkYjc4YTc5YTA2
Y2VlNGU1Yjg5YTU4MjZiNDczY2MzZWNiMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA1
LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWxpZ24gV2Vi
S2l0Q1NTTWF0cml4IHN0cmluZ2lmaWVyIHdpdGggc3BlYyBmb3IgRE9NTWF0cml4CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxMTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9tYXRyaXgt
c3RyaW5naWZpZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9tYXRy
aXgtc3RyaW5naWZpZXIuaHRtbDogQWRkZWQuCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3Zl
cmFnZS4KKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNvbnN0cnVjdG9y
cy5odG1sOgorICAgICAgICBSZWJhc2VsaW5lIGV4aXN0aW5nIHRlc3QgdG8gcmVmbGVjdCBiZWhh
dmlvciBjaGFuZ2UuCisKIDIwMTctMDUtMTUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFdvcmtlclJ1bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNrKCkgc2hvdWxkIGNo
ZWNrICFzY3JpcHRDb250cm9sbGVyLT5pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9tYXRyaXgtc3RyaW5naWZpZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWF0cml4LXN0cmluZ2lmaWVyLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYzFhNmJlMmRiZWI0ZTQ2Njg2MzUxZTMwMGVlNjk3ZDkxOWRiOTY0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWF0cml4LXN0cmluZ2lmaWVyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDI5IEBACisKK0ZBSUwgRE9NTWF0cml4IHN0cmluZ2lmaWVy
OiBpZGVudGl0eSAoMmQpIHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGlu
ZyAnbmV3IHNlbGZbY29uc3RyXSgpJykKK0ZBSUwgRE9NTWF0cml4IHN0cmluZ2lmaWVyOiBpbnRl
Z2VyIDJkIHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNl
bGZbY29uc3RyXSgibWF0cml4KDEsIDAsIDAsIDEsIDAsIDApIiknKQorRkFJTCBET01NYXRyaXgg
c3RyaW5naWZpZXI6IGludGVnZXIgM2QgdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChl
dmFsdWF0aW5nICduZXcgc2VsZltjb25zdHJdKCJtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAw
LCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxKSIpJykKK0ZBSUwgRE9NTWF0cml4IHN0cmluZ2lm
aWVyOiBmbG9hdGluZyBwb2ludCAyZCB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2
YWx1YXRpbmcgJ25ldyBzZWxmW2NvbnN0cl0oIm1hdHJpeCgwLjEsIDAuMiwgMC4zLCAwLjQsIDAu
NSwgMC42KSIpJykKK0ZBSUwgRE9NTWF0cml4IHN0cmluZ2lmaWVyOiBmbG9hdGluZyBwb2ludCAz
ZCB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBzZWxmW2Nv
bnN0cl0oIm1hdHJpeDNkKDAuMSwgMC4yLCAwLjMsIDAuNCwgMC41LCAwLjYsIDAuNywgMC44LCAw
LjksIDAuMSwgMC4yLCAwLjMsIDAuNCwgMC41LCAwLjYsIDAuNykiKScpCitGQUlMIERPTU1hdHJp
eCBzdHJpbmdpZmllcjogTmFOIHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVh
dGluZyAnbmV3IHNlbGZbY29uc3RyXSgpJykKK0ZBSUwgRE9NTWF0cml4IHN0cmluZ2lmaWVyOiBJ
bmZpbml0eSB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBz
ZWxmW2NvbnN0cl0oKScpCitGQUlMIERPTU1hdHJpeCBzdHJpbmdpZmllcjogLUluZmluaXR5IHVu
ZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNlbGZbY29uc3Ry
XSgpJykKK0ZBSUwgRE9NTWF0cml4LnRvU3RyaW5nIHNob3VsZCBiZSBlbnVtZXJhYmxlIHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdzZWxmW2NvbnN0cl0ucHJvdG90eXBl
JykKK0ZBSUwgRE9NTWF0cml4UmVhZE9ubHkgc3RyaW5naWZpZXI6IGlkZW50aXR5ICgyZCkgdW5k
ZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgc2VsZltjb25zdHJd
KCknKQorRkFJTCBET01NYXRyaXhSZWFkT25seSBzdHJpbmdpZmllcjogaW50ZWdlciAyZCB1bmRl
ZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBzZWxmW2NvbnN0cl0o
Im1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIpJykKK0ZBSUwgRE9NTWF0cml4UmVhZE9ubHkgc3Ry
aW5naWZpZXI6IGludGVnZXIgM2QgdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFs
dWF0aW5nICduZXcgc2VsZltjb25zdHJdKCJtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAw
LCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxKSIpJykKK0ZBSUwgRE9NTWF0cml4UmVhZE9ubHkgc3Ry
aW5naWZpZXI6IGZsb2F0aW5nIHBvaW50IDJkIHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3Rv
ciAoZXZhbHVhdGluZyAnbmV3IHNlbGZbY29uc3RyXSgibWF0cml4KDAuMSwgMC4yLCAwLjMsIDAu
NCwgMC41LCAwLjYpIiknKQorRkFJTCBET01NYXRyaXhSZWFkT25seSBzdHJpbmdpZmllcjogZmxv
YXRpbmcgcG9pbnQgM2QgdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5n
ICduZXcgc2VsZltjb25zdHJdKCJtYXRyaXgzZCgwLjEsIDAuMiwgMC4zLCAwLjQsIDAuNSwgMC42
LCAwLjcsIDAuOCwgMC45LCAwLjEsIDAuMiwgMC4zLCAwLjQsIDAuNSwgMC42LCAwLjcpIiknKQor
RkFJTCBET01NYXRyaXhSZWFkT25seSBzdHJpbmdpZmllcjogTmFOIHVuZGVmaW5lZCBpcyBub3Qg
YSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNlbGZbY29uc3RyXSgpJykKK0ZBSUwgRE9N
TWF0cml4UmVhZE9ubHkgc3RyaW5naWZpZXI6IEluZmluaXR5IHVuZGVmaW5lZCBpcyBub3QgYSBj
b25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHNlbGZbY29uc3RyXSgpJykKK0ZBSUwgRE9NTWF0
cml4UmVhZE9ubHkgc3RyaW5naWZpZXI6IC1JbmZpbml0eSB1bmRlZmluZWQgaXMgbm90IGEgY29u
c3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBzZWxmW2NvbnN0cl0oKScpCitGQUlMIERPTU1hdHJp
eFJlYWRPbmx5LnRvU3RyaW5nIHNob3VsZCBiZSBlbnVtZXJhYmxlIHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdzZWxmW2NvbnN0cl0ucHJvdG90eXBlJykKK1BBU1MgV2Vi
S2l0Q1NTTWF0cml4IHN0cmluZ2lmaWVyOiBpZGVudGl0eSAoMmQpIAorUEFTUyBXZWJLaXRDU1NN
YXRyaXggc3RyaW5naWZpZXI6IGludGVnZXIgMmQgCitQQVNTIFdlYktpdENTU01hdHJpeCBzdHJp
bmdpZmllcjogaW50ZWdlciAzZCAKK1BBU1MgV2ViS2l0Q1NTTWF0cml4IHN0cmluZ2lmaWVyOiBm
bG9hdGluZyBwb2ludCAyZCAKK1BBU1MgV2ViS2l0Q1NTTWF0cml4IHN0cmluZ2lmaWVyOiBmbG9h
dGluZyBwb2ludCAzZCAKK1BBU1MgV2ViS2l0Q1NTTWF0cml4IHN0cmluZ2lmaWVyOiBOYU4gCitQ
QVNTIFdlYktpdENTU01hdHJpeCBzdHJpbmdpZmllcjogSW5maW5pdHkgCitQQVNTIFdlYktpdENT
U01hdHJpeCBzdHJpbmdpZmllcjogLUluZmluaXR5IAorUEFTUyBXZWJLaXRDU1NNYXRyaXgudG9T
dHJpbmcgc2hvdWxkIGJlIGVudW1lcmFibGUgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzL21hdHJpeC1zdHJpbmdpZmllci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWF0
cml4LXN0cmluZ2lmaWVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJlYmNlOTIyNDY1OTBkZjVlOTZkMjI5
ZmMzMTc1M2E2NGNiODE5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L21hdHJpeC1zdHJpbmdpZmllci5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorWyJET01NYXRyaXgiLCAiRE9NTWF0cml4
UmVhZE9ubHkiLCAiV2ViS2l0Q1NTTWF0cml4Il0uZm9yRWFjaChjb25zdHIgPT4geworICAgIGNv
bnN0IHByZWZpeCA9IGAke2NvbnN0cn0gc3RyaW5naWZpZXI6YDsKKyAgICB0ZXN0KCgpID0+IHsK
KyAgICAgICAgY29uc3QgbWF0cml4ID0gbmV3IHNlbGZbY29uc3RyXSgpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKFN0cmluZyhtYXRyaXgpLCAibWF0cml4KDEsIDAsIDAsIDEsIDAsIDApIik7Cisg
ICAgfSwgYCR7cHJlZml4fSBpZGVudGl0eSAoMmQpYCk7CisKKyAgICB0ZXN0KCgpID0+IHsKKyAg
ICAgICAgY29uc3QgbWF0cml4ID0gbmV3IHNlbGZbY29uc3RyXSgibWF0cml4KDEsIDAsIDAsIDEs
IDAsIDApIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoU3RyaW5nKG1hdHJpeCksICJtYXRyaXgo
MSwgMCwgMCwgMSwgMCwgMCkiKTsKKyAgICB9LCBgJHtwcmVmaXh9IGludGVnZXIgMmRgKTsKKyAK
KyAgICB0ZXN0KCgpID0+IHsKKyAgICAgICAgY29uc3QgbWF0cml4ID0gbmV3IHNlbGZbY29uc3Ry
XSgibWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwg
MSkiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhTdHJpbmcobWF0cml4KSwgIm1hdHJpeCgxLCAw
LCAwLCAxLCAwLCAwKSIpOworICAgIH0sIGAke3ByZWZpeH0gaW50ZWdlciAzZGApOworCisgICAg
dGVzdCgoKSA9PiB7CisgICAgICAgIGNvbnN0IG1hdHJpeCA9IG5ldyBzZWxmW2NvbnN0cl0oIm1h
dHJpeCgwLjEsIDAuMiwgMC4zLCAwLjQsIDAuNSwgMC42KSIpOworICAgICAgICBhc3NlcnRfZXF1
YWxzKFN0cmluZyhtYXRyaXgpLCAibWF0cml4KDAuMSwgMC4yLCAwLjMsIDAuNCwgMC41LCAwLjYp
Iik7CisgICAgfSwgYCR7cHJlZml4fSBmbG9hdGluZyBwb2ludCAyZGApCisKKyAgICB0ZXN0KCgp
ID0+IHsKKyAgICAgICAgY29uc3QgbWF0cml4ID0gbmV3IHNlbGZbY29uc3RyXSgibWF0cml4M2Qo
MC4xLCAwLjIsIDAuMywgMC40LCAwLjUsIDAuNiwgMC43LCAwLjgsIDAuOSwgMC4xLCAwLjIsIDAu
MywgMC40LCAwLjUsIDAuNiwgMC43KSIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKFN0cmluZyht
YXRyaXgpLCAibWF0cml4M2QoMC4xLCAwLjIsIDAuMywgMC40LCAwLjUsIDAuNiwgMC43LCAwLjgs
IDAuOSwgMC4xLCAwLjIsIDAuMywgMC40LCAwLjUsIDAuNiwgMC43KSIpOworICAgIH0sIGAke3By
ZWZpeH0gZmxvYXRpbmcgcG9pbnQgM2RgKTsKKworICAgIFtOYU4sIEluZmluaXR5LCAtSW5maW5p
dHldLmZvckVhY2gobnVtID0+IHsKKyAgICAgICAgdGVzdCgoKSA9PiB7CisgICAgICAgICAgICBj
b25zdCBtYXRyaXggPSBuZXcgc2VsZltjb25zdHJdKCk7CisgICAgICAgICAgICBtYXRyaXguYSA9
IG51bTsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgKCkg
PT4gU3RyaW5nKG1hdHJpeCkpOworICAgICAgICB9LCBgJHtwcmVmaXh9ICR7bnVtfWApOworICAg
IH0pOworCisgICAgdGVzdCgoKSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZltjb25zdHJdLnByb3RvdHlwZSwgInRvU3RyaW5nIiku
ZW51bWVyYWJsZSk7CisgICAgfSwgYCR7Y29uc3RyfS50b1N0cmluZyBzaG91bGQgYmUgZW51bWVy
YWJsZWApOworfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLWV4cGVj
dGVkLnR4dAppbmRleCA0OGQxOGEwODdmYzg0NTM4OGM1OWU3MWI2ZTkzMTBkZTdhZjI4YTU4Li42
ODE3NWUwMjk0NGZiOWNjYjRkNzZlZWM1YmUxZmQxNjNhMmFmNWRhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMtZXhw
ZWN0ZWQudHh0CkBAIC02LDkgKzYsOSBAQCBQQVNTIEF1ZGlvLnByb3RvdHlwZS50b1N0cmluZy5j
YWxsKG5ldyBBdWRpbykgaXMgJ1tvYmplY3QgSFRNTEF1ZGlvRWxlbWVudF0nCiBQQVNTIEltYWdl
LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBJbWFnZSkgaXMgJ1tvYmplY3QgSFRNTEltYWdl
RWxlbWVudF0nCiBQQVNTIE9wdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgT3B0aW9u
KSBpcyAnW29iamVjdCBIVE1MT3B0aW9uRWxlbWVudF0nCiBQQVNTIFdlYktpdFBvaW50LnByb3Rv
dHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRQb2ludCkgaXMgJ1tvYmplY3QgV2ViS2l0UG9p
bnRdJwotUEFTUyBXZWJLaXRDU1NNYXRyaXgucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IFdl
YktpdENTU01hdHJpeCkgaXMgJ21hdHJpeCgxLjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwLCAx
LjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwKScKLVBBU1MgV2ViS2l0Q1NTTWF0cml4LnByb3Rv
dHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRDU1NNYXRyaXgoKSkgaXMgJ21hdHJpeCgxLjAw
MDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwLCAxLjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwKScK
LVBBU1MgV2ViS2l0Q1NTTWF0cml4LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRD
U1NNYXRyaXgodW5kZWZpbmVkKSkgaXMgJ21hdHJpeCgxLjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAw
MDAwLCAxLjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwKScKK1BBU1MgV2ViS2l0Q1NTTWF0cml4
LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRDU1NNYXRyaXgpIGlzICdtYXRyaXgo
MSwgMCwgMCwgMSwgMCwgMCknCitQQVNTIFdlYktpdENTU01hdHJpeC5wcm90b3R5cGUudG9TdHJp
bmcuY2FsbChuZXcgV2ViS2l0Q1NTTWF0cml4KCkpIGlzICdtYXRyaXgoMSwgMCwgMCwgMSwgMCwg
MCknCitQQVNTIFdlYktpdENTU01hdHJpeC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2Vi
S2l0Q1NTTWF0cml4KHVuZGVmaW5lZCkpIGlzICdtYXRyaXgoMSwgMCwgMCwgMSwgMCwgMCknCiBQ
QVNTIG5ldyBXZWJLaXRDU1NNYXRyaXgobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
IChET00gRXhjZXB0aW9uIDEyKTogVGhlIHN0cmluZyBkaWQgbm90IG1hdGNoIHRoZSBleHBlY3Rl
ZCBwYXR0ZXJuLi4KIFBBU1MgWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwo
bmV3IFhNTEh0dHBSZXF1ZXN0KSBpcyAnW29iamVjdCBYTUxIdHRwUmVxdWVzdF0nCiBQQVNTIFhT
TFRQcm9jZXNzb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IFhTTFRQcm9jZXNzb3IpIGlz
ICdbb2JqZWN0IFhTTFRQcm9jZXNzb3JdJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLmh0bWwKaW5kZXggNTUzNWM1OGNmOGYxYjllYzQw
Yzk4MTI3YjRhY2EyMDk2MjhkMzJiYi4uODU3NDhmMzk2MWUyMTFkYjA4NTBjZmFhMzcxMjJlNDRm
NGM5MmY0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2N1c3RvbS1j
b25zdHJ1Y3RvcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY3VzdG9t
LWNvbnN0cnVjdG9ycy5odG1sCkBAIC0xNSw5ICsxNSw5IEBACiAgICAgc2hvdWxkQmUoIkltYWdl
LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBJbWFnZSkiLCAiJ1tvYmplY3QgSFRNTEltYWdl
RWxlbWVudF0nIik7CiAgICAgc2hvdWxkQmUoIk9wdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2Fs
bChuZXcgT3B0aW9uKSIsICInW29iamVjdCBIVE1MT3B0aW9uRWxlbWVudF0nIik7CiAgICAgc2hv
dWxkQmUoIldlYktpdFBvaW50LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRQb2lu
dCkiLCAiJ1tvYmplY3QgV2ViS2l0UG9pbnRdJyIpOwotICAgIHNob3VsZEJlKCJXZWJLaXRDU1NN
YXRyaXgucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IFdlYktpdENTU01hdHJpeCkiLCAiJ21h
dHJpeCgxLjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwLCAxLjAwMDAwMCwgMC4wMDAwMDAsIDAu
MDAwMDAwKSciKTsKLSAgICBzaG91bGRCZSgiV2ViS2l0Q1NTTWF0cml4LnByb3RvdHlwZS50b1N0
cmluZy5jYWxsKG5ldyBXZWJLaXRDU1NNYXRyaXgoKSkiLCAiJ21hdHJpeCgxLjAwMDAwMCwgMC4w
MDAwMDAsIDAuMDAwMDAwLCAxLjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwKSciKTsKLSAgICBz
aG91bGRCZSgiV2ViS2l0Q1NTTWF0cml4LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJL
aXRDU1NNYXRyaXgodW5kZWZpbmVkKSkiLCAiJ21hdHJpeCgxLjAwMDAwMCwgMC4wMDAwMDAsIDAu
MDAwMDAwLCAxLjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwKSciKTsKKyAgICBzaG91bGRCZSgi
V2ViS2l0Q1NTTWF0cml4LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRDU1NNYXRy
aXgpIiwgIidtYXRyaXgoMSwgMCwgMCwgMSwgMCwgMCknIik7CisgICAgc2hvdWxkQmUoIldlYktp
dENTU01hdHJpeC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0Q1NTTWF0cml4KCkp
IiwgIidtYXRyaXgoMSwgMCwgMCwgMSwgMCwgMCknIik7CisgICAgc2hvdWxkQmUoIldlYktpdENT
U01hdHJpeC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0Q1NTTWF0cml4KHVuZGVm
aW5lZCkpIiwgIidtYXRyaXgoMSwgMCwgMCwgMSwgMCwgMCknIik7CiAgICAgc2hvdWxkVGhyb3co
Im5ldyBXZWJLaXRDU1NNYXRyaXgobnVsbCkiKTsKICAgICBzaG91bGRCZSgiWE1MSHR0cFJlcXVl
c3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IFhNTEh0dHBSZXF1ZXN0KSIsICInW29iamVj
dCBYTUxIdHRwUmVxdWVzdF0nIik7CiAgICAgc2hvdWxkQmUoIlhTTFRQcm9jZXNzb3IucHJvdG90
eXBlLnRvU3RyaW5nLmNhbGwobmV3IFhTTFRQcm9jZXNzb3IpIiwgIidbb2JqZWN0IFhTTFRQcm9j
ZXNzb3JdJyIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>