<?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>76262</bug_id>
          
          <creation_ts>2012-01-13 02:33:12 -0800</creation_ts>
          <short_desc>StyleRecalc should occur when shadow root exists and light children are changed.</short_desc>
          <delta_ts>2012-02-02 18:47:27 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>75306</dependson>
    
    <dependson>77322</dependson>
          <blocked>75301</blocked>
    
    <blocked>76611</blocked>
    
    <blocked>77584</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>morrita</cc>
    
    <cc>shinyak</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>535549</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-13 02:33:12 -0800</bug_when>
    <thetext>To support dynamic ShadowContentElement fallback, style recalculation should occur when children of node which has shadow tree and content element are changed.
To achieve it, maybe we should add some code into Element::childrenChanged.
We should measure the performance when adding code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535559</commentid>
    <comment_count>1</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-13 03:09:18 -0800</bug_when>
    <thetext>This is a result before adding if-statement.
http://dromaeo.com/?id=160729</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535560</commentid>
    <comment_count>2</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-13 03:14:35 -0800</bug_when>
    <thetext>This is after adding if-statement. About 5% performance degrade?
http://dromaeo.com/?id=160730</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535574</commentid>
    <comment_count>3</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-13 03:45:01 -0800</bug_when>
    <thetext>I&apos;ve tried a few times again.

Before adding if-statement
http://dromaeo.com/?id=160732
http://dromaeo.com/?id=160733
http://dromaeo.com/?id=160734

Then, I&apos;ve added 
if (hasRareDate() &amp;&amp; shadowRoot())
    setNeedsStyleRecalc()
in the last of Element::childrenChanged.

After adding it,
http://dromaeo.com/?id=160735
http://dromaeo.com/?id=160736
http://dromaeo.com/?id=160738

It seems adding if-statement is not harmful to performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535668</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-01-13 07:40:20 -0800</bug_when>
    <thetext>Can haz patch? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538650</commentid>
    <comment_count>5</comment_count>
      <attachid>123113</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-19 05:29:00 -0800</bug_when>
    <thetext>Created attachment 123113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538671</commentid>
    <comment_count>6</comment_count>
      <attachid>123113</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-19 06:39:09 -0800</bug_when>
    <thetext>Comment on attachment 123113
Patch

Attachment 123113 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11299091

New failing tests:
fast/html/details-replace-text.html
fast/html/details-remove-child-2.html
fast/html/details-remove-child-1.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538764</commentid>
    <comment_count>7</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-01-19 09:32:37 -0800</bug_when>
    <thetext>Why are details tests sad?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539220</commentid>
    <comment_count>8</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-19 18:27:10 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Why are details tests sad?

Hmm...
Let me check it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539304</commentid>
    <comment_count>9</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-19 23:47:36 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Why are details tests sad?
&gt; 
&gt; Hmm...
&gt; Let me check it.

Some unnecessary RenderBlock exists in DETAILS block.
I&apos;m thinking we should reconsider the attach order of light children when a shadow tree exists (Bug 76611) to fix it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539306</commentid>
    <comment_count>10</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-19 23:59:55 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Some unnecessary RenderBlock exists in DETAILS block.
&gt; I&apos;m thinking we should reconsider the attach order of light children when a shadow tree exists (Bug 76611) to fix it...
Yeah, let&apos;s fix Bug 76611 before this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542899</commentid>
    <comment_count>11</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-25 23:29:44 -0800</bug_when>
    <thetext>I was investigating why anonymous RenderBlock was created today.

Let&apos;s consider the following. 
&lt;div&gt;foo&lt;div&gt;bar&lt;/div&gt;&lt;/div&gt;

This will create renderer tree like the following:
RenderBlock
    RenderBlock (anonymous)
         RenderText                    &lt;-- (1)
    RenderBlock {DIV}               &lt;-- (2)
         RenderText

When (1) is removed, the parent RenderBlock is not deleted. If (2) is removed, the previous anonymous RenderBlock is deleted.

Also, let&apos;s consider the following.
&lt;div&gt;foo&lt;div&gt;bar&lt;/div&gt;baz&lt;/div&gt;

RenderBlock
    RenderBlock (anonymous)
         RenderText
    RenderBlock {DIV}
         RenderText
    RenderBlock (anonymous)
         RenderText

When foo and baz are removed, these anonymous RenderBlock won&apos;t be removed. When DIV is deleted, 
those anonymous RenderBlocks are merged, then removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542901</commentid>
    <comment_count>12</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-25 23:31:39 -0800</bug_when>
    <thetext>I&apos;m now thinking left anonymous RenderBlock are not harmful at all...

Can I change the test result (and create a bug to delete empty anonymous render block)?
Or should I think another way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542969</commentid>
    <comment_count>13</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-26 01:50:02 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; I&apos;m now thinking left anonymous RenderBlock are not harmful at all...
&gt; 
&gt; Can I change the test result (and create a bug to delete empty anonymous render block)?
&gt; Or should I think another way?

Hmm... I&apos;m now thinking when detaching SUMMARY, anonymous RenderBlock for DETAILS should be deleted. If SUMMARY and DETAILS are DIV, anonymous RenderBlock is deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543197</commentid>
    <comment_count>14</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-01-26 09:18:41 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; This is after adding if-statement. About 5% performance degrade?
&gt; http://dromaeo.com/?id=160730

I think you need a bit more investigation here. I don&apos;t understand how DOM attributes test could be even impacted by this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544994</commentid>
    <comment_count>15</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-30 03:56:31 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #2)
&gt; &gt; This is after adding if-statement. About 5% performance degrade?
&gt; &gt; http://dromaeo.com/?id=160730
&gt; 
&gt; I think you need a bit more investigation here. I don&apos;t understand how DOM attributes test could be even impacted by this.

OKay...
(In reply to comment #14)
&gt; (In reply to comment #2)
&gt; &gt; This is after adding if-statement. About 5% performance degrade?
&gt; &gt; http://dromaeo.com/?id=160730
&gt; 
&gt; I think you need a bit more investigation here. I don&apos;t understand how DOM attributes test could be even impacted by this.

I agree that DOM attribute test is not relevant to this.
But I think DOM modification test is relevant, because childrenChanged is called when children are changed.

From the test result (especially from appendChild test and insertBefore test), I don&apos;t think my patch affect performance so much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545678</commentid>
    <comment_count>16</comment_count>
      <attachid>124647</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-30 18:09:05 -0800</bug_when>
    <thetext>Created attachment 124647
Test Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545713</commentid>
    <comment_count>17</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-30 18:45:30 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Created an attachment (id=124647) [details]
&gt; Test Patch

Ah, actually this patch depends on Bug 76611...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545736</commentid>
    <comment_count>18</comment_count>
      <attachid>124647</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 19:15:34 -0800</bug_when>
    <thetext>Comment on attachment 124647
Test Patch

Attachment 124647 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11150498

New failing tests:
fast/html/details-replace-text.html
fast/html/details-remove-child-2.html
fast/html/details-remove-child-1.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546845</commentid>
    <comment_count>19</comment_count>
      <attachid>124891</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-01 00:00:44 -0800</bug_when>
    <thetext>Created attachment 124891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546847</commentid>
    <comment_count>20</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-01 00:01:40 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created an attachment (id=124891) [details]
&gt; Patch

Now Bug 76611 was fixed, this patch won&apos;t make tests sad...hopefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546899</commentid>
    <comment_count>21</comment_count>
      <attachid>124891</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-01 01:35:06 -0800</bug_when>
    <thetext>Comment on attachment 124891
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Set style recalculation flag when a child element is changed.

Could you elaborate why we need this change?

&gt; Source/WebCore/dom/Element.cpp:1371
&gt; +        setNeedsStyleRecalc();

This could be shadowRoot-&gt;hostChildrenChanged().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547491</commentid>
    <comment_count>22</comment_count>
      <attachid>125045</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-01 16:50:12 -0800</bug_when>
    <thetext>Created attachment 125045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547571</commentid>
    <comment_count>23</comment_count>
      <attachid>125045</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-01 18:43:04 -0800</bug_when>
    <thetext>Comment on attachment 125045
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        So we have to recalculate content element again.

&quot;recalculate content element&quot; sounds strange. What we need to recompute is inclusion of that, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547585</commentid>
    <comment_count>24</comment_count>
      <attachid>125064</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-01 19:24:08 -0800</bug_when>
    <thetext>Created attachment 125064
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548338</commentid>
    <comment_count>25</comment_count>
      <attachid>125064</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 18:47:21 -0800</bug_when>
    <thetext>Comment on attachment 125064
Patch for landing

Clearing flags on attachment: 125064

Committed r106613: &lt;http://trac.webkit.org/changeset/106613&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548339</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 18:47:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123113</attachid>
            <date>2012-01-19 05:29:00 -0800</date>
            <delta_ts>2012-01-30 18:08:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76262-20120119222859.patch</filename>
            <type>text/plain</type>
            <size>15938</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1Mzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg4NjMwZmE5ZDQ2NWNj
ZWJhMWEwNzk4ZTdmYzk0MTRjNDYzYTJhNi4uZjM5MDBkZmFmYTM3ZmMyYTZmYWE0Yzc5MWQxNGQ4
YjhiYzExZGQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTE5ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3R5bGVSZWNhbGMg
c2hvdWxkIG9jY3VyIHdoZW4gc2hhZG93IHJvb3QgZXhpc3RzIGFuZCBsaWdodCBjaGlsZHJlbiBh
cmUgY2hhbmdlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2MjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2V0IHN0eWxlIHJlY2FsY3VsYXRpb24gZmxhZyB3aGVuIGEgY2hpbGQgZWxlbWVudCBpcyBj
aGFuZ2VkLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMt
ZmFsbGJhY2stZHluYW1pYy5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorCiAyMDEyLTAxLTE4ICBT
aGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CiAKICAgICAgICAgU2hhZG93Q29u
dGVudCBxdWVyeSBzaG91bGQgYmUgYWJsZSB0byBoYXZlIGZhbGxiYWNrIGVsZW1lbnRzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCmluZGV4IDg2ODk2YTcwYmE4OTY3YTRjOTM0YjU4ODgyY2UyYTMzYTA0
YzZmNGIuLmVjYzNhYTYxNjZmMDJiYzE0YTQ0YWI1ZjZhMDIzYWNiYjk3ZjBmOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKQEAgLTEzNTIsNiArMTM1Miw5IEBAIHZvaWQgRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUq
IGFmCiAgICAgICAgIGNoZWNrRm9yRW1wdHlTdHlsZUNoYW5nZSh0aGlzLCByZW5kZXJTdHlsZSgp
KTsKICAgICBlbHNlCiAgICAgICAgIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcyh0aGlzLCBy
ZW5kZXJTdHlsZSgpLCBmYWxzZSwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3Vu
dERlbHRhKTsKKworICAgIGlmIChoYXNSYXJlRGF0YSgpICYmIHNoYWRvd1Jvb3QoKSkKKyAgICAg
ICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCiB2b2lkIEVsZW1lbnQ6OmJlZ2luUGFyc2lu
Z0NoaWxkcmVuKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA2MzgyOGU2ODY1YzZhMmQ4YmFhNDZhMmRlMGYxMjY5NjRjOWVm
NDYxLi43MDU4YmRhYWQ5NWVkYjk1NGZjMGY0ZDZiZDUwMmY2ZjI1ODliNWQyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTItMDEtMTkgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xl
LmNvbT4KKworICAgICAgICBTdHlsZVJlY2FsYyBzaG91bGQgb2NjdXIgd2hlbiBzaGFkb3cgcm9v
dCBleGlzdHMgYW5kIGxpZ2h0IGNoaWxkcmVuIGFyZSBjaGFuZ2VkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNjIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
Y29udGVudHMtZmFsbGJhY2stZHluYW1pYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy5odG1sOiBB
ZGRlZC4KKwogMjAxMi0wMS0xOCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29t
PgogCiAgICAgICAgIFNoYWRvd0NvbnRlbnQgcXVlcnkgc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBm
YWxsYmFjayBlbGVtZW50cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NzRjYzE5MGM2ODA1MjY1ZDdhZGM5YjVjMTI3ZmZjNTc4
NmM3MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjYg
QEAKK3Rlc3RBcHBlbmRGYWxsYmFjaworUEFTUwordGVzdEFwcGVuZEZhbGxiYWNrRGVlcAorUEFT
UwordGVzdFJlbW92ZUZhbGxiYWNrCitQQVNTCit0ZXN0UmVtb3ZlRmFsbGJhY2tEZWVwCitQQVNT
Cit0ZXN0UmVtb3ZlMQorUEFTUwordGVzdFJlbW92ZTIKK1BBU1MKK3Rlc3RSZW1vdmUzCitQQVNT
Cit0ZXN0UmVwbGFjZUZhbGxiYWNrCitQQVNTCit0ZXN0RmFsbGJhY2tDb250ZW50Q2hhbmdlZAor
UEFTUwordGVzdENvbXBsZXhBcHBlbmQKK1BBU1MKK3Rlc3RDb21wbGV4UmVtb3ZlCitQQVNTCit0
ZXN0Q29tcGxleFJlcGxhY2UKK1BBU1MKK1RFU1QgQ09NUExFVEVECisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1p
Yy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxs
YmFjay1keW5hbWljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc2MzIwZDc3YzQ0Mjc2YjM0OGI0NDE4ZmJl
MzI5MzQ2ZDA2MWFmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy5odG1sCkBAIC0wLDAgKzEsNDAx
IEBACisgPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVsYXRp
dmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisuY29udGFp
bmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKy5zcGFuIHsKKyAgICBkaXNwbGF5
OiBib3hlZC1pbmxpbmU7CisgICAgbWFyZ2luOiAycHg7CisgICAgYm9yZGVyOiBzb2xpZDsKK30K
Kzwvc3R5bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArPSAobWVzc2FnZSArICJcbiIp
OworfQorCitmdW5jdGlvbiByZW1vdmVBbGxDaGlsZHJlbihlbGVtKSB7CisgICAgd2hpbGUgKGVs
ZW0uZmlyc3RDaGlsZCkKKyAgICAgICAgZWxlbS5yZW1vdmVDaGlsZChlbGVtLmZpcnN0Q2hpbGQp
OworfQorCitmdW5jdGlvbiBjbGVhblVwKCkgeworICAgIHJlbW92ZUFsbENoaWxkcmVuKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykpOworICAgIHJlbW92ZUFsbENo
aWxkcmVuKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykpOworfQor
CitmdW5jdGlvbiByZW1vdmVDb250YWluZXJMaW5lcyh0ZXh0KSB7CisgICAgdmFyIGxpbmVzID0g
dGV4dC5zcGxpdCgnXG4nKTsKKyAgICBsaW5lcy5zcGxpY2UoMCwgMik7CisgICAgcmV0dXJuIGxp
bmVzLmpvaW4oJ1xuJyk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrKCkgeworICAgIHZhciByZWZDb250
YWluZXJSZW5kZXJUcmVlID0gaW50ZXJuYWxzLmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykpOworICAgIHZhciByZWZSZW5k
ZXJUcmVlID0gcmVtb3ZlQ29udGFpbmVyTGluZXMocmVmQ29udGFpbmVyUmVuZGVyVHJlZSk7CisK
KyAgICB2YXIgdGFyZ2V0Q29udGFpbmVyUmVuZGVyVHJlZSA9IGludGVybmFscy5lbGVtZW50UmVu
ZGVyVHJlZUFzVGV4dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicp
KTsKKyAgICB2YXIgdGFyZ2V0UmVuZGVyVHJlZSA9IHJlbW92ZUNvbnRhaW5lckxpbmVzKHRhcmdl
dENvbnRhaW5lclJlbmRlclRyZWUpOworCisgICAgaWYgKHRhcmdldFJlbmRlclRyZWUgPT0gcmVm
UmVuZGVyVHJlZSkKKyAgICAgICAgbG9nKCJQQVNTIik7CisgICAgZWxzZSB7CisgICAgICAgIGxv
ZygiRkFJTCIpOworICAgICAgICBsb2coIkV4cGVjdGVkOiAiKTsKKyAgICAgICAgbG9nKHJlZlJl
bmRlclRyZWUpOworICAgICAgICBsb2coIkFjdHVhbDogIik7CisgICAgICAgIGxvZyh0YXJnZXRS
ZW5kZXJUcmVlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVNwYW5XaXRoVGV4dCh0ZXh0
KSB7CisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CisgICAg
c3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CisgICAgcmV0
dXJuIHNwYW47Cit9CisKK2Z1bmN0aW9uIGFwcGVuZFNoYWRvdyh0YXJnZXQsIHNlbGVjdCkgewor
ICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFyZ2V0KTsKKworICAg
IHZhciBjb250ZW50ID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3VtZW50KTsK
KyAgICBjb250ZW50LnNldEF0dHJpYnV0ZSgnc2VsZWN0Jywgc2VsZWN0KTsKKyAgICBjb250ZW50
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgiRkFMTEJBQ0siKSk7CisKKyAgICByb290
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ7U0hBRE9XOiAiKSk7CisgICAg
cm9vdC5hcHBlbmRDaGlsZChjb250ZW50KTsKKyAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCJ9IikpOworfQorCitmdW5jdGlvbiBhcHBlbmRTaGFkb3dEZWVwKHRh
cmdldCwgc2VsZWN0KSB7CisgICAgdmFyIHJvb3QgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9v
dCh0YXJnZXQpOworCisgICAgdmFyIGNoaWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOworICAgIHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBpbnRlcm5hbHMuY3JlYXRlQ29udGVu
dEVsZW1lbnQoZG9jdW1lbnQpOworICAgICAgICBjb250ZW50LnNldEF0dHJpYnV0ZSgnc2VsZWN0
Jywgc2VsZWN0KTsKKyAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoIkZBTExCQUNLIikpOworCisgICAgICAgIGNoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCJ7SU5ORVI6ICIpKTsKKyAgICAgICAgY2hpbGQuYXBwZW5kQ2hpbGQoY29u
dGVudCk7CisgICAgICAgIGNoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCJ9IikpOworICAgIH0KKworICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoIntTSEFET1c6ICIpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNoaWxkKTsKKyAgICBy
b290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ9IikpOworfQorCitmdW5j
dGlvbiB0ZXN0QXBwZW5kRmFsbGJhY2soY2FsbElmRG9uZSkgeworICAgIHZhciB0YXJnZXQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxz
cGFuPmNvbnRlbnQ8L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIjYXBwZW5k
Iik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFw
cGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbih0YXJnZXQsIGNhbGxJ
ZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGFyZ2V0
LmlubmVySFRNTCA9ICI8c3BhbiBpZD0nYXBwZW5kJz5hcHBlbmRlZDwvc3Bhbj4iOworICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhU
TUwgPSAiPGRpdj57U0hBRE9XOiA8c3Bhbj5hcHBlbmRlZDwvc3Bhbj59PC9kaXY+IjsKKyAgICAg
ICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIGNhbGxJZkRv
bmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdEFwcGVuZEZh
bGxiYWNrRGVlcChjYWxsSWZEb25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+Y29udGVudDwv
c3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93RGVlcCh0YXJnZXQsICIjYXBwZW5kLWRlZXAiKTsK
KworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5k
Q2hpbGQodGFyZ2V0KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHRhcmdldCwgY2FsbElmRG9u
ZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0YXJnZXQuaW5u
ZXJIVE1MID0gIjxzcGFuIGlkPSdhcHBlbmQtZGVlcCc+YXBwZW5kZWQ8L3NwYW4+IjsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJI
VE1MID0gIjxkaXY+e1NIQURPVzogPHNwYW4+e0lOTkVSOiA8c3Bhbj5hcHBlbmRlZDwvc3Bhbj59
PC9zcGFuPn08L2Rpdj4iOworICAgICAgICAgICAgY2FsbElmRG9uZSgpOworICAgICAgICB9Owor
ICAgIH0pKHRhcmdldCwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfQor
CitmdW5jdGlvbiB0ZXN0UmVtb3ZlRmFsbGJhY2soY2FsbElmRG9uZSkgeworICAgIHZhciB0YXJn
ZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1M
ID0gIjxzcGFuIGlkPSdyZW1vdmUnPmNvbnRlbnQ8L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRv
dyh0YXJnZXQsICIjcmVtb3ZlIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0
dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5j
dGlvbih0YXJnZXQsIGNhbGxJZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250ZW50PC9zcGFuPiIKKyAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5u
ZXJIVE1MID0gIjxkaXY+e1NIQURPVzogPHNwYW4+RkFMTEJBQ0s8L3NwYW4+fTwvZGl2PiI7Cisg
ICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgICAgIH07CisgICAgfSkodGFyZ2V0LCBjYWxs
SWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZW1v
dmVGYWxsYmFja0RlZXAoY2FsbElmRG9uZSkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlkPSdy
ZW1vdmUtZGVlcCc+Y29udGVudDwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93RGVlcCh0YXJn
ZXQsICIjcmVtb3ZlLWRlZXAiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1
YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKworICAgIHZhciBmID0gKGZ1bmN0
aW9uKHRhcmdldCwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmNvbnRlbnQ8L3NwYW4+IgorICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5l
ckhUTUwgPSAiPGRpdj57U0hBRE9XOiA8c3Bhbj57SU5ORVI6IDxzcGFuPkZBTExCQUNLPC9zcGFu
Pn08L3NwYW4+fTwvZGl2PiI7CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgICAgIH07
CisgICAgfSkodGFyZ2V0LCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RSZW1vdmUxKGNhbGxJZkRvbmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8
c3BhbiBpZD0ncmVtb3ZlMS0xJz5jb250ZW50IDE8L3NwYW4+PHNwYW4gaWQ9J3JlbW92ZTEtMic+
Y29udGVudCAyPC9zcGFuPiI7CisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW4iKTsKKwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hp
bGQodGFyZ2V0KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHRhcmdldCwgY2FsbElmRG9uZSkg
eworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0YXJnZXQucmVtb3Zl
Q2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlbW92ZTEtMScpKTsKKyAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0g
IjxkaXY+e1NIQURPVzogPHNwYW4+Y29udGVudCAyPC9zcGFuPn08L2Rpdj4iOworICAgICAgICAg
ICAgY2FsbElmRG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgY2FsbElmRG9uZSk7
CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0UmVtb3ZlMihjYWxs
SWZEb25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J3Rlc3RyZW1vdmUyLTEnPmNvbnRl
bnQgMTwvc3Bhbj48c3BhbiBpZD0ndGVzdHJlbW92ZTItMic+Y29udGVudCAyPC9zcGFuPiI7Cisg
ICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW4iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKworICAgIHZh
ciBmID0gKGZ1bmN0aW9uKHRhcmdldCwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1cm4gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICB0YXJnZXQucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Rlc3RyZW1vdmUyLTInKSk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PntTSEFET1c6IDxz
cGFuPmNvbnRlbnQgMTwvc3Bhbj59PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRvbmUoKTsK
KyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91
dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFJlbW92ZTMoY2FsbElmRG9uZSkgeworICAgIHZh
ciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5u
ZXJIVE1MID0gIjxzcGFuIGlkPSd0ZXN0cmVtb3ZlMy0xJz5jb250ZW50IDE8L3NwYW4+PHNwYW4g
aWQ9J3Rlc3RyZW1vdmUzLTInPmNvbnRlbnQgMjwvc3Bhbj4iOworICAgIGFwcGVuZFNoYWRvdyh0
YXJnZXQsICJzcGFuIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNv
bnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbih0
YXJnZXQsIGNhbGxJZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgdGFyZ2V0LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0cmVt
b3ZlMy0xJykpOworICAgICAgICAgICAgdGFyZ2V0LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0ZXN0cmVtb3ZlMy0yJykpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj57U0hBRE9XOiA8
c3Bhbj5GQUxMQkFDSzwvc3Bhbj59PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRvbmUoKTsK
KyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91
dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFJlcGxhY2VGYWxsYmFjayhjYWxsSWZEb25lKSB7
CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRh
cmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J3RvLXJlcGxhY2UnPmNvbnRlbnQ8L3NwYW4+IjsK
KworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIjdG8tcmVwbGFjZSIpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQp
OworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBjYWxsSWZEb25lKSB7CisgICAgICAg
IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNw
YW4gaWQ9J3RvLXJlcGxhY2UnPnJlcGxhY2VkPC9zcGFuPiI7CisgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PntT
SEFET1c6IDxzcGFuPnJlcGxhY2VkPC9zcGFuPn08L2Rpdj4iOworICAgICAgICAgICAgY2FsbElm
RG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgY2FsbElmRG9uZSk7CisKKyAgICBz
ZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0RmFsbGJhY2tDb250ZW50Q2hhbmdl
ZChjYWxsSWZEb25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+Y29udGVudDwvc3Bhbj4iOwor
CisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiNub24tZWxlbWVudCIpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQp
OworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBjYWxsSWZEb25lKSB7CisgICAgICAg
IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRhcmdldC5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ2FwcGVuZGVkIGNvbnRlbnQnKSk7CisgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PntT
SEFET1c6IDxzcGFuPkZBTExCQUNLPC9zcGFuPn08L2Rpdj4iOworICAgICAgICAgICAgY2FsbElm
RG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgY2FsbElmRG9uZSk7CisKKyAgICBz
ZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0Q29tcGxleEFwcGVuZChjYWxsSWZE
b25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICcjY29tcGxleC0xJyk7CisKKyAgICB2YXIgc2VsZWN0
Q29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBzZWxlY3RDb250
ZW50LnNldEF0dHJpYnV0ZSgnaWQnLCAnY29tcGxleC0xJyk7CisgICAgYXBwZW5kU2hhZG93KHNl
bGVjdENvbnRlbnQsICdzcGFuJyk7CisKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ1tXT05UIFNFTEVDVEVEXScpKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hp
bGQoc2VsZWN0Q29udGVudCk7CisgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCdbV09OVCBTRUxFQ1RFRF0nKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIg
ZiA9IChmdW5jdGlvbih0YXJnZXQsIHNlbGVjdENvbnRlbnQsIGNhbGxJZkRvbmUpIHsKKyAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgc2VsZWN0Q29udGVudC5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1NFTEVDVEVEJykpOworICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAg
ICAgICAgICAgICI8ZGl2PntTSEFET1c6IDxzcGFuPntTSEFET1c6IDxzcGFuPlNFTEVDVEVEPC9z
cGFuPn08L3NwYW4+fTwvZGl2PiI7CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgICAg
IH07CisgICAgfSkodGFyZ2V0LCBzZWxlY3RDb250ZW50LCBjYWxsSWZEb25lKTsKKworICAgIHNl
dFRpbWVvdXQoZiwgMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDb21wbGV4UmVtb3ZlKGNhbGxJZkRv
bmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgYXBwZW5kU2hhZG93KHRhcmdldCwgJyNjb21wbGV4LTInKTsKKworICAgIHZhciBzZWxlY3RD
b250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgIHNlbGVjdENvbnRl
bnQuc2V0QXR0cmlidXRlKCdpZCcsICdjb21wbGV4LTInKTsKKyAgICB7CisgICAgICAgIHNlbGVj
dENvbnRlbnQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTRUxFQ1RFRCcpKTsKKyAg
ICB9CisgICAgYXBwZW5kU2hhZG93KHNlbGVjdENvbnRlbnQsICdzcGFuJyk7CisKKyAgICB0YXJn
ZXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1tXT05UIFNFTEVDVEVEXScp
KTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoc2VsZWN0Q29udGVudCk7CisgICAgdGFyZ2V0LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdbV09OVCBTRUxFQ1RFRF0nKSk7CisK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENo
aWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbih0YXJnZXQsIHNlbGVjdENvbnRl
bnQsIGNhbGxJZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgcmVtb3ZlQWxsQ2hpbGRyZW4oc2VsZWN0Q29udGVudCk7CisgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAg
ICAgICAgICAgIjxkaXY+e1NIQURPVzogPHNwYW4+e1NIQURPVzogPHNwYW4+RkFMTEJBQ0s8L3Nw
YW4+fTwvc3Bhbj59PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICAgICAg
fTsKKyAgICB9KSh0YXJnZXQsIHNlbGVjdENvbnRlbnQsIGNhbGxJZkRvbmUpOworCisgICAgc2V0
VGltZW91dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdENvbXBsZXhSZXBsYWNlKGNhbGxJZkRv
bmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgYXBwZW5kU2hhZG93KHRhcmdldCwgJyNjb21wbGV4LTMnKTsKKworICAgIHZhciBzZWxlY3RD
b250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgIHNlbGVjdENvbnRl
bnQuc2V0QXR0cmlidXRlKCdpZCcsICdjb21wbGV4LTMnKTsKKyAgICB7CisgICAgfQorICAgIGFw
cGVuZFNoYWRvdyhzZWxlY3RDb250ZW50LCAnc3BhbicpOworCisgICAgdGFyZ2V0LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdbV09OVCBTRUxFQ1RFRF0nKSk7CisgICAgdGFy
Z2V0LmFwcGVuZENoaWxkKHNlbGVjdENvbnRlbnQpOworICAgIHRhcmdldC5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnW1dPTlQgU0VMRUNURURdJykpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQp
OworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBzZWxlY3RDb250ZW50LCBjYWxsSWZE
b25lKSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJlbW92ZUFs
bENoaWxkcmVuKHNlbGVjdENvbnRlbnQpOworICAgICAgICAgICAgc2VsZWN0Q29udGVudC5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1JFUExBQ0VEJykpOworICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAg
ICAgICAgICAgICAgICI8ZGl2PntTSEFET1c6IDxzcGFuPntTSEFET1c6IDxzcGFuPlJFUExBQ0VE
PC9zcGFuPn08L3NwYW4+fTwvZGl2PiI7CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAg
ICAgIH07CisgICAgfSkodGFyZ2V0LCBzZWxlY3RDb250ZW50LCBjYWxsSWZEb25lKTsKKworICAg
IHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbCisgICAgdGVzdEFwcGVu
ZEZhbGxiYWNrLAorICAgIHRlc3RBcHBlbmRGYWxsYmFja0RlZXAsCisgICAgdGVzdFJlbW92ZUZh
bGxiYWNrLAorICAgIHRlc3RSZW1vdmVGYWxsYmFja0RlZXAsCisgICAgdGVzdFJlbW92ZTEsCisg
ICAgdGVzdFJlbW92ZTIsCisgICAgdGVzdFJlbW92ZTMsCisgICAgdGVzdFJlcGxhY2VGYWxsYmFj
aywKKyAgICB0ZXN0RmFsbGJhY2tDb250ZW50Q2hhbmdlZCwKKyAgICB0ZXN0Q29tcGxleEFwcGVu
ZCwKKyAgICB0ZXN0Q29tcGxleFJlbW92ZSwKKyAgICB0ZXN0Q29tcGxleFJlcGxhY2UsCisKK107
CisKK2Z1bmN0aW9uIGRvVGVzdElmTGVmdCgpIHsKKyAgICB2YXIgdGVzdCA9IHRlc3RGdW5jcy5z
aGlmdCgpOworICAgIGlmICh0ZXN0ID09IG51bGwpCisgICAgICAgIHJldHVybiBkb25lVGVzdCgp
OworCisgICAgdmFyIGNhbGxJZkRvbmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNoZWNrKCk7CisgICAgICAgICAgICBjbGVhblVw
KCk7CisgICAgICAgICAgICBkb1Rlc3RJZkxlZnQoKTsKKyAgICAgICAgfSwgMCk7CisgICAgfTsK
KworICAgIGxvZyh0ZXN0Lm5hbWUpOworICAgIHRlc3QoY2FsbElmRG9uZSk7Cit9CisKK2Z1bmN0
aW9uIGRvbmVUZXN0KCkgeworICAgIGxvZygiVEVTVCBDT01QTEVURUQiKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGRvVGVzdCgpIHsKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIH0KKworICAgIGNsZWFuVXAoKTsKKyAgICBkb1Rlc3RJZkxlZnQo
KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+CisKKzxk
aXYgaWQ9ImFjdHVhbC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2PgorPGRpdiBp
ZD0iZXhwZWN0LWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8cHJlIGlkPSJj
b25zb2xlIj48L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124647</attachid>
            <date>2012-01-30 18:09:05 -0800</date>
            <delta_ts>2012-02-01 00:00:36 -0800</delta_ts>
            <desc>Test Patch</desc>
            <filename>bug-76262-20120131110903.patch</filename>
            <type>text/plain</type>
            <size>19509</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTI3ODJlYzhlNjk0YTFm
NzQwMTJhNWQwZTE1NjFlZWI0MmM3OWQ2Yi4uOTZkM2Q1ZjVmOGQ5MzEzYzIyNWVlNmZmMDEzMWNk
MGY2OTZkMTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTMwICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3R5bGVSZWNhbGMg
c2hvdWxkIG9jY3VyIHdoZW4gc2hhZG93IHJvb3QgZXhpc3RzIGFuZCBsaWdodCBjaGlsZHJlbiBh
cmUgY2hhbmdlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2MjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2V0IHN0eWxlIHJlY2FsY3VsYXRpb24gZmxhZyB3aGVuIGEgY2hpbGQgZWxlbWVudCBpcyBj
aGFuZ2VkLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMt
ZmFsbGJhY2stZHluYW1pYy5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorCiAyMDEyLTAxLTMwICBD
aHJpc3RvcGhlciBIdXR0ZW4tQ3phcHNraSAgPGNodXR0ZW5AcmltLmNvbT4KIAogICAgICAgICBC
bGFja0JlcnJ5IC0gU3VwcG9ydCBQcm94eS1BdXRoZW50aWNhdGUgaGVhZGVycyB3aGVuIGEgcHJv
eHkgaXMgY29uZmlndXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDAxMWUyNTg5N2MxNTVl
MzUyZjVjMTU0OGU3OTNjZjNiNzVkMGMyZmIuLjQxZDA1MTJiMzEzMzhiMDFiMzliODExYzdkYTRh
YzNlMjEwMjAxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEzNTIsNiArMTM1Miw5IEBA
IHZvaWQgRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmCiAgICAgICAgIGNoZWNrRm9yRW1wdHlTdHlsZUNoYW5n
ZSh0aGlzLCByZW5kZXJTdHlsZSgpKTsKICAgICBlbHNlCiAgICAgICAgIGNoZWNrRm9yU2libGlu
Z1N0eWxlQ2hhbmdlcyh0aGlzLCByZW5kZXJTdHlsZSgpLCBmYWxzZSwgYmVmb3JlQ2hhbmdlLCBh
ZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKKworICAgIGlmIChoYXNSYXJlRGF0YSgpICYm
IHNoYWRvd1Jvb3QoKSkKKyAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCiB2b2lk
IEVsZW1lbnQ6OmJlZ2luUGFyc2luZ0NoaWxkcmVuKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkZDU1ZmNiZjMyNjNiZmIy
MDdkNjE1MDJhNTUyMTYzNGU3YjI1MDAwLi44ZTNiZDIwNzYzN2NhOGNkYWE4MjI0ZjQzMDMyZmEx
NTAyOThkZjRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDEtMzAgIFNoaW55YSBLYXdh
bmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBTdHlsZVJlY2FsYyBzaG91bGQg
b2NjdXIgd2hlbiBzaGFkb3cgcm9vdCBleGlzdHMgYW5kIGxpZ2h0IGNoaWxkcmVuIGFyZSBjaGFu
Z2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYy
NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
cyBmb3IgZHluYW1pYyBjb250ZW50IGZhbGxiYWNrLgorICAgICAgICBBbHNvLCB1bm5lY2Vzc2Fy
eSBSZW5kZXJUZXh0IG9iamVjdHMgaW4gcHJldmlvdXMgdGVzdCBleHBlY3RhdGlvbnMgd2VyZSBy
ZW1vdmVkLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxs
YmFjay1keW5hbWljLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1keW5hbWljLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQt
Mi1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvaHRtbC9kZXRhaWxz
LXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFz
dC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBs
YXRmb3JtL3F0L2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dDoK
KwogMjAxMi0wMS0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IHR5cG8gaW4gdGVzdCBuYW1lIGZyb20gbXkgbGFzdCBjb21taXQuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5
bmFtaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1j
b250ZW50cy1mYWxsYmFjay1keW5hbWljLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTc0Y2Mx
OTBjNjgwNTI2NWQ3YWRjOWI1YzEyN2ZmYzU3ODZjNzIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1keW5hbWlj
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACit0ZXN0QXBwZW5kRmFsbGJhY2sKK1BBU1MK
K3Rlc3RBcHBlbmRGYWxsYmFja0RlZXAKK1BBU1MKK3Rlc3RSZW1vdmVGYWxsYmFjaworUEFTUwor
dGVzdFJlbW92ZUZhbGxiYWNrRGVlcAorUEFTUwordGVzdFJlbW92ZTEKK1BBU1MKK3Rlc3RSZW1v
dmUyCitQQVNTCit0ZXN0UmVtb3ZlMworUEFTUwordGVzdFJlcGxhY2VGYWxsYmFjaworUEFTUwor
dGVzdEZhbGxiYWNrQ29udGVudENoYW5nZWQKK1BBU1MKK3Rlc3RDb21wbGV4QXBwZW5kCitQQVNT
Cit0ZXN0Q29tcGxleFJlbW92ZQorUEFTUwordGVzdENvbXBsZXhSZXBsYWNlCitQQVNTCitURVNU
IENPTVBMRVRFRAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI3NjMyMGQ3N2M0NDI3NmIzNDhiNDQxOGZiZTMyOTM0NmQwNjFhZjMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNr
LWR5bmFtaWMuaHRtbApAQCAtMCwwICsxLDQwMSBAQAorIDwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzdHlsZT4KKy8qIHJlbGF0aXZlIHBvc2l0aW9uaW5nIGVuc3VyZXMgdW5kZXJs
eWluZyBSZW5kZXJMYXllciAqLworLmNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZl
OworfQorCisuc3BhbiB7CisgICAgZGlzcGxheTogYm94ZWQtaW5saW5lOworICAgIG1hcmdpbjog
MnB4OworICAgIGJvcmRlcjogc29saWQ7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Z1bmN0aW9u
IGxvZyhtZXNzYWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5p
bm5lckhUTUwgKz0gKG1lc3NhZ2UgKyAiXG4iKTsKK30KKworZnVuY3Rpb24gcmVtb3ZlQWxsQ2hp
bGRyZW4oZWxlbSkgeworICAgIHdoaWxlIChlbGVtLmZpcnN0Q2hpbGQpCisgICAgICAgIGVsZW0u
cmVtb3ZlQ2hpbGQoZWxlbS5maXJzdENoaWxkKTsKK30KKworZnVuY3Rpb24gY2xlYW5VcCgpIHsK
KyAgICByZW1vdmVBbGxDaGlsZHJlbihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNv
bnRhaW5lcicpKTsKKyAgICByZW1vdmVBbGxDaGlsZHJlbihkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZXhwZWN0LWNvbnRhaW5lcicpKTsKK30KKworZnVuY3Rpb24gcmVtb3ZlQ29udGFpbmVyTGlu
ZXModGV4dCkgeworICAgIHZhciBsaW5lcyA9IHRleHQuc3BsaXQoJ1xuJyk7CisgICAgbGluZXMu
c3BsaWNlKDAsIDIpOworICAgIHJldHVybiBsaW5lcy5qb2luKCdcbicpOworfQorCitmdW5jdGlv
biBjaGVjaygpIHsKKyAgICB2YXIgcmVmQ29udGFpbmVyUmVuZGVyVHJlZSA9IGludGVybmFscy5l
bGVtZW50UmVuZGVyVHJlZUFzVGV4dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNv
bnRhaW5lcicpKTsKKyAgICB2YXIgcmVmUmVuZGVyVHJlZSA9IHJlbW92ZUNvbnRhaW5lckxpbmVz
KHJlZkNvbnRhaW5lclJlbmRlclRyZWUpOworCisgICAgdmFyIHRhcmdldENvbnRhaW5lclJlbmRl
clRyZWUgPSBpbnRlcm5hbHMuZWxlbWVudFJlbmRlclRyZWVBc1RleHQoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKSk7CisgICAgdmFyIHRhcmdldFJlbmRlclRyZWUg
PSByZW1vdmVDb250YWluZXJMaW5lcyh0YXJnZXRDb250YWluZXJSZW5kZXJUcmVlKTsKKworICAg
IGlmICh0YXJnZXRSZW5kZXJUcmVlID09IHJlZlJlbmRlclRyZWUpCisgICAgICAgIGxvZygiUEFT
UyIpOworICAgIGVsc2UgeworICAgICAgICBsb2coIkZBSUwiKTsKKyAgICAgICAgbG9nKCJFeHBl
Y3RlZDogIik7CisgICAgICAgIGxvZyhyZWZSZW5kZXJUcmVlKTsKKyAgICAgICAgbG9nKCJBY3R1
YWw6ICIpOworICAgICAgICBsb2codGFyZ2V0UmVuZGVyVHJlZSk7CisgICAgfQorfQorCitmdW5j
dGlvbiBjcmVhdGVTcGFuV2l0aFRleHQodGV4dCkgeworICAgIHZhciBzcGFuID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgIHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUodGV4dCkpOworICAgIHJldHVybiBzcGFuOworfQorCitmdW5jdGlvbiBhcHBl
bmRTaGFkb3codGFyZ2V0LCBzZWxlY3QpIHsKKyAgICB2YXIgcm9vdCA9IGludGVybmFscy5lbnN1
cmVTaGFkb3dSb290KHRhcmdldCk7CisKKyAgICB2YXIgY29udGVudCA9IGludGVybmFscy5jcmVh
dGVDb250ZW50RWxlbWVudChkb2N1bWVudCk7CisgICAgY29udGVudC5zZXRBdHRyaWJ1dGUoJ3Nl
bGVjdCcsIHNlbGVjdCk7CisgICAgY29udGVudC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoIkZBTExCQUNLIikpOworCisgICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgie1NIQURPVzogIikpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY29udGVudCk7Cisg
ICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgifSIpKTsKK30KKwor
ZnVuY3Rpb24gYXBwZW5kU2hhZG93RGVlcCh0YXJnZXQsIHNlbGVjdCkgeworICAgIHZhciByb290
ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFyZ2V0KTsKKworICAgIHZhciBjaGlsZCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICB7CisgICAgICAgIHZhciBjb250
ZW50ID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3VtZW50KTsKKyAgICAgICAg
Y29udGVudC5zZXRBdHRyaWJ1dGUoJ3NlbGVjdCcsIHNlbGVjdCk7CisgICAgICAgIGNvbnRlbnQu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCJGQUxMQkFDSyIpKTsKKworICAgICAgICBj
aGlsZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgie0lOTkVSOiAiKSk7Cisg
ICAgICAgIGNoaWxkLmFwcGVuZENoaWxkKGNvbnRlbnQpOworICAgICAgICBjaGlsZC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgifSIpKTsKKyAgICB9CisKKyAgICByb290LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ7U0hBRE9XOiAiKSk7CisgICAgcm9v
dC5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgifSIpKTsKK30KKworZnVuY3Rpb24gdGVzdEFwcGVuZEZhbGxiYWNrKGNhbGxJ
ZkRvbmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250ZW50PC9zcGFuPiI7CisKKyAgICBh
cHBlbmRTaGFkb3codGFyZ2V0LCAiI2FwcGVuZCIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworCisgICAgdmFy
IGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBjYWxsSWZEb25lKSB7CisgICAgICAgIHJldHVybiBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J2FwcGVu
ZCc+YXBwZW5kZWQ8L3NwYW4+IjsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxkaXY+e1NIQURPVzogPHNwYW4+YXBw
ZW5kZWQ8L3NwYW4+fTwvZGl2PiI7CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgICAg
IH07CisgICAgfSkodGFyZ2V0LCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RBcHBlbmRGYWxsYmFja0RlZXAoY2FsbElmRG9uZSkgeworICAg
IHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQu
aW5uZXJIVE1MID0gIjxzcGFuPmNvbnRlbnQ8L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvd0Rl
ZXAodGFyZ2V0LCAiI2FwcGVuZC1kZWVwIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9
IChmdW5jdGlvbih0YXJnZXQsIGNhbGxJZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3BhbiBpZD0nYXBwZW5kLWRl
ZXAnPmFwcGVuZGVkPC9zcGFuPiI7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PntTSEFET1c6IDxzcGFuPntJ
Tk5FUjogPHNwYW4+YXBwZW5kZWQ8L3NwYW4+fTwvc3Bhbj59PC9kaXY+IjsKKyAgICAgICAgICAg
IGNhbGxJZkRvbmUoKTsKKyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIGNhbGxJZkRvbmUpOwor
CisgICAgc2V0VGltZW91dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFJlbW92ZUZhbGxiYWNr
KGNhbGxJZkRvbmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3BhbiBpZD0ncmVtb3ZlJz5jb250ZW50
PC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI3JlbW92ZSIpOworCisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0
YXJnZXQpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBjYWxsSWZEb25lKSB7Cisg
ICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRhcmdldC5pbm5lckhUTUwg
PSAiPHNwYW4+Y29udGVudDwvc3Bhbj4iCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PntTSEFET1c6IDxzcGFu
PkZBTExCQUNLPC9zcGFuPn08L2Rpdj4iOworICAgICAgICAgICAgY2FsbElmRG9uZSgpOworICAg
ICAgICB9OworICAgIH0pKHRhcmdldCwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYs
IDApOworfQorCitmdW5jdGlvbiB0ZXN0UmVtb3ZlRmFsbGJhY2tEZWVwKGNhbGxJZkRvbmUpIHsK
KyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFy
Z2V0LmlubmVySFRNTCA9ICI8c3BhbiBpZD0ncmVtb3ZlLWRlZXAnPmNvbnRlbnQ8L3NwYW4+IjsK
KworICAgIGFwcGVuZFNoYWRvd0RlZXAodGFyZ2V0LCAiI3JlbW92ZS1kZWVwIik7CisKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRh
cmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbih0YXJnZXQsIGNhbGxJZkRvbmUpIHsKKyAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGFyZ2V0LmlubmVySFRNTCA9
ICI8c3Bhbj5jb250ZW50PC9zcGFuPiIKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxkaXY+e1NIQURPVzogPHNwYW4+
e0lOTkVSOiA8c3Bhbj5GQUxMQkFDSzwvc3Bhbj59PC9zcGFuPn08L2Rpdj4iOworICAgICAgICAg
ICAgY2FsbElmRG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgY2FsbElmRG9uZSk7
CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0UmVtb3ZlMShjYWxs
SWZEb25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J3JlbW92ZTEtMSc+Y29udGVudCAx
PC9zcGFuPjxzcGFuIGlkPSdyZW1vdmUxLTInPmNvbnRlbnQgMjwvc3Bhbj4iOworICAgIGFwcGVu
ZFNoYWRvdyh0YXJnZXQsICJzcGFuIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChm
dW5jdGlvbih0YXJnZXQsIGNhbGxJZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdGFyZ2V0LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyZW1vdmUxLTEnKSk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhw
ZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PntTSEFET1c6IDxzcGFuPmNvbnRlbnQg
Mjwvc3Bhbj59PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICAgICAgfTsK
KyAgICB9KSh0YXJnZXQsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30K
KworZnVuY3Rpb24gdGVzdFJlbW92ZTIoY2FsbElmRG9uZSkgeworICAgIHZhciB0YXJnZXQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxz
cGFuIGlkPSd0ZXN0cmVtb3ZlMi0xJz5jb250ZW50IDE8L3NwYW4+PHNwYW4gaWQ9J3Rlc3RyZW1v
dmUyLTInPmNvbnRlbnQgMjwvc3Bhbj4iOworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFu
Iik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFw
cGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbih0YXJnZXQsIGNhbGxJ
ZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGFyZ2V0
LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0cmVtb3ZlMi0yJykpOwor
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5p
bm5lckhUTUwgPSAiPGRpdj57U0hBRE9XOiA8c3Bhbj5jb250ZW50IDE8L3NwYW4+fTwvZGl2PiI7
CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgICAgIH07CisgICAgfSkodGFyZ2V0LCBj
YWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RS
ZW1vdmUzKGNhbGxJZkRvbmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3BhbiBpZD0ndGVzdHJlbW92
ZTMtMSc+Y29udGVudCAxPC9zcGFuPjxzcGFuIGlkPSd0ZXN0cmVtb3ZlMy0yJz5jb250ZW50IDI8
L3NwYW4+IjsKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbiIpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQp
OworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBjYWxsSWZEb25lKSB7CisgICAgICAg
IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRhcmdldC5yZW1vdmVDaGlsZChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdHJlbW92ZTMtMScpKTsKKyAgICAgICAgICAgIHRhcmdl
dC5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdHJlbW92ZTMtMicpKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJyku
aW5uZXJIVE1MID0gIjxkaXY+e1NIQURPVzogPHNwYW4+RkFMTEJBQ0s8L3NwYW4+fTwvZGl2PiI7
CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgICAgIH07CisgICAgfSkodGFyZ2V0LCBj
YWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RS
ZXBsYWNlRmFsbGJhY2soY2FsbElmRG9uZSkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlkPSd0
by1yZXBsYWNlJz5jb250ZW50PC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAi
I3RvLXJlcGxhY2UiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29u
dGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHRh
cmdldCwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlkPSd0by1yZXBsYWNlJz5yZXBsYWNlZDwv
c3Bhbj4iOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250
YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj57U0hBRE9XOiA8c3Bhbj5yZXBsYWNlZDwvc3Bhbj59
PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICAgICAgfTsKKyAgICB9KSh0
YXJnZXQsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30KKworZnVuY3Rp
b24gdGVzdEZhbGxiYWNrQ29udGVudENoYW5nZWQoY2FsbElmRG9uZSkgeworICAgIHZhciB0YXJn
ZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1M
ID0gIjxzcGFuPmNvbnRlbnQ8L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIj
bm9uLWVsZW1lbnQiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29u
dGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHRh
cmdldCwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdhcHBlbmRlZCBjb250
ZW50JykpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250
YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj57U0hBRE9XOiA8c3Bhbj5GQUxMQkFDSzwvc3Bhbj59
PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICAgICAgfTsKKyAgICB9KSh0
YXJnZXQsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30KKworZnVuY3Rp
b24gdGVzdENvbXBsZXhBcHBlbmQoY2FsbElmRG9uZSkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAnI2Nv
bXBsZXgtMScpOworCisgICAgdmFyIHNlbGVjdENvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzcGFuJyk7CisgICAgc2VsZWN0Q29udGVudC5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2NvbXBs
ZXgtMScpOworICAgIGFwcGVuZFNoYWRvdyhzZWxlY3RDb250ZW50LCAnc3BhbicpOworCisgICAg
dGFyZ2V0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdbV09OVCBTRUxFQ1RF
RF0nKSk7CisgICAgdGFyZ2V0LmFwcGVuZENoaWxkKHNlbGVjdENvbnRlbnQpOworICAgIHRhcmdl
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnW1dPTlQgU0VMRUNURURdJykp
OworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBl
bmRDaGlsZCh0YXJnZXQpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBzZWxlY3RD
b250ZW50LCBjYWxsSWZEb25lKSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHNlbGVjdENvbnRlbnQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTRUxF
Q1RFRCcpKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29u
dGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgICAgICAgICAiPGRpdj57U0hBRE9XOiA8c3Bh
bj57U0hBRE9XOiA8c3Bhbj5TRUxFQ1RFRDwvc3Bhbj59PC9zcGFuPn08L2Rpdj4iOworICAgICAg
ICAgICAgY2FsbElmRG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgc2VsZWN0Q29u
dGVudCwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlv
biB0ZXN0Q29tcGxleFJlbW92ZShjYWxsSWZEb25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICcjY29t
cGxleC0yJyk7CisKKyAgICB2YXIgc2VsZWN0Q29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3NwYW4nKTsKKyAgICBzZWxlY3RDb250ZW50LnNldEF0dHJpYnV0ZSgnaWQnLCAnY29tcGxl
eC0yJyk7CisgICAgeworICAgICAgICBzZWxlY3RDb250ZW50LmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnU0VMRUNURUQnKSk7CisgICAgfQorICAgIGFwcGVuZFNoYWRvdyhzZWxlY3RD
b250ZW50LCAnc3BhbicpOworCisgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCdbV09OVCBTRUxFQ1RFRF0nKSk7CisgICAgdGFyZ2V0LmFwcGVuZENoaWxkKHNl
bGVjdENvbnRlbnQpOworICAgIHRhcmdldC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnW1dPTlQgU0VMRUNURURdJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworCisgICAgdmFyIGYgPSAo
ZnVuY3Rpb24odGFyZ2V0LCBzZWxlY3RDb250ZW50LCBjYWxsSWZEb25lKSB7CisgICAgICAgIHJl
dHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJlbW92ZUFsbENoaWxkcmVuKHNlbGVjdENv
bnRlbnQpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250
YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAgICAgICAgICI8ZGl2PntTSEFET1c6IDxzcGFu
PntTSEFET1c6IDxzcGFuPkZBTExCQUNLPC9zcGFuPn08L3NwYW4+fTwvZGl2PiI7CisgICAgICAg
ICAgICBjYWxsSWZEb25lKCk7CisgICAgICAgIH07CisgICAgfSkodGFyZ2V0LCBzZWxlY3RDb250
ZW50LCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RDb21wbGV4UmVwbGFjZShjYWxsSWZEb25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICcjY29t
cGxleC0zJyk7CisKKyAgICB2YXIgc2VsZWN0Q29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3NwYW4nKTsKKyAgICBzZWxlY3RDb250ZW50LnNldEF0dHJpYnV0ZSgnaWQnLCAnY29tcGxl
eC0zJyk7CisgICAgeworICAgIH0KKyAgICBhcHBlbmRTaGFkb3coc2VsZWN0Q29udGVudCwgJ3Nw
YW4nKTsKKworICAgIHRhcmdldC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
W1dPTlQgU0VMRUNURURdJykpOworICAgIHRhcmdldC5hcHBlbmRDaGlsZChzZWxlY3RDb250ZW50
KTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1tXT05U
IFNFTEVDVEVEXScpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29u
dGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHRh
cmdldCwgc2VsZWN0Q29udGVudCwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICByZW1vdmVBbGxDaGlsZHJlbihzZWxlY3RDb250ZW50KTsKKyAg
ICAgICAgICAgIHNlbGVjdENvbnRlbnQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdS
RVBMQUNFRCcpKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3Qt
Y29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgICAgICAgICAiPGRpdj57U0hBRE9XOiA8
c3Bhbj57U0hBRE9XOiA8c3Bhbj5SRVBMQUNFRDwvc3Bhbj59PC9zcGFuPn08L2Rpdj4iOworICAg
ICAgICAgICAgY2FsbElmRG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgc2VsZWN0
Q29udGVudCwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfQorCit2YXIg
dGVzdEZ1bmNzID0gWworICAgIHRlc3RBcHBlbmRGYWxsYmFjaywKKyAgICB0ZXN0QXBwZW5kRmFs
bGJhY2tEZWVwLAorICAgIHRlc3RSZW1vdmVGYWxsYmFjaywKKyAgICB0ZXN0UmVtb3ZlRmFsbGJh
Y2tEZWVwLAorICAgIHRlc3RSZW1vdmUxLAorICAgIHRlc3RSZW1vdmUyLAorICAgIHRlc3RSZW1v
dmUzLAorICAgIHRlc3RSZXBsYWNlRmFsbGJhY2ssCisgICAgdGVzdEZhbGxiYWNrQ29udGVudENo
YW5nZWQsCisgICAgdGVzdENvbXBsZXhBcHBlbmQsCisgICAgdGVzdENvbXBsZXhSZW1vdmUsCisg
ICAgdGVzdENvbXBsZXhSZXBsYWNlLAorCitdOworCitmdW5jdGlvbiBkb1Rlc3RJZkxlZnQoKSB7
CisgICAgdmFyIHRlc3QgPSB0ZXN0RnVuY3Muc2hpZnQoKTsKKyAgICBpZiAodGVzdCA9PSBudWxs
KQorICAgICAgICByZXR1cm4gZG9uZVRlc3QoKTsKKworICAgIHZhciBjYWxsSWZEb25lID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBj
aGVjaygpOworICAgICAgICAgICAgY2xlYW5VcCgpOworICAgICAgICAgICAgZG9UZXN0SWZMZWZ0
KCk7CisgICAgICAgIH0sIDApOworICAgIH07CisKKyAgICBsb2codGVzdC5uYW1lKTsKKyAgICB0
ZXN0KGNhbGxJZkRvbmUpOworfQorCitmdW5jdGlvbiBkb25lVGVzdCgpIHsKKyAgICBsb2coIlRF
U1QgQ09NUExFVEVEIik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
fQorCitmdW5jdGlvbiBkb1Rlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB9CisKKyAgICBj
bGVhblVwKCk7CisgICAgZG9UZXN0SWZMZWZ0KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0iZG9UZXN0KCkiPgorCis8ZGl2IGlkPSJhY3R1YWwtY29udGFpbmVyIiBjbGFz
cz0iY29udGFpbmVyIj48L2Rpdj4KKzxkaXYgaWQ9ImV4cGVjdC1jb250YWluZXIiIGNsYXNzPSJj
b250YWluZXIiPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0
L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhw
ZWN0ZWQudHh0CmluZGV4IDg5MmM2YTZkZDkxOWQzYWUxM2MyZGFkNDQyZjkxNjE5NmNjZDhhYjAu
LmU3OTNiNTZkM2M5OTc4NWQ0NDk4YjE2ZGNjZjQ4MWY2MzgzZmRlNTYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2h0bWwvZGV0YWlscy1yZW1vdmUt
Y2hpbGQtMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0t
d2luL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dApAQCAtOSw2
ICs5LDUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgxNiwwKSBzaXplIDU0eDE5CiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MTYsMCkgd2lkdGggNTQ6ICJzdW1tYXJ5IgogICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3Vz
KSBhdCAoMCwyMCkgc2l6ZSA3ODR4MjAKLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAweDAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAxNTB4MTkKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE1MDogInNob3Vs
ZCBoYXZlIG5vIGJvbGQgdGVzdC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVj
dGVkLnR4dAppbmRleCBkZGE5M2JlOThlNGM2NjgwZWJmOWJhYmIyNzY3M2RmZjIyNmQ2ODU0Li45
YzJlYjY4MTk5ODU2OGNiNTViZmVhN2I3MDZmZTI4MWUyYzQ2OWY4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2h0bWwvZGV0YWls
cy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQKQEAgLTksNiArOSw1IEBAIGxheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTYsMCkg
c2l6ZSA2MHgxNwogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE2LDApIHdpZHRoIDYwOiAic3Vt
bWFyeSIKICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTgpIHNpemUgNzg0
eDE4Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCiAgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYweDE3CiAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjA6ICJzaG91bGQgaGF2ZSBubyBib2xkIHRlc3Qu
IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaHRtbC9kZXRhaWxz
LXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQKaW5kZXggYjEwMjk2
YTVlY2I3NWMwMGM0NDM4ZTNiN2M3Yzg1ZWM0Y2ZmNTQ0MC4uMWQ0MDZhY2UwZWQxMmI5YjhiN2I3
OTk5NjEyODI2NWE3MmZkZDViMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhw
ZWN0ZWQudHh0CkBAIC05LDYgKzksNSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE2LDApIHNpemUgNTh4MTgKICAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgxNiwwKSB3aWR0aCA1ODogInN1bW1hcnkiCiAgICAgICAgIFJlbmRl
ckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDE4KSBzaXplIDc4NHgxOAotICAgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDE1N3gxOAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMTU3OiAic2hvdWxkIGhhdmUgbm8gYm9sZCB0ZXN0LiIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92
ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dAppbmRleCA4NTkxN2E3YzFmMjZiNjA0ZGNkOWFmMDFiNjc0
OTk0YzE2OWQ3MTUwLi5kM2I0YjgwNzMzOWNiMzc3MDI2NzZlOGQ0ZjJlZDRlY2IzYTMxYTg3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2h0bWwvZGV0YWlscy1yZW1v
dmUtY2hpbGQtMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFz
dC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0CkBAIC05LDYgKzksNSBA
QCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDE2LDApIHNpemUgNjV4MjEKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxNiwwKSB3
aWR0aCA2NTogInN1bW1hcnkiCiAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgw
LDIxKSBzaXplIDc4NHgyMQotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDB4MAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE3N3gy
MQogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTc3OiAic2hvdWxkIGhhdmUg
bm8gYm9sZCB0ZXN0LiIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124891</attachid>
            <date>2012-02-01 00:00:44 -0800</date>
            <delta_ts>2012-02-01 16:50:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76262-20120201170043.patch</filename>
            <type>text/plain</type>
            <size>19487</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I4YTAwMmJmODRkZmFh
ZGI3ODNmOGQ0OTU4ODI3YzU0YzVjZTdhNC4uNmNjM2RlMDJhMjU1M2M0Y2YzNDYzNDMxODRhYWUy
NTgyODRhYWQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTMwICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3R5bGVSZWNhbGMg
c2hvdWxkIG9jY3VyIHdoZW4gc2hhZG93IHJvb3QgZXhpc3RzIGFuZCBsaWdodCBjaGlsZHJlbiBh
cmUgY2hhbmdlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2MjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2V0IHN0eWxlIHJlY2FsY3VsYXRpb24gZmxhZyB3aGVuIGEgY2hpbGQgZWxlbWVudCBpcyBj
aGFuZ2VkLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMt
ZmFsbGJhY2stZHluYW1pYy5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorCiAyMDEyLTAxLTMxICBI
YXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgQVBJcywgZ2V0
RWxlbWVudHNCeVhYWCBmYW1pbHksIHRvIFNoYWRvd1Jvb3QgSURMLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCmluZGV4IDQzNjczYTY2NzUxMTFlMjE4N2VkM2I0NjdlMTBkMDViMTlkNjVmNWEuLmY5ZDdl
NzgwODk0YTZlYzAxZjVlYzhlNGFiYzcxZjc4N2RlNGE4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKQEAgLTEzNjYsNiArMTM2Niw5IEBAIHZvaWQgRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmCiAgICAgICAg
IGNoZWNrRm9yRW1wdHlTdHlsZUNoYW5nZSh0aGlzLCByZW5kZXJTdHlsZSgpKTsKICAgICBlbHNl
CiAgICAgICAgIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcyh0aGlzLCByZW5kZXJTdHlsZSgp
LCBmYWxzZSwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKKwor
ICAgIGlmIChoYXNSYXJlRGF0YSgpICYmIHNoYWRvd1Jvb3QoKSkKKyAgICAgICAgc2V0TmVlZHNT
dHlsZVJlY2FsYygpOwogfQogCiB2b2lkIEVsZW1lbnQ6OmJlZ2luUGFyc2luZ0NoaWxkcmVuKCkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlYzZkMGM5MDczMWZmOWIzOTJjZTlhYjQxNjBhNTJjODExOTFmMmQ1Li4yNzliNDky
ZjUxYzJjNDIzMGYzMTEwZTU0NTU4MjZkODAwMTZhNWQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTItMDEtMzAgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBTdHlsZVJlY2FsYyBzaG91bGQgb2NjdXIgd2hlbiBzaGFkb3cgcm9vdCBleGlzdHMgYW5k
IGxpZ2h0IGNoaWxkcmVuIGFyZSBjaGFuZ2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgZHluYW1pYyBjb250ZW50IGZhbGxiYWNrLgor
ICAgICAgICBBbHNvLCB1bm5lY2Vzc2FyeSBSZW5kZXJUZXh0IG9iamVjdHMgaW4gcHJldmlvdXMg
dGVzdCBleHBlY3RhdGlvbnMgd2VyZSByZW1vdmVkLgorCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1keW5hbWljLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1keW5h
bWljLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2h0
bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92
ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dDoKKwogMjAxMi0wMS0zMSAgSGF5YXRvIEl0byAgPGhheWF0
b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIEFQSXMsIGdldEVsZW1lbnRzQnlYWFggZmFt
aWx5LCB0byBTaGFkb3dSb290IElETC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFt
aWMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NzRjYzE5MGM2ODA1MjY1ZDdhZGM5YjVjMTI3
ZmZjNTc4NmM3MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMjYgQEAKK3Rlc3RBcHBlbmRGYWxsYmFjaworUEFTUwordGVzdEFwcGVuZEZhbGxiYWNrRGVl
cAorUEFTUwordGVzdFJlbW92ZUZhbGxiYWNrCitQQVNTCit0ZXN0UmVtb3ZlRmFsbGJhY2tEZWVw
CitQQVNTCit0ZXN0UmVtb3ZlMQorUEFTUwordGVzdFJlbW92ZTIKK1BBU1MKK3Rlc3RSZW1vdmUz
CitQQVNTCit0ZXN0UmVwbGFjZUZhbGxiYWNrCitQQVNTCit0ZXN0RmFsbGJhY2tDb250ZW50Q2hh
bmdlZAorUEFTUwordGVzdENvbXBsZXhBcHBlbmQKK1BBU1MKK3Rlc3RDb21wbGV4UmVtb3ZlCitQ
QVNTCit0ZXN0Q29tcGxleFJlcGxhY2UKK1BBU1MKK1RFU1QgQ09NUExFVEVECisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2st
ZHluYW1pYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50
cy1mYWxsYmFjay1keW5hbWljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc2MzIwZDc3YzQ0Mjc2YjM0OGI0
NDE4ZmJlMzI5MzQ2ZDA2MWFmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy5odG1sCkBAIC0wLDAg
KzEsNDAxIEBACisgPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyog
cmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisu
Y29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKy5zcGFuIHsKKyAgICBk
aXNwbGF5OiBib3hlZC1pbmxpbmU7CisgICAgbWFyZ2luOiAycHg7CisgICAgYm9yZGVyOiBzb2xp
ZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArPSAobWVzc2FnZSAr
ICJcbiIpOworfQorCitmdW5jdGlvbiByZW1vdmVBbGxDaGlsZHJlbihlbGVtKSB7CisgICAgd2hp
bGUgKGVsZW0uZmlyc3RDaGlsZCkKKyAgICAgICAgZWxlbS5yZW1vdmVDaGlsZChlbGVtLmZpcnN0
Q2hpbGQpOworfQorCitmdW5jdGlvbiBjbGVhblVwKCkgeworICAgIHJlbW92ZUFsbENoaWxkcmVu
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykpOworICAgIHJlbW92
ZUFsbENoaWxkcmVuKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykp
OworfQorCitmdW5jdGlvbiByZW1vdmVDb250YWluZXJMaW5lcyh0ZXh0KSB7CisgICAgdmFyIGxp
bmVzID0gdGV4dC5zcGxpdCgnXG4nKTsKKyAgICBsaW5lcy5zcGxpY2UoMCwgMik7CisgICAgcmV0
dXJuIGxpbmVzLmpvaW4oJ1xuJyk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrKCkgeworICAgIHZhciBy
ZWZDb250YWluZXJSZW5kZXJUcmVlID0gaW50ZXJuYWxzLmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykpOworICAgIHZhciBy
ZWZSZW5kZXJUcmVlID0gcmVtb3ZlQ29udGFpbmVyTGluZXMocmVmQ29udGFpbmVyUmVuZGVyVHJl
ZSk7CisKKyAgICB2YXIgdGFyZ2V0Q29udGFpbmVyUmVuZGVyVHJlZSA9IGludGVybmFscy5lbGVt
ZW50UmVuZGVyVHJlZUFzVGV4dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRh
aW5lcicpKTsKKyAgICB2YXIgdGFyZ2V0UmVuZGVyVHJlZSA9IHJlbW92ZUNvbnRhaW5lckxpbmVz
KHRhcmdldENvbnRhaW5lclJlbmRlclRyZWUpOworCisgICAgaWYgKHRhcmdldFJlbmRlclRyZWUg
PT0gcmVmUmVuZGVyVHJlZSkKKyAgICAgICAgbG9nKCJQQVNTIik7CisgICAgZWxzZSB7CisgICAg
ICAgIGxvZygiRkFJTCIpOworICAgICAgICBsb2coIkV4cGVjdGVkOiAiKTsKKyAgICAgICAgbG9n
KHJlZlJlbmRlclRyZWUpOworICAgICAgICBsb2coIkFjdHVhbDogIik7CisgICAgICAgIGxvZyh0
YXJnZXRSZW5kZXJUcmVlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVNwYW5XaXRoVGV4
dCh0ZXh0KSB7CisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7
CisgICAgc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7Cisg
ICAgcmV0dXJuIHNwYW47Cit9CisKK2Z1bmN0aW9uIGFwcGVuZFNoYWRvdyh0YXJnZXQsIHNlbGVj
dCkgeworICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFyZ2V0KTsK
KworICAgIHZhciBjb250ZW50ID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3Vt
ZW50KTsKKyAgICBjb250ZW50LnNldEF0dHJpYnV0ZSgnc2VsZWN0Jywgc2VsZWN0KTsKKyAgICBj
b250ZW50LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgiRkFMTEJBQ0siKSk7CisKKyAg
ICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ7U0hBRE9XOiAiKSk7
CisgICAgcm9vdC5hcHBlbmRDaGlsZChjb250ZW50KTsKKyAgICByb290LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCJ9IikpOworfQorCitmdW5jdGlvbiBhcHBlbmRTaGFkb3dE
ZWVwKHRhcmdldCwgc2VsZWN0KSB7CisgICAgdmFyIHJvb3QgPSBpbnRlcm5hbHMuZW5zdXJlU2hh
ZG93Um9vdCh0YXJnZXQpOworCisgICAgdmFyIGNoaWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic3BhbiIpOworICAgIHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBpbnRlcm5hbHMuY3JlYXRl
Q29udGVudEVsZW1lbnQoZG9jdW1lbnQpOworICAgICAgICBjb250ZW50LnNldEF0dHJpYnV0ZSgn
c2VsZWN0Jywgc2VsZWN0KTsKKyAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoIkZBTExCQUNLIikpOworCisgICAgICAgIGNoaWxkLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCJ7SU5ORVI6ICIpKTsKKyAgICAgICAgY2hpbGQuYXBwZW5kQ2hp
bGQoY29udGVudCk7CisgICAgICAgIGNoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCJ9IikpOworICAgIH0KKworICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoIntTSEFET1c6ICIpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNoaWxkKTsK
KyAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ9IikpOworfQor
CitmdW5jdGlvbiB0ZXN0QXBwZW5kRmFsbGJhY2soY2FsbElmRG9uZSkgeworICAgIHZhciB0YXJn
ZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1M
ID0gIjxzcGFuPmNvbnRlbnQ8L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIj
YXBwZW5kIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbih0YXJnZXQs
IGNhbGxJZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
dGFyZ2V0LmlubmVySFRNTCA9ICI8c3BhbiBpZD0nYXBwZW5kJz5hcHBlbmRlZDwvc3Bhbj4iOwor
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5p
bm5lckhUTUwgPSAiPGRpdj57U0hBRE9XOiA8c3Bhbj5hcHBlbmRlZDwvc3Bhbj59PC9kaXY+IjsK
KyAgICAgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIGNh
bGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdEFw
cGVuZEZhbGxiYWNrRGVlcChjYWxsSWZEb25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+Y29u
dGVudDwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93RGVlcCh0YXJnZXQsICIjYXBwZW5kLWRl
ZXAiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJyku
YXBwZW5kQ2hpbGQodGFyZ2V0KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHRhcmdldCwgY2Fs
bElmRG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0YXJn
ZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlkPSdhcHBlbmQtZGVlcCc+YXBwZW5kZWQ8L3NwYW4+IjsK
KyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJyku
aW5uZXJIVE1MID0gIjxkaXY+e1NIQURPVzogPHNwYW4+e0lOTkVSOiA8c3Bhbj5hcHBlbmRlZDwv
c3Bhbj59PC9zcGFuPn08L2Rpdj4iOworICAgICAgICAgICAgY2FsbElmRG9uZSgpOworICAgICAg
ICB9OworICAgIH0pKHRhcmdldCwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDAp
OworfQorCitmdW5jdGlvbiB0ZXN0UmVtb3ZlRmFsbGJhY2soY2FsbElmRG9uZSkgeworICAgIHZh
ciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5u
ZXJIVE1MID0gIjxzcGFuIGlkPSdyZW1vdmUnPmNvbnRlbnQ8L3NwYW4+IjsKKworICAgIGFwcGVu
ZFNoYWRvdyh0YXJnZXQsICIjcmVtb3ZlIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9
IChmdW5jdGlvbih0YXJnZXQsIGNhbGxJZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250ZW50PC9zcGFu
PiIKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVy
JykuaW5uZXJIVE1MID0gIjxkaXY+e1NIQURPVzogPHNwYW4+RkFMTEJBQ0s8L3NwYW4+fTwvZGl2
PiI7CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgICAgIH07CisgICAgfSkodGFyZ2V0
LCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RSZW1vdmVGYWxsYmFja0RlZXAoY2FsbElmRG9uZSkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFu
IGlkPSdyZW1vdmUtZGVlcCc+Y29udGVudDwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93RGVl
cCh0YXJnZXQsICIjcmVtb3ZlLWRlZXAiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKworICAgIHZhciBmID0g
KGZ1bmN0aW9uKHRhcmdldCwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmNvbnRlbnQ8L3NwYW4+
IgorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXIn
KS5pbm5lckhUTUwgPSAiPGRpdj57U0hBRE9XOiA8c3Bhbj57SU5ORVI6IDxzcGFuPkZBTExCQUNL
PC9zcGFuPn08L3NwYW4+fTwvZGl2PiI7CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAg
ICAgIH07CisgICAgfSkodGFyZ2V0LCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwg
MCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZW1vdmUxKGNhbGxJZkRvbmUpIHsKKyAgICB2YXIgdGFy
Z2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRN
TCA9ICI8c3BhbiBpZD0ncmVtb3ZlMS0xJz5jb250ZW50IDE8L3NwYW4+PHNwYW4gaWQ9J3JlbW92
ZTEtMic+Y29udGVudCAyPC9zcGFuPiI7CisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW4i
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBw
ZW5kQ2hpbGQodGFyZ2V0KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHRhcmdldCwgY2FsbElm
RG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0YXJnZXQu
cmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlbW92ZTEtMScpKTsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJI
VE1MID0gIjxkaXY+e1NIQURPVzogPHNwYW4+Y29udGVudCAyPC9zcGFuPn08L2Rpdj4iOworICAg
ICAgICAgICAgY2FsbElmRG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgY2FsbElm
RG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0UmVtb3Zl
MihjYWxsSWZEb25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J3Rlc3RyZW1vdmUyLTEn
PmNvbnRlbnQgMTwvc3Bhbj48c3BhbiBpZD0ndGVzdHJlbW92ZTItMic+Y29udGVudCAyPC9zcGFu
PiI7CisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW4iKTsKKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKwor
ICAgIHZhciBmID0gKGZ1bmN0aW9uKHRhcmdldCwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1
cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0YXJnZXQucmVtb3ZlQ2hpbGQoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Rlc3RyZW1vdmUyLTInKSk7CisgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PntTSEFE
T1c6IDxzcGFuPmNvbnRlbnQgMTwvc3Bhbj59PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRv
bmUoKTsKKyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIGNhbGxJZkRvbmUpOworCisgICAgc2V0
VGltZW91dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFJlbW92ZTMoY2FsbElmRG9uZSkgewor
ICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJn
ZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlkPSd0ZXN0cmVtb3ZlMy0xJz5jb250ZW50IDE8L3NwYW4+
PHNwYW4gaWQ9J3Rlc3RyZW1vdmUzLTInPmNvbnRlbnQgMjwvc3Bhbj4iOworICAgIGFwcGVuZFNo
YWRvdyh0YXJnZXQsICJzcGFuIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0
dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5j
dGlvbih0YXJnZXQsIGNhbGxJZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgdGFyZ2V0LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
ZXN0cmVtb3ZlMy0xJykpOworICAgICAgICAgICAgdGFyZ2V0LnJlbW92ZUNoaWxkKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0ZXN0cmVtb3ZlMy0yJykpOworICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj57U0hB
RE9XOiA8c3Bhbj5GQUxMQkFDSzwvc3Bhbj59PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRv
bmUoKTsKKyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIGNhbGxJZkRvbmUpOworCisgICAgc2V0
VGltZW91dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFJlcGxhY2VGYWxsYmFjayhjYWxsSWZE
b25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J3RvLXJlcGxhY2UnPmNvbnRlbnQ8L3Nw
YW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIjdG8tcmVwbGFjZSIpOworCisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0
YXJnZXQpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBjYWxsSWZEb25lKSB7Cisg
ICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRhcmdldC5pbm5lckhUTUwg
PSAiPHNwYW4gaWQ9J3RvLXJlcGxhY2UnPnJlcGxhY2VkPC9zcGFuPiI7CisgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8
ZGl2PntTSEFET1c6IDxzcGFuPnJlcGxhY2VkPC9zcGFuPn08L2Rpdj4iOworICAgICAgICAgICAg
Y2FsbElmRG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgY2FsbElmRG9uZSk7CisK
KyAgICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0RmFsbGJhY2tDb250ZW50
Q2hhbmdlZChjYWxsSWZEb25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+Y29udGVudDwvc3Bh
bj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiNub24tZWxlbWVudCIpOworCisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0
YXJnZXQpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBjYWxsSWZEb25lKSB7Cisg
ICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRhcmdldC5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ2FwcGVuZGVkIGNvbnRlbnQnKSk7CisgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8
ZGl2PntTSEFET1c6IDxzcGFuPkZBTExCQUNLPC9zcGFuPn08L2Rpdj4iOworICAgICAgICAgICAg
Y2FsbElmRG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgY2FsbElmRG9uZSk7CisK
KyAgICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0Q29tcGxleEFwcGVuZChj
YWxsSWZEb25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICcjY29tcGxleC0xJyk7CisKKyAgICB2YXIg
c2VsZWN0Q29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBzZWxl
Y3RDb250ZW50LnNldEF0dHJpYnV0ZSgnaWQnLCAnY29tcGxleC0xJyk7CisgICAgYXBwZW5kU2hh
ZG93KHNlbGVjdENvbnRlbnQsICdzcGFuJyk7CisKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1tXT05UIFNFTEVDVEVEXScpKTsKKyAgICB0YXJnZXQuYXBw
ZW5kQ2hpbGQoc2VsZWN0Q29udGVudCk7CisgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdbV09OVCBTRUxFQ1RFRF0nKSk7CisKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAg
ICB2YXIgZiA9IChmdW5jdGlvbih0YXJnZXQsIHNlbGVjdENvbnRlbnQsIGNhbGxJZkRvbmUpIHsK
KyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgc2VsZWN0Q29udGVudC5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1NFTEVDVEVEJykpOworICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQor
ICAgICAgICAgICAgICAgICI8ZGl2PntTSEFET1c6IDxzcGFuPntTSEFET1c6IDxzcGFuPlNFTEVD
VEVEPC9zcGFuPn08L3NwYW4+fTwvZGl2PiI7CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7Cisg
ICAgICAgIH07CisgICAgfSkodGFyZ2V0LCBzZWxlY3RDb250ZW50LCBjYWxsSWZEb25lKTsKKwor
ICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDb21wbGV4UmVtb3ZlKGNh
bGxJZkRvbmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgJyNjb21wbGV4LTInKTsKKworICAgIHZhciBz
ZWxlY3RDb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgIHNlbGVj
dENvbnRlbnQuc2V0QXR0cmlidXRlKCdpZCcsICdjb21wbGV4LTInKTsKKyAgICB7CisgICAgICAg
IHNlbGVjdENvbnRlbnQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTRUxFQ1RFRCcp
KTsKKyAgICB9CisgICAgYXBwZW5kU2hhZG93KHNlbGVjdENvbnRlbnQsICdzcGFuJyk7CisKKyAg
ICB0YXJnZXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1tXT05UIFNFTEVD
VEVEXScpKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoc2VsZWN0Q29udGVudCk7CisgICAgdGFy
Z2V0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdbV09OVCBTRUxFQ1RFRF0n
KSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFw
cGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbih0YXJnZXQsIHNlbGVj
dENvbnRlbnQsIGNhbGxJZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oc2VsZWN0Q29udGVudCk7CisgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9Cisg
ICAgICAgICAgICAgICAgIjxkaXY+e1NIQURPVzogPHNwYW4+e1NIQURPVzogPHNwYW4+RkFMTEJB
Q0s8L3NwYW4+fTwvc3Bhbj59PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAg
ICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIHNlbGVjdENvbnRlbnQsIGNhbGxJZkRvbmUpOworCisg
ICAgc2V0VGltZW91dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdENvbXBsZXhSZXBsYWNlKGNh
bGxJZkRvbmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgJyNjb21wbGV4LTMnKTsKKworICAgIHZhciBz
ZWxlY3RDb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgIHNlbGVj
dENvbnRlbnQuc2V0QXR0cmlidXRlKCdpZCcsICdjb21wbGV4LTMnKTsKKyAgICB7CisgICAgfQor
ICAgIGFwcGVuZFNoYWRvdyhzZWxlY3RDb250ZW50LCAnc3BhbicpOworCisgICAgdGFyZ2V0LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdbV09OVCBTRUxFQ1RFRF0nKSk7Cisg
ICAgdGFyZ2V0LmFwcGVuZENoaWxkKHNlbGVjdENvbnRlbnQpOworICAgIHRhcmdldC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnW1dPTlQgU0VMRUNURURdJykpOworCisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0
YXJnZXQpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBzZWxlY3RDb250ZW50LCBj
YWxsSWZEb25lKSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJl
bW92ZUFsbENoaWxkcmVuKHNlbGVjdENvbnRlbnQpOworICAgICAgICAgICAgc2VsZWN0Q29udGVu
dC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1JFUExBQ0VEJykpOworICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwg
PQorICAgICAgICAgICAgICAgICI8ZGl2PntTSEFET1c6IDxzcGFuPntTSEFET1c6IDxzcGFuPlJF
UExBQ0VEPC9zcGFuPn08L3NwYW4+fTwvZGl2PiI7CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7
CisgICAgICAgIH07CisgICAgfSkodGFyZ2V0LCBzZWxlY3RDb250ZW50LCBjYWxsSWZEb25lKTsK
KworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbCisgICAgdGVz
dEFwcGVuZEZhbGxiYWNrLAorICAgIHRlc3RBcHBlbmRGYWxsYmFja0RlZXAsCisgICAgdGVzdFJl
bW92ZUZhbGxiYWNrLAorICAgIHRlc3RSZW1vdmVGYWxsYmFja0RlZXAsCisgICAgdGVzdFJlbW92
ZTEsCisgICAgdGVzdFJlbW92ZTIsCisgICAgdGVzdFJlbW92ZTMsCisgICAgdGVzdFJlcGxhY2VG
YWxsYmFjaywKKyAgICB0ZXN0RmFsbGJhY2tDb250ZW50Q2hhbmdlZCwKKyAgICB0ZXN0Q29tcGxl
eEFwcGVuZCwKKyAgICB0ZXN0Q29tcGxleFJlbW92ZSwKKyAgICB0ZXN0Q29tcGxleFJlcGxhY2Us
CisKK107CisKK2Z1bmN0aW9uIGRvVGVzdElmTGVmdCgpIHsKKyAgICB2YXIgdGVzdCA9IHRlc3RG
dW5jcy5zaGlmdCgpOworICAgIGlmICh0ZXN0ID09IG51bGwpCisgICAgICAgIHJldHVybiBkb25l
VGVzdCgpOworCisgICAgdmFyIGNhbGxJZkRvbmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNoZWNrKCk7CisgICAgICAgICAgICBj
bGVhblVwKCk7CisgICAgICAgICAgICBkb1Rlc3RJZkxlZnQoKTsKKyAgICAgICAgfSwgMCk7Cisg
ICAgfTsKKworICAgIGxvZyh0ZXN0Lm5hbWUpOworICAgIHRlc3QoY2FsbElmRG9uZSk7Cit9CisK
K2Z1bmN0aW9uIGRvbmVUZXN0KCkgeworICAgIGxvZygiVEVTVCBDT01QTEVURUQiKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGRvVGVzdCgp
IHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIH0KKworICAgIGNsZWFuVXAoKTsKKyAgICBkb1Rlc3RJ
ZkxlZnQoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+
CisKKzxkaXYgaWQ9ImFjdHVhbC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2Pgor
PGRpdiBpZD0iZXhwZWN0LWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8cHJl
IGlkPSJjb25zb2xlIj48L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1j
aGlsZC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9m
YXN0L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQKaW5kZXggODkyYzZh
NmRkOTE5ZDNhZTEzYzJkYWQ0NDJmOTE2MTk2Y2NkOGFiMC4uZTc5M2I1NmQzYzk5Nzg1ZDQ0OThi
MTZkY2NmNDgxZjYzODNmZGU1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0td2luL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9odG1sL2RldGFpbHMt
cmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0CkBAIC05LDYgKzksNSBAQCBsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE2LDApIHNp
emUgNTR4MTkKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxNiwwKSB3aWR0aCA1NDogInN1bW1h
cnkiCiAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDIwKSBzaXplIDc4NHgy
MAotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE1MHgxOQogICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTUwOiAic2hvdWxkIGhhdmUgbm8gYm9sZCB0ZXN0LiIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2h0bWwvZGV0YWlscy1y
ZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFz
dC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0CmluZGV4IGRkYTkzYmU5
OGU0YzY2ODBlYmY5YmFiYjI3NjczZGZmMjI2ZDY4NTQuLjljMmViNjgxOTk4NTY4Y2I1NWJmZWE3
YjcwNmZlMjgxZTJjNDY5ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9m
YXN0L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVj
dGVkLnR4dApAQCAtOSw2ICs5LDUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNiwwKSBzaXplIDYweDE3CiAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMTYsMCkgd2lkdGggNjA6ICJzdW1tYXJ5IgogICAgICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCwxOCkgc2l6ZSA3ODR4MTgKLSAgICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAxNjB4MTcKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDE2MDogInNob3VsZCBoYXZlIG5vIGJvbGQgdGVzdC4iCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92
ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dAppbmRleCBiMTAyOTZhNWVjYjc1YzAwYzQ0MzhlM2I3Yzdj
ODVlYzRjZmY1NDQwLi4xZDQwNmFjZTBlZDEyYjliOGI3Yjc5OTk2MTI4MjY1YTcyZmRkNWIyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFpbHMtcmVt
b3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQKQEAgLTksNiArOSw1
IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMTYsMCkgc2l6ZSA1OHgxOAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE2LDAp
IHdpZHRoIDU4OiAic3VtbWFyeSIKICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQg
KDAsMTgpIHNpemUgNzg0eDE4Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgMHgwCiAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTU3
eDE4CiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNTc6ICJzaG91bGQgaGF2
ZSBubyBib2xkIHRlc3QuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFz
dC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0
CmluZGV4IDg1OTE3YTdjMWYyNmI2MDRkY2Q5YWYwMWI2NzQ5OTRjMTY5ZDcxNTAuLmQzYjRiODA3
MzM5Y2IzNzcwMjY3NmU4ZDRmMmVkNGVjYjNhMzFhODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2h0bWwvZGV0YWlscy1yZW1vdmUt
Y2hpbGQtMi1leHBlY3RlZC50eHQKQEAgLTksNiArOSw1IEBAIGxheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTYsMCkgc2l6ZSA2NXgy
MQogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE2LDApIHdpZHRoIDY1OiAic3VtbWFyeSIKICAg
ICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMjEpIHNpemUgNzg0eDIxCi0gICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCiAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTc3eDIxCiAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAxNzc6ICJzaG91bGQgaGF2ZSBubyBib2xkIHRlc3QuIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125045</attachid>
            <date>2012-02-01 16:50:12 -0800</date>
            <delta_ts>2012-02-01 19:23:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76262-20120202095010.patch</filename>
            <type>text/plain</type>
            <size>20339</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E5ZDQ5OWM0YzQ3YWY0
YjBiMjJlMjdiMWVhYmQ4NzliN2Y4MmUzMS4uYTYyNWEyN2IzNzhiYjEzZGEzNDU2NDAxYzNkYTgx
YzQ5MDU4NWRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAxLTMwICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3R5bGVSZWNhbGMg
c2hvdWxkIG9jY3VyIHdoZW4gc2hhZG93IHJvb3QgZXhpc3RzIGFuZCBsaWdodCBjaGlsZHJlbiBh
cmUgY2hhbmdlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2MjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2hlbiBsaWdodCBjaGlsZHJlbiBpcyBjaGFuZ2VkLCB0aGUgZWxlbWVudCBpbmNsdWRlZCBp
biBIVE1MQ29udGVudEVsZW1lbnQgbWF5IGFsc28gYmUgY2hhbmdlZC4KKyAgICAgICAgU28gd2Ug
aGF2ZSB0byByZWNhbGN1bGF0ZSBjb250ZW50IGVsZW1lbnQgYWdhaW4uCisKKyAgICAgICAgVGVz
dDogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1keW5hbWljLmh0bWwK
KworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6CisKIDIwMTItMDItMDEgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWJDb3JlIHBhcnQgb2YgPHJkYXI6Ly9wcm9ibGVtLzEwNDQy
NjYzPiBQYWdpbmF0ZWQgZGlzcGxheSBkb2VzIG5vdCByZXNwZWN0IHBhZ2UtYnJlYWste2JlZm9y
ZSxhZnRlcn0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5MWQ4NjYzYWMwNThjYTkwMjQ0ZTNi
YWQ5ZDU0NTBkMDFlNmI1MzAxLi5jMDY4ZWI3ODJmZWM2N2RlNmZlYjlkYTQzNGQwZjhhMzE5MWVh
MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMzY2LDYgKzEzNjYsMTEgQEAgdm9pZCBF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9y
ZUNoYW5nZSwgTm9kZSogYWYKICAgICAgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKHRoaXMs
IHJlbmRlclN0eWxlKCkpOwogICAgIGVsc2UKICAgICAgICAgY2hlY2tGb3JTaWJsaW5nU3R5bGVD
aGFuZ2VzKHRoaXMsIHJlbmRlclN0eWxlKCksIGZhbHNlLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hh
bmdlLCBjaGlsZENvdW50RGVsdGEpOworCisgICAgaWYgKGhhc1JhcmVEYXRhKCkpIHsKKyAgICAg
ICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBzaGFkb3dSb290KCkpCisgICAgICAgICAgICByb290
LT5ob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CisgICAgfQogfQogCiB2b2lkIEVsZW1lbnQ6OmJlZ2lu
UGFyc2luZ0NoaWxkcmVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCAyMzIzNWEz
OTkzNjc4NWRiMzY0YzIzYWNjNDdkYzdmZDRjZGQzMjg3Li5kMjRhNmJjYTAyYzlmNzM2OWE0YzYx
NDA5ZjRiZjIyOWZkZGVkYWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0xMzcs
OCArMTM3LDkgQEAgdm9pZCBTaGFkb3dSb290Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKIHsKICAg
ICBpZiAoIWhhc0NvbnRlbnRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKKwogICAgIC8vIFRo
aXMgcmVzdWx0cyBpbiBmb3JjZWQgZGV0YWNoaW5nL2F0dGFjaGluZyBvZiB0aGUgc2hhZG93IHJl
bmRlciB0cmVlLiBTZWUgU2hhZG93Um9vdDo6cmVjYWxjU3R5bGUoKS4KLSAgICBzZXROZWVkc1N0
eWxlUmVjYWxjKCk7CisgICAgc2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygp
OwogfQogCiBib29sIFNoYWRvd1Jvb3Q6OmlzSW5jbHVzaW9uU2VsZWN0b3JBY3RpdmUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGRlYTUwY2NiZGRlMDg2M2I0ZTFiNmU4ZWM4ZGYxZjIwZmVjMGRhY2YuLjY2NzE5
ZjNmM2JkYjY0ZTY5OGQ1MGYyMGQ1YmJmMmQxOGViNjg1YzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxMi0wMS0zMCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgorCisg
ICAgICAgIFN0eWxlUmVjYWxjIHNob3VsZCBvY2N1ciB3aGVuIHNoYWRvdyByb290IGV4aXN0cyBh
bmQgbGlnaHQgY2hpbGRyZW4gYXJlIGNoYW5nZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciBkeW5hbWljIGNvbnRlbnQgZmFsbGJhY2su
CisgICAgICAgIEFsc28sIHVubmVjZXNzYXJ5IFJlbmRlclRleHQgb2JqZWN0cyBpbiBwcmV2aW91
cyB0ZXN0IGV4cGVjdGF0aW9ucyB3ZXJlIHJlbW92ZWQuCisKKyAgICAgICAgKiBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5
bmFtaWMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3Qv
aHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9odG1sL2RldGFpbHMtcmVt
b3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0OgorCiAyMDEyLTAyLTAxICBHYXZpbiBCYXJyYWNsb3Vn
aCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBjYWxsaW5nIGZ1bmN0aW9uIG9u
IGNhdGNoIGJsb2NrIHNjb3BlIGNvbnRhaW5pbmcgYW4gZXZhbCByZXN1bHQgaW4gd3JvbmcgdGhp
cyB2YWx1ZSBiZWluZyBwYXNzZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NzRjYzE5MGM2ODA1MjY1ZDdhZGM5YjVjMTI3ZmZj
NTc4NmM3MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
c2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjYgQEAKK3Rlc3RBcHBlbmRGYWxsYmFjaworUEFTUwordGVzdEFwcGVuZEZhbGxiYWNrRGVlcAor
UEFTUwordGVzdFJlbW92ZUZhbGxiYWNrCitQQVNTCit0ZXN0UmVtb3ZlRmFsbGJhY2tEZWVwCitQ
QVNTCit0ZXN0UmVtb3ZlMQorUEFTUwordGVzdFJlbW92ZTIKK1BBU1MKK3Rlc3RSZW1vdmUzCitQ
QVNTCit0ZXN0UmVwbGFjZUZhbGxiYWNrCitQQVNTCit0ZXN0RmFsbGJhY2tDb250ZW50Q2hhbmdl
ZAorUEFTUwordGVzdENvbXBsZXhBcHBlbmQKK1BBU1MKK3Rlc3RDb21wbGV4UmVtb3ZlCitQQVNT
Cit0ZXN0Q29tcGxleFJlcGxhY2UKK1BBU1MKK1RFU1QgQ09NUExFVEVECisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHlu
YW1pYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1m
YWxsYmFjay1keW5hbWljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc2MzIwZDc3YzQ0Mjc2YjM0OGI0NDE4
ZmJlMzI5MzQ2ZDA2MWFmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy5odG1sCkBAIC0wLDAgKzEs
NDAxIEBACisgPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVs
YXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisuY29u
dGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKy5zcGFuIHsKKyAgICBkaXNw
bGF5OiBib3hlZC1pbmxpbmU7CisgICAgbWFyZ2luOiAycHg7CisgICAgYm9yZGVyOiBzb2xpZDsK
K30KKzwvc3R5bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArPSAobWVzc2FnZSArICJc
biIpOworfQorCitmdW5jdGlvbiByZW1vdmVBbGxDaGlsZHJlbihlbGVtKSB7CisgICAgd2hpbGUg
KGVsZW0uZmlyc3RDaGlsZCkKKyAgICAgICAgZWxlbS5yZW1vdmVDaGlsZChlbGVtLmZpcnN0Q2hp
bGQpOworfQorCitmdW5jdGlvbiBjbGVhblVwKCkgeworICAgIHJlbW92ZUFsbENoaWxkcmVuKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykpOworICAgIHJlbW92ZUFs
bENoaWxkcmVuKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykpOwor
fQorCitmdW5jdGlvbiByZW1vdmVDb250YWluZXJMaW5lcyh0ZXh0KSB7CisgICAgdmFyIGxpbmVz
ID0gdGV4dC5zcGxpdCgnXG4nKTsKKyAgICBsaW5lcy5zcGxpY2UoMCwgMik7CisgICAgcmV0dXJu
IGxpbmVzLmpvaW4oJ1xuJyk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrKCkgeworICAgIHZhciByZWZD
b250YWluZXJSZW5kZXJUcmVlID0gaW50ZXJuYWxzLmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykpOworICAgIHZhciByZWZS
ZW5kZXJUcmVlID0gcmVtb3ZlQ29udGFpbmVyTGluZXMocmVmQ29udGFpbmVyUmVuZGVyVHJlZSk7
CisKKyAgICB2YXIgdGFyZ2V0Q29udGFpbmVyUmVuZGVyVHJlZSA9IGludGVybmFscy5lbGVtZW50
UmVuZGVyVHJlZUFzVGV4dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5l
cicpKTsKKyAgICB2YXIgdGFyZ2V0UmVuZGVyVHJlZSA9IHJlbW92ZUNvbnRhaW5lckxpbmVzKHRh
cmdldENvbnRhaW5lclJlbmRlclRyZWUpOworCisgICAgaWYgKHRhcmdldFJlbmRlclRyZWUgPT0g
cmVmUmVuZGVyVHJlZSkKKyAgICAgICAgbG9nKCJQQVNTIik7CisgICAgZWxzZSB7CisgICAgICAg
IGxvZygiRkFJTCIpOworICAgICAgICBsb2coIkV4cGVjdGVkOiAiKTsKKyAgICAgICAgbG9nKHJl
ZlJlbmRlclRyZWUpOworICAgICAgICBsb2coIkFjdHVhbDogIik7CisgICAgICAgIGxvZyh0YXJn
ZXRSZW5kZXJUcmVlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVNwYW5XaXRoVGV4dCh0
ZXh0KSB7CisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7Cisg
ICAgc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CisgICAg
cmV0dXJuIHNwYW47Cit9CisKK2Z1bmN0aW9uIGFwcGVuZFNoYWRvdyh0YXJnZXQsIHNlbGVjdCkg
eworICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFyZ2V0KTsKKwor
ICAgIHZhciBjb250ZW50ID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3VtZW50
KTsKKyAgICBjb250ZW50LnNldEF0dHJpYnV0ZSgnc2VsZWN0Jywgc2VsZWN0KTsKKyAgICBjb250
ZW50LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgiRkFMTEJBQ0siKSk7CisKKyAgICBy
b290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ7U0hBRE9XOiAiKSk7Cisg
ICAgcm9vdC5hcHBlbmRDaGlsZChjb250ZW50KTsKKyAgICByb290LmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCJ9IikpOworfQorCitmdW5jdGlvbiBhcHBlbmRTaGFkb3dEZWVw
KHRhcmdldCwgc2VsZWN0KSB7CisgICAgdmFyIHJvb3QgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93
Um9vdCh0YXJnZXQpOworCisgICAgdmFyIGNoaWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c3BhbiIpOworICAgIHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBpbnRlcm5hbHMuY3JlYXRlQ29u
dGVudEVsZW1lbnQoZG9jdW1lbnQpOworICAgICAgICBjb250ZW50LnNldEF0dHJpYnV0ZSgnc2Vs
ZWN0Jywgc2VsZWN0KTsKKyAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoIkZBTExCQUNLIikpOworCisgICAgICAgIGNoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCJ7SU5ORVI6ICIpKTsKKyAgICAgICAgY2hpbGQuYXBwZW5kQ2hpbGQo
Y29udGVudCk7CisgICAgICAgIGNoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJ9IikpOworICAgIH0KKworICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoIntTSEFET1c6ICIpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNoaWxkKTsKKyAg
ICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ9IikpOworfQorCitm
dW5jdGlvbiB0ZXN0QXBwZW5kRmFsbGJhY2soY2FsbElmRG9uZSkgeworICAgIHZhciB0YXJnZXQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0g
IjxzcGFuPmNvbnRlbnQ8L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIjYXBw
ZW5kIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicp
LmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbih0YXJnZXQsIGNh
bGxJZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGFy
Z2V0LmlubmVySFRNTCA9ICI8c3BhbiBpZD0nYXBwZW5kJz5hcHBlbmRlZDwvc3Bhbj4iOworICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5l
ckhUTUwgPSAiPGRpdj57U0hBRE9XOiA8c3Bhbj5hcHBlbmRlZDwvc3Bhbj59PC9kaXY+IjsKKyAg
ICAgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIGNhbGxJ
ZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdEFwcGVu
ZEZhbGxiYWNrRGVlcChjYWxsSWZEb25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+Y29udGVu
dDwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93RGVlcCh0YXJnZXQsICIjYXBwZW5kLWRlZXAi
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBw
ZW5kQ2hpbGQodGFyZ2V0KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHRhcmdldCwgY2FsbElm
RG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0YXJnZXQu
aW5uZXJIVE1MID0gIjxzcGFuIGlkPSdhcHBlbmQtZGVlcCc+YXBwZW5kZWQ8L3NwYW4+IjsKKyAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5u
ZXJIVE1MID0gIjxkaXY+e1NIQURPVzogPHNwYW4+e0lOTkVSOiA8c3Bhbj5hcHBlbmRlZDwvc3Bh
bj59PC9zcGFuPn08L2Rpdj4iOworICAgICAgICAgICAgY2FsbElmRG9uZSgpOworICAgICAgICB9
OworICAgIH0pKHRhcmdldCwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOwor
fQorCitmdW5jdGlvbiB0ZXN0UmVtb3ZlRmFsbGJhY2soY2FsbElmRG9uZSkgeworICAgIHZhciB0
YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJI
VE1MID0gIjxzcGFuIGlkPSdyZW1vdmUnPmNvbnRlbnQ8L3NwYW4+IjsKKworICAgIGFwcGVuZFNo
YWRvdyh0YXJnZXQsICIjcmVtb3ZlIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChm
dW5jdGlvbih0YXJnZXQsIGNhbGxJZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250ZW50PC9zcGFuPiIK
KyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJyku
aW5uZXJIVE1MID0gIjxkaXY+e1NIQURPVzogPHNwYW4+RkFMTEJBQ0s8L3NwYW4+fTwvZGl2PiI7
CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgICAgIH07CisgICAgfSkodGFyZ2V0LCBj
YWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RS
ZW1vdmVGYWxsYmFja0RlZXAoY2FsbElmRG9uZSkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlk
PSdyZW1vdmUtZGVlcCc+Y29udGVudDwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93RGVlcCh0
YXJnZXQsICIjcmVtb3ZlLWRlZXAiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdh
Y3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKworICAgIHZhciBmID0gKGZ1
bmN0aW9uKHRhcmdldCwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmNvbnRlbnQ8L3NwYW4+Igor
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5p
bm5lckhUTUwgPSAiPGRpdj57U0hBRE9XOiA8c3Bhbj57SU5ORVI6IDxzcGFuPkZBTExCQUNLPC9z
cGFuPn08L3NwYW4+fTwvZGl2PiI7CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgICAg
IH07CisgICAgfSkodGFyZ2V0LCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RSZW1vdmUxKGNhbGxJZkRvbmUpIHsKKyAgICB2YXIgdGFyZ2V0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9
ICI8c3BhbiBpZD0ncmVtb3ZlMS0xJz5jb250ZW50IDE8L3NwYW4+PHNwYW4gaWQ9J3JlbW92ZTEt
Mic+Y29udGVudCAyPC9zcGFuPiI7CisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW4iKTsK
KworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5k
Q2hpbGQodGFyZ2V0KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHRhcmdldCwgY2FsbElmRG9u
ZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0YXJnZXQucmVt
b3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlbW92ZTEtMScpKTsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1M
ID0gIjxkaXY+e1NIQURPVzogPHNwYW4+Y29udGVudCAyPC9zcGFuPn08L2Rpdj4iOworICAgICAg
ICAgICAgY2FsbElmRG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgY2FsbElmRG9u
ZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0UmVtb3ZlMihj
YWxsSWZEb25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J3Rlc3RyZW1vdmUyLTEnPmNv
bnRlbnQgMTwvc3Bhbj48c3BhbiBpZD0ndGVzdHJlbW92ZTItMic+Y29udGVudCAyPC9zcGFuPiI7
CisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW4iKTsKKworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKworICAg
IHZhciBmID0gKGZ1bmN0aW9uKHRhcmdldCwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1cm4g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0YXJnZXQucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Rlc3RyZW1vdmUyLTInKSk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PntTSEFET1c6
IDxzcGFuPmNvbnRlbnQgMTwvc3Bhbj59PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRvbmUo
KTsKKyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGlt
ZW91dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFJlbW92ZTMoY2FsbElmRG9uZSkgeworICAg
IHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQu
aW5uZXJIVE1MID0gIjxzcGFuIGlkPSd0ZXN0cmVtb3ZlMy0xJz5jb250ZW50IDE8L3NwYW4+PHNw
YW4gaWQ9J3Rlc3RyZW1vdmUzLTInPmNvbnRlbnQgMjwvc3Bhbj4iOworICAgIGFwcGVuZFNoYWRv
dyh0YXJnZXQsICJzcGFuIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFs
LWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlv
bih0YXJnZXQsIGNhbGxJZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgdGFyZ2V0LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0
cmVtb3ZlMy0xJykpOworICAgICAgICAgICAgdGFyZ2V0LnJlbW92ZUNoaWxkKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd0ZXN0cmVtb3ZlMy0yJykpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj57U0hBRE9X
OiA8c3Bhbj5GQUxMQkFDSzwvc3Bhbj59PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRvbmUo
KTsKKyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGlt
ZW91dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFJlcGxhY2VGYWxsYmFjayhjYWxsSWZEb25l
KSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J3RvLXJlcGxhY2UnPmNvbnRlbnQ8L3NwYW4+
IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIjdG8tcmVwbGFjZSIpOworCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJn
ZXQpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBjYWxsSWZEb25lKSB7CisgICAg
ICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRhcmdldC5pbm5lckhUTUwgPSAi
PHNwYW4gaWQ9J3RvLXJlcGxhY2UnPnJlcGxhY2VkPC9zcGFuPiI7CisgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2
PntTSEFET1c6IDxzcGFuPnJlcGxhY2VkPC9zcGFuPn08L2Rpdj4iOworICAgICAgICAgICAgY2Fs
bElmRG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgY2FsbElmRG9uZSk7CisKKyAg
ICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0RmFsbGJhY2tDb250ZW50Q2hh
bmdlZChjYWxsSWZEb25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+Y29udGVudDwvc3Bhbj4i
OworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiNub24tZWxlbWVudCIpOworCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJn
ZXQpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBjYWxsSWZEb25lKSB7CisgICAg
ICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRhcmdldC5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ2FwcGVuZGVkIGNvbnRlbnQnKSk7CisgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2
PntTSEFET1c6IDxzcGFuPkZBTExCQUNLPC9zcGFuPn08L2Rpdj4iOworICAgICAgICAgICAgY2Fs
bElmRG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgY2FsbElmRG9uZSk7CisKKyAg
ICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0Q29tcGxleEFwcGVuZChjYWxs
SWZEb25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICcjY29tcGxleC0xJyk7CisKKyAgICB2YXIgc2Vs
ZWN0Q29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBzZWxlY3RD
b250ZW50LnNldEF0dHJpYnV0ZSgnaWQnLCAnY29tcGxleC0xJyk7CisgICAgYXBwZW5kU2hhZG93
KHNlbGVjdENvbnRlbnQsICdzcGFuJyk7CisKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ1tXT05UIFNFTEVDVEVEXScpKTsKKyAgICB0YXJnZXQuYXBwZW5k
Q2hpbGQoc2VsZWN0Q29udGVudCk7CisgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCdbV09OVCBTRUxFQ1RFRF0nKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2
YXIgZiA9IChmdW5jdGlvbih0YXJnZXQsIHNlbGVjdENvbnRlbnQsIGNhbGxJZkRvbmUpIHsKKyAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgc2VsZWN0Q29udGVudC5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1NFTEVDVEVEJykpOworICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAg
ICAgICAgICAgICAgICI8ZGl2PntTSEFET1c6IDxzcGFuPntTSEFET1c6IDxzcGFuPlNFTEVDVEVE
PC9zcGFuPn08L3NwYW4+fTwvZGl2PiI7CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAg
ICAgIH07CisgICAgfSkodGFyZ2V0LCBzZWxlY3RDb250ZW50LCBjYWxsSWZEb25lKTsKKworICAg
IHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDb21wbGV4UmVtb3ZlKGNhbGxJ
ZkRvbmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgJyNjb21wbGV4LTInKTsKKworICAgIHZhciBzZWxl
Y3RDb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgIHNlbGVjdENv
bnRlbnQuc2V0QXR0cmlidXRlKCdpZCcsICdjb21wbGV4LTInKTsKKyAgICB7CisgICAgICAgIHNl
bGVjdENvbnRlbnQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTRUxFQ1RFRCcpKTsK
KyAgICB9CisgICAgYXBwZW5kU2hhZG93KHNlbGVjdENvbnRlbnQsICdzcGFuJyk7CisKKyAgICB0
YXJnZXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1tXT05UIFNFTEVDVEVE
XScpKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoc2VsZWN0Q29udGVudCk7CisgICAgdGFyZ2V0
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdbV09OVCBTRUxFQ1RFRF0nKSk7
CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVu
ZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbih0YXJnZXQsIHNlbGVjdENv
bnRlbnQsIGNhbGxJZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oc2VsZWN0Q29udGVudCk7CisgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAg
ICAgICAgICAgICAgIjxkaXY+e1NIQURPVzogPHNwYW4+e1NIQURPVzogPHNwYW4+RkFMTEJBQ0s8
L3NwYW4+fTwvc3Bhbj59PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICAg
ICAgfTsKKyAgICB9KSh0YXJnZXQsIHNlbGVjdENvbnRlbnQsIGNhbGxJZkRvbmUpOworCisgICAg
c2V0VGltZW91dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdENvbXBsZXhSZXBsYWNlKGNhbGxJ
ZkRvbmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgJyNjb21wbGV4LTMnKTsKKworICAgIHZhciBzZWxl
Y3RDb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgIHNlbGVjdENv
bnRlbnQuc2V0QXR0cmlidXRlKCdpZCcsICdjb21wbGV4LTMnKTsKKyAgICB7CisgICAgfQorICAg
IGFwcGVuZFNoYWRvdyhzZWxlY3RDb250ZW50LCAnc3BhbicpOworCisgICAgdGFyZ2V0LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdbV09OVCBTRUxFQ1RFRF0nKSk7CisgICAg
dGFyZ2V0LmFwcGVuZENoaWxkKHNlbGVjdENvbnRlbnQpOworICAgIHRhcmdldC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnW1dPTlQgU0VMRUNURURdJykpOworCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJn
ZXQpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBzZWxlY3RDb250ZW50LCBjYWxs
SWZEb25lKSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJlbW92
ZUFsbENoaWxkcmVuKHNlbGVjdENvbnRlbnQpOworICAgICAgICAgICAgc2VsZWN0Q29udGVudC5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1JFUExBQ0VEJykpOworICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQor
ICAgICAgICAgICAgICAgICI8ZGl2PntTSEFET1c6IDxzcGFuPntTSEFET1c6IDxzcGFuPlJFUExB
Q0VEPC9zcGFuPn08L3NwYW4+fTwvZGl2PiI7CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7Cisg
ICAgICAgIH07CisgICAgfSkodGFyZ2V0LCBzZWxlY3RDb250ZW50LCBjYWxsSWZEb25lKTsKKwor
ICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbCisgICAgdGVzdEFw
cGVuZEZhbGxiYWNrLAorICAgIHRlc3RBcHBlbmRGYWxsYmFja0RlZXAsCisgICAgdGVzdFJlbW92
ZUZhbGxiYWNrLAorICAgIHRlc3RSZW1vdmVGYWxsYmFja0RlZXAsCisgICAgdGVzdFJlbW92ZTEs
CisgICAgdGVzdFJlbW92ZTIsCisgICAgdGVzdFJlbW92ZTMsCisgICAgdGVzdFJlcGxhY2VGYWxs
YmFjaywKKyAgICB0ZXN0RmFsbGJhY2tDb250ZW50Q2hhbmdlZCwKKyAgICB0ZXN0Q29tcGxleEFw
cGVuZCwKKyAgICB0ZXN0Q29tcGxleFJlbW92ZSwKKyAgICB0ZXN0Q29tcGxleFJlcGxhY2UsCisK
K107CisKK2Z1bmN0aW9uIGRvVGVzdElmTGVmdCgpIHsKKyAgICB2YXIgdGVzdCA9IHRlc3RGdW5j
cy5zaGlmdCgpOworICAgIGlmICh0ZXN0ID09IG51bGwpCisgICAgICAgIHJldHVybiBkb25lVGVz
dCgpOworCisgICAgdmFyIGNhbGxJZkRvbmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNoZWNrKCk7CisgICAgICAgICAgICBjbGVh
blVwKCk7CisgICAgICAgICAgICBkb1Rlc3RJZkxlZnQoKTsKKyAgICAgICAgfSwgMCk7CisgICAg
fTsKKworICAgIGxvZyh0ZXN0Lm5hbWUpOworICAgIHRlc3QoY2FsbElmRG9uZSk7Cit9CisKK2Z1
bmN0aW9uIGRvbmVUZXN0KCkgeworICAgIGxvZygiVEVTVCBDT01QTEVURUQiKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGRvVGVzdCgpIHsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIH0KKworICAgIGNsZWFuVXAoKTsKKyAgICBkb1Rlc3RJZkxl
ZnQoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+CisK
KzxkaXYgaWQ9ImFjdHVhbC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2PgorPGRp
diBpZD0iZXhwZWN0LWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8cHJlIGlk
PSJjb25zb2xlIj48L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGls
ZC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0
L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQKaW5kZXggODkyYzZhNmRk
OTE5ZDNhZTEzYzJkYWQ0NDJmOTE2MTk2Y2NkOGFiMC4uZTc5M2I1NmQzYzk5Nzg1ZDQ0OThiMTZk
Y2NmNDgxZjYzODNmZGU1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0td2luL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9odG1sL2RldGFpbHMtcmVt
b3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0CkBAIC05LDYgKzksNSBAQCBsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE2LDApIHNpemUg
NTR4MTkKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxNiwwKSB3aWR0aCA1NDogInN1bW1hcnki
CiAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDIwKSBzaXplIDc4NHgyMAot
ICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE1MHgxOQogICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggMTUwOiAic2hvdWxkIGhhdmUgbm8gYm9sZCB0ZXN0LiIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2h0bWwvZGV0YWlscy1yZW1v
dmUtY2hpbGQtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9o
dG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0CmluZGV4IGRkYTkzYmU5OGU0
YzY2ODBlYmY5YmFiYjI3NjczZGZmMjI2ZDY4NTQuLjljMmViNjgxOTk4NTY4Y2I1NWJmZWE3Yjcw
NmZlMjgxZTJjNDY5ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0
L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVk
LnR4dApAQCAtOSw2ICs5LDUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNiwwKSBzaXplIDYweDE3CiAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMTYsMCkgd2lkdGggNjA6ICJzdW1tYXJ5IgogICAgICAgICBSZW5kZXJCbG9j
ayAoYW5vbnltb3VzKSBhdCAoMCwxOCkgc2l6ZSA3ODR4MTgKLSAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSAxNjB4MTcKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDE2MDogInNob3VsZCBoYXZlIG5vIGJvbGQgdGVzdC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1j
aGlsZC0yLWV4cGVjdGVkLnR4dAppbmRleCBiMTAyOTZhNWVjYjc1YzAwYzQ0MzhlM2I3YzdjODVl
YzRjZmY1NDQwLi4xZDQwNmFjZTBlZDEyYjliOGI3Yjc5OTk2MTI4MjY1YTcyZmRkNWIyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFpbHMtcmVtb3Zl
LWNoaWxkLTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQKQEAgLTksNiArOSw1IEBA
IGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMTYsMCkgc2l6ZSA1OHgxOAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE2LDApIHdp
ZHRoIDU4OiAic3VtbWFyeSIKICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAs
MTgpIHNpemUgNzg0eDE4Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMHgwCiAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTU3eDE4
CiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNTc6ICJzaG91bGQgaGF2ZSBu
byBib2xkIHRlc3QuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9o
dG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0Cmlu
ZGV4IDg1OTE3YTdjMWYyNmI2MDRkY2Q5YWYwMWI2NzQ5OTRjMTY5ZDcxNTAuLmQzYjRiODA3MzM5
Y2IzNzcwMjY3NmU4ZDRmMmVkNGVjYjNhMzFhODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hp
bGQtMi1leHBlY3RlZC50eHQKQEAgLTksNiArOSw1IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTYsMCkgc2l6ZSA2NXgyMQog
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE2LDApIHdpZHRoIDY1OiAic3VtbWFyeSIKICAgICAg
ICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMjEpIHNpemUgNzg0eDIxCi0gICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCiAgICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTc3eDIxCiAgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAxNzc6ICJzaG91bGQgaGF2ZSBubyBib2xkIHRlc3QuIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125064</attachid>
            <date>2012-02-01 19:24:08 -0800</date>
            <delta_ts>2012-02-02 18:47:21 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-76262-20120202122406.patch</filename>
            <type>text/plain</type>
            <size>20350</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E5ZDQ5OWM0YzQ3YWY0
YjBiMjJlMjdiMWVhYmQ4NzliN2Y4MmUzMS4uNmJkNGNhNDM0ZTNjMjhhZDhjNjA5MDQyYzhmYTM5
NmUxZmJmYWZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAxLTMwICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3R5bGVSZWNhbGMg
c2hvdWxkIG9jY3VyIHdoZW4gc2hhZG93IHJvb3QgZXhpc3RzIGFuZCBsaWdodCBjaGlsZHJlbiBh
cmUgY2hhbmdlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2MjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KKworICAgICAg
ICBXaGVuIGxpZ2h0IGNoaWxkcmVuIGlzIGNoYW5nZWQsIHRoZSBlbGVtZW50IGluY2x1ZGVkIGlu
IEhUTUxDb250ZW50RWxlbWVudCBtYXkgYWxzbyBiZSBjaGFuZ2VkLgorICAgICAgICBTbyB3ZSBo
YXZlIHRvIHJlY2FsY3VsYXRlIGluY2x1c2lvbiBvZiBjb250ZW50IGVsZW1lbnQgYWdhaW4uCisK
KyAgICAgICAgVGVzdDogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1k
eW5hbWljLmh0bWwKKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisKIDIwMTItMDItMDEgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDb3JlIHBhcnQgb2YgPHJkYXI6Ly9w
cm9ibGVtLzEwNDQyNjYzPiBQYWdpbmF0ZWQgZGlzcGxheSBkb2VzIG5vdCByZXNwZWN0IHBhZ2Ut
YnJlYWste2JlZm9yZSxhZnRlcn0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5MWQ4NjYzYWMw
NThjYTkwMjQ0ZTNiYWQ5ZDU0NTBkMDFlNmI1MzAxLi5jMDY4ZWI3ODJmZWM2N2RlNmZlYjlkYTQz
NGQwZjhhMzE5MWVhMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMzY2LDYgKzEzNjYs
MTEgQEAgdm9pZCBFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIs
IE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWYKICAgICAgICAgY2hlY2tGb3JFbXB0eVN0eWxl
Q2hhbmdlKHRoaXMsIHJlbmRlclN0eWxlKCkpOwogICAgIGVsc2UKICAgICAgICAgY2hlY2tGb3JT
aWJsaW5nU3R5bGVDaGFuZ2VzKHRoaXMsIHJlbmRlclN0eWxlKCksIGZhbHNlLCBiZWZvcmVDaGFu
Z2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOworCisgICAgaWYgKGhhc1JhcmVEYXRh
KCkpIHsKKyAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBzaGFkb3dSb290KCkpCisgICAg
ICAgICAgICByb290LT5ob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CisgICAgfQogfQogCiB2b2lkIEVs
ZW1lbnQ6OmJlZ2luUGFyc2luZ0NoaWxkcmVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApp
bmRleCAyMzIzNWEzOTkzNjc4NWRiMzY0YzIzYWNjNDdkYzdmZDRjZGQzMjg3Li5kMjRhNmJjYTAy
YzlmNzM2OWE0YzYxNDA5ZjRiZjIyOWZkZGVkYWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCkBAIC0xMzcsOCArMTM3LDkgQEAgdm9pZCBTaGFkb3dSb290Ojpob3N0Q2hpbGRyZW5DaGFu
Z2VkKCkKIHsKICAgICBpZiAoIWhhc0NvbnRlbnRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsK
KwogICAgIC8vIFRoaXMgcmVzdWx0cyBpbiBmb3JjZWQgZGV0YWNoaW5nL2F0dGFjaGluZyBvZiB0
aGUgc2hhZG93IHJlbmRlciB0cmVlLiBTZWUgU2hhZG93Um9vdDo6cmVjYWxjU3R5bGUoKS4KLSAg
ICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgc2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJl
bkFuZFNoYWRvdygpOwogfQogCiBib29sIFNoYWRvd1Jvb3Q6OmlzSW5jbHVzaW9uU2VsZWN0b3JB
Y3RpdmUoKSBjb25zdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRlYTUwY2NiZGRlMDg2M2I0ZTFiNmU4ZWM4ZGYxZjIwZmVj
MGRhY2YuLmViMDNhNTQ2ZjAxNDVkMTZhMmMyOGI0OWQ1OWMwNjNmZDQxNzJmMDcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMCBAQAorMjAxMi0wMS0zMCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29n
bGUuY29tPgorCisgICAgICAgIFN0eWxlUmVjYWxjIHNob3VsZCBvY2N1ciB3aGVuIHNoYWRvdyBy
b290IGV4aXN0cyBhbmQgbGlnaHQgY2hpbGRyZW4gYXJlIGNoYW5nZWQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IEhhamltZSBNb3JpdGEuCisKKyAgICAgICAgVGVzdHMgZm9yIGR5bmFtaWMgY29udGVu
dCBmYWxsYmFjay4KKyAgICAgICAgQWxzbywgdW5uZWNlc3NhcnkgUmVuZGVyVGV4dCBvYmplY3Rz
IGluIHByZXZpb3VzIHRlc3QgZXhwZWN0YXRpb25zIHdlcmUgcmVtb3ZlZC4KKworICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMt
ZmFsbGJhY2stZHluYW1pYy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS13aW4vZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92
ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2h0bWwv
ZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQ6CisKIDIwMTItMDItMDEgIEdhdmlu
IEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIGNhbGxpbmcg
ZnVuY3Rpb24gb24gY2F0Y2ggYmxvY2sgc2NvcGUgY29udGFpbmluZyBhbiBldmFsIHJlc3VsdCBp
biB3cm9uZyB0aGlzIHZhbHVlIGJlaW5nIHBhc3NlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1keW5hbWljLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJh
Y2stZHluYW1pYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk3NGNjMTkwYzY4MDUyNjVkN2Fk
YzliNWMxMjdmZmM1Nzg2YzcyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyNiBAQAordGVzdEFwcGVuZEZhbGxiYWNrCitQQVNTCit0ZXN0QXBwZW5kRmFs
bGJhY2tEZWVwCitQQVNTCit0ZXN0UmVtb3ZlRmFsbGJhY2sKK1BBU1MKK3Rlc3RSZW1vdmVGYWxs
YmFja0RlZXAKK1BBU1MKK3Rlc3RSZW1vdmUxCitQQVNTCit0ZXN0UmVtb3ZlMgorUEFTUwordGVz
dFJlbW92ZTMKK1BBU1MKK3Rlc3RSZXBsYWNlRmFsbGJhY2sKK1BBU1MKK3Rlc3RGYWxsYmFja0Nv
bnRlbnRDaGFuZ2VkCitQQVNTCit0ZXN0Q29tcGxleEFwcGVuZAorUEFTUwordGVzdENvbXBsZXhS
ZW1vdmUKK1BBU1MKK3Rlc3RDb21wbGV4UmVwbGFjZQorUEFTUworVEVTVCBDT01QTEVURUQKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1m
YWxsYmFjay1keW5hbWljLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93
LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzYzMjBkNzdjNDQy
NzZiMzQ4YjQ0MThmYmUzMjkzNDZkMDYxYWYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1keW5hbWljLmh0bWwK
QEAgLTAsMCArMSw0MDEgQEAKKyA8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5
bGU+CisvKiByZWxhdGl2ZSBwb3NpdGlvbmluZyBlbnN1cmVzIHVuZGVybHlpbmcgUmVuZGVyTGF5
ZXIgKi8KKy5jb250YWluZXIgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKworLnNwYW4g
eworICAgIGRpc3BsYXk6IGJveGVkLWlubGluZTsKKyAgICBtYXJnaW46IDJweDsKKyAgICBib3Jk
ZXI6IHNvbGlkOworfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkg
eworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICs9ICht
ZXNzYWdlICsgIlxuIik7Cit9CisKK2Z1bmN0aW9uIHJlbW92ZUFsbENoaWxkcmVuKGVsZW0pIHsK
KyAgICB3aGlsZSAoZWxlbS5maXJzdENoaWxkKQorICAgICAgICBlbGVtLnJlbW92ZUNoaWxkKGVs
ZW0uZmlyc3RDaGlsZCk7Cit9CisKK2Z1bmN0aW9uIGNsZWFuVXAoKSB7CisgICAgcmVtb3ZlQWxs
Q2hpbGRyZW4oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKSk7Cisg
ICAgcmVtb3ZlQWxsQ2hpbGRyZW4oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250
YWluZXInKSk7Cit9CisKK2Z1bmN0aW9uIHJlbW92ZUNvbnRhaW5lckxpbmVzKHRleHQpIHsKKyAg
ICB2YXIgbGluZXMgPSB0ZXh0LnNwbGl0KCdcbicpOworICAgIGxpbmVzLnNwbGljZSgwLCAyKTsK
KyAgICByZXR1cm4gbGluZXMuam9pbignXG4nKTsKK30KKworZnVuY3Rpb24gY2hlY2soKSB7Cisg
ICAgdmFyIHJlZkNvbnRhaW5lclJlbmRlclRyZWUgPSBpbnRlcm5hbHMuZWxlbWVudFJlbmRlclRy
ZWVBc1RleHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKSk7Cisg
ICAgdmFyIHJlZlJlbmRlclRyZWUgPSByZW1vdmVDb250YWluZXJMaW5lcyhyZWZDb250YWluZXJS
ZW5kZXJUcmVlKTsKKworICAgIHZhciB0YXJnZXRDb250YWluZXJSZW5kZXJUcmVlID0gaW50ZXJu
YWxzLmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1
YWwtY29udGFpbmVyJykpOworICAgIHZhciB0YXJnZXRSZW5kZXJUcmVlID0gcmVtb3ZlQ29udGFp
bmVyTGluZXModGFyZ2V0Q29udGFpbmVyUmVuZGVyVHJlZSk7CisKKyAgICBpZiAodGFyZ2V0UmVu
ZGVyVHJlZSA9PSByZWZSZW5kZXJUcmVlKQorICAgICAgICBsb2coIlBBU1MiKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgbG9nKCJGQUlMIik7CisgICAgICAgIGxvZygiRXhwZWN0ZWQ6ICIpOworICAg
ICAgICBsb2cocmVmUmVuZGVyVHJlZSk7CisgICAgICAgIGxvZygiQWN0dWFsOiAiKTsKKyAgICAg
ICAgbG9nKHRhcmdldFJlbmRlclRyZWUpOworICAgIH0KK30KKworZnVuY3Rpb24gY3JlYXRlU3Bh
bldpdGhUZXh0KHRleHQpIHsKKyAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NwYW4nKTsKKyAgICBzcGFuLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRl
eHQpKTsKKyAgICByZXR1cm4gc3BhbjsKK30KKworZnVuY3Rpb24gYXBwZW5kU2hhZG93KHRhcmdl
dCwgc2VsZWN0KSB7CisgICAgdmFyIHJvb3QgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdCh0
YXJnZXQpOworCisgICAgdmFyIGNvbnRlbnQgPSBpbnRlcm5hbHMuY3JlYXRlQ29udGVudEVsZW1l
bnQoZG9jdW1lbnQpOworICAgIGNvbnRlbnQuc2V0QXR0cmlidXRlKCdzZWxlY3QnLCBzZWxlY3Qp
OworICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCJGQUxMQkFDSyIp
KTsKKworICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIntTSEFE
T1c6ICIpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNvbnRlbnQpOworICAgIHJvb3QuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIn0iKSk7Cit9CisKK2Z1bmN0aW9uIGFwcGVu
ZFNoYWRvd0RlZXAodGFyZ2V0LCBzZWxlY3QpIHsKKyAgICB2YXIgcm9vdCA9IGludGVybmFscy5l
bnN1cmVTaGFkb3dSb290KHRhcmdldCk7CisKKyAgICB2YXIgY2hpbGQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CisgICAgeworICAgICAgICB2YXIgY29udGVudCA9IGludGVybmFs
cy5jcmVhdGVDb250ZW50RWxlbWVudChkb2N1bWVudCk7CisgICAgICAgIGNvbnRlbnQuc2V0QXR0
cmlidXRlKCdzZWxlY3QnLCBzZWxlY3QpOworICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgiRkFMTEJBQ0siKSk7CisKKyAgICAgICAgY2hpbGQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIntJTk5FUjogIikpOworICAgICAgICBjaGlsZC5h
cHBlbmRDaGlsZChjb250ZW50KTsKKyAgICAgICAgY2hpbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoIn0iKSk7CisgICAgfQorCisgICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgie1NIQURPVzogIikpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQo
Y2hpbGQpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIn0i
KSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RBcHBlbmRGYWxsYmFjayhjYWxsSWZEb25lKSB7CisgICAg
dmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5p
bm5lckhUTUwgPSAiPHNwYW4+Y29udGVudDwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRh
cmdldCwgIiNhcHBlbmQiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwt
Y29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9u
KHRhcmdldCwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlkPSdhcHBlbmQnPmFwcGVuZGVkPC9z
cGFuPiI7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRh
aW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PntTSEFET1c6IDxzcGFuPmFwcGVuZGVkPC9zcGFuPn08
L2Rpdj4iOworICAgICAgICAgICAgY2FsbElmRG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRh
cmdldCwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlv
biB0ZXN0QXBwZW5kRmFsbGJhY2tEZWVwKGNhbGxJZkRvbmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8
c3Bhbj5jb250ZW50PC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3dEZWVwKHRhcmdldCwgIiNh
cHBlbmQtZGVlcCIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250
YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFy
Z2V0LCBjYWxsSWZEb25lKSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J2FwcGVuZC1kZWVwJz5hcHBlbmRlZDwv
c3Bhbj4iOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250
YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj57U0hBRE9XOiA8c3Bhbj57SU5ORVI6IDxzcGFuPmFw
cGVuZGVkPC9zcGFuPn08L3NwYW4+fTwvZGl2PiI7CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7
CisgICAgICAgIH07CisgICAgfSkodGFyZ2V0LCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVv
dXQoZiwgMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZW1vdmVGYWxsYmFjayhjYWxsSWZEb25lKSB7
CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRh
cmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J3JlbW92ZSc+Y29udGVudDwvc3Bhbj4iOworCisg
ICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiNyZW1vdmUiKTsKKworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKworICAg
IHZhciBmID0gKGZ1bmN0aW9uKHRhcmdldCwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1cm4g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmNvbnRl
bnQ8L3NwYW4+IgorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1j
b250YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj57U0hBRE9XOiA8c3Bhbj5GQUxMQkFDSzwvc3Bh
bj59PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICAgICAgfTsKKyAgICB9
KSh0YXJnZXQsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30KKworZnVu
Y3Rpb24gdGVzdFJlbW92ZUZhbGxiYWNrRGVlcChjYWxsSWZEb25lKSB7CisgICAgdmFyIHRhcmdl
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwg
PSAiPHNwYW4gaWQ9J3JlbW92ZS1kZWVwJz5jb250ZW50PC9zcGFuPiI7CisKKyAgICBhcHBlbmRT
aGFkb3dEZWVwKHRhcmdldCwgIiNyZW1vdmUtZGVlcCIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworCisgICAg
dmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBjYWxsSWZEb25lKSB7CisgICAgICAgIHJldHVybiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+Y29udGVu
dDwvc3Bhbj4iCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNv
bnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PntTSEFET1c6IDxzcGFuPntJTk5FUjogPHNwYW4+
RkFMTEJBQ0s8L3NwYW4+fTwvc3Bhbj59PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRvbmUo
KTsKKyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGlt
ZW91dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFJlbW92ZTEoY2FsbElmRG9uZSkgeworICAg
IHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQu
aW5uZXJIVE1MID0gIjxzcGFuIGlkPSdyZW1vdmUxLTEnPmNvbnRlbnQgMTwvc3Bhbj48c3BhbiBp
ZD0ncmVtb3ZlMS0yJz5jb250ZW50IDI8L3NwYW4+IjsKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0
LCAic3BhbiIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWlu
ZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0
LCBjYWxsSWZEb25lKSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IHRhcmdldC5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVtb3ZlMS0xJykp
OworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXIn
KS5pbm5lckhUTUwgPSAiPGRpdj57U0hBRE9XOiA8c3Bhbj5jb250ZW50IDI8L3NwYW4+fTwvZGl2
PiI7CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgICAgIH07CisgICAgfSkodGFyZ2V0
LCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RSZW1vdmUyKGNhbGxJZkRvbmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3BhbiBpZD0ndGVzdHJl
bW92ZTItMSc+Y29udGVudCAxPC9zcGFuPjxzcGFuIGlkPSd0ZXN0cmVtb3ZlMi0yJz5jb250ZW50
IDI8L3NwYW4+IjsKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbiIpOworCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJn
ZXQpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBjYWxsSWZEb25lKSB7CisgICAg
ICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRhcmdldC5yZW1vdmVDaGlsZChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdHJlbW92ZTItMicpKTsKKyAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxk
aXY+e1NIQURPVzogPHNwYW4+Y29udGVudCAxPC9zcGFuPn08L2Rpdj4iOworICAgICAgICAgICAg
Y2FsbElmRG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgY2FsbElmRG9uZSk7CisK
KyAgICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0UmVtb3ZlMyhjYWxsSWZE
b25lKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J3Rlc3RyZW1vdmUzLTEnPmNvbnRlbnQg
MTwvc3Bhbj48c3BhbiBpZD0ndGVzdHJlbW92ZTMtMic+Y29udGVudCAyPC9zcGFuPiI7CisgICAg
YXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW4iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKworICAgIHZhciBm
ID0gKGZ1bmN0aW9uKHRhcmdldCwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICB0YXJnZXQucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3RyZW1vdmUzLTEnKSk7CisgICAgICAgICAgICB0YXJnZXQucmVtb3ZlQ2hpbGQo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RyZW1vdmUzLTInKSk7CisgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8
ZGl2PntTSEFET1c6IDxzcGFuPkZBTExCQUNLPC9zcGFuPn08L2Rpdj4iOworICAgICAgICAgICAg
Y2FsbElmRG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgY2FsbElmRG9uZSk7CisK
KyAgICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0UmVwbGFjZUZhbGxiYWNr
KGNhbGxJZkRvbmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3BhbiBpZD0ndG8tcmVwbGFjZSc+Y29u
dGVudDwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiN0by1yZXBsYWNlIik7
CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVu
ZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbih0YXJnZXQsIGNhbGxJZkRv
bmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGFyZ2V0Lmlu
bmVySFRNTCA9ICI8c3BhbiBpZD0ndG8tcmVwbGFjZSc+cmVwbGFjZWQ8L3NwYW4+IjsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJI
VE1MID0gIjxkaXY+e1NIQURPVzogPHNwYW4+cmVwbGFjZWQ8L3NwYW4+fTwvZGl2PiI7CisgICAg
ICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgICAgIH07CisgICAgfSkodGFyZ2V0LCBjYWxsSWZE
b25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGYWxsYmFj
a0NvbnRlbnRDaGFuZ2VkKGNhbGxJZkRvbmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250
ZW50PC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI25vbi1lbGVtZW50Iik7
CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVu
ZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbih0YXJnZXQsIGNhbGxJZkRv
bmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGFyZ2V0LmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnYXBwZW5kZWQgY29udGVudCcpKTsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJI
VE1MID0gIjxkaXY+e1NIQURPVzogPHNwYW4+RkFMTEJBQ0s8L3NwYW4+fTwvZGl2PiI7CisgICAg
ICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgICAgIH07CisgICAgfSkodGFyZ2V0LCBjYWxsSWZE
b25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDb21wbGV4
QXBwZW5kKGNhbGxJZkRvbmUpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgJyNjb21wbGV4LTEnKTsKKwor
ICAgIHZhciBzZWxlY3RDb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwor
ICAgIHNlbGVjdENvbnRlbnQuc2V0QXR0cmlidXRlKCdpZCcsICdjb21wbGV4LTEnKTsKKyAgICBh
cHBlbmRTaGFkb3coc2VsZWN0Q29udGVudCwgJ3NwYW4nKTsKKworICAgIHRhcmdldC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnW1dPTlQgU0VMRUNURURdJykpOworICAgIHRh
cmdldC5hcHBlbmRDaGlsZChzZWxlY3RDb250ZW50KTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1tXT05UIFNFTEVDVEVEXScpKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0
KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHRhcmdldCwgc2VsZWN0Q29udGVudCwgY2FsbElm
RG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzZWxlY3RD
b250ZW50LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0VMRUNURUQnKSk7CisgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVy
SFRNTCA9CisgICAgICAgICAgICAgICAgIjxkaXY+e1NIQURPVzogPHNwYW4+e1NIQURPVzogPHNw
YW4+U0VMRUNURUQ8L3NwYW4+fTwvc3Bhbj59PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJZkRv
bmUoKTsKKyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIHNlbGVjdENvbnRlbnQsIGNhbGxJZkRv
bmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdENvbXBsZXhS
ZW1vdmUoY2FsbElmRG9uZSkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAnI2NvbXBsZXgtMicpOworCisg
ICAgdmFyIHNlbGVjdENvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7Cisg
ICAgc2VsZWN0Q29udGVudC5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2NvbXBsZXgtMicpOworICAgIHsK
KyAgICAgICAgc2VsZWN0Q29udGVudC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1NF
TEVDVEVEJykpOworICAgIH0KKyAgICBhcHBlbmRTaGFkb3coc2VsZWN0Q29udGVudCwgJ3NwYW4n
KTsKKworICAgIHRhcmdldC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnW1dP
TlQgU0VMRUNURURdJykpOworICAgIHRhcmdldC5hcHBlbmRDaGlsZChzZWxlY3RDb250ZW50KTsK
KyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1tXT05UIFNF
TEVDVEVEXScpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFp
bmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHRhcmdl
dCwgc2VsZWN0Q29udGVudCwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICByZW1vdmVBbGxDaGlsZHJlbihzZWxlY3RDb250ZW50KTsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJI
VE1MID0KKyAgICAgICAgICAgICAgICAiPGRpdj57U0hBRE9XOiA8c3Bhbj57U0hBRE9XOiA8c3Bh
bj5GQUxMQkFDSzwvc3Bhbj59PC9zcGFuPn08L2Rpdj4iOworICAgICAgICAgICAgY2FsbElmRG9u
ZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgc2VsZWN0Q29udGVudCwgY2FsbElmRG9u
ZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0Q29tcGxleFJl
cGxhY2UoY2FsbElmRG9uZSkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAnI2NvbXBsZXgtMycpOworCisg
ICAgdmFyIHNlbGVjdENvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7Cisg
ICAgc2VsZWN0Q29udGVudC5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2NvbXBsZXgtMycpOworICAgIHsK
KyAgICB9CisgICAgYXBwZW5kU2hhZG93KHNlbGVjdENvbnRlbnQsICdzcGFuJyk7CisKKyAgICB0
YXJnZXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1tXT05UIFNFTEVDVEVE
XScpKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoc2VsZWN0Q29udGVudCk7CisgICAgdGFyZ2V0
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdbV09OVCBTRUxFQ1RFRF0nKSk7
CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVu
ZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbih0YXJnZXQsIHNlbGVjdENv
bnRlbnQsIGNhbGxJZkRvbmUpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oc2VsZWN0Q29udGVudCk7CisgICAgICAgICAgICBzZWxl
Y3RDb250ZW50LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnUkVQTEFDRUQnKSk7Cisg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICAgICAgICAgIjxkaXY+e1NIQURPVzogPHNwYW4+e1NIQURPVzog
PHNwYW4+UkVQTEFDRUQ8L3NwYW4+fTwvc3Bhbj59PC9kaXY+IjsKKyAgICAgICAgICAgIGNhbGxJ
ZkRvbmUoKTsKKyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIHNlbGVjdENvbnRlbnQsIGNhbGxJ
ZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30KKwordmFyIHRlc3RGdW5jcyA9IFsK
KyAgICB0ZXN0QXBwZW5kRmFsbGJhY2ssCisgICAgdGVzdEFwcGVuZEZhbGxiYWNrRGVlcCwKKyAg
ICB0ZXN0UmVtb3ZlRmFsbGJhY2ssCisgICAgdGVzdFJlbW92ZUZhbGxiYWNrRGVlcCwKKyAgICB0
ZXN0UmVtb3ZlMSwKKyAgICB0ZXN0UmVtb3ZlMiwKKyAgICB0ZXN0UmVtb3ZlMywKKyAgICB0ZXN0
UmVwbGFjZUZhbGxiYWNrLAorICAgIHRlc3RGYWxsYmFja0NvbnRlbnRDaGFuZ2VkLAorICAgIHRl
c3RDb21wbGV4QXBwZW5kLAorICAgIHRlc3RDb21wbGV4UmVtb3ZlLAorICAgIHRlc3RDb21wbGV4
UmVwbGFjZSwKKworXTsKKworZnVuY3Rpb24gZG9UZXN0SWZMZWZ0KCkgeworICAgIHZhciB0ZXN0
ID0gdGVzdEZ1bmNzLnNoaWZ0KCk7CisgICAgaWYgKHRlc3QgPT0gbnVsbCkKKyAgICAgICAgcmV0
dXJuIGRvbmVUZXN0KCk7CisKKyAgICB2YXIgY2FsbElmRG9uZSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY2hlY2soKTsKKyAgICAg
ICAgICAgIGNsZWFuVXAoKTsKKyAgICAgICAgICAgIGRvVGVzdElmTGVmdCgpOworICAgICAgICB9
LCAwKTsKKyAgICB9OworCisgICAgbG9nKHRlc3QubmFtZSk7CisgICAgdGVzdChjYWxsSWZEb25l
KTsKK30KKworZnVuY3Rpb24gZG9uZVRlc3QoKSB7CisgICAgbG9nKCJURVNUIENPTVBMRVRFRCIp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24g
ZG9UZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgfQorCisgICAgY2xlYW5VcCgpOworICAg
IGRvVGVzdElmTGVmdCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImRv
VGVzdCgpIj4KKworPGRpdiBpZD0iYWN0dWFsLWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+
PC9kaXY+Cis8ZGl2IGlkPSJleHBlY3QtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rp
dj4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9odG1sL2RldGFpbHMt
cmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0td2luL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dAppbmRl
eCA4OTJjNmE2ZGQ5MTlkM2FlMTNjMmRhZDQ0MmY5MTYxOTZjY2Q4YWIwLi5lNzkzYjU2ZDNjOTk3
ODVkNDQ5OGIxNmRjY2Y0ODFmNjM4M2ZkZTU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2h0bWwv
ZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQKQEAgLTksNiArOSw1IEBAIGxheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MTYsMCkgc2l6ZSA1NHgxOQogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE2LDApIHdpZHRoIDU0
OiAic3VtbWFyeSIKICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMjApIHNp
emUgNzg0eDIwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgw
CiAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTUweDE5CiAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNTA6ICJzaG91bGQgaGF2ZSBubyBib2xk
IHRlc3QuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaHRtbC9k
ZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9mYXN0L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQKaW5kZXgg
ZGRhOTNiZTk4ZTRjNjY4MGViZjliYWJiMjc2NzNkZmYyMjZkNjg1NC4uOWMyZWI2ODE5OTg1Njhj
YjU1YmZlYTdiNzA2ZmUyODFlMmM0NjlmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxk
LTItZXhwZWN0ZWQudHh0CkBAIC05LDYgKzksNSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE2LDApIHNpemUgNjB4MTcKICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgxNiwwKSB3aWR0aCA2MDogInN1bW1hcnkiCiAgICAgICAg
IFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDE4KSBzaXplIDc4NHgxOAotICAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2MHgxNwogICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMTYwOiAic2hvdWxkIGhhdmUgbm8gYm9sZCB0ZXN0LiIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQt
Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFp
bHMtcmVtb3ZlLWNoaWxkLTItZXhwZWN0ZWQudHh0CmluZGV4IGIxMDI5NmE1ZWNiNzVjMDBjNDQz
OGUzYjdjN2M4NWVjNGNmZjU0NDAuLjFkNDA2YWNlMGVkMTJiOWI4YjdiNzk5OTYxMjgyNjVhNzJm
ZGQ1YjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2h0bWwvZGV0
YWlscy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dApAQCAt
OSw2ICs5LDUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgxNiwwKSBzaXplIDU4eDE4CiAgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMTYsMCkgd2lkdGggNTg6ICJzdW1tYXJ5IgogICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnlt
b3VzKSBhdCAoMCwxOCkgc2l6ZSA3ODR4MTgKLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSAweDAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAxNTd4MTgKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE1NzogInNo
b3VsZCBoYXZlIG5vIGJvbGQgdGVzdC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9mYXN0L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2h0bWwvZGV0YWlscy1yZW1vdmUtY2hpbGQtMi1leHBl
Y3RlZC50eHQKaW5kZXggODU5MTdhN2MxZjI2YjYwNGRjZDlhZjAxYjY3NDk5NGMxNjlkNzE1MC4u
ZDNiNGI4MDczMzljYjM3NzAyNjc2ZThkNGYyZWQ0ZWNiM2EzMWE4NyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLWNoaWxkLTItZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvaHRtbC9kZXRhaWxz
LXJlbW92ZS1jaGlsZC0yLWV4cGVjdGVkLnR4dApAQCAtOSw2ICs5LDUgQEAgbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNiwwKSBz
aXplIDY1eDIxCiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTYsMCkgd2lkdGggNjU6ICJzdW1t
YXJ5IgogICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwyMSkgc2l6ZSA3ODR4
MjEKLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKICAgICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNzd4MjEKICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE3NzogInNob3VsZCBoYXZlIG5vIGJvbGQgdGVzdC4i
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>