<?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>42815</bug_id>
          
          <creation_ts>2010-07-22 04:04:12 -0700</creation_ts>
          <short_desc>getBoundingClientRect Broken for SVG Elements</short_desc>
          <delta_ts>2010-10-29 09:09:44 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://developer.mozilla.org/presentations/xtech2005/svg-canvas/SVGDemo.xml</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="Dan Wilson">danjwilson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ctruta</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>254720</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Wilson">danjwilson</who>
    <bug_when>2010-07-22 04:04:12 -0700</bug_when>
    <thetext>Bug copied from chromium issue tracker, because this is a webkit issue.

I&apos;ve verified the issue on Webkit nightly (r63854), Chromium nightly (53312) as well as Safari 5.0. (Firefox 3.6.6 and Opera 10.6 work correctly.)

What follows is from http://code.google.com/p/chromium/issues/detail?id=47998

----

Chrome Version       : 5.0.375.86
URLs (if applicable) : https://developer.mozilla.org/presentations/xtech2005/svg-canvas/SVGDemo.xml
Other browsers tested:
Add OK or FAIL after other browsers where you have tested this issue:
Safari 4:
  Firefox 3.x: PASS
IE 7:
IE 8:

What steps will reproduce the problem?
1. visit URL
2. In Console, enter: document.getElementsByTagNameNS(&quot;http://www.w3.org/2000/svg&quot;, &quot;rect&quot;)[0].getBoundingClientRect()


What is the expected result?
The correct bounding rectangle.

What happens instead?
All dimensions are zero.

Please provide any additional information below. Attach a screenshot if
possible.

As far as I can tell, the method, getBoundingClientRect, is broken for all SVG elements in chrome/webkit. It works in Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254722</commentid>
    <comment_count>1</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-22 04:18:30 -0700</bug_when>
    <thetext>getBoundingClientRect() operates on RenderBoxModelObjects, see:

PassRefPtr&lt;ClientRect&gt; Element::getBoundingClientRect() const
{
    document()-&gt;updateLayoutIgnorePendingStylesheets();
    RenderBoxModelObject* renderBoxModelObject = this-&gt;renderBoxModelObject();

This will always be zero for SVG elements. I was not aware of this method to retrieve the bounding box of a SVG element, as SVG provides it&apos;s own getBBox() function.

Just reading http://www.w3.org/TR/cssom-view/#the-getclientrects-and-getboundingclient, which says:

If the element does not have an associated CSS layout box and is in the http://www.w3.org/2000/svg namespace return a ClientRectList object containing a single ClientRect object that describes the bounding box of the element as defined by SVG specification. [SVG]

So it might be as easy as:
if (isSVGElement()) {
    SVGElement* svgElement = static_cast&lt;SVGElement*&gt;(this);
    if (svgElement-&gt;isStyledLocatable())
        return ClientRect::create(static_cast&lt;SVGStyledLocatableElement*&gt;(svgElement)-&gt;getBBox());
}

Just noticed that ClientRect stores a FloatRect internally, but only has an IntRect constructor, so after adding a ClientRect(const FloatRect&amp;) constructor, the code above should work as is.

Someone interessted in implementing? I&apos;m quite busy atm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255062</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-22 16:43:01 -0700</bug_when>
    <thetext>Duplicate of bug 27978?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269686</commentid>
    <comment_count>3</comment_count>
      <attachid>65517</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-08-25 19:35:31 -0700</bug_when>
    <thetext>Created attachment 65517
Fix and layout test

(In reply to comment #1)
I wonder if it&apos;s necessary to create this separate code path for SVG inside Element::getBoundingClientRect, when it&apos;s simpler to just add box model object capabilities to the SVG render. I replaced the base class of RenderSVGModelObject with RenderPath (which is a subclass of RenderBoxModelObject), and everything just starts working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269714</commentid>
    <comment_count>4</comment_count>
      <attachid>65517</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-25 22:05:33 -0700</bug_when>
    <thetext>Comment on attachment 65517
Fix and layout test

RenderPath and the other SVG renderers (without SVGRoot and some more) are no elements that follow the boxing model, so it is wrong to inherit from RenderBox. It&apos;s better to follow Nikos suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271476</commentid>
    <comment_count>5</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-08-30 09:58:50 -0700</bug_when>
    <thetext>Ok, I followed Nikolas&apos; suggestion, and it worked well except that the results aren&apos;t consistent with Firefox.
The output rectangle, as received from getBBox(), is the rectangle specified in the SVG: (0, 0, 100, 100). On the other hand, in Firefox, the output is the actual position within the window; e.g., on my desktop it&apos;s (104.6, -478.65, 1721, 1722).
It is necessary to translate the result from getBBox() to the actual screen coordinates, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272635</commentid>
    <comment_count>6</comment_count>
      <attachid>66167</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-08-31 22:15:15 -0700</bug_when>
    <thetext>Created attachment 66167
Fix and layout test, take 2

As mentioned in the previous comment, it is not sufficient to just call getBBox(). It is also necessary to go through the rest of the function&apos;s calculations, in order to obtain the correct result. I am now stretching the rectangle in the layout test, to ensure that the necessary calculations are performed.
Upon this submission, the values displayed in Chromium/TestShell are consistent with those displayed in Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272765</commentid>
    <comment_count>7</comment_count>
      <attachid>66167</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-09-01 05:29:34 -0700</bug_when>
    <thetext>Comment on attachment 66167
Fix and layout test, take 2

Hi Cosmin,

the patch itself looks fine, but I want to see more tests, especially in the context of zooming &amp; scrolling.
Have a look at svg/zoom/page and copy your testcase there, and add the logic that zooms the page several times.
Also grep for &quot;overflow: scroll&quot; in svg/custom, you can find some tests as template for you.

Thanks in advance,
Niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277027</commentid>
    <comment_count>8</comment_count>
      <attachid>67155</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-09-09 22:34:20 -0700</bug_when>
    <thetext>Created attachment 67155
Fix and layout test, take 3

Niko,
Here is the old patch with new tests, as you suggested. The test include an unstretched and a stretched rectangle, as well as two overflown rectangles (a hidden one, and a scrolled one).

I did not know how to test zooming. When I added tests for getBoundingClientRect to an existing SVG zooming test, I was still getting the initial rectangle coordinates, before zooming. The getBoundingClientRect function does work correctly, for example, when I run that test in the browser, I zoom then I click the refresh button, the coordinates are scaled as expected. However, when zooming using testPageZoom.js, without hitting the refresh button or doing other sorts of UI interaction, the rectangle coordinates are not scaled. If you wish, I can show you the example that I&apos;m using.

And there is another thing: getBoundingClientRect works well on various SVG elements that I tried, except &lt;text&gt;. (In comparison, getBBox does work on &lt;text&gt; under Chromium, and both getBBox and getBoundingClientRect work well on &lt;text&gt; under Firefox.) Would it be possible to have my patch accepted, and allow me to work on the remaining issue, separately, so that I keep the code chunks separate and reasonably small?

Best regards,
Cosmin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277065</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-09-10 01:02:18 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=67155) [details]
&gt; Fix and layout test, take 3
&gt; 
&gt; Niko,
&gt; Here is the old patch with new tests, as you suggested. The test include an unstretched and a stretched rectangle, as well as two overflown rectangles (a hidden one, and a scrolled one).
Good job.
 
&gt; I did not know how to test zooming. When I added tests for getBoundingClientRect to an existing SVG zooming test, I was still getting the initial rectangle coordinates, before zooming. The getBoundingClientRect function does work correctly, for example, when I run that test in the browser, I zoom then I click the refresh button, the coordinates are scaled as expected.
What do you mean by refreshing, reloading the page?

&gt; However, when zooming using testPageZoom.js, without hitting the refresh button or doing other sorts of UI interaction, the rectangle coordinates are not scaled. If you wish, I can show you the example that I&apos;m using.
Please attach the example here. I expected that you&apos;d run into trouble with zooming :-)

&gt; 
&gt; And there is another thing: getBoundingClientRect works well on various SVG elements that I tried, except &lt;text&gt;. (In comparison, getBBox does work on &lt;text&gt; under Chromium, and both getBBox and getBoundingClientRect work well on &lt;text&gt; under Firefox.) Would it be possible to have my patch accepted, and allow me to work on the remaining issue, separately, so that I keep the code chunks separate and reasonably small?
If you&apos;re commited to work on the remaining issues, it&apos;s just fine with me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277066</commentid>
    <comment_count>10</comment_count>
      <attachid>67155</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-09-10 01:03:17 -0700</bug_when>
    <thetext>Comment on attachment 67155
Fix and layout test, take 3

Good first patch. Looking forward to the fixes to get zooming + text working as well. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277187</commentid>
    <comment_count>11</comment_count>
      <attachid>67181</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-09-10 07:52:58 -0700</bug_when>
    <thetext>Created attachment 67181
Test case: getBoundingClientRect does not react to the scripted zooming

(In reply to comment #9)
&gt; What do you mean by refreshing, reloading the page?
Yes.

I know very little at this point, so I don&apos;t know exactly what is the expected behavior. Here is the first example, involving strictly XHTML (e.g. &lt;div&gt;). No matter how much I zoom, after zooming and refreshing the coordinates stay the same, or are off-by-one at worst. Is this the correct behavior?
2nd example is coming up next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277188</commentid>
    <comment_count>12</comment_count>
      <attachid>67182</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-09-10 07:55:58 -0700</bug_when>
    <thetext>Created attachment 67182
67181: Test case: getBoundingClientRect does not react to the scripted zooming, Part 2

... and here is the 2nd example, in which getBoundingClientRect is applied to an SVG element.

Under testPageZoom.js, nothing happens, the coordinates displayed remain unchanged. But after manual zooming and refresh, the coordinates are changing.
Which one (if any) of the two test cases have the correct behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277190</commentid>
    <comment_count>13</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-09-10 08:02:48 -0700</bug_when>
    <thetext>Forgot to mention that Firefox acts the same way as Chromium does with the XHTML test case involving &lt;div&gt;, so, from that comparison, I am inclined to think that the behavior of the SVG test case is incorrect.

You can probably tell by now that I don&apos;t know that much CSS and JavaScript.

But there&apos;s another thing: Firefox also expects reloading the page to display the updated coordinates; zooming alone does not seem to be enough for Firefox, either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277196</commentid>
    <comment_count>14</comment_count>
      <attachid>67185</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-09-10 08:14:35 -0700</bug_when>
    <thetext>Created attachment 67185
Test case: getBoundingClientRect not working on &lt;text&gt;

This test case is currently failing. In order to make it pass, it is necessary to comment out the if-statement that checks txt.getBoundingClientRect() at line 20.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277566</commentid>
    <comment_count>15</comment_count>
      <attachid>67155</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-10 17:47:56 -0700</bug_when>
    <thetext>Comment on attachment 67155
Fix and layout test, take 3

Clearing flags on attachment: 67155

Committed r67252: &lt;http://trac.webkit.org/changeset/67252&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277567</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-10 17:48:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277572</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-10 17:52:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67252 might have broken Qt Linux Release minimal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283260</commentid>
    <comment_count>18</comment_count>
      <attachid>68445</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-09-22 14:45:58 -0700</bug_when>
    <thetext>Created attachment 68445
Test case: getBoundingClientRect does not work correctly with zooming

I am attaching a simpler test case, that I wrote using the &quot;zoom&quot; attribute.

The dimensions of &lt;svg&gt; elements are shown correctly, and are the same, regardless whether the page is zoomed (either zoomed in or zoomed out).

The dimensions of &lt;rect&gt; elements are shown incorrectly, and are changing, depending on how the page is being zoomed.

As of latest dev version, this is the output, unzoomed:

PASS svg1.width is 100
PASS svg1.height is 50
FAIL r1.width should be 100. Was 200.
FAIL r1.height should be 50. Was 100.

PASS svg2.width is 200
PASS svg2.height is 100
FAIL r2.width should be 200. Was 100.
FAIL r2.height should be 100. Was 50.

And this is the output, zoomed-in twice (in Chromium on Linux):

PASS svg1.width is 100
PASS svg1.height is 50
FAIL r1.width should be 100. Was 288.
FAIL r1.height should be 50. Was 144.

PASS svg2.width is 200
PASS svg2.height is 100
FAIL r2.width should be 200. Was 144.
FAIL r2.height should be 100. Was 72.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286701</commentid>
    <comment_count>19</comment_count>
      <attachid>69153</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-09-28 19:12:11 -0700</bug_when>
    <thetext>Created attachment 69153
Fix and layout test for zoomed elements

getBoundingClientRect finally works correctly with zooming.

There are still off-by-one errors when zoomed arbitrarily. I&apos;m pretty sure that&apos;s because the bounding rectangle is adjusted for absolute zoom *after* it is converted to IntRect. The roundoff errors are significant enough to cause off-by-one, and sometimes even off-by-two errors from time to time. The layout test that I included is okay, though, because zooming is done at well-behaved ratios (50% and 200%).

I placed the layout test in the css3/ directory, rather than in an svg/ subdirectory, because I discovered that the zoom attribute hasn&apos;t been tested with getBoundingC..., not even for HTML elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286704</commentid>
    <comment_count>20</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-09-28 19:23:46 -0700</bug_when>
    <thetext>The work on &lt;text&gt; will be continued under the bug 46775.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286764</commentid>
    <comment_count>21</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-09-29 00:53:13 -0700</bug_when>
    <thetext>Good work Cosmin.
Note, that we&apos;ve never tested the combination of the zoom property on SVG elements at all. I wasn&apos;t even aware that it actually works.

It&apos;s definately non-standard for SVG - what happens if you manually zoom into your standalone SVG file - does getBoundingClientRect still work? Does it already work?

We really need a svg specific test in svg/zoom/page. Can you come up with one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286876</commentid>
    <comment_count>22</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-09-29 08:00:18 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Good work Cosmin.
&gt; Note, that we&apos;ve never tested the combination of the zoom property on SVG elements at all. I wasn&apos;t even aware that it actually works.
&gt; 

&gt; It&apos;s definately non-standard for SVG - what happens if you manually zoom into your standalone SVG file - does getBoundingClientRect still work? Does it already work?

It wasn&apos;t working in the past, but it does works now with this patch :-)
I was referring to this when I mentioned the off-by-one errors that occur under arbitrary zooming.

&gt; We really need a svg specific test in svg/zoom/page. Can you come up with one?

I tried, but I couldn&apos;t. Could you please give me a few more hints?

The results of getBounding... do not show up refreshed until the browser window is explicitly reloaded. The same is happening when running svg/zoom/resources/testPageZoom.js: the pixel dump does show up zoomed, but the text output acts as if zooming did not happen. (It&apos;s harder to tell that now, after patching the source, since the coordinates do indeed stay the same; but even before, with the bug inside, testPageZoom.js alone was not sufficient to display the wrong coordinates after zooming.)

You can see this effect by loading the layout test from this patch, in an unpatched WebKit. Zoom it manually, and see that the updated (wrong) coordinates don&apos;t appear until you hit the reload button.

So I can&apos;t test this in DumpRT, unless I&apos;m able to do somehow trigger a page reload from JavaScript. But I don&apos;t know how (or if) I could do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291402</commentid>
    <comment_count>23</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-10-07 19:32:54 -0700</bug_when>
    <thetext>Thank you for showing me how to do zooming from JavaScript. That helped my problem... until I run into something else:

If I run the test multiple times, most of the time I&apos;m getting the expected results. Some times, unfortunately, I&apos;m getting off-by-one errors, other times some coordinates are off by a large margins (they seem to hold garbage values), and some other times those coordinates are plain zero.

Any idea how to resolve this flakiness in testing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291490</commentid>
    <comment_count>24</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-08 01:02:53 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Thank you for showing me how to do zooming from JavaScript. That helped my problem... until I run into something else:
&gt; 
&gt; If I run the test multiple times, most of the time I&apos;m getting the expected results. Some times, unfortunately, I&apos;m getting off-by-one errors, other times some coordinates are off by a large margins (they seem to hold garbage values), and some other times those coordinates are plain zero.
That&apos;s not good at all, you could valgrind it! It almost sounds like memory corruption...

&gt; 
&gt; Any idea how to resolve this flakiness in testing?
Yeah, find the underlying issue :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297818</commentid>
    <comment_count>25</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-10-21 21:51:26 -0700</bug_when>
    <thetext>I resolved the flakiness by replacing the call to &quot;../resources/testPageZoom.js&quot; with a direct call to window.eventSender.zoomPageIn(). It turns out that the asynchronous nature of testPageZoom.js caused inconsistent results.

On the other hand, the off-by-one errors still remain. I opened the bug 48110 to continue the work over there. The fix for that bug will include a layout test that checks getBoundingClientRect with zooming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301121</commentid>
    <comment_count>26</comment_count>
      <attachid>72199</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-10-28 09:53:11 -0700</bug_when>
    <thetext>Created attachment 72199
Zooming tests for getBoundingClientRect

At this point, I seem to have trouble solving the precision issue (in bug 48110) completely. I can fix some of the roundoff errors, but not all of them.
Fortunately, I now know enough (I think) to write the zooming tests that were initially requested by Niko. I did this by following Niko&apos;s testing pattern (setting window.postZoomCallback), and by adding the functions areArraysApproxEqual(), isResultApproxCorrect() and shouldBeApprox() to js-test-pre.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301805</commentid>
    <comment_count>27</comment_count>
      <attachid>72199</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-10-29 09:09:44 -0700</bug_when>
    <thetext>Comment on attachment 72199
Zooming tests for getBoundingClientRect

Setting flags to r- and cq-.
This will be addressed in bug 48640.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65517</attachid>
            <date>2010-08-25 19:35:31 -0700</date>
            <delta_ts>2010-08-31 22:15:15 -0700</delta_ts>
            <desc>Fix and layout test</desc>
            <filename>webkit.diff.submit</filename>
            <type>text/plain</type>
            <size>3899</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5YTExNDU1Li5hNTNmOGYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDgt
MjUgIENvc21pbiBUcnV0YSAgPGN0cnV0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IEJy
b2tlbiBmb3IgU1ZHIEVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MjgxNQorCisgICAgICAgIEFkZGVkIGEgdGVzdCBmb3IgZ2V0Qm91bmRp
bmdDbGllbnRSZWN0IGFwcGxpZWQgdG8gYW4gU1ZHIGVsZW1lbnQuCisKKyAgICAgICAgKiBzdmcv
ZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC54aHRtbDogQWRkZWQKKyAgICAgICAgKiBzdmcvZG9t
L2dldEJvdW5kaW5nQ2xpZW50UmVjdC1leHBlY3RlZC50eHQ6IEFkZGVkCisKIDIwMTAtMDgtMjQg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
VG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20vZ2V0Qm91bmRpbmdD
bGllbnRSZWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9kb20vZ2V0Qm91bmRpbmdD
bGllbnRSZWN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xYjUyM2FlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdCBj
aGVja3MgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCitQQVNTIHIubGVmdCBpcyAyMAorUEFTUyByLnRvcCBpcyAzMAorUEFTUyByLndpZHRoIGlz
IDQwCitQQVNTIHIuaGVpZ2h0IGlzIDUwCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL2dl
dEJvdW5kaW5nQ2xpZW50UmVjdC54aHRtbCBiL0xheW91dFRlc3RzL3N2Zy9kb20vZ2V0Qm91bmRp
bmdDbGllbnRSZWN0LnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5
OTBiNTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL2dldEJvdW5kaW5n
Q2xpZW50UmVjdC54aHRtbApAQCAtMCwwICsxLDMxIEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjA7IGJvcmRlcjowOyBwYWRkaW5nOjA7Ij4KKyAg
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxyZWN0IGlkPSJy
ZWN0IiB4PSIyMCIgeT0iMzAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1MCIgZmlsbD0iYmx1ZSIgLz4K
KyA8L3N2Zz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyBnZXRC
b3VuZGluZ0NsaWVudFJlY3QoKSIpOworCit2YXIgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZWN0IikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisKK3Nob3VsZEJlKCdyLmxlZnQnLCAn
MjAnKTsKK3Nob3VsZEJlKCdyLnRvcCcsICczMCcpOworc2hvdWxkQmUoJ3Iud2lkdGgnLCAnNDAn
KTsKK3Nob3VsZEJlKCdyLmhlaWdodCcsICc1MCcpOworCitkZWJ1ZygiIik7CitzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDhhZjIwMTIuLjQzMTgyY2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDgtMjUgIENvc21pbiBUcnV0
YSAgPGN0cnV0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IEJyb2tlbiBmb3IgU1ZHIEVs
ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MjgxNQorCisgICAgICAgIEFkZGVkIGEgdGVzdCBmb3IgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGFw
cGxpZWQgdG8gYW4gU1ZHIGVsZW1lbnQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZH
TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdNb2RlbE9iamVj
dC5oOgorICAgICAgICAoY2xhc3MgV2ViQ29yZTo6UmVuZGVyU1ZHT2JqZWN0TW9kZWwpOiBFeHRl
bmQgUmVuZGVyQm94IGluc3RlYWQgb2YgUmVuZGVyT2JqZWN0LgorCiAyMDEwLTA4LTI0ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkg
Q2hhbmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdNb2RlbE9iamVj
dC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5kZXgg
NWExOTc0OS4uYTY0Nzg3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
TW9kZWxPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmNwcApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJT
VkdNb2RlbE9iamVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZHU3R5bGVkRWxlbWVudCogbm9k
ZSkKLSAgICA6IFJlbmRlck9iamVjdChub2RlKQorICAgIDogUmVuZGVyQm94KG5vZGUpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0Lmgg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCmluZGV4IDM1YzRkYzMu
LjYwYmQ3MGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAt
MzMsNyArMzMsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykKIAotI2luY2x1ZGUgIlJlbmRlck9iamVj
dC5oIgorI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN1cHBvcnQu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7CiAKLWNsYXNzIFJlbmRlclNWR01vZGVs
T2JqZWN0IDogcHVibGljIFJlbmRlck9iamVjdCB7CitjbGFzcyBSZW5kZXJTVkdNb2RlbE9iamVj
dCA6IHB1YmxpYyBSZW5kZXJCb3ggewogcHVibGljOgogICAgIFJlbmRlclNWR01vZGVsT2JqZWN0
KFNWR1N0eWxlZEVsZW1lbnQqKTsKIAo=
</data>
<flag name="review"
          id="54305"
          type_id="1"
          status="-"
          setter="krit"
    />
    <flag name="commit-queue"
          id="54306"
          type_id="3"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66167</attachid>
            <date>2010-08-31 22:15:15 -0700</date>
            <delta_ts>2010-09-09 22:34:20 -0700</delta_ts>
            <desc>Fix and layout test, take 2</desc>
            <filename>webkit.diff.submit2</filename>
            <type>text/plain</type>
            <size>5007</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkZjk4NWM0Li40ZmNmNGU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDgt
MzEgIENvc21pbiBUcnV0YSAgPGN0cnV0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IEJy
b2tlbiBmb3IgU1ZHIEVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MjgxNQorCisgICAgICAgIEFkZGVkIGEgdGVzdCBmb3IgZ2V0Qm91bmRp
bmdDbGllbnRSZWN0IGFwcGxpZWQgdG8gYW4gU1ZHIGVsZW1lbnQuCisKKyAgICAgICAgKiBzdmcv
ZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC54aHRtbDogQWRkZWQKKyAgICAgICAgKiBzdmcvZG9t
L2dldEJvdW5kaW5nQ2xpZW50UmVjdC1leHBlY3RlZC50eHQ6IEFkZGVkCisKIDIwMTAtMDgtMzAg
IER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCB1cGRhdGluZyBDaHJvbWl1bSBleHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdmcvZG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ2ZWVmOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N2Zy9kb20vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE1IEBACitUaGlzIHRlc3QgY2hlY2tzIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyByLmxlZnQgaXMgODAKK1BBU1Mgci50
b3AgaXMgMzAKK1BBU1Mgci53aWR0aCBpcyAxNjAKK1BBU1Mgci5oZWlnaHQgaXMgNTAKK1BBU1Mg
ci5yaWdodCBpcyAyNDAKK1BBU1Mgci5ib3R0b20gaXMgODAKKworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N2Zy9kb20vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LnhodG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9nZXRCb3VuZGluZ0NsaWVudFJlY3QueGh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTMxZTUzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20v
Z2V0Qm91bmRpbmdDbGllbnRSZWN0LnhodG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIv
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJnaW46MDsgYm9yZGVyOjA7IHBhZGRp
bmc6MDsiPgorICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lv
bj0iMS4xIgorICAgICAgIHdpZHRoPSIyMDBweCIgaGVpZ2h0PSIxMDBweCIgdmlld0JveD0iMCAw
IDUwIDEwMCIKKyAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj4KKyAgICA8cmVjdCBp
ZD0icmVjdCIgeD0iMjAiIHk9IjMwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTAiIGZpbGw9ImJsdWUi
IC8+CisgPC9zdmc+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3Mg
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkiKTsKKwordmFyIHIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVjdCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworCitzaG91bGRCZSgnci5sZWZ0
JywgJzgwJyk7CitzaG91bGRCZSgnci50b3AnLCAnMzAnKTsKK3Nob3VsZEJlKCdyLndpZHRoJywg
JzE2MCcpOworc2hvdWxkQmUoJ3IuaGVpZ2h0JywgJzUwJyk7CitzaG91bGRCZSgnci5yaWdodCcs
ICcyNDAnKTsKK3Nob3VsZEJlKCdyLmJvdHRvbScsICc4MCcpOworCitkZWJ1ZygiIik7CitzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDRjNjhkZWYuLjMxYzcyMDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDgtMzEgIENvc21p
biBUcnV0YSAgPGN0cnV0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IEJyb2tlbiBmb3Ig
U1ZHIEVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MjgxNQorCisgICAgICAgIFVzZSBnZXRCQm94IHRvIHJldHJpZXZlIHRoZSBib3VuZGlu
ZyByZWN0YW5nbGUgZm9yIFNWRyBlbGVtZW50cy4KKworICAgICAgICBUZXN0OiBzdmcvZG9tL2dl
dEJvdW5kaW5nQ2xpZW50UmVjdC54aHRtbAorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgor
ICAgICAgICAoRWxlbWVudDo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0KToKKwogMjAxMC0wOC0zMCAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVpbGQg
Zml4LiBBZGQgdGhlIG5ldyBmaWxlYXBpIGRpcmVjdG9yeSB0byB0aGUgSURMIHZwYXRoLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCAzOWJmMzkzLi5iYTVlZjAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2lu
Y2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
IlJlbmRlcldpZGdldC5oIgorI2luY2x1ZGUgIlNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1
ZGUgIlhNTE5hbWVzLmgiCkBAIC00NzYsMTIgKzQ3NywyMiBAQCBQYXNzUmVmUHRyPENsaWVudFJl
Y3RMaXN0PiBFbGVtZW50OjpnZXRDbGllbnRSZWN0cygpIGNvbnN0CiBQYXNzUmVmUHRyPENsaWVu
dFJlY3Q+IEVsZW1lbnQ6OmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIGNvbnN0CiB7CiAgICAgZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0gICAgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlckJveE1vZGVsT2JqZWN0ID0gdGhpcy0+cmVuZGVyQm94
TW9kZWxPYmplY3QoKTsKLSAgICBpZiAoIXJlbmRlckJveE1vZGVsT2JqZWN0KQotICAgICAgICBy
ZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKCk7CiAKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFk
czsKLSAgICByZW5kZXJCb3hNb2RlbE9iamVjdC0+YWJzb2x1dGVRdWFkcyhxdWFkcyk7CisgICAg
aWYgKGlzU1ZHRWxlbWVudCgpKSB7CisgICAgICAgIC8vIEdldCB0aGUgYm91bmRpbmcgcmVjdGFu
Z2xlIGZyb20gdGhlIFNWRyBtb2RlbC4KKyAgICAgICAgY29uc3QgU1ZHRWxlbWVudCogc3ZnRWxl
bWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFNWR0VsZW1lbnQqPih0aGlzKTsKKyAgICAgICAgaWYg
KHN2Z0VsZW1lbnQtPmlzU3R5bGVkTG9jYXRhYmxlKCkpIHsKKyAgICAgICAgICAgIGlmIChyZW5k
ZXJlcigpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBsb2NhbFJlY3QgPSBz
dGF0aWNfY2FzdDxjb25zdCBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4oc3ZnRWxlbWVudCkt
PmdldEJCb3goKTsKKyAgICAgICAgICAgICAgICBxdWFkcy5hcHBlbmQocmVuZGVyZXIoKS0+bG9j
YWxUb0Fic29sdXRlUXVhZChsb2NhbFJlY3QpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEdldCB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIGZyb20g
dGhlIGJveCBtb2RlbC4KKyAgICAgICAgaWYgKHJlbmRlckJveE1vZGVsT2JqZWN0KCkpCisgICAg
ICAgICAgICByZW5kZXJCb3hNb2RlbE9iamVjdCgpLT5hYnNvbHV0ZVF1YWRzKHF1YWRzKTsKKyAg
ICB9CiAKICAgICBpZiAocXVhZHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gQ2xpZW50UmVj
dDo6Y3JlYXRlKCk7CkBAIC00OTUsNyArNTA2LDggQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBF
bGVtZW50OjpnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBjb25zdAogICAgICAgICByZXN1bHQubW92
ZSgtdmlzaWJsZUNvbnRlbnRSZWN0LngoKSwgLXZpc2libGVDb250ZW50UmVjdC55KCkpOwogICAg
IH0KIAotICAgIGFkanVzdEludFJlY3RGb3JBYnNvbHV0ZVpvb20ocmVzdWx0LCByZW5kZXJCb3hN
b2RlbE9iamVjdCk7CisgICAgaWYgKHJlbmRlckJveE1vZGVsT2JqZWN0KCkpCisgICAgICAgIGFk
anVzdEludFJlY3RGb3JBYnNvbHV0ZVpvb20ocmVzdWx0LCByZW5kZXJCb3hNb2RlbE9iamVjdCgp
KTsKIAogICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUocmVzdWx0KTsKIH0K
</data>
<flag name="review"
          id="55099"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67155</attachid>
            <date>2010-09-09 22:34:20 -0700</date>
            <delta_ts>2010-09-10 17:47:56 -0700</delta_ts>
            <desc>Fix and layout test, take 3</desc>
            <filename>webkit.diff.submit3</filename>
            <type>text/plain</type>
            <size>7006</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZDFlOTI2Li41MGVmOWUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDkt
MDkgIENvc21pbiBUcnV0YSAgPGN0cnV0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IEJy
b2tlbiBmb3IgU1ZHIEVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MjgxNQorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciBnZXRCb3VuZGlu
Z0NsaWVudFJlY3QgYXBwbGllZCB0byBTVkcgZWxlbWVudHMuCisKKyAgICAgICAgKiBzdmcvY3Vz
dG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC54aHRtbDogQWRkZWQKKyAgICAgICAgKiBzdmcvY3Vz
dG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC1leHBlY3RlZC50eHQ6IEFkZGVkCisKIDIwMTAtMDkt
MDkgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjY3MTQ1LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1
c3RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNWE3YjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzOCBAQAorVGhpcyB0ZXN0IGNoZWNrcyBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBvbiBh
IHJlY3RhbmdsZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0NoZWNraW5nIGEgcmVj
dGFuZ2xlIG9mIGFic29sdXRlIHNpemUgYXQgYWJzb2x1dGUgY29vcmRpbmF0ZXM6CitQQVNTIHIx
LmxlZnQgaXMgMjAKK1BBU1MgcjEudG9wIGlzIDMwCitQQVNTIHIxLndpZHRoIGlzIDQwCitQQVNT
IHIxLmhlaWdodCBpcyA1MAorUEFTUyByMS5yaWdodCBpcyA2MAorUEFTUyByMS5ib3R0b20gaXMg
ODAKKworQ2hlY2tpbmcgYSByZXNpemVkIHJlY3RhbmdsZSBhdCByZWxhdGl2ZSBjb29yZGluYXRl
czoKK1BBU1MgcjIubGVmdCBpcyAxODAKK1BBU1MgcjIudG9wIGlzIDE1CitQQVNTIHIyLndpZHRo
IGlzIDE2MAorUEFTUyByMi5oZWlnaHQgaXMgMjUKK1BBU1MgcjIucmlnaHQgaXMgMzQwCitQQVNT
IHIyLmJvdHRvbSBpcyA0MAorCitDaGVja2luZyByZWN0YW5nbGVzIHdpdGggb3ZlcmZsb3c6CitQ
QVNTIHIzLmxlZnQgaXMgMzAwCitQQVNTIHIzLnRvcCBpcyAwCitQQVNTIHIzLndpZHRoIGlzIDIx
MAorUEFTUyByMy5oZWlnaHQgaXMgNTAKK1BBU1MgcjMucmlnaHQgaXMgNTEwCitQQVNTIHIzLmJv
dHRvbSBpcyA1MAorUEFTUyByNC5sZWZ0IGlzIDMwMAorUEFTUyByNC50b3AgaXMgNTAKK1BBU1Mg
cjQud2lkdGggaXMgMjEwCitQQVNTIHI0LmhlaWdodCBpcyA2MAorUEFTUyByNC5yaWdodCBpcyA1
MTAKK1BBU1MgcjQuYm90dG9tIGlzIDExMAorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3Rv
bS9nZXRCb3VuZGluZ0NsaWVudFJlY3QueGh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2dl
dEJvdW5kaW5nQ2xpZW50UmVjdC54aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4yMDE3NWUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9n
ZXRCb3VuZGluZ0NsaWVudFJlY3QueGh0bWwKQEAgLTAsMCArMSw3MyBAQAorPGh0bWwgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgc3R5bGU9Im1hcmdpbjowOyBib3JkZXI6MDsgcGFkZGlu
ZzowOyI+CisKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9u
PSIxLjEiCisgICAgIHdpZHRoPSIxMDBweCIgaGVpZ2h0PSIxMDBweCI+CisgIDxyZWN0IGlkPSJy
MSIgeD0iMjAiIHk9IjMwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTAiIGZpbGw9ImJsdWUiIC8+Cis8
L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4x
IgorICAgICB3aWR0aD0iMjAwcHgiIGhlaWdodD0iMTAwcHgiIHZpZXdCb3g9IjAgMCA1MCAyMDAi
CisgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPgorICA8cmVjdCBpZD0icjIiIHg9IjIw
IiB5PSIzMCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjUwIiBmaWxsPSJncmVlbiIgLz4KKzwvc3ZnPjxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiCisgICAg
IHdpZHRoPSIyMDBweCIgaGVpZ2h0PSIxMDBweCI+CisgIDxzdmcgeD0iMCIgeT0iMCIgd2lkdGg9
IjEwMHB4IiBoZWlnaHQ9IjEwMHB4Ij4KKyAgICA8cmVjdCBpZD0icjMiIHg9IjAiIHk9IjAiIHdp
ZHRoPSIyMTBweCIgaGVpZ2h0PSI1MHB4IiBmaWxsPSJ5ZWxsb3ciIG92ZXJmbG93PSJoaWRkZW4i
IC8+CisgICAgPHJlY3QgaWQ9InI0IiB4PSIwIiB5PSI1MHB4IiB3aWR0aD0iMjEwcHgiIGhlaWdo
dD0iNjBweCIgZmlsbD0ib3JhbmdlIiBvdmVyZmxvdz0idmlzaWJsZSIgLz4KKyAgPC9zdmc+Cis8
L3N2Zz4KKworPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIGdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpIG9uIGEgcmVjdGFuZ2xlIik7CisKK2RlYnVnKCJDaGVja2luZyBh
IHJlY3RhbmdsZSBvZiBhYnNvbHV0ZSBzaXplIGF0IGFic29sdXRlIGNvb3JkaW5hdGVzOiIpOwor
dmFyIHIxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInIxIikuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCk7CitzaG91bGRCZSgncjEubGVmdCcsICcyMCcpOworc2hvdWxkQmUoJ3IxLnRvcCcsICcz
MCcpOworc2hvdWxkQmUoJ3IxLndpZHRoJywgJzQwJyk7CitzaG91bGRCZSgncjEuaGVpZ2h0Jywg
JzUwJyk7CitzaG91bGRCZSgncjEucmlnaHQnLCAnNjAnKTsKK3Nob3VsZEJlKCdyMS5ib3R0b20n
LCAnODAnKTsKK2RlYnVnKCIiKTsKKworZGVidWcoIkNoZWNraW5nIGEgcmVzaXplZCByZWN0YW5n
bGUgYXQgcmVsYXRpdmUgY29vcmRpbmF0ZXM6Iik7Cit2YXIgcjIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicjIiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKK3Nob3VsZEJlKCdyMi5sZWZ0
JywgJzE4MCcpOworc2hvdWxkQmUoJ3IyLnRvcCcsICcxNScpOworc2hvdWxkQmUoJ3IyLndpZHRo
JywgJzE2MCcpOworc2hvdWxkQmUoJ3IyLmhlaWdodCcsICcyNScpOworc2hvdWxkQmUoJ3IyLnJp
Z2h0JywgJzM0MCcpOworc2hvdWxkQmUoJ3IyLmJvdHRvbScsICc0MCcpOworZGVidWcoIiIpOwor
CitkZWJ1ZygiQ2hlY2tpbmcgcmVjdGFuZ2xlcyB3aXRoIG92ZXJmbG93OiIpOwordmFyIHIzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInIzIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Citz
aG91bGRCZSgncjMubGVmdCcsICczMDAnKTsKK3Nob3VsZEJlKCdyMy50b3AnLCAnMCcpOworc2hv
dWxkQmUoJ3IzLndpZHRoJywgJzIxMCcpOworc2hvdWxkQmUoJ3IzLmhlaWdodCcsICc1MCcpOwor
c2hvdWxkQmUoJ3IzLnJpZ2h0JywgJzUxMCcpOworc2hvdWxkQmUoJ3IzLmJvdHRvbScsICc1MCcp
OwordmFyIHI0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInI0IikuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7CitzaG91bGRCZSgncjQubGVmdCcsICczMDAnKTsKK3Nob3VsZEJlKCdyNC50b3An
LCAnNTAnKTsKK3Nob3VsZEJlKCdyNC53aWR0aCcsICcyMTAnKTsKK3Nob3VsZEJlKCdyNC5oZWln
aHQnLCAnNjAnKTsKK3Nob3VsZEJlKCdyNC5yaWdodCcsICc1MTAnKTsKK3Nob3VsZEJlKCdyNC5i
b3R0b20nLCAnMTEwJyk7CitkZWJ1ZygiIik7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTI3NGQxNS4uNjQwNjNj
OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxMC0wOS0wOSAgQ29zbWluIFRydXRhICA8Y3RydXRhQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBnZXRCb3VuZGluZ0NsaWVudFJlY3QgQnJva2VuIGZvciBTVkcgRWxlbWVudHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODE1CisKKyAgICAgICAg
VXNlIGdldEJCb3ggdG8gcmV0cmlldmUgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBmb3IgU1ZHIGVs
ZW1lbnRzLgorCisgICAgICAgIFRlc3Q6IHN2Zy9kb20vZ2V0Qm91bmRpbmdDbGllbnRSZWN0Lnho
dG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChFbGVtZW50OjpnZXRC
b3VuZGluZ0NsaWVudFJlY3QpOgorCiAyMDEwLTA5LTA5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2NzE0NS4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKaW5kZXggNmZmNDdlMC4uYzEwNDhjOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJSZW5kZXJXaWRnZXQuaCIKKyNpbmNsdWRlICJTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJYTUxOYW1lcy5oIgpAQCAtNDc2LDEyICs0NzcsMjIgQEAgUGFzc1JlZlB0cjxDbGll
bnRSZWN0TGlzdD4gRWxlbWVudDo6Z2V0Q2xpZW50UmVjdHMoKSBjb25zdAogUGFzc1JlZlB0cjxD
bGllbnRSZWN0PiBFbGVtZW50OjpnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBjb25zdAogewogICAg
IGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotICAg
IFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJCb3hNb2RlbE9iamVjdCA9IHRoaXMtPnJlbmRl
ckJveE1vZGVsT2JqZWN0KCk7Ci0gICAgaWYgKCFyZW5kZXJCb3hNb2RlbE9iamVjdCkKLSAgICAg
ICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZSgpOwogCiAgICAgVmVjdG9yPEZsb2F0UXVhZD4g
cXVhZHM7Ci0gICAgcmVuZGVyQm94TW9kZWxPYmplY3QtPmFic29sdXRlUXVhZHMocXVhZHMpOwor
ICAgIGlmIChpc1NWR0VsZW1lbnQoKSkgeworICAgICAgICAvLyBHZXQgdGhlIGJvdW5kaW5nIHJl
Y3RhbmdsZSBmcm9tIHRoZSBTVkcgbW9kZWwuCisgICAgICAgIGNvbnN0IFNWR0VsZW1lbnQqIHN2
Z0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBTVkdFbGVtZW50Kj4odGhpcyk7CisgICAgICAg
IGlmIChzdmdFbGVtZW50LT5pc1N0eWxlZExvY2F0YWJsZSgpKSB7CisgICAgICAgICAgICBpZiAo
cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgbG9jYWxSZWN0
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCo+KHN2Z0VsZW1l
bnQpLT5nZXRCQm94KCk7CisgICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kKHJlbmRlcmVyKCkt
PmxvY2FsVG9BYnNvbHV0ZVF1YWQobG9jYWxSZWN0KSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBHZXQgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBm
cm9tIHRoZSBib3ggbW9kZWwuCisgICAgICAgIGlmIChyZW5kZXJCb3hNb2RlbE9iamVjdCgpKQor
ICAgICAgICAgICAgcmVuZGVyQm94TW9kZWxPYmplY3QoKS0+YWJzb2x1dGVRdWFkcyhxdWFkcyk7
CisgICAgfQogCiAgICAgaWYgKHF1YWRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIENsaWVu
dFJlY3Q6OmNyZWF0ZSgpOwpAQCAtNDk1LDcgKzUwNiw4IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVj
dD4gRWxlbWVudDo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgY29uc3QKICAgICAgICAgcmVzdWx0
Lm1vdmUoLXZpc2libGVDb250ZW50UmVjdC54KCksIC12aXNpYmxlQ29udGVudFJlY3QueSgpKTsK
ICAgICB9CiAKLSAgICBhZGp1c3RJbnRSZWN0Rm9yQWJzb2x1dGVab29tKHJlc3VsdCwgcmVuZGVy
Qm94TW9kZWxPYmplY3QpOworICAgIGlmIChyZW5kZXJCb3hNb2RlbE9iamVjdCgpKQorICAgICAg
ICBhZGp1c3RJbnRSZWN0Rm9yQWJzb2x1dGVab29tKHJlc3VsdCwgcmVuZGVyQm94TW9kZWxPYmpl
Y3QoKSk7CiAKICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlc3VsdCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>67181</attachid>
            <date>2010-09-10 07:52:58 -0700</date>
            <delta_ts>2010-09-22 14:45:58 -0700</delta_ts>
            <desc>Test case: getBoundingClientRect does not react to the scripted zooming</desc>
            <filename>zoom-getBoundingClientRect-dom.xhtml</filename>
            <type>application/xhtml+xml</type>
            <size>1045</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgo8aGVhZD4KPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgo8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5IHN0eWxlPSJtYXJnaW46MDsgYm9y
ZGVyOjA7IHBhZGRpbmc6MDsiPgoKPGRpdiBzdHlsZT0nd2lkdGg6MTIwcHg7IGhlaWdodDoxMjBw
eDsgYm9yZGVyOjEwcHggc29saWQgcmVkOyBtYXJnaW46MTBweCc+CiAgPGRpdiBpZD0iaW5uZXJS
ZWN0IiBzdHlsZT0id2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6Ymx1
ZTsgbWFyZ2luOjEwcHg7Ij48L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+CjxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgoKPHNjcmlwdD4KCmRlc2NyaXB0aW9uKCJUaGlz
IHRlc3QgY2hlY2tzIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIG9uIGEgcmVjdGFuZ2xlIik7Cgp2
YXIgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbm5lclJlY3QiKS5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKTsKc2hvdWxkQmUoJ3IubGVmdCcsICczMCcpOwpzaG91bGRCZSgnci50b3AnLCAn
MzAnKTsKc2hvdWxkQmUoJ3Iud2lkdGgnLCAnMTAwJyk7CnNob3VsZEJlKCdyLmhlaWdodCcsICcx
MDAnKTsKc2hvdWxkQmUoJ3IucmlnaHQnLCAnMTMwJyk7CnNob3VsZEJlKCdyLmJvdHRvbScsICcx
MzAnKTsKZGVidWcoIiIpOwoKPC9zY3JpcHQ+Cgo8c2NyaXB0PnZhciB6b29tQ291bnQgPSAyOzwv
c2NyaXB0Pgo8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RQYWdlWm9vbS5qcyI+PC9zY3Jp
cHQ+Cgo8c2NyaXB0PnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7PC9zY3JpcHQ+CjxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgoKPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>67182</attachid>
            <date>2010-09-10 07:55:58 -0700</date>
            <delta_ts>2010-09-22 14:45:58 -0700</delta_ts>
            <desc>67181: Test case: getBoundingClientRect does not react to the scripted zooming, Part 2</desc>
            <filename>zoom-getBoundingClientRect-svg.xhtml</filename>
            <type>application/xhtml+xml</type>
            <size>1636</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgo8aGVhZD4KPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIvPgo8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5IHN0eWxlPSJtYXJnaW46MDsgYm9y
ZGVyOjA7IHBhZGRpbmc6MDsiPgoKPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHZlcnNpb249IjEuMSIKICAgICB3aWR0aD0iMTAwcHgiIGhlaWdodD0iMTAwcHgiPgogIDxy
ZWN0IGlkPSJyZWN0MSIgeD0iMjAiIHk9IjMwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTAiIGZpbGw9
ImJsdWUiIC8+Cjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2
ZXJzaW9uPSIxLjEiCiAgICAgd2lkdGg9IjIwMHB4IiBoZWlnaHQ9IjEwMHB4IiB2aWV3Qm94PSIw
IDAgNTAgMjAwIgogICAgIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPgogIDxyZWN0IGlkPSJy
ZWN0MiIgeD0iMjAiIHk9IjMwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTAiIGZpbGw9ImdyZWVuIiAv
Pgo8L3N2Zz4KCjxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cgo8c2NyaXB0PgoKZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCkgb24gYSByZWN0YW5nbGUiKTsKCmRlYnVnKCJDaGVja2luZyBhIHJlY3Rh
bmdsZSBvZiBhYnNvbHV0ZSBzaXplIGF0IGFic29sdXRlIGNvb3JkaW5hdGVzOiIpOwp2YXIgcjEg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVjdDEiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KTsKc2hvdWxkQmUoJ3IxLmxlZnQnLCAnMjAnKTsKc2hvdWxkQmUoJ3IxLnRvcCcsICczMCcpOwpz
aG91bGRCZSgncjEud2lkdGgnLCAnNDAnKTsKc2hvdWxkQmUoJ3IxLmhlaWdodCcsICc1MCcpOwpz
aG91bGRCZSgncjEucmlnaHQnLCAnNjAnKTsKc2hvdWxkQmUoJ3IxLmJvdHRvbScsICc4MCcpOwpk
ZWJ1ZygiIik7CgpkZWJ1ZygiQ2hlY2tpbmcgYSByZXNpemVkIHJlY3RhbmdsZSBhdCByZWxhdGl2
ZSBjb29yZGluYXRlczoiKTsKdmFyIHIyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlY3Qy
IikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CnNob3VsZEJlKCdyMi5sZWZ0JywgJzE4MCcpOwpz
aG91bGRCZSgncjIudG9wJywgJzE1Jyk7CnNob3VsZEJlKCdyMi53aWR0aCcsICcxNjAnKTsKc2hv
dWxkQmUoJ3IyLmhlaWdodCcsICcyNScpOwpzaG91bGRCZSgncjIucmlnaHQnLCAnMzQwJyk7CnNo
b3VsZEJlKCdyMi5ib3R0b20nLCAnNDAnKTsKZGVidWcoIiIpOwoKPC9zY3JpcHQ+Cgo8c2NyaXB0
PnZhciB6b29tQ291bnQgPSAyOzwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rl
c3RQYWdlWm9vbS5qcyI+PC9zY3JpcHQ+Cgo8c2NyaXB0PnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgoKPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>67185</attachid>
            <date>2010-09-10 08:14:35 -0700</date>
            <delta_ts>2010-09-10 08:14:35 -0700</delta_ts>
            <desc>Test case: getBoundingClientRect not working on &lt;text&gt;</desc>
            <filename>getBoundingClientRect.svg</filename>
            <type>image/svg+xml</type>
            <size>1347</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIiBvbmxvYWQ9ImluaXQoKSI+CiAgPGc+CiAgICA8dGV4dCB4PSI1MCIgeT0iNTAiPkZh
aWxlZDwvdGV4dD4KICAgIDxpbWFnZSB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIgdmlzaWJpbGl0eT0iaGlkZGVuIiB4bGluazpocmVmPSJyZXNvdXJjZXMvbWFnbmlmeS5wbmci
IC8+CiAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlzaWJp
bGl0eT0iaGlkZGVuIiBmaWxsPSJub25lIiBzdHJva2U9ImJsdWUiIC8+CiAgPC9nPgogIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICA8IVtDREFUQVsKICAgIGZ1bmN0aW9uIGluaXQo
KQogICAgewogICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICAgICB2YXIgZyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiwgImciKVswXTsKICAgICAgICB2YXIgdHh0ID0gZy5maXJzdEVsZW1lbnRDaGlsZDsKICAgICAg
ICB2YXIgdHh0VGV4dCA9IHR4dC5maXJzdENoaWxkOwogICAgICAgIHZhciBpbWcgPSB0eHQubmV4
dEVsZW1lbnRTaWJsaW5nOwogICAgICAgIHZhciByZWN0ID0gaW1nLm5leHRFbGVtZW50U2libGlu
ZzsKICAgICAgICBpZiAoZy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA+IDAgJiYgZy5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgPiAwKSB7CiAgICAgICAgICAgIGlmICh0eHQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwICYmIHR4dC5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKS5oZWlnaHQgPiAwKSB7CiAgICAgICAgICAgICAgICBpZiAoaW1nLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpLndpZHRoID4gMCAmJiBpbWcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVp
Z2h0ID4gMCkgewogICAgICAgICAgICAgICAgICAgIGlmIChyZWN0LmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpLndpZHRoID4gMCAmJiByZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCA+
IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHh0VGV4dC5kYXRhID0gIlBhc3NlZCI7CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgfQogIF1dPgogIDwvc2NyaXB0Pgo8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>68445</attachid>
            <date>2010-09-22 14:45:58 -0700</date>
            <delta_ts>2010-09-22 14:45:58 -0700</delta_ts>
            <desc>Test case: getBoundingClientRect does not work correctly with zooming</desc>
            <filename>getBoundingClientRect-zoom.xhtml</filename>
            <type>application/xhtml+xml</type>
            <size>1522</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgo8aGVhZD4KPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgogICAgI3N2ZzEgeyB6b29tOjIwMCU7
IH0KICAgICNzdmcyIHsgem9vbTo1MCU7IH0KPC9zdHlsZT4KPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KPC9oZWFkPgo8Ym9keT4K
CjxzdmcgaWQ9InN2ZzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgICB3
aWR0aD0iMTAwcHgiIGhlaWdodD0iNTBweCIgdmlld0JveD0iMCAwIDEwMCAxMDAiCiAgICAgcHJl
c2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPHJlY3QgaWQ9InIxIiB4PSIwIiB5PSIwIiB3aWR0
aD0iMTAwcHgiIGhlaWdodD0iMTAwcHgiIGZpbGw9ImJsdWUiIC8+Cjwvc3ZnPgoKPHN2ZyBpZD0i
c3ZnMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICAgIHdpZHRoPSIyMDBw
eCIgaGVpZ2h0PSIxMDBweCIgdmlld0JveD0iMCAwIDEwMCAxMDAiCiAgICAgcHJlc2VydmVBc3Bl
Y3RSYXRpbz0ibm9uZSI+CiAgPHJlY3QgaWQ9InIyIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwcHgi
IGhlaWdodD0iMTAwcHgiIGZpbGw9ImdyZWVuIiAvPgo8L3N2Zz4KCjxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cgo8c2NyaXB0PgoKZGVzY3JpcHRp
b24oIlRoaXMgdGVzdCBjaGVja3MgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgb24gem9vbWVkIFNW
RyByZWN0YW5nbGVzLiIpOwoKdmFyIHN2ZzEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Zn
MSIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwp2YXIgcjEgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicjEiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKc2hvdWxkQmUoJ3N2ZzEud2lkdGgn
LCAnMTAwJyk7CnNob3VsZEJlKCdzdmcxLmhlaWdodCcsICc1MCcpOwpzaG91bGRCZSgncjEud2lk
dGgnLCAnMTAwJyk7CnNob3VsZEJlKCdyMS5oZWlnaHQnLCAnNTAnKTsKZGVidWcoIiIpOwoKdmFy
IHN2ZzIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3ZnMiIpLmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpOwp2YXIgcjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicjIiKS5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKTsKc2hvdWxkQmUoJ3N2ZzIud2lkdGgnLCAnMjAwJyk7CnNob3VsZEJlKCdz
dmcyLmhlaWdodCcsICcxMDAnKTsKc2hvdWxkQmUoJ3IyLndpZHRoJywgJzIwMCcpOwpzaG91bGRC
ZSgncjIuaGVpZ2h0JywgJzEwMCcpOwpkZWJ1ZygiIik7CgpzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwoKPC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgoKPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69153</attachid>
            <date>2010-09-28 19:12:11 -0700</date>
            <delta_ts>2010-10-21 21:52:12 -0700</delta_ts>
            <desc>Fix and layout test for zoomed elements</desc>
            <filename>webkit.diff.submit4</filename>
            <type>text/plain</type>
            <size>6329</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2ZDM0YjNhLi5mNDBkMmI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDkt
MjggIENvc21pbiBUcnV0YSAgPGN0cnV0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IEJy
b2tlbiBmb3IgU1ZHIEVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MjgxNQorCisgICAgICAgIEFkZGVkIGNvb3JkaW5hdGUgY2hlY2tzIG9u
IHpvb21lZCBYSFRNTCBhbmQgU1ZHIGVsZW1lbnRzLCB1c2luZyBnZXRCb3VuZGluZ0NsaWVudFJl
Y3QuCisKKyAgICAgICAgKiBjc3MzL3pvb20tY29vcmRzLnhodG1sOiBBZGRlZAorICAgICAgICAq
IGNzczMvem9vbS1jb29yZHMtZXhwZWN0ZWQudHh0OiBBZGRlZAorCiAyMDEwLTA5LTI4ICBTdGVw
aGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQ7IHVwZGF0ZSB0ZXN0IGV4cGVjdGF0aW9ucy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nz
czMvem9vbS1jb29yZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy96b29tLWNvb3Jk
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWExYTkz
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvem9vbS1jb29yZHMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNDggQEAKK1RoaXMgdGVzdCBjaGVja3MgZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCkgb24gem9vbWVkIEhUTUwgYW5kIFNWRyByZWN0YW5nbGVzCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworQ2hlY2tpbmcgSFRNTCAoZGl2KSByZWN0YW5nbGVzOgorUEFTUyBk
aXYxLmxlZnQgaXMgMAorUEFTUyBkaXYxLnRvcCBpcyAwCitQQVNTIGRpdjEud2lkdGggaXMgMTAw
CitQQVNTIGRpdjEuaGVpZ2h0IGlzIDUwCitQQVNTIGRpdjEucmlnaHQgaXMgMTAwCitQQVNTIGRp
djEuYm90dG9tIGlzIDUwCitQQVNTIGRpdjIubGVmdCBpcyAwCitQQVNTIGRpdjIudG9wIGlzIDIw
MAorUEFTUyBkaXYyLndpZHRoIGlzIDIwMAorUEFTUyBkaXYyLmhlaWdodCBpcyAxMDAKK1BBU1Mg
ZGl2Mi5yaWdodCBpcyAyMDAKK1BBU1MgZGl2Mi5ib3R0b20gaXMgMzAwCisKK0NoZWNraW5nIFNW
RyAocmVjdCkgcmVjdGFuZ2xlczoKK1BBU1Mgc3ZnMS5sZWZ0IGlzIDAKK1BBU1MgcmVjdDEubGVm
dCBpcyAwCitQQVNTIHN2ZzEudG9wIGlzIDc1CitQQVNTIHJlY3QxLnRvcCBpcyA3NQorUEFTUyBz
dmcxLndpZHRoIGlzIDEwMAorUEFTUyByZWN0MS53aWR0aCBpcyAxMDAKK1BBU1Mgc3ZnMS5oZWln
aHQgaXMgNTAKK1BBU1MgcmVjdDEuaGVpZ2h0IGlzIDUwCitQQVNTIHN2ZzEucmlnaHQgaXMgMTAw
CitQQVNTIHJlY3QxLnJpZ2h0IGlzIDEwMAorUEFTUyBzdmcxLmJvdHRvbSBpcyAxMjUKK1BBU1Mg
cmVjdDEuYm90dG9tIGlzIDEyNQorUEFTUyBzdmcyLmxlZnQgaXMgNDAwCitQQVNTIHJlY3QyLmxl
ZnQgaXMgNDAwCitQQVNTIHN2ZzIudG9wIGlzIDQwMAorUEFTUyByZWN0Mi50b3AgaXMgNDAwCitQ
QVNTIHN2ZzIud2lkdGggaXMgMjAwCitQQVNTIHJlY3QyLndpZHRoIGlzIDIwMAorUEFTUyBzdmcy
LmhlaWdodCBpcyAxMDAKK1BBU1MgcmVjdDIuaGVpZ2h0IGlzIDEwMAorUEFTUyBzdmcyLnJpZ2h0
IGlzIDYwMAorUEFTUyByZWN0Mi5yaWdodCBpcyA2MDAKK1BBU1Mgc3ZnMi5ib3R0b20gaXMgNTAw
CitQQVNTIHJlY3QyLmJvdHRvbSBpcyA1MDAKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvem9v
bS1jb29yZHMueGh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3pvb20tY29vcmRzLnhodG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMGZhMzIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9jc3MzL3pvb20tY29vcmRzLnhodG1sCkBAIC0wLDAgKzEsODYgQEAKKzxo
dG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICBib2R5IHsgbWFyZ2luOjBweDsg
Ym9yZGVyOjBweDsgcGFkZGluZzowcHg7IH0KKyAgICAjZGl2MSwgI3N2ZzEgeyB6b29tOjIwMCU7
IH0KKyAgICAjZGl2MiwgI3N2ZzIgeyB6b29tOjUwJTsgfQorPC9zdHlsZT4KKzxzY3JpcHQgc3Jj
PSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKworPGRpdiBpZD0iZGl2MSIgc3R5bGU9IndpZHRoOjEwMHB4O2hlaWdodDo1MHB4
O2JhY2tncm91bmQtY29sb3I6Ymx1ZTsiPjwvZGl2PgorPGRpdiBpZD0iZGl2MiIgc3R5bGU9Indp
ZHRoOjIwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuOyI+PC9kaXY+Cis8
c3ZnIGlkPSJzdmcxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCisgICAgIHdp
ZHRoPSIxMDBweCIgaGVpZ2h0PSI1MHB4IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIKKyAgICAgcHJl
c2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CisgIDxyZWN0IGlkPSJyZWN0MSIgeD0iMCIgeT0iMCIg
d2lkdGg9IjEwMHB4IiBoZWlnaHQ9IjEwMHB4IiBmaWxsPSJ5ZWxsb3ciIC8+Cis8L3N2Zz48c3Zn
IGlkPSJzdmcyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCisgICAgIHdpZHRo
PSIyMDBweCIgaGVpZ2h0PSIxMDBweCIgdmlld0JveD0iMCAwIDEwMCAxMDAiCisgICAgIHByZXNl
cnZlQXNwZWN0UmF0aW89Im5vbmUiPgorICA8cmVjdCBpZD0icmVjdDIiIHg9IjAiIHk9IjAiIHdp
ZHRoPSIxMDBweCIgaGVpZ2h0PSIxMDBweCIgZmlsbD0ib3JhbmdlIiAvPgorPC9zdmc+CisKKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8
c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyBnZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKSBvbiB6b29tZWQgSFRNTCBhbmQgU1ZHIHJlY3RhbmdsZXMiKTsKKworZGVidWcoIkNo
ZWNraW5nIEhUTUwgKGRpdikgcmVjdGFuZ2xlczoiKTsKK3ZhciBkaXYxID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImRpdjEiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKK3Nob3VsZEJlKCdk
aXYxLmxlZnQnLCAnMCcpOworc2hvdWxkQmUoJ2RpdjEudG9wJywgJzAnKTsKK3Nob3VsZEJlKCdk
aXYxLndpZHRoJywgJzEwMCcpOworc2hvdWxkQmUoJ2RpdjEuaGVpZ2h0JywgJzUwJyk7CitzaG91
bGRCZSgnZGl2MS5yaWdodCcsICcxMDAnKTsKK3Nob3VsZEJlKCdkaXYxLmJvdHRvbScsICc1MCcp
OwordmFyIGRpdjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2MiIpLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpOworc2hvdWxkQmUoJ2RpdjIubGVmdCcsICcwJyk7CitzaG91bGRCZSgnZGl2
Mi50b3AnLCAnMjAwJyk7CitzaG91bGRCZSgnZGl2Mi53aWR0aCcsICcyMDAnKTsKK3Nob3VsZEJl
KCdkaXYyLmhlaWdodCcsICcxMDAnKTsKK3Nob3VsZEJlKCdkaXYyLnJpZ2h0JywgJzIwMCcpOwor
c2hvdWxkQmUoJ2RpdjIuYm90dG9tJywgJzMwMCcpOworZGVidWcoIiIpOworCitkZWJ1ZygiQ2hl
Y2tpbmcgU1ZHIChyZWN0KSByZWN0YW5nbGVzOiIpOwordmFyIHN2ZzEgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic3ZnMSIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwordmFyIHJlY3QxID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlY3QxIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7
CitzaG91bGRCZSgnc3ZnMS5sZWZ0JywgJzAnKTsKK3Nob3VsZEJlKCdyZWN0MS5sZWZ0JywgJzAn
KTsKK3Nob3VsZEJlKCdzdmcxLnRvcCcsICc3NScpOworc2hvdWxkQmUoJ3JlY3QxLnRvcCcsICc3
NScpOworc2hvdWxkQmUoJ3N2ZzEud2lkdGgnLCAnMTAwJyk7CitzaG91bGRCZSgncmVjdDEud2lk
dGgnLCAnMTAwJyk7CitzaG91bGRCZSgnc3ZnMS5oZWlnaHQnLCAnNTAnKTsKK3Nob3VsZEJlKCdy
ZWN0MS5oZWlnaHQnLCAnNTAnKTsKK3Nob3VsZEJlKCdzdmcxLnJpZ2h0JywgJzEwMCcpOworc2hv
dWxkQmUoJ3JlY3QxLnJpZ2h0JywgJzEwMCcpOworc2hvdWxkQmUoJ3N2ZzEuYm90dG9tJywgJzEy
NScpOworc2hvdWxkQmUoJ3JlY3QxLmJvdHRvbScsICcxMjUnKTsKK3ZhciBzdmcyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInN2ZzIiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKK3ZhciBy
ZWN0MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWN0MiIpLmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpOworc2hvdWxkQmUoJ3N2ZzIubGVmdCcsICc0MDAnKTsKK3Nob3VsZEJlKCdyZWN0Mi5s
ZWZ0JywgJzQwMCcpOworc2hvdWxkQmUoJ3N2ZzIudG9wJywgJzQwMCcpOworc2hvdWxkQmUoJ3Jl
Y3QyLnRvcCcsICc0MDAnKTsKK3Nob3VsZEJlKCdzdmcyLndpZHRoJywgJzIwMCcpOworc2hvdWxk
QmUoJ3JlY3QyLndpZHRoJywgJzIwMCcpOworc2hvdWxkQmUoJ3N2ZzIuaGVpZ2h0JywgJzEwMCcp
Oworc2hvdWxkQmUoJ3JlY3QyLmhlaWdodCcsICcxMDAnKTsKK3Nob3VsZEJlKCdzdmcyLnJpZ2h0
JywgJzYwMCcpOworc2hvdWxkQmUoJ3JlY3QyLnJpZ2h0JywgJzYwMCcpOworc2hvdWxkQmUoJ3N2
ZzIuYm90dG9tJywgJzUwMCcpOworc2hvdWxkQmUoJ3JlY3QyLmJvdHRvbScsICc1MDAnKTsKK2Rl
YnVnKCIiKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA5YTJjODYxLi4yNmNmOTY3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEw
LTA5LTI4ICBDb3NtaW4gVHJ1dGEgIDxjdHJ1dGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVj
dCBCcm9rZW4gZm9yIFNWRyBFbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MTUKKworICAgICAgICBBZGp1c3QgdGhlIHJlc3VsdGluZyBy
ZWN0YW5nbGUgZm9yIGFic29sdXRlIHpvb20sIGV2ZW4gZm9yIFNWRyBlbGVtZW50cy4KKworICAg
ICAgICBUZXN0OiBjc3MzL3pvb20tY29vcmRzLnhodG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5jcHA6CisgICAgICAgIChFbGVtZW50OjpnZXRCb3VuZGluZ0NsaWVudFJlY3QpOgorCiAyMDEw
LTA5LTI4ICBNYXJjLUFudG9pbmUgUnVlbCAgPG1hcnVlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYzQwODc5MC4uMzZhNzJjNyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKQEAgLTUxMCw4ICs1MTAsOCBAQCBQYXNzUmVmUHRyPENsaWVudFJlY3Q+IEVsZW1l
bnQ6OmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIGNvbnN0CiAgICAgICAgIHJlc3VsdC5tb3ZlKC12
aXNpYmxlQ29udGVudFJlY3QueCgpLCAtdmlzaWJsZUNvbnRlbnRSZWN0LnkoKSk7CiAgICAgfQog
Ci0gICAgaWYgKHJlbmRlckJveE1vZGVsT2JqZWN0KCkpCi0gICAgICAgIGFkanVzdEludFJlY3RG
b3JBYnNvbHV0ZVpvb20ocmVzdWx0LCByZW5kZXJCb3hNb2RlbE9iamVjdCgpKTsKKyAgICBBU1NF
UlQocmVuZGVyZXIoKSk7CisgICAgYWRqdXN0SW50UmVjdEZvckFic29sdXRlWm9vbShyZXN1bHQs
IHJlbmRlcmVyKCkpOwogCiAgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZXN1bHQpOwog
fQo=
</data>
<flag name="review"
          id="58793"
          type_id="1"
          status="-"
          setter="ctruta"
    />
    <flag name="commit-queue"
          id="58794"
          type_id="3"
          status="-"
          setter="ctruta"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72199</attachid>
            <date>2010-10-28 09:53:11 -0700</date>
            <delta_ts>2010-10-29 09:09:44 -0700</delta_ts>
            <desc>Zooming tests for getBoundingClientRect</desc>
            <filename>wk42815.more_testing.diff</filename>
            <type>text/plain</type>
            <size>46695</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZTRiODM2Li4wYjEyNmJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTAtMTAt
MjggIENvc21pbiBUcnV0YSAgPGN0cnV0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IEJy
b2tlbiBmb3IgU1ZHIEVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MjgxNQorCisgICAgICAgIEVuaGFuY2VkIHNvbWUgb2YgdGhlIHRlc3Rz
IGZvciBnZXRCb3VuZGluZ0NsaWVudFJlY3QsIGFuZCBhZGRlZCB6b29taW5nIHRlc3RzLgorICAg
ICAgICBBZGRlZCB0aGUgcG9zc2liaWxpdHkgdG8gcnVuIHRlc3RzIHRoYXQgb25seSBleHBlY3Qg
YXBwcm94aW1hdGUgcmVzdWx0cy4KKyAgICAgICAgTWFkZSBjb3NtZXRpYyBmaXhlcyBpbiB2YXJp
b3VzIHBsYWNlcy4KKworICAgICAgICAqIGNzczMvem9vbS1jb29yZHMueGh0bWw6IFdyYXBwZWQg
dGhlIDxzdmc+IGVsZW1lbnRzIGluIGEgPGRpdj4sCisgICAgICAgIHRvIGF2b2lkIHJlLWxheW91
dCBvbiB6b29taW5nIG9yIHJlc2l6aW5nLgorICAgICAgICBBZGRlZCBhIHRlc3QgZm9yIGdldEJv
dW5kaW5nQ2xpZW50UmVjdCBvbiB1bnpvb21lZCBlbGVtZW50cy4KKyAgICAgICAgKiBjc3MzL3pv
b20tY29vcmRzLWV4cGVjdGVkLnR4dDogU3luYydlZCB3aXRoIHpvb20tY29vcmRzLnhodG1sLgor
ICAgICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzOiBGaXhlZCBpbmRlbnRh
dGlvbi4KKyAgICAgICAgKGFyZUFycmF5c0FwcHJveEVxdWFsKTogQWRkZWQuCisgICAgICAgIChp
c1Jlc3VsdEFwcHJveENvcnJlY3QpOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlQXBwcm94KTog
QWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS9nZXRCQm94LWpzLnN2ZzogRml4ZWQgaW5kZW50
YXRpb24uCisgICAgICAgICogc3ZnL2N1c3RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QueGh0bWw6
IFdyYXBwZWQgdGhlIDxzdmc+IGVsZW1lbnRzIGluIGEgPGRpdj4sCisgICAgICAgIHRvIGF2b2lk
IHJlLWxheW91dCBvbiB6b29taW5nIG9yIHJlc2l6aW5nLgorICAgICAgICAqIHN2Zy96b29tL3Bh
Z2Uvem9vbS1nZXRCb3VuZGluZ0NsaWVudFJlY3QueGh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2
Zy96b29tL3BhZ2Uvem9vbS1nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvem9vbS9wYWdlL3pvb20tem9vbS1jb29yZHMueGh0bWw6IEFkZGVk
LgorICAgICAgICAqIHN2Zy96b29tL3BhZ2Uvem9vbS16b29tLWNvb3Jkcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHN2Zy96b29tL3Jlc291cmNlcy90ZXN0UGFnZVpvb20uanM6IEFk
ZGVkIGNhbGwgdG8gY29tcGxldGVEeW5hbWljVGVzdCBvbiBwb3N0LXpvb20uCisgICAgICAgIChj
b21wbGV0ZUR5bmFtaWNUZXN0KTogQWRkZWQuCisKIDIwMTAtMTAtMjcgIEFkYW0gUm9iZW4gIDxh
cm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIENoZWNrIGluIG5ldyBXaW5kb3dzIHJlc3VsdHMg
Zm9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3pvb20tY29vcmRzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2NzczMvem9vbS1jb29yZHMtZXhwZWN0ZWQudHh0CmluZGV4IDcxNjIz
OTAuLmJkNzQwYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvem9vbS1jb29yZHMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMvem9vbS1jb29yZHMtZXhwZWN0ZWQudHh0
CkBAIC0xLDkgKzEsMTQgQEAKIFRlc3QKIFRlc3QKK1Rlc3QKIFRoaXMgdGVzdCBjaGVja3MgZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCkgb24gem9vbWVkIEhUTUwgYW5kIFNWRyBlbGVtZW50cwogCiBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKK0dyYXkgcmVjdGFuZ2xlczogMTAweDUwCitHcmVl
biByZWN0YW5nbGVzOiAxMDB4NTAsIHpvb209MjAwJQorQmx1ZSByZWN0YW5nbGVzOiAyMDB4MTAw
LCB6b29tPTUwJQorCiBDaGVja2luZyBIVE1MIGVsZW1lbnRzOgogCiBQQVNTIGRpdjEubGVmdCBp
cyAwCkBAIC0xNCw2MyArMTksOTUgQEAgUEFTUyBkaXYxLnJpZ2h0IGlzIDEwMAogUEFTUyBkaXYx
LmJvdHRvbSBpcyA1MAogCiBQQVNTIGRpdjIubGVmdCBpcyAwCi1QQVNTIGRpdjIudG9wIGlzIDIw
MAotUEFTUyBkaXYyLndpZHRoIGlzIDIwMAotUEFTUyBkaXYyLmhlaWdodCBpcyAxMDAKLVBBU1Mg
ZGl2Mi5yaWdodCBpcyAyMDAKLVBBU1MgZGl2Mi5ib3R0b20gaXMgMzAwCitQQVNTIGRpdjIudG9w
IGlzIDI1CitQQVNTIGRpdjIud2lkdGggaXMgMTAwCitQQVNTIGRpdjIuaGVpZ2h0IGlzIDUwCitQ
QVNTIGRpdjIucmlnaHQgaXMgMTAwCitQQVNTIGRpdjIuYm90dG9tIGlzIDc1CisKK1BBU1MgZGl2
My5sZWZ0IGlzIDAKK1BBU1MgZGl2My50b3AgaXMgMzAwCitQQVNTIGRpdjMud2lkdGggaXMgMjAw
CitQQVNTIGRpdjMuaGVpZ2h0IGlzIDEwMAorUEFTUyBkaXYzLnJpZ2h0IGlzIDIwMAorUEFTUyBk
aXYzLmJvdHRvbSBpcyA0MDAKIAogQ2hlY2tpbmcgU1ZHIGVsZW1lbnRzOgogCiBQQVNTIHN2ZzEu
bGVmdCBpcyAwCi1QQVNTIHN2ZzEudG9wIGlzIDc1CitQQVNTIHN2ZzEudG9wIGlzIDI1MAogUEFT
UyBzdmcxLndpZHRoIGlzIDE1MAogUEFTUyBzdmcxLmhlaWdodCBpcyA1MAogUEFTUyBzdmcxLnJp
Z2h0IGlzIDE1MAotUEFTUyBzdmcxLmJvdHRvbSBpcyAxMjUKK1BBU1Mgc3ZnMS5ib3R0b20gaXMg
MzAwCiBQQVNTIHJlY3QxLmxlZnQgaXMgMAotUEFTUyByZWN0MS50b3AgaXMgNzUKK1BBU1MgcmVj
dDEudG9wIGlzIDI1MAogUEFTUyByZWN0MS53aWR0aCBpcyAxMDAKIFBBU1MgcmVjdDEuaGVpZ2h0
IGlzIDUwCiBQQVNTIHJlY3QxLnJpZ2h0IGlzIDEwMAotUEFTUyByZWN0MS5ib3R0b20gaXMgMTI1
CitQQVNTIHJlY3QxLmJvdHRvbSBpcyAzMDAKIFBBU1MgaW1hZ2UxLmxlZnQgaXMgMTAwCi1QQVNT
IGltYWdlMS50b3AgaXMgNzUKK1BBU1MgaW1hZ2UxLnRvcCBpcyAyNTAKIFBBU1MgaW1hZ2UxLndp
ZHRoIGlzIDUwCiBQQVNTIGltYWdlMS5oZWlnaHQgaXMgMjUKIFBBU1MgaW1hZ2UxLnJpZ2h0IGlz
IDE1MAotUEFTUyBpbWFnZTEuYm90dG9tIGlzIDEwMAorUEFTUyBpbWFnZTEuYm90dG9tIGlzIDI3
NQogUEFTUyB0ZXh0MS5sZWZ0ID09IDEwMCBpcyB0cnVlCi1QQVNTIHRleHQxLnRvcCA+PSA3NSBp
cyB0cnVlCitQQVNTIHRleHQxLnRvcCA+PSAyNTAgaXMgdHJ1ZQogUEFTUyB0ZXh0MS53aWR0aCA+
IDAgaXMgdHJ1ZQogUEFTUyB0ZXh0MS5oZWlnaHQgPiAwIGlzIHRydWUKIFBBU1MgdGV4dDEucmln
aHQgPiAxMDAgaXMgdHJ1ZQotUEFTUyB0ZXh0MS5ib3R0b20gPiA3NSBpcyB0cnVlCitQQVNTIHRl
eHQxLmJvdHRvbSA+IDI1MCBpcyB0cnVlCiAKLVBBU1Mgc3ZnMi5sZWZ0IGlzIDYwMAotUEFTUyBz
dmcyLnRvcCBpcyA0MDAKLVBBU1Mgc3ZnMi53aWR0aCBpcyAzMDAKLVBBU1Mgc3ZnMi5oZWlnaHQg
aXMgMTAwCi1QQVNTIHN2ZzIucmlnaHQgaXMgOTAwCi1QQVNTIHN2ZzIuYm90dG9tIGlzIDUwMAot
UEFTUyByZWN0Mi5sZWZ0IGlzIDYwMAotUEFTUyByZWN0Mi50b3AgaXMgNDAwCi1QQVNTIHJlY3Qy
LndpZHRoIGlzIDIwMAotUEFTUyByZWN0Mi5oZWlnaHQgaXMgMTAwCi1QQVNTIHJlY3QyLnJpZ2h0
IGlzIDgwMAotUEFTUyByZWN0Mi5ib3R0b20gaXMgNTAwCi1QQVNTIGltYWdlMi5sZWZ0IGlzIDgw
MAotUEFTUyBpbWFnZTIudG9wIGlzIDQwMAotUEFTUyBpbWFnZTIud2lkdGggaXMgMTAwCi1QQVNT
IGltYWdlMi5oZWlnaHQgaXMgNTAKLVBBU1MgaW1hZ2UyLnJpZ2h0IGlzIDkwMAotUEFTUyBpbWFn
ZTIuYm90dG9tIGlzIDQ1MAotUEFTUyB0ZXh0Mi5sZWZ0ID09IDgwMCBpcyB0cnVlCi1QQVNTIHRl
eHQyLnRvcCA+PSA0MDAgaXMgdHJ1ZQorUEFTUyBzdmcyLmxlZnQgaXMgNzUKK1BBU1Mgc3ZnMi50
b3AgaXMgMTAwCitQQVNTIHN2ZzIud2lkdGggaXMgMTUwCitQQVNTIHN2ZzIuaGVpZ2h0IGlzIDUw
CitQQVNTIHN2ZzIucmlnaHQgaXMgMjI1CitQQVNTIHN2ZzIuYm90dG9tIGlzIDE1MAorUEFTUyBy
ZWN0Mi5sZWZ0IGlzIDc1CitQQVNTIHJlY3QyLnRvcCBpcyAxMDAKK1BBU1MgcmVjdDIud2lkdGgg
aXMgMTAwCitQQVNTIHJlY3QyLmhlaWdodCBpcyA1MAorUEFTUyByZWN0Mi5yaWdodCBpcyAxNzUK
K1BBU1MgcmVjdDIuYm90dG9tIGlzIDE1MAorUEFTUyBpbWFnZTIubGVmdCBpcyAxNzUKK1BBU1Mg
aW1hZ2UyLnRvcCBpcyAxMDAKK1BBU1MgaW1hZ2UyLndpZHRoIGlzIDUwCitQQVNTIGltYWdlMi5o
ZWlnaHQgaXMgMjUKK1BBU1MgaW1hZ2UyLnJpZ2h0IGlzIDIyNQorUEFTUyBpbWFnZTIuYm90dG9t
IGlzIDEyNQorUEFTUyB0ZXh0Mi5sZWZ0ID09IDE3NSBpcyB0cnVlCitQQVNTIHRleHQyLnRvcCA+
PSAxMDAgaXMgdHJ1ZQogUEFTUyB0ZXh0Mi53aWR0aCA+IDAgaXMgdHJ1ZQogUEFTUyB0ZXh0Mi5o
ZWlnaHQgPiAwIGlzIHRydWUKLVBBU1MgdGV4dDIucmlnaHQgPiA4MDAgaXMgdHJ1ZQotUEFTUyB0
ZXh0Mi5ib3R0b20gPiA0MDAgaXMgdHJ1ZQorUEFTUyB0ZXh0Mi5yaWdodCA+IDE3NSBpcyB0cnVl
CitQQVNTIHRleHQyLmJvdHRvbSA+IDEwMCBpcyB0cnVlCisKK1BBU1Mgc3ZnMy5sZWZ0IGlzIDkw
MAorUEFTUyBzdmczLnRvcCBpcyA1MDAKK1BBU1Mgc3ZnMy53aWR0aCBpcyAzMDAKK1BBU1Mgc3Zn
My5oZWlnaHQgaXMgMTAwCitQQVNTIHN2ZzMucmlnaHQgaXMgMTIwMAorUEFTUyBzdmczLmJvdHRv
bSBpcyA2MDAKK1BBU1MgcmVjdDMubGVmdCBpcyA5MDAKK1BBU1MgcmVjdDMudG9wIGlzIDUwMAor
UEFTUyByZWN0My53aWR0aCBpcyAyMDAKK1BBU1MgcmVjdDMuaGVpZ2h0IGlzIDEwMAorUEFTUyBy
ZWN0My5yaWdodCBpcyAxMTAwCitQQVNTIHJlY3QzLmJvdHRvbSBpcyA2MDAKK1BBU1MgaW1hZ2Uz
LmxlZnQgaXMgMTEwMAorUEFTUyBpbWFnZTMudG9wIGlzIDUwMAorUEFTUyBpbWFnZTMud2lkdGgg
aXMgMTAwCitQQVNTIGltYWdlMy5oZWlnaHQgaXMgNTAKK1BBU1MgaW1hZ2UzLnJpZ2h0IGlzIDEy
MDAKK1BBU1MgaW1hZ2UzLmJvdHRvbSBpcyA1NTAKK1BBU1MgdGV4dDMubGVmdCA9PSAxMTAwIGlz
IHRydWUKK1BBU1MgdGV4dDMudG9wID49IDUwMCBpcyB0cnVlCitQQVNTIHRleHQzLndpZHRoID4g
MCBpcyB0cnVlCitQQVNTIHRleHQzLmhlaWdodCA+IDAgaXMgdHJ1ZQorUEFTUyB0ZXh0My5yaWdo
dCA+IDExMDAgaXMgdHJ1ZQorUEFTUyB0ZXh0My5ib3R0b20gPiA1MDAgaXMgdHJ1ZQogCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nz
czMvem9vbS1jb29yZHMueGh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3pvb20tY29vcmRzLnhodG1s
CmluZGV4IDQxZjZhOWQuLjNlNTMyMTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvem9v
bS1jb29yZHMueGh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy96b29tLWNvb3Jkcy54aHRtbApA
QCAtMywzNiArMyw1MCBAQAogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgogPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K
ICAgICBib2R5IHsgbWFyZ2luOjBweDsgYm9yZGVyOjBweDsgcGFkZGluZzowcHg7IH0KLSAgICAj
ZGl2MSwgI3N2ZzEgeyB6b29tOjIwMCU7IH0KLSAgICAjZGl2MiwgI3N2ZzIgeyB6b29tOjUwJTsg
fQorICAgICNkaXYyLCAjc3ZnMiB7IHpvb206MjAwJTsgfQorICAgICNkaXYzLCAjc3ZnMyB7IHpv
b206NTAlOyB9CiA8L3N0eWxlPgotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgogCi08ZGl2IGlkPSJkaXYx
IiBzdHlsZT0id2lkdGg6MTAwcHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZC1jb2xvcjpibHVlOyI+
PC9kaXY+Ci08ZGl2IGlkPSJkaXYyIiBzdHlsZT0id2lkdGg6MjAwcHg7aGVpZ2h0OjEwMHB4O2Jh
Y2tncm91bmQtY29sb3I6Z3JlZW47Ij48L2Rpdj4KKzxkaXYgaWQ9ImRpdjEiIHN0eWxlPSJ3aWR0
aDoxMDBweDtoZWlnaHQ6NTBweDtiYWNrZ3JvdW5kLWNvbG9yOmdyYXk7Ij48L2Rpdj4KKzxkaXYg
aWQ9ImRpdjIiIHN0eWxlPSJ3aWR0aDoxMDBweDtoZWlnaHQ6NTBweDtiYWNrZ3JvdW5kLWNvbG9y
OmdyZWVuOyI+PC9kaXY+Cis8ZGl2IGlkPSJkaXYzIiBzdHlsZT0id2lkdGg6MjAwcHg7aGVpZ2h0
OjEwMHB4O2JhY2tncm91bmQtY29sb3I6Ymx1ZTsiPjwvZGl2PgorPGRpdiBzdHlsZT0id2lkdGg6
NjAwcHg7aGVpZ2h0PTEwMHB4OyI+CiA8c3ZnIGlkPSJzdmcxIiB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciCiAgICAgIHdpZHRoPSIxNTBweCIgaGVpZ2h0PSI1MHB4IiB2aWV3Qm94
PSIwIDAgMTUwIDEwMCIKICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+Ci0gIDxyZWN0
IGlkPSJyZWN0MSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMHB4IiBoZWlnaHQ9IjEwMHB4IiBmaWxs
PSJ5ZWxsb3ciIC8+CisgIDxyZWN0IGlkPSJyZWN0MSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMHB4
IiBoZWlnaHQ9IjEwMHB4IiBmaWxsPSJncmF5IiAvPgogICA8aW1hZ2UgaWQ9ImltYWdlMSIgeD0i
MTAwcHgiIHk9IjAiIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIHhsaW5rOmhyZWY9Ii4uL3N2
Zy9kb20vcmVzb3VyY2VzL21hZ25pZnkucG5nIiAvPgogICA8dGV4dCBpZD0idGV4dDEiIHg9IjEw
MHB4IiB5PSI3NXB4Ij5UZXN0PC90ZXh0PgogPC9zdmc+PHN2ZyBpZD0ic3ZnMiIgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgotICAgICB3aWR0aD0iMzAwcHgiIGhlaWdodD0iMTAw
cHgiIHZpZXdCb3g9IjAgMCAxNTAgMTAwIgorICAgICB3aWR0aD0iMTUwcHgiIGhlaWdodD0iNTBw
eCIgdmlld0JveD0iMCAwIDE1MCAxMDAiCiAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUi
PgotICA8cmVjdCBpZD0icmVjdDIiIHg9IjAiIHk9IjAiIHdpZHRoPSIxMDBweCIgaGVpZ2h0PSIx
MDBweCIgZmlsbD0ib3JhbmdlIiAvPgorICA8cmVjdCBpZD0icmVjdDIiIHg9IjAiIHk9IjAiIHdp
ZHRoPSIxMDBweCIgaGVpZ2h0PSIxMDBweCIgZmlsbD0iZ3JlZW4iIC8+CiAgIDxpbWFnZSBpZD0i
aW1hZ2UyIiB4PSIxMDBweCIgeT0iMCIgd2lkdGg9IjUwcHgiIGhlaWdodD0iNTBweCIgeGxpbms6
aHJlZj0iLi4vc3ZnL2RvbS9yZXNvdXJjZXMvbWFnbmlmeS5wbmciIC8+CiAgIDx0ZXh0IGlkPSJ0
ZXh0MiIgeD0iMTAwcHgiIHk9Ijc1cHgiPlRlc3Q8L3RleHQ+Cis8L3N2Zz48c3ZnIGlkPSJzdmcz
IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCisgICAgIHdpZHRoPSIzMDBweCIg
aGVpZ2h0PSIxMDBweCIgdmlld0JveD0iMCAwIDE1MCAxMDAiCisgICAgIHByZXNlcnZlQXNwZWN0
UmF0aW89Im5vbmUiPgorICA8cmVjdCBpZD0icmVjdDMiIHg9IjAiIHk9IjAiIHdpZHRoPSIxMDBw
eCIgaGVpZ2h0PSIxMDBweCIgZmlsbD0iYmx1ZSIgLz4KKyAgPGltYWdlIGlkPSJpbWFnZTMiIHg9
IjEwMHB4IiB5PSIwIiB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4IiB4bGluazpocmVmPSIuLi9z
dmcvZG9tL3Jlc291cmNlcy9tYWduaWZ5LnBuZyIgLz4KKyAgPHRleHQgaWQ9InRleHQzIiB4PSIx
MDBweCIgeT0iNzVweCI+VGVzdDwvdGV4dD4KIDwvc3ZnPgorPC9kaXY+CiAKIDxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogCis8c2NyaXB0IHNy
Yz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlw
dD4KIAogZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkgb24gem9vbWVkIEhUTUwgYW5kIFNWRyBlbGVtZW50cyIpOwogCitkZWJ1ZygiR3JheSByZWN0
YW5nbGVzOiAxMDB4NTAiKTsKK2RlYnVnKCJHcmVlbiByZWN0YW5nbGVzOiAxMDB4NTAsIHpvb209
MjAwJSIpOworZGVidWcoIkJsdWUgcmVjdGFuZ2xlczogMjAweDEwMCwgem9vbT01MCUiKTsKK2Rl
YnVnKCIiKTsKKwogZGVidWcoIkNoZWNraW5nIEhUTUwgZWxlbWVudHM6Iik7CiBkZWJ1ZygiIik7
CiAKQEAgLTQ3LDExICs2MSwyMCBAQCBkZWJ1ZygiIik7CiAKIHZhciBkaXYyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRpdjIiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKIHNob3VsZEJl
KCdkaXYyLmxlZnQnLCAnMCcpOwotc2hvdWxkQmUoJ2RpdjIudG9wJywgJzIwMCcpOwotc2hvdWxk
QmUoJ2RpdjIud2lkdGgnLCAnMjAwJyk7Ci1zaG91bGRCZSgnZGl2Mi5oZWlnaHQnLCAnMTAwJyk7
Ci1zaG91bGRCZSgnZGl2Mi5yaWdodCcsICcyMDAnKTsKLXNob3VsZEJlKCdkaXYyLmJvdHRvbScs
ICczMDAnKTsKK3Nob3VsZEJlKCdkaXYyLnRvcCcsICcyNScpOworc2hvdWxkQmUoJ2RpdjIud2lk
dGgnLCAnMTAwJyk7CitzaG91bGRCZSgnZGl2Mi5oZWlnaHQnLCAnNTAnKTsKK3Nob3VsZEJlKCdk
aXYyLnJpZ2h0JywgJzEwMCcpOworc2hvdWxkQmUoJ2RpdjIuYm90dG9tJywgJzc1Jyk7CitkZWJ1
ZygiIik7CisKK3ZhciBkaXYzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdjMiKS5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTsKK3Nob3VsZEJlKCdkaXYzLmxlZnQnLCAnMCcpOworc2hvdWxk
QmUoJ2RpdjMudG9wJywgJzMwMCcpOworc2hvdWxkQmUoJ2RpdjMud2lkdGgnLCAnMjAwJyk7Citz
aG91bGRCZSgnZGl2My5oZWlnaHQnLCAnMTAwJyk7CitzaG91bGRCZSgnZGl2My5yaWdodCcsICcy
MDAnKTsKK3Nob3VsZEJlKCdkaXYzLmJvdHRvbScsICc0MDAnKTsKIGRlYnVnKCIiKTsKIAogZGVi
dWcoIkNoZWNraW5nIFNWRyBlbGVtZW50czoiKTsKQEAgLTU5LDYyICs4Miw5MiBAQCBkZWJ1Zygi
Iik7CiAKIHZhciBzdmcxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2ZzEiKS5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTsKIHNob3VsZEJlKCdzdmcxLmxlZnQnLCAnMCcpOwotc2hvdWxkQmUo
J3N2ZzEudG9wJywgJzc1Jyk7CitzaG91bGRCZSgnc3ZnMS50b3AnLCAnMjUwJyk7CiBzaG91bGRC
ZSgnc3ZnMS53aWR0aCcsICcxNTAnKTsKIHNob3VsZEJlKCdzdmcxLmhlaWdodCcsICc1MCcpOwog
c2hvdWxkQmUoJ3N2ZzEucmlnaHQnLCAnMTUwJyk7Ci1zaG91bGRCZSgnc3ZnMS5ib3R0b20nLCAn
MTI1Jyk7CitzaG91bGRCZSgnc3ZnMS5ib3R0b20nLCAnMzAwJyk7CiB2YXIgcmVjdDEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVjdDEiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKIHNo
b3VsZEJlKCdyZWN0MS5sZWZ0JywgJzAnKTsKLXNob3VsZEJlKCdyZWN0MS50b3AnLCAnNzUnKTsK
K3Nob3VsZEJlKCdyZWN0MS50b3AnLCAnMjUwJyk7CiBzaG91bGRCZSgncmVjdDEud2lkdGgnLCAn
MTAwJyk7CiBzaG91bGRCZSgncmVjdDEuaGVpZ2h0JywgJzUwJyk7CiBzaG91bGRCZSgncmVjdDEu
cmlnaHQnLCAnMTAwJyk7Ci1zaG91bGRCZSgncmVjdDEuYm90dG9tJywgJzEyNScpOworc2hvdWxk
QmUoJ3JlY3QxLmJvdHRvbScsICczMDAnKTsKIHZhciBpbWFnZTEgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiaW1hZ2UxIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiBzaG91bGRCZSgnaW1h
Z2UxLmxlZnQnLCAnMTAwJyk7Ci1zaG91bGRCZSgnaW1hZ2UxLnRvcCcsICc3NScpOworc2hvdWxk
QmUoJ2ltYWdlMS50b3AnLCAnMjUwJyk7CiBzaG91bGRCZSgnaW1hZ2UxLndpZHRoJywgJzUwJyk7
CiBzaG91bGRCZSgnaW1hZ2UxLmhlaWdodCcsICcyNScpOwogc2hvdWxkQmUoJ2ltYWdlMS5yaWdo
dCcsICcxNTAnKTsKLXNob3VsZEJlKCdpbWFnZTEuYm90dG9tJywgJzEwMCcpOworc2hvdWxkQmUo
J2ltYWdlMS5ib3R0b20nLCAnMjc1Jyk7CiB2YXIgdGV4dDEgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGV4dDEiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKIHNob3VsZEJlKCd0ZXh0MS5s
ZWZ0ID09IDEwMCcsICd0cnVlJyk7Ci1zaG91bGRCZSgndGV4dDEudG9wID49IDc1JywgJ3RydWUn
KTsKK3Nob3VsZEJlKCd0ZXh0MS50b3AgPj0gMjUwJywgJ3RydWUnKTsKIHNob3VsZEJlKCd0ZXh0
MS53aWR0aCA+IDAnLCAndHJ1ZScpOwogc2hvdWxkQmUoJ3RleHQxLmhlaWdodCA+IDAnLCAndHJ1
ZScpOwogc2hvdWxkQmUoJ3RleHQxLnJpZ2h0ID4gMTAwJywgJ3RydWUnKTsKLXNob3VsZEJlKCd0
ZXh0MS5ib3R0b20gPiA3NScsICd0cnVlJyk7CitzaG91bGRCZSgndGV4dDEuYm90dG9tID4gMjUw
JywgJ3RydWUnKTsKIGRlYnVnKCIiKTsKIAogdmFyIHN2ZzIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic3ZnMiIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotc2hvdWxkQmUoJ3N2ZzIubGVm
dCcsICc2MDAnKTsKLXNob3VsZEJlKCdzdmcyLnRvcCcsICc0MDAnKTsKLXNob3VsZEJlKCdzdmcy
LndpZHRoJywgJzMwMCcpOwotc2hvdWxkQmUoJ3N2ZzIuaGVpZ2h0JywgJzEwMCcpOwotc2hvdWxk
QmUoJ3N2ZzIucmlnaHQnLCAnOTAwJyk7Ci1zaG91bGRCZSgnc3ZnMi5ib3R0b20nLCAnNTAwJyk7
CitzaG91bGRCZSgnc3ZnMi5sZWZ0JywgJzc1Jyk7CitzaG91bGRCZSgnc3ZnMi50b3AnLCAnMTAw
Jyk7CitzaG91bGRCZSgnc3ZnMi53aWR0aCcsICcxNTAnKTsKK3Nob3VsZEJlKCdzdmcyLmhlaWdo
dCcsICc1MCcpOworc2hvdWxkQmUoJ3N2ZzIucmlnaHQnLCAnMjI1Jyk7CitzaG91bGRCZSgnc3Zn
Mi5ib3R0b20nLCAnMTUwJyk7CiB2YXIgcmVjdDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVjdDIiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLXNob3VsZEJlKCdyZWN0Mi5sZWZ0Jywg
JzYwMCcpOwotc2hvdWxkQmUoJ3JlY3QyLnRvcCcsICc0MDAnKTsKLXNob3VsZEJlKCdyZWN0Mi53
aWR0aCcsICcyMDAnKTsKLXNob3VsZEJlKCdyZWN0Mi5oZWlnaHQnLCAnMTAwJyk7Ci1zaG91bGRC
ZSgncmVjdDIucmlnaHQnLCAnODAwJyk7Ci1zaG91bGRCZSgncmVjdDIuYm90dG9tJywgJzUwMCcp
Oworc2hvdWxkQmUoJ3JlY3QyLmxlZnQnLCAnNzUnKTsKK3Nob3VsZEJlKCdyZWN0Mi50b3AnLCAn
MTAwJyk7CitzaG91bGRCZSgncmVjdDIud2lkdGgnLCAnMTAwJyk7CitzaG91bGRCZSgncmVjdDIu
aGVpZ2h0JywgJzUwJyk7CitzaG91bGRCZSgncmVjdDIucmlnaHQnLCAnMTc1Jyk7CitzaG91bGRC
ZSgncmVjdDIuYm90dG9tJywgJzE1MCcpOwogdmFyIGltYWdlMiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJpbWFnZTIiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLXNob3VsZEJlKCdpbWFn
ZTIubGVmdCcsICc4MDAnKTsKLXNob3VsZEJlKCdpbWFnZTIudG9wJywgJzQwMCcpOwotc2hvdWxk
QmUoJ2ltYWdlMi53aWR0aCcsICcxMDAnKTsKLXNob3VsZEJlKCdpbWFnZTIuaGVpZ2h0JywgJzUw
Jyk7Ci1zaG91bGRCZSgnaW1hZ2UyLnJpZ2h0JywgJzkwMCcpOwotc2hvdWxkQmUoJ2ltYWdlMi5i
b3R0b20nLCAnNDUwJyk7CitzaG91bGRCZSgnaW1hZ2UyLmxlZnQnLCAnMTc1Jyk7CitzaG91bGRC
ZSgnaW1hZ2UyLnRvcCcsICcxMDAnKTsKK3Nob3VsZEJlKCdpbWFnZTIud2lkdGgnLCAnNTAnKTsK
K3Nob3VsZEJlKCdpbWFnZTIuaGVpZ2h0JywgJzI1Jyk7CitzaG91bGRCZSgnaW1hZ2UyLnJpZ2h0
JywgJzIyNScpOworc2hvdWxkQmUoJ2ltYWdlMi5ib3R0b20nLCAnMTI1Jyk7CiB2YXIgdGV4dDIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dDIiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KTsKLXNob3VsZEJlKCd0ZXh0Mi5sZWZ0ID09IDgwMCcsICd0cnVlJyk7Ci1zaG91bGRCZSgndGV4
dDIudG9wID49IDQwMCcsICd0cnVlJyk7CitzaG91bGRCZSgndGV4dDIubGVmdCA9PSAxNzUnLCAn
dHJ1ZScpOworc2hvdWxkQmUoJ3RleHQyLnRvcCA+PSAxMDAnLCAndHJ1ZScpOwogc2hvdWxkQmUo
J3RleHQyLndpZHRoID4gMCcsICd0cnVlJyk7CiBzaG91bGRCZSgndGV4dDIuaGVpZ2h0ID4gMCcs
ICd0cnVlJyk7Ci1zaG91bGRCZSgndGV4dDIucmlnaHQgPiA4MDAnLCAndHJ1ZScpOwotc2hvdWxk
QmUoJ3RleHQyLmJvdHRvbSA+IDQwMCcsICd0cnVlJyk7CitzaG91bGRCZSgndGV4dDIucmlnaHQg
PiAxNzUnLCAndHJ1ZScpOworc2hvdWxkQmUoJ3RleHQyLmJvdHRvbSA+IDEwMCcsICd0cnVlJyk7
CitkZWJ1ZygiIik7CisKK3ZhciBzdmczID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2ZzMi
KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKK3Nob3VsZEJlKCdzdmczLmxlZnQnLCAnOTAwJyk7
CitzaG91bGRCZSgnc3ZnMy50b3AnLCAnNTAwJyk7CitzaG91bGRCZSgnc3ZnMy53aWR0aCcsICcz
MDAnKTsKK3Nob3VsZEJlKCdzdmczLmhlaWdodCcsICcxMDAnKTsKK3Nob3VsZEJlKCdzdmczLnJp
Z2h0JywgJzEyMDAnKTsKK3Nob3VsZEJlKCdzdmczLmJvdHRvbScsICc2MDAnKTsKK3ZhciByZWN0
MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWN0MyIpLmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpOworc2hvdWxkQmUoJ3JlY3QzLmxlZnQnLCAnOTAwJyk7CitzaG91bGRCZSgncmVjdDMudG9w
JywgJzUwMCcpOworc2hvdWxkQmUoJ3JlY3QzLndpZHRoJywgJzIwMCcpOworc2hvdWxkQmUoJ3Jl
Y3QzLmhlaWdodCcsICcxMDAnKTsKK3Nob3VsZEJlKCdyZWN0My5yaWdodCcsICcxMTAwJyk7Citz
aG91bGRCZSgncmVjdDMuYm90dG9tJywgJzYwMCcpOwordmFyIGltYWdlMyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJpbWFnZTMiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKK3Nob3VsZEJl
KCdpbWFnZTMubGVmdCcsICcxMTAwJyk7CitzaG91bGRCZSgnaW1hZ2UzLnRvcCcsICc1MDAnKTsK
K3Nob3VsZEJlKCdpbWFnZTMud2lkdGgnLCAnMTAwJyk7CitzaG91bGRCZSgnaW1hZ2UzLmhlaWdo
dCcsICc1MCcpOworc2hvdWxkQmUoJ2ltYWdlMy5yaWdodCcsICcxMjAwJyk7CitzaG91bGRCZSgn
aW1hZ2UzLmJvdHRvbScsICc1NTAnKTsKK3ZhciB0ZXh0MyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXh0MyIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworc2hvdWxkQmUoJ3RleHQzLmxl
ZnQgPT0gMTEwMCcsICd0cnVlJyk7CitzaG91bGRCZSgndGV4dDMudG9wID49IDUwMCcsICd0cnVl
Jyk7CitzaG91bGRCZSgndGV4dDMud2lkdGggPiAwJywgJ3RydWUnKTsKK3Nob3VsZEJlKCd0ZXh0
My5oZWlnaHQgPiAwJywgJ3RydWUnKTsKK3Nob3VsZEJlKCd0ZXh0My5yaWdodCA+IDExMDAnLCAn
dHJ1ZScpOworc2hvdWxkQmUoJ3RleHQzLmJvdHRvbSA+IDUwMCcsICd0cnVlJyk7CiBkZWJ1Zygi
Iik7CiAKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCmluZGV4IDM1MzZhODkuLjVjZGQ5MGEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCkBAIC01MCw2ICs1MCwy
MCBAQCBmdW5jdGlvbiBhcmVBcnJheXNFcXVhbChfYSwgX2IpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2Z1bmN0aW9uIGFyZUFycmF5c0FwcHJveEVxdWFsKF9hLCBfYiwgX2Vwc2lsb24pCit7Cisg
ICAgdHJ5IHsKKyAgICAgICAgaWYgKF9hLmxlbmd0aCAhPT0gX2IubGVuZ3RoKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9hLmxlbmd0aDsg
aSsrKQorICAgICAgICAgICAgaWYgKE1hdGguYWJzKF9hW2ldIC0gX2JbaV0pID4gX2Vwc2lsb24p
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGZ1bmN0aW9u
IGlzTWludXNaZXJvKG4pCiB7CiAgICAgLy8gdGhlIG9ubHkgd2F5IHRvIHRlbGwgMCBmcm9tIC0w
IGluIEpTIGlzIHRoZSBmYWN0IHRoYXQgMS8tMCBpcwpAQCAtNzAsNiArODQsMTkgQEAgZnVuY3Rp
b24gaXNSZXN1bHRDb3JyZWN0KF9hY3R1YWwsIF9leHBlY3RlZCkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK2Z1bmN0aW9uIGlzUmVzdWx0QXBwcm94Q29ycmVjdChfYWN0dWFsLCBfZXhwZWN0ZWQs
IF9lcHNpbG9uKQoreworICAgIGlmICh0eXBlb2YoX2FjdHVhbCkgPT0gIm51bWJlciIgJiYgdHlw
ZW9mKF9leHBlY3RlZCkgPT0gIm51bWJlciIpIHsKKyAgICAgICAgaWYgKE1hdGguYWJzKF9hY3R1
YWwgLSBfZXhwZWN0ZWQpIDw9IF9lcHNpbG9uKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGlmIChpc05hTihfZXhwZWN0ZWQpKQorICAgICAgICAgICAgcmV0dXJuIGlzTmFOKGFj
dHVhbCk7CisgICAgfQorICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoX2V4
cGVjdGVkKSA9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoW10pKQorICAgICAgICBy
ZXR1cm4gYXJlQXJyYXlzQXBwcm94RXF1YWwoX2FjdHVhbCwgX2V4cGVjdGVkLCBfZXBzaWxvbik7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBmdW5jdGlvbiBzdHJpbmdpZnkodikKIHsKICAgICBp
ZiAodiA9PT0gMCAmJiAxL3YgPCAwKQpAQCAtNzksNDIgKzEwNiw2OCBAQCBmdW5jdGlvbiBzdHJp
bmdpZnkodikKIAogZnVuY3Rpb24gZXZhbEFuZExvZyhfYSkKIHsKLSAgaWYgKHR5cGVvZiBfYSAh
PSAic3RyaW5nIikKLSAgICBkZWJ1ZygiV0FSTjogdHJ5QW5kTG9nKCkgZXhwZWN0cyBhIHN0cmlu
ZyBhcmd1bWVudCIpOwotCi0gIC8vIExvZyBmaXJzdCBpbiBjYXNlIHRoaW5ncyBnbyBob3JyaWJs
eSB3cm9uZyBvciB0aGlzIGNhdXNlcyBhIHN5bmMgZXZlbnQuCi0gIGRlYnVnKF9hKTsKLQotICB2
YXIgX2F2OwotICB0cnkgewotICAgICBfYXYgPSBldmFsKF9hKTsKLSAgfSBjYXRjaCAoZSkgewot
ICAgIHRlc3RGYWlsZWQoX2EgKyAiIHRocmV3IGV4Y2VwdGlvbiAiICsgZSk7Ci0gIH0KLSAgcmV0
dXJuIF9hdjsKKyAgICBpZiAodHlwZW9mIF9hICE9ICJzdHJpbmciKQorICAgICAgICBkZWJ1Zygi
V0FSTjogdHJ5QW5kTG9nKCkgZXhwZWN0cyBhIHN0cmluZyBhcmd1bWVudCIpOworCisgICAgLy8g
TG9nIGZpcnN0IGluIGNhc2UgdGhpbmdzIGdvIGhvcnJpYmx5IHdyb25nIG9yIHRoaXMgY2F1c2Vz
IGEgc3luYyBldmVudC4KKyAgICBkZWJ1ZyhfYSk7CisKKyAgICB2YXIgX2F2OworICAgIHRyeSB7
CisgICAgICAgIF9hdiA9IGV2YWwoX2EpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVz
dEZhaWxlZChfYSArICIgdGhyZXcgZXhjZXB0aW9uICIgKyBlKTsKKyAgICB9CisgICAgcmV0dXJu
IF9hdjsKIH0KIAogZnVuY3Rpb24gc2hvdWxkQmUoX2EsIF9iKQogewotICBpZiAodHlwZW9mIF9h
ICE9ICJzdHJpbmciIHx8IHR5cGVvZiBfYiAhPSAic3RyaW5nIikKLSAgICBkZWJ1ZygiV0FSTjog
c2hvdWxkQmUoKSBleHBlY3RzIHN0cmluZyBhcmd1bWVudHMiKTsKLSAgdmFyIGV4Y2VwdGlvbjsK
LSAgdmFyIF9hdjsKLSAgdHJ5IHsKLSAgICAgX2F2ID0gZXZhbChfYSk7Ci0gIH0gY2F0Y2ggKGUp
IHsKLSAgICAgZXhjZXB0aW9uID0gZTsKLSAgfQotICB2YXIgX2J2ID0gZXZhbChfYik7Ci0KLSAg
aWYgKGV4Y2VwdGlvbikKLSAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgIiArIF9idiAr
ICIuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKLSAgZWxzZSBpZiAoaXNSZXN1bHRD
b3JyZWN0KF9hdiwgX2J2KSkKLSAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyAiICsgX2IpOwotICBl
bHNlIGlmICh0eXBlb2YoX2F2KSA9PSB0eXBlb2YoX2J2KSkKLSAgICB0ZXN0RmFpbGVkKF9hICsg
IiBzaG91bGQgYmUgIiArIF9idiArICIuIFdhcyAiICsgc3RyaW5naWZ5KF9hdikgKyAiLiIpOwot
ICBlbHNlCi0gICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlICIgKyBfYnYgKyAiIChvZiB0
eXBlICIgKyB0eXBlb2YgX2J2ICsgIikuIFdhcyAiICsgX2F2ICsgIiAob2YgdHlwZSAiICsgdHlw
ZW9mIF9hdiArICIpLiIpOworICAgIGlmICh0eXBlb2YgX2EgIT0gInN0cmluZyIgfHwgdHlwZW9m
IF9iICE9ICJzdHJpbmciKQorICAgICAgICBkZWJ1ZygiV0FSTjogc2hvdWxkQmUoKSBleHBlY3Rz
IHN0cmluZyBhcmd1bWVudHMiKTsKKyAgICB2YXIgZXhjZXB0aW9uOworICAgIHZhciBfYXY7Cisg
ICAgdHJ5IHsKKyAgICAgICAgX2F2ID0gZXZhbChfYSk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBleGNlcHRpb24gPSBlOworICAgIH0KKyAgICB2YXIgX2J2ID0gZXZhbChfYik7CisKKyAg
ICBpZiAoZXhjZXB0aW9uKQorICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgIiAr
IF9idiArICIuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKKyAgICBlbHNlIGlmIChp
c1Jlc3VsdENvcnJlY3QoX2F2LCBfYnYpKQorICAgICAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyAi
ICsgX2IpOworICAgIGVsc2UgaWYgKHR5cGVvZihfYXYpID09IHR5cGVvZihfYnYpKQorICAgICAg
ICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgIiArIF9idiArICIuIFdhcyAiICsgc3RyaW5n
aWZ5KF9hdikgKyAiLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZChfYSArICIgc2hv
dWxkIGJlICIgKyBfYnYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2J2ICsgIikuICIgKworICAg
ICAgICAgICAgICAgICAgICJXYXMgIiArIF9hdiArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYXYg
KyAiKS4iKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBcHByb3goX2EsIF9iLCBfZXBzaWxvbikK
K3sKKyAgICBpZiAodHlwZW9mIF9hICE9ICJzdHJpbmciIHx8IHR5cGVvZiBfYiAhPSAic3RyaW5n
IikKKyAgICAgICAgZGVidWcoIldBUk46IHNob3VsZEJlQXBwcm94KCkgZXhwZWN0cyBzdHJpbmcg
YXJndW1lbnRzIik7CisgICAgdmFyIGV4Y2VwdGlvbjsKKyAgICB2YXIgX2F2OworICAgIHRyeSB7
CisgICAgICAgIF9hdiA9IGV2YWwoX2EpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXhj
ZXB0aW9uID0gZTsKKyAgICB9CisgICAgdmFyIF9idiA9IGV2YWwoX2IpOworICAgIHZhciBfZXBz
diA9IGV2YWwoX2Vwc2lsb24pOworCisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgdGVzdEZh
aWxlZChfYSArICIgc2hvdWxkIGJlICIgKyBfYnYgKyAiLiBUaHJldyBleGNlcHRpb24gIiArIGV4
Y2VwdGlvbik7CisgICAgZWxzZSBpZiAoaXNSZXN1bHRBcHByb3hDb3JyZWN0KF9hdiwgX2J2LCBf
ZXBzaWxvbikpCisgICAgICAgIHRlc3RQYXNzZWQoX2EgKyAiIHNob3VsZCBiZSAiICsgX2J2ICsg
IiArLy0gIiArIF9lcHNpbG9uICsgIi4gV2FzICIgKyBzdHJpbmdpZnkoX2F2KSArICIuIik7Cisg
ICAgZWxzZSBpZiAodHlwZW9mKF9hdikgPT0gdHlwZW9mKF9idikpCisgICAgICAgIHRlc3RGYWls
ZWQoX2EgKyAiIHNob3VsZCBiZSAiICsgX2J2ICsgIiArLy0gIiArIF9lcHNpbG9uICsgIi4gV2Fz
ICIgKyBzdHJpbmdpZnkoX2F2KSArICIuIik7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVk
KF9hICsgIiBzaG91bGQgYmUgIiArIF9idiArICIgKy8tICIgKyBfZXBzaWxvbiArIiAob2YgdHlw
ZSAiICsgdHlwZW9mIF9idiArICIpLiAiICsKKyAgICAgICAgICAgICAgICAgICAiV2FzICIgKyBf
YXYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2F2ICsgIikuIik7CiB9CiAKIGZ1bmN0aW9uIHNo
b3VsZEJlVHJ1ZShfYSkgeyBzaG91bGRCZShfYSwgInRydWUiKTsgfQpAQCAtMTI0LDk5ICsxNzcs
OTkgQEAgZnVuY3Rpb24gc2hvdWxkQmVOdWxsKF9hKSB7IHNob3VsZEJlKF9hLCAibnVsbCIpOyB9
CiAKIGZ1bmN0aW9uIHNob3VsZEJlRXF1YWxUb1N0cmluZyhhLCBiKQogewotICB2YXIgdW5ldmFs
ZWRTdHJpbmcgPSAnIicgKyBiLnJlcGxhY2UoL1xcL2csICJcXFxcIikucmVwbGFjZSgvIi9nLCAi
XCIiKS5yZXBsYWNlKC9cbi9nLCAiXFxuIikucmVwbGFjZSgvXHIvZywgIlxcciIpICsgJyInOwot
ICBzaG91bGRCZShhLCB1bmV2YWxlZFN0cmluZyk7CisgICAgdmFyIHVuZXZhbGVkU3RyaW5nID0g
JyInICsgYi5yZXBsYWNlKC9cXC9nLCAiXFxcXCIpLnJlcGxhY2UoLyIvZywgIlwiIikucmVwbGFj
ZSgvXG4vZywgIlxcbiIpLnJlcGxhY2UoL1xyL2csICJcXHIiKSArICciJzsKKyAgICBzaG91bGRC
ZShhLCB1bmV2YWxlZFN0cmluZyk7CiB9CiAKIGZ1bmN0aW9uIHNob3VsZEV2YWx1YXRlVG8oYWN0
dWFsLCBleHBlY3RlZCkgewotICAvLyBBIGdlbmVyYWwtcHVycG9zZSBjb21wYXJhdG9yLiAgJ2Fj
dHVhbCcgc2hvdWxkIGJlIGEgc3RyaW5nIHRvIGJlCi0gIC8vIGV2YWx1YXRlZCwgYXMgZm9yIHNo
b3VsZEJlKCkuICdleHBlY3RlZCcgbWF5IGJlIGFueSB0eXBlIGFuZCB3aWxsIGJlCi0gIC8vIHVz
ZWQgd2l0aG91dCBiZWluZyBldmFsJ2VkLgotICBpZiAoZXhwZWN0ZWQgPT0gbnVsbCkgewotICAg
IC8vIERvIHRoaXMgYmVmb3JlIHRoZSBvYmplY3QgdGVzdCwgc2luY2UgbnVsbCBpcyBvZiB0eXBl
ICdvYmplY3QnLgotICAgIHNob3VsZEJlTnVsbChhY3R1YWwpOwotICB9IGVsc2UgaWYgKHR5cGVv
ZiBleHBlY3RlZCA9PSAidW5kZWZpbmVkIikgewotICAgIHNob3VsZEJlVW5kZWZpbmVkKGFjdHVh
bCk7Ci0gIH0gZWxzZSBpZiAodHlwZW9mIGV4cGVjdGVkID09ICJmdW5jdGlvbiIpIHsKLSAgICAv
LyBBbGwgdGhpcyBmdXNzIGlzIHRvIGF2b2lkIHRoZSBzdHJpbmctYXJnIHdhcm5pbmcgZnJvbSBz
aG91bGRCZSgpLgotICAgIHRyeSB7Ci0gICAgICBhY3R1YWxWYWx1ZSA9IGV2YWwoYWN0dWFsKTsK
LSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICB0ZXN0RmFpbGVkKCJFdmFsdWF0aW5nICIgKyBhY3R1
YWwgKyAiOiBUaHJldyBleGNlcHRpb24gIiArIGUpOwotICAgICAgcmV0dXJuOworICAgIC8vIEEg
Z2VuZXJhbC1wdXJwb3NlIGNvbXBhcmF0b3IuICAnYWN0dWFsJyBzaG91bGQgYmUgYSBzdHJpbmcg
dG8gYmUKKyAgICAvLyBldmFsdWF0ZWQsIGFzIGZvciBzaG91bGRCZSgpLiAnZXhwZWN0ZWQnIG1h
eSBiZSBhbnkgdHlwZSBhbmQgd2lsbCBiZQorICAgIC8vIHVzZWQgd2l0aG91dCBiZWluZyBldmFs
J2VkLgorICAgIGlmIChleHBlY3RlZCA9PSBudWxsKSB7CisgICAgICAgIC8vIERvIHRoaXMgYmVm
b3JlIHRoZSBvYmplY3QgdGVzdCwgc2luY2UgbnVsbCBpcyBvZiB0eXBlICdvYmplY3QnLgorICAg
ICAgICBzaG91bGRCZU51bGwoYWN0dWFsKTsKKyAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBlY3Rl
ZCA9PSAidW5kZWZpbmVkIikgeworICAgICAgICBzaG91bGRCZVVuZGVmaW5lZChhY3R1YWwpOwor
ICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cGVjdGVkID09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAg
Ly8gQWxsIHRoaXMgZnVzcyBpcyB0byBhdm9pZCB0aGUgc3RyaW5nLWFyZyB3YXJuaW5nIGZyb20g
c2hvdWxkQmUoKS4KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGFjdHVhbFZhbHVlID0gZXZh
bChhY3R1YWwpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJFdmFsdWF0aW5nICIgKyBhY3R1YWwgKyAiOiBUaHJldyBleGNlcHRpb24gIiArIGUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHNob3VsZEJlKCInIiArIGFjdHVh
bFZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvXG4vZywgIiIpICsgIiciLAorICAgICAgICAgICAg
ICAgICAiJyIgKyBleHBlY3RlZC50b1N0cmluZygpLnJlcGxhY2UoL1xuL2csICIiKSArICInIik7
CisgICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT0gIm9iamVjdCIpIHsKKyAgICAgICAg
c2hvdWxkQmVUcnVlKGFjdHVhbCArICIgPT0gJyIgKyBleHBlY3RlZCArICInIik7CisgICAgfSBl
bHNlIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT0gInN0cmluZyIpIHsKKyAgICAgICAgc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCk7CisgICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT0gImJv
b2xlYW4iKSB7CisgICAgICAgIHNob3VsZEJlKCJ0eXBlb2YgIiArIGFjdHVhbCwgIidib29sZWFu
JyIpOworICAgICAgICBpZiAoZXhwZWN0ZWQpCisgICAgICAgICAgICBzaG91bGRCZVRydWUoYWN0
dWFsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2hvdWxkQmVGYWxzZShhY3R1YWwpOwor
ICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cGVjdGVkID09ICJudW1iZXIiKSB7CisgICAgICAgIHNo
b3VsZEJlKGFjdHVhbCwgc3RyaW5naWZ5KGV4cGVjdGVkKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZGVidWcoZXhwZWN0ZWQgKyAiIGlzIHVua25vd24gdHlwZSAiICsgdHlwZW9mIGV4cGVjdGVk
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGFjdHVhbCwgIiciICArZXhwZWN0ZWQudG9TdHJpbmco
KSArICInIik7CiAgICAgfQotICAgIHNob3VsZEJlKCInIiArIGFjdHVhbFZhbHVlLnRvU3RyaW5n
KCkucmVwbGFjZSgvXG4vZywgIiIpICsgIiciLAotICAgICAgICAgICAgICInIiArIGV4cGVjdGVk
LnRvU3RyaW5nKCkucmVwbGFjZSgvXG4vZywgIiIpICsgIiciKTsKLSAgfSBlbHNlIGlmICh0eXBl
b2YgZXhwZWN0ZWQgPT0gIm9iamVjdCIpIHsKLSAgICBzaG91bGRCZVRydWUoYWN0dWFsICsgIiA9
PSAnIiArIGV4cGVjdGVkICsgIiciKTsKLSAgfSBlbHNlIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT0g
InN0cmluZyIpIHsKLSAgICBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKTsKLSAgfSBlbHNlIGlm
ICh0eXBlb2YgZXhwZWN0ZWQgPT0gImJvb2xlYW4iKSB7Ci0gICAgc2hvdWxkQmUoInR5cGVvZiAi
ICsgYWN0dWFsLCAiJ2Jvb2xlYW4nIik7Ci0gICAgaWYgKGV4cGVjdGVkKQotICAgICAgc2hvdWxk
QmVUcnVlKGFjdHVhbCk7Ci0gICAgZWxzZQotICAgICAgc2hvdWxkQmVGYWxzZShhY3R1YWwpOwot
ICB9IGVsc2UgaWYgKHR5cGVvZiBleHBlY3RlZCA9PSAibnVtYmVyIikgewotICAgIHNob3VsZEJl
KGFjdHVhbCwgc3RyaW5naWZ5KGV4cGVjdGVkKSk7Ci0gIH0gZWxzZSB7Ci0gICAgZGVidWcoZXhw
ZWN0ZWQgKyAiIGlzIHVua25vd24gdHlwZSAiICsgdHlwZW9mIGV4cGVjdGVkKTsKLSAgICBzaG91
bGRCZVRydWUoYWN0dWFsLCAiJyIgICtleHBlY3RlZC50b1N0cmluZygpICsgIiciKTsKLSAgfQog
fQogCiBmdW5jdGlvbiBzaG91bGRCZU5vblplcm8oX2EpCiB7Ci0gIHZhciBleGNlcHRpb247Ci0g
IHZhciBfYXY7Ci0gIHRyeSB7Ci0gICAgIF9hdiA9IGV2YWwoX2EpOwotICB9IGNhdGNoIChlKSB7
Ci0gICAgIGV4Y2VwdGlvbiA9IGU7Ci0gIH0KLQotICBpZiAoZXhjZXB0aW9uKQotICAgIHRlc3RG
YWlsZWQoX2EgKyAiIHNob3VsZCBiZSBub24temVyby4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNl
cHRpb24pOwotICBlbHNlIGlmIChfYXYgIT0gMCkKLSAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBu
b24temVyby4iKTsKLSAgZWxzZQotICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSBub24t
emVyby4gV2FzICIgKyBfYXYpOworICAgIHZhciBleGNlcHRpb247CisgICAgdmFyIF9hdjsKKyAg
ICB0cnkgeworICAgICAgICBfYXYgPSBldmFsKF9hKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGV4Y2VwdGlvbiA9IGU7CisgICAgfQorCisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAg
dGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIG5vbi16ZXJvLiBUaHJldyBleGNlcHRpb24gIiAr
IGV4Y2VwdGlvbik7CisgICAgZWxzZSBpZiAoX2F2ICE9IDApCisgICAgICAgIHRlc3RQYXNzZWQo
X2EgKyAiIGlzIG5vbi16ZXJvLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZChfYSAr
ICIgc2hvdWxkIGJlIG5vbi16ZXJvLiBXYXMgIiArIF9hdik7CiB9CiAKIGZ1bmN0aW9uIHNob3Vs
ZEJlTm9uTnVsbChfYSkKIHsKLSAgdmFyIGV4Y2VwdGlvbjsKLSAgdmFyIF9hdjsKLSAgdHJ5IHsK
LSAgICAgX2F2ID0gZXZhbChfYSk7Ci0gIH0gY2F0Y2ggKGUpIHsKLSAgICAgZXhjZXB0aW9uID0g
ZTsKLSAgfQotCi0gIGlmIChleGNlcHRpb24pCi0gICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxk
IGJlIG5vbi1udWxsLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbik7Ci0gIGVsc2UgaWYg
KF9hdiAhPSBudWxsKQotICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzIG5vbi1udWxsLiIpOwotICBl
bHNlCi0gICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIG5vbi1udWxsLiBXYXMgIiArIF9h
dik7CisgICAgdmFyIGV4Y2VwdGlvbjsKKyAgICB2YXIgX2F2OworICAgIHRyeSB7CisgICAgICAg
IF9hdiA9IGV2YWwoX2EpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXhjZXB0aW9uID0g
ZTsKKyAgICB9CisKKyAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICB0ZXN0RmFpbGVkKF9hICsg
IiBzaG91bGQgYmUgbm9uLW51bGwuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKKyAg
ICBlbHNlIGlmIChfYXYgIT0gbnVsbCkKKyAgICAgICAgdGVzdFBhc3NlZChfYSArICIgaXMgbm9u
LW51bGwuIik7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUg
bm9uLW51bGwuIFdhcyAiICsgX2F2KTsKIH0KIAogZnVuY3Rpb24gc2hvdWxkQmVVbmRlZmluZWQo
X2EpCiB7Ci0gIHZhciBleGNlcHRpb247Ci0gIHZhciBfYXY7Ci0gIHRyeSB7Ci0gICAgIF9hdiA9
IGV2YWwoX2EpOwotICB9IGNhdGNoIChlKSB7Ci0gICAgIGV4Y2VwdGlvbiA9IGU7Ci0gIH0KLQot
ICBpZiAoZXhjZXB0aW9uKQotICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSB1bmRlZmlu
ZWQuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKLSAgZWxzZSBpZiAodHlwZW9mIF9h
diA9PSAidW5kZWZpbmVkIikKLSAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyB1bmRlZmluZWQuIik7
Ci0gIGVsc2UKLSAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgdW5kZWZpbmVkLiBXYXMg
IiArIF9hdik7CisgICAgdmFyIGV4Y2VwdGlvbjsKKyAgICB2YXIgX2F2OworICAgIHRyeSB7Cisg
ICAgICAgIF9hdiA9IGV2YWwoX2EpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXhjZXB0
aW9uID0gZTsKKyAgICB9CisKKyAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICB0ZXN0RmFpbGVk
KF9hICsgIiBzaG91bGQgYmUgdW5kZWZpbmVkLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlv
bik7CisgICAgZWxzZSBpZiAodHlwZW9mIF9hdiA9PSAidW5kZWZpbmVkIikKKyAgICAgICAgdGVz
dFBhc3NlZChfYSArICIgaXMgdW5kZWZpbmVkLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZh
aWxlZChfYSArICIgc2hvdWxkIGJlIHVuZGVmaW5lZC4gV2FzICIgKyBfYXYpOwogfQogCiBmdW5j
dGlvbiBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbChfYSwgX2IpIHsKQEAgLTI0MiwyNyArMjk1
LDI3IEBAIGZ1bmN0aW9uIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKF9hLCBfYikgewogCiBm
dW5jdGlvbiBzaG91bGRUaHJvdyhfYSwgX2UpCiB7Ci0gIHZhciBleGNlcHRpb247Ci0gIHZhciBf
YXY7Ci0gIHRyeSB7Ci0gICAgIF9hdiA9IGV2YWwoX2EpOwotICB9IGNhdGNoIChlKSB7Ci0gICAg
IGV4Y2VwdGlvbiA9IGU7Ci0gIH0KLQotICB2YXIgX2V2OwotICBpZiAoX2UpCi0gICAgICBfZXYg
PSAgZXZhbChfZSk7Ci0KLSAgaWYgKGV4Y2VwdGlvbikgewotICAgIGlmICh0eXBlb2YgX2UgPT0g
InVuZGVmaW5lZCIgfHwgZXhjZXB0aW9uID09IF9ldikKLSAgICAgIHRlc3RQYXNzZWQoX2EgKyAi
IHRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uICsgIi4iKTsKKyAgICB2YXIgZXhjZXB0aW9u
OworICAgIHZhciBfYXY7CisgICAgdHJ5IHsKKyAgICAgICAgX2F2ID0gZXZhbChfYSk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBleGNlcHRpb24gPSBlOworICAgIH0KKworICAgIHZhciBf
ZXY7CisgICAgaWYgKF9lKQorICAgICAgICBfZXYgPSAgZXZhbChfZSk7CisKKyAgICBpZiAoZXhj
ZXB0aW9uKSB7CisgICAgICAgIGlmICh0eXBlb2YgX2UgPT0gInVuZGVmaW5lZCIgfHwgZXhjZXB0
aW9uID09IF9ldikKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoX2EgKyAiIHRocmV3IGV4Y2VwdGlv
biAiICsgZXhjZXB0aW9uICsgIi4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEZh
aWxlZChfYSArICIgc2hvdWxkIHRocm93ICIgKyAodHlwZW9mIF9lID09ICJ1bmRlZmluZWQiID8g
ImFuIGV4Y2VwdGlvbiIgOiBfZXYpICsgIi4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24g
KyAiLiIpOworICAgIH0gZWxzZSBpZiAodHlwZW9mIF9hdiA9PSAidW5kZWZpbmVkIikKKyAgICAg
ICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIHRocm93ICIgKyAodHlwZW9mIF9lID09ICJ1bmRl
ZmluZWQiID8gImFuIGV4Y2VwdGlvbiIgOiBfZXYpICsgIi4gV2FzIHVuZGVmaW5lZC4iKTsKICAg
ICBlbHNlCi0gICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgdGhyb3cgIiArICh0eXBlb2Yg
X2UgPT0gInVuZGVmaW5lZCIgPyAiYW4gZXhjZXB0aW9uIiA6IF9ldikgKyAiLiBUaHJldyBleGNl
cHRpb24gIiArIGV4Y2VwdGlvbiArICIuIik7Ci0gIH0gZWxzZSBpZiAodHlwZW9mIF9hdiA9PSAi
dW5kZWZpbmVkIikKLSAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgdGhyb3cgIiArICh0eXBl
b2YgX2UgPT0gInVuZGVmaW5lZCIgPyAiYW4gZXhjZXB0aW9uIiA6IF9ldikgKyAiLiBXYXMgdW5k
ZWZpbmVkLiIpOwotICBlbHNlCi0gICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIHRocm93ICIg
KyAodHlwZW9mIF9lID09ICJ1bmRlZmluZWQiID8gImFuIGV4Y2VwdGlvbiIgOiBfZXYpICsgIi4g
V2FzICIgKyBfYXYgKyAiLiIpOworICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgdGhy
b3cgIiArICh0eXBlb2YgX2UgPT0gInVuZGVmaW5lZCIgPyAiYW4gZXhjZXB0aW9uIiA6IF9ldikg
KyAiLiBXYXMgIiArIF9hdiArICIuIik7CiB9CiAKIGZ1bmN0aW9uIGdjKCkgewpAQCAtMjc3LDcg
KzMzMCw3IEBAIGZ1bmN0aW9uIGdjKCkgewogICAgICAgICAgICAgZ2NSZWMobi0xKTsKICAgICAg
ICAgfQogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykKLSAgICAgICAgICAg
IGdjUmVjKDEwKQorICAgICAgICAgICAgZ2NSZWMoMTApOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9nZXRCQm94LWpzLnN2ZyBiL0xheW91dFRlc3RzL3N2
Zy9jdXN0b20vZ2V0QkJveC1qcy5zdmcKaW5kZXggZjNiNjNkYS4uZDA1ZmQyNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9nZXRCQm94LWpzLnN2ZworKysgYi9MYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL2dldEJCb3gtanMuc3ZnCkBAIC0zMyw3ICszMyw3IEBACiAgICAgICAgICAg
ICAgICAgICAgIHJlY3Quc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOwogICAg
ICAgICAgICAgICAgICAgICBnLmFwcGVuZENoaWxkKHJlY3QpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAocmVjdC5nZXRCQm94KCkud2lkdGggPiAwICYmIHJlY3QuZ2V0QkJveCgpLmhlaWdodCA+
IDApIHsKLSAgICAgICAgICAgICAgICAgICAgdGV4dE5vZGUuZGF0YSA9ICJQYXNzZWQiOworICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4dE5vZGUuZGF0YSA9ICJQYXNzZWQiOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QueGh0bWwgYi9M
YXlvdXRUZXN0cy9zdmcvY3VzdG9tL2dldEJvdW5kaW5nQ2xpZW50UmVjdC54aHRtbAppbmRleCAy
MDE3NWUzLi44YWZkZjc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2dldEJv
dW5kaW5nQ2xpZW50UmVjdC54aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2dldEJv
dW5kaW5nQ2xpZW50UmVjdC54aHRtbApAQCAtMSwxMCArMSwxMCBAQAogPGh0bWwgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogPGhlYWQ+CiA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHkgc3R5bGU9Im1hcmdpbjowOyBib3JkZXI6MDsgcGFkZGluZzow
OyI+CiAKKzxkaXYgc3R5bGU9IndpZHRoOjUwMHB4O2hlaWdodD0xMDBweDsiPgogPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIKICAgICAgd2lkdGg9
IjEwMHB4IiBoZWlnaHQ9IjEwMHB4Ij4KICAgPHJlY3QgaWQ9InIxIiB4PSIyMCIgeT0iMzAiIHdp
ZHRoPSI0MCIgaGVpZ2h0PSI1MCIgZmlsbD0iYmx1ZSIgLz4KQEAgLTE5LDEzICsxOSwxNSBAQAog
ICAgIDxyZWN0IGlkPSJyNCIgeD0iMCIgeT0iNTBweCIgd2lkdGg9IjIxMHB4IiBoZWlnaHQ9IjYw
cHgiIGZpbGw9Im9yYW5nZSIgb3ZlcmZsb3c9InZpc2libGUiIC8+CiAgIDwvc3ZnPgogPC9zdmc+
Cis8L2Rpdj4KIAogPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgogPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CiAKKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1kZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNo
ZWNrcyBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBvbiBhIHJlY3RhbmdsZSIpOworZGVzY3JpcHRp
b24oIlRoaXMgdGVzdCBjaGVja3MgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgb24gcmVjdGFuZ2xl
cyIpOwogCiBkZWJ1ZygiQ2hlY2tpbmcgYSByZWN0YW5nbGUgb2YgYWJzb2x1dGUgc2l6ZSBhdCBh
YnNvbHV0ZSBjb29yZGluYXRlczoiKTsKIHZhciByMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyMSIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwpAQCAtNTUsNiArNTcsNyBAQCBzaG91bGRC
ZSgncjMud2lkdGgnLCAnMjEwJyk7CiBzaG91bGRCZSgncjMuaGVpZ2h0JywgJzUwJyk7CiBzaG91
bGRCZSgncjMucmlnaHQnLCAnNTEwJyk7CiBzaG91bGRCZSgncjMuYm90dG9tJywgJzUwJyk7CisK
IHZhciByNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyNCIpLmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpOwogc2hvdWxkQmUoJ3I0LmxlZnQnLCAnMzAwJyk7CiBzaG91bGRCZSgncjQudG9wJywg
JzUwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvem9vbS9wYWdlL3pvb20tZ2V0Qm91
bmRpbmdDbGllbnRSZWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy96b29tL3BhZ2Uv
em9vbS1nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjU0MTYyZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdmcvem9vbS9wYWdlL3pvb20tZ2V0Qm91bmRpbmdDbGllbnRSZWN0LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDM4IEBACitUaGlzIHRlc3QgY2hlY2tzIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
IG9uIHJlY3RhbmdsZXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitDaGVja2luZyBh
IHJlY3RhbmdsZSBvZiBhYnNvbHV0ZSBzaXplIGF0IGFic29sdXRlIGNvb3JkaW5hdGVzOgorUEFT
UyByMS5sZWZ0IHNob3VsZCBiZSAyMCArLy0gMS4gV2FzIDIwLgorUEFTUyByMS50b3Agc2hvdWxk
IGJlIDMwICsvLSAxLiBXYXMgMzAuCitQQVNTIHIxLndpZHRoIHNob3VsZCBiZSA0MCArLy0gMS4g
V2FzIDQxLgorUEFTUyByMS5oZWlnaHQgc2hvdWxkIGJlIDUwICsvLSAxLiBXYXMgNTEuCitQQVNT
IHIxLnJpZ2h0IHNob3VsZCBiZSA2MCArLy0gMS4gV2FzIDYxLgorUEFTUyByMS5ib3R0b20gc2hv
dWxkIGJlIDgwICsvLSAxLiBXYXMgODEuCisKK0NoZWNraW5nIGEgcmVzaXplZCByZWN0YW5nbGUg
YXQgcmVsYXRpdmUgY29vcmRpbmF0ZXM6CitQQVNTIHIyLmxlZnQgc2hvdWxkIGJlIDE4MCArLy0g
MS4gV2FzIDE3OS4KK1BBU1MgcjIudG9wIHNob3VsZCBiZSAxNSArLy0gMS4gV2FzIDE1LgorUEFT
UyByMi53aWR0aCBzaG91bGQgYmUgMTYwICsvLSAxLiBXYXMgMTYwLgorUEFTUyByMi5oZWlnaHQg
c2hvdWxkIGJlIDI1ICsvLSAxLiBXYXMgMjYuCitQQVNTIHIyLnJpZ2h0IHNob3VsZCBiZSAzNDAg
Ky8tIDEuIFdhcyAzMzkuCitQQVNTIHIyLmJvdHRvbSBzaG91bGQgYmUgNDAgKy8tIDEuIFdhcyA0
MS4KKworQ2hlY2tpbmcgcmVjdGFuZ2xlcyB3aXRoIG92ZXJmbG93OgorUEFTUyByMy5sZWZ0IHNo
b3VsZCBiZSAzMDAgKy8tIDEuIFdhcyAyOTkuCitQQVNTIHIzLnRvcCBzaG91bGQgYmUgMCArLy0g
MS4gV2FzIDAuCitQQVNTIHIzLndpZHRoIHNob3VsZCBiZSAyMTAgKy8tIDEuIFdhcyAyMTAuCitQ
QVNTIHIzLmhlaWdodCBzaG91bGQgYmUgNTAgKy8tIDEuIFdhcyA1MC4KK1BBU1MgcjMucmlnaHQg
c2hvdWxkIGJlIDUxMCArLy0gMS4gV2FzIDUwOS4KK1BBU1MgcjMuYm90dG9tIHNob3VsZCBiZSA1
MCArLy0gMS4gV2FzIDUwLgorUEFTUyByNC5sZWZ0IHNob3VsZCBiZSAzMDAgKy8tIDEuIFdhcyAy
OTkuCitQQVNTIHI0LnRvcCBzaG91bGQgYmUgNTAgKy8tIDEuIFdhcyA1MC4KK1BBU1MgcjQud2lk
dGggc2hvdWxkIGJlIDIxMCArLy0gMS4gV2FzIDIxMC4KK1BBU1MgcjQuaGVpZ2h0IHNob3VsZCBi
ZSA2MCArLy0gMS4gV2FzIDYxLgorUEFTUyByNC5yaWdodCBzaG91bGQgYmUgNTEwICsvLSAxLiBX
YXMgNTA5LgorUEFTUyByNC5ib3R0b20gc2hvdWxkIGJlIDExMCArLy0gMS4gV2FzIDExMS4KKwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N2Zy96b29tL3BhZ2Uvem9vbS1nZXRCb3VuZGluZ0NsaWVudFJl
Y3QueGh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvem9vbS9wYWdlL3pvb20tZ2V0Qm91bmRpbmdDbGll
bnRSZWN0LnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxOTBhMTkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvem9vbS9wYWdlL3pvb20tZ2V0Qm91
bmRpbmdDbGllbnRSZWN0LnhodG1sCkBAIC0wLDAgKzEsODQgQEAKKzxodG1sIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PC9oZWFkPgorPGJvZHkgc3R5bGU9Im1hcmdpbjowOyBib3JkZXI6MDsgcGFkZGluZzowOyI+CisK
KzxkaXYgc3R5bGU9IndpZHRoOjUwMHB4O2hlaWdodD0xMDBweCI+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIgorICAgICB3aWR0aD0iMTAwcHgi
IGhlaWdodD0iMTAwcHgiPgorICA8cmVjdCBpZD0icjEiIHg9IjIwIiB5PSIzMCIgd2lkdGg9IjQw
IiBoZWlnaHQ9IjUwIiBmaWxsPSJibHVlIiAvPgorPC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIKKyAgICAgd2lkdGg9IjIwMHB4IiBoZWln
aHQ9IjEwMHB4IiB2aWV3Qm94PSIwIDAgNTAgMjAwIgorICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlv
PSJub25lIj4KKyAgPHJlY3QgaWQ9InIyIiB4PSIyMCIgeT0iMzAiIHdpZHRoPSI0MCIgaGVpZ2h0
PSI1MCIgZmlsbD0iZ3JlZW4iIC8+Cis8L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIgorICAgICB3aWR0aD0iMjAwcHgiIGhlaWdodD0iMTAw
cHgiPgorICA8c3ZnIHg9IjAiIHk9IjAiIHdpZHRoPSIxMDBweCIgaGVpZ2h0PSIxMDBweCI+Cisg
ICAgPHJlY3QgaWQ9InIzIiB4PSIwIiB5PSIwIiB3aWR0aD0iMjEwcHgiIGhlaWdodD0iNTBweCIg
ZmlsbD0ieWVsbG93IiBvdmVyZmxvdz0iaGlkZGVuIiAvPgorICAgIDxyZWN0IGlkPSJyNCIgeD0i
MCIgeT0iNTBweCIgd2lkdGg9IjIxMHB4IiBoZWlnaHQ9IjYwcHgiIGZpbGw9Im9yYW5nZSIgb3Zl
cmZsb3c9InZpc2libGUiIC8+CisgIDwvc3ZnPgorPC9zdmc+Cis8L2Rpdj4KKworPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+
CitmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNo
ZWNrcyBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBvbiByZWN0YW5nbGVzIik7CisKKyAgICBkZWJ1
ZygiQ2hlY2tpbmcgYSByZWN0YW5nbGUgb2YgYWJzb2x1dGUgc2l6ZSBhdCBhYnNvbHV0ZSBjb29y
ZGluYXRlczoiKTsKKyAgICByMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyMSIpLmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpOworICAgIHNob3VsZEJlQXBwcm94KCdyMS5sZWZ0JywgJzIwJywg
JzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgncjEudG9wJywgJzMwJywgJzEnKTsKKyAgICBzaG91
bGRCZUFwcHJveCgncjEud2lkdGgnLCAnNDAnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdy
MS5oZWlnaHQnLCAnNTAnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdyMS5yaWdodCcsICc2
MCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ3IxLmJvdHRvbScsICc4MCcsICcxJyk7Cisg
ICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIkNoZWNraW5nIGEgcmVzaXplZCByZWN0YW5nbGUg
YXQgcmVsYXRpdmUgY29vcmRpbmF0ZXM6Iik7CisgICAgcjIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicjIiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICBzaG91bGRCZUFwcHJveCgn
cjIubGVmdCcsICcxODAnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdyMi50b3AnLCAnMTUn
LCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdyMi53aWR0aCcsICcxNjAnLCAnMScpOworICAg
IHNob3VsZEJlQXBwcm94KCdyMi5oZWlnaHQnLCAnMjUnLCAnMScpOworICAgIHNob3VsZEJlQXBw
cm94KCdyMi5yaWdodCcsICczNDAnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdyMi5ib3R0
b20nLCAnNDAnLCAnMScpOworICAgIGRlYnVnKCIiKTsKKworICAgIGRlYnVnKCJDaGVja2luZyBy
ZWN0YW5nbGVzIHdpdGggb3ZlcmZsb3c6Iik7CisgICAgcjMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicjMiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICBzaG91bGRCZUFwcHJveCgn
cjMubGVmdCcsICczMDAnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdyMy50b3AnLCAnMCcs
ICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ3IzLndpZHRoJywgJzIxMCcsICcxJyk7CisgICAg
c2hvdWxkQmVBcHByb3goJ3IzLmhlaWdodCcsICc1MCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHBy
b3goJ3IzLnJpZ2h0JywgJzUxMCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ3IzLmJvdHRv
bScsICc1MCcsICcxJyk7CisKKyAgICByNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyNCIp
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgIHNob3VsZEJlQXBwcm94KCdyNC5sZWZ0Jywg
JzMwMCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ3I0LnRvcCcsICc1MCcsICcxJyk7Cisg
ICAgc2hvdWxkQmVBcHByb3goJ3I0LndpZHRoJywgJzIxMCcsICcxJyk7CisgICAgc2hvdWxkQmVB
cHByb3goJ3I0LmhlaWdodCcsICc2MCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ3I0LnJp
Z2h0JywgJzUxMCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ3I0LmJvdHRvbScsICcxMTAn
LCAnMScpOworICAgIGRlYnVnKCIiKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0PgoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5wb3N0Wm9vbUNhbGxiYWNr
ID0gZXhlY3V0ZVRlc3Q7Cit9IGVsc2UgeworICAgIGRlYnVnKCJUaGlzIHRlc3Qgb25seSB3b3Jr
cyBpbiBEUlQuIik7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+dmFyIHpvb21D
b3VudCA9IDM7PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RQYWdlWm9v
bS5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N2Zy96b29tL3BhZ2Uvem9vbS16b29tLWNvb3Jkcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdmcvem9vbS9wYWdlL3pvb20tem9vbS1jb29yZHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ZTFiNTIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdmcvem9vbS9wYWdlL3pvb20tem9vbS1jb29yZHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTE1IEBACitUZXN0CitUZXN0CitUZXN0CitUaGlzIHRlc3QgY2hlY2tzIGdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpIG9uIHpvb21lZCBIVE1MIGFuZCBTVkcgZWxlbWVudHMKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitHcmF5IHJlY3RhbmdsZXM6IDEwMHg1MAorR3JlZW4g
cmVjdGFuZ2xlczogMTAweDUwLCB6b29tPTIwMCUKK0JsdWUgcmVjdGFuZ2xlczogMjAweDEwMCwg
em9vbT01MCUKKworQ2hlY2tpbmcgSFRNTCBlbGVtZW50czoKKworUEFTUyBkaXYxLmxlZnQgc2hv
dWxkIGJlIDAgKy8tIDEuIFdhcyAwLgorUEFTUyBkaXYxLnRvcCBzaG91bGQgYmUgMCArLy0gMS4g
V2FzIDAuCitQQVNTIGRpdjEud2lkdGggc2hvdWxkIGJlIDEwMCArLy0gMS4gV2FzIDEwMC4KK1BB
U1MgZGl2MS5oZWlnaHQgc2hvdWxkIGJlIDUwICsvLSAxLiBXYXMgNTAuCitQQVNTIGRpdjEucmln
aHQgc2hvdWxkIGJlIDEwMCArLy0gMS4gV2FzIDEwMC4KK1BBU1MgZGl2MS5ib3R0b20gc2hvdWxk
IGJlIDUwICsvLSAxLiBXYXMgNTAuCisKK1BBU1MgZGl2Mi5sZWZ0IHNob3VsZCBiZSAwICsvLSAx
LiBXYXMgMC4KK1BBU1MgZGl2Mi50b3Agc2hvdWxkIGJlIDI1ICsvLSAxLiBXYXMgMjUuCitQQVNT
IGRpdjIud2lkdGggc2hvdWxkIGJlIDEwMCArLy0gMS4gV2FzIDEwMC4KK1BBU1MgZGl2Mi5oZWln
aHQgc2hvdWxkIGJlIDUwICsvLSAxLiBXYXMgNTAuCitQQVNTIGRpdjIucmlnaHQgc2hvdWxkIGJl
IDEwMCArLy0gMS4gV2FzIDEwMC4KK1BBU1MgZGl2Mi5ib3R0b20gc2hvdWxkIGJlIDc1ICsvLSAx
LiBXYXMgNzUuCisKK1BBU1MgZGl2My5sZWZ0IHNob3VsZCBiZSAwICsvLSAxLiBXYXMgMC4KK1BB
U1MgZGl2My50b3Agc2hvdWxkIGJlIDMwMCArLy0gMS4gV2FzIDMwMC4KK1BBU1MgZGl2My53aWR0
aCBzaG91bGQgYmUgMjAwICsvLSAxLiBXYXMgMjAwLgorUEFTUyBkaXYzLmhlaWdodCBzaG91bGQg
YmUgMTAwICsvLSAxLiBXYXMgMTAwLgorUEFTUyBkaXYzLnJpZ2h0IHNob3VsZCBiZSAyMDAgKy8t
IDEuIFdhcyAyMDAuCitQQVNTIGRpdjMuYm90dG9tIHNob3VsZCBiZSA0MDAgKy8tIDEuIFdhcyA0
MDAuCisKK0NoZWNraW5nIFNWRyBlbGVtZW50czoKKworUEFTUyBzdmcxLmxlZnQgc2hvdWxkIGJl
IDAgKy8tIDEuIFdhcyAwLgorUEFTUyBzdmcxLnRvcCBzaG91bGQgYmUgMjUwICsvLSAxLiBXYXMg
MjUwLgorUEFTUyBzdmcxLndpZHRoIHNob3VsZCBiZSAxNTAgKy8tIDEuIFdhcyAxNTEuCitQQVNT
IHN2ZzEuaGVpZ2h0IHNob3VsZCBiZSA1MCArLy0gMS4gV2FzIDUwLgorUEFTUyBzdmcxLnJpZ2h0
IHNob3VsZCBiZSAxNTAgKy8tIDEuIFdhcyAxNTEuCitQQVNTIHN2ZzEuYm90dG9tIHNob3VsZCBi
ZSAzMDAgKy8tIDEuIFdhcyAzMDAuCitQQVNTIHJlY3QxLmxlZnQgc2hvdWxkIGJlIDAgKy8tIDEu
IFdhcyAwLgorUEFTUyByZWN0MS50b3Agc2hvdWxkIGJlIDI1MCArLy0gMS4gV2FzIDI1MC4KK1BB
U1MgcmVjdDEud2lkdGggc2hvdWxkIGJlIDEwMCArLy0gMS4gV2FzIDEwMC4KK1BBU1MgcmVjdDEu
aGVpZ2h0IHNob3VsZCBiZSA1MCArLy0gMS4gV2FzIDUwLgorUEFTUyByZWN0MS5yaWdodCBzaG91
bGQgYmUgMTAwICsvLSAxLiBXYXMgMTAwLgorUEFTUyByZWN0MS5ib3R0b20gc2hvdWxkIGJlIDMw
MCArLy0gMS4gV2FzIDMwMC4KK1BBU1MgaW1hZ2UxLmxlZnQgc2hvdWxkIGJlIDEwMCArLy0gMS4g
V2FzIDEwMC4KK1BBU1MgaW1hZ2UxLnRvcCBzaG91bGQgYmUgMjUwICsvLSAxLiBXYXMgMjUwLgor
UEFTUyBpbWFnZTEud2lkdGggc2hvdWxkIGJlIDUwICsvLSAxLiBXYXMgNTEuCitQQVNTIGltYWdl
MS5oZWlnaHQgc2hvdWxkIGJlIDI1ICsvLSAxLiBXYXMgMjUuCitQQVNTIGltYWdlMS5yaWdodCBz
aG91bGQgYmUgMTUwICsvLSAxLiBXYXMgMTUxLgorUEFTUyBpbWFnZTEuYm90dG9tIHNob3VsZCBi
ZSAyNzUgKy8tIDEuIFdhcyAyNzUuCitQQVNTIHRleHQxLmxlZnQgc2hvdWxkIGJlIDEwMCArLy0g
MS4gV2FzIDEwMC4KK1BBU1MgdGV4dDEudG9wID49IDI1MCAtIDEgaXMgdHJ1ZQorUEFTUyB0ZXh0
MS53aWR0aCA+IDAgLSAxIGlzIHRydWUKK1BBU1MgdGV4dDEuaGVpZ2h0ID4gMCAtIDEgaXMgdHJ1
ZQorUEFTUyB0ZXh0MS5yaWdodCA+IDEwMCAtIDEgaXMgdHJ1ZQorUEFTUyB0ZXh0MS5ib3R0b20g
PiAyNTAgLSAxIGlzIHRydWUKKworUEFTUyBzdmcyLmxlZnQgc2hvdWxkIGJlIDc1ICsvLSAxLiBX
YXMgNzUuCitQQVNTIHN2ZzIudG9wIHNob3VsZCBiZSAxMDAgKy8tIDEuIFdhcyAxMDAuCitQQVNT
IHN2ZzIud2lkdGggc2hvdWxkIGJlIDE1MCArLy0gMS4gV2FzIDE1MC4KK1BBU1Mgc3ZnMi5oZWln
aHQgc2hvdWxkIGJlIDUwICsvLSAxLiBXYXMgNTAuCitQQVNTIHN2ZzIucmlnaHQgc2hvdWxkIGJl
IDIyNSArLy0gMS4gV2FzIDIyNS4KK1BBU1Mgc3ZnMi5ib3R0b20gc2hvdWxkIGJlIDE1MCArLy0g
MS4gV2FzIDE1MC4KK1BBU1MgcmVjdDIubGVmdCBzaG91bGQgYmUgNzUgKy8tIDEuIFdhcyA3NS4K
K1BBU1MgcmVjdDIudG9wIHNob3VsZCBiZSAxMDAgKy8tIDEuIFdhcyAxMDAuCitQQVNTIHJlY3Qy
LndpZHRoIHNob3VsZCBiZSAxMDAgKy8tIDEuIFdhcyAxMDAuCitQQVNTIHJlY3QyLmhlaWdodCBz
aG91bGQgYmUgNTAgKy8tIDEuIFdhcyA1MC4KK1BBU1MgcmVjdDIucmlnaHQgc2hvdWxkIGJlIDE3
NSArLy0gMS4gV2FzIDE3NS4KK1BBU1MgcmVjdDIuYm90dG9tIHNob3VsZCBiZSAxNTAgKy8tIDEu
IFdhcyAxNTAuCitQQVNTIGltYWdlMi5sZWZ0IHNob3VsZCBiZSAxNzUgKy8tIDEuIFdhcyAxNzUu
CitQQVNTIGltYWdlMi50b3Agc2hvdWxkIGJlIDEwMCArLy0gMS4gV2FzIDEwMC4KK1BBU1MgaW1h
Z2UyLndpZHRoIHNob3VsZCBiZSA1MCArLy0gMS4gV2FzIDUwLgorUEFTUyBpbWFnZTIuaGVpZ2h0
IHNob3VsZCBiZSAyNSArLy0gMS4gV2FzIDI1LgorUEFTUyBpbWFnZTIucmlnaHQgc2hvdWxkIGJl
IDIyNSArLy0gMS4gV2FzIDIyNS4KK1BBU1MgaW1hZ2UyLmJvdHRvbSBzaG91bGQgYmUgMTI1ICsv
LSAxLiBXYXMgMTI1LgorUEFTUyB0ZXh0Mi5sZWZ0IHNob3VsZCBiZSAxNzUgKy8tIDEuIFdhcyAx
NzUuCitQQVNTIHRleHQyLnRvcCA+PSAxMDAgLSAxIGlzIHRydWUKK1BBU1MgdGV4dDIud2lkdGgg
PiAwIC0gMSBpcyB0cnVlCitQQVNTIHRleHQyLmhlaWdodCA+IDAgLSAxIGlzIHRydWUKK1BBU1Mg
dGV4dDIucmlnaHQgPiAxNzUgLSAxIGlzIHRydWUKK1BBU1MgdGV4dDIuYm90dG9tID4gMTAwIC0g
MSBpcyB0cnVlCisKK1BBU1Mgc3ZnMy5sZWZ0IHNob3VsZCBiZSA5MDAgKy8tIDEuIFdhcyA5MDAu
CitQQVNTIHN2ZzMudG9wIHNob3VsZCBiZSA1MDAgKy8tIDEuIFdhcyA1MDAuCitQQVNTIHN2ZzMu
d2lkdGggc2hvdWxkIGJlIDMwMCArLy0gMS4gV2FzIDMwMC4KK1BBU1Mgc3ZnMy5oZWlnaHQgc2hv
dWxkIGJlIDEwMCArLy0gMS4gV2FzIDEwMC4KK1BBU1Mgc3ZnMy5yaWdodCBzaG91bGQgYmUgMTIw
MCArLy0gMS4gV2FzIDEyMDAuCitQQVNTIHN2ZzMuYm90dG9tIHNob3VsZCBiZSA2MDAgKy8tIDEu
IFdhcyA2MDAuCitQQVNTIHJlY3QzLmxlZnQgc2hvdWxkIGJlIDkwMCArLy0gMS4gV2FzIDkwMC4K
K1BBU1MgcmVjdDMudG9wIHNob3VsZCBiZSA1MDAgKy8tIDEuIFdhcyA1MDAuCitQQVNTIHJlY3Qz
LndpZHRoIHNob3VsZCBiZSAyMDAgKy8tIDEuIFdhcyAyMDAuCitQQVNTIHJlY3QzLmhlaWdodCBz
aG91bGQgYmUgMTAwICsvLSAxLiBXYXMgMTAwLgorUEFTUyByZWN0My5yaWdodCBzaG91bGQgYmUg
MTEwMCArLy0gMS4gV2FzIDExMDAuCitQQVNTIHJlY3QzLmJvdHRvbSBzaG91bGQgYmUgNjAwICsv
LSAxLiBXYXMgNjAwLgorUEFTUyBpbWFnZTMubGVmdCBzaG91bGQgYmUgMTEwMCArLy0gMS4gV2Fz
IDExMDAuCitQQVNTIGltYWdlMy50b3Agc2hvdWxkIGJlIDUwMCArLy0gMS4gV2FzIDUwMC4KK1BB
U1MgaW1hZ2UzLndpZHRoIHNob3VsZCBiZSAxMDAgKy8tIDEuIFdhcyAxMDAuCitQQVNTIGltYWdl
My5oZWlnaHQgc2hvdWxkIGJlIDUwICsvLSAxLiBXYXMgNTAuCitQQVNTIGltYWdlMy5yaWdodCBz
aG91bGQgYmUgMTIwMCArLy0gMS4gV2FzIDEyMDAuCitQQVNTIGltYWdlMy5ib3R0b20gc2hvdWxk
IGJlIDU1MCArLy0gMS4gV2FzIDU1MC4KK1BBU1MgdGV4dDMubGVmdCBzaG91bGQgYmUgMTEwMCAr
Ly0gMS4gV2FzIDExMDAuCitQQVNTIHRleHQzLnRvcCA+PSA1MDAgLSAxIGlzIHRydWUKK1BBU1Mg
dGV4dDMud2lkdGggPiAwIC0gMSBpcyB0cnVlCitQQVNTIHRleHQzLmhlaWdodCA+IDAgLSAxIGlz
IHRydWUKK1BBU1MgdGV4dDMucmlnaHQgPiAxMTAwIC0gMSBpcyB0cnVlCitQQVNTIHRleHQzLmJv
dHRvbSA+IDUwMCAtIDEgaXMgdHJ1ZQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL3pvb20vcGFn
ZS96b29tLXpvb20tY29vcmRzLnhodG1sIGIvTGF5b3V0VGVzdHMvc3ZnL3pvb20vcGFnZS96b29t
LXpvb20tY29vcmRzLnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3
ZDczOTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvem9vbS9wYWdlL3pvb20t
em9vbS1jb29yZHMueGh0bWwKQEAgLTAsMCArMSwxODcgQEAKKzxodG1sIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CisgICAgYm9keSB7IG1hcmdpbjowcHg7IGJvcmRlcjowcHg7IHBhZGRpbmc6MHB4OyB9
CisgICAgI2RpdjIsICNzdmcyIHsgem9vbToyMDAlOyB9CisgICAgI2RpdjMsICNzdmczIHsgem9v
bTo1MCU7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD0iZGl2MSIgc3R5
bGU9IndpZHRoOjEwMHB4O2hlaWdodDo1MHB4O2JhY2tncm91bmQtY29sb3I6Z3JheTsiPjwvZGl2
PgorPGRpdiBpZD0iZGl2MiIgc3R5bGU9IndpZHRoOjEwMHB4O2hlaWdodDo1MHB4O2JhY2tncm91
bmQtY29sb3I6Z3JlZW47Ij48L2Rpdj4KKzxkaXYgaWQ9ImRpdjMiIHN0eWxlPSJ3aWR0aDoyMDBw
eDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpibHVlOyI+PC9kaXY+Cis8ZGl2IHN0eWxl
PSJ3aWR0aDo2MDBweDtoZWlnaHQ9MTAwcHg7Ij4KKzxzdmcgaWQ9InN2ZzEiIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKKyAgICAgd2lkdGg9IjE1MHB4IiBoZWlnaHQ9IjUwcHgi
IHZpZXdCb3g9IjAgMCAxNTAgMTAwIgorICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj4K
KyAgPHJlY3QgaWQ9InJlY3QxIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwcHgiIGhlaWdodD0iMTAw
cHgiIGZpbGw9ImdyYXkiIC8+CisgIDxpbWFnZSBpZD0iaW1hZ2UxIiB4PSIxMDBweCIgeT0iMCIg
d2lkdGg9IjUwcHgiIGhlaWdodD0iNTBweCIgeGxpbms6aHJlZj0iLi4vLi4vZG9tL3Jlc291cmNl
cy9tYWduaWZ5LnBuZyIgLz4KKyAgPHRleHQgaWQ9InRleHQxIiB4PSIxMDBweCIgeT0iNzVweCI+
VGVzdDwvdGV4dD4KKzwvc3ZnPjxzdmcgaWQ9InN2ZzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIKKyAgICAgd2lkdGg9IjE1MHB4IiBoZWlnaHQ9IjUwcHgiIHZpZXdCb3g9IjAg
MCAxNTAgMTAwIgorICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj4KKyAgPHJlY3QgaWQ9
InJlY3QyIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwcHgiIGhlaWdodD0iMTAwcHgiIGZpbGw9Imdy
ZWVuIiAvPgorICA8aW1hZ2UgaWQ9ImltYWdlMiIgeD0iMTAwcHgiIHk9IjAiIHdpZHRoPSI1MHB4
IiBoZWlnaHQ9IjUwcHgiIHhsaW5rOmhyZWY9Ii4uLy4uL2RvbS9yZXNvdXJjZXMvbWFnbmlmeS5w
bmciIC8+CisgIDx0ZXh0IGlkPSJ0ZXh0MiIgeD0iMTAwcHgiIHk9Ijc1cHgiPlRlc3Q8L3RleHQ+
Cis8L3N2Zz48c3ZnIGlkPSJzdmczIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
CisgICAgIHdpZHRoPSIzMDBweCIgaGVpZ2h0PSIxMDBweCIgdmlld0JveD0iMCAwIDE1MCAxMDAi
CisgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPgorICA8cmVjdCBpZD0icmVjdDMiIHg9
IjAiIHk9IjAiIHdpZHRoPSIxMDBweCIgaGVpZ2h0PSIxMDBweCIgZmlsbD0iYmx1ZSIgLz4KKyAg
PGltYWdlIGlkPSJpbWFnZTMiIHg9IjEwMHB4IiB5PSIwIiB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1
MHB4IiB4bGluazpocmVmPSIuLi8uLi9kb20vcmVzb3VyY2VzL21hZ25pZnkucG5nIiAvPgorICA8
dGV4dCBpZD0idGV4dDMiIHg9IjEwMHB4IiB5PSI3NXB4Ij5UZXN0PC90ZXh0PgorPC9zdmc+Cis8
L2Rpdj4KKworPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKKyAgICBkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IGNoZWNrcyBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBvbiB6b29tZWQg
SFRNTCBhbmQgU1ZHIGVsZW1lbnRzIik7CisKKyAgICBkZWJ1ZygiR3JheSByZWN0YW5nbGVzOiAx
MDB4NTAiKTsKKyAgICBkZWJ1ZygiR3JlZW4gcmVjdGFuZ2xlczogMTAweDUwLCB6b29tPTIwMCUi
KTsKKyAgICBkZWJ1ZygiQmx1ZSByZWN0YW5nbGVzOiAyMDB4MTAwLCB6b29tPTUwJSIpOworICAg
IGRlYnVnKCIiKTsKKworICAgIGRlYnVnKCJDaGVja2luZyBIVE1MIGVsZW1lbnRzOiIpOworICAg
IGRlYnVnKCIiKTsKKworICAgIGRpdjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2MSIp
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgIHNob3VsZEJlQXBwcm94KCdkaXYxLmxlZnQn
LCAnMCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ2RpdjEudG9wJywgJzAnLCAnMScpOwor
ICAgIHNob3VsZEJlQXBwcm94KCdkaXYxLndpZHRoJywgJzEwMCcsICcxJyk7CisgICAgc2hvdWxk
QmVBcHByb3goJ2RpdjEuaGVpZ2h0JywgJzUwJywgJzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgn
ZGl2MS5yaWdodCcsICcxMDAnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdkaXYxLmJvdHRv
bScsICc1MCcsICcxJyk7CisgICAgZGVidWcoIiIpOworCisgICAgZGl2MiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkaXYyIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgc2hvdWxk
QmVBcHByb3goJ2RpdjIubGVmdCcsICcwJywgJzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgnZGl2
Mi50b3AnLCAnMjUnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdkaXYyLndpZHRoJywgJzEw
MCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ2RpdjIuaGVpZ2h0JywgJzUwJywgJzEnKTsK
KyAgICBzaG91bGRCZUFwcHJveCgnZGl2Mi5yaWdodCcsICcxMDAnLCAnMScpOworICAgIHNob3Vs
ZEJlQXBwcm94KCdkaXYyLmJvdHRvbScsICc3NScsICcxJyk7CisgICAgZGVidWcoIiIpOworCisg
ICAgZGl2MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYzIikuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7CisgICAgc2hvdWxkQmVBcHByb3goJ2RpdjMubGVmdCcsICcwJywgJzEnKTsKKyAg
ICBzaG91bGRCZUFwcHJveCgnZGl2My50b3AnLCAnMzAwJywgJzEnKTsKKyAgICBzaG91bGRCZUFw
cHJveCgnZGl2My53aWR0aCcsICcyMDAnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdkaXYz
LmhlaWdodCcsICcxMDAnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdkaXYzLnJpZ2h0Jywg
JzIwMCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ2RpdjMuYm90dG9tJywgJzQwMCcsICcx
Jyk7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIkNoZWNraW5nIFNWRyBlbGVtZW50czoi
KTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBzdmcxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InN2ZzEiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICBzaG91bGRCZUFwcHJveCgnc3Zn
MS5sZWZ0JywgJzAnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdzdmcxLnRvcCcsICcyNTAn
LCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdzdmcxLndpZHRoJywgJzE1MCcsICcxJyk7Cisg
ICAgc2hvdWxkQmVBcHByb3goJ3N2ZzEuaGVpZ2h0JywgJzUwJywgJzEnKTsKKyAgICBzaG91bGRC
ZUFwcHJveCgnc3ZnMS5yaWdodCcsICcxNTAnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdz
dmcxLmJvdHRvbScsICczMDAnLCAnMScpOworICAgIHJlY3QxID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlY3QxIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgc2hvdWxkQmVBcHBy
b3goJ3JlY3QxLmxlZnQnLCAnMCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ3JlY3QxLnRv
cCcsICcyNTAnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdyZWN0MS53aWR0aCcsICcxMDAn
LCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdyZWN0MS5oZWlnaHQnLCAnNTAnLCAnMScpOwor
ICAgIHNob3VsZEJlQXBwcm94KCdyZWN0MS5yaWdodCcsICcxMDAnLCAnMScpOworICAgIHNob3Vs
ZEJlQXBwcm94KCdyZWN0MS5ib3R0b20nLCAnMzAwJywgJzEnKTsKKyAgICBpbWFnZTEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiaW1hZ2UxIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Cisg
ICAgc2hvdWxkQmVBcHByb3goJ2ltYWdlMS5sZWZ0JywgJzEwMCcsICcxJyk7CisgICAgc2hvdWxk
QmVBcHByb3goJ2ltYWdlMS50b3AnLCAnMjUwJywgJzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgn
aW1hZ2UxLndpZHRoJywgJzUwJywgJzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgnaW1hZ2UxLmhl
aWdodCcsICcyNScsICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ2ltYWdlMS5yaWdodCcsICcx
NTAnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdpbWFnZTEuYm90dG9tJywgJzI3NScsICcx
Jyk7CisgICAgdGV4dDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dDEiKS5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTsKKyAgICBzaG91bGRCZUFwcHJveCgndGV4dDEubGVmdCcsICcxMDAn
LCAnMScpOworICAgIHNob3VsZEJlKCd0ZXh0MS50b3AgPj0gMjUwIC0gMScsICd0cnVlJyk7Cisg
ICAgc2hvdWxkQmUoJ3RleHQxLndpZHRoID4gMCAtIDEnLCAndHJ1ZScpOworICAgIHNob3VsZEJl
KCd0ZXh0MS5oZWlnaHQgPiAwIC0gMScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3RleHQxLnJp
Z2h0ID4gMTAwIC0gMScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3RleHQxLmJvdHRvbSA+IDI1
MCAtIDEnLCAndHJ1ZScpOworICAgIGRlYnVnKCIiKTsKKworICAgIHN2ZzIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic3ZnMiIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgIHNob3Vs
ZEJlQXBwcm94KCdzdmcyLmxlZnQnLCAnNzUnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdz
dmcyLnRvcCcsICcxMDAnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdzdmcyLndpZHRoJywg
JzE1MCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ3N2ZzIuaGVpZ2h0JywgJzUwJywgJzEn
KTsKKyAgICBzaG91bGRCZUFwcHJveCgnc3ZnMi5yaWdodCcsICcyMjUnLCAnMScpOworICAgIHNo
b3VsZEJlQXBwcm94KCdzdmcyLmJvdHRvbScsICcxNTAnLCAnMScpOworICAgIHJlY3QyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlY3QyIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Cisg
ICAgc2hvdWxkQmVBcHByb3goJ3JlY3QyLmxlZnQnLCAnNzUnLCAnMScpOworICAgIHNob3VsZEJl
QXBwcm94KCdyZWN0Mi50b3AnLCAnMTAwJywgJzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgncmVj
dDIud2lkdGgnLCAnMTAwJywgJzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgncmVjdDIuaGVpZ2h0
JywgJzUwJywgJzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgncmVjdDIucmlnaHQnLCAnMTc1Jywg
JzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgncmVjdDIuYm90dG9tJywgJzE1MCcsICcxJyk7Cisg
ICAgaW1hZ2UyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltYWdlMiIpLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpOworICAgIHNob3VsZEJlQXBwcm94KCdpbWFnZTIubGVmdCcsICcxNzUnLCAn
MScpOworICAgIHNob3VsZEJlQXBwcm94KCdpbWFnZTIudG9wJywgJzEwMCcsICcxJyk7CisgICAg
c2hvdWxkQmVBcHByb3goJ2ltYWdlMi53aWR0aCcsICc1MCcsICcxJyk7CisgICAgc2hvdWxkQmVB
cHByb3goJ2ltYWdlMi5oZWlnaHQnLCAnMjUnLCAnMScpOworICAgIHNob3VsZEJlQXBwcm94KCdp
bWFnZTIucmlnaHQnLCAnMjI1JywgJzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgnaW1hZ2UyLmJv
dHRvbScsICcxMjUnLCAnMScpOworICAgIHRleHQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRleHQyIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgc2hvdWxkQmVBcHByb3goJ3Rl
eHQyLmxlZnQnLCAnMTc1JywgJzEnKTsKKyAgICBzaG91bGRCZSgndGV4dDIudG9wID49IDEwMCAt
IDEnLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCd0ZXh0Mi53aWR0aCA+IDAgLSAxJywgJ3RydWUn
KTsKKyAgICBzaG91bGRCZSgndGV4dDIuaGVpZ2h0ID4gMCAtIDEnLCAndHJ1ZScpOworICAgIHNo
b3VsZEJlKCd0ZXh0Mi5yaWdodCA+IDE3NSAtIDEnLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCd0
ZXh0Mi5ib3R0b20gPiAxMDAgLSAxJywgJ3RydWUnKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBz
dmczID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2ZzMiKS5nZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKTsKKyAgICBzaG91bGRCZUFwcHJveCgnc3ZnMy5sZWZ0JywgJzkwMCcsICcxJyk7CisgICAg
c2hvdWxkQmVBcHByb3goJ3N2ZzMudG9wJywgJzUwMCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHBy
b3goJ3N2ZzMud2lkdGgnLCAnMzAwJywgJzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgnc3ZnMy5o
ZWlnaHQnLCAnMTAwJywgJzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgnc3ZnMy5yaWdodCcsICcx
MjAwJywgJzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgnc3ZnMy5ib3R0b20nLCAnNjAwJywgJzEn
KTsKKyAgICByZWN0MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWN0MyIpLmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpOworICAgIHNob3VsZEJlQXBwcm94KCdyZWN0My5sZWZ0JywgJzkwMCcs
ICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ3JlY3QzLnRvcCcsICc1MDAnLCAnMScpOworICAg
IHNob3VsZEJlQXBwcm94KCdyZWN0My53aWR0aCcsICcyMDAnLCAnMScpOworICAgIHNob3VsZEJl
QXBwcm94KCdyZWN0My5oZWlnaHQnLCAnMTAwJywgJzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgn
cmVjdDMucmlnaHQnLCAnMTEwMCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ3JlY3QzLmJv
dHRvbScsICc2MDAnLCAnMScpOworICAgIGltYWdlMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJpbWFnZTMiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICBzaG91bGRCZUFwcHJveCgn
aW1hZ2UzLmxlZnQnLCAnMTEwMCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ2ltYWdlMy50
b3AnLCAnNTAwJywgJzEnKTsKKyAgICBzaG91bGRCZUFwcHJveCgnaW1hZ2UzLndpZHRoJywgJzEw
MCcsICcxJyk7CisgICAgc2hvdWxkQmVBcHByb3goJ2ltYWdlMy5oZWlnaHQnLCAnNTAnLCAnMScp
OworICAgIHNob3VsZEJlQXBwcm94KCdpbWFnZTMucmlnaHQnLCAnMTIwMCcsICcxJyk7CisgICAg
c2hvdWxkQmVBcHByb3goJ2ltYWdlMy5ib3R0b20nLCAnNTUwJywgJzEnKTsKKyAgICB0ZXh0MyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0MyIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
OworICAgIHNob3VsZEJlQXBwcm94KCd0ZXh0My5sZWZ0JywgJzExMDAnLCAnMScpOworICAgIHNo
b3VsZEJlKCd0ZXh0My50b3AgPj0gNTAwIC0gMScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3Rl
eHQzLndpZHRoID4gMCAtIDEnLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCd0ZXh0My5oZWlnaHQg
PiAwIC0gMScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3RleHQzLnJpZ2h0ID4gMTEwMCAtIDEn
LCAndHJ1ZScpOworICAgIHNob3VsZEJlKCd0ZXh0My5ib3R0b20gPiA1MDAgLSAxJywgJ3RydWUn
KTsKKyAgICBkZWJ1ZygiIik7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cucG9zdFpvb21DYWxsYmFjayA9IGV4
ZWN1dGVUZXN0OworfSBlbHNlIHsKKyAgICBkZWJ1ZygiVGhpcyB0ZXN0IG9ubHkgd29ya3MgaW4g
RFJULiIpOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PnZhciB6b29tQ291bnQg
PSAyOzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0UGFnZVpvb20uanMi
Pjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dmcvem9vbS9yZXNvdXJjZXMvdGVzdFBhZ2Vab29tLmpzIGIvTGF5b3V0VGVzdHMvc3ZnL3pvb20v
cmVzb3VyY2VzL3Rlc3RQYWdlWm9vbS5qcwppbmRleCA0YWZiMTZkLi43ZjlmYmU5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdmcvem9vbS9yZXNvdXJjZXMvdGVzdFBhZ2Vab29tLmpzCisrKyBi
L0xheW91dFRlc3RzL3N2Zy96b29tL3Jlc291cmNlcy90ZXN0UGFnZVpvb20uanMKQEAgLTExLDYg
KzExLDI2IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50
U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIuem9vbVBhZ2VJbigpOwogICAg
ICAgICB9CiAKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICBpZiAod2luZG93LnBvc3Rab29tQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIHdpbmRvdy5z
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHdpbmRvdy5wb3N0Wm9vbUNh
bGxiYWNrKCk7CisgICAgICAgICAgICAgICAgY29tcGxldGVEeW5hbWljVGVzdCgpOworICAgICAg
ICAgICAgfSwgMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KICAgICB9LCAwKTsKIH0KKworZnVuY3Rp
b24gY29tcGxldGVEeW5hbWljVGVzdCgpIHsKKyAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic2NyaXB0Iik7CisKKyAgICBzY3JpcHQub25sb2FkID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfTsKKworICAgIHNjcmlwdC5z
cmMgPSAiLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIjsKKyAgICBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
c2NyaXB0KTsKK30K
</data>
<flag name="review"
          id="62404"
          type_id="1"
          status="-"
          setter="ctruta"
    />
    <flag name="commit-queue"
          id="62405"
          type_id="3"
          status="-"
          setter="ctruta"
    />
          </attachment>
      

    </bug>

</bugzilla>