<?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>98567</bug_id>
          
          <creation_ts>2012-10-05 15:42:03 -0700</creation_ts>
          <short_desc>[V8] toV8(Node*, ...) does more work than needed (6% faster on dom-traverse)</short_desc>
          <delta_ts>2012-10-07 23:52:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>736050</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-05 15:42:03 -0700</bug_when>
    <thetext>[V8] toV8(Node*, ...) does more work than needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736051</commentid>
    <comment_count>1</comment_count>
      <attachid>167399</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-05 15:42:21 -0700</bug_when>
    <thetext>Created attachment 167399
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736061</commentid>
    <comment_count>2</comment_count>
      <attachid>167404</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-05 15:52:55 -0700</bug_when>
    <thetext>Created attachment 167404
dom-traverse results (6% better; first 3 runs are with patch, last 3 are without)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736068</commentid>
    <comment_count>3</comment_count>
      <attachid>167405</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-05 16:08:38 -0700</bug_when>
    <thetext>Created attachment 167405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736069</commentid>
    <comment_count>4</comment_count>
      <attachid>167406</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-05 16:09:45 -0700</bug_when>
    <thetext>Created attachment 167406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736115</commentid>
    <comment_count>5</comment_count>
      <attachid>167406</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-05 17:25:37 -0700</bug_when>
    <thetext>Comment on attachment 167406
Patch

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

Awesome!

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:534
&gt; +    if (holder-&gt;wrapper() &amp;&amp; *holder-&gt;wrapper() == holderWrapper &amp;&amp; node-&gt;wrapper())

This looks a bit hacky. Shall we add a comment on this?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:535
&gt; +        return *node-&gt;wrapper();

Maybe you can now remove the logic to check node-&gt;wrapper() from V8DOMWrapper::getCachedWrapper()? (You can do it in a follow-up patch.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736139</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-05 18:13:21 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:534
&gt; &gt; +    if (holder-&gt;wrapper() &amp;&amp; *holder-&gt;wrapper() == holderWrapper &amp;&amp; node-&gt;wrapper())
&gt; 
&gt; This looks a bit hacky. Shall we add a comment on this?

Add a comment is a good idea.  It&apos;s a subtle trick.

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:535
&gt; &gt; +        return *node-&gt;wrapper();
&gt; 
&gt; Maybe you can now remove the logic to check node-&gt;wrapper() from V8DOMWrapper::getCachedWrapper()? (You can do it in a follow-up patch.)

We can once we move all callers over to toV8Fast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736153</commentid>
    <comment_count>7</comment_count>
      <attachid>167433</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-05 18:34:44 -0700</bug_when>
    <thetext>Created attachment 167433
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736165</commentid>
    <comment_count>8</comment_count>
      <attachid>167433</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-05 19:08:42 -0700</bug_when>
    <thetext>Comment on attachment 167433
Patch for landing

Clearing flags on attachment: 167433

Committed r130574: &lt;http://trac.webkit.org/changeset/130574&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736166</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-05 19:08:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736530</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-07 23:52:00 -0700</bug_when>
    <thetext>Pretty pictures:

http://webkit-perf.appspot.com/graph.html#tests=[[40020,2001,2389050],[40020,2001,3001],[40020,2001,173262]]&amp;sel=1349364561286.2532,1349668601792.5823,1351.3513513513512,1891.8918918918919&amp;displayrange=7&amp;datatype=running</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167399</attachid>
            <date>2012-10-05 15:42:21 -0700</date>
            <delta_ts>2012-10-05 16:08:10 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-98567-20121005154141.patch</filename>
            <type>text/plain</type>
            <size>3373</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFiMTBiOTg4MGFjMjQz
NDE1YzRiY2Q4YjZlYjgwYjhhMTIwYjIxOC4uNmQ0MWY2ODgxY2I1M2FjMDg5NWQ4YzdhYTg3M2I3
N2Q5ODVhMGYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEwLTA1ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSB0b1Y4KE5vZGUqLCAu
Li4pIGRvZXMgbW9yZSB3b3JrIHRoYW4gbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5n
ZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRl
c2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEp
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAg
ICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIp
OgorCiAyMDEyLTEwLTA0ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvciBkb2VzIG5vdCBuZWVkIHRvIGNvcHkgUXVhbGlm
aWVkTmFtZSBpbiB0aGUgY29tbW9uIGNhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNTUxMjU4YzFlNmFmODY0NmYzOThm
ODBiYzEwOTkzMmI2YzMwMjBmMy4uMWY3OTE2NzViYjdiNGMzZjE5ZjFhNjViZDQzOTYwNzUxY2Ji
MzMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KQEAgLTUyNSw2ICs1MjUsMTYgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4KE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db24K
ICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIHRvVjhTbG93KGltcGwsIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CisKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOEZhc3QoTm9kZSogbm9kZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbywgTm9kZSog
aG9sZGVyKQoreworICAgIGlmIChVTkxJS0VMWSghbm9kZSkpCisgICAgICAgIHJldHVybiB2ODo6
TnVsbChpbmZvLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXJXcmFwcGVyID0gaW5mby5Ib2xkZXIoKTsKKyAgICBpZiAoaG9sZGVyLT53cmFwcGVyKCkgJiYg
KmhvbGRlci0+d3JhcHBlcigpID09IGhvbGRlcldyYXBwZXIgJiYgbm9kZS0+d3JhcHBlcigpKQor
ICAgICAgICByZXR1cm4gKm5vZGUtPndyYXBwZXIoKTsKKyAgICByZXR1cm4gdG9WOFNsb3cobm9k
ZSwgaG9sZGVyV3JhcHBlciwgaW5mby5HZXRJc29sYXRlKCkpOworfQogRU5ECiAgICAgfQogCkBA
IC0xMDYyLDE4ICsxMDcyLDE5IEBAIEVORAogICAgICAgICBwb3J0QXJyYXktPlNldCh2OEludGVn
ZXIoaSwgaW5mby5HZXRJc29sYXRlKCkpLCB0b1Y4KHBvcnRzQ29weVtpXS5nZXQoKSwgaW5mby5I
b2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpKTsKICAgICByZXR1cm4gcG9ydEFycmF5OwogRU5E
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBl
cSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIiAmJiAkYXR0ckV4dC0+eyJDYWNoZWRBdHRyaWJ1dGUi
fSkgewotICAgICAgICAgICAgbXkgJGdldHRlckZ1bmMgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNm
aXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOwotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgPDxFTkQpOworICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+dHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIiAmJiAkYXR0ckV4dC0+eyJDYWNoZWRB
dHRyaWJ1dGUifSkgeworICAgICAgICBteSAkZ2V0dGVyRnVuYyA9ICRjb2RlR2VuZXJhdG9yLT5X
S19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsIDw8RU5EKTsKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlh
bGl6ZWQgPSBpbXAtPiR7Z2V0dGVyRnVuY30oKTsKICAgICB2YWx1ZSA9IHNlcmlhbGl6ZWQgPyBz
ZXJpYWxpemVkLT5kZXNlcmlhbGl6ZSgpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4OjpOdWxs
KGluZm8uR2V0SXNvbGF0ZSgpKSk7CiAgICAgaW5mby5Ib2xkZXIoKS0+U2V0SGlkZGVuVmFsdWUo
cHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHZhbHVlOwogRU5ECi0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICIgLiBSZXR1
cm5OYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkcmVzdWx0LCAiaW5mby5I
b2xkZXIoKSIsICJpbmZvLkdldElzb2xhdGUoKSIpLiI7XG4iKTsKLSAgICAgICAgfQorICAgIH0g
ZWxzaWYgKElzRE9NTm9kZVR5cGUoR2V0VHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlKSkgJiYgJGltcGxDbGFzc05hbWUgZXEgIk5vZGUiKSB7CisgICAgICAgICMgRklYTUU6
IFdlIHdvdWxkIGxpa2UgdG8gdXNlIHRvVjhGYXN0IGluIG1vcmUgc2l0dWF0aW9ucy4KKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gdG9WOEZhc3QoJHJlc3VsdCwg
aW5mbywgaW1wKTtcbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgIiAuIFJldHVybk5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1
cmUsICRyZXN1bHQsICJpbmZvLkhvbGRlcigpIiwgImluZm8uR2V0SXNvbGF0ZSgpIikuIjtcbiIp
OwogICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICJ9XG5cbiIpOyAgIyBlbmQg
b2YgZ2V0dGVyCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>167404</attachid>
            <date>2012-10-05 15:52:55 -0700</date>
            <delta_ts>2012-10-05 15:52:55 -0700</delta_ts>
            <desc>dom-traverse results (6% better; first 3 runs are with patch, last 3 are without)</desc>
            <filename>PerformanceTestsResults.html</filename>
            <type>text/html</type>
            <size>22144</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c2NyaXB0IHNyYz0iL1VzZXJzL2FiYXJ0aC9naXQvYWJhcnRo
LXdlYmtpdC9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2VzL2Ryb21hZW8vd2ViL2xp
Yi9qcXVlcnktMS42LjQuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2Vz
L2Ryb21hZW8vd2ViL2xpYi9qcXVlcnktMS42LjQuanM/Zm9ybWF0PXR4dCI+PC9zY3JpcHQ+Cjxz
Y3JpcHQgc3JjPSIvVXNlcnMvYWJhcnRoL2dpdC9hYmFydGgtd2Via2l0L1BlcmZvcm1hbmNlVGVz
dHMvcmVzb3VyY2VzL2pxdWVyeS5mbG90Lm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvcmVz
b3VyY2VzL2pxdWVyeS5mbG90Lm1pbi5qcz9mb3JtYXQ9dHh0Ij48L3NjcmlwdD4KPHNjcmlwdCBz
cmM9Ii9Vc2Vycy9hYmFydGgvZ2l0L2FiYXJ0aC13ZWJraXQvUGVyZm9ybWFuY2VUZXN0cy9yZXNv
dXJjZXMvanF1ZXJ5LnRhYmxlc29ydGVyLm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvcmVz
b3VyY2VzL2pxdWVyeS50YWJsZXNvcnRlci5taW4uanM/Zm9ybWF0PXR4dCI+PC9zY3JpcHQ+Cjxz
Y3JpcHQgaWQ9Impzb24iIHR5cGU9ImFwcGxpY2F0aW9uL2pzb24iPlt7InRpbWVzdGFtcCI6IDEz
NDk0NzY5OTAsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTMwNDU3IiwgInJlc3VsdHMiOiB7IkRyb21h
ZW8vZG9tLXRyYXZlcnNlOkpTSGVhcCI6IHsibWluIjogNDY1MTA0MC4wLCAibWF4IjogNDY1MTA0
MC4wLCAibWVkaWFuIjogNDY1MTA0MC4wLCAidmFsdWVzIjogWzQ2NTEwNDAuMF0sICJzdGRldiI6
IDAuMCwgImF2ZyI6IDQ2NTEwNDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vZG9tLXRy
YXZlcnNlOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAi
dmFsdWVzIjogWzAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMi
fSwgIkRyb21hZW8vZG9tLXRyYXZlcnNlIjogeyJtaW4iOiAyNTM5LjYyMjAxODY5OTg2MywgIm1h
eCI6IDI1NjMuOTYxNjg5MDA5NTkzLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiA0LjU4MTkwNjYz
NDI2OTEyOSwgImF2ZyI6IDI1NTIuMjEzMTI5Mzg1NTg0LCAidW5pdCI6ICJydW5zL3MifX0sICJw
bGF0Zm9ybSI6ICJjaHJvbWl1bSIsICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgImNocm9taXVt
LXJldmlzaW9uIjogIjE2MDI4MSJ9LCB7InRpbWVzdGFtcCI6IDEzNDk0NzcwMjMsICJ3ZWJraXQt
cmV2aXNpb24iOiAiMTMwNDU3IiwgInJlc3VsdHMiOiB7IkRyb21hZW8vZG9tLXRyYXZlcnNlOkpT
SGVhcCI6IHsibWluIjogNDYzOTA0MC4wLCAibWF4IjogNDYzOTA0MC4wLCAibWVkaWFuIjogNDYz
OTA0MC4wLCAidmFsdWVzIjogWzQ2MzkwNDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDQ2Mzkw
NDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vZG9tLXRyYXZlcnNlOk1hbGxvYyI6IHsi
bWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMF0sICJz
dGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vZG9tLXRy
YXZlcnNlIjogeyJtaW4iOiAyNTAzLjY1Njk3OTc0NjgsICJtYXgiOiAyNTMwLjY4MDMxOTY4MDMy
LCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiA2LjMzMzIzNTg3ODMwMTI1MTUsICJhdmciOiAyNTE4
LjI5MjQ0MTY5MDA0NjQsICJ1bml0IjogInJ1bnMvcyJ9fSwgInBsYXRmb3JtIjogImNocm9taXVt
IiwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsiLCAiY2hyb21pdW0tcmV2aXNpb24iOiAiMTYwMjgx
In0sIHsidGltZXN0YW1wIjogMTM0OTQ3NzA1NiwgIndlYmtpdC1yZXZpc2lvbiI6ICIxMzA0NTci
LCAicmVzdWx0cyI6IHsiRHJvbWFlby9kb20tdHJhdmVyc2U6SlNIZWFwIjogeyJtaW4iOiA0NjI0
MTMyLjAsICJtYXgiOiA0NjI0MTMyLjAsICJtZWRpYW4iOiA0NjI0MTMyLjAsICJ2YWx1ZXMiOiBb
NDYyNDEzMi4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjogNDYyNDEzMi4wLCAidW5pdCI6ICJieXRl
cyJ9LCAiRHJvbWFlby9kb20tdHJhdmVyc2U6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAw
LjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjog
MC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9kb20tdHJhdmVyc2UiOiB7Im1pbiI6IDI0
MTcuNjkyOTM1ODA2NzA4NiwgIm1heCI6IDI0ODEuNjQ0NTk2OTIwMDQ2LCAibWVkaWFuIjogMC4w
LCAic3RkZXYiOiAxOS4zNDE4MTQzODAyNTgxNzUsICJhdmciOiAyNDYzLjIyMDM1NjEyNzE5Nywg
InVuaXQiOiAicnVucy9zIn19LCAicGxhdGZvcm0iOiAiY2hyb21pdW0iLCAiYnJhbmNoIjogIndl
YmtpdC10cnVuayIsICJjaHJvbWl1bS1yZXZpc2lvbiI6ICIxNjAyODEifSwgeyJ0aW1lc3RhbXAi
OiAxMzQ5NDc3MjU4LCAid2Via2l0LXJldmlzaW9uIjogIjEzMDQ1NyIsICJyZXN1bHRzIjogeyJE
cm9tYWVvL2RvbS10cmF2ZXJzZTpKU0hlYXAiOiB7Im1pbiI6IDQ1OTg3NTYuMCwgIm1heCI6IDQ1
OTg3NTYuMCwgIm1lZGlhbiI6IDQ1OTg3NTYuMCwgInZhbHVlcyI6IFs0NTk4NzU2LjBdLCAic3Rk
ZXYiOiAwLjAsICJhdmciOiA0NTk4NzU2LjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2Rv
bS10cmF2ZXJzZTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAu
MCwgInZhbHVlcyI6IFswLjBdLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5
dGVzIn0sICJEcm9tYWVvL2RvbS10cmF2ZXJzZSI6IHsibWluIjogMjM2NC4zMjA0MjQwODY4OTEs
ICJtYXgiOiAyMzg1LjI0OTUwMjk5MjAxOCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogNC4yNjgz
Mzk0MTMxOTI4MjMsICJhdmciOiAyMzcyLjg4MjAxMTQwMTc3MTcsICJ1bml0IjogInJ1bnMvcyJ9
fSwgInBsYXRmb3JtIjogImNocm9taXVtIiwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsiLCAiY2hy
b21pdW0tcmV2aXNpb24iOiAiMTYwMjgxIn0sIHsidGltZXN0YW1wIjogMTM0OTQ3NzI5MywgIndl
YmtpdC1yZXZpc2lvbiI6ICIxMzA0NTciLCAicmVzdWx0cyI6IHsiRHJvbWFlby9kb20tdHJhdmVy
c2U6SlNIZWFwIjogeyJtaW4iOiA0NjAxOTMyLjAsICJtYXgiOiA0NjAxOTMyLjAsICJtZWRpYW4i
OiA0NjAxOTMyLjAsICJ2YWx1ZXMiOiBbNDYwMTkzMi4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjog
NDYwMTkzMi4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9kb20tdHJhdmVyc2U6TWFsbG9j
IjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4w
XSwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9k
b20tdHJhdmVyc2UiOiB7Im1pbiI6IDIzNzIuMjIxMjQxODMyMDIsICJtYXgiOiAyMzk2LjMwMTQz
MTEwMzgyNjQsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDQuODY2MDE3MzMxNzcwMDQ4LCAiYXZn
IjogMjM4Mi40MzA5NTM4NzY0NjMsICJ1bml0IjogInJ1bnMvcyJ9fSwgInBsYXRmb3JtIjogImNo
cm9taXVtIiwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsiLCAiY2hyb21pdW0tcmV2aXNpb24iOiAi
MTYwMjgxIn0sIHsidGltZXN0YW1wIjogMTM0OTQ3NzM3MywgIndlYmtpdC1yZXZpc2lvbiI6ICIx
MzA0NTciLCAicmVzdWx0cyI6IHsiRHJvbWFlby9kb20tdHJhdmVyc2U6SlNIZWFwIjogeyJtaW4i
OiA0NTkwNDA4LjAsICJtYXgiOiA0NTkwNDA4LjAsICJtZWRpYW4iOiA0NTkwNDA4LjAsICJ2YWx1
ZXMiOiBbNDU5MDQwOC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjogNDU5MDQwOC4wLCAidW5pdCI6
ICJieXRlcyJ9LCAiRHJvbWFlby9kb20tdHJhdmVyc2U6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJt
YXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1ZXMiOiBbMC4wXSwgInN0ZGV2IjogMC4wLCAi
YXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9kb20tdHJhdmVyc2UiOiB7Im1p
biI6IDIzNDUuNjkxMzA4NjkxMzA4NywgIm1heCI6IDIzNzMuOTkyMDA3OTkyMDA4NCwgIm1lZGlh
biI6IDAuMCwgInN0ZGV2IjogNy4xMDE4NDQyMjU0OTg1ODMsICJhdmciOiAyMzU3LjQ3MjgxMzAx
NTMyOCwgInVuaXQiOiAicnVucy9zIn19LCAicGxhdGZvcm0iOiAiY2hyb21pdW0iLCAiYnJhbmNo
IjogIndlYmtpdC10cnVuayIsICJjaHJvbWl1bS1yZXZpc2lvbiI6ICIxNjAyODEifV08L3Njcmlw
dD4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCnNlY3Rpb24gewogICAgYmFja2dyb3VuZDogd2hp
dGU7CiAgICBwYWRkaW5nOiAxMHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoudGltZS1w
bG90cyB7CiAgICBwYWRkaW5nLWxlZnQ6IDI1cHg7Cn0KCi50aW1lLXBsb3RzID4gZGl2IHsKICAg
IGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiA5MHB4OwogICAgaGVpZ2h0OiA0MHB4
OwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4Owp9CgpzZWN0aW9uIGgxIHsKICAgIHRleHQtYWxpZ246
IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMWVtOwp9CgpzZWN0aW9uIC50b29sdGlwIHsKICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJhY2tncm91bmQ6
ICNmZmNjNjY7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBwYWRkaW5nOiAwcHggNXB4Owp9
Cgpib2R5IHsKICAgIHBhZGRpbmc6IDBweDsKICAgIG1hcmdpbjogMHB4OwogICAgZm9udC1mYW1p
bHk6IHNhbnMtc2VyaWY7Cn0KCnRhYmxlIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgd2lk
dGg6IDEwMCU7Cn0KCnRhYmxlLCB0ZCwgdGggewogICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBz
ZTsKICAgIHBhZGRpbmc6IDVweDsKfQoKdHIuZXZlbiB7CiAgICBiYWNrZ3JvdW5kOiAjZjZmNmY2
Owp9Cgp0YWJsZSB0ZCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBmb250LWZhbWlseTog
bW9ub3NwYWNlOwp9Cgp0aCwgdGQgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwp9Cgp0aCB7CiAgICBiYWNrZ3JvdW5kOiAjZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdl
YmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjQ0
LCAyNDQsIDI0NCkpLCB0byhyZ2IoMjE3LCAyMTcsIDIxNykpKTsKICAgIGJvcmRlcjogMXB4IHNv
bGlkICNjY2M7Cn0KCnRoOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcgXDI1QjgnOwp9Cgp0aC5oZWFk
ZXJTb3J0VXA6YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCRSc7Cn0KCnRoLmhlYWRlclNvcnRE
b3duOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcgXDI1QjQnOwp9Cgp0ZC5jb21wYXJpc29uLCB0ZC5y
ZXN1bHQgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCnRkLmJldHRlciB7CiAgICBjb2xvcjog
IzZjNjsKfQoKdGQud29yc2UgewogICAgY29sb3I6ICNjNjY7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8c2NyaXB0PgoKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkgewogICAgJCgnLmNo
ZWNrYm94JykuZWFjaChmdW5jdGlvbiAoaW5kZXgsIGNoZWNrYm94KSB7CiAgICAgICAgJChjaGVj
a2JveCkuY2hpbGRyZW4oJ3NwYW4nKS5jbGljayhmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICAg
ICAgaWYgKCQodGhpcykuaGFzQ2xhc3MoJ2NoZWNrZWQnKSkKICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgJChjaGVja2JveCkuY2hpbGRyZW4oJ3NwYW4nKS5yZW1vdmVDbGFzcygn
Y2hlY2tlZCcpOwogICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdjaGVja2VkJyk7CiAgICAg
ICAgICAgICQoY2hlY2tib3gpLnRyaWdnZXIoJ2NoYW5nZScsICQodGhpcykpOwogICAgICAgIH0p
OwogICAgfSk7Cn0pCgo8L3NjcmlwdD4KPHRhYmxlIGlkPSJjb250YWluZXIiPjwvdGFibGU+Cjxz
Y3JpcHQ+CgpmdW5jdGlvbiBUZXN0UmVzdWx0KGFzc29jaWF0ZWRUZXN0LCByZXN1bHQsIGFzc29j
aWF0ZWRSdW4pIHsKICAgIHRoaXMudW5pdCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc3VsdC51
bml0OyB9CiAgICB0aGlzLnRlc3QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3NvY2lhdGVkVGVz
dDsgfQogICAgdGhpcy52YWx1ZXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXN1bHQudmFsdWVz
ID8gcmVzdWx0LnZhbHVlcy5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBhc3NvY2lhdGVk
VGVzdC5zY2FsaW5nRmFjdG9yKCkgKiB2YWx1ZTsgfSkgOiB1bmRlZmluZWQ7IH0KICAgIHRoaXMu
dW5zY2FsZWRNZWFuID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVzdWx0LmF2ZzsgfQogICAgdGhp
cy5tZWFuID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNzb2NpYXRlZFRlc3Quc2NhbGluZ0ZhY3Rv
cigpICogcmVzdWx0LmF2ZzsgfQogICAgdGhpcy5taW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBh
c3NvY2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiByZXN1bHQubWluOyB9CiAgICB0aGlzLm1h
eCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAq
IHJlc3VsdC5tYXg7IH0KICAgIHRoaXMuc3RkZXYgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3Nv
Y2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiByZXN1bHQuc3RkZXY7IH0KICAgIHRoaXMuc3Rk
ZXZSYXRpbyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc3VsdC5zdGRldiAvIHJlc3VsdC5hdmc7
IH0KICAgIHRoaXMucGVyY2VudERpZmZlcmVuY2UgPSBmdW5jdGlvbihvdGhlcikgeyByZXR1cm4g
KG90aGVyLm1lYW4oKSAtIHRoaXMubWVhbigpKSAvIHRoaXMubWVhbigpOyB9CiAgICB0aGlzLmlz
U3RhdGlzdGljYWxseVNpZ25pZmljYW50ID0gZnVuY3Rpb24gKG90aGVyKSB7CiAgICAgICAgdmFy
IGRpZmYgPSBNYXRoLmFicyhvdGhlci5tZWFuKCkgLSB0aGlzLm1lYW4oKSk7CiAgICAgICAgcmV0
dXJuIGRpZmYgPiB0aGlzLnN0ZGV2KCkgJiYgZGlmZiA+IG90aGVyLnN0ZGV2KCk7CiAgICB9CiAg
ICB0aGlzLnJ1biA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRSdW47IH0KfQoKZnVu
Y3Rpb24gVGVzdFJ1bihlbnRyeSkgewogICAgdGhpcy5kZXNjcmlwdGlvbiA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIGVudHJ5WydkZXNjcmlwdGlvbiddOyB9CiAgICB0aGlzLndlYmtpdFJldmlzaW9u
ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ3dlYmtpdC1yZXZpc2lvbiddOyB9CiAgICB0
aGlzLmxhYmVsID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsYWJlbCA9ICdyJyArIHRoaXMu
d2Via2l0UmV2aXNpb24oKTsKICAgICAgICBpZiAodGhpcy5kZXNjcmlwdGlvbigpKQogICAgICAg
ICAgICBsYWJlbCArPSAnICZkYXNoOyAnICsgdGhpcy5kZXNjcmlwdGlvbigpOwogICAgICAgIHJl
dHVybiBsYWJlbDsKICAgIH0KfQoKZnVuY3Rpb24gUGVyZlRlc3QobmFtZSkgewogICAgdmFyIHRl
c3RSZXN1bHRzID0gW107CiAgICB2YXIgY2FjaGVkVW5pdCA9IG51bGw7CiAgICB2YXIgY2FjaGVk
U2NhbGluZ0ZhY3RvciA9IG51bGw7CgogICAgLy8gV2UgY2FuJ3QgZG8gdGhpcyBpbiBUZXN0UmVz
dWx0IGJlY2F1c2UgYWxsIHJlc3VsdHMgZm9yIGVhY2ggdGVzdCBuZWVkIHRvIHNoYXJlIHRoZSBz
YW1lIHVuaXQgYW5kIHRoZSBzYW1lIHNjYWxpbmcgZmFjdG9yLgogICAgZnVuY3Rpb24gY29tcHV0
ZVNjYWxpbmdGYWN0b3JJZk5lZWRlZCgpIHsKICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0
IGJlIGFkanVzdGluZyB1bml0cyBvbiBldmVyeSB0ZXN0IHJlc3VsdC4KICAgICAgICAvLyBXZSBj
YW4gb25seSBkbyB0aGlzIG9uIHRoZSBmaXJzdCB0ZXN0LgogICAgICAgIGlmICghdGVzdFJlc3Vs
dHMubGVuZ3RoIHx8IGNhY2hlZFVuaXQpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgdmFy
IHVuaXQgPSB0ZXN0UmVzdWx0c1swXS51bml0KCk7IC8vIEZJWE1FOiBXZSBzaG91bGQgdmVyaWZ5
IHRoYXQgYWxsIHJlc3VsdHMgaGF2ZSB0aGUgc2FtZSB1bml0LgogICAgICAgIHZhciBtZWFuID0g
dGVzdFJlc3VsdHNbMF0udW5zY2FsZWRNZWFuKCk7IC8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayBh
dCBhbGwgdmFsdWVzLgogICAgICAgIHZhciBraWxvID0gdW5pdCA9PSAnYnl0ZXMnID8gMTAyNCA6
IDEwMDA7CiAgICAgICAgaWYgKG1lYW4gPiAxMCAqIGtpbG8gKiBraWxvICYmIHVuaXQgIT0gJ21z
JykgewogICAgICAgICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gMSAvIGtpbG8gLyBraWxvOwog
ICAgICAgICAgICBjYWNoZWRVbml0ID0gJ00gJyArIHVuaXQ7CiAgICAgICAgfSBlbHNlIGlmICht
ZWFuID4gMTAgKiBraWxvKSB7CiAgICAgICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSAxIC8g
a2lsbzsKICAgICAgICAgICAgY2FjaGVkVW5pdCA9IHVuaXQgPT0gJ21zJyA/ICdzJyA6ICgnSyAn
ICsgdW5pdCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY2FjaGVkU2NhbGluZ0ZhY3Rv
ciA9IDE7CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSB1bml0OwogICAgICAgIH0KICAgIH0KCiAg
ICB0aGlzLm5hbWUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBuYW1lOyB9CiAgICB0aGlzLmlzTWVt
b3J5VGVzdCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5hbWUuaW5kZXhPZignOicpID49IDA7IH0K
ICAgIHRoaXMuYWRkUmVzdWx0ID0gZnVuY3Rpb24gKG5ld1Jlc3VsdCkgewogICAgICAgIHRlc3RS
ZXN1bHRzLnB1c2gobmV3UmVzdWx0KTsKICAgICAgICBjYWNoZWRVbml0ID0gbnVsbDsKICAgICAg
ICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKICAgIH0KICAgIHRoaXMucmVzdWx0cyA9IGZ1
bmN0aW9uICgpIHsgcmV0dXJuIHRlc3RSZXN1bHRzOyB9CiAgICB0aGlzLnNjYWxpbmdGYWN0b3Ig
PSBmdW5jdGlvbigpIHsKICAgICAgICBjb21wdXRlU2NhbGluZ0ZhY3RvcklmTmVlZGVkKCk7CiAg
ICAgICAgcmV0dXJuIGNhY2hlZFNjYWxpbmdGYWN0b3I7CiAgICB9CiAgICB0aGlzLnVuaXQgPSBm
dW5jdGlvbiAoKSB7CiAgICAgICAgY29tcHV0ZVNjYWxpbmdGYWN0b3JJZk5lZWRlZCgpOwogICAg
ICAgIHJldHVybiBjYWNoZWRVbml0OwogICAgfQogICAgdGhpcy5zbWFsbGVySXNCZXR0ZXIgPSBm
dW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnVuaXQoKSA9PSAnbXMnIHx8IHRoaXMudW5pdCgpID09
ICdieXRlcyc7IH0KfQoKdmFyIHBsb3RDb2xvciA9ICdyZ2IoMjMwLDUwLDUwKSc7CnZhciBzdWJw
b2ludHNQbG90T3B0aW9ucyA9IHsKICAgIGxpbmVzOiB7c2hvdzp0cnVlLCBsaW5lV2lkdGg6IDB9
LAogICAgY29sb3I6IHBsb3RDb2xvciwKICAgIHBvaW50czoge3Nob3c6IHRydWUsIHJhZGl1czog
MX0sCiAgICBiYXJzOiB7c2hvdzogZmFsc2V9fTsKCnZhciBtYWluUGxvdE9wdGlvbnMgPSB7CiAg
ICB4YXhpczogewogICAgICAgIG1pbjogLTAuNSwKICAgICAgICB0aWNrU2l6ZTogMSwKICAgIH0s
CiAgICBjcm9zc2hhaXI6IHsgbW9kZTogJ3knIH0sCiAgICBzZXJpZXM6IHsgc2hhZG93U2l6ZTog
MCB9LAogICAgYmFyczoge3Nob3c6IHRydWUsIGFsaWduOiAnY2VudGVyJywgYmFyV2lkdGg6IDAu
NX0sCiAgICBsaW5lczogeyBzaG93OiBmYWxzZSB9LAogICAgcG9pbnRzOiB7IHNob3c6IHRydWUg
fSwKICAgIGdyaWQ6IHsKICAgICAgICBib3JkZXJXaWR0aDogMSwKICAgICAgICBib3JkZXJDb2xv
cjogJyNjY2MnLAogICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLAogICAgICAgIGhvdmVy
YWJsZTogdHJ1ZSwKICAgICAgICBhdXRvSGlnaGxpZ2h0OiBmYWxzZSwKICAgIH0KfTsKCnZhciB0
aW1lUGxvdE9wdGlvbnMgPSB7CiAgICB5YXhpczogeyBzaG93OiBmYWxzZSB9LAogICAgeGF4aXM6
IHsgc2hvdzogZmFsc2UgfSwKICAgIGxpbmVzOiB7IHNob3c6IHRydWUgfSwKICAgIGdyaWQ6IHsg
Ym9yZGVyV2lkdGg6IDEsIGJvcmRlckNvbG9yOiAnI2NjYycgfSwKICAgIGNvbG9yczogWyBwbG90
Q29sb3IgXQp9OwoKZnVuY3Rpb24gY3JlYXRlUGxvdChjb250YWluZXIsIHRlc3QpIHsKICAgIHZh
ciBzZWN0aW9uID0gJCgnPHNlY3Rpb24+PGRpdiBjbGFzcz0icGxvdCI+PC9kaXY+PGRpdiBjbGFz
cz0idGltZS1wbG90cyI+PC9kaXY+JwogICAgICAgICsgJzxzcGFuIGNsYXNzPSJ0b29sdGlwIj48
L3NwYW4+PC9zZWN0aW9uPicpOwogICAgc2VjdGlvbi5jaGlsZHJlbignLnBsb3QnKS5jc3Moeyd3
aWR0aCc6ICgxMDAgKiB0ZXN0LnJlc3VsdHMoKS5sZW5ndGggKyAyNSkgKyAncHgnLCAnaGVpZ2h0
JzogJzMwMHB4J30pOwogICAgJChjb250YWluZXIpLmFwcGVuZChzZWN0aW9uKTsKCiAgICB2YXIg
cGxvdENvbnRhaW5lciA9IHNlY3Rpb24uY2hpbGRyZW4oJy5wbG90Jyk7CiAgICB2YXIgbWluSXNa
ZXJvID0gdHJ1ZTsKICAgIGF0dGFjaFBsb3QodGVzdCwgcGxvdENvbnRhaW5lciwgbWluSXNaZXJv
KTsKCiAgICBhdHRhY2hUaW1lUGxvdHModGVzdCwgc2VjdGlvbi5jaGlsZHJlbignLnRpbWUtcGxv
dHMnKSk7CgogICAgdmFyIHRvb2x0aXAgPSBzZWN0aW9uLmNoaWxkcmVuKCcudG9vbHRpcCcpOwog
ICAgcGxvdENvbnRhaW5lci5iaW5kKCdwbG90aG92ZXInLCBmdW5jdGlvbiAoZXZlbnQsIHBvc2l0
aW9uLCBpdGVtKSB7CiAgICAgICAgaWYgKGl0ZW0pIHsKICAgICAgICAgICAgdmFyIHBvc3RmaXgg
PSBpdGVtLnNlcmllcy5pZCA/ICcgKCcgKyBpdGVtLnNlcmllcy5pZCArICcpJyA6ICcnOwogICAg
ICAgICAgICB0b29sdGlwLmh0bWwoaXRlbS5kYXRhcG9pbnRbMV0udG9QcmVjaXNpb24oNCkgKyBw
b3N0Zml4KTsKICAgICAgICAgICAgdmFyIHNlY3Rpb25PZmZzZXQgPSAkKHNlY3Rpb24pLm9mZnNl
dCgpOwogICAgICAgICAgICB0b29sdGlwLmNzcyh7bGVmdDogaXRlbS5wYWdlWCAtIHNlY3Rpb25P
ZmZzZXQubGVmdCAtIHRvb2x0aXAub3V0ZXJXaWR0aCgpIC8gMiwgdG9wOiBpdGVtLnBhZ2VZIC0g
c2VjdGlvbk9mZnNldC50b3AgKyAxMH0pOwogICAgICAgICAgICB0b29sdGlwLmZhZGVJbigyMDAp
OwogICAgICAgIH0gZWxzZQogICAgICAgICAgICB0b29sdGlwLmhpZGUoKTsKICAgIH0pOwogICAg
cGxvdENvbnRhaW5lci5tb3VzZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgdG9vbHRpcC5oaWRl
KCk7CiAgICB9KTsKICAgIHBsb3RDb250YWluZXIuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7CiAg
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICBtaW5Jc1plcm8gPSAhbWluSXNa
ZXJvOwogICAgICAgIGF0dGFjaFBsb3QodGVzdCwgcGxvdENvbnRhaW5lciwgbWluSXNaZXJvKTsK
ICAgIH0pOwoKICAgIHJldHVybiBzZWN0aW9uOwp9CgpmdW5jdGlvbiBhdHRhY2hUaW1lUGxvdHMo
dGVzdCwgY29udGFpbmVyKSB7CiAgICB2YXIgcmVzdWx0cyA9IHRlc3QucmVzdWx0cygpOwogICAg
dmFyIGF0dGFjaGVkUGxvdCA9IGZhbHNlOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRz
Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29udGFpbmVyLmFwcGVuZCgnPGRpdj48L2Rpdj4nKTsK
ICAgICAgICB2YXIgdmFsdWVzID0gcmVzdWx0c1tpXS52YWx1ZXMoKTsKICAgICAgICBpZiAoIXZh
bHVlcykKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgYXR0YWNoZWRQbG90ID0gdHJ1ZTsK
CiAgICAgICAgJC5wbG90KGNvbnRhaW5lci5jaGlsZHJlbigpLmxhc3QoKSwgW3ZhbHVlcy5tYXAo
ZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCB2YWx1ZV07IH0pXSwKICAg
ICAgICAgICAgJC5leHRlbmQodHJ1ZSwge30sIHRpbWVQbG90T3B0aW9ucywge3lheGlzOiB7bWlu
OiBNYXRoLm1pbi5hcHBseShNYXRoLCB2YWx1ZXMpICogMC45LCBtYXg6IE1hdGgubWF4LmFwcGx5
KE1hdGgsIHZhbHVlcykgKiAxLjF9LAogICAgICAgICAgICAgICAgeGF4aXM6IHttaW46IC0wLjUs
IG1heDogdmFsdWVzLmxlbmd0aCAtIDAuNX19KSk7CiAgICB9CiAgICBpZiAoIWF0dGFjaGVkUGxv
dCkKICAgICAgICBjb250YWluZXIuY2hpbGRyZW4oKS5yZW1vdmUoKTsKfQoKZnVuY3Rpb24gYXR0
YWNoUGxvdCh0ZXN0LCBwbG90Q29udGFpbmVyLCBtaW5Jc1plcm8pIHsKICAgIHZhciByZXN1bHRz
ID0gdGVzdC5yZXN1bHRzKCk7CgogICAgdmFyIHZhbHVlcyA9IHJlc3VsdHMucmVkdWNlKGZ1bmN0
aW9uICh2YWx1ZXMsIHJlc3VsdCwgaW5kZXgpIHsKICAgICAgICB2YXIgbmV3VmFsdWVzID0gcmVz
dWx0LnZhbHVlcygpOwogICAgICAgIHJldHVybiBuZXdWYWx1ZXMgPyB2YWx1ZXMuY29uY2F0KG5l
d1ZhbHVlcy5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBbaW5kZXgsIHZhbHVlXTsgfSkp
IDogdmFsdWVzOwogICAgfSwgW10pOwoKICAgIHZhciBwbG90RGF0YSA9IFtdOwogICAgaWYgKHZh
bHVlcy5sZW5ndGgpCiAgICAgICAgcGxvdERhdGEgPSBbJC5leHRlbmQodHJ1ZSwge30sIHN1YnBv
aW50c1Bsb3RPcHRpb25zLCB7ZGF0YTogdmFsdWVzfSldOwogICAgZWxzZSB7CiAgICAgICAgZnVu
Y3Rpb24gbWFrZVN1YnBvaW50cyhpZCwgY2FsbGJhY2spIHsgcmV0dXJuICQuZXh0ZW5kKHRydWUs
IHt9LCBzdWJwb2ludHNQbG90T3B0aW9ucywge2lkOiBpZCwgZGF0YTogcmVzdWx0cy5tYXAoY2Fs
bGJhY2spfSk7IH0KICAgICAgICBwbG90RGF0YSA9IFttYWtlU3VicG9pbnRzKCdtaW4nLCBmdW5j
dGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCByZXN1bHQubWluKCldOyB9KSwK
ICAgICAgICBtYWtlU3VicG9pbnRzKCdtYXgnLCBmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyBy
ZXR1cm4gW2luZGV4LCByZXN1bHQubWF4KCldOyB9KSwKICAgICAgICBtYWtlU3VicG9pbnRzKCct
JiM5NjM7JywgZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsgcmV0dXJuIFtpbmRleCwgcmVzdWx0
Lm1lYW4oKSAtIHJlc3VsdC5zdGRldigpXTsgfSksCiAgICAgICAgbWFrZVN1YnBvaW50cygnKyYj
OTYzOycsIGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5t
ZWFuKCkgKyByZXN1bHQuc3RkZXYoKV07IH0pXTsKICAgIH0KCiAgICBwbG90RGF0YS5wdXNoKHtp
ZDogJyZtdTsnLCBkYXRhOiByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyBy
ZXR1cm4gW2luZGV4LCByZXN1bHQubWVhbigpXTsgfSksIGNvbG9yOiBwbG90Q29sb3J9KTsKCiAg
ICB2YXIgY3VycmVudFBsb3RPcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sIG1haW5QbG90T3B0
aW9ucywge3lheGlzOiB7CiAgICAgICAgbWluOiBtaW5Jc1plcm8gPyAwIDogTWF0aC5taW4uYXBw
bHkoTWF0aCwgcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsgcmV0dXJuIHJl
c3VsdC5taW4oKTsgfSkpICogMC45OCwKICAgICAgICBtYXg6IE1hdGgubWF4LmFwcGx5KE1hdGgs
IHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiByZXN1bHQubWF4
KCk7IH0pKSAqIChtaW5Jc1plcm8gPyAxLjEgOiAxLjAxKX19KTsKCiAgICBjdXJyZW50UGxvdE9w
dGlvbnMueGF4aXMubWF4ID0gcmVzdWx0cy5sZW5ndGggLSAwLjU7CiAgICBjdXJyZW50UGxvdE9w
dGlvbnMueGF4aXMudGlja3MgPSByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkg
eyByZXR1cm4gW2luZGV4LCByZXN1bHQucnVuKCkubGFiZWwoKV07IH0pOwoKICAgICQucGxvdChw
bG90Q29udGFpbmVyLCBwbG90RGF0YSwgY3VycmVudFBsb3RPcHRpb25zKTsKfQoKZnVuY3Rpb24g
dG9GaXhlZFdpZHRoUHJlY2lzaW9uKHZhbHVlKSB7CiAgICB2YXIgZGVjaW1hbCA9IHZhbHVlLnRv
Rml4ZWQoMik7CiAgICByZXR1cm4gZGVjaW1hbDsKfQoKZnVuY3Rpb24gZm9ybWF0UGVyY2VudGFn
ZShmcmFjdGlvbikgewogICAgdmFyIHBlcmNlbnRhZ2UgPSBmcmFjdGlvbiAqIDEwMDsKICAgIHJl
dHVybiAoZnJhY3Rpb24gKiAxMDApLnRvRml4ZWQoMikgKyAnJSc7Cn0KCmZ1bmN0aW9uIGNyZWF0
ZVRhYmxlKHRlc3RzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5jZUluZGV4KSB7
CiAgICAkKCcjY29udGFpbmVyJykuaHRtbCgnPHRoZWFkPjx0cj48dGg+VGVzdDwvdGg+PHRoPlVu
aXQ8L3RoPicgKyBydW5zLm1hcChmdW5jdGlvbiAocnVuLCBpbmRleCkgewogICAgICAgIHJldHVy
biAnPHRoIGNvbHNwYW49IicgKyAoaW5kZXggPT0gcmVmZXJlbmNlSW5kZXggPyAyIDogMykgKyAn
IiBjbGFzcz0ie3NvcnRlcjogXCdjb21wYXJpc29uXCd9Ij4nICsgcnVuLmxhYmVsKCkgKyAnPC90
aD4nOwogICAgfSkucmVkdWNlKGZ1bmN0aW9uIChtYXJrdXAsIGNlbGwpIHsgcmV0dXJuIG1hcmt1
cCArIGNlbGw7IH0sICcnKSArICc8L3RyPjwvaGVhZD48dGJvZHk+PC90Ym9keT4nKTsKCiAgICB2
YXIgdGVzdE5hbWVzID0gW107CiAgICBmb3IgKHRlc3ROYW1lIGluIHRlc3RzKQogICAgICAgIHRl
c3ROYW1lcy5wdXNoKHRlc3ROYW1lKTsKCiAgICB0ZXN0TmFtZXMuc29ydCgpLm1hcChmdW5jdGlv
biAodGVzdE5hbWUpIHsKICAgICAgICB2YXIgdGVzdCA9IHRlc3RzW3Rlc3ROYW1lXTsKICAgICAg
ICBpZiAodGVzdC5pc01lbW9yeVRlc3QoKSAhPSBzaG91bGRJZ25vcmVNZW1vcnkpCiAgICAgICAg
ICAgIGNyZWF0ZVRhYmxlUm93KHRlc3QsIHRlc3QucmVzdWx0cygpW3JlZmVyZW5jZUluZGV4XSk7
CiAgICB9KTsKCiAgICAkKCcjY29udGFpbmVyJykudGFibGVzb3J0ZXIoe3dpZGdldHM6IFsnemVi
cmEnXX0pOwp9CgpmdW5jdGlvbiBsaW5lYXJSZWdyZXNzaW9uKHBvaW50cykgewogICAgLy8gSW1w
bGVtZW50IGh0dHA6Ly93d3cuZWFzeWNhbGN1bGF0aW9uLmNvbS9zdGF0aXN0aWNzL2xlYXJuLWNv
cnJlbGF0aW9uLnBocC4KICAgIC8vIHggPSBtYWduaXR1ZGUKICAgIC8vIHkgPSBpdGVyYXRpb25z
CiAgICB2YXIgc3VtWCA9IDA7CiAgICB2YXIgc3VtWSA9IDA7CiAgICB2YXIgc3VtWFNxdWFyZWQg
PSAwOwogICAgdmFyIHN1bVlTcXVhcmVkID0gMDsKICAgIHZhciBzdW1YVGltZXNZID0gMDsKCiAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciB4
ID0gaTsKICAgICAgICB2YXIgeSA9IHBvaW50c1tpXTsKICAgICAgICBzdW1YICs9IHg7CiAgICAg
ICAgc3VtWSArPSB5OwogICAgICAgIHN1bVhTcXVhcmVkICs9IHggKiB4OwogICAgICAgIHN1bVlT
cXVhcmVkICs9IHkgKiB5OwogICAgICAgIHN1bVhUaW1lc1kgKz0geCAqIHk7CiAgICB9CgogICAg
dmFyIHIgPSAocG9pbnRzLmxlbmd0aCAqIHN1bVhUaW1lc1kgLSBzdW1YICogc3VtWSkgLwogICAg
ICAgIE1hdGguc3FydCgocG9pbnRzLmxlbmd0aCAqIHN1bVhTcXVhcmVkIC0gc3VtWCAqIHN1bVgp
ICoKICAgICAgICAgICAgICAgICAgKHBvaW50cy5sZW5ndGggKiBzdW1ZU3F1YXJlZCAtIHN1bVkg
KiBzdW1ZKSk7CgogICAgaWYgKGlzTmFOKHIpIHx8IHIgPT0gTWF0aC5JbmZpbml0eSkKICAgICAg
ICByID0gMDsKCiAgICB2YXIgc2xvcGUgPSAocG9pbnRzLmxlbmd0aCAqIHN1bVhUaW1lc1kgLSBz
dW1YICogc3VtWSkgLyAocG9pbnRzLmxlbmd0aCAqIHN1bVhTcXVhcmVkIC0gc3VtWCAqIHN1bVgp
OwogICAgdmFyIGludGVyY2VwdCA9IHN1bVkgLyBwb2ludHMubGVuZ3RoIC0gc2xvcGUgKiBzdW1Y
IC8gcG9pbnRzLmxlbmd0aDsKICAgIHJldHVybiB7c2xvcGU6IHNsb3BlLCBpbnRlcmNlcHQ6IGlu
dGVyY2VwdCwgclNxdWFyZWQ6IHIgKiByfTsKfQoKdmFyIHdhcm5pbmdTaWduID0gJzxzdmcgdmll
d0JveD0iMCAwIDEwMCAxMDAiIHN0eWxlPSJ3aWR0aDogMThweDsgaGVpZ2h0OiAxOHB4OyB2ZXJ0
aWNhbC1hbGlnbjogYm90dG9tOyIgdmVyc2lvbj0iMS4xIj4nCiAgICArICc8cG9seWdvbiBmaWxs
PSJyZWQiIHBvaW50cz0iNTAsMTAgOTAsODAgMTAsODAgNTAsMTAiIHN0cm9rZT0icmVkIiBzdHJv
a2Utd2lkdGg9IjEwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPicKICAgICsgJzxwb2x5Z29u
IGZpbGw9IndoaXRlIiBwb2ludHM9IjQ3LDMwIDQ4LDI5LCA1MCwgMjguNywgNTIsMjkgNTMsMzAg
NTAsNjAiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0i
cm91bmQiIC8+JwogICAgKyAnPGNpcmNsZSBjeD0iNTAiIGN5PSI3MyIgcj0iNiIgZmlsbD0id2hp
dGUiIC8+JwogICAgKyAnPC9zdmc+JzsKCmZ1bmN0aW9uIGNyZWF0ZVRhYmxlUm93KHRlc3QsIHJl
ZmVyZW5jZVJlc3VsdCkgewogICAgdmFyIHRhYmxlUm93ID0gJCgnPHRyPjx0ZCBjbGFzcz0idGVz
dCI+JyArIHRlc3QubmFtZSgpICsgJzwvdGQ+PHRkIGNsYXNzPSJ1bml0Ij4nICsgdGVzdC51bml0
KCkgKyAnPC90ZD48L3RyPicpOwoKICAgIHRhYmxlUm93LmFwcGVuZCh0ZXN0LnJlc3VsdHMoKS5t
YXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsKICAgICAgICB2YXIgc2Vjb25kQ2VsbCA9ICcn
OwogICAgICAgIHZhciBoaWRkZW5WYWx1ZSA9ICcnOwogICAgICAgIGlmIChyZXN1bHQgIT09IHJl
ZmVyZW5jZVJlc3VsdCkgewogICAgICAgICAgICB2YXIgcGVyY2VudERpZmZlcmVuY2UgPSByZWZl
cmVuY2VSZXN1bHQucGVyY2VudERpZmZlcmVuY2UocmVzdWx0KTsKICAgICAgICAgICAgdmFyIGJl
dHRlciA9IHRlc3Quc21hbGxlcklzQmV0dGVyKCkgPyBwZXJjZW50RGlmZmVyZW5jZSA8IDAgOiBw
ZXJjZW50RGlmZmVyZW5jZSA+IDA7CiAgICAgICAgICAgIHZhciBjb21wYXJpc29uID0gJyc7CiAg
ICAgICAgICAgIHZhciBjbGFzc05hbWUgPSAnY29tcGFyaXNvbic7CiAgICAgICAgICAgIGlmIChy
ZWZlcmVuY2VSZXN1bHQuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQocmVzdWx0KSkgewogICAg
ICAgICAgICAgICAgY29tcGFyaXNvbiA9IGZvcm1hdFBlcmNlbnRhZ2UoTWF0aC5hYnMocGVyY2Vu
dERpZmZlcmVuY2UpKSArIChiZXR0ZXIgPyAnIEJldHRlcicgOiAnIFdvcnNlJm5ic3A7Jyk7CiAg
ICAgICAgICAgICAgICBjbGFzc05hbWUgKz0gYmV0dGVyID8gJyBiZXR0ZXInIDogJyB3b3JzZSc7
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGlkZGVuVmFsdWUgPSAnPHNwYW4gc3R5bGU9ImRp
c3BsYXk6IG5vbmUiPnwnICsgY29tcGFyaXNvbiArICc8L3NwYW4+JzsKICAgICAgICAgICAgc2Vj
b25kQ2VsbCA9ICc8L3RkPjx0ZCBjbGFzcz0iJyArIGNsYXNzTmFtZSArICciPicgKyBjb21wYXJp
c29uOwogICAgICAgIH0KCiAgICAgICAgdmFyIHZhbHVlcyA9IHJlc3VsdC52YWx1ZXMoKTsKICAg
ICAgICB2YXIgd2FybmluZyA9ICcnOwogICAgICAgIHZhciByZWdyZXNzaW9uQW5hbHlzaXMgPSAn
JzsKICAgICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy5sZW5ndGggPiAzKSB7CiAgICAgICAgICAg
IHJlZ3Jlc3Npb25SZXN1bHQgPSBsaW5lYXJSZWdyZXNzaW9uKHZhbHVlcyk7CiAgICAgICAgICAg
IHJlZ3Jlc3Npb25BbmFseXNpcyA9ICdzbG9wZT0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJl
Z3Jlc3Npb25SZXN1bHQuc2xvcGUpCiAgICAgICAgICAgICAgICArICcsIFJeMj0nICsgdG9GaXhl
ZFdpZHRoUHJlY2lzaW9uKHJlZ3Jlc3Npb25SZXN1bHQuclNxdWFyZWQpOwogICAgICAgICAgICBp
ZiAocmVncmVzc2lvblJlc3VsdC5yU3F1YXJlZCA+IDAuNiAmJiBNYXRoLmFicyhyZWdyZXNzaW9u
UmVzdWx0LnNsb3BlKSA+IDAuMDEpIHsKICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAnIDxzcGFu
IGNsYXNzPSJyZWdyZXNzaW9uLXdhcm5pbmciIHRpdGxlPSJEZXRlY3RlZCBhIHRpbWUgZGVwZW5k
ZW5jeSB3aXRoICcgKyByZWdyZXNzaW9uQW5hbHlzaXMgKyAnIj4nICsgd2FybmluZ1NpZ24gKyAn
IDwvc3Bhbj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc3RhdGlzdGlj
cyA9ICcmc2lnbWE7PScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0LnN0ZGV2KCkpICsg
JywgbWluPScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1pbigpKQogICAgICAgICAg
ICArICcsIG1heD0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5tYXgoKSkgKyAnXG4n
ICsgcmVncmVzc2lvbkFuYWx5c2lzOwoKICAgICAgICAvLyBUYWJsZXNvcnRlciBkb2Vzbid0IGtu
b3cgYWJvdXQgdGhlIHNlY29uZCBjZWxsIHNvIHB1dCB0aGUgY29tcGFyaXNvbiBpbiB0aGUgaW52
aXNpYmxlIGVsZW1lbnQuCiAgICAgICAgcmV0dXJuICc8dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9
IicgKyBzdGF0aXN0aWNzICsgJyI+JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWVh
bigpKSArIGhpZGRlblZhbHVlCiAgICAgICAgICAgICsgJzwvdGQ+PHRkIGNsYXNzPSJzdGRldiIg
dGl0bGU9IicgKyBzdGF0aXN0aWNzICsgJyI+JnBsdXNtbjsgJwogICAgICAgICAgICArIGZvcm1h
dFBlcmNlbnRhZ2UocmVzdWx0LnN0ZGV2UmF0aW8oKSkgKyB3YXJuaW5nICsgc2Vjb25kQ2VsbCAr
ICc8L3RkPic7CiAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKG1hcmt1cCwgY2VsbCkgeyByZXR1cm4g
bWFya3VwICsgY2VsbDsgfSwgJycpKTsKCiAgICAkKCcjY29udGFpbmVyJykuY2hpbGRyZW4oJ3Ri
b2R5JykubGFzdCgpLmFwcGVuZCh0YWJsZVJvdyk7CgogICAgdGFibGVSb3cuY2xpY2soZnVuY3Rp
b24gKGV2ZW50KSB7CiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPSB0YWJsZVJvd1swXSAmJiBl
dmVudC50YXJnZXQucGFyZW50Tm9kZSAhPSB0YWJsZVJvd1swXSkKICAgICAgICAgICAgcmV0dXJu
OwoKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICB2YXIgZmlyc3RDZWxs
ID0gdGFibGVSb3cuY2hpbGRyZW4oJ3RkJykuZmlyc3QoKTsKICAgICAgICBpZiAoZmlyc3RDZWxs
LmNoaWxkcmVuKCdzZWN0aW9uJykubGVuZ3RoKSB7CiAgICAgICAgICAgIGZpcnN0Q2VsbC5jaGls
ZHJlbignc2VjdGlvbicpLnJlbW92ZSgpOwogICAgICAgICAgICB0YWJsZVJvdy5jaGlsZHJlbign
dGQnKS5jc3MoeydwYWRkaW5nLWJvdHRvbSc6ICcnfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgdmFyIHBsb3QgPSBjcmVhdGVQbG90KGZpcnN0Q2VsbCwgdGVzdCk7CiAgICAgICAgICAg
IHBsb3QuY3NzKHsncG9zaXRpb24nOiAnYWJzb2x1dGUnLCAnei1pbmRleCc6IDJ9KTsKICAgICAg
ICAgICAgdmFyIG9mZnNldCA9IHRhYmxlUm93Lm9mZnNldCgpOwogICAgICAgICAgICBvZmZzZXQu
bGVmdCArPSAxOwogICAgICAgICAgICBvZmZzZXQudG9wICs9IHRhYmxlUm93Lm91dGVySGVpZ2h0
KCk7CiAgICAgICAgICAgIHBsb3Qub2Zmc2V0KG9mZnNldCk7CiAgICAgICAgICAgIHRhYmxlUm93
LmNoaWxkcmVuKCd0ZCcpLmNzcyh7J3BhZGRpbmctYm90dG9tJzogcGxvdC5vdXRlckhlaWdodCgp
ICsgNX0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7Cn0KCmZ1bmN0
aW9uIGluaXQoKSB7CiAgICAkLnRhYmxlc29ydGVyLmFkZFBhcnNlcih7CiAgICAgICAgaWQ6ICdj
b21wYXJpc29uJywKICAgICAgICBpczogZnVuY3Rpb24ocykgewogICAgICAgICAgICByZXR1cm4g
cy5pbmRleE9mKCd8JykgPj0gMDsKICAgICAgICB9LAogICAgICAgIGZvcm1hdDogZnVuY3Rpb24o
cykgewogICAgICAgICAgICB2YXIgcGFyc2VkID0gcGFyc2VGbG9hdChzLnN1YnN0cmluZyhzLmlu
ZGV4T2YoJ3wnKSArIDEpKTsKICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNlZCkgPyAwIDog
cGFyc2VkOwogICAgICAgIH0sCiAgICAgICAgdHlwZTogJ251bWVyaWMnLAogICAgfSk7CgogICAg
dmFyIHJ1bnMgPSBbXTsKICAgIHZhciB0ZXN0cyA9IHt9OwogICAgJC5lYWNoKEpTT04ucGFyc2Uo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2pzb24nKS50ZXh0Q29udGVudCksIGZ1bmN0aW9uIChp
bmRleCwgZW50cnkpIHsKICAgICAgICB2YXIgcnVuID0gbmV3IFRlc3RSdW4oZW50cnkpOwogICAg
ICAgIHJ1bnMucHVzaChydW4pOwogICAgICAgICQuZWFjaChlbnRyeS5yZXN1bHRzLCBmdW5jdGlv
biAodGVzdCwgcmVzdWx0KSB7CiAgICAgICAgICAgIGlmICghdGVzdHNbdGVzdF0pCiAgICAgICAg
ICAgICAgICB0ZXN0c1t0ZXN0XSA9IG5ldyBQZXJmVGVzdCh0ZXN0KTsKICAgICAgICAgICAgdGVz
dHNbdGVzdF0uYWRkUmVzdWx0KG5ldyBUZXN0UmVzdWx0KHRlc3RzW3Rlc3RdLCByZXN1bHQsIHJ1
bikpOwogICAgICAgIH0pOwogICAgfSk7CgogICAgdmFyIHNob3VsZElnbm9yZU1lbW9yeT0gdHJ1
ZTsKICAgIHZhciByZWZlcmVuY2VJbmRleCA9IDA7CiAgICBjcmVhdGVUYWJsZSh0ZXN0cywgcnVu
cywgc2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CgogICAgJCgnI3RpbWUtbWVt
b3J5JykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50LCBjaGVja2VkRWxlbWVudCkgewog
ICAgICAgIHNob3VsZElnbm9yZU1lbW9yeSA9IGNoZWNrZWRFbGVtZW50LnRleHRDb250ZW50ID09
ICdUaW1lJzsKICAgICAgICBjcmVhdGVUYWJsZSh0ZXN0cywgcnVucywgc2hvdWxkSWdub3JlTWVt
b3J5LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsKCiAgICBydW5zLm1hcChmdW5jdGlvbiAocnVu
LCBpbmRleCkgewogICAgICAgICQoJyNyZWZlcmVuY2UnKS5hcHBlbmQoJzxzcGFuIHZhbHVlPSIn
ICsgaW5kZXggKyAnIicgKyAoaW5kZXggPT0gcmVmZXJlbmNlSW5kZXggPyAnIGNsYXNzPSJjaGVj
a2VkIicgOiAnJykgKyAnPicgKyBydW4ubGFiZWwoKSArICc8L3NwYW4+Jyk7CiAgICB9KQoKICAg
ICQoJyNyZWZlcmVuY2UnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQsIGNoZWNrZWRF
bGVtZW50KSB7CiAgICAgICAgcmVmZXJlbmNlSW5kZXggPSBwYXJzZUludChjaGVja2VkRWxlbWVu
dC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpOwogICAgICAgIGNyZWF0ZVRhYmxlKHRlc3RzLCBydW5z
LCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5jZUluZGV4KTsKICAgIH0pOwp9Cgppbml0KCk7
Cgo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167405</attachid>
            <date>2012-10-05 16:08:38 -0700</date>
            <delta_ts>2012-10-05 16:09:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98567-20121005160757.patch</filename>
            <type>text/plain</type>
            <size>4200</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFiMTBiOTg4MGFjMjQz
NDE1YzRiY2Q4YjZlYjgwYjhhMTIwYjIxOC4uMWQ5MTI1ZGViMGE3MTYyM2ZmN2ZiYTQ2OGIxNDBj
ZmIyY2I5MDMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEwLTA1ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSB0b1Y4KE5vZGUqLCAu
Li4pIGRvZXMgbW9yZSB3b3JrIHRoYW4gbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0b1Y4RmFzdCBmb3Ig
Tm9kZSouIFRoaXMgZnVuY3Rpb24gd29ya3MgYQorICAgICAgICBkaWZmZXJlbnRseSBmcm9tIHRo
ZSBleGlzdGluZyB0b1Y4IGZ1bmN0aW9uIGluIHR3byB3YXlzOgorCisgICAgICAgIDEpIEl0IHVz
ZXMgdGhlIGlubGluZSB3cmFwcGVyIGNhY2hlIGluIE5vZGUgdG8gZGV0ZXJtaW5lIGlmIHdlJ3Jl
CisgICAgICAgICAgIGV4ZWN1dGluZyBpbiB0aGUgbWFpbiB3b3JsZC4gVGhpcyBpcyBmYXN0ZXIg
Ym90aCBpbiB0aGUgY2FzZSB3aGVuCisgICAgICAgICAgIGlzb2xhdGVkIHdvcmxkcyBleGlzdCBi
ZWNhdXNlIHdlIGRvbid0IG5lZWQgdG8gcmV0cmlldmUgYW55IHN0YXRlCisgICAgICAgICAgIGZv
ciB0aGUgY3VycmVudCBjb250ZXh0LgorCisgICAgICAgIDIpIEl0IGRvZXNuJ3QgYXR0ZW1wdCB0
byBpbmxpbmUgdGhlIGhhc2ggdGFibGUgbG9va3VwIHVzZWQgdG8gZmluZCB0aGUKKyAgICAgICAg
ICAgd3JhcHBlciBpbiB0aGUgaXNvbGF0ZWQgd29ybGQuIFRoZXJlIGlzbid0IGEgYmlnIG5lZWQg
dG8gaW5saW5lIHRoaXMKKyAgICAgICAgICAgY29kZSBzaW5jZSBwZXJmb3JtYW5jZSBpbiB0aGUg
aXNvbGF0ZWQgd29ybGQgY2FzZSBpcyBkb21pbmF0ZWQgYnkKKyAgICAgICAgICAgdGhlIGhhc2gg
dGFibGUgbG9va3VwLgorCisgICAgICAgIEJlY2F1c2Ugb2YgdGhlc2UgdHdvIGNoYW5nZXMsIHRv
VjhGYXN0IGlzIHNtYWxsIGVub3VnaCB0byBpbmxpbmUgaW50bworICAgICAgICBlYWNoIGF0dHJp
YnV0ZSBnZXR0ZXIgcHJvZml0YWJseS4gT3ZlciB0aW1lLCBJIHdvdWxkIGxpa2UgdG8gY29udmVy
dAorICAgICAgICBhbGwgdGhlIHBlcmZvcm1hbmNlIGNyaXRpY2FsIHVzZXMgb2YgdG9WOChOb2Rl
KikgdG8gdG9WOEZhc3QuIEF0IHRoYXQKKyAgICAgICAgcG9pbnQsIHdlIGNhbiBkZWxldGUgdG9W
OCBhbmQgcmVuYW1lIHRvVjhTbG93IHRvIHRvVjguCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAg
ICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisKIDIwMTItMTAtMDQgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9y
IGRvZXMgbm90IG5lZWQgdG8gY29weSBRdWFsaWZpZWROYW1lIGluIHRoZSBjb21tb24gY2FzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQppbmRleCA1NTEyNThjMWU2YWY4NjQ2ZjM5OGY4MGJjMTA5OTMyYjZjMzAyMGYzLi4xZjc5MTY3
NWJiN2I0YzNmMTlmMWE2NWJkNDM5NjA3NTFjYmIzMzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNTI1LDYgKzUyNSwx
NiBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoTm9kZSogaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbgogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAg
ICByZXR1cm4gdG9WOFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KKwor
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChOb2RlKiBub2RlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvLCBOb2RlKiBob2xkZXIpCit7CisgICAgaWYgKFVOTElLRUxZ
KCFub2RlKSkKKyAgICAgICAgcmV0dXJuIHY4OjpOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlcldyYXBwZXIgPSBpbmZvLkhvbGRlcigpOwor
ICAgIGlmIChob2xkZXItPndyYXBwZXIoKSAmJiAqaG9sZGVyLT53cmFwcGVyKCkgPT0gaG9sZGVy
V3JhcHBlciAmJiBub2RlLT53cmFwcGVyKCkpCisgICAgICAgIHJldHVybiAqbm9kZS0+d3JhcHBl
cigpOworICAgIHJldHVybiB0b1Y4U2xvdyhub2RlLCBob2xkZXJXcmFwcGVyLCBpbmZvLkdldElz
b2xhdGUoKSk7Cit9CiBFTkQKICAgICB9CiAKQEAgLTEwNjIsMTggKzEwNzIsMTkgQEAgRU5ECiAg
ICAgICAgIHBvcnRBcnJheS0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdldElzb2xhdGUoKSksIHRv
VjgocG9ydHNDb3B5W2ldLmdldCgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSkp
OwogICAgIHJldHVybiBwb3J0QXJyYXk7CiBFTkQKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiICYm
ICRhdHRyRXh0LT57IkNhY2hlZEF0dHJpYnV0ZSJ9KSB7Ci0gICAgICAgICAgICBteSAkZ2V0dGVy
RnVuYyA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
bmFtZSk7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAg
fSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUiICYmICRhdHRyRXh0LT57IkNhY2hlZEF0dHJpYnV0ZSJ9KSB7CisgICAgICAgIG15ICRn
ZXR0ZXJGdW5jID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwogICAg
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZCA9IGltcC0+JHtnZXR0ZXJGdW5jfSgp
OwogICAgIHZhbHVlID0gc2VyaWFsaXplZCA/IHNlcmlhbGl6ZWQtPmRlc2VyaWFsaXplKCkgOiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51bGwoaW5mby5HZXRJc29sYXRlKCkpKTsKICAgICBp
bmZvLkhvbGRlcigpLT5TZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICBy
ZXR1cm4gdmFsdWU7CiBFTkQKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgIiAuIFJldHVybk5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRl
LT5zaWduYXR1cmUsICRyZXN1bHQsICJpbmZvLkhvbGRlcigpIiwgImluZm8uR2V0SXNvbGF0ZSgp
IikuIjtcbiIpOwotICAgICAgICB9CisgICAgfSBlbHNpZiAoSXNET01Ob2RlVHlwZShHZXRUeXBl
RnJvbVNpZ25hdHVyZSgkYXR0cmlidXRlLT5zaWduYXR1cmUpKSAmJiAkaW1wbENsYXNzTmFtZSBl
cSAiTm9kZSIpIHsKKyAgICAgICAgIyBGSVhNRTogV2Ugd291bGQgbGlrZSB0byB1c2UgdG9WOEZh
c3QgaW4gbW9yZSBzaXR1YXRpb25zLgorICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
ICAgIHJldHVybiB0b1Y4RmFzdCgkcmVzdWx0LCBpbmZvLCBpbXApO1xuIik7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gUmV0dXJuTmF0aXZl
VG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJHJlc3VsdCwgImluZm8uSG9sZGVyKCki
LCAiaW5mby5HZXRJc29sYXRlKCkiKS4iO1xuIik7CiAgICAgfQogCiAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIn1cblxuIik7ICAjIGVuZCBvZiBnZXR0ZXIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167406</attachid>
            <date>2012-10-05 16:09:45 -0700</date>
            <delta_ts>2012-10-05 18:34:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98567-20121005160904.patch</filename>
            <type>text/plain</type>
            <size>4228</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFiMTBiOTg4MGFjMjQz
NDE1YzRiY2Q4YjZlYjgwYjhhMTIwYjIxOC4uNDA0ZGJlNTNlMDlhYmRjN2ZhMjFhMzM2ZTE2NTIw
YTA2MDQ5ZWU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEwLTA1ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSB0b1Y4KE5vZGUqLCAu
Li4pIGRvZXMgbW9yZSB3b3JrIHRoYW4gbmVlZGVkICg2JSBmYXN0ZXIgb24gZG9tLXRyYXZlcnNl
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg1NjcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGludHJvZHVjZXMgdG9WOEZhc3QgZm9yIE5vZGUqLiBUaGlzIGZ1bmN0aW9uIHdvcmtzIGEK
KyAgICAgICAgZGlmZmVyZW50bHkgZnJvbSB0aGUgZXhpc3RpbmcgdG9WOCBmdW5jdGlvbiBpbiB0
d28gd2F5czoKKworICAgICAgICAxKSBJdCB1c2VzIHRoZSBpbmxpbmUgd3JhcHBlciBjYWNoZSBp
biBOb2RlIHRvIGRldGVybWluZSBpZiB3ZSdyZQorICAgICAgICAgICBleGVjdXRpbmcgaW4gdGhl
IG1haW4gd29ybGQuIFRoaXMgaXMgZmFzdGVyIGJvdGggaW4gdGhlIGNhc2Ugd2hlbgorICAgICAg
ICAgICBpc29sYXRlZCB3b3JsZHMgZXhpc3QgYmVjYXVzZSB3ZSBkb24ndCBuZWVkIHRvIHJldHJp
ZXZlIGFueSBzdGF0ZQorICAgICAgICAgICBmb3IgdGhlIGN1cnJlbnQgY29udGV4dC4KKworICAg
ICAgICAyKSBJdCBkb2Vzbid0IGF0dGVtcHQgdG8gaW5saW5lIHRoZSBoYXNoIHRhYmxlIGxvb2t1
cCB1c2VkIHRvIGZpbmQgdGhlCisgICAgICAgICAgIHdyYXBwZXIgaW4gdGhlIGlzb2xhdGVkIHdv
cmxkLiBUaGVyZSBpc24ndCBhIGJpZyBuZWVkIHRvIGlubGluZSB0aGlzCisgICAgICAgICAgIGNv
ZGUgc2luY2UgcGVyZm9ybWFuY2UgaW4gdGhlIGlzb2xhdGVkIHdvcmxkIGNhc2UgaXMgZG9taW5h
dGVkIGJ5CisgICAgICAgICAgIHRoZSBoYXNoIHRhYmxlIGxvb2t1cC4KKworICAgICAgICBCZWNh
dXNlIG9mIHRoZXNlIHR3byBjaGFuZ2VzLCB0b1Y4RmFzdCBpcyBzbWFsbCBlbm91Z2ggdG8gaW5s
aW5lIGludG8KKyAgICAgICAgZWFjaCBhdHRyaWJ1dGUgZ2V0dGVyIHByb2ZpdGFibHkuIE92ZXIg
dGltZSwgSSB3b3VsZCBsaWtlIHRvIGNvbnZlcnQKKyAgICAgICAgYWxsIHRoZSBwZXJmb3JtYW5j
ZSBjcml0aWNhbCB1c2VzIG9mIHRvVjgoTm9kZSopIHRvIHRvVjhGYXN0LiBBdCB0aGF0CisgICAg
ICAgIHBvaW50LCB3ZSBjYW4gZGVsZXRlIHRvVjggYW5kIHJlbmFtZSB0b1Y4U2xvdyB0byB0b1Y4
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAg
ICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIp
OgorCiAyMDEyLTEwLTA0ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvciBkb2VzIG5vdCBuZWVkIHRvIGNvcHkgUXVhbGlm
aWVkTmFtZSBpbiB0aGUgY29tbW9uIGNhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNTUxMjU4YzFlNmFmODY0NmYzOThm
ODBiYzEwOTkzMmI2YzMwMjBmMy4uMWY3OTE2NzViYjdiNGMzZjE5ZjFhNjViZDQzOTYwNzUxY2Ji
MzMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KQEAgLTUyNSw2ICs1MjUsMTYgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4KE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db24K
ICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIHRvVjhTbG93KGltcGwsIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CisKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOEZhc3QoTm9kZSogbm9kZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbywgTm9kZSog
aG9sZGVyKQoreworICAgIGlmIChVTkxJS0VMWSghbm9kZSkpCisgICAgICAgIHJldHVybiB2ODo6
TnVsbChpbmZvLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXJXcmFwcGVyID0gaW5mby5Ib2xkZXIoKTsKKyAgICBpZiAoaG9sZGVyLT53cmFwcGVyKCkgJiYg
KmhvbGRlci0+d3JhcHBlcigpID09IGhvbGRlcldyYXBwZXIgJiYgbm9kZS0+d3JhcHBlcigpKQor
ICAgICAgICByZXR1cm4gKm5vZGUtPndyYXBwZXIoKTsKKyAgICByZXR1cm4gdG9WOFNsb3cobm9k
ZSwgaG9sZGVyV3JhcHBlciwgaW5mby5HZXRJc29sYXRlKCkpOworfQogRU5ECiAgICAgfQogCkBA
IC0xMDYyLDE4ICsxMDcyLDE5IEBAIEVORAogICAgICAgICBwb3J0QXJyYXktPlNldCh2OEludGVn
ZXIoaSwgaW5mby5HZXRJc29sYXRlKCkpLCB0b1Y4KHBvcnRzQ29weVtpXS5nZXQoKSwgaW5mby5I
b2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpKTsKICAgICByZXR1cm4gcG9ydEFycmF5OwogRU5E
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBl
cSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIiAmJiAkYXR0ckV4dC0+eyJDYWNoZWRBdHRyaWJ1dGUi
fSkgewotICAgICAgICAgICAgbXkgJGdldHRlckZ1bmMgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNm
aXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOwotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgPDxFTkQpOworICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+dHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIiAmJiAkYXR0ckV4dC0+eyJDYWNoZWRB
dHRyaWJ1dGUifSkgeworICAgICAgICBteSAkZ2V0dGVyRnVuYyA9ICRjb2RlR2VuZXJhdG9yLT5X
S19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsIDw8RU5EKTsKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlh
bGl6ZWQgPSBpbXAtPiR7Z2V0dGVyRnVuY30oKTsKICAgICB2YWx1ZSA9IHNlcmlhbGl6ZWQgPyBz
ZXJpYWxpemVkLT5kZXNlcmlhbGl6ZSgpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4OjpOdWxs
KGluZm8uR2V0SXNvbGF0ZSgpKSk7CiAgICAgaW5mby5Ib2xkZXIoKS0+U2V0SGlkZGVuVmFsdWUo
cHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHZhbHVlOwogRU5ECi0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICIgLiBSZXR1
cm5OYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkcmVzdWx0LCAiaW5mby5I
b2xkZXIoKSIsICJpbmZvLkdldElzb2xhdGUoKSIpLiI7XG4iKTsKLSAgICAgICAgfQorICAgIH0g
ZWxzaWYgKElzRE9NTm9kZVR5cGUoR2V0VHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlKSkgJiYgJGltcGxDbGFzc05hbWUgZXEgIk5vZGUiKSB7CisgICAgICAgICMgRklYTUU6
IFdlIHdvdWxkIGxpa2UgdG8gdXNlIHRvVjhGYXN0IGluIG1vcmUgc2l0dWF0aW9ucy4KKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gdG9WOEZhc3QoJHJlc3VsdCwg
aW5mbywgaW1wKTtcbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgIiAuIFJldHVybk5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1
cmUsICRyZXN1bHQsICJpbmZvLkhvbGRlcigpIiwgImluZm8uR2V0SXNvbGF0ZSgpIikuIjtcbiIp
OwogICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICJ9XG5cbiIpOyAgIyBlbmQg
b2YgZ2V0dGVyCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167433</attachid>
            <date>2012-10-05 18:34:44 -0700</date>
            <delta_ts>2012-10-05 19:08:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-98567-20121005183352.patch</filename>
            <type>text/plain</type>
            <size>4356</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMDU3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEwLTA1ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSB0b1Y4KE5vZGUqLCAuLi4p
IGRvZXMgbW9yZSB3b3JrIHRoYW4gbmVlZGVkICg2JSBmYXN0ZXIgb24gZG9tLXRyYXZlcnNlKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg1NjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBLZW50YXJvIEhhcmEuCisKKyAgICAgICAgVGhpcyBwYXRjaCBp
bnRyb2R1Y2VzIHRvVjhGYXN0IGZvciBOb2RlKi4gVGhpcyBmdW5jdGlvbiB3b3JrcyBhCisgICAg
ICAgIGRpZmZlcmVudGx5IGZyb20gdGhlIGV4aXN0aW5nIHRvVjggZnVuY3Rpb24gaW4gdHdvIHdh
eXM6CisKKyAgICAgICAgMSkgSXQgdXNlcyB0aGUgaW5saW5lIHdyYXBwZXIgY2FjaGUgaW4gTm9k
ZSB0byBkZXRlcm1pbmUgaWYgd2UncmUKKyAgICAgICAgICAgZXhlY3V0aW5nIGluIHRoZSBtYWlu
IHdvcmxkLiBUaGlzIGlzIGZhc3RlciBib3RoIGluIHRoZSBjYXNlIHdoZW4KKyAgICAgICAgICAg
aXNvbGF0ZWQgd29ybGRzIGV4aXN0IGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCB0byByZXRyaWV2ZSBh
bnkgc3RhdGUKKyAgICAgICAgICAgZm9yIHRoZSBjdXJyZW50IGNvbnRleHQuCisKKyAgICAgICAg
MikgSXQgZG9lc24ndCBhdHRlbXB0IHRvIGlubGluZSB0aGUgaGFzaCB0YWJsZSBsb29rdXAgdXNl
ZCB0byBmaW5kIHRoZQorICAgICAgICAgICB3cmFwcGVyIGluIHRoZSBpc29sYXRlZCB3b3JsZC4g
VGhlcmUgaXNuJ3QgYSBiaWcgbmVlZCB0byBpbmxpbmUgdGhpcworICAgICAgICAgICBjb2RlIHNp
bmNlIHBlcmZvcm1hbmNlIGluIHRoZSBpc29sYXRlZCB3b3JsZCBjYXNlIGlzIGRvbWluYXRlZCBi
eQorICAgICAgICAgICB0aGUgaGFzaCB0YWJsZSBsb29rdXAuCisKKyAgICAgICAgQmVjYXVzZSBv
ZiB0aGVzZSB0d28gY2hhbmdlcywgdG9WOEZhc3QgaXMgc21hbGwgZW5vdWdoIHRvIGlubGluZSBp
bnRvCisgICAgICAgIGVhY2ggYXR0cmlidXRlIGdldHRlciBwcm9maXRhYmx5LiBPdmVyIHRpbWUs
IEkgd291bGQgbGlrZSB0byBjb252ZXJ0CisgICAgICAgIGFsbCB0aGUgcGVyZm9ybWFuY2UgY3Jp
dGljYWwgdXNlcyBvZiB0b1Y4KE5vZGUqKSB0byB0b1Y4RmFzdC4gQXQgdGhhdAorICAgICAgICBw
b2ludCwgd2UgY2FuIGRlbGV0ZSB0b1Y4IGFuZCByZW5hbWUgdG9WOFNsb3cgdG8gdG9WOC4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAo
R2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKToKKwog
MjAxMi0xMC0wNSAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIE9wZW5UeXBlVmVydGljYWxEYXRhIGlzc3VlIHdpdGggRHJvaWRTYW5zRmFsbGJhY2su
dHRmIG9uIGNocm9taXVtLWFuZHJvaWQgYW5kIGNocm9taXVtLWxpbnV4CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2
aXNpb24gMTMwNTcxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkKQEAgLTUyNSw2ICs1MjUsMjAgQEAgaW5saW5lIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KE5vZGUqIAogICAgICAgICByZXR1cm4gd3JhcHBlcjsK
ICAgICByZXR1cm4gdG9WOFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0K
KworaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChOb2RlKiBub2RlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvLCBOb2RlKiBob2xkZXIpCit7CisgICAgaWYgKFVOTElL
RUxZKCFub2RlKSkKKyAgICAgICAgcmV0dXJuIHY4OjpOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKTsK
KyAgICAvLyBXaGF0IHdlJ2QgcmVhbGx5IGxpa2UgdG8gY2hlY2sgaGVyZSBpcyB3aGV0aGVyIHdl
J3JlIGluIHRoZSBtYWluIHdvcmxkIG9yCisgICAgLy8gaW4gYW4gaXNvbGF0ZWQgd29ybGQuIFRo
ZSBmYXN0ZXN0IHdheSB3ZSBrbm93IGhvdyB0byBkbyB0aGF0IGlzIHRvIGNoZWNrCisgICAgLy8g
d2hldGhlciB0aGUgaG9sZGVyJ3MgaW5saW5lIHdyYXBwZXIgaXMgdGhlIHNhbWUgd3JhcHBlciB3
ZSBzZWUgaW4gdGhlCisgICAgLy8gdjg6OkFjY2Vzc29ySW5mby4KKyAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlcldyYXBwZXIgPSBpbmZvLkhvbGRlcigpOworICAgIGlmIChob2xkZXIt
PndyYXBwZXIoKSAmJiAqaG9sZGVyLT53cmFwcGVyKCkgPT0gaG9sZGVyV3JhcHBlciAmJiBub2Rl
LT53cmFwcGVyKCkpCisgICAgICAgIHJldHVybiAqbm9kZS0+d3JhcHBlcigpOworICAgIHJldHVy
biB0b1Y4U2xvdyhub2RlLCBob2xkZXJXcmFwcGVyLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CiBF
TkQKICAgICB9CiAKQEAgLTEwNjIsMTggKzEwNzYsMTkgQEAgRU5ECiAgICAgICAgIHBvcnRBcnJh
eS0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdldElzb2xhdGUoKSksIHRvVjgocG9ydHNDb3B5W2ld
LmdldCgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSkpOwogICAgIHJldHVybiBw
b3J0QXJyYXk7CiBFTkQKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiICYmICRhdHRyRXh0LT57IkNh
Y2hlZEF0dHJpYnV0ZSJ9KSB7Ci0gICAgICAgICAgICBteSAkZ2V0dGVyRnVuYyA9ICRjb2RlR2Vu
ZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7Ci0gICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAgfSBlbHNpZiAoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiICYmICRhdHRy
RXh0LT57IkNhY2hlZEF0dHJpYnV0ZSJ9KSB7CisgICAgICAgIG15ICRnZXR0ZXJGdW5jID0gJGNv
ZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKTsKKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwogICAgIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogc2VyaWFsaXplZCA9IGltcC0+JHtnZXR0ZXJGdW5jfSgpOwogICAgIHZhbHVlID0g
c2VyaWFsaXplZCA/IHNlcmlhbGl6ZWQtPmRlc2VyaWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4odjg6Ok51bGwoaW5mby5HZXRJc29sYXRlKCkpKTsKICAgICBpbmZvLkhvbGRlcigpLT5T
ZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gdmFsdWU7CiBF
TkQKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgIiAuIFJldHVybk5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICRy
ZXN1bHQsICJpbmZvLkhvbGRlcigpIiwgImluZm8uR2V0SXNvbGF0ZSgpIikuIjtcbiIpOwotICAg
ICAgICB9CisgICAgfSBlbHNpZiAoSXNET01Ob2RlVHlwZShHZXRUeXBlRnJvbVNpZ25hdHVyZSgk
YXR0cmlidXRlLT5zaWduYXR1cmUpKSAmJiAkaW1wbENsYXNzTmFtZSBlcSAiTm9kZSIpIHsKKyAg
ICAgICAgIyBGSVhNRTogV2Ugd291bGQgbGlrZSB0byB1c2UgdG9WOEZhc3QgaW4gbW9yZSBzaXR1
YXRpb25zLgorICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHJldHVybiB0b1Y4
RmFzdCgkcmVzdWx0LCBpbmZvLCBpbXApO1xuIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gUmV0dXJuTmF0aXZlVG9KU1ZhbHVlKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZSwgJHJlc3VsdCwgImluZm8uSG9sZGVyKCkiLCAiaW5mby5HZXRJc29s
YXRlKCkiKS4iO1xuIik7CiAgICAgfQogCiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIn1c
blxuIik7ICAjIGVuZCBvZiBnZXR0ZXIK
</data>

          </attachment>
      

    </bug>

</bugzilla>