<?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>88681</bug_id>
          
          <creation_ts>2012-06-08 13:21:42 -0700</creation_ts>
          <short_desc>WebKit doesn&apos;t allow replacing the document element with a DocumentFragment containing one element</short_desc>
          <delta_ts>2012-06-11 21:11:08 -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>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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ms2ger (he/him; ⌚ UTC+1/+2)">Ms2ger</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>esprehn</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>644978</commentid>
    <comment_count>0</comment_count>
      <attachid>146636</attachid>
    <who name="Ms2ger (he/him; ⌚ UTC+1/+2)">Ms2ger</who>
    <bug_when>2012-06-08 13:21:42 -0700</bug_when>
    <thetext>Created attachment 146636
Patch

Found by &lt;http://w3c-test.org/webapps/DOMCore/tests/submissions/Ms2ger/Node-replaceChild.html&gt;. Can either of you turn this patch into something acceptable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646395</commentid>
    <comment_count>1</comment_count>
      <attachid>146952</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-06-11 16:19:15 -0700</bug_when>
    <thetext>Created attachment 146952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646407</commentid>
    <comment_count>2</comment_count>
      <attachid>146952</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-11 16:30:48 -0700</bug_when>
    <thetext>Comment on attachment 146952
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Covered by existing tests with some modifications.

Please explain how this bug manifested and how you fixed it. r- due to the lack of description.
Also, please add URLs of relevant specifications.

&gt; LayoutTests/ChangeLog:9
&gt; +        Reviewed by NOBODY (OOPS!).

This line should appear before the long description but below the bug URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646416</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-11 16:35:03 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=146952&amp;action=review

&gt; Source/WebCore/ChangeLog:8
&gt; +        Covered by existing tests with some modifications.

No need to spell this out if the test is clearly testing the new code. You only need to justify leaving out tests if it&apos;s not obvious that existing tests cover the code (e.g. if no tests output changes or if you&apos;re making a big change where the changed test output only seems to cover part of the change).

&gt; Source/WebCore/ChangeLog:11
&gt; +        (WebCore::Document::canReplaceChild):

Can use a line describing the fix, e.g. &quot;When the new child was a DocumentFragment we were incorrectly iterating over the Document&apos;s children instead of the DocumentFragment&apos;s children.&quot;

Part of the point of these change descriptions is so people can quickly decide if they want to take the time to look at the patch in detail, so even though that&apos;s obvious by a quick look at the patch, the change description is useful.

&gt; LayoutTests/fast/dom/Document/replace-child-expected.txt:1
&gt; +ALERT: &lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;

I think this is out of date from what you uploaded.

&gt; LayoutTests/fast/dom/Document/replace-child.html:41
&gt; +        debug(&apos;replacing element with element in fragment&apos;)
&gt; +        try {
&gt; +            var doc = parser.parseFromString(&apos;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;&lt;foo/&gt;&apos;, &quot;text/xml&quot;)
&gt; +            var fragment = doc.createDocumentFragment();
&gt; +            fragment.appendChild(doc.createElement(&apos;bar&apos;));
&gt; +            doc.replaceChild(fragment, doc.documentElement);
&gt; +        } catch (ex) {
&gt; +            debug(&apos;FAILED: &apos; + ex)
&gt; +            return;
&gt; +        }
&gt; +        debug(&apos;SUCCESS: &apos; + serializer.serializeToString(doc));
&gt; +        successCount++;

Can you use shouldNotThrow from js-test-pre.js here and shouldThrow below? Then you wouldn&apos;t need the successCount stuff either.

I know the test is already doing this, but the test is dumb. :)

&gt; LayoutTests/fast/dom/Document/replace-child.html:47
&gt; +            var doc = parser.parseFromString(&apos;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;&lt;foo/&gt;&apos;, &quot;text/xml&quot;)

Here and above, can you just use the HTML doctype of &lt;!DOCTYPE html&gt;. I don&apos;t see any benefit from using this long doctype just to be consistent with the rest of the uses in this test. Feel free to update the other cases in this test too if you want.

&gt; LayoutTests/fast/dom/Document/replace-child.html:50
&gt; +            fragment.appendChild(doc.createElement(&apos;bar&apos;));
&gt; +            fragment.appendChild(doc.createElement(&apos;baz&apos;));

It&apos;s really weird to me that this test uses unknown tagnames, but I suppose it&apos;s fine given that the other test-cases here do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646496</commentid>
    <comment_count>4</comment_count>
      <attachid>146981</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-06-11 17:59:03 -0700</bug_when>
    <thetext>Created attachment 146981
Patch

Made</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646498</commentid>
    <comment_count>5</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-06-11 18:02:59 -0700</bug_when>
    <thetext>(Err. Missed some quotes in the shell there...)

Made the requested changes and rewrote that test to be much shorter and use the shouldThrow/shouldNotThrow functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646600</commentid>
    <comment_count>6</comment_count>
      <attachid>146981</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-11 20:55:45 -0700</bug_when>
    <thetext>Comment on attachment 146981
Patch

Wow, that&apos;s 100x more readable now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646607</commentid>
    <comment_count>7</comment_count>
      <attachid>146981</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-11 21:10:58 -0700</bug_when>
    <thetext>Comment on attachment 146981
Patch

Clearing flags on attachment: 146981

Committed r120037: &lt;http://trac.webkit.org/changeset/120037&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646608</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-11 21:11:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146636</attachid>
            <date>2012-06-08 13:21:42 -0700</date>
            <delta_ts>2012-06-08 13:21:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>x</filename>
            <type>text/plain</type>
            <size>829</size>
            <attacher name="Ms2ger (he/him; ⌚ UTC+1/+2)">Ms2ger</attacher>
            
              <data encoding="base64">LS0tIERvY3VtZW50LmNwcC5vcmlnCTIwMTItMDYtMDggMjI6MTY6MzIuMDgwNzE5NDA1ICswMjAw
CisrKyBEb2N1bWVudC5jcHAJMjAxMi0wNi0wOCAyMjoxNjozNS44NzA3MTk0MDUgKzAyMDAKQEAg
LTMxNDIsMTcgKzMxNDIsMTcgQEAgYm9vbCBEb2N1bWVudDo6Y2FuUmVwbGFjZUNoaWxkKE5vZGUq
IG5ldwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgIH0KICAgICAKICAgICAvLyBUaGVuLCBzZWUgaG93IG1hbnkg
ZG9jdHlwZXMgYW5kIGVsZW1lbnRzIG1pZ2h0IGJlIGFkZGVkIGJ5IHRoZSBuZXcgY2hpbGQuCiAg
ICAgaWYgKG5ld0NoaWxkLT5ub2RlVHlwZSgpID09IERPQ1VNRU5UX0ZSQUdNRU5UX05PREUpIHsK
LSAgICAgICAgZm9yIChOb2RlKiBjID0gZmlyc3RDaGlsZCgpOyBjOyBjID0gYy0+bmV4dFNpYmxp
bmcoKSkgeworICAgICAgICBmb3IgKE5vZGUqIGMgPSBuZXdDaGlsZC0+Zmlyc3RDaGlsZCgpOyBj
OyBjID0gYy0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgc3dpdGNoIChjLT5ub2RlVHlw
ZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOgogICAgICAgICAgICAgY2Fz
ZSBDREFUQV9TRUNUSU9OX05PREU6CiAgICAgICAgICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5U
X05PREU6CiAgICAgICAgICAgICBjYXNlIERPQ1VNRU5UX05PREU6CiAgICAgICAgICAgICBjYXNl
IEVOVElUWV9OT0RFOgogICAgICAgICAgICAgY2FzZSBFTlRJVFlfUkVGRVJFTkNFX05PREU6CiAg
ICAgICAgICAgICBjYXNlIE5PVEFUSU9OX05PREU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146952</attachid>
            <date>2012-06-11 16:19:15 -0700</date>
            <delta_ts>2012-06-11 17:58:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88681-20120611161915.patch</filename>
            <type>text/plain</type>
            <size>6806</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5ODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA3YmVlNmM5ZDY5MTlj
YjU0NWM0ODJlMjFjNjQwMmRhNGQ3ODEzYy4uYTlhMGM1ODBmYThlOTk3YTFjNTYzYTliYmM0YTY2
YTk3ZDFlOTdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA2LTExICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIFdlYktpdCBkb2Vzbid0
IGFsbG93IHJlcGxhY2luZyB0aGUgZG9jdW1lbnQgZWxlbWVudCB3aXRoIGEgRG9jdW1lbnRGcmFn
bWVudCBjb250YWluaW5nIG9uZSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04ODY4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgd2l0aCBzb21lIG1v
ZGlmaWNhdGlvbnMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZCk6CisKIDIwMTItMDYtMDggIEVyaWsgQXJ2
aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbVjhdIEtlZXAgVGV4dFRyYWNr
TGlzdCBhbGl2ZSBhcyBsb25nIGFzIGl0cyBvd25lciBpcyBhbGl2ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggZGZiNDMyOWEwMDRlYjRjYjJlMzUyMGY1ZDJiMGE0NDZlMmFiNWY5ZC4uNjk4
MzE0YWMzNzY5ZGExM2I0ODBjNWY0OWEzMDgwMWFiYTZmZDQ1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC0zMTgwLDcgKzMxODAsNyBAQCBib29sIERvY3VtZW50OjpjYW5SZXBsYWNlQ2hp
bGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKQogICAgIAogICAgIC8vIFRoZW4sIHNl
ZSBob3cgbWFueSBkb2N0eXBlcyBhbmQgZWxlbWVudHMgbWlnaHQgYmUgYWRkZWQgYnkgdGhlIG5l
dyBjaGlsZC4KICAgICBpZiAobmV3Q2hpbGQtPm5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfRlJBR01F
TlRfTk9ERSkgewotICAgICAgICBmb3IgKE5vZGUqIGMgPSBmaXJzdENoaWxkKCk7IGM7IGMgPSBj
LT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGZvciAoTm9kZSogYyA9IG5ld0NoaWxkLT5maXJz
dENoaWxkKCk7IGM7IGMgPSBjLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICBzd2l0Y2gg
KGMtPm5vZGVUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQVRUUklCVVRFX05PREU6CiAgICAg
ICAgICAgICBjYXNlIENEQVRBX1NFQ1RJT05fTk9ERToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ODQ0MmFjNzZkY2FiYzA5
NjAxZDI4YjYwMTAxNDYwMDQ1NjgzZDJiLi5mZjQ4ZGMyYzQ2NTRmNTA2MTcyODA0M2RjNzZhZGNj
NGRkZDU1ZTMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDYtMTEgIEVsbGlvdHQgU3By
ZWhuICA8ZXNwcmVobkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViS2l0IGRvZXNuJ3QgYWxsb3cg
cmVwbGFjaW5nIHRoZSBkb2N1bWVudCBlbGVtZW50IHdpdGggYSBEb2N1bWVudEZyYWdtZW50IGNv
bnRhaW5pbmcgb25lIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg4NjgxCisKKyAgICAgICAgQWxzbyByZS1lbmFibGVzIGEgYnVuY2ggb2Yg
ZGlzYWJsZWQgdGVzdHMgdGhhdCBhcmUgbG9uZyBzaW5jZSBmaXhlZCBieQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL0RvY3VtZW50L3Jl
cGxhY2UtY2hpbGQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0RvY3VtZW50L3Jl
cGxhY2UtY2hpbGQuaHRtbDoKKwogMjAxMi0wNi0wOCAgU3RlcGhlbiBDaGVubmV5ICA8c2NoZW5u
ZXlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyLmNwcCBoYXMg
YnJva2VuIGNvbG9yIHRhYmxlIGNvZGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0RvY3VtZW50L3JlcGxhY2UtY2hpbGQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vRG9jdW1lbnQvcmVwbGFjZS1jaGlsZC1leHBlY3RlZC50eHQKaW5kZXggMWRlMjcwYmU4ZTRl
ZmZjMGJiOTI5Y2ZjNjIyNzA1MDdhNzY3Njk5ZC4uYjRlYTY3NDBkZDgxMjNkYzVjMWZmYTVkODVl
YWQ3NDEwNjQ1MmE0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQv
cmVwbGFjZS1jaGlsZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9j
dW1lbnQvcmVwbGFjZS1jaGlsZC1leHBlY3RlZC50eHQKQEAgLTEsNiArMSwxNyBAQAorQUxFUlQ6
IDwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4i
ICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KIFRo
aXMgdGVzdHMgdGhhdCB2YXJpb3VzIGNvbWJpbmF0aW9ucyBvZiByZXBsYWNlQ2hpbGQgb24gdGhl
IGRvY3VtZW50IHdvcmtzIGFzIHNwZWNpZmllZC4gSWYgdGhpcyB0ZXN0IHN1Y2NlZWRzLCB0aGVy
ZSB3aWxsIGJlIGEgbnVtYmVyIG9mICJTVUNDRVNTIiBsaW5lcyBiZWxvdyBmb2xsb3dlZCBieSAi
U1VDQ0VTUyAtIEFsbCB0ZXN0cyBzdWNjZWVkZWQiLgogcmVwbGFjaW5nIGVsZW1lbnQgd2l0aCBl
bGVtZW50CiBTVUNDRVNTOiA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1M
IDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEt
c3RyaWN0LmR0ZCI+PGJhci8+CityZXBsYWNpbmcgZWxlbWVudCB3aXRoIGVsZW1lbnQgaW4gZnJh
Z21lbnQKK1NVQ0NFU1M6IDwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwg
MS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1z
dHJpY3QuZHRkIj48YmFyLz4KK3JlcGxhY2luZyBlbGVtZW50IHdpdGggbXVsdGlwbGUgZWxlbWVu
dHMgaW4gZnJhZ21lbnQKK1NVQ0NFU1M6IGZhaWxlZCB3aXRoIGV4Y2VwdGlvbiBFcnJvcjogSElF
UkFSQ0hZX1JFUVVFU1RfRVJSOiBET00gRXhjZXB0aW9uIDMKIHJlcGxhY2luZyBlbGVtZW50IHdp
dGggZG9jdHlwZQogU1VDQ0VTUzogPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNW
RyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEu
ZHRkIj4KK3JlcGxhY2luZyBlbGVtZW50IHdpdGggZG9jdHlwZSB3aGVuIGEgZG9jdHlwZSBhbHJl
YWR5IGV4aXN0cworU1VDQ0VTUzogZmFpbGVkIHdpdGggZXhjZXB0aW9uIEVycm9yOiBISUVSQVJD
SFlfUkVRVUVTVF9FUlI6IERPTSBFeGNlcHRpb24gMworcmVwbGFjaW5nIGRvY3R5cGUgd2l0aCBk
b2N0eXBlCitTVUNDRVNTOiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEu
MS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQi
Pjxmb28vPgorcmVwbGFjaW5nIGRvY3R5cGUgd2l0aCBlbGVtZW50CitTVUNDRVNTOiA8YmFyLz4K
IFNVQ0NFU1MgLSBBbGwgdGVzdHMgc3VjY2VlZGVkIQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRG9jdW1lbnQvcmVwbGFjZS1jaGlsZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vRG9jdW1lbnQvcmVwbGFjZS1jaGlsZC5odG1sCmluZGV4IDRiYTAyNjgzMzk0Njg3MDZlN2Zm
ODc2Y2E4ZTNjZDY2OGI5ZmVhY2IuLjNhZmJhNmVhNzczMzhjMmQ2NzNkMjgxNTBkOWVhNTBmOTZi
NGVmZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3JlcGxhY2Ut
Y2hpbGQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZXBsYWNlLWNo
aWxkLmh0bWwKQEAgLTI2LDYgKzI2LDM3IEBACiAgICAgICAgIHN1Y2Nlc3NDb3VudCsrOwogICAg
IH0KIAorICAgIGZ1bmN0aW9uIHJlcGxhY2VFbGVtZW50V2l0aEVsZW1lbnRJbkZyYWdtZW50KCkg
eworICAgICAgICBkZWJ1ZygncmVwbGFjaW5nIGVsZW1lbnQgd2l0aCBlbGVtZW50IGluIGZyYWdt
ZW50JykKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZhciBkb2MgPSBwYXJzZXIucGFyc2VG
cm9tU3RyaW5nKCc8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBT
dHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0
LmR0ZCI+PGZvby8+JywgInRleHQveG1sIikKKyAgICAgICAgICAgIHZhciBmcmFnbWVudCA9IGRv
Yy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRD
aGlsZChkb2MuY3JlYXRlRWxlbWVudCgnYmFyJykpOworICAgICAgICAgICAgZG9jLnJlcGxhY2VD
aGlsZChmcmFnbWVudCwgZG9jLmRvY3VtZW50RWxlbWVudCk7CisgICAgICAgIH0gY2F0Y2ggKGV4
KSB7CisgICAgICAgICAgICBkZWJ1ZygnRkFJTEVEOiAnICsgZXgpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgZGVidWcoJ1NVQ0NFU1M6ICcgKyBzZXJpYWxpemVyLnNl
cmlhbGl6ZVRvU3RyaW5nKGRvYykpOworICAgICAgICBzdWNjZXNzQ291bnQrKzsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiByZXBsYWNlRWxlbWVudFdpdGhNdWx0aXBsZUVsZW1lbnRzSW5GcmFnbWVu
dCgpIHsKKyAgICAgICAgZGVidWcoJ3JlcGxhY2luZyBlbGVtZW50IHdpdGggbXVsdGlwbGUgZWxl
bWVudHMgaW4gZnJhZ21lbnQnKQorICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFyIGRvYyA9
IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoJzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9E
VEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFRE
L3hodG1sMS1zdHJpY3QuZHRkIj48Zm9vLz4nLCAidGV4dC94bWwiKQorICAgICAgICAgICAgdmFy
IGZyYWdtZW50ID0gZG9jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICAgICAgICAgIGZy
YWdtZW50LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVFbGVtZW50KCdiYXInKSk7CisgICAgICAgICAg
ICBmcmFnbWVudC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlRWxlbWVudCgnYmF6JykpOworICAgICAg
ICAgICAgZG9jLnJlcGxhY2VDaGlsZChmcmFnbWVudCwgZG9jLmRvY3VtZW50RWxlbWVudCk7Cisg
ICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAgICBkZWJ1ZygnU1VDQ0VTUzogZmFpbGVk
IHdpdGggZXhjZXB0aW9uICcgKyBleCkKKyAgICAgICAgICAgIHN1Y2Nlc3NDb3VudCsrOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGRlYnVnKCdGQUlMRUQ6IHN1Y2Nl
ZWRlZCB3aGVuIHRlc3Qgc2hvdWxkIGhhdmUgZmFpbGVkICcgKyBzZXJpYWxpemVyLnNlcmlhbGl6
ZVRvU3RyaW5nKGRvYykpOworICAgIH0KKwogICAgIGZ1bmN0aW9uIHJlcGxhY2VFbGVtZW50V2l0
aERvY3R5cGUoKSB7CiAgICAgICAgIGRlYnVnKCdyZXBsYWNpbmcgZWxlbWVudCB3aXRoIGRvY3R5
cGUnKQogICAgICAgICB0cnkgewpAQCAtMTA3LDE3ICsxMzgsMTQgQEAKICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICByZXBsYWNlRWxlbWVu
dFdpdGhFbGVtZW50KCk7CisgICAgICAgIHJlcGxhY2VFbGVtZW50V2l0aEVsZW1lbnRJbkZyYWdt
ZW50KCk7CisgICAgICAgIHJlcGxhY2VFbGVtZW50V2l0aE11bHRpcGxlRWxlbWVudHNJbkZyYWdt
ZW50KCk7CiAgICAgICAgIHJlcGxhY2VFbGVtZW50V2l0aERvY3R5cGUoKTsKLSAgICAgICAgCi0g
ICAgICAgIC8vIEZJWE1FOiBPbmNlIERvY3VtZW50VHlwZSBub2RlcyBhcmUgZXhwb3NlZCBhcyBj
aGlsZHJlbiBvZiB0aGUgZG9jdW1lbnQgd2UgY2FuIGFkZCB0aGVzZSBjaGVja3MgYmFjay4KLSAg
ICAgICAgLy8gU2VlIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzUx
Ci0gICAgICAgIGlmICgwKSB7CiAgICAgICAgIHJlcGxhY2VFbGVtZW50V2l0aERvY3R5cGVXaGVu
RG9jdHlwZUFscmVhZHlFeGlzdHMoKTsgICAgICAgIAogICAgICAgICByZXBsYWNlRG9jdHlwZVdp
dGhEb2N0eXBlKCk7CiAgICAgICAgIHJlcGxhY2VEb2N0eXBlV2l0aEVsZW1lbnQoKTsKLSAgICAg
ICAgfQogCi0gICAgICAgIGlmIChzdWNjZXNzQ291bnQgPT0gMikKKyAgICAgICAgaWYgKHN1Y2Nl
c3NDb3VudCA9PSA3KQogICAgICAgICAgICAgZGVidWcoJ1NVQ0NFU1MgLSBBbGwgdGVzdHMgc3Vj
Y2VlZGVkIScpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRlYnVnKCdGQUlMRUQgLSBPbmUg
b3IgbW9yZSB0ZXN0cyBmYWlsZWQnKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146981</attachid>
            <date>2012-06-11 17:59:03 -0700</date>
            <delta_ts>2012-06-11 21:10:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88681-20120611175902.patch</filename>
            <type>text/plain</type>
            <size>14880</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5ODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA3YmVlNmM5ZDY5MTlj
YjU0NWM0ODJlMjFjNjQwMmRhNGQ3ODEzYy4uZDY5NjIzOTIxMTJlZjM3YTFkZGUxMjljMDYwZTVm
NmM0NTAyMzJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA2LTExICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIFdlYktpdCBkb2Vzbid0
IGFsbG93IHJlcGxhY2luZyB0aGUgZG9jdW1lbnQgZWxlbWVudCB3aXRoIGEgRG9jdW1lbnRGcmFn
bWVudCBjb250YWluaW5nIG9uZSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04ODY4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEZpeCBidWcgd2hlcmUgcmVwbGFjaW5nIGFuIGltbWVkaWF0ZSBj
aGlsZCBvZiBhIERvY3VtZW50IHdpdGggYSBEb2N1bWVudEZyYWdtZW50CisgICAgICAgIHdvdWxk
IHRocm93IGEgSElFUkFSQ0hZX1JFUVVFU1RfRVJSIGluc3RlYWQgb2YgcmVwbGFjaW5nIHRoZSBu
b2RlIGFzIHJlcXVpcmVkIGJ5IERPTTQuCisgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1RSL2Rv
bWNvcmUvI211dGF0aW9uLWFsZ29yaXRobXMKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2FuUmVwbGFjZUNoaWxkKToKKyAgICAgICAg
ICAgIFdoZW4gdGhlIG5ld0NoaWxkIHdhcyBhIERvY3VtZW50RnJhZ21lbnQgd2UgaW5jb3JyZWN0
bHkKKyAgICAgICAgICAgIGl0ZXJhdGVkIG92ZXIgdGhlIGRvY3VtZW50J3MgY2hpbGRyZW4gdHdp
Y2UgaW5zdGVhZCBvZiB0aGUKKyAgICAgICAgICAgIGZyYWdtZW50IHdoZW4gY291bnRpbmcgdGhl
IHRvdGFsIG51bWJlciBvZiBlbGVtZW50cyBhbmQKKyAgICAgICAgICAgIGRvY3R5cGVzIHRvIGVu
Zm9jZSB0aGF0IHRoZXJlJ3Mgb25seSBvbmUgb2YgZWFjaC4KKwogMjAxMi0wNi0wOCAgRXJpayBB
cnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gS2VlcCBUZXh0VHJh
Y2tMaXN0IGFsaXZlIGFzIGxvbmcgYXMgaXRzIG93bmVyIGlzIGFsaXZlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCBkZmI0MzI5YTAwNGViNGNiMmUzNTIwZjVkMmIwYTQ0NmUyYWI1ZjlkLi42
OTgzMTRhYzM3NjlkYTEzYjQ4MGM1ZjQ5YTMwODAxYWJhNmZkNDUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTMxODAsNyArMzE4MCw3IEBAIGJvb2wgRG9jdW1lbnQ6OmNhblJlcGxhY2VD
aGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQpCiAgICAgCiAgICAgLy8gVGhlbiwg
c2VlIGhvdyBtYW55IGRvY3R5cGVzIGFuZCBlbGVtZW50cyBtaWdodCBiZSBhZGRlZCBieSB0aGUg
bmV3IGNoaWxkLgogICAgIGlmIChuZXdDaGlsZC0+bm9kZVR5cGUoKSA9PSBET0NVTUVOVF9GUkFH
TUVOVF9OT0RFKSB7Ci0gICAgICAgIGZvciAoTm9kZSogYyA9IGZpcnN0Q2hpbGQoKTsgYzsgYyA9
IGMtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBjID0gbmV3Q2hpbGQtPmZp
cnN0Q2hpbGQoKTsgYzsgYyA9IGMtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIHN3aXRj
aCAoYy0+bm9kZVR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBBVFRSSUJVVEVfTk9ERToKICAg
ICAgICAgICAgIGNhc2UgQ0RBVEFfU0VDVElPTl9OT0RFOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU4NDQyYWM3NmRjYWJj
MDk2MDFkMjhiNjAxMDE0NjAwNDU2ODNkMmIuLjZiOWQ0YTFiY2Q0MDgzMTMxMGYwNDUwY2M2ODI0
NDQ0NDQ1ZjA2M2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNi0xMSAgRWxsaW90dCBT
cHJlaG4gIDxlc3ByZWhuQGdtYWlsLmNvbT4KKworICAgICAgICBXZWJLaXQgZG9lc24ndCBhbGxv
dyByZXBsYWNpbmcgdGhlIGRvY3VtZW50IGVsZW1lbnQgd2l0aCBhIERvY3VtZW50RnJhZ21lbnQg
Y29udGFpbmluZyBvbmUgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODg2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZS1lbmFibGVzIGEgYnVuY2ggb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCBh
cmUgbG9uZyBzaW5jZSBmaXhlZCBhbmQgcmV3cml0ZXMKKyAgICAgICAgdGhlIHRlc3RzIHRvIHVz
ZSBhIG1vcmUgbW9kZXJuIGpzLXRlc3QtcHJlLmpzIHN0eWxlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NTEKKworICAgICAgICAqIGZhc3QvZG9t
L0RvY3VtZW50L3JlcGxhY2UtY2hpbGQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9t
L0RvY3VtZW50L3JlcGxhY2UtY2hpbGQuaHRtbDoKKwogMjAxMi0wNi0wOCAgU3RlcGhlbiBDaGVu
bmV5ICA8c2NoZW5uZXlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYkNvcmU6OkltYWdlQnVm
ZmVyLmNwcCBoYXMgYnJva2VuIGNvbG9yIHRhYmxlIGNvZGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0RvY3VtZW50L3JlcGxhY2UtY2hpbGQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVwbGFjZS1jaGlsZC1leHBlY3RlZC50eHQKaW5kZXgg
MWRlMjcwYmU4ZTRlZmZjMGJiOTI5Y2ZjNjIyNzA1MDdhNzY3Njk5ZC4uYTMzYzIxOTc2NjZlNjRm
OTc4N2ExNjE1NTI5ZDZlNTExOGZjNTNkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vRG9jdW1lbnQvcmVwbGFjZS1jaGlsZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRG9jdW1lbnQvcmVwbGFjZS1jaGlsZC1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw0
MSBAQAotVGhpcyB0ZXN0cyB0aGF0IHZhcmlvdXMgY29tYmluYXRpb25zIG9mIHJlcGxhY2VDaGls
ZCBvbiB0aGUgZG9jdW1lbnQgd29ya3MgYXMgc3BlY2lmaWVkLiBJZiB0aGlzIHRlc3Qgc3VjY2Vl
ZHMsIHRoZXJlIHdpbGwgYmUgYSBudW1iZXIgb2YgIlNVQ0NFU1MiIGxpbmVzIGJlbG93IGZvbGxv
d2VkIGJ5ICJTVUNDRVNTIC0gQWxsIHRlc3RzIHN1Y2NlZWRlZCIuCitUaGlzIHRlc3RzIHRoYXQg
dmFyaW91cyBjb21iaW5hdGlvbnMgb2YgcmVwbGFjZUNoaWxkIG9uIHRoZSBkb2N1bWVudCB3b3Jr
cyBhcyBzcGVjaWZpZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiByZXBsYWNp
bmcgZWxlbWVudCB3aXRoIGVsZW1lbnQKLVNVQ0NFU1M6IDwhRE9DVFlQRSBodG1sIFBVQkxJQyAi
LS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94
aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj48YmFyLz4KK1BBU1MgZG9jLnJlcGxhY2VDaGls
ZChuZXdDaGlsZCwgZG9jLmRvY3VtZW50RWxlbWVudCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
Cis8IURPQ1RZUEUgaHRtbD48ZGl2Lz4KKworcmVwbGFjaW5nIGVsZW1lbnQgd2l0aCBlbGVtZW50
IGluIGZyYWdtZW50CitQQVNTIGRvYy5yZXBsYWNlQ2hpbGQoZnJhZ21lbnQsIGRvYy5kb2N1bWVu
dEVsZW1lbnQpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KKzwhRE9DVFlQRSBodG1sPjxkaXYv
PgorCityZXBsYWNpbmcgZWxlbWVudCB3aXRoIG11bHRpcGxlIGVsZW1lbnRzIGluIGZyYWdtZW50
CitQQVNTIGRvYy5yZXBsYWNlQ2hpbGQoZnJhZ21lbnQsIGRvYy5kb2N1bWVudEVsZW1lbnQpOyB0
aHJldyBleGNlcHRpb24gRXJyb3I6IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjogRE9NIEV4Y2VwdGlv
biAzLgorPCFET0NUWVBFIGh0bWw+PGJvZHkvPgorCiByZXBsYWNpbmcgZWxlbWVudCB3aXRoIGRv
Y3R5cGUKLVNVQ0NFU1M6IDwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4x
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+
Ci1TVUNDRVNTIC0gQWxsIHRlc3RzIHN1Y2NlZWRlZCEKK1BBU1MgZG9jLnJlcGxhY2VDaGlsZChu
ZXdDaGlsZCwgZG9jLmRvY3VtZW50RWxlbWVudCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCis8
IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3
LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgorCityZXBsYWNpbmcgZWxl
bWVudCB3aXRoIGRvY3R5cGUgd2hlbiBhIGRvY3R5cGUgYWxyZWFkeSBleGlzdHMKK1BBU1MgZG9j
LnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgZG9jLmRvY3VtZW50RWxlbWVudCkgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBISUVSQVJDSFlfUkVRVUVTVF9FUlI6IERPTSBFeGNlcHRpb24gMy4KKzwhRE9D
VFlQRSBodG1sPjxib2R5Lz4KKworcmVwbGFjaW5nIGRvY3R5cGUgd2l0aCBkb2N0eXBlCitQQVNT
IGRvYy5yZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIGRvYy5kb2N0eXBlKSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KKzwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIg
Imh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PGJvZHkv
PgorCityZXBsYWNpbmcgZG9jdHlwZSB3aXRoIGVsZW1lbnQKK1BBU1MgZG9jLnJlcGxhY2VDaGls
ZChuZXdDaGlsZCwgZG9jLmRvY3R5cGUpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorPGJhci8+
CisKK3JlcGxhY2luZyBlbGVtZW50IHdpdGggZG9jdHlwZSB3aGVuIGFuIGVsZW1lbnQgYWxyZWFk
eSBleGlzdHMKK1BBU1MgZG9jLnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgZG9jLmRvY3VtZW50RWxl
bWVudCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBISUVSQVJDSFlfUkVRVUVTVF9FUlI6IERPTSBF
eGNlcHRpb24gMy4KKzwhRE9DVFlQRSBodG1sPjxib2R5Lz4KKworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0RvY3VtZW50L3JlcGxhY2UtY2hpbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RvY3VtZW50L3JlcGxhY2UtY2hpbGQuaHRtbAppbmRleCA0YmEwMjY4MzM5NDY4NzA2ZTdm
Zjg3NmNhOGUzY2Q2NjhiOWZlYWNiLi41MGRmYTJmOTEzN2RhZDIzODUxZjQ5NDE1ZWQ4ZTg2NmVl
MzZkNWY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZXBsYWNl
LWNoaWxkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVwbGFjZS1j
aGlsZC5odG1sCkBAIC0xLDEzMSArMSw4MCBAQAotPGh0bWw+Cis8IURPQ1RZUEUgaHRtbD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KICAgICB2YXIgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpOwogICAgIHZhciBzZXJp
YWxpemVyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKTsKLSAgICB2YXIgc3VjY2Vzc0NvdW50ID0gMDsK
LSAgICAKLSAgICBmdW5jdGlvbiBkZWJ1ZyhzdHIpIHsKLSAgICAgICAgdmFyIGNvbnNvbGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOwotICAgICAgICB2YXIgbGkgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwotICAgICAgICBsaS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShzdHIpKTsKLSAgICAgICAgY29uc29sZS5hcHBlbmRDaGlsZChsaSk7
Ci0gICAgfQotICAgIAotICAgIC8vIFJlcGxhY2luZyBlbGVtZW50IHRlc3RzCi0gICAgZnVuY3Rp
b24gcmVwbGFjZUVsZW1lbnRXaXRoRWxlbWVudCgpIHsKLSAgICAgICAgZGVidWcoJ3JlcGxhY2lu
ZyBlbGVtZW50IHdpdGggZWxlbWVudCcpCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICB2YXIg
ZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZygnPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9X
M0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1s
MS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPjxmb28vPicsICJ0ZXh0L3htbCIpCi0gICAgICAgICAg
ICB2YXIgbmV3Q2hpbGQgPSBkb2MuY3JlYXRlRWxlbWVudCgnYmFyJyk7Ci0gICAgICAgICAgICBk
b2MucmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBkb2MuZG9jdW1lbnRFbGVtZW50KQotICAgICAgICB9
IGNhdGNoIChleCkgewotICAgICAgICAgICAgZGVidWcoJ0ZBSUxFRDogJyArIGV4KQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGRlYnVnKCdTVUNDRVNTOiAnICsgc2Vy
aWFsaXplci5zZXJpYWxpemVUb1N0cmluZyhkb2MpKTsKLSAgICAgICAgc3VjY2Vzc0NvdW50Kys7
Ci0gICAgfQorICAgIHZhciBkb2MsIG5ld0NoaWxkLCBmcmFnbWVudDsKIAotICAgIGZ1bmN0aW9u
IHJlcGxhY2VFbGVtZW50V2l0aERvY3R5cGUoKSB7Ci0gICAgICAgIGRlYnVnKCdyZXBsYWNpbmcg
ZWxlbWVudCB3aXRoIGRvY3R5cGUnKQotICAgICAgICB0cnkgewotICAgICAgICAgICAgdmFyIGRv
YyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoJzxmb28vPicsICJ0ZXh0L3htbCIpCi0gICAgICAg
ICAgICB2YXIgbmV3Q2hpbGQgPSBkb2MuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBl
KCdzdmcnLCAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nLCAnaHR0cDovL3d3dy53My5vcmcvR3Jh
cGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJykKLSAgICAgICAgICAgIGRvYy5yZXBsYWNlQ2hp
bGQobmV3Q2hpbGQsIGRvYy5kb2N1bWVudEVsZW1lbnQpCi0gICAgICAgIH0gY2F0Y2ggKGV4KSB7
Ci0gICAgICAgICAgICBkZWJ1ZygnRkFJTEVEOiAnICsgZXgpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgZGVidWcoJ1NVQ0NFU1M6ICcgKyBzZXJpYWxpemVyLnNlcmlh
bGl6ZVRvU3RyaW5nKGRvYykpOwotICAgICAgICBzdWNjZXNzQ291bnQrKzsKKyAgICBmdW5jdGlv
biBkdW1wRG9jdW1lbnQoKSB7CisgICAgICAgIGRlYnVnKGVzY2FwZUhUTUwoc2VyaWFsaXplci5z
ZXJpYWxpemVUb1N0cmluZyhkb2MpKSArICc8YnI+Jyk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24g
cmVwbGFjZUVsZW1lbnRXaXRoRG9jdHlwZVdoZW5Eb2N0eXBlQWxyZWFkeUV4aXN0cygpIHsKLSAg
ICAgICAgZGVidWcoJ3JlcGxhY2luZyBlbGVtZW50IHdpdGggZG9jdHlwZSB3aGVuIGEgZG9jdHlw
ZSBhbHJlYWR5IGV4aXN0cycpCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICB2YXIgZG9jID0g
cGFyc2VyLnBhcnNlRnJvbVN0cmluZygnPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RU
RCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQv
eGh0bWwxLXN0cmljdC5kdGQiPjxmb28vPicsICAgICJ0ZXh0L3htbCIpCi0gICAgICAgICAgICB2
YXIgbmV3Q2hpbGQgPSBkb2MuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKCdzdmcn
LCAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nLCAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3Mv
U1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJykKLSAgICAgICAgICAgIGRvYy5yZXBsYWNlQ2hpbGQobmV3
Q2hpbGQsIGRvYy5kb2N1bWVudEVsZW1lbnQpICAgICAgICAKLSAgICAgICAgfSBjYXRjaCAoZXgp
IHsKLSAgICAgICAgICAgIGRlYnVnKCdTVUNDRVNTOiBmYWlsZWQgd2l0aCBleGNlcHRpb24gJyAr
IGV4KQotICAgICAgICAgICAgc3VjY2Vzc0NvdW50Kys7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgZGVidWcoJ0ZBSUxFRDogc3VjY2VlZGVkIHdoZW4gdGVzdCBzaG91
bGQgaGF2ZSBmYWlsZWQgJyArIHNlcmlhbGl6ZXIuc2VyaWFsaXplVG9TdHJpbmcoZG9jKSk7Cisg
ICAgZnVuY3Rpb24gdGVzdChuYW1lLCBmbikgeworICAgICAgICBkZWJ1ZyhuYW1lKTsKKyAgICAg
ICAgZm4oKTsKKyAgICAgICAgZHVtcERvY3VtZW50KCk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24g
cmVwbGFjZURvY3R5cGVXaXRoRG9jdHlwZSgpIHsKLSAgICAgICAgZGVidWcoJ3JlcGxhY2luZyBk
b2N0eXBlIHdpdGggZG9jdHlwZScpCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICB2YXIgZG9j
ID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZygnPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0Mv
L0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9E
VEQveGh0bWwxLXN0cmljdC5kdGQiPjxmb28vPicsICJ0ZXh0L3htbCIpCi0gICAgICAgICAgICB2
YXIgbmV3Q2hpbGQgPSBkb2MuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKCdzdmcn
LCAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nLCAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3Mv
U1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJykKLSAgICAgICAgICAgIGRvYy5yZXBsYWNlQ2hpbGQobmV3
Q2hpbGQsIGRvYy5kb2N0eXBlKSAgICAgICAgICAgICAgICAKLSAgICAgICAgfSBjYXRjaCAoZXgp
IHsKLSAgICAgICAgICAgIGRlYnVnKCdGQUlMRUQ6ICcgKyBleCkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICBkZWJ1ZygnU1VDQ0VTUzogJyArIHNlcmlhbGl6ZXIuc2Vy
aWFsaXplVG9TdHJpbmcoZG9jKSk7Ci0gICAgICAgIHN1Y2Nlc3NDb3VudCsrOwotICAgIH0KLSAg
ICAKLSAgICBmdW5jdGlvbiByZXBsYWNlRG9jdHlwZVdpdGhFbGVtZW50KCkgewotICAgICAgICAg
ZGVidWcoJ3JlcGxhY2luZyBkb2N0eXBlIHdpdGggZWxlbWVudCcpCi0gICAgICAgICB0cnkgewot
ICAgICAgICAgICAgIHZhciBkb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKCc8IURPQ1RZUEUg
aHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3
dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+PGZvby8+JywgInRleHQv
eG1sIikKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGRvY3VtZW50
IGVsZW1lbnQKLSAgICAgICAgICAgICBkb2MucmVtb3ZlQ2hpbGQoZG9jLmRvY3VtZW50RWxlbWVu
dCk7Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICAgdmFyIG5ld0NoaWxkID0gZG9jLmNyZWF0
ZUVsZW1lbnQoJ2JhcicpOwotICAgICAgICAgICAgIGFsZXJ0KHNlcmlhbGl6ZXIuc2VyaWFsaXpl
VG9TdHJpbmcoZG9jKSkKLSAgICAgICAgICAgICBkb2MucmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBk
b2MuZG9jdHlwZSkgICAgICAgICAgICAgICAgCi0gICAgICAgICB9IGNhdGNoIChleCkgewotICAg
ICAgICAgICAgIGRlYnVnKCdGQUlMRUQ6ICcgKyBleCkKLSAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICB9Ci0gICAgICAgICBkZWJ1ZygnU1VDQ0VTUzogJyArIHNlcmlhbGl6ZXIuc2VyaWFs
aXplVG9TdHJpbmcoZG9jKSk7Ci0gICAgICAgICBzdWNjZXNzQ291bnQrKzsKLSAgICAgfQotICAg
IAotICAgICBmdW5jdGlvbiByZXBsYWNlRG9jdHlwZVdpdGhFbGVtZW50V2hlbkVsZW1lbnRBbHJl
YWR5RXhpc3RzKCkgewotICAgICAgICAgZGVidWcoJ3JlcGxhY2luZyBlbGVtZW50IHdpdGggZG9j
dHlwZSB3aGVuIGFuIGVsZW1lbnQgYWxyZWFkeSBleGlzdHMnKQotICAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgICB2YXIgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZygnPCFET0NUWVBFIGh0
bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cu
dzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPjxmb28vPicsICAgICJ0ZXh0
L3htbCIpCi0gICAgICAgICAgICAgYWxlcnQoc2VyaWFsaXplci5zZXJpYWxpemVUb1N0cmluZyhk
b2MpKTsKLSAgICAgICAgICAgICB2YXIgbmV3Q2hpbGQgPSBkb2MuaW1wbGVtZW50YXRpb24uY3Jl
YXRlRG9jdW1lbnRUeXBlKCdzdmcnLCAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nLCAnaHR0cDov
L3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJykKLSAgICAgICAgICAg
ICBkb2MucmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBkb2MuZG9jdW1lbnRFbGVtZW50KQotICAgICAg
ICAgfSBjYXRjaCAoZXgpIHsKLSAgICAgICAgICAgICBkZWJ1ZygnU1VDQ0VTUzogZmFpbGVkIHdp
dGggZXhjZXB0aW9uICcgKyBleCkKLSAgICAgICAgICAgICBzdWNjZXNzQ291bnQrKzsKLSAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0gICAgICAgICBkZWJ1ZygnRkFJTEVEOiBzdWNj
ZWVkZWQgd2hlbiB0ZXN0IHNob3VsZCBoYXZlIGZhaWxlZCAnICsgc2VyaWFsaXplci5zZXJpYWxp
emVUb1N0cmluZyhkb2MpKTsKLSAgICAgfQotICAgCi0gICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
LSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBkZXNjcmlwdGlvbignVGhpcyB0
ZXN0cyB0aGF0IHZhcmlvdXMgY29tYmluYXRpb25zIG9mIHJlcGxhY2VDaGlsZCBvbiB0aGUgZG9j
dW1lbnQgd29ya3MgYXMgc3BlY2lmaWVkLicpOwogCi0gICAgICAgIHJlcGxhY2VFbGVtZW50V2l0
aEVsZW1lbnQoKTsKLSAgICAgICAgcmVwbGFjZUVsZW1lbnRXaXRoRG9jdHlwZSgpOworICAgIHRl
c3QoJ3JlcGxhY2luZyBlbGVtZW50IHdpdGggZWxlbWVudCcsIGZ1bmN0aW9uKCkgeworICAgICAg
ICBkb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKCc8IURPQ1RZUEUgaHRtbD48Ym9keS8+Jywg
J3RleHQveG1sJyk7CisgICAgICAgIG5ld0NoaWxkID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OwogICAgICAgICAKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgRG9jdW1lbnRUeXBlIG5vZGVzIGFy
ZSBleHBvc2VkIGFzIGNoaWxkcmVuIG9mIHRoZSBkb2N1bWVudCB3ZSBjYW4gYWRkIHRoZXNlIGNo
ZWNrcyBiYWNrLgotICAgICAgICAvLyBTZWUgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI3NTEKLSAgICAgICAgaWYgKDApIHsKLSAgICAgICAgcmVwbGFjZUVsZW1lbnRX
aXRoRG9jdHlwZVdoZW5Eb2N0eXBlQWxyZWFkeUV4aXN0cygpOyAgICAgICAgCi0gICAgICAgIHJl
cGxhY2VEb2N0eXBlV2l0aERvY3R5cGUoKTsKLSAgICAgICAgcmVwbGFjZURvY3R5cGVXaXRoRWxl
bWVudCgpOwotICAgICAgICB9CisgICAgICAgIHNob3VsZE5vdFRocm93KCdkb2MucmVwbGFjZUNo
aWxkKG5ld0NoaWxkLCBkb2MuZG9jdW1lbnRFbGVtZW50KScpOworICAgIH0pOwogCi0gICAgICAg
IGlmIChzdWNjZXNzQ291bnQgPT0gMikKLSAgICAgICAgICAgIGRlYnVnKCdTVUNDRVNTIC0gQWxs
IHRlc3RzIHN1Y2NlZWRlZCEnKQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkZWJ1ZygnRkFJ
TEVEIC0gT25lIG9yIG1vcmUgdGVzdHMgZmFpbGVkJykKLSAgICB9CisgICAgdGVzdCgncmVwbGFj
aW5nIGVsZW1lbnQgd2l0aCBlbGVtZW50IGluIGZyYWdtZW50JywgZnVuY3Rpb24oKSB7ICAgICAg
ICAKKyAgICAgICAgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZygnPCFET0NUWVBFIGh0bWw+
PGJvZHkvPicsICd0ZXh0L3htbCcpOworICAgICAgICBmcmFnbWVudCA9IGRvYy5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7CisgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVF
bGVtZW50KCdkaXYnKSk7CisKKyAgICAgICAgc2hvdWxkTm90VGhyb3coJ2RvYy5yZXBsYWNlQ2hp
bGQoZnJhZ21lbnQsIGRvYy5kb2N1bWVudEVsZW1lbnQpOycpOworICAgIH0pOworCisgICAgdGVz
dCgncmVwbGFjaW5nIGVsZW1lbnQgd2l0aCBtdWx0aXBsZSBlbGVtZW50cyBpbiBmcmFnbWVudCcs
IGZ1bmN0aW9uKCkgeworICAgICAgICBkb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKCc8IURP
Q1RZUEUgaHRtbD48Ym9keS8+JywgJ3RleHQveG1sJyk7CisgICAgICAgIGZyYWdtZW50ID0gZG9j
LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQo
ZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQo
ZG9jLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAgICAgIAorICAgICAgICBzaG91bGRUaHJv
dygnZG9jLnJlcGxhY2VDaGlsZChmcmFnbWVudCwgZG9jLmRvY3VtZW50RWxlbWVudCk7Jyk7Cisg
ICAgfSk7CisKKyAgICB0ZXN0KCdyZXBsYWNpbmcgZWxlbWVudCB3aXRoIGRvY3R5cGUnLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZygnPGJvZHkvPics
ICd0ZXh0L3htbCcpOworICAgICAgICBuZXdDaGlsZCA9IGRvYy5pbXBsZW1lbnRhdGlvbi5jcmVh
dGVEb2N1bWVudFR5cGUoJ3N2ZycsICctLy9XM0MvL0RURCBTVkcgMS4xLy9FTicsICdodHRwOi8v
d3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQnKTsKKyAgICAgICAgCisg
ICAgICAgIHNob3VsZE5vdFRocm93KCdkb2MucmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBkb2MuZG9j
dW1lbnRFbGVtZW50KScpOworICAgIH0pOworCisgICAgdGVzdCgncmVwbGFjaW5nIGVsZW1lbnQg
d2l0aCBkb2N0eXBlIHdoZW4gYSBkb2N0eXBlIGFscmVhZHkgZXhpc3RzJywgZnVuY3Rpb24oKSB7
CisgICAgICAgIGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoJzwhRE9DVFlQRSBodG1sPjxi
b2R5Lz4nLCAndGV4dC94bWwnKTsKKyAgICAgICAgbmV3Q2hpbGQgPSBkb2MuaW1wbGVtZW50YXRp
b24uY3JlYXRlRG9jdW1lbnRUeXBlKCdzdmcnLCAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nLCAn
aHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJyk7CisgICAg
ICAgIAorICAgICAgICBzaG91bGRUaHJvdygnZG9jLnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgZG9j
LmRvY3VtZW50RWxlbWVudCknKTsKKyAgICB9KTsKKworICAgIHRlc3QoJ3JlcGxhY2luZyBkb2N0
eXBlIHdpdGggZG9jdHlwZScsIGZ1bmN0aW9uKCkgeworICAgICAgICBkb2MgPSBwYXJzZXIucGFy
c2VGcm9tU3RyaW5nKCc8IURPQ1RZUEUgaHRtbD48Ym9keS8+JywgJ3RleHQveG1sJyk7CisgICAg
ICAgIG5ld0NoaWxkID0gZG9jLmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50VHlwZSgnc3Zn
JywgJy0vL1czQy8vRFREIFNWRyAxLjEvL0VOJywgJ2h0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNz
L1NWRy8xLjEvRFREL3N2ZzExLmR0ZCcpOworICAgICAgICAKKyAgICAgICAgc2hvdWxkTm90VGhy
b3coJ2RvYy5yZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIGRvYy5kb2N0eXBlKScpOworICAgIH0pOwor
ICAgIAorICAgIHRlc3QoJ3JlcGxhY2luZyBkb2N0eXBlIHdpdGggZWxlbWVudCcsIGZ1bmN0aW9u
KCkgeworICAgICAgICBkb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKCc8IURPQ1RZUEUgaHRt
bD48Ym9keS8+JywgJ3RleHQveG1sJyk7CisgICAgICAgIGRvYy5yZW1vdmVDaGlsZChkb2MuZG9j
dW1lbnRFbGVtZW50KTsgICAgICAgICAgICAgCisgICAgICAgIG5ld0NoaWxkID0gZG9jLmNyZWF0
ZUVsZW1lbnQoJ2JhcicpOworCisgICAgICAgIHNob3VsZE5vdFRocm93KCdkb2MucmVwbGFjZUNo
aWxkKG5ld0NoaWxkLCBkb2MuZG9jdHlwZSknKTsgCisgICAgfSk7CisgICAgCisgICAgdGVzdCgn
cmVwbGFjaW5nIGVsZW1lbnQgd2l0aCBkb2N0eXBlIHdoZW4gYW4gZWxlbWVudCBhbHJlYWR5IGV4
aXN0cycsIGZ1bmN0aW9uKCkgeworICAgICAgICBkb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5n
KCc8IURPQ1RZUEUgaHRtbD48Ym9keS8+JywgJ3RleHQveG1sJyk7CisgICAgICAgIG5ld0NoaWxk
ID0gZG9jLmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50VHlwZSgnc3ZnJywgJy0vL1czQy8v
RFREIFNWRyAxLjEvL0VOJywgJ2h0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFRE
L3N2ZzExLmR0ZCcpOworCisgICAgICAgIHNob3VsZFRocm93KCdkb2MucmVwbGFjZUNoaWxkKG5l
d0NoaWxkLCBkb2MuZG9jdW1lbnRFbGVtZW50KScpOworICAgIH0pOwogPC9zY3JpcHQ+Ci08Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKTsiPgotICAgIFRoaXMgdGVzdHMgdGhhdCB2YXJpb3VzIGNvbWJp
bmF0aW9ucyBvZiByZXBsYWNlQ2hpbGQgb24gdGhlIGRvY3VtZW50IHdvcmtzIGFzIHNwZWNpZmll
ZC4gSWYgdGhpcyB0ZXN0IHN1Y2NlZWRzLCB0aGVyZSB3aWxsIGJlIGEgbnVtYmVyIG9mICJTVUND
RVNTIiBsaW5lcyBiZWxvdyBmb2xsb3dlZCBieSAiU1VDQ0VTUyAtIEFsbCB0ZXN0cyBzdWNjZWVk
ZWQiLgotICAgIDx1bCBpZD0iY29uc29sZSI+Ci0gICAgPC91bD4KLTwvYm9keT4KLTwvaHRtbD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>