<?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>113862</bug_id>
          
          <creation_ts>2013-04-03 03:04:27 -0700</creation_ts>
          <short_desc>Negative zero checks cause unnecessary speculation failures on SunSpider on ARMv7</short_desc>
          <delta_ts>2013-04-25 15:51:34 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Roman Zhuykov">zhroma</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>868575</commentid>
    <comment_count>0</comment_count>
    <who name="Roman Zhuykov">zhroma</who>
    <bug_when>2013-04-03 03:04:27 -0700</bug_when>
    <thetext>While testing SunSpider math-spectral-norm on x86-64 and ARMv7 Linux I found, that there are a lot of &quot;Speculation failures&quot; on ARM, but not on x86. All these speculation failures happen because of the following:

The hottest function in math-spectral-norm is A, it is inlined in some other functions on DFG. Function arguments are integer numbers.
function A(i,j) {
   return 1/((i+j)*(i+j+1)/2+i+1);
}

When DFG JIT creates code for the first division (by 2) -- it adds negative-zero checks. On x86 when ArithDiv divides integers x/y speculation failure happens only when (x == 0 &amp;&amp; y &lt; 0), and such check is inserted into assembly only when &quot;!nodeCanIgnoreNegativeZero(node-&gt;arithNodeFlags())&quot;. But on ARM, FixupPhase thansforms division into 4 operations (convert x do double dx, convert y to double dy, division dz=dx/dy, convert dz to integer z if possible). And the last operation DoubleAsInt32 always makes a speculation failure when its integer result is zero. In the above function A every time when i and j are both zeros -- this check gives a speculation failure.

The main idea is that we should check nodeCanIgnoreNegativeZero() for DoubleAsInt32 nodes, and create zero-check only when needed.
Also, I found that NodeNeedsNegZero flag is wrongly set to 1 for this division. The result of this division is then added to constant (+i+1). The logic behind the code in BackwardPropagationPhase assumes that when one of ArithAdd operands is non-negative-zero constant we shouldn&apos;t check negative zero for the other operand. But the &quot;isNotNegZero&quot; function has wrong implementation: it actually checks for &quot;isNegativeZero&quot;. Also in ArithSub node condition that allows to clear NodeNeedsNegZero flag can be extended.
Fixing all these issues allows us to have right NeedsNegZero flags and remove some unnecessary negative-zero checks. This gives a 22% speed up on the math-spectral-norm on ARMv7 Linux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868577</commentid>
    <comment_count>1</comment_count>
      <attachid>196312</attachid>
    <who name="Roman Zhuykov">zhroma</who>
    <bug_when>2013-04-03 03:08:26 -0700</bug_when>
    <thetext>Created attachment 196312
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868683</commentid>
    <comment_count>2</comment_count>
      <attachid>196342</attachid>
    <who name="Roman Zhuykov">zhroma</who>
    <bug_when>2013-04-03 06:45:11 -0700</bug_when>
    <thetext>Created attachment 196342
testcase

For problem with wrong &quot;isNotNegZero&quot; implementation I just found the following testcase:

function main() {
  var x = 1;
  var y = -1;
  var s;
  var i;
  for (i = 0; i &lt; 100000; i++) {
    if (i == 99999)
      x = 0;
    s = 1/(x/y+(-0));
  }
  return s;
}

print(1/(0/-1+(-0)));
print(main());

On x86-64 Linux this prints (wrong):
-Infinity
Infinity

While on ARMv7 Linux (right):
-Infinity
-Infinity

My patch fixes this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869940</commentid>
    <comment_count>3</comment_count>
      <attachid>196312</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-05 12:08:56 -0700</bug_when>
    <thetext>Comment on attachment 196312
Proposed patch

This looks good.  But, I am withholding r+ until you add layout tests for the cases where we generated incorrect code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870733</commentid>
    <comment_count>4</comment_count>
      <attachid>196848</attachid>
    <who name="Roman Zhuykov">zhroma</who>
    <bug_when>2013-04-08 05:58:25 -0700</bug_when>
    <thetext>Created attachment 196848
Proposed patch with layout test

Added testcase to layout tests. Is now OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870771</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-08 07:25:51 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=196848) [details]
&gt; Proposed patch with layout test
&gt; 
&gt; Added testcase to layout tests. Is now OK?

Yup, looks good to me!  Did you mean to set r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870775</commentid>
    <comment_count>6</comment_count>
    <who name="Roman Zhuykov">zhroma</who>
    <bug_when>2013-04-08 07:34:17 -0700</bug_when>
    <thetext>Yes, could you please review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872772</commentid>
    <comment_count>7</comment_count>
      <attachid>197263</attachid>
    <who name="Roman Zhuykov">zhroma</who>
    <bug_when>2013-04-10 07:02:27 -0700</bug_when>
    <thetext>Created attachment 197263
New patch

Comparing SunSpider on x86-64 and ARMv7 I found that ArithDiv nodes cause unnecessary speculation failures only in math-spectral-norm, but ArithMod nodes cause them in 8 other tests from SunSpider. Fixing all of them gives significant SunSpider speedup.
On x86 when ArithMod divides integers &quot;x%y&quot; speculation failure happens only when &quot;result == 0 &amp;&amp; x &lt; 0&quot;, but on ARMv7 it checks only &quot;result == 0&quot;. The attached patch fixes the problem. As for ArithDiv, speculation checks for ArithMod nodes should be created on all platforms only when NodeNeedsNegZero is set.
In special case on ARMv7s, when second operand is power-of-two-constant, there were no speculation checks. The same assembly can be used on ARMv7, but we must insert negative checks on both platforms. Also I found that sometimes speculationCheck is called with Overflow ExitKind, although is should be NegativeZero.
And the last -- I see that compileArithNegate calls nodeCanIgnoreNegativeZero(node-&gt;arithNodeFlags()), and it wrongly always returns true. So, now there are two new node types where arithNodeFlags should not mask NodeNeedsNegZero -- DoubleAsInt32, ArithNegate. And certainly ArithMul, ArithDiv, ArithMod.

Now there are three layout tests in the patch:
Negative-zero-divide shows early discussed problem with isNotNegZero implementation, and it fails on x86 without my patch.
Negative-zero-modulo shows problem with ArithMod, where the second operand is power-of-two-constant, it should fail on ARMv7s without my patch.
Negative-zero-negate shows problem with ArithNegate, it fails on all platforms without my patch.

Here are performance results for ARMv7.

TEST                   COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:           1.050x as fast    1473.7ms +/- 0.7%   1403.9ms +/- 0.6%     significant

=============================================================================

  3d:                  1.081x as fast     267.3ms +/- 1.8%    247.3ms +/- 2.0%     significant
    cube:              -                   96.4ms +/- 2.3%     96.3ms +/- 2.5% 
    morph:             -                   44.6ms +/- 0.8%     44.6ms +/- 1.1% 
    raytrace:          1.187x as fast     126.3ms +/- 2.4%    106.4ms +/- 2.2%     significant

  access:              -                  149.3ms +/- 1.6%    149.0ms +/- 1.3% 
    binary-trees:      -                   27.8ms +/- 2.4%     27.7ms +/- 2.7% 
    fannkuch:          -                   50.3ms +/- 1.0%     50.3ms +/- 0.7% 
    nbody:             -                   47.2ms +/- 2.5%     47.0ms +/- 2.2% 
    nsieve:            -                   24.0ms +/- 1.4%     24.0ms +/- 1.4% 

  bitops:              -                   91.0ms +/- 0.9%     91.0ms +/- 0.9% 
    3bit-bits-in-byte: -                   16.7ms +/- 2.1%     16.7ms +/- 2.1% 
    bits-in-byte:      -                   23.5ms +/- 1.6%     23.5ms +/- 1.6% 
    bitwise-and:       -                   23.0ms +/- 1.5%     22.7ms +/- 1.5% 
    nsieve-bits:       ??                  27.8ms +/- 1.1%     28.1ms +/- 1.4%     not conclusive: might be *1.011x as slow*

  controlflow:         -                   25.0ms +/- 2.7%     24.7ms +/- 2.0% 
    recursive:         -                   25.0ms +/- 2.7%     24.7ms +/- 2.0% 

  crypto:              1.166x as fast     175.2ms +/- 1.6%    150.3ms +/- 1.5%     significant
    aes:               1.179x as fast      80.5ms +/- 1.4%     68.3ms +/- 1.3%     significant
    md5:               1.166x as fast      56.8ms +/- 1.9%     48.7ms +/- 2.5%     significant
    sha1:              1.138x as fast      37.9ms +/- 1.9%     33.3ms +/- 1.0%     significant

  date:                1.030x as fast     170.8ms +/- 1.4%    165.8ms +/- 1.2%     significant
    format-tofte:      -                   87.5ms +/- 1.6%     87.2ms +/- 1.3% 
    format-xparb:      1.060x as fast      83.3ms +/- 1.6%     78.6ms +/- 1.4%     significant

  math:                1.080x as fast     121.5ms +/- 0.9%    112.5ms +/- 1.3%     significant
    cordic:            -                   33.6ms +/- 1.5%     33.1ms +/- 1.6% 
    partial-sums:      -                   51.9ms +/- 0.8%     51.8ms +/- 1.1% 
    spectral-norm:     1.30x as fast       36.0ms +/- 1.3%     27.6ms +/- 2.2%     significant

  regexp:              ??                  69.7ms +/- 0.5%     69.9ms +/- 0.6%     not conclusive: might be *1.003x as slow*
    dna:               ??                  69.7ms +/- 0.5%     69.9ms +/- 0.6%     not conclusive: might be *1.003x as slow*

  string:              1.027x as fast     403.9ms +/- 0.5%    393.4ms +/- 0.8%     significant
    base64:            -                   38.8ms +/- 1.2%     38.8ms +/- 1.7% 
    fasta:             1.010x as fast      68.0ms +/- 0.7%     67.3ms +/- 0.7%     significant
    tagcloud:          -                   94.7ms +/- 1.4%     94.0ms +/- 1.2% 
    unpack-code:       1.019x as fast     148.0ms +/- 0.7%    145.2ms +/- 0.6%     significant
    validate-input:    1.131x as fast      54.4ms +/- 0.7%     48.1ms +/- 0.8%     significant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875727</commentid>
    <comment_count>8</comment_count>
    <who name="Roman Zhuykov">zhroma</who>
    <bug_when>2013-04-15 05:36:07 -0700</bug_when>
    <thetext>Could you please review the new patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881499</commentid>
    <comment_count>9</comment_count>
      <attachid>197263</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-25 12:33:07 -0700</bug_when>
    <thetext>Comment on attachment 197263
New patch

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

r=me

cq- because of the layout test issue. Any committer can fix the layout test and then land, or you can post a new patch, and I can cq+ it.

&gt; LayoutTests/fast/js/regress/script-tests/negative-zero-divide.js:6
&gt; +  for (i = 0; i &lt; 100000; i++) {

Please change this to 100. That&apos;s our de facto limit for getting code to run in the DFG, without making regression tests run too long.

&gt; LayoutTests/fast/js/regress/script-tests/negative-zero-divide.js:7
&gt; +    if (i == 99999)

And 99 here.

&gt; LayoutTests/fast/js/regress/script-tests/negative-zero-modulo.js:6
&gt; +  for (i = 0; i &lt; 100000; i++) {
&gt; +    if (i == 99999)

Ditto.

&gt; LayoutTests/fast/js/regress/script-tests/negative-zero-negate.js:6
&gt; +  for (i = 0; i &lt; 100000; i++) {
&gt; +    if (i == 99999)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881547</commentid>
    <comment_count>10</comment_count>
      <attachid>199746</attachid>
    <who name="Roman Zhuykov">zhroma</who>
    <bug_when>2013-04-25 13:57:58 -0700</bug_when>
    <thetext>Created attachment 199746
patch with smaller layout tests

(In reply to comment #9)
&gt; (From update of attachment 197263 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=197263&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; cq- because of the layout test issue. Any committer can fix the layout test and then land, or you can post a new patch, and I can cq+ it.
&gt; 
&gt; &gt; LayoutTests/fast/js/regress/script-tests/negative-zero-divide.js:6
&gt; &gt; +  for (i = 0; i &lt; 100000; i++) {
&gt; 
&gt; Please change this to 100. That&apos;s our de facto limit for getting code to run in the DFG, without making regression tests run too long.

Thank you for your review. Unfortunately, &quot;i &lt; 100&quot; is not enough. In script-tests directory there are 95 tests, 71 of them have loops with more than 10000 iterations, 55 tests have more than 100000 loop iterations. I&apos;ve just tested my negative-zero-negate.js on ARMv7 Linux. The test starts to fail (without my patch) only with &quot;i &lt; 1094&quot; or more loop iterations. Checking with DFG_ENABLE_DEBUG_VERBOSE=1 shows, that there are no DFG compilations when I use &quot;i &lt; 1093&quot; or smaller values. I have created the new patch with &quot;i &lt; 2001&quot;. This is fast enough, and give some reserve if DFG-starting parameters would change later. Is patch now OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881549</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-25 14:00:13 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=199746) [details]
&gt; patch with smaller layout tests
&gt; 
&gt; (In reply to comment #9)
&gt; &gt; (From update of attachment 197263 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=197263&amp;action=review
&gt; &gt; 
&gt; &gt; r=me
&gt; &gt; 
&gt; &gt; cq- because of the layout test issue. Any committer can fix the layout test and then land, or you can post a new patch, and I can cq+ it.
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/fast/js/regress/script-tests/negative-zero-divide.js:6
&gt; &gt; &gt; +  for (i = 0; i &lt; 100000; i++) {
&gt; &gt; 
&gt; &gt; Please change this to 100. That&apos;s our de facto limit for getting code to run in the DFG, without making regression tests run too long.
&gt; 
&gt; Thank you for your review. Unfortunately, &quot;i &lt; 100&quot; is not enough. In script-tests directory there are 95 tests, 71 of them have loops with more than 10000 iterations, 55 tests have more than 100000 loop iterations. I&apos;ve just tested my negative-zero-negate.js on ARMv7 Linux. The test starts to fail (without my patch) only with &quot;i &lt; 1094&quot; or more loop iterations. Checking with DFG_ENABLE_DEBUG_VERBOSE=1 shows, that there are no DFG compilations when I use &quot;i &lt; 1093&quot; or smaller values. I have created the new patch with &quot;i &lt; 2001&quot;. This is fast enough, and give some reserve if DFG-starting parameters would change later. Is patch now OK?

The usual trick is to use a helper function.  Repeated function invocation triggers compilation sooner, than repeated loop iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881596</commentid>
    <comment_count>12</comment_count>
      <attachid>199746</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-25 15:51:32 -0700</bug_when>
    <thetext>Comment on attachment 199746
patch with smaller layout tests

Clearing flags on attachment: 199746

Committed r149152: &lt;http://trac.webkit.org/changeset/149152&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881597</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-25 15:51:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196312</attachid>
            <date>2013-04-03 03:08:26 -0700</date>
            <delta_ts>2013-04-08 05:58:25 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>negative-zero.patch</filename>
            <type>text/plain</type>
            <size>11193</size>
            <attacher name="Roman Zhuykov">zhroma</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdkYzI4ZDEuLjI2OWJjMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTA0LTAzICBSb21hbiBaaHV5a292
ICA8emhyb21hQGlzcHJhcy5ydT4KKworICAgICAgICBGaXggc29tZSBwcm9ibGVtcyB3aXRoIHBy
b2Nlc3NpbmcgbmVnYXRpdmUgemVybyBvbiBERkcuCisgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2Fy
eSBuZWdhdGl2ZS16ZXJvIGNoZWNrcyBmcm9tIGludGVnZXIgZGl2aXNpb24uCisgICAgICAgIFRo
aXMgc2hvd3MgMjIlIHNwZWVkIHVwIG9mIG1hdGgtc3BlY3RyYWwtbm9ybSB0ZXN0IGZyb20gU3Vu
U3BpZGVyIG9uIEFSTXY3IExpbnV4LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEzODYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKToKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTXY3OjpicmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMik6CisgICAgICAg
ICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJT
SDQ6OmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKToKKyAgICAgICAgKiBkZmcvREZHQmFj
a3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QmFja3dhcmRz
UHJvcGFnYXRpb25QaGFzZTo6aXNOb3ROZWdaZXJvKToKKyAgICAgICAgKEpTQzo6REZHOjpCYWNr
d2FyZHNQcm9wYWdhdGlvblBoYXNlOjppc05vdFBvc1plcm8pOgorICAgICAgICAoSlNDOjpERkc6
OkJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RG
R05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjphcml0aE5vZGVGbGFncyk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUFzSW50MzIpOgorCiAyMDEzLTA0LTAxICBCZW5qYW1p
biBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgVmVjdG9yOjpy
ZXNlcnZlSW5pdGlhbENhcGFjaXR5IGFuZCBWZWN0b3I6OnVuY2hlY2tlZEFwcGVuZCBmb3IgSlND
J3MgQVBJcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTS5oCmluZGV4IGQ0YjAzNzEuLjBkZjQ5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKQEAgLTEyNDcsNyAr
MTI0Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRh
YmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8gTWF5IGFsc28gYnJhbmNoIGZv
ciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJpdHMKICAgICAvLyAo
c3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIDApLgotICAgIHZvaWQgYnJhbmNoQ29udmVydERv
dWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYg
ZmFpbHVyZUNhc2VzLCBGUFJlZ2lzdGVySUQpCisgICAgdm9pZCBicmFuY2hDb252ZXJ0RG91Ymxl
VG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEp1bXBMaXN0JiBmYWls
dXJlQ2FzZXMsIEZQUmVnaXN0ZXJJRCwgYm9vbCBuZWdaZXJvQ2hlY2sgPSB0cnVlKQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9zMzJfZjY0KEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEs
IHNyYyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZtb3ZfYXJtMzIoZGVzdCwgQVJNUmVnaXN0ZXJz
OjpTRDAgPDwgMSk7CkBAIC0xMjU3LDcgKzEyNTcsOCBAQCBwdWJsaWM6CiAgICAgICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQoYnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHNy
YywgQVJNUmVnaXN0ZXJzOjpTRDApKTsKIAogICAgICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIHpl
cm8sIGl0IG1pZ2h0IGhhdmUgYmVlbiAtMC4wLCBhbmQgMC4wIGVxdWFscyB0byAtMC4wCi0gICAg
ICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIGRlc3QpKTsKKyAgICAg
ICAgaWYgKG5lZ1plcm9DaGVjaykKKyAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJh
bmNoVGVzdDMyKFplcm8sIGRlc3QpKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZU5v
blplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmlu
ZGV4IDYyYzQ2YzEuLmYyNWE2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBw
dWJsaWM6CiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMy
IGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1
ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCiAgICAgLy8gKHNwZWNpZmljYWxs
eSwgaW4gdGhpcyBjYXNlLCAwKS4KLSAgICB2b2lkIGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMy
KEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNl
cywgRlBSZWdpc3RlcklEKQorICAgIHZvaWQgYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIoRlBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBG
UFJlZ2lzdGVySUQsIGJvb2wgbmVnWmVyb0NoZWNrID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLnZjdnRfZmxvYXRpbmdQb2ludFRvU2lnbmVkKGZwVGVtcFJlZ2lzdGVyQXNTaW5n
bGUoKSwgc3JjKTsKICAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0LCBmcFRlbXBSZWdpc3Rl
ckFzU2luZ2xlKCkpOwpAQCAtMTExMyw3ICsxMTEzLDggQEAgcHVibGljOgogICAgICAgICBmYWls
dXJlQ2FzZXMuYXBwZW5kKGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBz
cmMsIGZwVGVtcFJlZ2lzdGVyKSk7CiAKICAgICAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyB6ZXJv
LCBpdCBtaWdodCBoYXZlIGJlZW4gLTAuMCwgYW5kIHRoZSBkb3VibGUgY29tcGFyaXNvbiB3b24n
dCBjYXRjaCB0aGlzIQotICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFRlc3QzMiha
ZXJvLCBkZXN0KSk7CisgICAgICAgIGlmIChuZWdaZXJvQ2hlY2spCisgICAgICAgICAgICBmYWls
dXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBkZXN0KSk7CiAgICAgfQogCiAgICAg
SnVtcCBicmFuY2hEb3VibGVOb25aZXJvKEZQUmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
TUlQUy5oCmluZGV4IGUxOGQ4NmMuLjAzMWY3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMjYyMiwxMyArMjYy
MiwxNCBAQCBwdWJsaWM6CiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJs
ZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Ig
c29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCiAgICAgLy8gKHNw
ZWNpZmljYWxseSwgaW4gdGhpcyBjYXNlLCAwKS4KLSAgICB2b2lkIGJyYW5jaENvbnZlcnREb3Vi
bGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZh
aWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCkKKyAgICB2b2lkIGJyYW5jaENvbnZlcnRE
b3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3Qm
IGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCwgYm9vbCBuZWdaZXJvQ2hlY2sgPSB0
cnVlKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuY3Z0d2QoZnBUZW1wUmVnaXN0ZXIsIHNy
Yyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOwogCiAg
ICAgICAgIC8vIElmIHRoZSByZXN1bHQgaXMgemVybywgaXQgbWlnaHQgaGF2ZSBiZWVuIC0wLjAs
IGFuZCB0aGUgZG91YmxlIGNvbXBhcmlzb24gd29uJ3QgY2F0Y2ggdGhpcyEKLSAgICAgICAgZmFp
bHVyZUNhc2VzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVy
bykpOworICAgICAgICBpZiAobmVnWmVyb0NoZWNrKQorICAgICAgICAgICAgZmFpbHVyZUNhc2Vz
LmFwcGVuZChicmFuY2gzMihFcXVhbCwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybykpOwogCiAg
ICAgICAgIC8vIENvbnZlcnQgdGhlIGludGVnZXIgcmVzdWx0IGJhY2sgdG8gZmxvYXQgJiBjb21w
YXJlIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZSAtIGlmIG5vdCBlcXVhbCBvciB1bm9yZGVyZWQgKE5h
TikgdGhlbiBqdW1wLgogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShkZXN0LCBmcFRlbXAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlclNINC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clNINC5oCmluZGV4IDU2ZmI3NGQuLmZhODAyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKQEAgLTIwNzMsMjAgKzIwNzMs
MjIgQEAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7CiAgICAgfQogCi0gICAgdm9p
ZCBicmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEZQUmVnaXN0ZXJJRCBmcFRlbXApCisgICAg
dm9pZCBicmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEZQUmVnaXN0ZXJJRCBmcFRlbXAsIGJv
b2wgbmVnWmVyb0NoZWNrID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmZ0cmNk
cm1mcHVsKHNyYyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWcoZGVzdCk7CiAgICAg
ICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKGRlc3QsIGZzY3JhdGNoKTsKICAgICAgICAgZmFpbHVy
ZUNhc2VzLmFwcGVuZChicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgZnNj
cmF0Y2gsIHNyYykpOwogCi0gICAgICAgIGlmIChkZXN0ID09IFNINFJlZ2lzdGVyczo6cjApCi0g
ICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBFcUltbVIwKDAsIGRlc3QpOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdkltbTgoMCwgc2NyYXRjaFJlZzMpOwotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgZGVzdCwgU0g0Q29u
ZGl0aW9uKEVxdWFsKSk7CisgICAgICAgIGlmIChuZWdaZXJvQ2hlY2spIHsKKyAgICAgICAgICAg
IGlmIChkZXN0ID09IFNINFJlZ2lzdGVyczo6cjApCisgICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuY21wRXFJbW1SMCgwLCBkZXN0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdkltbTgoMCwgc2NyYXRjaFJlZzMpOworICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyYXRjaFJlZzMsIGRlc3QsIFNINENvbmRpdGlvbihF
cXVhbCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChi
cmFuY2hUcnVlKCkpOwogICAgICAgICB9Ci0gICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJh
bmNoVHJ1ZSgpKTsKICAgICB9CiAKICAgICB2b2lkIG5lZzMyKFJlZ2lzdGVySUQgZHN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCmluZGV4IDUzY2I4MGMyLi4xMWYzZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
CkBAIC04ODQsMTMgKzg4NCwxNCBAQCBwdWJsaWM6CiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBu
b3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBh
bHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBi
aXRzCiAgICAgLy8gKHNwZWNpZmljYWxseSwgaW4gdGhpcyBjYXNlLCAwKS4KLSAgICB2b2lkIGJy
YW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCkKKyAgICB2b2lk
IGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCwgYm9vbCBu
ZWdaZXJvQ2hlY2sgPSB0cnVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQo
KSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaV9ycihzcmMsIGRlc3QpOwogCiAgICAg
ICAgIC8vIElmIHRoZSByZXN1bHQgaXMgemVybywgaXQgbWlnaHQgaGF2ZSBiZWVuIC0wLjAsIGFu
ZCB0aGUgZG91YmxlIGNvbXBhcmlzb24gd29uJ3QgY2F0Y2ggdGhpcyEKLSAgICAgICAgZmFpbHVy
ZUNhc2VzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZGVzdCkpOworICAgICAgICBpZiAobmVn
WmVyb0NoZWNrKQorICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hUZXN0MzIo
WmVybywgZGVzdCkpOwogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGludGVnZXIgcmVzdWx0IGJh
Y2sgdG8gZmxvYXQgJiBjb21wYXJlIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZSAtIGlmIG5vdCBlcXVh
bCBvciB1bm9yZGVyZWQgKE5hTikgdGhlbiBqdW1wLgogICAgICAgICBjb252ZXJ0SW50MzJUb0Rv
dWJsZShkZXN0LCBmcFRlbXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNjYwOWMxZi4uNWUy
YjEwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQ
cm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
Y2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC02NiwxNCArNjYsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgaWYgKCFtX2dyYXBoLmlzTnVtYmVyQ29uc3RhbnQobm9kZSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZk51
bWJlckNvbnN0YW50KG5vZGUpOwotICAgICAgICByZXR1cm4gIXZhbHVlICYmIDEuMCAvIHZhbHVl
IDwgMC4wOworICAgICAgICByZXR1cm4gKHZhbHVlIHx8IDEuMCAvIHZhbHVlID4gMC4wKTsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBpc05vdFplcm8oTm9kZSogbm9kZSkKKyAgICBib29sIGlzTm90
UG9zWmVybyhOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFtX2dyYXBoLmlzTnVtYmVy
Q29uc3RhbnQobm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVy
biAhIW1fZ3JhcGgudmFsdWVPZk51bWJlckNvbnN0YW50KG5vZGUpOworICAgICAgICBkb3VibGUg
dmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZOdW1iZXJDb25zdGFudChub2RlKTsKKyAgICAgICAgcmV0
dXJuICh2YWx1ZSB8fCAxLjAgLyB2YWx1ZSA8IDAuMCk7CiAgICAgfQogCiAgICAgLy8gVGVzdHMg
aWYgdGhlIGFic29sdXRlIHZhbHVlIGlzIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgcG93ZXIgb2Yg
dHdvLgpAQCAtMjQ3LDcgKzI0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIEFyaXRoU3ViOiB7Ci0gICAgICAgICAgICBpZiAoaXNOb3RaZXJvKG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSkgfHwgaXNOb3RaZXJvKG5vZGUtPmNoaWxkMigpLm5vZGUoKSkp
CisgICAgICAgICAgICBpZiAoaXNOb3ROZWdaZXJvKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkgfHwg
aXNOb3RQb3NaZXJvKG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpCiAgICAgICAgICAgICAgICAgZmxh
Z3MgJj0gfk5vZGVOZWVkc05lZ1plcm87CiAgICAgICAgICAgICBpZiAoIWlzV2l0aGluUG93ZXJP
ZlR3bzwzMj4obm9kZS0+Y2hpbGQxKCkpICYmICFpc1dpdGhpblBvd2VyT2ZUd288MzI+KG5vZGUt
PmNoaWxkMigpKSkKICAgICAgICAgICAgICAgICBmbGFncyB8PSBOb2RlVXNlZEFzTnVtYmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAwNjBmZTNiLi44MWQwMmRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTIyLDcgKzUyMiw3IEBAIHN0cnVjdCBO
b2RlIHsKICAgICBOb2RlRmxhZ3MgYXJpdGhOb2RlRmxhZ3MoKQogICAgIHsKICAgICAgICAgTm9k
ZUZsYWdzIHJlc3VsdCA9IG1fZmxhZ3MgJiBOb2RlQXJpdGhGbGFnc01hc2s7Ci0gICAgICAgIGlm
IChvcCgpID09IEFyaXRoTXVsIHx8IG9wKCkgPT0gQXJpdGhEaXYgfHwgb3AoKSA9PSBBcml0aE1v
ZCkKKyAgICAgICAgaWYgKG9wKCkgPT0gQXJpdGhNdWwgfHwgb3AoKSA9PSBBcml0aERpdiB8fCBv
cCgpID09IEFyaXRoTW9kIHx8IG9wKCkgPT0gRG91YmxlQXNJbnQzMikKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQgJiB+Tm9kZU5lZWRzTmVnWmVybzsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCmluZGV4IGY3NzM5MDMuLmJlOGQ3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0yMzQzLDcgKzIzNDMsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlQXNJbnQzMihOb2RlKiBub2RlKQogICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
ZmFpbHVyZUNhc2VzOwotICAgIG1faml0LmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKHZhbHVl
RlBSLCByZXN1bHRHUFIsIGZhaWx1cmVDYXNlcywgc2NyYXRjaEZQUik7CisgICAgYm9vbCBuZWda
ZXJvQ2hlY2sgPSAhbm9kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFn
cygpKTsKKyAgICBtX2ppdC5icmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMih2YWx1ZUZQUiwgcmVz
dWx0R1BSLCBmYWlsdXJlQ2FzZXMsIHNjcmF0Y2hGUFIsIG5lZ1plcm9DaGVjayk7CiAgICAgZm9y
d2FyZFNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGZhaWx1cmVD
YXNlcywgVmFsdWVSZWNvdmVyeTo6aW5GUFIodmFsdWVGUFIpKTsKIAogICAgIGludGVnZXJSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsK
</data>
<flag name="review"
          id="218384"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>196342</attachid>
            <date>2013-04-03 06:45:11 -0700</date>
            <delta_ts>2013-04-03 06:45:11 -0700</delta_ts>
            <desc>testcase</desc>
            <filename>bug.js</filename>
            <type>text/plain</type>
            <size>207</size>
            <attacher name="Roman Zhuykov">zhroma</attacher>
            
              <data encoding="base64">ZnVuY3Rpb24gbWFpbigpIHsKICB2YXIgeCA9IDE7CiAgdmFyIHkgPSAtMTsKICB2YXIgczsKICB2
YXIgaTsKICBmb3IgKGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKICAgIGlmIChpID09IDk5OTk5
KQogICAgICB4ID0gMDsKICAgIHMgPSAxLyh4L3krKC0wKSk7CiAgfQogIHJldHVybiBzOwp9Cgpw
cmludCgxLygwLy0xKygtMCkpKTsKcHJpbnQobWFpbigpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196848</attachid>
            <date>2013-04-08 05:58:25 -0700</date>
            <delta_ts>2013-04-25 13:57:58 -0700</delta_ts>
            <desc>Proposed patch with layout test</desc>
            <filename>to-send-neg-zero2.diff</filename>
            <type>text/plain</type>
            <size>13473</size>
            <attacher name="Roman Zhuykov">zhroma</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYzYyMWI2Li4wYWM0ZmUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDQt
MDggIFJvbWFuIFpodXlrb3YgIDx6aHJvbWFAaXNwcmFzLnJ1PgorCisgICAgICAgIERpdmlzaW9u
IGJ5IG5lZ2F0aXZlIHplcm8gc2hvdWxkIGJlIG9wdGltaXplZCBjb3JyZWNsdHkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM4NjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvanMvcmVncmVz
cy9uZWdhdGl2ZS16ZXJvLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9y
ZWdyZXNzL25lZ2F0aXZlLXplcm8uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9uZWdhdGl2ZS16ZXJvLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6
CisKIDIwMTMtMDQtMDggIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlZ3Jlc3Npb24ocjE0Nzg5MykgQ2F1c2VkIHNldmVyYWwgZWRpdGluZyB0ZXN0
cyB0byBmYWlsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvbmVnYXRp
dmUtemVyby1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvbmVnYXRp
dmUtemVyby1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OWNlMGZkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9u
ZWdhdGl2ZS16ZXJvLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvbmVn
YXRpdmUtemVybworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNl
cHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL25lZ2F0aXZl
LXplcm8uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9uZWdhdGl2ZS16ZXJvLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEwYjRiNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9uZWdhdGl2ZS16ZXJvLmh0bWwK
QEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
bmVnYXRpdmUtemVyby5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jl
c3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL25lZ2F0aXZlLXplcm8uanMgYi9MYXlv
dXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL25lZ2F0aXZlLXplcm8uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ2NjJiMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbmVnYXRpdmUtemVy
by5qcwpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBmb28oKSB7CisgIHZhciB4ID0gMTsKKyAg
dmFyIHkgPSAtMTsKKyAgdmFyIHM7CisgIHZhciBpOworICBmb3IgKGkgPSAwOyBpIDwgMTAwMDAw
OyBpKyspIHsKKyAgICBpZiAoaSA9PSA5OTk5OSkKKyAgICAgIHggPSAwOworICAgIHMgPSAxLyh4
L3krKC0wKSk7CisgIH0KKyAgcmV0dXJuIHM7Cit9CisKK3ZhciB4ID0gKDEvKDAvLTErKC0wKSkp
LnRvU3RyaW5nKCk7Cit2YXIgeSA9IGZvbygpLnRvU3RyaW5nKCk7CisKK2lmICh4ICE9IHkpCisg
ICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgeTsKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggYWEwOTFiMi4uYTU0OTFlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMTMtMDQtMDggIFJvbWFuIFpodXlrb3YgIDx6aHJvbWFAaXNwcmFzLnJ1
PgorCisgICAgICAgIEZpeCBzb21lIHByb2JsZW1zIHdpdGggcHJvY2Vzc2luZyBuZWdhdGl2ZSB6
ZXJvIG9uIERGRy4KKyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IG5lZ2F0aXZlLXplcm8gY2hl
Y2tzIGZyb20gaW50ZWdlciBkaXZpc2lvbi4KKyAgICAgICAgVGhpcyBzaG93cyAyMiUgc3BlZWQg
dXAgb2YgbWF0aC1zcGVjdHJhbC1ub3JtIHRlc3QgZnJvbSBTdW5TcGlkZXIgb24gQVJNdjcgTGlu
dXguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM4
NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTo6YnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6
OmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNo
Q29udmVydERvdWJsZVRvSW50MzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clNINC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6YnJhbmNoQ29udmVydERv
dWJsZVRvSW50MzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoQ29udmVy
dERvdWJsZVRvSW50MzIpOgorICAgICAgICAqIGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlOjpp
c05vdE5lZ1plcm8pOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhh
c2U6OmlzTm90UG9zWmVybyk6CisgICAgICAgIChKU0M6OkRGRzo6QmFja3dhcmRzUHJvcGFnYXRp
b25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OmFyaXRoTm9kZUZsYWdzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
RG91YmxlQXNJbnQzMik6CisKIDIwMTMtMDQtMDcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgYm91bmRzIGNoZWNraW5nIGZvciBXVEY6OlZlY3Rvcjo6b3Bl
cmF0b3JbXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTS5oCmluZGV4IGQ0YjAzNzEuLjBkZjQ5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKQEAgLTEyNDcsNyAr
MTI0Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRh
YmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8gTWF5IGFsc28gYnJhbmNoIGZv
ciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJpdHMKICAgICAvLyAo
c3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIDApLgotICAgIHZvaWQgYnJhbmNoQ29udmVydERv
dWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYg
ZmFpbHVyZUNhc2VzLCBGUFJlZ2lzdGVySUQpCisgICAgdm9pZCBicmFuY2hDb252ZXJ0RG91Ymxl
VG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEp1bXBMaXN0JiBmYWls
dXJlQ2FzZXMsIEZQUmVnaXN0ZXJJRCwgYm9vbCBuZWdaZXJvQ2hlY2sgPSB0cnVlKQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9zMzJfZjY0KEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEs
IHNyYyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZtb3ZfYXJtMzIoZGVzdCwgQVJNUmVnaXN0ZXJz
OjpTRDAgPDwgMSk7CkBAIC0xMjU3LDcgKzEyNTcsOCBAQCBwdWJsaWM6CiAgICAgICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQoYnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHNy
YywgQVJNUmVnaXN0ZXJzOjpTRDApKTsKIAogICAgICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIHpl
cm8sIGl0IG1pZ2h0IGhhdmUgYmVlbiAtMC4wLCBhbmQgMC4wIGVxdWFscyB0byAtMC4wCi0gICAg
ICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIGRlc3QpKTsKKyAgICAg
ICAgaWYgKG5lZ1plcm9DaGVjaykKKyAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJh
bmNoVGVzdDMyKFplcm8sIGRlc3QpKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZU5v
blplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmlu
ZGV4IDgxYzFkN2UuLmViYjIzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBw
dWJsaWM6CiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMy
IGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1
ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCiAgICAgLy8gKHNwZWNpZmljYWxs
eSwgaW4gdGhpcyBjYXNlLCAwKS4KLSAgICB2b2lkIGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMy
KEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNl
cywgRlBSZWdpc3RlcklEKQorICAgIHZvaWQgYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIoRlBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBG
UFJlZ2lzdGVySUQsIGJvb2wgbmVnWmVyb0NoZWNrID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLnZjdnRfZmxvYXRpbmdQb2ludFRvU2lnbmVkKGZwVGVtcFJlZ2lzdGVyQXNTaW5n
bGUoKSwgc3JjKTsKICAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0LCBmcFRlbXBSZWdpc3Rl
ckFzU2luZ2xlKCkpOwpAQCAtMTExMyw3ICsxMTEzLDggQEAgcHVibGljOgogICAgICAgICBmYWls
dXJlQ2FzZXMuYXBwZW5kKGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBz
cmMsIGZwVGVtcFJlZ2lzdGVyKSk7CiAKICAgICAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyB6ZXJv
LCBpdCBtaWdodCBoYXZlIGJlZW4gLTAuMCwgYW5kIHRoZSBkb3VibGUgY29tcGFyaXNvbiB3b24n
dCBjYXRjaCB0aGlzIQotICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFRlc3QzMiha
ZXJvLCBkZXN0KSk7CisgICAgICAgIGlmIChuZWdaZXJvQ2hlY2spCisgICAgICAgICAgICBmYWls
dXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBkZXN0KSk7CiAgICAgfQogCiAgICAg
SnVtcCBicmFuY2hEb3VibGVOb25aZXJvKEZQUmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
TUlQUy5oCmluZGV4IGUxOGQ4NmMuLjAzMWY3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMjYyMiwxMyArMjYy
MiwxNCBAQCBwdWJsaWM6CiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJs
ZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Ig
c29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCiAgICAgLy8gKHNw
ZWNpZmljYWxseSwgaW4gdGhpcyBjYXNlLCAwKS4KLSAgICB2b2lkIGJyYW5jaENvbnZlcnREb3Vi
bGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZh
aWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCkKKyAgICB2b2lkIGJyYW5jaENvbnZlcnRE
b3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3Qm
IGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCwgYm9vbCBuZWdaZXJvQ2hlY2sgPSB0
cnVlKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuY3Z0d2QoZnBUZW1wUmVnaXN0ZXIsIHNy
Yyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOwogCiAg
ICAgICAgIC8vIElmIHRoZSByZXN1bHQgaXMgemVybywgaXQgbWlnaHQgaGF2ZSBiZWVuIC0wLjAs
IGFuZCB0aGUgZG91YmxlIGNvbXBhcmlzb24gd29uJ3QgY2F0Y2ggdGhpcyEKLSAgICAgICAgZmFp
bHVyZUNhc2VzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVy
bykpOworICAgICAgICBpZiAobmVnWmVyb0NoZWNrKQorICAgICAgICAgICAgZmFpbHVyZUNhc2Vz
LmFwcGVuZChicmFuY2gzMihFcXVhbCwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybykpOwogCiAg
ICAgICAgIC8vIENvbnZlcnQgdGhlIGludGVnZXIgcmVzdWx0IGJhY2sgdG8gZmxvYXQgJiBjb21w
YXJlIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZSAtIGlmIG5vdCBlcXVhbCBvciB1bm9yZGVyZWQgKE5h
TikgdGhlbiBqdW1wLgogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShkZXN0LCBmcFRlbXAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlclNINC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clNINC5oCmluZGV4IDU2ZmI3NGQuLmZhODAyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKQEAgLTIwNzMsMjAgKzIwNzMs
MjIgQEAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7CiAgICAgfQogCi0gICAgdm9p
ZCBicmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEZQUmVnaXN0ZXJJRCBmcFRlbXApCisgICAg
dm9pZCBicmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEZQUmVnaXN0ZXJJRCBmcFRlbXAsIGJv
b2wgbmVnWmVyb0NoZWNrID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmZ0cmNk
cm1mcHVsKHNyYyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWcoZGVzdCk7CiAgICAg
ICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKGRlc3QsIGZzY3JhdGNoKTsKICAgICAgICAgZmFpbHVy
ZUNhc2VzLmFwcGVuZChicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgZnNj
cmF0Y2gsIHNyYykpOwogCi0gICAgICAgIGlmIChkZXN0ID09IFNINFJlZ2lzdGVyczo6cjApCi0g
ICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBFcUltbVIwKDAsIGRlc3QpOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdkltbTgoMCwgc2NyYXRjaFJlZzMpOwotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgZGVzdCwgU0g0Q29u
ZGl0aW9uKEVxdWFsKSk7CisgICAgICAgIGlmIChuZWdaZXJvQ2hlY2spIHsKKyAgICAgICAgICAg
IGlmIChkZXN0ID09IFNINFJlZ2lzdGVyczo6cjApCisgICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuY21wRXFJbW1SMCgwLCBkZXN0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdkltbTgoMCwgc2NyYXRjaFJlZzMpOworICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyYXRjaFJlZzMsIGRlc3QsIFNINENvbmRpdGlvbihF
cXVhbCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChi
cmFuY2hUcnVlKCkpOwogICAgICAgICB9Ci0gICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJh
bmNoVHJ1ZSgpKTsKICAgICB9CiAKICAgICB2b2lkIG5lZzMyKFJlZ2lzdGVySUQgZHN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCmluZGV4IDUzY2I4MGMyLi4xMWYzZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
CkBAIC04ODQsMTMgKzg4NCwxNCBAQCBwdWJsaWM6CiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBu
b3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBh
bHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBi
aXRzCiAgICAgLy8gKHNwZWNpZmljYWxseSwgaW4gdGhpcyBjYXNlLCAwKS4KLSAgICB2b2lkIGJy
YW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCkKKyAgICB2b2lk
IGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCwgYm9vbCBu
ZWdaZXJvQ2hlY2sgPSB0cnVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQo
KSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaV9ycihzcmMsIGRlc3QpOwogCiAgICAg
ICAgIC8vIElmIHRoZSByZXN1bHQgaXMgemVybywgaXQgbWlnaHQgaGF2ZSBiZWVuIC0wLjAsIGFu
ZCB0aGUgZG91YmxlIGNvbXBhcmlzb24gd29uJ3QgY2F0Y2ggdGhpcyEKLSAgICAgICAgZmFpbHVy
ZUNhc2VzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZGVzdCkpOworICAgICAgICBpZiAobmVn
WmVyb0NoZWNrKQorICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hUZXN0MzIo
WmVybywgZGVzdCkpOwogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGludGVnZXIgcmVzdWx0IGJh
Y2sgdG8gZmxvYXQgJiBjb21wYXJlIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZSAtIGlmIG5vdCBlcXVh
bCBvciB1bm9yZGVyZWQgKE5hTikgdGhlbiBqdW1wLgogICAgICAgICBjb252ZXJ0SW50MzJUb0Rv
dWJsZShkZXN0LCBmcFRlbXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNjYwOWMxZi4uNWUy
YjEwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQ
cm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
Y2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC02NiwxNCArNjYsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgaWYgKCFtX2dyYXBoLmlzTnVtYmVyQ29uc3RhbnQobm9kZSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZk51
bWJlckNvbnN0YW50KG5vZGUpOwotICAgICAgICByZXR1cm4gIXZhbHVlICYmIDEuMCAvIHZhbHVl
IDwgMC4wOworICAgICAgICByZXR1cm4gKHZhbHVlIHx8IDEuMCAvIHZhbHVlID4gMC4wKTsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBpc05vdFplcm8oTm9kZSogbm9kZSkKKyAgICBib29sIGlzTm90
UG9zWmVybyhOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFtX2dyYXBoLmlzTnVtYmVy
Q29uc3RhbnQobm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVy
biAhIW1fZ3JhcGgudmFsdWVPZk51bWJlckNvbnN0YW50KG5vZGUpOworICAgICAgICBkb3VibGUg
dmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZOdW1iZXJDb25zdGFudChub2RlKTsKKyAgICAgICAgcmV0
dXJuICh2YWx1ZSB8fCAxLjAgLyB2YWx1ZSA8IDAuMCk7CiAgICAgfQogCiAgICAgLy8gVGVzdHMg
aWYgdGhlIGFic29sdXRlIHZhbHVlIGlzIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgcG93ZXIgb2Yg
dHdvLgpAQCAtMjQ3LDcgKzI0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIEFyaXRoU3ViOiB7Ci0gICAgICAgICAgICBpZiAoaXNOb3RaZXJvKG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSkgfHwgaXNOb3RaZXJvKG5vZGUtPmNoaWxkMigpLm5vZGUoKSkp
CisgICAgICAgICAgICBpZiAoaXNOb3ROZWdaZXJvKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkgfHwg
aXNOb3RQb3NaZXJvKG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpCiAgICAgICAgICAgICAgICAgZmxh
Z3MgJj0gfk5vZGVOZWVkc05lZ1plcm87CiAgICAgICAgICAgICBpZiAoIWlzV2l0aGluUG93ZXJP
ZlR3bzwzMj4obm9kZS0+Y2hpbGQxKCkpICYmICFpc1dpdGhpblBvd2VyT2ZUd288MzI+KG5vZGUt
PmNoaWxkMigpKSkKICAgICAgICAgICAgICAgICBmbGFncyB8PSBOb2RlVXNlZEFzTnVtYmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAwNjBmZTNiLi44MWQwMmRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTIyLDcgKzUyMiw3IEBAIHN0cnVjdCBO
b2RlIHsKICAgICBOb2RlRmxhZ3MgYXJpdGhOb2RlRmxhZ3MoKQogICAgIHsKICAgICAgICAgTm9k
ZUZsYWdzIHJlc3VsdCA9IG1fZmxhZ3MgJiBOb2RlQXJpdGhGbGFnc01hc2s7Ci0gICAgICAgIGlm
IChvcCgpID09IEFyaXRoTXVsIHx8IG9wKCkgPT0gQXJpdGhEaXYgfHwgb3AoKSA9PSBBcml0aE1v
ZCkKKyAgICAgICAgaWYgKG9wKCkgPT0gQXJpdGhNdWwgfHwgb3AoKSA9PSBBcml0aERpdiB8fCBv
cCgpID09IEFyaXRoTW9kIHx8IG9wKCkgPT0gRG91YmxlQXNJbnQzMikKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQgJiB+Tm9kZU5lZWRzTmVnWmVybzsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCmluZGV4IGY3NzM5MDMuLmJlOGQ3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0yMzQzLDcgKzIzNDMsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlQXNJbnQzMihOb2RlKiBub2RlKQogICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
ZmFpbHVyZUNhc2VzOwotICAgIG1faml0LmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKHZhbHVl
RlBSLCByZXN1bHRHUFIsIGZhaWx1cmVDYXNlcywgc2NyYXRjaEZQUik7CisgICAgYm9vbCBuZWda
ZXJvQ2hlY2sgPSAhbm9kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFn
cygpKTsKKyAgICBtX2ppdC5icmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMih2YWx1ZUZQUiwgcmVz
dWx0R1BSLCBmYWlsdXJlQ2FzZXMsIHNjcmF0Y2hGUFIsIG5lZ1plcm9DaGVjayk7CiAgICAgZm9y
d2FyZFNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGZhaWx1cmVD
YXNlcywgVmFsdWVSZWNvdmVyeTo6aW5GUFIodmFsdWVGUFIpKTsKIAogICAgIGludGVnZXJSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsK
</data>
<flag name="review"
          id="219024"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197263</attachid>
            <date>2013-04-10 07:02:27 -0700</date>
            <delta_ts>2013-04-25 13:57:58 -0700</delta_ts>
            <desc>New patch</desc>
            <filename>to-send-neg-zero3.diff</filename>
            <type>text/plain</type>
            <size>23875</size>
            <attacher name="Roman Zhuykov">zhroma</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmZDYyM2M2Li43NTU3ZGNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDQt
MTAgIFJvbWFuIFpodXlrb3YgIDx6aHJvbWFAaXNwcmFzLnJ1PgorCisgICAgICAgIEFyaXRobWV0
aWMgb3BlcmF0aW9ucyB3aXRoIG5lZ2F0aXZlIHplcm8gc2hvdWxkIGJlIG9wdGltaXplZCBjb3Jy
ZWNsdHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTM4NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgKiBm
YXN0L2pzL3JlZ3Jlc3MvbmVnYXRpdmUtemVyby1kaXZpZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3MvbmVnYXRpdmUtemVyby1kaXZpZGUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL25lZ2F0aXZlLXplcm8tbW9kdWxvLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL25lZ2F0aXZlLXplcm8t
bW9kdWxvLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9uZWdhdGl2ZS16
ZXJvLW5lZ2F0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVz
cy9uZWdhdGl2ZS16ZXJvLW5lZ2F0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL25lZ2F0aXZlLXplcm8tZGl2aWRlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGZvbyk6CisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9uZWdhdGl2
ZS16ZXJvLW1vZHVsby5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIGZhc3Qv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbmVnYXRpdmUtemVyby1uZWdhdGUuanM6IEFkZGVkLgor
ICAgICAgICAoZm9vKToKKwogMjAxMy0wNC0wOSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBVcGRhdGUgRG9jdW1lbnQncyBldmVudCBsaXN0ZW5lciB0eXBlIGJp
dGZpZWxkIHdoZW4gYWRvcHRpbmcgYSBOb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2pzL3JlZ3Jlc3MvbmVnYXRpdmUtemVyby1kaXZpZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZWdyZXNzL25lZ2F0aXZlLXplcm8tZGl2aWRlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTg1N2UzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL25lZ2F0aXZlLXplcm8tZGl2aWRlLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvbmVnYXRpdmUtemVyby1kaXZpZGUK
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93
bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9uZWdhdGl2ZS16ZXJvLWRpdmlk
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL25lZ2F0aXZlLXplcm8tZGl2aWRl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk0ZmJlOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9uZWdhdGl2ZS16ZXJvLWRp
dmlkZS5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL25lZ2F0aXZlLXplcm8tZGl2aWRlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9uZWdhdGl2ZS16ZXJvLW1vZHVs
by1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvbmVnYXRpdmUtemVy
by1tb2R1bG8tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmU4Yjc0NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mv
bmVnYXRpdmUtemVyby1tb2R1bG8tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVn
cmVzcy9uZWdhdGl2ZS16ZXJvLW1vZHVsbworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZWdyZXNzL25lZ2F0aXZlLXplcm8tbW9kdWxvLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jl
Z3Jlc3MvbmVnYXRpdmUtemVyby1tb2R1bG8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45MjA0NGU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZWdyZXNzL25lZ2F0aXZlLXplcm8tbW9kdWxvLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvbmVnYXRpdmUtemVyby1tb2R1bG8u
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZWdyZXNzL25lZ2F0aXZlLXplcm8tbmVnYXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvanMvcmVncmVzcy9uZWdhdGl2ZS16ZXJvLW5lZ2F0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRmNWI4YwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9uZWdhdGl2ZS16ZXJvLW5lZ2F0ZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL25lZ2F0aXZlLXplcm8tbmVnYXRlCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvbmVnYXRpdmUtemVyby1uZWdhdGUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9uZWdhdGl2ZS16ZXJvLW5lZ2F0ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOTI3OWMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvbmVnYXRpdmUtemVyby1uZWdhdGUu
aHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9uZWdhdGl2ZS16ZXJvLW5lZ2F0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL25lZ2F0aXZlLXpl
cm8tZGl2aWRlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9u
ZWdhdGl2ZS16ZXJvLWRpdmlkZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4wNDY2MmIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9uZWdhdGl2ZS16ZXJvLWRpdmlkZS5qcwpAQCAtMCwwICsxLDE5IEBACitm
dW5jdGlvbiBmb28oKSB7CisgIHZhciB4ID0gMTsKKyAgdmFyIHkgPSAtMTsKKyAgdmFyIHM7Cisg
IHZhciBpOworICBmb3IgKGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKKyAgICBpZiAoaSA9PSA5
OTk5OSkKKyAgICAgIHggPSAwOworICAgIHMgPSAxLyh4L3krKC0wKSk7CisgIH0KKyAgcmV0dXJu
IHM7Cit9CisKK3ZhciB4ID0gKDEvKDAvLTErKC0wKSkpLnRvU3RyaW5nKCk7Cit2YXIgeSA9IGZv
bygpLnRvU3RyaW5nKCk7CisKK2lmICh4ICE9IHkpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVz
dWx0OiAiICsgeTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9uZWdhdGl2ZS16ZXJvLW1vZHVsby5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvbmVnYXRpdmUtemVyby1tb2R1bG8uanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdkNTI0YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbmVnYXRpdmUtemVyby1tb2R1bG8u
anMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gZm9vKCkgeworICB2YXIgeCA9IDQ7CisgIHZh
ciBzOworICB2YXIgaTsKKyAgZm9yIChpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgaWYg
KGkgPT0gOTk5OTkpCisgICAgICB4ID0gLTQ7CisgICAgcyA9IDEvKHglNCk7CisgIH0KKyAgcmV0
dXJuIHM7Cit9CisKK3ZhciB4ID0gKDEvKCgtNCklNCkpLnRvU3RyaW5nKCk7Cit2YXIgeSA9IGZv
bygpLnRvU3RyaW5nKCk7CisKK2lmICh4ICE9IHkpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVz
dWx0OiAiICsgeTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9uZWdhdGl2ZS16ZXJvLW5lZ2F0ZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvbmVnYXRpdmUtemVyby1uZWdhdGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEyZjI1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbmVnYXRpdmUtemVyby1uZWdhdGUu
anMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gZm9vKCkgeworICB2YXIgeCA9IDE7CisgIHZh
ciBzOworICB2YXIgaTsKKyAgZm9yIChpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgaWYg
KGkgPT0gOTk5OTkpCisgICAgICB4ID0gMDsKKyAgICBzID0gMS8oLXgpOworICB9CisgIHJldHVy
biBzOworfQorCit2YXIgeCA9ICgxLygtMCkpLnRvU3RyaW5nKCk7Cit2YXIgeSA9IGZvbygpLnRv
U3RyaW5nKCk7CisKK2lmICh4ICE9IHkpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAi
ICsgeTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNDUxN2RlMi4uODQwZDc3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTMtMDQtMTAgIFJvbWFu
IFpodXlrb3YgIDx6aHJvbWFAaXNwcmFzLnJ1PgorCisgICAgICAgIEZpeCBwcm9ibGVtcyB3aXRo
IHByb2Nlc3NpbmcgbmVnYXRpdmUgemVybyBvbiBERkcuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM4NjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggTm9kZU5lZWRzTmVnWmVybyBmbGFnIHByb3Bh
Z2F0aW9uIGluIEJhY2t3YXJkUHJvcGFnYXRpb25QaGFzZS4KKyAgICAgICAgRnVuY3Rpb24gYXJp
dGhOb2RlRmxhZ3Mgc2hvdWxkIG5vdCBtYXNrIE5vZGVOZWVkc05lZ1plcm8gZmxhZyBmb3IgQXJp
dGhOZWdhdGUgYW5kIERvdWJsZUFzSW50MzIKKyAgICAgICAgbm9kZXMgYW5kIHRoaXMgZmxhZyBz
aG91bGQgYmUgYWx3YXlzIHVzZWQgdG8gZGVjaWRlIHdoZXJlIHdlIG5lZWQgdG8gZ2VuZXJhdGUg
bmV6YXRpdmUtemVybyBjaGVja3MuCisgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBuZWdhdGl2
ZS16ZXJvIGNoZWNrcyBmcm9tIGludGVnZXIgQXJpdGhEaXYgb24gQVJNLgorICAgICAgICBBbHNv
IHJlbW92ZSBzdWNoIGNoZWNrcyBmcm9tIGludGVnZXIgQXJpdGhNb2Qgb24gQVJNIGFuZCBYODYs
IGFuZCBtYWtlIHRoZW0gYWx3YXlzIHRvCisgICAgICAgIGNoZWNrIG5vdCBvbmx5ICJtb2R1bG9f
cmVzdWx0ID09IDAiIGJ1dCBhbHNvICJkaXZpZGVuZCA8IDAiLgorICAgICAgICBHZW5lcmF0ZSBm
YXN0ZXIgY29kZSBmb3IgY2FzZSB3aGVuIEFyaXRoTW9kIG9wZXJhdGlvbiBkaXZpc29yIGlzIGNv
bnN0YW50IHBvd2VyIG9mIDIgb24gQVJNdjcKKyAgICAgICAgaW4gdGhlIHNhbWUgd2F5IGFzIG9u
IEFSTXY3cywgYW5kIGFkZCBuZWdhdGl2ZS16ZXJvIGNoZWNrcyBpbnRvIHRoaXMgY29kZSB3aGVu
IG5lZWRlZC4KKyAgICAgICAgQ2hhbmdlIHNwZWN1bGF0aW9uQ2hlY2sgRXhpdEtpbmQgZnJvbSBP
dmVyZmxvdyB0byBOZWdhdGl2ZVplcm8gd2hlcmUgYXBwbGljYWJsZS4KKyAKKyAgICAgICAgVGhp
cyBzaG93cyAzMCUgc3BlZWR1cCBvZiBtYXRoLXNwZWN0cmFsLW5vcm0sIGFuZCA1JSBzcGVlZHVw
CisgICAgICAgIG9uIFN1blNwaWRlciBvdmVyYWxsIG9uIEFSTXY3IExpbnV4LgorCisgICAgICAg
ICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNOjpicmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMik6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk12Nzo6YnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpi
cmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyU0g0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpicmFuY2hDb252
ZXJ0RG91YmxlVG9JbnQzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hD
b252ZXJ0RG91YmxlVG9JbnQzMik6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhh
c2U6OmlzTm90TmVnWmVybyk6CisgICAgICAgIChKU0M6OkRGRzo6QmFja3dhcmRzUHJvcGFnYXRp
b25QaGFzZTo6aXNOb3RQb3NaZXJvKToKKyAgICAgICAgKEpTQzo6REZHOjpCYWNrd2FyZHNQcm9w
YWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6YXJpdGhOb2RlRmxhZ3MpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEb3VibGVBc0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVNvZnRNb2R1bG8pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlQXJpdGhOZWdhdGUpOgorCiAyMDEzLTA0LTA5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIGxpdmVuZXNzIHRlc3RzIHRvIEpTQyBBUEkgZW50cnkg
cG9pbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNLmgKaW5kZXggZDRiMDM3MS4uMGRmNDkwZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApAQCAtMTI0Nyw3ICsx
MjQ3LDcgQEAgcHVibGljOgogICAgIC8vIElmIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFi
bGUgYXMgYSAzMiBiaXQgdmFsdWUsIGJyYW5jaC4KICAgICAvLyBNYXkgYWxzbyBicmFuY2ggZm9y
IHNvbWUgdmFsdWVzIHRoYXQgYXJlIHJlcHJlc2VudGFibGUgaW4gMzIgYml0cwogICAgIC8vIChz
cGVjaWZpY2FsbHksIGluIHRoaXMgY2FzZSwgMCkuCi0gICAgdm9pZCBicmFuY2hDb252ZXJ0RG91
YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEp1bXBMaXN0JiBm
YWlsdXJlQ2FzZXMsIEZQUmVnaXN0ZXJJRCkKKyAgICB2b2lkIGJyYW5jaENvbnZlcnREb3VibGVU
b0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1
cmVDYXNlcywgRlBSZWdpc3RlcklELCBib29sIG5lZ1plcm9DaGVjayA9IHRydWUpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3MzMl9mNjQoQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSwg
c3JjKTsKICAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMihkZXN0LCBBUk1SZWdpc3RlcnM6
OlNEMCA8PCAxKTsKQEAgLTEyNTcsNyArMTI1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgZmFpbHVy
ZUNhc2VzLmFwcGVuZChicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgc3Jj
LCBBUk1SZWdpc3RlcnM6OlNEMCkpOwogCiAgICAgICAgIC8vIElmIHRoZSByZXN1bHQgaXMgemVy
bywgaXQgbWlnaHQgaGF2ZSBiZWVuIC0wLjAsIGFuZCAwLjAgZXF1YWxzIHRvIC0wLjAKLSAgICAg
ICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZGVzdCkpOworICAgICAg
ICBpZiAobmVnWmVyb0NoZWNrKQorICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFu
Y2hUZXN0MzIoWmVybywgZGVzdCkpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoRG91YmxlTm9u
WmVybyhGUFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQgc2NyYXRjaCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5k
ZXggODFjMWQ3ZS4uZWJiMjM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTExMDMsNyArMTEwMyw3IEBAIHB1
YmxpYzoKICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgMzIg
Yml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8gTWF5IGFsc28gYnJhbmNoIGZvciBzb21lIHZhbHVl
cyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJpdHMKICAgICAvLyAoc3BlY2lmaWNhbGx5
LCBpbiB0aGlzIGNhc2UsIDApLgotICAgIHZvaWQgYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIo
RlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYgZmFpbHVyZUNhc2Vz
LCBGUFJlZ2lzdGVySUQpCisgICAgdm9pZCBicmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMihGUFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEZQ
UmVnaXN0ZXJJRCwgYm9vbCBuZWdaZXJvQ2hlY2sgPSB0cnVlKQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIudmN2dF9mbG9hdGluZ1BvaW50VG9TaWduZWQoZnBUZW1wUmVnaXN0ZXJBc1Npbmds
ZSgpLCBzcmMpOwogICAgICAgICBtX2Fzc2VtYmxlci52bW92KGRlc3QsIGZwVGVtcFJlZ2lzdGVy
QXNTaW5nbGUoKSk7CkBAIC0xMTEzLDcgKzExMTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQoYnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHNy
YywgZnBUZW1wUmVnaXN0ZXIpKTsKIAogICAgICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIHplcm8s
IGl0IG1pZ2h0IGhhdmUgYmVlbiAtMC4wLCBhbmQgdGhlIGRvdWJsZSBjb21wYXJpc29uIHdvbid0
IGNhdGNoIHRoaXMhCi0gICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFpl
cm8sIGRlc3QpKTsKKyAgICAgICAgaWYgKG5lZ1plcm9DaGVjaykKKyAgICAgICAgICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIGRlc3QpKTsKICAgICB9CiAKICAgICBK
dW1wIGJyYW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgKaW5kZXggZTE4ZDg2Yy4uMDMxZjdkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0yNjIyLDEzICsyNjIy
LDE0IEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRhYmxl
IGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8gTWF5IGFsc28gYnJhbmNoIGZvciBz
b21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJpdHMKICAgICAvLyAoc3Bl
Y2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIDApLgotICAgIHZvaWQgYnJhbmNoQ29udmVydERvdWJs
ZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYgZmFp
bHVyZUNhc2VzLCBGUFJlZ2lzdGVySUQgZnBUZW1wKQorICAgIHZvaWQgYnJhbmNoQ29udmVydERv
dWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYg
ZmFpbHVyZUNhc2VzLCBGUFJlZ2lzdGVySUQgZnBUZW1wLCBib29sIG5lZ1plcm9DaGVjayA9IHRy
dWUpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5jdnR3ZChmcFRlbXBSZWdpc3Rlciwgc3Jj
KTsKICAgICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7CiAKICAg
ICAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyB6ZXJvLCBpdCBtaWdodCBoYXZlIGJlZW4gLTAuMCwg
YW5kIHRoZSBkb3VibGUgY29tcGFyaXNvbiB3b24ndCBjYXRjaCB0aGlzIQotICAgICAgICBmYWls
dXJlQ2FzZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJv
KSk7CisgICAgICAgIGlmIChuZWdaZXJvQ2hlY2spCisgICAgICAgICAgICBmYWlsdXJlQ2FzZXMu
YXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKSk7CiAKICAg
ICAgICAgLy8gQ29udmVydCB0aGUgaW50ZWdlciByZXN1bHQgYmFjayB0byBmbG9hdCAmIGNvbXBh
cmUgdG8gdGhlIG9yaWdpbmFsIHZhbHVlIC0gaWYgbm90IGVxdWFsIG9yIHVub3JkZXJlZCAoTmFO
KSB0aGVuIGp1bXAuCiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKGRlc3QsIGZwVGVtcCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyU0g0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
U0g0LmgKaW5kZXggNTZmYjc0ZC4uZmE4MDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaApAQCAtMjA3MywyMCArMjA3Mywy
MiBAQCB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUoKTsKICAgICB9CiAKLSAgICB2b2lk
IGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCkKKyAgICB2
b2lkIGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCwgYm9v
bCBuZWdaZXJvQ2hlY2sgPSB0cnVlKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuZnRyY2Ry
bWZwdWwoc3JjKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RzZnB1bFJlZyhkZXN0KTsKICAgICAg
ICAgY29udmVydEludDMyVG9Eb3VibGUoZGVzdCwgZnNjcmF0Y2gpOwogICAgICAgICBmYWlsdXJl
Q2FzZXMuYXBwZW5kKGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBmc2Ny
YXRjaCwgc3JjKSk7CiAKLSAgICAgICAgaWYgKGRlc3QgPT0gU0g0UmVnaXN0ZXJzOjpyMCkKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcEVxSW1tUjAoMCwgZGVzdCk7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92SW1tOCgwLCBzY3JhdGNoUmVnMyk7Ci0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjcmF0Y2hSZWczLCBkZXN0LCBTSDRDb25k
aXRpb24oRXF1YWwpKTsKKyAgICAgICAgaWYgKG5lZ1plcm9DaGVjaykgeworICAgICAgICAgICAg
aWYgKGRlc3QgPT0gU0g0UmVnaXN0ZXJzOjpyMCkKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5jbXBFcUltbVIwKDAsIGRlc3QpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubW92SW1tOCgwLCBzY3JhdGNoUmVnMyk7CisgICAgICAgICAgICAgICAg
bV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgZGVzdCwgU0g0Q29uZGl0aW9uKEVx
dWFsKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJy
YW5jaFRydWUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFu
Y2hUcnVlKCkpOwogICAgIH0KIAogICAgIHZvaWQgbmVnMzIoUmVnaXN0ZXJJRCBkc3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmgKaW5kZXggNTNjYjgwYzIuLjExZjNmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
QEAgLTg4NCwxMyArODg0LDE0IEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5v
dCByZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8gTWF5IGFs
c28gYnJhbmNoIGZvciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJp
dHMKICAgICAvLyAoc3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIDApLgotICAgIHZvaWQgYnJh
bmNoQ29udmVydERvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
LCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBGUFJlZ2lzdGVySUQgZnBUZW1wKQorICAgIHZvaWQg
YnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0LCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBGUFJlZ2lzdGVySUQgZnBUZW1wLCBib29sIG5l
Z1plcm9DaGVjayA9IHRydWUpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgp
KTsKICAgICAgICAgbV9hc3NlbWJsZXIuY3Z0dHNkMnNpX3JyKHNyYywgZGVzdCk7CiAKICAgICAg
ICAgLy8gSWYgdGhlIHJlc3VsdCBpcyB6ZXJvLCBpdCBtaWdodCBoYXZlIGJlZW4gLTAuMCwgYW5k
IHRoZSBkb3VibGUgY29tcGFyaXNvbiB3b24ndCBjYXRjaCB0aGlzIQotICAgICAgICBmYWlsdXJl
Q2FzZXMuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBkZXN0KSk7CisgICAgICAgIGlmIChuZWda
ZXJvQ2hlY2spCisgICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFRlc3QzMiha
ZXJvLCBkZXN0KSk7CiAKICAgICAgICAgLy8gQ29udmVydCB0aGUgaW50ZWdlciByZXN1bHQgYmFj
ayB0byBmbG9hdCAmIGNvbXBhcmUgdG8gdGhlIG9yaWdpbmFsIHZhbHVlIC0gaWYgbm90IGVxdWFs
IG9yIHVub3JkZXJlZCAoTmFOKSB0aGVuIGp1bXAuCiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91
YmxlKGRlc3QsIGZwVGVtcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA2NjA5YzFmLi41ZTJi
MTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1By
b3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFj
a3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTY2LDE0ICs2NiwxNSBAQCBwcml2YXRlOgog
ICAgICAgICBpZiAoIW1fZ3JhcGguaXNOdW1iZXJDb25zdGFudChub2RlKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgZG91YmxlIHZhbHVlID0gbV9ncmFwaC52YWx1ZU9mTnVt
YmVyQ29uc3RhbnQobm9kZSk7Ci0gICAgICAgIHJldHVybiAhdmFsdWUgJiYgMS4wIC8gdmFsdWUg
PCAwLjA7CisgICAgICAgIHJldHVybiAodmFsdWUgfHwgMS4wIC8gdmFsdWUgPiAwLjApOwogICAg
IH0KICAgICAKLSAgICBib29sIGlzTm90WmVybyhOb2RlKiBub2RlKQorICAgIGJvb2wgaXNOb3RQ
b3NaZXJvKE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBpZiAoIW1fZ3JhcGguaXNOdW1iZXJD
b25zdGFudChub2RlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJu
ICEhbV9ncmFwaC52YWx1ZU9mTnVtYmVyQ29uc3RhbnQobm9kZSk7CisgICAgICAgIGRvdWJsZSB2
YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZk51bWJlckNvbnN0YW50KG5vZGUpOworICAgICAgICByZXR1
cm4gKHZhbHVlIHx8IDEuMCAvIHZhbHVlIDwgMC4wKTsKICAgICB9CiAKICAgICAvLyBUZXN0cyBp
ZiB0aGUgYWJzb2x1dGUgdmFsdWUgaXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBwb3dlciBvZiB0
d28uCkBAIC0yNDcsNyArMjQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgQXJpdGhTdWI6IHsKLSAgICAgICAgICAgIGlmIChpc05vdFplcm8obm9k
ZS0+Y2hpbGQxKCkubm9kZSgpKSB8fCBpc05vdFplcm8obm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkK
KyAgICAgICAgICAgIGlmIChpc05vdE5lZ1plcm8obm9kZS0+Y2hpbGQxKCkubm9kZSgpKSB8fCBp
c05vdFBvc1plcm8obm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkKICAgICAgICAgICAgICAgICBmbGFn
cyAmPSB+Tm9kZU5lZWRzTmVnWmVybzsKICAgICAgICAgICAgIGlmICghaXNXaXRoaW5Qb3dlck9m
VHdvPDMyPihub2RlLT5jaGlsZDEoKSkgJiYgIWlzV2l0aGluUG93ZXJPZlR3bzwzMj4obm9kZS0+
Y2hpbGQyKCkpKQogICAgICAgICAgICAgICAgIGZsYWdzIHw9IE5vZGVVc2VkQXNOdW1iZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDA2MGZlM2IuLmQzYTk1Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01MjIsNyArNTIyLDcgQEAgc3RydWN0IE5v
ZGUgewogICAgIE5vZGVGbGFncyBhcml0aE5vZGVGbGFncygpCiAgICAgewogICAgICAgICBOb2Rl
RmxhZ3MgcmVzdWx0ID0gbV9mbGFncyAmIE5vZGVBcml0aEZsYWdzTWFzazsKLSAgICAgICAgaWYg
KG9wKCkgPT0gQXJpdGhNdWwgfHwgb3AoKSA9PSBBcml0aERpdiB8fCBvcCgpID09IEFyaXRoTW9k
KQorICAgICAgICBpZiAob3AoKSA9PSBBcml0aE11bCB8fCBvcCgpID09IEFyaXRoRGl2IHx8IG9w
KCkgPT0gQXJpdGhNb2QgfHwgb3AoKSA9PSBBcml0aE5lZ2F0ZSB8fCBvcCgpID09IERvdWJsZUFz
SW50MzIpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICByZXR1cm4gcmVzdWx0
ICYgfk5vZGVOZWVkc05lZ1plcm87CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBkZTI1M2IwLi44ZTE1ZjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMjM2
Miw3ICsyMzYyLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUFzSW50MzIo
Tm9kZSogbm9kZSkKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCiAgICAg
SklUQ29tcGlsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKLSAgICBtX2ppdC5icmFuY2hDb252
ZXJ0RG91YmxlVG9JbnQzMih2YWx1ZUZQUiwgcmVzdWx0R1BSLCBmYWlsdXJlQ2FzZXMsIHNjcmF0
Y2hGUFIpOworICAgIGJvb2wgbmVnWmVyb0NoZWNrID0gIW5vZGVDYW5JZ25vcmVOZWdhdGl2ZVpl
cm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSk7CisgICAgbV9qaXQuYnJhbmNoQ29udmVydERvdWJs
ZVRvSW50MzIodmFsdWVGUFIsIHJlc3VsdEdQUiwgZmFpbHVyZUNhc2VzLCBzY3JhdGNoRlBSLCBu
ZWdaZXJvQ2hlY2spOwogICAgIGZvcndhcmRTcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1Zh
bHVlUmVncygpLCAwLCBmYWlsdXJlQ2FzZXMsIFZhbHVlUmVjb3Zlcnk6OmluRlBSKHZhbHVlRlBS
KSk7CiAKICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0yODc1LDEyICsy
ODc2LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTb2Z0TW9kdWxvKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJl
Z3MoKSwgMCwgbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBlYXguZ3ByKCksIFRy
dXN0ZWRJbW0zMigtMjE0NzQ4MzY0Ny0xKSkpOwogICAgICAgICAgICAgbV9qaXQuYXNzZW1ibGVy
KCkuY2RxKCk7CiAgICAgICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS5pZGl2bF9yKHNjcmF0Y2hH
UFIpOwotICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSdyZSBub3QgYWJvdXQgdG8gY3JlYXRl
IG5lZ2F0aXZlIHplcm8uCi0gICAgICAgICAgICAvLyBGSVhNRTogaWYgdGhlIG5vZGUgdXNlIGRv
ZXNuJ3QgY2FyZSBhYm91dCBuZWcgemVybywgd2UgY2FuIGRvIHRoaXMgbW9yZSBlYXNpbHkuCi0g
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBudW1lcmF0b3JQb3NpdGl2ZSA9IG1faml0LmJy
YW5jaDMyKEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIG9wMVNhdmVHUFIsIFRydXN0
ZWRJbW0zMigwKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1Zh
bHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIGVkeC5n
cHIoKSkpOwotICAgICAgICAgICAgbnVtZXJhdG9yUG9zaXRpdmUubGluaygmbV9qaXQpOwotICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW5vZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9k
ZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHdl
J3JlIG5vdCBhYm91dCB0byBjcmVhdGUgbmVnYXRpdmUgemVyby4KKyAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBudW1lcmF0b3JQb3NpdGl2ZSA9IG1faml0LmJyYW5jaDMyKEpJVENv
bXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIG9wMVNhdmVHUFIsIFRydXN0ZWRJbW0zMigwKSk7
CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhOZWdhdGl2ZVplcm8sIEpTVmFsdWVS
ZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6WmVybywgZWR4Lmdwcigp
KSk7CisgICAgICAgICAgICAgICAgbnVtZXJhdG9yUG9zaXRpdmUubGluaygmbV9qaXQpOworICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9wMVNhdmVHUFIgIT0gb3AxR3ByKQogICAgICAg
ICAgICAgICAgIHVubG9jayhvcDFTYXZlR1BSKTsKIApAQCAtMjg4OCw3ICsyODg5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNvZnRNb2R1bG8oTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSNlbGlmIENQVShBUFBMRV9BUk1WN1MpCisj
ZWxpZiBDUFUoQVBQTEVfQVJNVjdTKSB8fCBDUFUoQVJNX1RIVU1CMikKICAgICBpZiAoaXNJbnQz
MkNvbnN0YW50KG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKICAgICAgICAgaW50MzJfdCBkaXZp
c29yID0gdmFsdWVPZkludDMyQ29uc3RhbnQobm9kZS0+Y2hpbGQyKCkubm9kZSgpKTsKICAgICAg
ICAgaWYgKGRpdmlzb3IgPiAwICYmIGhhc09uZUJpdFNldChkaXZpc29yKSkgeyAvLyBJZiBwb3dl
ciBvZiAyIHRoZW4ganVzdCBtYXNrCkBAIC0yOTA0LDYgKzI5MDUsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVNvZnRNb2R1bG8oTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0
LmFzc2VtYmxlcigpLml0KEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb25MVCk7CiAgICAgICAgICAg
ICBtX2ppdC5hc3NlbWJsZXIoKS5uZWcocmVzdWx0R1BSLCByZXN1bHRHUFIpOwogCisgICAgICAg
ICAgICBpZiAoIW5vZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3Mo
KSkpIHsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHdlJ3JlIG5vdCBhYm91dCB0byBj
cmVhdGUgbmVnYXRpdmUgemVyby4KKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBu
dW1lcmF0b3JQb3NpdGl2ZSA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpHcmVhdGVyVGhh
bk9yRXF1YWwsIGRpdmlkZW5kR1BSLCBUcnVzdGVkSW1tMzIoMCkpOworICAgICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5i
cmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIHJlc3VsdEdQUikpOworICAgICAgICAgICAg
ICAgIG51bWVyYXRvclBvc2l0aXZlLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMjk2NywxMSArMjk3NCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU29mdE1vZHVsbyhOb2RlKiBub2RlKQogICAgIGlmIChvcDJUZW1wR1BSICE9IElu
dmFsaWRHUFJSZWcpCiAgICAgICAgIHVubG9jayhvcDJUZW1wR1BSKTsKIAotICAgIC8vIENoZWNr
IHRoYXQgd2UncmUgbm90IGFib3V0IHRvIGNyZWF0ZSBuZWdhdGl2ZSB6ZXJvLgotICAgIC8vIEZJ
WE1FOiBpZiB0aGUgbm9kZSB1c2UgZG9lc24ndCBjYXJlIGFib3V0IG5lZyB6ZXJvLCB3ZSBjYW4g
ZG8gdGhpcyBtb3JlIGVhc2lseS4KLSAgICBKSVRDb21waWxlcjo6SnVtcCBudW1lcmF0b3JQb3Np
dGl2ZSA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIG9w
MVNhdmVHUFIsIFRydXN0ZWRJbW0zMigwKSk7Ci0gICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxv
dywgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpaZXJv
LCBlZHguZ3ByKCkpKTsKLSAgICBudW1lcmF0b3JQb3NpdGl2ZS5saW5rKCZtX2ppdCk7CisgICAg
aWYgKCFub2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7
CisgICAgICAgIC8vIENoZWNrIHRoYXQgd2UncmUgbm90IGFib3V0IHRvIGNyZWF0ZSBuZWdhdGl2
ZSB6ZXJvLgorICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBudW1lcmF0b3JQb3NpdGl2ZSA9IG1f
aml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIG9wMVNhdmVHUFIs
IFRydXN0ZWRJbW0zMigwKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJv
LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8s
IGVkeC5ncHIoKSkpOworICAgICAgICBudW1lcmF0b3JQb3NpdGl2ZS5saW5rKCZtX2ppdCk7Cisg
ICAgfQogICAgIAogICAgIGlmIChvcDFTYXZlR1BSICE9IG9wMUdQUikKICAgICAgICAgdW5sb2Nr
KG9wMVNhdmVHUFIpOwpAQCAtMjk5Niw3ICszMDA0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVNvZnRNb2R1bG8oTm9kZSogbm9kZSkKICAgICBpZiAoIW5vZGVDYW5JZ25vcmVOZWdh
dGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKICAgICAgICAgLy8gQ2hlY2sgdGhh
dCB3ZSdyZSBub3QgYWJvdXQgdG8gY3JlYXRlIG5lZ2F0aXZlIHplcm8uCiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIG51bWVyYXRvclBvc2l0aXZlID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGls
ZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgZGl2aWRlbmRHUFIsIFRydXN0ZWRJbW0zMigwKSk7Ci0g
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIG1faml0
LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6WmVybywgcXVvdGllbnRUaGVuUmVtYWluZGVyR1BS
KSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygp
LCAwLCBtX2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIHF1b3RpZW50VGhlblJl
bWFpbmRlckdQUikpOwogICAgICAgICBudW1lcmF0b3JQb3NpdGl2ZS5saW5rKCZtX2ppdCk7CiAg
ICAgfQogCkBAIC0zMDE1LDggKzMwMjMsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVNvZnRNb2R1bG8oTm9kZSogbm9kZSkKICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsK
ICAgICBHUFJUZW1wb3JhcnkgaW50UmVzdWx0KHRoaXMpOwogICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBmYWlsdXJlQ2FzZXM7Ci0gICAgbV9qaXQuYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIo
cmVzdWx0LmZwcigpLCBpbnRSZXN1bHQuZ3ByKCksIGZhaWx1cmVDYXNlcywgc2NyYXRjaC5mcHIo
KSk7CisgICAgbV9qaXQuYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIocmVzdWx0LmZwcigpLCBp
bnRSZXN1bHQuZ3ByKCksIGZhaWx1cmVDYXNlcywgc2NyYXRjaC5mcHIoKSwgZmFsc2UpOwogICAg
IHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGZhaWx1cmVDYXNl
cyk7CisgICAgaWYgKCFub2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZs
YWdzKCkpKSB7CisgICAgICAgIC8vIENoZWNrIHRoYXQgd2UncmUgbm90IGFib3V0IHRvIGNyZWF0
ZSBuZWdhdGl2ZSB6ZXJvLgorICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBudW1lcmF0b3JQb3Np
dGl2ZSA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIG9w
MUdQUiwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhOZWdhdGl2
ZVplcm8sIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6
WmVybywgaW50UmVzdWx0LmdwcigpKSk7CisgICAgICAgIG51bWVyYXRvclBvc2l0aXZlLmxpbmso
Jm1faml0KTsKKyAgICB9CiAgICAgCiAgICAgaW50ZWdlclJlc3VsdChpbnRSZXN1bHQuZ3ByKCks
IG5vZGUpOwogI2VuZGlmIC8vIENQVShYODYpIHx8IENQVShYODZfNjQpCkBAIC0zMjYzLDcgKzMy
NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhOZWdhdGUoTm9kZSogbm9k
ZSkKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93
LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hOZWczMihNYWNyb0Fzc2VtYmxlcjo6T3Zl
cmZsb3csIHJlc3VsdC5ncHIoKSkpOwogICAgICAgICAgICAgaWYgKCFub2RlQ2FuSWdub3JlTmVn
YXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQotICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3Qz
MihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0LmdwcigpKSk7CisgICAgICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJy
YW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0LmdwcigpKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7Cg==
</data>
<flag name="review"
          id="219345"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="219346"
          type_id="3"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199746</attachid>
            <date>2013-04-25 13:57:58 -0700</date>
            <delta_ts>2013-04-25 15:51:32 -0700</delta_ts>
            <desc>patch with smaller layout tests</desc>
            <filename>to-send-neg-zero4.diff</filename>
            <type>text/plain</type>
            <size>23789</size>
            <attacher name="Roman Zhuykov">zhroma</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjYTVlNTIxLi5mZDM0YjE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDQt
MjUgIFJvbWFuIFpodXlrb3YgIDx6aHJvbWFAaXNwcmFzLnJ1PgorCisgICAgICAgIEFyaXRobWV0
aWMgb3BlcmF0aW9ucyB3aXRoIG5lZ2F0aXZlIHplcm8gc2hvdWxkIGJlIG9wdGltaXplZCBjb3Jy
ZWNsdHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTM4NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgKiBm
YXN0L2pzL3JlZ3Jlc3MvbmVnYXRpdmUtemVyby1kaXZpZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3MvbmVnYXRpdmUtemVyby1kaXZpZGUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL25lZ2F0aXZlLXplcm8tbW9kdWxvLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL25lZ2F0aXZlLXplcm8t
bW9kdWxvLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9uZWdhdGl2ZS16
ZXJvLW5lZ2F0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVz
cy9uZWdhdGl2ZS16ZXJvLW5lZ2F0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL25lZ2F0aXZlLXplcm8tZGl2aWRlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGZvbyk6CisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9uZWdhdGl2
ZS16ZXJvLW1vZHVsby5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIGZhc3Qv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbmVnYXRpdmUtemVyby1uZWdhdGUuanM6IEFkZGVkLgor
ICAgICAgICAoZm9vKToKKwogMjAxMy0wNC0yNCAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgb3B0aW1pemUtYmFzZWxpbmVzIGZvciBtYWMg
YW5kIHdpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9uZWdhdGl2
ZS16ZXJvLWRpdmlkZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mv
bmVnYXRpdmUtemVyby1kaXZpZGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjM5ODU3ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2pzL3JlZ3Jlc3MvbmVnYXRpdmUtemVyby1kaXZpZGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK0pTUmVncmVzcy9uZWdhdGl2ZS16ZXJvLWRpdmlkZQorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZWdyZXNzL25lZ2F0aXZlLXplcm8tZGl2aWRlLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2pzL3JlZ3Jlc3MvbmVnYXRpdmUtemVyby1kaXZpZGUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTRmYmU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9qcy9yZWdyZXNzL25lZ2F0aXZlLXplcm8tZGl2aWRlLmh0bWwKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jl
c3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvbmVnYXRpdmUt
emVyby1kaXZpZGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNz
LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZWdyZXNzL25lZ2F0aXZlLXplcm8tbW9kdWxvLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9uZWdhdGl2ZS16ZXJvLW1vZHVsby1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiNzQ1MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9uZWdhdGl2ZS16ZXJvLW1vZHVs
by1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL25lZ2F0aXZlLXplcm8t
bW9kdWxvCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlv
biB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvbmVnYXRpdmUtemVy
by1tb2R1bG8uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9uZWdhdGl2ZS16ZXJv
LW1vZHVsby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyMDQ0ZTgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvbmVnYXRpdmUt
emVyby1tb2R1bG8uaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9uZWdhdGl2ZS16ZXJvLW1vZHVsby5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvbmVnYXRpdmUtemVy
by1uZWdhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL25lZ2F0
aXZlLXplcm8tbmVnYXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4wNGY1YjhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZWdyZXNzL25lZ2F0aXZlLXplcm8tbmVnYXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBA
CitKU1JlZ3Jlc3MvbmVnYXRpdmUtemVyby1uZWdhdGUKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvanMvcmVncmVzcy9uZWdhdGl2ZS16ZXJvLW5lZ2F0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZWdyZXNzL25lZ2F0aXZlLXplcm8tbmVnYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOGQ5Mjc5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvanMvcmVncmVzcy9uZWdhdGl2ZS16ZXJvLW5lZ2F0ZS5odG1sCkBAIC0wLDAgKzEsMTIg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL25lZ2F0aXZlLXplcm8t
bmVnYXRlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbmVnYXRpdmUtemVyby1kaXZpZGUuanMgYi9MYXlv
dXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL25lZ2F0aXZlLXplcm8tZGl2aWRl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MTBjYTQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL25lZ2F0
aXZlLXplcm8tZGl2aWRlLmpzCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAg
dmFyIHggPSAxOworICB2YXIgeSA9IC0xOworICB2YXIgczsKKyAgdmFyIGk7CisgIGZvciAoaSA9
IDA7IGkgPCAyMDAxOyBpKyspIHsKKyAgICBpZiAoaSA9PSAyMDAwKQorICAgICAgeCA9IDA7Cisg
ICAgcyA9IDEvKHgveSsoLTApKTsKKyAgfQorICByZXR1cm4gczsKK30KKwordmFyIHggPSAoMS8o
MC8tMSsoLTApKSkudG9TdHJpbmcoKTsKK3ZhciB5ID0gZm9vKCkudG9TdHJpbmcoKTsKKworaWYg
KHggIT0geSkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyB5OworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL25lZ2F0aXZlLXpl
cm8tbW9kdWxvLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9u
ZWdhdGl2ZS16ZXJvLW1vZHVsby5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45ZGJmZjdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9uZWdhdGl2ZS16ZXJvLW1vZHVsby5qcwpAQCAtMCwwICsxLDE4IEBACitm
dW5jdGlvbiBmb28oKSB7CisgIHZhciB4ID0gNDsKKyAgdmFyIHM7CisgIHZhciBpOworICBmb3Ig
KGkgPSAwOyBpIDwgMjAwMTsgaSsrKSB7CisgICAgaWYgKGkgPT0gMjAwMCkKKyAgICAgIHggPSAt
NDsKKyAgICBzID0gMS8oeCU0KTsKKyAgfQorICByZXR1cm4gczsKK30KKwordmFyIHggPSAoMS8o
KC00KSU0KSkudG9TdHJpbmcoKTsKK3ZhciB5ID0gZm9vKCkudG9TdHJpbmcoKTsKKworaWYgKHgg
IT0geSkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyB5OworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL25lZ2F0aXZlLXplcm8t
bmVnYXRlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9uZWdh
dGl2ZS16ZXJvLW5lZ2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
ZTdmM2M3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9uZWdhdGl2ZS16ZXJvLW5lZ2F0ZS5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5j
dGlvbiBmb28oKSB7CisgIHZhciB4ID0gMTsKKyAgdmFyIHM7CisgIHZhciBpOworICBmb3IgKGkg
PSAwOyBpIDwgMjAwMTsgaSsrKSB7CisgICAgaWYgKGkgPT0gMjAwMCkKKyAgICAgIHggPSAwOwor
ICAgIHMgPSAxLygteCk7CisgIH0KKyAgcmV0dXJuIHM7Cit9CisKK3ZhciB4ID0gKDEvKC0wKSku
dG9TdHJpbmcoKTsKK3ZhciB5ID0gZm9vKCkudG9TdHJpbmcoKTsKKworaWYgKHggIT0geSkKKyAg
ICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyB5OworCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwppbmRleCAxYzJkY2ExLi4xOGRlY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxMy0wNC0xMCAgUm9tYW4gWmh1eWtvdiAgPHpocm9tYUBpc3ByYXMucnU+
CisKKyAgICAgICAgRml4IHByb2JsZW1zIHdpdGggcHJvY2Vzc2luZyBuZWdhdGl2ZSB6ZXJvIG9u
IERGRy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
Mzg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCBOb2RlTmVlZHNOZWdaZXJvIGZsYWcgcHJvcGFnYXRpb24gaW4gQmFja3dhcmRQcm9wYWdhdGlv
blBoYXNlLgorICAgICAgICBGdW5jdGlvbiBhcml0aE5vZGVGbGFncyBzaG91bGQgbm90IG1hc2sg
Tm9kZU5lZWRzTmVnWmVybyBmbGFnIGZvciBBcml0aE5lZ2F0ZSBhbmQgRG91YmxlQXNJbnQzMgor
ICAgICAgICBub2RlcyBhbmQgdGhpcyBmbGFnIHNob3VsZCBiZSBhbHdheXMgdXNlZCB0byBkZWNp
ZGUgd2hlcmUgd2UgbmVlZCB0byBnZW5lcmF0ZSBuZXphdGl2ZS16ZXJvIGNoZWNrcy4KKyAgICAg
ICAgUmVtb3ZlIHVubmVjZXNzYXJ5IG5lZ2F0aXZlLXplcm8gY2hlY2tzIGZyb20gaW50ZWdlciBB
cml0aERpdiBvbiBBUk0uCisgICAgICAgIEFsc28gcmVtb3ZlIHN1Y2ggY2hlY2tzIGZyb20gaW50
ZWdlciBBcml0aE1vZCBvbiBBUk0gYW5kIFg4NiwgYW5kIG1ha2UgdGhlbSBhbHdheXMgdG8KKyAg
ICAgICAgY2hlY2sgbm90IG9ubHkgIm1vZHVsb19yZXN1bHQgPT0gMCIgYnV0IGFsc28gImRpdmlk
ZW5kIDwgMCIuCisgICAgICAgIEdlbmVyYXRlIGZhc3RlciBjb2RlIGZvciBjYXNlIHdoZW4gQXJp
dGhNb2Qgb3BlcmF0aW9uIGRpdmlzb3IgaXMgY29uc3RhbnQgcG93ZXIgb2YgMiBvbiBBUk12Nwor
ICAgICAgICBpbiB0aGUgc2FtZSB3YXkgYXMgb24gQVJNdjdzLCBhbmQgYWRkIG5lZ2F0aXZlLXpl
cm8gY2hlY2tzIGludG8gdGhpcyBjb2RlIHdoZW4gbmVlZGVkLgorICAgICAgICBDaGFuZ2Ugc3Bl
Y3VsYXRpb25DaGVjayBFeGl0S2luZCBmcm9tIE92ZXJmbG93IHRvIE5lZ2F0aXZlWmVybyB3aGVy
ZSBhcHBsaWNhYmxlLgorIAorICAgICAgICBUaGlzIHNob3dzIDMwJSBzcGVlZHVwIG9mIG1hdGgt
c3BlY3RyYWwtbm9ybSwgYW5kIDUlIHNwZWVkdXAKKyAgICAgICAgb24gU3VuU3BpZGVyIG92ZXJh
bGwgb24gQVJNdjcgTGludXguCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk0uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaENvbnZlcnREb3Vi
bGVUb0ludDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpicmFuY2hDb252ZXJ0RG91YmxlVG9J
bnQzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKToKKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKToKKyAgICAg
ICAgKiBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6aXNOb3ROZWdaZXJvKToKKyAgICAgICAg
KEpTQzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlOjppc05vdFBvc1plcm8pOgorICAg
ICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjphcml0aE5v
ZGVGbGFncyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUFzSW50MzIpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU29mdE1vZHVsbyk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSk6CisKIDIwMTMt
MDQtMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB3YXRj
aGRvZyB0aW1lciBwb2xsaW5nIGZvciB0aGUgREZHLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCmluZGV4IGNmM2JhZmIuLjQ0NTlk
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNLmgKQEAgLTEyNDQsNyArMTI0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGUg
cmVzdWx0IGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAg
ICAgLy8gTWF5IGFsc28gYnJhbmNoIGZvciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRh
YmxlIGluIDMyIGJpdHMKICAgICAvLyAoc3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIDApLgot
ICAgIHZvaWQgYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBGUFJlZ2lzdGVySUQpCisgICAg
dm9pZCBicmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEZQUmVnaXN0ZXJJRCwgYm9vbCBuZWda
ZXJvQ2hlY2sgPSB0cnVlKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9zMzJfZjY0
KEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEsIHNyYyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZtb3Zf
YXJtMzIoZGVzdCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7CkBAIC0xMjU0LDcgKzEyNTQsOCBA
QCBwdWJsaWM6CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoRG91YmxlKERvdWJs
ZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHNyYywgQVJNUmVnaXN0ZXJzOjpTRDApKTsKIAogICAgICAg
ICAvLyBJZiB0aGUgcmVzdWx0IGlzIHplcm8sIGl0IG1pZ2h0IGhhdmUgYmVlbiAtMC4wLCBhbmQg
MC4wIGVxdWFscyB0byAtMC4wCi0gICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoVGVz
dDMyKFplcm8sIGRlc3QpKTsKKyAgICAgICAgaWYgKG5lZ1plcm9DaGVjaykKKyAgICAgICAgICAg
IGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIGRlc3QpKTsKICAgICB9CiAK
ICAgICBKdW1wIGJyYW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3Rl
cklEIHNjcmF0Y2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IDM5NjM1NmUuLmIxYmM0MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
CkBAIC0xMTA0LDcgKzExMDQsNyBAQCBwdWJsaWM6CiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBu
b3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBh
bHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBi
aXRzCiAgICAgLy8gKHNwZWNpZmljYWxseSwgaW4gdGhpcyBjYXNlLCAwKS4KLSAgICB2b2lkIGJy
YW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklEKQorICAgIHZvaWQgYnJhbmNo
Q29udmVydERvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBK
dW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBGUFJlZ2lzdGVySUQsIGJvb2wgbmVnWmVyb0NoZWNrID0g
dHJ1ZSkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfZmxvYXRpbmdQb2ludFRvU2ln
bmVkKGZwVGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSwgc3JjKTsKICAgICAgICAgbV9hc3NlbWJsZXIu
dm1vdihkZXN0LCBmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCkpOwpAQCAtMTExNCw3ICsxMTE0LDgg
QEAgcHVibGljOgogICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaERvdWJsZShEb3Vi
bGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBzcmMsIGZwVGVtcFJlZ2lzdGVyKSk7CiAKICAgICAgICAg
Ly8gSWYgdGhlIHJlc3VsdCBpcyB6ZXJvLCBpdCBtaWdodCBoYXZlIGJlZW4gLTAuMCwgYW5kIHRo
ZSBkb3VibGUgY29tcGFyaXNvbiB3b24ndCBjYXRjaCB0aGlzIQotICAgICAgICBmYWlsdXJlQ2Fz
ZXMuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBkZXN0KSk7CisgICAgICAgIGlmIChuZWdaZXJv
Q2hlY2spCisgICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJv
LCBkZXN0KSk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hEb3VibGVOb25aZXJvKEZQUmVnaXN0
ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IDlhMzYzZmQuLjkwNWNiYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ck1JUFMuaApAQCAtMjYyOSwxMyArMjYyOSwxNCBAQCBwdWJsaWM6CiAgICAgLy8gSWYgdGhlIHJl
c3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgogICAg
IC8vIE1heSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJs
ZSBpbiAzMiBiaXRzCiAgICAgLy8gKHNwZWNpZmljYWxseSwgaW4gdGhpcyBjYXNlLCAwKS4KLSAg
ICB2b2lkIGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCkK
KyAgICB2b2lkIGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVt
cCwgYm9vbCBuZWdaZXJvQ2hlY2sgPSB0cnVlKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
Y3Z0d2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVz
dCwgZnBUZW1wUmVnaXN0ZXIpOwogCiAgICAgICAgIC8vIElmIHRoZSByZXN1bHQgaXMgemVybywg
aXQgbWlnaHQgaGF2ZSBiZWVuIC0wLjAsIGFuZCB0aGUgZG91YmxlIGNvbXBhcmlzb24gd29uJ3Qg
Y2F0Y2ggdGhpcyEKLSAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2gzMihFcXVhbCwg
ZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybykpOworICAgICAgICBpZiAobmVnWmVyb0NoZWNrKQor
ICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgZGVzdCwgTUlQ
U1JlZ2lzdGVyczo6emVybykpOwogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGludGVnZXIgcmVz
dWx0IGJhY2sgdG8gZmxvYXQgJiBjb21wYXJlIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZSAtIGlmIG5v
dCBlcXVhbCBvciB1bm9yZGVyZWQgKE5hTikgdGhlbiBqdW1wLgogICAgICAgICBjb252ZXJ0SW50
MzJUb0RvdWJsZShkZXN0LCBmcFRlbXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCmluZGV4IGQwYjQyMzAuLmFjOWExMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJT
SDQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
U0g0LmgKQEAgLTIwMzYsMjAgKzIwMzYsMjIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJh
bmNoVHJ1ZSgpOwogICAgIH0KIAotICAgIHZvaWQgYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIo
RlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYgZmFpbHVyZUNhc2Vz
LCBGUFJlZ2lzdGVySUQgZnBUZW1wKQorICAgIHZvaWQgYnJhbmNoQ29udmVydERvdWJsZVRvSW50
MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYgZmFpbHVyZUNh
c2VzLCBGUFJlZ2lzdGVySUQgZnBUZW1wLCBib29sIG5lZ1plcm9DaGVjayA9IHRydWUpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci5mdHJjZHJtZnB1bChzcmMpOwogICAgICAgICBtX2Fzc2Vt
Ymxlci5zdHNmcHVsUmVnKGRlc3QpOwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShkZXN0
LCBmc2NyYXRjaCk7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoRG91YmxlKERv
dWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIGZzY3JhdGNoLCBzcmMpKTsKIAotICAgICAgICBpZiAo
ZGVzdCA9PSBTSDRSZWdpc3RlcnM6OnIwKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wRXFJ
bW1SMCgwLCBkZXN0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZJbW04KDAsIHNjcmF0Y2hSZWczKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdS
ZWcoc2NyYXRjaFJlZzMsIGRlc3QsIFNINENvbmRpdGlvbihFcXVhbCkpOworICAgICAgICBpZiAo
bmVnWmVyb0NoZWNrKSB7CisgICAgICAgICAgICBpZiAoZGVzdCA9PSBTSDRSZWdpc3RlcnM6OnIw
KQorICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcEVxSW1tUjAoMCwgZGVzdCk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZJbW04KDAsIHNj
cmF0Y2hSZWczKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjcmF0
Y2hSZWczLCBkZXN0LCBTSDRDb25kaXRpb24oRXF1YWwpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoVHJ1ZSgpKTsKICAgICAgICAgfQotICAg
ICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFRydWUoKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBuZWczMihSZWdpc3RlcklEIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCAzM2MxYjNjLi5m
MTcxZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC04ODUsMTMgKzg4NSwxNCBAQCBwdWJsaWM6
CiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2
YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhh
dCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCiAgICAgLy8gKHNwZWNpZmljYWxseSwgaW4g
dGhpcyBjYXNlLCAwKS4KLSAgICB2b2lkIGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgRlBS
ZWdpc3RlcklEIGZwVGVtcCkKKyAgICB2b2lkIGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQ
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywg
RlBSZWdpc3RlcklEIGZwVGVtcCwgYm9vbCBuZWdaZXJvQ2hlY2sgPSB0cnVlKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRz
ZDJzaV9ycihzcmMsIGRlc3QpOwogCiAgICAgICAgIC8vIElmIHRoZSByZXN1bHQgaXMgemVybywg
aXQgbWlnaHQgaGF2ZSBiZWVuIC0wLjAsIGFuZCB0aGUgZG91YmxlIGNvbXBhcmlzb24gd29uJ3Qg
Y2F0Y2ggdGhpcyEKLSAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVy
bywgZGVzdCkpOworICAgICAgICBpZiAobmVnWmVyb0NoZWNrKQorICAgICAgICAgICAgZmFpbHVy
ZUNhc2VzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZGVzdCkpOwogCiAgICAgICAgIC8vIENv
bnZlcnQgdGhlIGludGVnZXIgcmVzdWx0IGJhY2sgdG8gZmxvYXQgJiBjb21wYXJlIHRvIHRoZSBv
cmlnaW5hbCB2YWx1ZSAtIGlmIG5vdCBlcXVhbCBvciB1bm9yZGVyZWQgKE5hTikgdGhlbiBqdW1w
LgogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShkZXN0LCBmcFRlbXApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25Q
aGFzZS5jcHAKaW5kZXggNjYwOWMxZi4uNWUyYjEwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCkBA
IC02NiwxNCArNjYsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFtX2dyYXBoLmlzTnVtYmVy
Q29uc3RhbnQobm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRvdWJs
ZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZk51bWJlckNvbnN0YW50KG5vZGUpOwotICAgICAgICBy
ZXR1cm4gIXZhbHVlICYmIDEuMCAvIHZhbHVlIDwgMC4wOworICAgICAgICByZXR1cm4gKHZhbHVl
IHx8IDEuMCAvIHZhbHVlID4gMC4wKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc05vdFplcm8o
Tm9kZSogbm9kZSkKKyAgICBib29sIGlzTm90UG9zWmVybyhOb2RlKiBub2RlKQogICAgIHsKICAg
ICAgICAgaWYgKCFtX2dyYXBoLmlzTnVtYmVyQ29uc3RhbnQobm9kZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiAhIW1fZ3JhcGgudmFsdWVPZk51bWJlckNvbnN0
YW50KG5vZGUpOworICAgICAgICBkb3VibGUgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZOdW1iZXJD
b25zdGFudChub2RlKTsKKyAgICAgICAgcmV0dXJuICh2YWx1ZSB8fCAxLjAgLyB2YWx1ZSA8IDAu
MCk7CiAgICAgfQogCiAgICAgLy8gVGVzdHMgaWYgdGhlIGFic29sdXRlIHZhbHVlIGlzIHN0cmlj
dGx5IGxlc3MgdGhhbiB0aGUgcG93ZXIgb2YgdHdvLgpAQCAtMjQ3LDcgKzI0OCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFyaXRoU3ViOiB7Ci0g
ICAgICAgICAgICBpZiAoaXNOb3RaZXJvKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkgfHwgaXNOb3Ra
ZXJvKG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpCisgICAgICAgICAgICBpZiAoaXNOb3ROZWdaZXJv
KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkgfHwgaXNOb3RQb3NaZXJvKG5vZGUtPmNoaWxkMigpLm5v
ZGUoKSkpCiAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gfk5vZGVOZWVkc05lZ1plcm87CiAgICAg
ICAgICAgICBpZiAoIWlzV2l0aGluUG93ZXJPZlR3bzwzMj4obm9kZS0+Y2hpbGQxKCkpICYmICFp
c1dpdGhpblBvd2VyT2ZUd288MzI+KG5vZGUtPmNoaWxkMigpKSkKICAgICAgICAgICAgICAgICBm
bGFncyB8PSBOb2RlVXNlZEFzTnVtYmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApp
bmRleCBhNTljM2Y4Li4yYmMxZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApA
QCAtNTIyLDcgKzUyMiw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICBOb2RlRmxhZ3MgYXJpdGhOb2Rl
RmxhZ3MoKQogICAgIHsKICAgICAgICAgTm9kZUZsYWdzIHJlc3VsdCA9IG1fZmxhZ3MgJiBOb2Rl
QXJpdGhGbGFnc01hc2s7Ci0gICAgICAgIGlmIChvcCgpID09IEFyaXRoTXVsIHx8IG9wKCkgPT0g
QXJpdGhEaXYgfHwgb3AoKSA9PSBBcml0aE1vZCkKKyAgICAgICAgaWYgKG9wKCkgPT0gQXJpdGhN
dWwgfHwgb3AoKSA9PSBBcml0aERpdiB8fCBvcCgpID09IEFyaXRoTW9kIHx8IG9wKCkgPT0gQXJp
dGhOZWdhdGUgfHwgb3AoKSA9PSBEb3VibGVBc0ludDMyKQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgcmV0dXJuIHJlc3VsdCAmIH5Ob2RlTmVlZHNOZWdaZXJvOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggYzg3YTkxNy4uYjZjNTkwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTIzOTUsNyArMjM5NSw4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEb3VibGVBc0ludDMyKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBmYWlsdXJl
Q2FzZXM7Ci0gICAgbV9qaXQuYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIodmFsdWVGUFIsIHJl
c3VsdEdQUiwgZmFpbHVyZUNhc2VzLCBzY3JhdGNoRlBSKTsKKyAgICBib29sIG5lZ1plcm9DaGVj
ayA9ICFub2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpOwor
ICAgIG1faml0LmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKHZhbHVlRlBSLCByZXN1bHRHUFIs
IGZhaWx1cmVDYXNlcywgc2NyYXRjaEZQUiwgbmVnWmVyb0NoZWNrKTsKICAgICBmb3J3YXJkU3Bl
Y3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwgZmFpbHVyZUNhc2VzLCBW
YWx1ZVJlY292ZXJ5OjppbkZQUih2YWx1ZUZQUikpOwogCiAgICAgaW50ZWdlclJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwpAQCAtMjkwOCwxMiArMjkwOSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU29mdE1vZHVsbyhOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaDMyKEpJVENv
bXBpbGVyOjpFcXVhbCwgZWF4LmdwcigpLCBUcnVzdGVkSW1tMzIoLTIxNDc0ODM2NDctMSkpKTsK
ICAgICAgICAgICAgIG1faml0LmFzc2VtYmxlcigpLmNkcSgpOwogICAgICAgICAgICAgbV9qaXQu
YXNzZW1ibGVyKCkuaWRpdmxfcihzY3JhdGNoR1BSKTsKLSAgICAgICAgICAgIC8vIENoZWNrIHRo
YXQgd2UncmUgbm90IGFib3V0IHRvIGNyZWF0ZSBuZWdhdGl2ZSB6ZXJvLgotICAgICAgICAgICAg
Ly8gRklYTUU6IGlmIHRoZSBub2RlIHVzZSBkb2Vzbid0IGNhcmUgYWJvdXQgbmVnIHplcm8sIHdl
IGNhbiBkbyB0aGlzIG1vcmUgZWFzaWx5LgotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
bnVtZXJhdG9yUG9zaXRpdmUgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6R3JlYXRlclRo
YW5PckVxdWFsLCBvcDFTYXZlR1BSLCBUcnVzdGVkSW1tMzIoMCkpOwotICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVz
dDMyKEpJVENvbXBpbGVyOjpaZXJvLCBlZHguZ3ByKCkpKTsKLSAgICAgICAgICAgIG51bWVyYXRv
clBvc2l0aXZlLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFu
b2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAg
ICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSdyZSBub3QgYWJvdXQgdG8gY3JlYXRlIG5lZ2F0
aXZlIHplcm8uCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVtZXJhdG9yUG9z
aXRpdmUgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCBv
cDFTYXZlR1BSLCBUcnVzdGVkSW1tMzIoMCkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0MzIo
SklUQ29tcGlsZXI6Olplcm8sIGVkeC5ncHIoKSkpOworICAgICAgICAgICAgICAgIG51bWVyYXRv
clBvc2l0aXZlLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChv
cDFTYXZlR1BSICE9IG9wMUdwcikKICAgICAgICAgICAgICAgICB1bmxvY2sob3AxU2F2ZUdQUik7
CiAKQEAgLTI5MjEsNyArMjkyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTb2Z0
TW9kdWxvKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9
Ci0jZWxpZiBDUFUoQVBQTEVfQVJNVjdTKQorI2VsaWYgQ1BVKEFQUExFX0FSTVY3UykgfHwgQ1BV
KEFSTV9USFVNQjIpCiAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlLT5jaGlsZDIoKS5ub2Rl
KCkpKSB7CiAgICAgICAgIGludDMyX3QgZGl2aXNvciA9IHZhbHVlT2ZJbnQzMkNvbnN0YW50KG5v
ZGUtPmNoaWxkMigpLm5vZGUoKSk7CiAgICAgICAgIGlmIChkaXZpc29yID4gMCAmJiBoYXNPbmVC
aXRTZXQoZGl2aXNvcikpIHsgLy8gSWYgcG93ZXIgb2YgMiB0aGVuIGp1c3QgbWFzawpAQCAtMjkz
Nyw2ICsyOTM4LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTb2Z0TW9kdWxvKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS5pdChBUk12N0Fzc2VtYmxl
cjo6Q29uZGl0aW9uTFQpOwogICAgICAgICAgICAgbV9qaXQuYXNzZW1ibGVyKCkubmVnKHJlc3Vs
dEdQUiwgcmVzdWx0R1BSKTsKIAorICAgICAgICAgICAgaWYgKCFub2RlQ2FuSWdub3JlTmVnYXRp
dmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICAgICAgLy8gQ2hl
Y2sgdGhhdCB3ZSdyZSBub3QgYWJvdXQgdG8gY3JlYXRlIG5lZ2F0aXZlIHplcm8uCisgICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbnVtZXJhdG9yUG9zaXRpdmUgPSBtX2ppdC5icmFu
Y2gzMihKSVRDb21waWxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCBkaXZpZGVuZEdQUiwgVHJ1c3Rl
ZEltbTMyKDApKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE5lZ2F0aXZlWmVy
bywgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpaZXJv
LCByZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICBudW1lcmF0b3JQb3NpdGl2ZS5saW5rKCZt
X2ppdCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMwMDAsMTEgKzMw
MDcsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNvZnRNb2R1bG8oTm9kZSogbm9k
ZSkKICAgICBpZiAob3AyVGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICB1bmxvY2so
b3AyVGVtcEdQUik7CiAKLSAgICAvLyBDaGVjayB0aGF0IHdlJ3JlIG5vdCBhYm91dCB0byBjcmVh
dGUgbmVnYXRpdmUgemVyby4KLSAgICAvLyBGSVhNRTogaWYgdGhlIG5vZGUgdXNlIGRvZXNuJ3Qg
Y2FyZSBhYm91dCBuZWcgemVybywgd2UgY2FuIGRvIHRoaXMgbW9yZSBlYXNpbHkuCi0gICAgSklU
Q29tcGlsZXI6Okp1bXAgbnVtZXJhdG9yUG9zaXRpdmUgPSBtX2ppdC5icmFuY2gzMihKSVRDb21w
aWxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCBvcDFTYXZlR1BSLCBUcnVzdGVkSW1tMzIoMCkpOwot
ICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJy
YW5jaFRlc3QzMihKSVRDb21waWxlcjo6WmVybywgZWR4LmdwcigpKSk7Ci0gICAgbnVtZXJhdG9y
UG9zaXRpdmUubGluaygmbV9qaXQpOworICAgIGlmICghbm9kZUNhbklnbm9yZU5lZ2F0aXZlWmVy
byhub2RlLT5hcml0aE5vZGVGbGFncygpKSkgeworICAgICAgICAvLyBDaGVjayB0aGF0IHdlJ3Jl
IG5vdCBhYm91dCB0byBjcmVhdGUgbmVnYXRpdmUgemVyby4KKyAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbnVtZXJhdG9yUG9zaXRpdmUgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6R3Jl
YXRlclRoYW5PckVxdWFsLCBvcDFTYXZlR1BSLCBUcnVzdGVkSW1tMzIoMCkpOworICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJh
bmNoVGVzdDMyKEpJVENvbXBpbGVyOjpaZXJvLCBlZHguZ3ByKCkpKTsKKyAgICAgICAgbnVtZXJh
dG9yUG9zaXRpdmUubGluaygmbV9qaXQpOworICAgIH0KICAgICAKICAgICBpZiAob3AxU2F2ZUdQ
UiAhPSBvcDFHUFIpCiAgICAgICAgIHVubG9jayhvcDFTYXZlR1BSKTsKQEAgLTMwMjksNyArMzAz
Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTb2Z0TW9kdWxvKE5vZGUqIG5vZGUp
CiAgICAgaWYgKCFub2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdz
KCkpKSB7CiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UncmUgbm90IGFib3V0IHRvIGNyZWF0ZSBu
ZWdhdGl2ZSB6ZXJvLgogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBudW1lcmF0b3JQb3NpdGl2
ZSA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIGRpdmlk
ZW5kR1BSLCBUcnVzdGVkSW1tMzIoMCkpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJm
bG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olpl
cm8sIHF1b3RpZW50VGhlblJlbWFpbmRlckdQUikpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDMyKEpJVENv
bXBpbGVyOjpaZXJvLCBxdW90aWVudFRoZW5SZW1haW5kZXJHUFIpKTsKICAgICAgICAgbnVtZXJh
dG9yUG9zaXRpdmUubGluaygmbV9qaXQpOwogICAgIH0KIApAQCAtMzA0OCw4ICszMDU2LDE0IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTb2Z0TW9kdWxvKE5vZGUqIG5vZGUpCiAgICAg
RlBSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IGludFJlc3VsdCh0
aGlzKTsKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwotICAgIG1faml0
LmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKHJlc3VsdC5mcHIoKSwgaW50UmVzdWx0Lmdwcigp
LCBmYWlsdXJlQ2FzZXMsIHNjcmF0Y2guZnByKCkpOworICAgIG1faml0LmJyYW5jaENvbnZlcnRE
b3VibGVUb0ludDMyKHJlc3VsdC5mcHIoKSwgaW50UmVzdWx0LmdwcigpLCBmYWlsdXJlQ2FzZXMs
IHNjcmF0Y2guZnByKCksIGZhbHNlKTsKICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBK
U1ZhbHVlUmVncygpLCAwLCBmYWlsdXJlQ2FzZXMpOworICAgIGlmICghbm9kZUNhbklnbm9yZU5l
Z2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkgeworICAgICAgICAvLyBDaGVjayB0
aGF0IHdlJ3JlIG5vdCBhYm91dCB0byBjcmVhdGUgbmVnYXRpdmUgemVyby4KKyAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgbnVtZXJhdG9yUG9zaXRpdmUgPSBtX2ppdC5icmFuY2gzMihKSVRDb21w
aWxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCBvcDFHUFIsIFRydXN0ZWRJbW0zMigwKSk7CisgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLCBtX2pp
dC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIGludFJlc3VsdC5ncHIoKSkpOworICAg
ICAgICBudW1lcmF0b3JQb3NpdGl2ZS5saW5rKCZtX2ppdCk7CisgICAgfQogICAgIAogICAgIGlu
dGVnZXJSZXN1bHQoaW50UmVzdWx0LmdwcigpLCBub2RlKTsKICNlbmRpZiAvLyBDUFUoWDg2KSB8
fCBDUFUoWDg2XzY0KQpAQCAtMzI5Niw3ICszMzEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUFyaXRoTmVnYXRlKE5vZGUqIG5vZGUpCiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJh
bmNoTmVnMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHQuZ3ByKCkpKTsKICAgICAg
ICAgICAgIGlmICghbm9kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFn
cygpKSkKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVl
UmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3Vs
dC5ncHIoKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJv
LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIHJlc3VsdC5ncHIoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgaW50ZWdlclJlc3VsdChy
ZXN1bHQuZ3ByKCksIG5vZGUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>