<?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>52195</bug_id>
          
          <creation_ts>2011-01-10 21:51:19 -0800</creation_ts>
          <short_desc>REGRESSION(r71934) Can&apos;t type in search edit field on skin-one.com</short_desc>
          <delta_ts>2011-01-11 12:45:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>46015</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adele Peterson">adele</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>332152</commentid>
    <comment_count>0</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2011-01-10 21:51:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/8807518&gt;

It looks like this site is trying to prevent copying of resources by disabling selection:

document.onselectstart=new Function (&quot;return false&quot;)

You can reproduce the problem with this markup:
&lt;script&gt;document.onselectstart=new Function(&quot;return false&quot;)&lt;/script&gt;
&lt;input&gt;

Or with this url:
data:text/html,%3Cscript%3Edocument.onselectstart=new%20Function%20(%22return%20false%22)%3C/script%3E%3Cinput%3E

I think before this change, that wouldn&apos;t have prevented setting selection in a text field. 

Firefox doesn&apos;t appear to allow preventing selection start from this event at all.  We should see what IE does.
￼</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332325</commentid>
    <comment_count>1</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-11 07:42:29 -0800</bug_when>
    <thetext>My booger. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332326</commentid>
    <comment_count>2</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-11 07:42:54 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; &lt;rdar://problem/8807518&gt;
&gt; 
&gt; It looks like this site is trying to prevent copying of resources by disabling selection:
&gt; 
&gt; document.onselectstart=new Function (&quot;return false&quot;)
&gt; 
&gt; You can reproduce the problem with this markup:
&gt; &lt;script&gt;document.onselectstart=new Function(&quot;return false&quot;)&lt;/script&gt;
&gt; &lt;input&gt;
&gt; 
&gt; Or with this url:
&gt; data:text/html,%3Cscript%3Edocument.onselectstart=new%20Function%20(%22return%20false%22)%3C/script%3E%3Cinput%3E
&gt; 
&gt; I think before this change, that wouldn&apos;t have prevented setting selection in a text field. 
&gt; 
&gt; Firefox doesn&apos;t appear to allow preventing selection start from this event at all.  We should see what IE does.
&gt; 

Thanks for an excellent reduction, Adele!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332418</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-11 10:02:50 -0800</bug_when>
    <thetext>IE behaves differently from pre-regression change. Here&apos;s the breakdown:

1) Pre-regression, WebKit behavior was to allow selection inside text input and textareas.

2) Post-regression, you can&apos;t even type into the field.

3) IE doesn&apos;t allow selection anywhere, though you can type into it all you want.

Should I:

a) restore original behavior, which seems a bit wrong (at least compatibility-wise)

b) make WebKit behave like IE?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332432</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-11 10:28:01 -0800</bug_when>
    <thetext>Ew, even selectstart always returns true, keyboard selection still works in WebKit. I think this yak is too big to shave at the moment. I&apos;ll just unregress the behavior and leave the compatibility issue alone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332465</commentid>
    <comment_count>5</comment_count>
      <attachid>78556</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-11 11:10:54 -0800</bug_when>
    <thetext>Created attachment 78556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332470</commentid>
    <comment_count>6</comment_count>
      <attachid>78559</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-11 11:13:43 -0800</bug_when>
    <thetext>Created attachment 78559
With better ChangeLog descriptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332491</commentid>
    <comment_count>7</comment_count>
      <attachid>78559</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-11 11:39:55 -0800</bug_when>
    <thetext>Comment on attachment 78559
With better ChangeLog descriptions.

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

OK.

&gt; Source/WebCore/dom/Node.cpp:2628
&gt; +    getEventAncestors(ancestors, originalTarget.get(), event-&gt;isMutationEvent() || event-&gt;type() == eventNames().selectstartEvent ? StayInsideShadowDOM : RetargetEvent);

Should this check be its own function?  Explaining why mutation events and selection start events are in thsi set?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332502</commentid>
    <comment_count>8</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-11 11:50:45 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 78559 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78559&amp;action=review
&gt; 
&gt; OK.
&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:2628
&gt; &gt; +    getEventAncestors(ancestors, originalTarget.get(), event-&gt;isMutationEvent() || event-&gt;type() == eventNames().selectstartEvent ? StayInsideShadowDOM : RetargetEvent);
&gt; 
&gt; Should this check be its own function?  Explaining why mutation events and selection start events are in thsi set?

Great idea, will add a helper function with comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332575</commentid>
    <comment_count>9</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-11 12:45:04 -0800</bug_when>
    <thetext>Committed r75536: &lt;http://trac.webkit.org/changeset/75536&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78556</attachid>
            <date>2011-01-11 11:10:54 -0800</date>
            <delta_ts>2011-01-11 11:13:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52195-20110111111052.patch</filename>
            <type>text/plain</type>
            <size>16601</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMDdiZmQ5YmQ1MWYwOTZkNDliNDAxNzEwZWE2MzhlNzI2MjkzM2E0Li5hZTE5Yjky
MjFkNGIzZTMwMWVhYzkwZDE1MTk4MjEwZjJjNzNjZTgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDEtMTEgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9O
KHI3MTkzNCkgQ2FuJ3QgdHlwZSBpbiBzZWFyY2ggZWRpdCBmaWVsZCBvbiBza2luLW9uZS5jb20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMTk1CisK
KyAgICAgICAgKiBmYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmctMi1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNy
b3NzaW5nLTIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zaGFkb3ctYm91
bmRhcnktY3Jvc3NpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL3NoYWRv
dy1ib3VuZGFyeS1jcm9zc2luZy5odG1sOgorCiAyMDExLTAxLTExICBTdGVwaGVuIFdoaXRlICA8
c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQ7IHlldCBhbm90
aGVyIGdwdSB0ZXN0X2V4cGVjdGF0aW9ucyB1cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmctMi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmctMi1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyZjFlY2U5NDM0ZmMwZGE0ODg0
ZGE1MTNjNTRmZjM2NTU1MzBlZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3Nz
aW5nLTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotVGVzdHMg
dG8gZW5zdXJlIHRoYXQgc2hhZG93IERPTSBib3VuZGFyeSBpcyBub3QgY3Jvc3NlZCBkdXJpbmcg
ZXZlbnQgcHJvcGFnYXRpb24uIENhbiBvbmx5IHJ1biB3aXRoaW4gRFJULgotCi1TZWUgYnVnIDQ2
MDE1IGZvciBkZXRhaWxzLgotCi1NdXRhdGlvbiBldmVudHMgc2hvdWxkIG5vdCBwcm9wYWdhdGUg
b3V0IG9mIHRoZSBzaGFkb3cgRE9NOiBQQVNTCi1MYWJlbCBzaG91bGQgbG9vayBiZXlvbmQgc2hh
ZG93IGJvdW5kYXJ5IHRvIGRldGVjdCBpZiBpdCBlbmNsb3NlcyBpdHMgYXNzb2NpYXRlZCBlbGVt
ZW50OiBQQVNTCi1FdmVudHMgZm9yIGRlZmF1bHQgZXZlbnQgaGFuZGxlciBzaG91bGQgbm90IGJl
IHJldGFyZ2V0ZWQ6IFBBU1MKLU90aGVyIGV2ZW50cyBzaG91bGQgYmUgcmV0YXJnZXRlZDogUEFT
UwotQWZ0ZXIgZXZlbnQgZGlzcGF0Y2gsIHRoZSBldmVudCBvYmplY3Qgc2hvdWxkIG5vdCByZXZl
YWwgc2hhZG93IERPTTogUEFTUwotRm9jdXNpbmcgc2FtZSBzaGFkb3cgRE9NIGVsZW1lbnQgcmVw
ZWF0ZWRseSBzaG91bGQgbm90IHRyaWdnZXIgbXVsdGlwbGUgZm9jdXMvYmx1ciBldmVudHM6IFBB
U1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1j
cm9zc2luZy0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnkt
Y3Jvc3NpbmctMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWIzNjJmNTdi
ODFlMTUyZjNhMGU5NmM0MTI2YmI4ZDBlZDI0YjhhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3Vu
ZGFyeS1jcm9zc2luZy0yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci0KLXZhciBsb2dEaXY7Ci0KLWZ1bmN0aW9uIGxvZyhtc2cs
IHN1Y2Nlc3MpCi17Ci0gICAgbG9nRGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpKS50ZXh0Q29udGVudCA9IG1zZyArICc6ICcgKyAoc3VjY2VzcyA/ICdQQVNTJyA6
ICdGQUlMJyk7Ci19Ci0KLWZ1bmN0aW9uIGNsaWNrT24oZWxlbWVudCkKLXsKLSAgICBpZiAoIXdp
bmRvdy5ldmVudFNlbmRlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdmFyIHggPSBlbGVtZW50
Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKLSAgICB2YXIgeSA9IGVsZW1l
bnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwotICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHgsIHkpOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwotICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKLX0KLQotZnVuY3Rpb24gY2xpY2tPbkxlZnRRdWFydGVyT2Yo
ZWxlbWVudCkKLXsKLSAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgdmFyIHggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRo
IC8gNDsKLSAgICB2YXIgeSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWln
aHQgLyAyOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOwotICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKLX0KLQotZnVuY3Rp
b24gbGVhcEZvcndhcmQoKQotewotICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDAwKTsKLX0KLQotdmFy
IHRlc3RzID0gewotICAgIG11dGF0aW9uRXZlbnRQcm9wYWdhdGlvbjogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdmFyIHRleHRhcmVhID0gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpKTsKLSAgICAgICAgdmFyIG11dGF0aW9uRXZl
bnRGaXJlZDsKLSAgICAgICAgdGV4dGFyZWEuYWRkRXZlbnRMaXN0ZW5lcignRE9NU3VidHJlZU1v
ZGlmaWVkJywgZnVuY3Rpb24oZSkKLSAgICAgICAgewotICAgICAgICAgICAgbXV0YXRpb25FdmVu
dEZpcmVkID0gdHJ1ZTsKLSAgICAgICAgfSwgZmFsc2UpOwotICAgICAgICB0ZXh0YXJlYS52YWx1
ZSA9ICd0ZXN0JzsKLSAgICAgICAgLy8gVHJpZ2dlciBzdHlsZSByZWNhbGMgYW5kIHNhZGx5LCB0
aGUgYWN0dWFsIG11dGF0aW9uIG9mIHRoZSB0ZXh0YXJlYSBzaGFkb3cgRE9NLgotICAgICAgICB0
ZXh0YXJlYS5vZmZzZXRIZWlnaHQ7Ci0gICAgICAgIGxvZygnTXV0YXRpb24gZXZlbnRzIHNob3Vs
ZCBub3QgcHJvcGFnYXRlIG91dCBvZiB0aGUgc2hhZG93IERPTScsICFtdXRhdGlvbkV2ZW50Rmly
ZWQpOwotICAgICAgICB0ZXh0YXJlYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRleHRhcmVhKTsK
LSAgICB9LAotICAgIGxhYmVsU3ludGhldGljQ2xpY2s6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHZhciBjb3VudCA9IDA7Ci0gICAgICAgIHZhciBsYWJlbCA9IGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKSk7Ci0gICAgICAgIHZhciBz
ZWFyY2hJbnB1dCA9IGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lu
cHV0JykpOwotICAgICAgICBzZWFyY2hJbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnc2VhcmNo
Jyk7Ci0gICAgICAgIHNlYXJjaElucHV0LnNldEF0dHJpYnV0ZSgnaWQnLCAnYmF6Jyk7Ci0gICAg
ICAgIGxhYmVsLnNldEF0dHJpYnV0ZSgnZm9yJywgJ2JheicpOwotICAgICAgICBzZWFyY2hJbnB1
dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvdW50Kys7Ci0gICAgICAgIH0sIGZhbHNlKTsKLSAgICAgICAgY2xpY2tPbihzZWFy
Y2hJbnB1dCk7Ci0gICAgICAgIGxvZygiTGFiZWwgc2hvdWxkIGxvb2sgYmV5b25kIHNoYWRvdyBi
b3VuZGFyeSB0byBkZXRlY3QgaWYgaXQgZW5jbG9zZXMgaXRzIGFzc29jaWF0ZWQgZWxlbWVudCIs
IGNvdW50ID09IDEpOwotICAgICAgICBsYWJlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGxhYmVs
KTsKLSAgICB9LAotICAgIGRlZmF1bHRFdmVudFJldGFyZ2V0aW5nOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICB2YXIgY291bnQgPSAwOwotICAgICAgICB2YXIgZmlsZUlucHV0ID0gZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpKTsKLSAg
ICAgICAgZmlsZUlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICdmaWxlJyk7Ci0gICAgICAgIHZh
ciBjb3VudGVyID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb3VudCsrOwot
ICAgICAgICB9Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignRE9NQWN0
aXZhdGUnLCBjb3VudGVyLCBmYWxzZSk7Ci0gICAgICAgIGNsaWNrT25MZWZ0UXVhcnRlck9mKGZp
bGVJbnB1dCk7Ci0gICAgICAgIGxvZygiRXZlbnRzIGZvciBkZWZhdWx0IGV2ZW50IGhhbmRsZXIg
c2hvdWxkIG5vdCBiZSByZXRhcmdldGVkIiwgY291bnQgPT0gMSk7Ci0gICAgICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcignRE9NQWN0aXZhdGUnLCBjb3VudGVyLCBmYWxzZSk7
Ci0gICAgICAgIGZpbGVJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZpbGVJbnB1dCk7Ci0g
ICAgfSwKLSAgICBldmVudEluUHJvZ3Jlc3M6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZh
ciB0ZXh0SW5wdXQgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2lucHV0JykpOwotICAgICAgICB0ZXh0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2xp
Y2snLCBmdW5jdGlvbihlKQotICAgICAgICB7Ci0gICAgICAgICAgICBsb2coJ090aGVyIGV2ZW50
cyBzaG91bGQgYmUgcmV0YXJnZXRlZCcsIGUudGFyZ2V0ID09IHRleHRJbnB1dCk7Ci0gICAgICAg
IH0sIGZhbHNlKTsKLSAgICAgICAgY2xpY2tPbih0ZXh0SW5wdXQpOwotICAgICAgICB0ZXh0SW5w
dXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZXh0SW5wdXQpOwotICAgIH0sCi0gICAgZmluYWxF
dmVudE9iamVjdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIHRleHRJbnB1dCA9IGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSk7
Ci0gICAgICAgIHZhciBzdG9yZWRFdmVudDsKLSAgICAgICAgdGV4dElucHV0LmFkZEV2ZW50TGlz
dGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkKLSAgICAgICAgewotICAgICAgICAgICAgc3RvcmVk
RXZlbnQgPSBlOwotICAgICAgICB9LCBmYWxzZSk7Ci0gICAgICAgIGNsaWNrT24odGV4dElucHV0
KTsKLSAgICAgICAgbG9nKCdBZnRlciBldmVudCBkaXNwYXRjaCwgdGhlIGV2ZW50IG9iamVjdCBz
aG91bGQgbm90IHJldmVhbCBzaGFkb3cgRE9NJywgc3RvcmVkRXZlbnQgJiYgc3RvcmVkRXZlbnQu
dGFyZ2V0ID09IHRleHRJbnB1dCk7Ci0gICAgICAgIHRleHRJbnB1dC5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKHRleHRJbnB1dCk7Ci0gICAgfSwKLSAgICBmb2N1c0V2ZW50UHJvcGFnYXRpb246IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBzZWFyY2hJbnB1dCA9IGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSk7Ci0gICAgICAgIHNl
YXJjaElucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICdzZWFyY2gnKTsKLSAgICAgICAgdmFyIGNv
dW50ID0gMDsKLSAgICAgICAgc2VhcmNoSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBm
dW5jdGlvbihldnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgIH0p
OwotICAgICAgICBjbGlja09uKHNlYXJjaElucHV0KTsKLSAgICAgICAgbGVhcEZvcndhcmQoKTsK
LSAgICAgICAgY2xpY2tPbihzZWFyY2hJbnB1dCk7Ci0gICAgICAgIGxvZygnRm9jdXNpbmcgc2Ft
ZSBzaGFkb3cgRE9NIGVsZW1lbnQgcmVwZWF0ZWRseSBzaG91bGQgbm90IHRyaWdnZXIgbXVsdGlw
bGUgZm9jdXMvYmx1ciBldmVudHMnLCBjb3VudCA9PSAxKTsKLSAgICAgICAgc2VhcmNoSW5wdXQu
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzZWFyY2hJbnB1dCk7Ci0gICAgfQotfTsKLQotZnVuY3Rp
b24gcnVuVGVzdCgpCi17Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgbG9nRGl2ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOwotICAgIGZvcih2YXIgdGVzdE5hbWUgaW4g
dGVzdHMpIHsKLSAgICAgICAgdGVzdHNbdGVzdE5hbWVdKCk7Ci0gICAgfQotfQotCi08L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD5UZXN0cyB0byBl
bnN1cmUgdGhhdCBzaGFkb3cgRE9NIGJvdW5kYXJ5IGlzIG5vdCBjcm9zc2VkIGR1cmluZyBldmVu
dCBwcm9wYWdhdGlvbi4gQ2FuIG9ubHkgcnVuIHdpdGhpbiBEUlQuCi0gICAgPHA+U2VlIDxhIGhy
ZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjAxNSI+YnVnIDQ2
MDE1PC9hPiBmb3IgZGV0YWlscy4KLSAgICA8ZGl2IGlkPSJsb2ciPjwvZGl2PgotPC9ib2R5Pgot
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmctZXhwZWN0ZWQu
dHh0CmluZGV4IGZkNzI5ZDk0NGI3MmU0YmFmYmNlMGZjYWNlNzcwZTcyNWM0YWJiMmEuLjY3OGYz
YWIzZjhkM2RjZTczOTdhMWI5NDM2YjVkNjczYTYxNjFmMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5nLWV4cGVj
dGVkLnR4dApAQCAtMSw1ICsxLDExIEBACi1UZXN0IGZvciBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjc4MCBSRUdSRVNTSU9OIChyMTkzNDEtcjE5Mzg1KTogUmVwcm9k
dWNpYmxlIGNyYXNoIGluICJvbnNlbGVjdHN0YXJ0IiBldmVudC4KLQotUmVzdWx0OiBQQVNTCitU
ZXN0cyB0byBlbnN1cmUgdGhhdCBzaGFkb3cgRE9NIGJvdW5kYXJ5IGlzIG5vdCBjcm9zc2VkIGR1
cmluZyBldmVudCBwcm9wYWdhdGlvbi4gQ2FuIG9ubHkgcnVuIHdpdGhpbiBEUlQuCiAKK1NlZSBi
dWcgNDYwMTUgZm9yIGRldGFpbHMuCiAKK011dGF0aW9uIGV2ZW50cyBzaG91bGQgbm90IHByb3Bh
Z2F0ZSBvdXQgb2YgdGhlIHNoYWRvdyBET006IFBBU1MKK1RoZSBzZWxlY3RzdGFydCBldmVudCBz
aG91bGQgbm90IHByb3BhZ2F0ZSBvdXQgb2YgdGhlIHNoYWRvdyBET006IFBBU1MKK0xhYmVsIHNo
b3VsZCBsb29rIGJleW9uZCBzaGFkb3cgYm91bmRhcnkgdG8gZGV0ZWN0IGlmIGl0IGVuY2xvc2Vz
IGl0cyBhc3NvY2lhdGVkIGVsZW1lbnQ6IFBBU1MKK0V2ZW50cyBmb3IgZGVmYXVsdCBldmVudCBo
YW5kbGVyIHNob3VsZCBub3QgYmUgcmV0YXJnZXRlZDogUEFTUworT3RoZXIgZXZlbnRzIHNob3Vs
ZCBiZSByZXRhcmdldGVkOiBQQVNTCitBZnRlciBldmVudCBkaXNwYXRjaCwgdGhlIGV2ZW50IG9i
amVjdCBzaG91bGQgbm90IHJldmVhbCBzaGFkb3cgRE9NOiBQQVNTCitGb2N1c2luZyBzYW1lIHNo
YWRvdyBET00gZWxlbWVudCByZXBlYXRlZGx5IHNob3VsZCBub3QgdHJpZ2dlciBtdWx0aXBsZSBm
b2N1cy9ibHVyIGV2ZW50czogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbAppbmRleCBlMDAyMzMzMGUxZGMxNmM2N2Ri
OTAxMTE0MjQxYzYzYmIxZWRhMTFkLi40ZTg0ODZiMmJlNjk4MTJjMDY5MTczNTQyOWYzOGQxNzU5
ZmNmZWUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRh
cnktY3Jvc3NpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91
bmRhcnktY3Jvc3NpbmcuaHRtbApAQCAtMSw0MyArMSwxNjAgQEAKIDxodG1sPgogPGhlYWQ+Ci0g
ICAgPHRpdGxlPjwvdGl0bGU+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgot
ICAgICAgICB2YXIgc3VjY2VzczsKLSAgICAgICAgdmFyIHRhcmdldDsKKzxzY3JpcHQ+CiAKLSAg
ICAgICAgZnVuY3Rpb24gc2VsZWN0U3RhcnQoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHN1Y2Nlc3MgPSBldmVudC50YXJnZXQgPT0gdGFyZ2V0OwotICAgICAgICB9Cit2YXIgbG9nRGl2
OwogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitmdW5jdGlvbiBs
b2cobXNnLCBzdWNjZXNzKQoreworICAgIGxvZ0Rpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKSkudGV4dENvbnRlbnQgPSBtc2cgKyAnOiAnICsgKHN1Y2Nlc3MgPyAn
UEFTUycgOiAnRkFJTCcpOworfQorCitmdW5jdGlvbiBjbGlja09uKGVsZW1lbnQpCit7CisgICAg
aWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHZhciB4ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgdmFyIHkg
PSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsK
KyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CiAKLSAgICAgICAgICAgIHRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKLSAgICAgICAgICAgIHZhciB4ID0gdGFy
Z2V0Lm9mZnNldExlZnQgKyB0YXJnZXQub2Zmc2V0V2lkdGggLyAyOwotICAgICAgICAgICAgdmFy
IHkgPSB0YXJnZXQub2Zmc2V0VG9wICsgdGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7CitmdW5jdGlv
biBjbGlja09uTGVmdFF1YXJ0ZXJPZihlbGVtZW50KQoreworICAgIGlmICghd2luZG93LmV2ZW50
U2VuZGVyKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHgsIHkpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Ci0gICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgdmFyIHggPSBlbGVtZW50Lm9mZnNl
dExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gNDsKKyAgICB2YXIgeSA9IGVsZW1lbnQub2Zm
c2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKK30KIAotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdCIpLmlubmVyVGV4dCA9ICFzdWNjZXNzID8gIkZBSUwiIDogIlBBU1MiOworZnVuY3Rp
b24gbGVhcEZvcndhcmQoKQoreworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDAwKTsKK30KKwordmFy
IHRlc3RzID0geworICAgIG11dGF0aW9uRXZlbnRQcm9wYWdhdGlvbjogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdmFyIHRleHRhcmVhID0gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpKTsKKyAgICAgICAgdmFyIG11dGF0aW9uRXZl
bnRGaXJlZDsKKyAgICAgICAgdGV4dGFyZWEuYWRkRXZlbnRMaXN0ZW5lcignRE9NU3VidHJlZU1v
ZGlmaWVkJywgZnVuY3Rpb24oZSkKKyAgICAgICAgeworICAgICAgICAgICAgbXV0YXRpb25FdmVu
dEZpcmVkID0gdHJ1ZTsKKyAgICAgICAgfSwgZmFsc2UpOworICAgICAgICB0ZXh0YXJlYS52YWx1
ZSA9ICd0ZXN0JzsKKyAgICAgICAgLy8gVHJpZ2dlciBzdHlsZSByZWNhbGMgYW5kIHNhZGx5LCB0
aGUgYWN0dWFsIG11dGF0aW9uIG9mIHRoZSB0ZXh0YXJlYSBzaGFkb3cgRE9NLgorICAgICAgICB0
ZXh0YXJlYS5vZmZzZXRIZWlnaHQ7CisgICAgICAgIGxvZygnTXV0YXRpb24gZXZlbnRzIHNob3Vs
ZCBub3QgcHJvcGFnYXRlIG91dCBvZiB0aGUgc2hhZG93IERPTScsICFtdXRhdGlvbkV2ZW50Rmly
ZWQpOworICAgICAgICB0ZXh0YXJlYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRleHRhcmVhKTsK
KyAgICB9LAorICAgIHNlbGVjdHN0YXJ0RXZlbnRQcm9wYWdhdGlvbjogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdmFyIHRleHRJbnB1dCA9IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSk7CisgICAgICAgIHZhciBzZWxlY3RzdGFydEV2
ZW50RmlyZWQgPSBmYWxzZTsKKyAgICAgICAgZG9jdW1lbnQuc2VsZWN0c3RhcnQgPSBmdW5jdGlv
bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNlbGVjdHN0YXJ0RXZlbnRGaXJlZCA9IHRydWU7
CiAgICAgICAgIH0KKyAgICAgICAgY2xpY2tPbih0ZXh0SW5wdXQpOworICAgICAgICBsb2coJ1Ro
ZSBzZWxlY3RzdGFydCBldmVudCBzaG91bGQgbm90IHByb3BhZ2F0ZSBvdXQgb2YgdGhlIHNoYWRv
dyBET00nLCAhc2VsZWN0c3RhcnRFdmVudEZpcmVkKTsKKyAgICAgICAgdGV4dElucHV0LnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQodGV4dElucHV0KTsKKyAgICAgICAgZG9jdW1lbnQuc2VsZWN0c3Rh
cnQgPSBudWxsOworICAgIH0sCisgICAgbGFiZWxTeW50aGV0aWNDbGljazogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdmFyIGNvdW50ID0gMDsKKyAgICAgICAgdmFyIGxhYmVsID0gZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpKTsKKyAg
ICAgICAgdmFyIHNlYXJjaElucHV0ID0gbGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaW5wdXQnKSk7CisgICAgICAgIHNlYXJjaElucHV0LnNldEF0dHJpYnV0ZSgndHlw
ZScsICdzZWFyY2gnKTsKKyAgICAgICAgc2VhcmNoSW5wdXQuc2V0QXR0cmlidXRlKCdpZCcsICdi
YXonKTsKKyAgICAgICAgbGFiZWwuc2V0QXR0cmlidXRlKCdmb3InLCAnYmF6Jyk7CisgICAgICAg
IHNlYXJjaElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgfSwgZmFsc2UpOworICAgICAgICBj
bGlja09uKHNlYXJjaElucHV0KTsKKyAgICAgICAgbG9nKCJMYWJlbCBzaG91bGQgbG9vayBiZXlv
bmQgc2hhZG93IGJvdW5kYXJ5IHRvIGRldGVjdCBpZiBpdCBlbmNsb3NlcyBpdHMgYXNzb2NpYXRl
ZCBlbGVtZW50IiwgY291bnQgPT0gMSk7CisgICAgICAgIGxhYmVsLnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQobGFiZWwpOworICAgIH0sCisgICAgZGVmYXVsdEV2ZW50UmV0YXJnZXRpbmc6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBjb3VudCA9IDA7CisgICAgICAgIHZhciBmaWxlSW5w
dXQgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lu
cHV0JykpOworICAgICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2ZpbGUnKTsK
KyAgICAgICAgdmFyIGNvdW50ZXIgPSBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvdW50Kys7CisgICAgICAgIH0KKyAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3Rl
bmVyKCdET01BY3RpdmF0ZScsIGNvdW50ZXIsIGZhbHNlKTsKKyAgICAgICAgY2xpY2tPbkxlZnRR
dWFydGVyT2YoZmlsZUlucHV0KTsKKyAgICAgICAgbG9nKCJFdmVudHMgZm9yIGRlZmF1bHQgZXZl
bnQgaGFuZGxlciBzaG91bGQgbm90IGJlIHJldGFyZ2V0ZWQiLCBjb3VudCA9PSAxKTsKKyAgICAg
ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdET01BY3RpdmF0ZScsIGNvdW50
ZXIsIGZhbHNlKTsKKyAgICAgICAgZmlsZUlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZmls
ZUlucHV0KTsKKyAgICB9LAorICAgIGV2ZW50SW5Qcm9ncmVzczogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdmFyIHRleHRJbnB1dCA9IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSk7CisgICAgICAgIHRleHRJbnB1dC5hZGRFdmVudExp
c3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvZygn
T3RoZXIgZXZlbnRzIHNob3VsZCBiZSByZXRhcmdldGVkJywgZS50YXJnZXQgPT0gdGV4dElucHV0
KTsKKyAgICAgICAgfSwgZmFsc2UpOworICAgICAgICBjbGlja09uKHRleHRJbnB1dCk7CisgICAg
ICAgIHRleHRJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRleHRJbnB1dCk7CisgICAgfSwK
KyAgICBmaW5hbEV2ZW50T2JqZWN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgdGV4
dElucHV0ID0gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdpbnB1dCcpKTsKKyAgICAgICAgdmFyIHN0b3JlZEV2ZW50OworICAgICAgICB0ZXh0SW5wdXQu
YWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKQorICAgICAgICB7CisgICAgICAg
ICAgICBzdG9yZWRFdmVudCA9IGU7CisgICAgICAgIH0sIGZhbHNlKTsKKyAgICAgICAgY2xpY2tP
bih0ZXh0SW5wdXQpOworICAgICAgICBsb2coJ0FmdGVyIGV2ZW50IGRpc3BhdGNoLCB0aGUgZXZl
bnQgb2JqZWN0IHNob3VsZCBub3QgcmV2ZWFsIHNoYWRvdyBET00nLCBzdG9yZWRFdmVudCAmJiBz
dG9yZWRFdmVudC50YXJnZXQgPT0gdGV4dElucHV0KTsKKyAgICAgICAgdGV4dElucHV0LnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQodGV4dElucHV0KTsKKyAgICB9LAorICAgIGZvY3VzRXZlbnRQcm9w
YWdhdGlvbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNlYXJjaElucHV0ID0gZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpKTsK
KyAgICAgICAgc2VhcmNoSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3NlYXJjaCcpOworICAg
ICAgICB2YXIgY291bnQgPSAwOworICAgICAgICBzZWFyY2hJbnB1dC5hZGRFdmVudExpc3RlbmVy
KCdmb2N1cycsIGZ1bmN0aW9uKGV2dCkKKyAgICAgICAgeworICAgICAgICAgICAgY291bnQrKzsK
KyAgICAgICAgfSk7CisgICAgICAgIGNsaWNrT24oc2VhcmNoSW5wdXQpOworICAgICAgICBsZWFw
Rm9yd2FyZCgpOworICAgICAgICBjbGlja09uKHNlYXJjaElucHV0KTsKKyAgICAgICAgbG9nKCdG
b2N1c2luZyBzYW1lIHNoYWRvdyBET00gZWxlbWVudCByZXBlYXRlZGx5IHNob3VsZCBub3QgdHJp
Z2dlciBtdWx0aXBsZSBmb2N1cy9ibHVyIGV2ZW50cycsIGNvdW50ID09IDEpOworICAgICAgICBz
ZWFyY2hJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNlYXJjaElucHV0KTsKKyAgICB9Cit9
OworCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAg
ICBsb2dEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7CisgICAgZm9yKHZhciB0
ZXN0TmFtZSBpbiB0ZXN0cykgeworICAgICAgICB0ZXN0c1t0ZXN0TmFtZV0oKTsKKyAgICB9Cit9
CiAKLSAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0c3RhcnQiLCBzZWxlY3RTdGFydCwg
dHJ1ZSk7Ci0gICAgPC9zY3JpcHQ+Cis8L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0i
dGVzdCgpIj4KLSAgICA8cD4KLSAgICAgICAgVGVzdCBmb3IgPGk+PGEgaHJlZj0iaHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODAiPmh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNzgwPC9hPgotICAgICAgICBSRUdSRVNTSU9OIChyMTkzNDEt
cjE5Mzg1KTogUmVwcm9kdWNpYmxlIGNyYXNoIGluICJvbnNlbGVjdHN0YXJ0IiBldmVudDwvaT4u
Ci0gICAgPC9wPgotICAgIDxwPgotICAgICAgICBSZXN1bHQ6IDxzcGFuIGlkPSJyZXN1bHQiPmNh
bm5vdCBydW4gaW50ZXJhY3RpdmVseTwvc3Bhbj4KLSAgICA8L3A+Ci0gICAgPGlucHV0IGlkPSJ0
YXJnZXQiPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3RzIHRvIGVuc3Vy
ZSB0aGF0IHNoYWRvdyBET00gYm91bmRhcnkgaXMgbm90IGNyb3NzZWQgZHVyaW5nIGV2ZW50IHBy
b3BhZ2F0aW9uLiBDYW4gb25seSBydW4gd2l0aGluIERSVC4KKyAgICA8cD5TZWUgPGEgaHJlZj0i
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE1Ij5idWcgNDYwMTU8
L2E+IGZvciBkZXRhaWxzLgorICAgIDxkaXYgaWQ9ImxvZyI+PC9kaXY+CiA8L2JvZHk+Ci08L2h0
bWw+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkx
NDdmMGFjM2VkN2E4MDMwNTM4ZWU4MTJjMTllZjMxN2FlNGJjNDEuLjZkNDU2OTg0NDFhMGQ3OWJm
MTRhMzcyNWExOGJmNjM0NjY2ZmVhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
MS0wMS0xMSAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJFR1JFU1NJT04ocjcx
OTM0KSBDYW4ndCB0eXBlIGluIHNlYXJjaCBlZGl0IGZpZWxkIG9uIHNraW4tb25lLmNvbQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIxOTUKKworICAg
ICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoR2Vu
ZXJpY0V2ZW50KToKKwogMjAxMS0wMS0xMSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGRmaXguCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5k
ZXggYTU4OTI4MmYyMGE2NWE2YzYxN2Y4MDMxM2IwYWIyOThhNGQ2ZThjYy4uZWE3MzVkNzZkZjVl
NjkxMzcyNTQxODRlNDFkYjVhNWRlMzc5N2YwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjYyNSw3
ICsyNjI1LDcgQEAgYm9vbCBOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiBwcnBFdmVudCkKICAgICBSZWZQdHI8Tm9kZT4gdGhpc05vZGUodGhpcyk7CiAgICAgUmVm
UHRyPEV2ZW50VGFyZ2V0PiBvcmlnaW5hbFRhcmdldCA9IGV2ZW50LT50YXJnZXQoKTsKICAgICBW
ZWN0b3I8RXZlbnRDb250ZXh0PiBhbmNlc3RvcnM7Ci0gICAgZ2V0RXZlbnRBbmNlc3RvcnMoYW5j
ZXN0b3JzLCBvcmlnaW5hbFRhcmdldC5nZXQoKSwgZXZlbnQtPmlzTXV0YXRpb25FdmVudCgpID8g
U3RheUluc2lkZVNoYWRvd0RPTSA6IFJldGFyZ2V0RXZlbnQpOworICAgIGdldEV2ZW50QW5jZXN0
b3JzKGFuY2VzdG9ycywgb3JpZ2luYWxUYXJnZXQuZ2V0KCksIGV2ZW50LT5pc011dGF0aW9uRXZl
bnQoKSB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zZWxlY3RzdGFydEV2ZW50ID8g
U3RheUluc2lkZVNoYWRvd0RPTSA6IFJldGFyZ2V0RXZlbnQpOwogCiAgICAgV2luZG93RXZlbnRD
b250ZXh0IHdpbmRvd0NvbnRleHQoZXZlbnQuZ2V0KCksIHRoaXMsIHRvcEV2ZW50Q29udGV4dChh
bmNlc3RvcnMpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78559</attachid>
            <date>2011-01-11 11:13:43 -0800</date>
            <delta_ts>2011-01-11 11:39:55 -0800</delta_ts>
            <desc>With better ChangeLog descriptions.</desc>
            <filename>bug-52195-20110111111342.patch</filename>
            <type>text/plain</type>
            <size>17258</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMDdiZmQ5YmQ1MWYwOTZkNDliNDAxNzEwZWE2MzhlNzI2MjkzM2E0Li45NmZkYTIw
YjE1OGQxY2M4OGEzYmRjOTcxZDRmMmIxOGRjOWE4YzlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTEtMDEtMTEgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9O
KHI3MTkzNCkgQ2FuJ3QgdHlwZSBpbiBzZWFyY2ggZWRpdCBmaWVsZCBvbiBza2luLW9uZS5jb20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMTk1CisK
KyAgICAgICAgUmVzdG9yZWQgb3JpZ2luYWwgKHByZS03MTkzNCkgY2hlY2sgaW4gdGhlIHRlc3Qg
dG8gZW5zdXJlIHRoYXQKKyAgICAgICAgc2VsZWN0c3RhcnQgZG9lcyBub3QgcHJvcGFnYXRlIG91
dHNpZGUgb2YgdGhlIHNoYWRvdyBET00uCisKKyAgICAgICAgQ29uc29saWRhdGVkIHNoYWRvdy1i
b3VuZGFyeS1jcm9zc2luZy0yLmh0bWwgaW50byBzaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRt
bC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy0yLWV4
cGVjdGVkLnR4dDogUmVuYW1lZCB0bworICAgICAgICAgICAgc2hhZG93LWJvdW5kYXJ5LWNyb3Nz
aW5nLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnkt
Y3Jvc3NpbmctMi5odG1sOiBSZW5hbWVkIHRvCisgICAgICAgICAgICBzaGFkb3ctYm91bmRhcnkt
Y3Jvc3NpbmcuaHRtbC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jv
c3NpbmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3NoYWRv
dy1ib3VuZGFyeS1jcm9zc2luZy5odG1sOiBSZW1vdmVkIGFmdGVyIGZvbGRpbmcgdGhlCisgICAg
ICAgICAgICB0ZXN0IGludG8gdGhlIG5ldyBzaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbC4K
KwogMjAxMS0wMS0xMSAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkOyB5ZXQgYW5vdGhlciBncHUgdGVzdF9leHBlY3RhdGlvbnMg
dXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hhZG93LWJvdW5k
YXJ5LWNyb3NzaW5nLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hh
ZG93LWJvdW5kYXJ5LWNyb3NzaW5nLTItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhMmYxZWNlOTQzNGZjMGRhNDg4NGRhNTEzYzU0ZmYzNjU1NTMwZWRmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy0yLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDEwICswLDAgQEAKLVRlc3RzIHRvIGVuc3VyZSB0aGF0IHNoYWRvdyBET00g
Ym91bmRhcnkgaXMgbm90IGNyb3NzZWQgZHVyaW5nIGV2ZW50IHByb3BhZ2F0aW9uLiBDYW4gb25s
eSBydW4gd2l0aGluIERSVC4KLQotU2VlIGJ1ZyA0NjAxNSBmb3IgZGV0YWlscy4KLQotTXV0YXRp
b24gZXZlbnRzIHNob3VsZCBub3QgcHJvcGFnYXRlIG91dCBvZiB0aGUgc2hhZG93IERPTTogUEFT
UwotTGFiZWwgc2hvdWxkIGxvb2sgYmV5b25kIHNoYWRvdyBib3VuZGFyeSB0byBkZXRlY3QgaWYg
aXQgZW5jbG9zZXMgaXRzIGFzc29jaWF0ZWQgZWxlbWVudDogUEFTUwotRXZlbnRzIGZvciBkZWZh
dWx0IGV2ZW50IGhhbmRsZXIgc2hvdWxkIG5vdCBiZSByZXRhcmdldGVkOiBQQVNTCi1PdGhlciBl
dmVudHMgc2hvdWxkIGJlIHJldGFyZ2V0ZWQ6IFBBU1MKLUFmdGVyIGV2ZW50IGRpc3BhdGNoLCB0
aGUgZXZlbnQgb2JqZWN0IHNob3VsZCBub3QgcmV2ZWFsIHNoYWRvdyBET006IFBBU1MKLUZvY3Vz
aW5nIHNhbWUgc2hhZG93IERPTSBlbGVtZW50IHJlcGVhdGVkbHkgc2hvdWxkIG5vdCB0cmlnZ2Vy
IG11bHRpcGxlIGZvY3VzL2JsdXIgZXZlbnRzOiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmctMi5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5nLTIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOTFiMzYyZjU3YjgxZTE1MmYzYTBlOTZjNDEyNmJiOGQwZWQy
NGI4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmctMi5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotCi12
YXIgbG9nRGl2OwotCi1mdW5jdGlvbiBsb2cobXNnLCBzdWNjZXNzKQotewotICAgIGxvZ0Rpdi5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSkudGV4dENvbnRlbnQgPSBt
c2cgKyAnOiAnICsgKHN1Y2Nlc3MgPyAnUEFTUycgOiAnRkFJTCcpOwotfQotCi1mdW5jdGlvbiBj
bGlja09uKGVsZW1lbnQpCi17Ci0gICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIHZhciB4ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZz
ZXRXaWR0aCAvIDI7Ci0gICAgdmFyIHkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zm
c2V0SGVpZ2h0IC8gMjsKLSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKLSAgICBl
dmVudFNlbmRlci5tb3VzZURvd24oKTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0K
LWZ1bmN0aW9uIGNsaWNrT25MZWZ0UXVhcnRlck9mKGVsZW1lbnQpCi17Ci0gICAgaWYgKCF3aW5k
b3cuZXZlbnRTZW5kZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHZhciB4ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDQ7Ci0gICAgdmFyIHkgPSBlbGVtZW50
Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKLSAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyh4LCB5KTsKLSAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKLSAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0KLWZ1bmN0aW9uIGxlYXBGb3J3YXJkKCkKLXsKLSAgICBp
ZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZXZlbnRTZW5k
ZXIubGVhcEZvcndhcmQoMTAwMCk7Ci19Ci0KLXZhciB0ZXN0cyA9IHsKLSAgICBtdXRhdGlvbkV2
ZW50UHJvcGFnYXRpb246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciB0ZXh0YXJlYSA9
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFy
ZWEnKSk7Ci0gICAgICAgIHZhciBtdXRhdGlvbkV2ZW50RmlyZWQ7Ci0gICAgICAgIHRleHRhcmVh
LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTVN1YnRyZWVNb2RpZmllZCcsIGZ1bmN0aW9uKGUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIG11dGF0aW9uRXZlbnRGaXJlZCA9IHRydWU7Ci0gICAgICAgIH0s
IGZhbHNlKTsKLSAgICAgICAgdGV4dGFyZWEudmFsdWUgPSAndGVzdCc7Ci0gICAgICAgIC8vIFRy
aWdnZXIgc3R5bGUgcmVjYWxjIGFuZCBzYWRseSwgdGhlIGFjdHVhbCBtdXRhdGlvbiBvZiB0aGUg
dGV4dGFyZWEgc2hhZG93IERPTS4KLSAgICAgICAgdGV4dGFyZWEub2Zmc2V0SGVpZ2h0OwotICAg
ICAgICBsb2coJ011dGF0aW9uIGV2ZW50cyBzaG91bGQgbm90IHByb3BhZ2F0ZSBvdXQgb2YgdGhl
IHNoYWRvdyBET00nLCAhbXV0YXRpb25FdmVudEZpcmVkKTsKLSAgICAgICAgdGV4dGFyZWEucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZXh0YXJlYSk7Ci0gICAgfSwKLSAgICBsYWJlbFN5bnRoZXRp
Y0NsaWNrOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgY291bnQgPSAwOwotICAgICAg
ICB2YXIgbGFiZWwgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2xhYmVsJykpOwotICAgICAgICB2YXIgc2VhcmNoSW5wdXQgPSBsYWJlbC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpKTsKLSAgICAgICAgc2VhcmNoSW5w
dXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3NlYXJjaCcpOwotICAgICAgICBzZWFyY2hJbnB1dC5z
ZXRBdHRyaWJ1dGUoJ2lkJywgJ2JheicpOwotICAgICAgICBsYWJlbC5zZXRBdHRyaWJ1dGUoJ2Zv
cicsICdiYXonKTsKLSAgICAgICAgc2VhcmNoSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2sn
LCBmdW5jdGlvbihlKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb3VudCsrOwotICAgICAgICB9
LCBmYWxzZSk7Ci0gICAgICAgIGNsaWNrT24oc2VhcmNoSW5wdXQpOwotICAgICAgICBsb2coIkxh
YmVsIHNob3VsZCBsb29rIGJleW9uZCBzaGFkb3cgYm91bmRhcnkgdG8gZGV0ZWN0IGlmIGl0IGVu
Y2xvc2VzIGl0cyBhc3NvY2lhdGVkIGVsZW1lbnQiLCBjb3VudCA9PSAxKTsKLSAgICAgICAgbGFi
ZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsYWJlbCk7Ci0gICAgfSwKLSAgICBkZWZhdWx0RXZl
bnRSZXRhcmdldGluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGNvdW50ID0gMDsK
LSAgICAgICAgdmFyIGZpbGVJbnB1dCA9IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSk7Ci0gICAgICAgIGZpbGVJbnB1dC5zZXRBdHRyaWJ1
dGUoJ3R5cGUnLCAnZmlsZScpOwotICAgICAgICB2YXIgY291bnRlciA9IGZ1bmN0aW9uKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgY291bnQrKzsKLSAgICAgICAgfQotICAgICAgICBkb2N1bWVu
dC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUFjdGl2YXRlJywgY291bnRlciwgZmFsc2UpOwot
ICAgICAgICBjbGlja09uTGVmdFF1YXJ0ZXJPZihmaWxlSW5wdXQpOwotICAgICAgICBsb2coIkV2
ZW50cyBmb3IgZGVmYXVsdCBldmVudCBoYW5kbGVyIHNob3VsZCBub3QgYmUgcmV0YXJnZXRlZCIs
IGNvdW50ID09IDEpOwotICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIo
J0RPTUFjdGl2YXRlJywgY291bnRlciwgZmFsc2UpOwotICAgICAgICBmaWxlSW5wdXQucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZChmaWxlSW5wdXQpOwotICAgIH0sCi0gICAgZXZlbnRJblByb2dyZXNz
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgdGV4dElucHV0ID0gZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpKTsKLSAgICAgICAg
dGV4dElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgbG9nKCdPdGhlciBldmVudHMgc2hvdWxkIGJlIHJldGFyZ2V0ZWQnLCBl
LnRhcmdldCA9PSB0ZXh0SW5wdXQpOwotICAgICAgICB9LCBmYWxzZSk7Ci0gICAgICAgIGNsaWNr
T24odGV4dElucHV0KTsKLSAgICAgICAgdGV4dElucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
dGV4dElucHV0KTsKLSAgICB9LAotICAgIGZpbmFsRXZlbnRPYmplY3Q6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHZhciB0ZXh0SW5wdXQgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykpOwotICAgICAgICB2YXIgc3RvcmVkRXZlbnQ7
Ci0gICAgICAgIHRleHRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0b3JlZEV2ZW50ID0gZTsKLSAgICAgICAgfSwgZmFs
c2UpOwotICAgICAgICBjbGlja09uKHRleHRJbnB1dCk7Ci0gICAgICAgIGxvZygnQWZ0ZXIgZXZl
bnQgZGlzcGF0Y2gsIHRoZSBldmVudCBvYmplY3Qgc2hvdWxkIG5vdCByZXZlYWwgc2hhZG93IERP
TScsIHN0b3JlZEV2ZW50ICYmIHN0b3JlZEV2ZW50LnRhcmdldCA9PSB0ZXh0SW5wdXQpOwotICAg
ICAgICB0ZXh0SW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZXh0SW5wdXQpOwotICAgIH0s
Ci0gICAgZm9jdXNFdmVudFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2
YXIgc2VhcmNoSW5wdXQgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2lucHV0JykpOwotICAgICAgICBzZWFyY2hJbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5
cGUnLCAnc2VhcmNoJyk7Ci0gICAgICAgIHZhciBjb3VudCA9IDA7Ci0gICAgICAgIHNlYXJjaElu
cHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24oZXZ0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb3VudCsrOwotICAgICAgICB9KTsKLSAgICAgICAgY2xpY2tPbihzZWFyY2hJ
bnB1dCk7Ci0gICAgICAgIGxlYXBGb3J3YXJkKCk7Ci0gICAgICAgIGNsaWNrT24oc2VhcmNoSW5w
dXQpOwotICAgICAgICBsb2coJ0ZvY3VzaW5nIHNhbWUgc2hhZG93IERPTSBlbGVtZW50IHJlcGVh
dGVkbHkgc2hvdWxkIG5vdCB0cmlnZ2VyIG11bHRpcGxlIGZvY3VzL2JsdXIgZXZlbnRzJywgY291
bnQgPT0gMSk7Ci0gICAgICAgIHNlYXJjaElucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc2Vh
cmNoSW5wdXQpOwotICAgIH0KLX07Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKQotewotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLQotICAgIGxvZ0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCds
b2cnKTsKLSAgICBmb3IodmFyIHRlc3ROYW1lIGluIHRlc3RzKSB7Ci0gICAgICAgIHRlc3RzW3Rl
c3ROYW1lXSgpOwotICAgIH0KLX0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Ci0gICAgPHA+VGVzdHMgdG8gZW5zdXJlIHRoYXQgc2hhZG93IERPTSBib3Vu
ZGFyeSBpcyBub3QgY3Jvc3NlZCBkdXJpbmcgZXZlbnQgcHJvcGFnYXRpb24uIENhbiBvbmx5IHJ1
biB3aXRoaW4gRFJULgotICAgIDxwPlNlZSA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDYwMTUiPmJ1ZyA0NjAxNTwvYT4gZm9yIGRldGFpbHMuCi0gICAg
PGRpdiBpZD0ibG9nIj48L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91
bmRhcnktY3Jvc3NpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hh
ZG93LWJvdW5kYXJ5LWNyb3NzaW5nLWV4cGVjdGVkLnR4dAppbmRleCBmZDcyOWQ5NDRiNzJlNGJh
ZmJjZTBmY2FjZTc3MGU3MjVjNGFiYjJhLi42NzhmM2FiM2Y4ZDNkY2U3Mzk3YTFiOTQzNmI1ZDY3
M2E2MTYxZjJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaGFkb3ctYm91
bmRhcnktY3Jvc3NpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3NoYWRvdy1ib3VuZGFyeS1jcm9zc2luZy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwxMSBAQAot
VGVzdCBmb3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODAgUkVH
UkVTU0lPTiAocjE5MzQxLXIxOTM4NSk6IFJlcHJvZHVjaWJsZSBjcmFzaCBpbiAib25zZWxlY3Rz
dGFydCIgZXZlbnQuCi0KLVJlc3VsdDogUEFTUworVGVzdHMgdG8gZW5zdXJlIHRoYXQgc2hhZG93
IERPTSBib3VuZGFyeSBpcyBub3QgY3Jvc3NlZCBkdXJpbmcgZXZlbnQgcHJvcGFnYXRpb24uIENh
biBvbmx5IHJ1biB3aXRoaW4gRFJULgogCitTZWUgYnVnIDQ2MDE1IGZvciBkZXRhaWxzLgogCitN
dXRhdGlvbiBldmVudHMgc2hvdWxkIG5vdCBwcm9wYWdhdGUgb3V0IG9mIHRoZSBzaGFkb3cgRE9N
OiBQQVNTCitUaGUgc2VsZWN0c3RhcnQgZXZlbnQgc2hvdWxkIG5vdCBwcm9wYWdhdGUgb3V0IG9m
IHRoZSBzaGFkb3cgRE9NOiBQQVNTCitMYWJlbCBzaG91bGQgbG9vayBiZXlvbmQgc2hhZG93IGJv
dW5kYXJ5IHRvIGRldGVjdCBpZiBpdCBlbmNsb3NlcyBpdHMgYXNzb2NpYXRlZCBlbGVtZW50OiBQ
QVNTCitFdmVudHMgZm9yIGRlZmF1bHQgZXZlbnQgaGFuZGxlciBzaG91bGQgbm90IGJlIHJldGFy
Z2V0ZWQ6IFBBU1MKK090aGVyIGV2ZW50cyBzaG91bGQgYmUgcmV0YXJnZXRlZDogUEFTUworQWZ0
ZXIgZXZlbnQgZGlzcGF0Y2gsIHRoZSBldmVudCBvYmplY3Qgc2hvdWxkIG5vdCByZXZlYWwgc2hh
ZG93IERPTTogUEFTUworRm9jdXNpbmcgc2FtZSBzaGFkb3cgRE9NIGVsZW1lbnQgcmVwZWF0ZWRs
eSBzaG91bGQgbm90IHRyaWdnZXIgbXVsdGlwbGUgZm9jdXMvYmx1ciBldmVudHM6IFBBU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NoYWRvdy1ib3VuZGFyeS1jcm9zc2lu
Zy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5n
Lmh0bWwKaW5kZXggZTAwMjMzMzBlMWRjMTZjNjdkYjkwMTExNDI0MWM2M2JiMWVkYTExZC4uNGU4
NDg2YjJiZTY5ODEyYzA2OTE3MzU0MjlmMzhkMTc1OWZjZmVlMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5nLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5nLmh0bWwKQEAgLTEs
NDMgKzEsMTYwIEBACiA8aHRtbD4KIDxoZWFkPgotICAgIDx0aXRsZT48L3RpdGxlPgotICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHN1Y2Nlc3M7Ci0gICAg
ICAgIHZhciB0YXJnZXQ7Cis8c2NyaXB0PgogCi0gICAgICAgIGZ1bmN0aW9uIHNlbGVjdFN0YXJ0
KGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBzdWNjZXNzID0gZXZlbnQudGFyZ2V0ID09
IHRhcmdldDsKLSAgICAgICAgfQordmFyIGxvZ0RpdjsKIAotICAgICAgICBmdW5jdGlvbiB0ZXN0
KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworZnVuY3Rpb24gbG9nKG1zZywgc3VjY2VzcykKK3sKKyAgICBs
b2dEaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpLnRleHRDb250
ZW50ID0gbXNnICsgJzogJyArIChzdWNjZXNzID8gJ1BBU1MnIDogJ0ZBSUwnKTsKK30KKworZnVu
Y3Rpb24gY2xpY2tPbihlbGVtZW50KQoreworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICB2YXIgeCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1l
bnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciB5ID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVt
ZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgp
OworfQogCi0gICAgICAgICAgICB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFy
Z2V0Iik7Ci0gICAgICAgICAgICB2YXIgeCA9IHRhcmdldC5vZmZzZXRMZWZ0ICsgdGFyZ2V0Lm9m
ZnNldFdpZHRoIC8gMjsKLSAgICAgICAgICAgIHZhciB5ID0gdGFyZ2V0Lm9mZnNldFRvcCArIHRh
cmdldC5vZmZzZXRIZWlnaHQgLyAyOworZnVuY3Rpb24gY2xpY2tPbkxlZnRRdWFydGVyT2YoZWxl
bWVudCkKK3sKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKLSAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOworICAgIHZhciB4ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0
aCAvIDQ7CisgICAgdmFyIHkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVp
Z2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CiAKLSAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSAhc3Vj
Y2VzcyA/ICJGQUlMIiA6ICJQQVNTIjsKK2Z1bmN0aW9uIGxlYXBGb3J3YXJkKCkKK3sKKyAgICBp
ZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgZXZlbnRTZW5k
ZXIubGVhcEZvcndhcmQoMTAwMCk7Cit9CisKK3ZhciB0ZXN0cyA9IHsKKyAgICBtdXRhdGlvbkV2
ZW50UHJvcGFnYXRpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciB0ZXh0YXJlYSA9
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFy
ZWEnKSk7CisgICAgICAgIHZhciBtdXRhdGlvbkV2ZW50RmlyZWQ7CisgICAgICAgIHRleHRhcmVh
LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTVN1YnRyZWVNb2RpZmllZCcsIGZ1bmN0aW9uKGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG11dGF0aW9uRXZlbnRGaXJlZCA9IHRydWU7CisgICAgICAgIH0s
IGZhbHNlKTsKKyAgICAgICAgdGV4dGFyZWEudmFsdWUgPSAndGVzdCc7CisgICAgICAgIC8vIFRy
aWdnZXIgc3R5bGUgcmVjYWxjIGFuZCBzYWRseSwgdGhlIGFjdHVhbCBtdXRhdGlvbiBvZiB0aGUg
dGV4dGFyZWEgc2hhZG93IERPTS4KKyAgICAgICAgdGV4dGFyZWEub2Zmc2V0SGVpZ2h0OworICAg
ICAgICBsb2coJ011dGF0aW9uIGV2ZW50cyBzaG91bGQgbm90IHByb3BhZ2F0ZSBvdXQgb2YgdGhl
IHNoYWRvdyBET00nLCAhbXV0YXRpb25FdmVudEZpcmVkKTsKKyAgICAgICAgdGV4dGFyZWEucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZXh0YXJlYSk7CisgICAgfSwKKyAgICBzZWxlY3RzdGFydEV2
ZW50UHJvcGFnYXRpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciB0ZXh0SW5wdXQg
PSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0
JykpOworICAgICAgICB2YXIgc2VsZWN0c3RhcnRFdmVudEZpcmVkID0gZmFsc2U7CisgICAgICAg
IGRvY3VtZW50LnNlbGVjdHN0YXJ0ID0gZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAg
ICBzZWxlY3RzdGFydEV2ZW50RmlyZWQgPSB0cnVlOwogICAgICAgICB9CisgICAgICAgIGNsaWNr
T24odGV4dElucHV0KTsKKyAgICAgICAgbG9nKCdUaGUgc2VsZWN0c3RhcnQgZXZlbnQgc2hvdWxk
IG5vdCBwcm9wYWdhdGUgb3V0IG9mIHRoZSBzaGFkb3cgRE9NJywgIXNlbGVjdHN0YXJ0RXZlbnRG
aXJlZCk7CisgICAgICAgIHRleHRJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRleHRJbnB1
dCk7CisgICAgICAgIGRvY3VtZW50LnNlbGVjdHN0YXJ0ID0gbnVsbDsKKyAgICB9LAorICAgIGxh
YmVsU3ludGhldGljQ2xpY2s6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBjb3VudCA9
IDA7CisgICAgICAgIHZhciBsYWJlbCA9IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKSk7CisgICAgICAgIHZhciBzZWFyY2hJbnB1dCA9IGxh
YmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykpOworICAgICAg
ICBzZWFyY2hJbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnc2VhcmNoJyk7CisgICAgICAgIHNl
YXJjaElucHV0LnNldEF0dHJpYnV0ZSgnaWQnLCAnYmF6Jyk7CisgICAgICAgIGxhYmVsLnNldEF0
dHJpYnV0ZSgnZm9yJywgJ2JheicpOworICAgICAgICBzZWFyY2hJbnB1dC5hZGRFdmVudExpc3Rl
bmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvdW50Kys7
CisgICAgICAgIH0sIGZhbHNlKTsKKyAgICAgICAgY2xpY2tPbihzZWFyY2hJbnB1dCk7CisgICAg
ICAgIGxvZygiTGFiZWwgc2hvdWxkIGxvb2sgYmV5b25kIHNoYWRvdyBib3VuZGFyeSB0byBkZXRl
Y3QgaWYgaXQgZW5jbG9zZXMgaXRzIGFzc29jaWF0ZWQgZWxlbWVudCIsIGNvdW50ID09IDEpOwor
ICAgICAgICBsYWJlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGxhYmVsKTsKKyAgICB9LAorICAg
IGRlZmF1bHRFdmVudFJldGFyZ2V0aW5nOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIg
Y291bnQgPSAwOworICAgICAgICB2YXIgZmlsZUlucHV0ID0gZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpKTsKKyAgICAgICAgZmlsZUlucHV0
LnNldEF0dHJpYnV0ZSgndHlwZScsICdmaWxlJyk7CisgICAgICAgIHZhciBjb3VudGVyID0gZnVu
Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBjb3VudCsrOworICAgICAgICB9CisgICAg
ICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignRE9NQWN0aXZhdGUnLCBjb3VudGVy
LCBmYWxzZSk7CisgICAgICAgIGNsaWNrT25MZWZ0UXVhcnRlck9mKGZpbGVJbnB1dCk7CisgICAg
ICAgIGxvZygiRXZlbnRzIGZvciBkZWZhdWx0IGV2ZW50IGhhbmRsZXIgc2hvdWxkIG5vdCBiZSBy
ZXRhcmdldGVkIiwgY291bnQgPT0gMSk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZl
bnRMaXN0ZW5lcignRE9NQWN0aXZhdGUnLCBjb3VudGVyLCBmYWxzZSk7CisgICAgICAgIGZpbGVJ
bnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZpbGVJbnB1dCk7CisgICAgfSwKKyAgICBldmVu
dEluUHJvZ3Jlc3M6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciB0ZXh0SW5wdXQgPSBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jykp
OworICAgICAgICB0ZXh0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihl
KQorICAgICAgICB7CisgICAgICAgICAgICBsb2coJ090aGVyIGV2ZW50cyBzaG91bGQgYmUgcmV0
YXJnZXRlZCcsIGUudGFyZ2V0ID09IHRleHRJbnB1dCk7CisgICAgICAgIH0sIGZhbHNlKTsKKyAg
ICAgICAgY2xpY2tPbih0ZXh0SW5wdXQpOworICAgICAgICB0ZXh0SW5wdXQucGFyZW50Tm9kZS5y
ZW1vdmVDaGlsZCh0ZXh0SW5wdXQpOworICAgIH0sCisgICAgZmluYWxFdmVudE9iamVjdDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHRleHRJbnB1dCA9IGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSk7CisgICAgICAgIHZhciBz
dG9yZWRFdmVudDsKKyAgICAgICAgdGV4dElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywg
ZnVuY3Rpb24oZSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RvcmVkRXZlbnQgPSBlOworICAg
ICAgICB9LCBmYWxzZSk7CisgICAgICAgIGNsaWNrT24odGV4dElucHV0KTsKKyAgICAgICAgbG9n
KCdBZnRlciBldmVudCBkaXNwYXRjaCwgdGhlIGV2ZW50IG9iamVjdCBzaG91bGQgbm90IHJldmVh
bCBzaGFkb3cgRE9NJywgc3RvcmVkRXZlbnQgJiYgc3RvcmVkRXZlbnQudGFyZ2V0ID09IHRleHRJ
bnB1dCk7CisgICAgICAgIHRleHRJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRleHRJbnB1
dCk7CisgICAgfSwKKyAgICBmb2N1c0V2ZW50UHJvcGFnYXRpb246IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHZhciBzZWFyY2hJbnB1dCA9IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSk7CisgICAgICAgIHNlYXJjaElucHV0LnNldEF0
dHJpYnV0ZSgndHlwZScsICdzZWFyY2gnKTsKKyAgICAgICAgdmFyIGNvdW50ID0gMDsKKyAgICAg
ICAgc2VhcmNoSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBmdW5jdGlvbihldnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIH0pOworICAgICAgICBjbGlj
a09uKHNlYXJjaElucHV0KTsKKyAgICAgICAgbGVhcEZvcndhcmQoKTsKKyAgICAgICAgY2xpY2tP
bihzZWFyY2hJbnB1dCk7CisgICAgICAgIGxvZygnRm9jdXNpbmcgc2FtZSBzaGFkb3cgRE9NIGVs
ZW1lbnQgcmVwZWF0ZWRseSBzaG91bGQgbm90IHRyaWdnZXIgbXVsdGlwbGUgZm9jdXMvYmx1ciBl
dmVudHMnLCBjb3VudCA9PSAxKTsKKyAgICAgICAgc2VhcmNoSW5wdXQucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChzZWFyY2hJbnB1dCk7CisgICAgfQorfTsKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgbG9nRGl2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2xvZycpOworICAgIGZvcih2YXIgdGVzdE5hbWUgaW4gdGVzdHMpIHsKKyAgICAg
ICAgdGVzdHNbdGVzdE5hbWVdKCk7CisgICAgfQorfQogCi0gICAgICAgIGFkZEV2ZW50TGlzdGVu
ZXIoInNlbGVjdHN0YXJ0Iiwgc2VsZWN0U3RhcnQsIHRydWUpOwotICAgIDwvc2NyaXB0PgorPC9z
Y3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InRlc3QoKSI+Ci0gICAgPHA+Ci0gICAgICAg
IFRlc3QgZm9yIDxpPjxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNzgwIj5odHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4MDwv
YT4KLSAgICAgICAgUkVHUkVTU0lPTiAocjE5MzQxLXIxOTM4NSk6IFJlcHJvZHVjaWJsZSBjcmFz
aCBpbiAib25zZWxlY3RzdGFydCIgZXZlbnQ8L2k+LgotICAgIDwvcD4KLSAgICA8cD4KLSAgICAg
ICAgUmVzdWx0OiA8c3BhbiBpZD0icmVzdWx0Ij5jYW5ub3QgcnVuIGludGVyYWN0aXZlbHk8L3Nw
YW4+Ci0gICAgPC9wPgotICAgIDxpbnB1dCBpZD0idGFyZ2V0Ij4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKyAgICA8cD5UZXN0cyB0byBlbnN1cmUgdGhhdCBzaGFkb3cgRE9NIGJvdW5kYXJ5
IGlzIG5vdCBjcm9zc2VkIGR1cmluZyBldmVudCBwcm9wYWdhdGlvbi4gQ2FuIG9ubHkgcnVuIHdp
dGhpbiBEUlQuCisgICAgPHA+U2VlIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NjAxNSI+YnVnIDQ2MDE1PC9hPiBmb3IgZGV0YWlscy4KKyAgICA8ZGl2
IGlkPSJsb2ciPjwvZGl2PgogPC9ib2R5PgotPC9odG1sPgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MTQ3ZjBhYzNlZDdhODAzMDUzOGVlODEyYzE5
ZWYzMTdhZTRiYzQxLi5kY2NkZTgyOTZmODBhYTliZjc2MTNhZmUyY2I3OWRmZDkxMTM0NTdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDEtMTEgIERpbWl0cmkgR2xhemtvdiAg
PGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OKHI3MTkzNCkgQ2FuJ3QgdHlwZSBpbiBzZWFyY2gg
ZWRpdCBmaWVsZCBvbiBza2luLW9uZS5jb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUyMTk1CisKKyAgICAgICAgUmVzdG9yZWQgdGhlIG9yaWdpbmFs
IGJlaGF2aW9yLCB3aGVyZSB0aGUgc2VsZWN0c3RhcnQgZXZlbnQgaXMgbm90CisgICAgICAgIGRp
c3BhdGNoZWQgd2hlbiBzZWxlY3Rpb24gY2hhbmdlcyBpbnNpZGUgb2YgdGhlIHNoYWRvdyBET00u
CisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNw
YXRjaEdlbmVyaWNFdmVudCk6IEFkZGVkIGEgY2hlY2sgdG8ga2VlcCBzZWxlY3RzdGFydAorICAg
ICAgICAgICAgZXZlbnRzIGluc2lkZSBvZiB0aGUgc2hhZG93IERPTS4KKwogMjAxMS0wMS0xMSAg
Q3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgYnVpbGRmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYTU4OTI4MmYyMGE2NWE2YzYxN2Y4MDMx
M2IwYWIyOThhNGQ2ZThjYy4uZWE3MzVkNzZkZjVlNjkxMzcyNTQxODRlNDFkYjVhNWRlMzc5N2Yw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjYyNSw3ICsyNjI1LDcgQEAgYm9vbCBOb2RlOjpkaXNw
YXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKICAgICBSZWZQdHI8
Tm9kZT4gdGhpc05vZGUodGhpcyk7CiAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBvcmlnaW5hbFRh
cmdldCA9IGV2ZW50LT50YXJnZXQoKTsKICAgICBWZWN0b3I8RXZlbnRDb250ZXh0PiBhbmNlc3Rv
cnM7Ci0gICAgZ2V0RXZlbnRBbmNlc3RvcnMoYW5jZXN0b3JzLCBvcmlnaW5hbFRhcmdldC5nZXQo
KSwgZXZlbnQtPmlzTXV0YXRpb25FdmVudCgpID8gU3RheUluc2lkZVNoYWRvd0RPTSA6IFJldGFy
Z2V0RXZlbnQpOworICAgIGdldEV2ZW50QW5jZXN0b3JzKGFuY2VzdG9ycywgb3JpZ2luYWxUYXJn
ZXQuZ2V0KCksIGV2ZW50LT5pc011dGF0aW9uRXZlbnQoKSB8fCBldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5zZWxlY3RzdGFydEV2ZW50ID8gU3RheUluc2lkZVNoYWRvd0RPTSA6IFJldGFy
Z2V0RXZlbnQpOwogCiAgICAgV2luZG93RXZlbnRDb250ZXh0IHdpbmRvd0NvbnRleHQoZXZlbnQu
Z2V0KCksIHRoaXMsIHRvcEV2ZW50Q29udGV4dChhbmNlc3RvcnMpKTsKIAo=
</data>
<flag name="review"
          id="69894"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>