<?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>48640</bug_id>
          
          <creation_ts>2010-10-29 09:01:01 -0700</creation_ts>
          <short_desc>Add layout test that check getBoundingClientRect w/ zooming</short_desc>
          <delta_ts>2010-11-01 20:12:03 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>48110</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Cosmin Truta">ctruta</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mdelaney7</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>301798</commentid>
    <comment_count>0</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-10-29 09:01:01 -0700</bug_when>
    <thetext>I initially submitted this in the original bug, 42815, but that is closed. I need to readjust my workflow, and open a new bug for every submitted patch. This seems to be the way preferred by WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301799</commentid>
    <comment_count>1</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-10-29 09:02:07 -0700</bug_when>
    <thetext>This is part of the work on bug 48110.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301803</commentid>
    <comment_count>2</comment_count>
      <attachid>72341</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-10-29 09:07:15 -0700</bug_when>
    <thetext>Created attachment 72341
Zooming tests for getBoundingClientRect

Here is the comment originally entered in bug 42815:

&quot;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.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301808</commentid>
    <comment_count>3</comment_count>
      <attachid>72341</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-29 09:24:54 -0700</bug_when>
    <thetext>Comment on attachment 72341
Zooming tests for getBoundingClientRect

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

Hi Cosmin,

good job, though in the wrong direction I fear. I was confused what you mean with rounding problems. I thought you wanted to solve it in the code, rather than in the tests :-)

&gt; LayoutTests/svg/custom/getBoundingClientRect.xhtml:7
&gt; +&lt;div style=&quot;width:500px;height=100px;&quot;&gt;

This can&apos;t work :-) s/=/:/

&gt; LayoutTests/svg/zoom/page/zoom-zoom-coords.xhtml:53
&gt; +    shouldBeApprox(&apos;div1.left&apos;, &apos;0&apos;, &apos;1&apos;);

The last argument doesn&apos;t need to be a string, but it&apos;s okay, you don&apos;t need to change it everywhere.

&gt; LayoutTests/svg/zoom/page/zoom-zoom-coords.xhtml:54
&gt; +    shouldBeApprox(&apos;div1.top&apos;, &apos;0&apos;, &apos;1&apos;);

I don&apos;t get the whole story behind shouldBeApprox.
CSSOM defines getBoundingClientRect to return a ClientRect() object, containing &apos;float&apos; coordinates.
See http://dev.w3.org/csswg/cssom-view/#clientrect.



        FloatRect localRect;
        if (svgElement-&gt;boundingBox(localRect))
            quads.append(renderer()-&gt;localToAbsoluteQuad(localRect));

localToAbsoluteQuad gives you a FloatRect, stored in localRect.
The problem is the &quot;    IntRect result = quads[0].enclosingBoundingBox();&quot; usage here.
When using boundingBox() instead of enclosingBoundingBox() you&apos;d get a FloatRect as result, which is really what ought to be used here.

Instead of using &quot;adjustIntRectForAbsoluteZoom(IntRect&amp; rect, RenderObject* renderer)&quot; a adjustFloatRectForAbsoluteZoom should be added to RenderObject.h (there&apos;s already a FloatQuad version and a FloatPoint version).
That should fix the real issue.

Of course when testing, you might get results like 50.000001 or sth else when zooming (due the rounding error accumulation).
You can solve this by using shouldBe(&quot;div1.width.toFixed(2)&quot;, &quot;50.00&quot;).... (toFixed is the key here)

Does this help to solve the underlying problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302841</commentid>
    <comment_count>4</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-11-01 12:23:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I was confused what you mean with rounding problems. I thought you wanted to solve it in the code, rather than in the tests :-)

I did that as an interim workaround, because developing the actual fix was taking too long, and I wasn&apos;t even sure that I can do it properly. Even now, after submitting the patch for bug 48110, I can say it&apos;s a good solution, but not that it&apos;s the best solution. I had to modify enclosingIntRect(), in a way that you might or might not find acceptable ;-)

Here is the trouble I&apos;m running into:
float scale = 1.2f;  // 1.20000005
float orig_x = 30.0f;  // 30.0
float scaled_x = orig_x * scale;  // 36.0
float adjusted_x = scaled_x / scale;  // 29.9999981

Here, the original enclosingIntRect() is taking floatf(29.9999981), which is 29, and I&apos;m expecting 30. There is no way to recover this loss, except by making the compromise of introducing an epsilon inside enclosingIntRect (or inside an other new function, named enclosingIntRectRoundedForImprecise, if you don&apos;t agree with modifying enclosingIntRect).

See my patch, and my detailed comments, in bug 48110.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302863</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-11-01 13:10:00 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; I was confused what you mean with rounding problems. I thought you wanted to solve it in the code, rather than in the tests :-)
&gt; 
&gt; I did that as an interim workaround, because developing the actual fix was taking too long, and I wasn&apos;t even sure that I can do it properly. Even now, after submitting the patch for bug 48110, I can say it&apos;s a good solution, but not that it&apos;s the best solution. I had to modify enclosingIntRect(), in a way that you might or might not find acceptable ;-)

Hmm, as I wrote in my last comment, the usage of enclosingIntRect is the actual problem. We shouldn&apos;t do that at all, but give back a FloatRect, according to the CSS OM API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303184</commentid>
    <comment_count>6</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2010-11-01 20:12:03 -0700</bug_when>
    <thetext>The entire work will be contained in 48110.

*** This bug has been marked as a duplicate of bug 48110 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72341</attachid>
            <date>2010-10-29 09:07:15 -0700</date>
            <delta_ts>2010-10-29 09:24:54 -0700</delta_ts>
            <desc>Zooming tests for getBoundingClientRect</desc>
            <filename>wk48640.diff.submit</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="62575"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>