<?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>33983</bug_id>
          
          <creation_ts>2010-01-21 17:57:32 -0800</creation_ts>
          <short_desc>Setting HTMLSelectElement.length to remove elements is broken if the page has (or ever had) DOM mutation events registered</short_desc>
          <delta_ts>2010-03-04 15:29:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="James Robinson">jamesr</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>jar_webkit</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>183430</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-21 17:57:32 -0800</bug_when>
    <thetext>Open the test page and click the checkbox - the select is empty.  Then reload the page, hit &apos;Inspect Element&apos; anywhere on the page, and click the checkbox again.  This time it only removes ~half the &lt;option&gt;s from the &lt;select&gt;, rounded down.  This appears to be fairly consistent.

I&apos;m guessing that some inspector code is causing the HTMLSelectElement&apos;s listItems to be recalculated in the middle of removing the children - probably by the inspector touching some field that triggers it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183431</commentid>
    <comment_count>1</comment_count>
      <attachid>47167</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-21 17:59:51 -0800</bug_when>
    <thetext>Created attachment 47167
Repro page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183444</commentid>
    <comment_count>2</comment_count>
      <attachid>47170</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-21 18:42:48 -0800</bug_when>
    <thetext>Created attachment 47170
Repro page with mutation events

This isn&apos;t a bug with the inspector, it&apos;s actually with DOM mutation events.  On WebKits old enough for the inspector to use DOM mutation events it shows up when the inspector is open.  On ToT it only shows up if the page explicitly registers a mutation event (it doesn&apos;t matter what the body of the handler does).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183924</commentid>
    <comment_count>3</comment_count>
      <attachid>47260</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-22 19:14:48 -0800</bug_when>
    <thetext>Created attachment 47260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183964</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-22 23:33:26 -0800</bug_when>
    <thetext>-        const Vector&lt;Element*&gt;&amp; items = listItems();
+        const Vector&lt;Element*&gt; items = listItems();

This fixes vector iteration. What guarantees that elements don&apos;t get deleted, making pointers in the vector stale?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184007</commentid>
    <comment_count>5</comment_count>
      <attachid>47260</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-23 10:29:11 -0800</bug_when>
    <thetext>Comment on attachment 47260
Patch

&gt; -        const Vector&lt;Element*&gt;&amp; items = listItems();
&gt; +        const Vector&lt;Element*&gt; items = listItems();

The const here should also be removed.

If mutation events are involved, then it&apos;s not enough to copy the vector. We also have to ref() the element pointers because there&apos;s no guarantee the mutation event handlers will not eliminate the last reference to one of the list items.

So this should be a Vector&lt;RefPtr&lt;Element&gt; &gt; and the code should be written to put the items into that vector.

I&apos;m going to say review- because it seems that if we&apos;re going to change this we should address that problem as well as this more obvious one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184009</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-23 11:03:26 -0800</bug_when>
    <thetext>It probably goes without saying, but please try to make a test case for the additional issue. To force garbage collection, you can use the technique from e.g. &lt;http://trac.webkit.org/browser/trunk/LayoutTests/http/tests/security/detached-sandboxed-frame-access.html&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184817</commentid>
    <comment_count>7</comment_count>
      <attachid>47460</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-26 16:23:47 -0800</bug_when>
    <thetext>Created attachment 47460
patch

This patch uses the Vector&lt;RefPtr&lt;..&gt; &gt; approach and adds a bunch more tests.  The algorithm is very simple, when the &apos;length&apos; is set to something shorter than the current length, the code first builds a list of all option elements past the new &apos;length&apos; and adds them to a list to be removed.  It then iterates through the list and attempts to call removeChild() on each of them, assuming that they still have a parent.  The following actions are all possible during the second iteration:

1.) A mutation event handler removes an element that is already scheduled to be deleted (covered by select-set-length-with-mutation-remove.html).  In this case the remove just doesn&apos;t happen.
2.) A mutation event handler reorders options after the truncation has begun by causing an option that was scheduled to be removed to be earlier in the list (covered by select-set-length-with-mutation-reorder.html).  In this case the items scheduled to be removed are still removed regardless of their new position.
3.) A mutation event handler moves an option that is scheduled to be removed to be a child of a different select element (covered by select-set-length-with-mutation-reparent.html).  In this case the element is removed from its new parent.

The odd behavior in case 3 matches what Firefox 3.5 and IE8 do.  WebKit ToT crashes on some of these tests without this patch applied.  With this patch, we match Firefox 3.5 and IE8 on all cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185260</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-27 16:00:48 -0800</bug_when>
    <thetext>The DOM level 3 events spec (which covers mutation events) is a bit disappointing as to what should happen here.  In particular, it says:

Many single modifications of the tree can cause multiple mutation events to be dispatched. Rather than attempt to specify the ordering of mutation events due to every possible modification of the tree, the ordering of these events is left to the implementation.

http://www.w3.org/TR/DOM-Level-3-Events/#events-mutationevents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189374</commentid>
    <comment_count>9</comment_count>
      <attachid>47460</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-02-10 08:21:48 -0800</bug_when>
    <thetext>Comment on attachment 47460
patch

It&apos;s not so easy to check whether the test results in this patch are correct or not. We usually print &quot;PASS&quot; if a test passes.
I recommend to rewrite the tests in script-tests form.  You can see a lot of examples in LayoutTests/fast/forms/script-tests/. You don&apos;t need to write if(window.layoutTestController)... and function log(msg) for script-tests.

&gt; -        for (size_t listIndex = 0; listIndex &lt; items.size(); listIndex++) {
&gt; -            if (items[listIndex]-&gt;hasLocalName(optionTag) &amp;&amp; optionIndex++ &gt;= newLen) {
&gt; -                Element *item = items[listIndex];
&gt; +        for (size_t i = 0; i &lt; items.size(); ++i) {

I don&apos;t think the variable name &quot;i&quot; is wrong, but it seems there are no reason to shorten the variable name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194889</commentid>
    <comment_count>10</comment_count>
      <attachid>49766</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-03-01 17:41:52 -0800</bug_when>
    <thetext>Created attachment 49766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194890</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-03-01 17:43:41 -0800</bug_when>
    <thetext>Thanks for looking at this.  I apologize for letting this bug languish for so
long.

I rewrote the tests using script-tests.  They are much cleaner now.  I left the
loop index as &apos;i&apos; as it seems that is far more common in the WebKit codebase
and the verbosity didn&apos;t seem to do much other than make the loop look more
confusing than it really is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194914</commentid>
    <comment_count>12</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-01 19:26:48 -0800</bug_when>
    <thetext>The patch looks good.
I would give r=me if I was a reviewer :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196225</commentid>
    <comment_count>13</comment_count>
      <attachid>49766</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-03-04 14:15:38 -0800</bug_when>
    <thetext>Comment on attachment 49766
Patch

tests ftw!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196244</commentid>
    <comment_count>14</comment_count>
      <attachid>49766</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-03-04 15:29:35 -0800</bug_when>
    <thetext>Comment on attachment 49766
Patch

Clearing flags on attachment: 49766

Committed r55557: &lt;http://trac.webkit.org/changeset/55557&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196245</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-03-04 15:29:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>47167</attachid>
            <date>2010-01-21 17:59:51 -0800</date>
            <delta_ts>2010-01-21 17:59:51 -0800</delta_ts>
            <desc>Repro page</desc>
            <filename>select_test.html</filename>
            <type>text/html</type>
            <size>271</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxzZWxlY3QgaWQ9J3MnPgo8b3B0aW9uPmE8L29wdGlvbj4KPG9wdGlv
bj5iPC9vcHRpb24+CjxvcHRpb24+Yzwvb3B0aW9uPgo8L3NlbGVjdD4KPGlucHV0IHR5cGU9J2No
ZWNrYm94JyBpZD0nYyc+PC9pbnB1dD4KPHNjcmlwdD4KZnVuY3Rpb24gJChpKSB7IHJldHVybiBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChpKTsgfQokKCdjJykub25jaGFuZ2UgPSBmdW5jdGlvbigp
IHsgJCgncycpLm9wdGlvbnMubGVuZ3RoID0gMDsgfQo8L3NjcmlwdD4KCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>47170</attachid>
            <date>2010-01-21 18:42:48 -0800</date>
            <delta_ts>2010-01-21 18:42:48 -0800</delta_ts>
            <desc>Repro page with mutation events</desc>
            <filename>select_test.html</filename>
            <type>text/html</type>
            <size>328</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxzZWxlY3QgaWQ9J3MnPgo8b3B0aW9uPmE8L29wdGlvbj4KPG9wdGlv
bj5iPC9vcHRpb24+CjxvcHRpb24+Yzwvb3B0aW9uPgo8L3NlbGVjdD4KPGlucHV0IHR5cGU9J2No
ZWNrYm94JyBpZD0nYyc+PC9pbnB1dD4KPHNjcmlwdD4KZnVuY3Rpb24gJChpKSB7IHJldHVybiBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChpKTsgfQokKCdjJykub25jaGFuZ2UgPSBmdW5jdGlvbigp
IHsgJCgncycpLm9wdGlvbnMubGVuZ3RoID0gMDsgfQokKCdzJykuYWRkRXZlbnRMaXN0ZW5lcign
RE9NTm9kZVJlbW92ZWQnLCBmdW5jdGlvbigpIHt9KQo8L3NjcmlwdD4KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47260</attachid>
            <date>2010-01-22 19:14:48 -0800</date>
            <delta_ts>2010-01-26 16:23:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>sel_set_length.diff</filename>
            <type>text/plain</type>
            <size>5800</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOWVmMzY5Li44NGY2YzY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEt
MjIgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyB0aGF0IHNldHRpbmcgYSA8
c2VsZWN0PidzIGxlbmd0aCBwcm9wZXJ0eSBjYW4gZ3JvdyBhbmQgc2hyaW5rIGl0cyBsZW5ndGgg
d2l0aCBvciB3aXRob3V0IG11dGF0aW9uIGV2ZW50IGxpc3RlbmVycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM5ODMKKworICAgICAgICAqIGZhc3Qv
Zm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRp
b24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC5o
dG1sOiBBZGRlZC4KKwogMjAxMC0wMS0yMiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgQ2hlY2sgaW4gZXhwZWN0ZWQgZmFpbHVyZSByZXN1bHRzIGZvciB0ZXh0LXpv
b20ueGh0bWwgb24gV2luZG93cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9z
ZWxlY3Qtc2V0LWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Nl
bGVjdC1zZXQtbGVuZ3RoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwLi4wZTFmNDU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zZWxlY3Qtc2V0LWxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUaGlzIHRl
c3QgdGhhdCBzZXR0aW5nIEhUTUxTZWxlY3RFbGVtZW50Lmxlbmd0aCBjYW4gYWRkIGFuZCByZW1v
dmUgZWxlbWVudHMuCisKK1NlbGVjdCBsZW5ndGggaXMgMAorVHJ5aW5nOiAtIHNlbC5sZW5ndGgg
PSAyMDA7CitTZWxlY3QgbGVuZ3RoIGlzIDIwMAorVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAxMDA7
CitTZWxlY3QgbGVuZ3RoIGlzIDEwMAorVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAxODA7CitTZWxl
Y3QgbGVuZ3RoIGlzIDE4MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxl
Y3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGUxZjQ1NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUaGlzIHRlc3QgdGhhdCBzZXR0aW5nIEhU
TUxTZWxlY3RFbGVtZW50Lmxlbmd0aCBjYW4gYWRkIGFuZCByZW1vdmUgZWxlbWVudHMuCisKK1Nl
bGVjdCBsZW5ndGggaXMgMAorVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAyMDA7CitTZWxlY3QgbGVu
Z3RoIGlzIDIwMAorVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAxMDA7CitTZWxlY3QgbGVuZ3RoIGlz
IDEwMAorVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAxODA7CitTZWxlY3QgbGVuZ3RoIGlzIDE4MApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRo
LW11dGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3Ro
LXdpdGgtbXV0YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k
NWFiNjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qt
c2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPHA+VGhpcyB0
ZXN0IHRoYXQgc2V0dGluZyBIVE1MU2VsZWN0RWxlbWVudC5sZW5ndGggY2FuIGFkZCBhbmQgcmVt
b3ZlIGVsZW1lbnRzLjwvcD4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNlbGVjdCBpZD0i
dGhlU2VsZWN0Ij48L3NlbGVjdD4KKworPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKKyAgICBmdW5jdGlvbiBsb2cobXNnKQorICAgIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSht
c2cgKyAiXG4iKSk7CisgICAgfQorCisgICAgdmFyIHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0aGVTZWxlY3QnKTsKKyAgICBsb2coIlNlbGVjdCBsZW5ndGggaXMgIiArIHNlbC5sZW5n
dGgpOworCisgICAgc2VsLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVSZW1vdmVkJywgZnVuY3Rp
b24oKSB7fSk7CisgICAgc2VsLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVJbnNlcnRlZCcsIGZ1
bmN0aW9uKCkge30pOworCisgICAgbG9nKCJUcnlpbmc6IC0gc2VsLmxlbmd0aCA9IDIwMDsiKTsK
KyAgICBzZWwubGVuZ3RoID0gMjAwOworICAgIGxvZygiU2VsZWN0IGxlbmd0aCBpcyAiICsgc2Vs
Lmxlbmd0aCk7CisKKyAgICBsb2coIlRyeWluZzogLSBzZWwubGVuZ3RoID0gMTAwOyIpOworICAg
IHNlbC5sZW5ndGggPSAxMDA7CisgICAgbG9nKCJTZWxlY3QgbGVuZ3RoIGlzICIgKyBzZWwubGVu
Z3RoKTsKKworICAgIGxvZygiVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAxODA7Iik7CisgICAgc2Vs
Lmxlbmd0aCA9IDE4MDsKKyAgICBsb2coIlNlbGVjdCBsZW5ndGggaXMgIiArIHNlbC5sZW5ndGgp
OworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1z
ZXQtbGVuZ3RoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3Ro
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY0OGIxMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGguaHRt
bApAQCAtMCwwICsxLDI4IEBACis8cD5UaGlzIHRlc3QgdGhhdCBzZXR0aW5nIEhUTUxTZWxlY3RF
bGVtZW50Lmxlbmd0aCBjYW4gYWRkIGFuZCByZW1vdmUgZWxlbWVudHMuPC9wPgorPHByZSBpZD0i
Y29uc29sZSI+PC9wcmU+Cis8c2VsZWN0IGlkPSJ0aGVTZWxlY3QiPjwvc2VsZWN0PgorCis8c2Ny
aXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZ1bmN0aW9uIGxvZyhtc2cpCisg
ICAgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKKyAgICB9CisKKyAgICB2
YXIgc2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZVNlbGVjdCcpOworICAgIGxvZygi
U2VsZWN0IGxlbmd0aCBpcyAiICsgc2VsLmxlbmd0aCk7CisKKyAgICBsb2coIlRyeWluZzogLSBz
ZWwubGVuZ3RoID0gMjAwOyIpOworICAgIHNlbC5sZW5ndGggPSAyMDA7CisgICAgbG9nKCJTZWxl
Y3QgbGVuZ3RoIGlzICIgKyBzZWwubGVuZ3RoKTsKKworICAgIGxvZygiVHJ5aW5nOiAtIHNlbC5s
ZW5ndGggPSAxMDA7Iik7CisgICAgc2VsLmxlbmd0aCA9IDEwMDsKKyAgICBsb2coIlNlbGVjdCBs
ZW5ndGggaXMgIiArIHNlbC5sZW5ndGgpOworCisgICAgbG9nKCJUcnlpbmc6IC0gc2VsLmxlbmd0
aCA9IDE4MDsiKTsKKyAgICBzZWwubGVuZ3RoID0gMTgwOworICAgIGxvZygiU2VsZWN0IGxlbmd0
aCBpcyAiICsgc2VsLmxlbmd0aCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRlZjU0Zi4uYmJlNzI5MSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMyBAQAorMjAxMC0wMS0yMiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldCBz
ZXR0aW5nIGEgPHNlbGVjdD4ncyBsZW5ndGggcmVtb3ZlIHRoZSByaWdodCBudW1iZXIgb2YgZWxl
bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMz
OTgzCisKKyAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldExlbmd0aCBkb2VzIGEgZGVlcCBj
b3B5IG9mIGl0cyBsaXN0SXRlbXMgdmVjdG9yIGluc3RlYWQgb2Ygc2ltcGx5IGdyYWJiaW5nIGEg
cmVmZXJlbmNlCisgICAgICAgIHNvIHRoYXQgY2FsbHMgdG8gcmVjYWxjTGlzdEl0ZW1zKCkgaW4g
dGhlIG1pZGRsZSBvZiB0aGUgaXRlcmF0aW9uIGRvIG5vdCBicmVhayB0aGUgYWxnb3JpdGhtLgor
CisgICAgICAgIFdoZW4gbXV0YXRpb24gZXZlbnRzIGFyZSBwcmVzZW50IGluIHRoZSBkb2N1bWVu
dCwgdGhlIGV2ZW50IGRpc3BhdGNoIGNvZGUgZm9yY2VzIGEgY2FsbCB0byByZWNhbGNTdHlsZSgp
LAorICAgICAgICB3aGljaCBmb3IgSFRNTEZvcm1Db250cm9scyBjYXVzZXMgbGlzdEl0ZW1zIHRv
IGdldCByZWNhbGN1bGF0ZWQuCisKKworICAgICAgICBUZXN0czogZmFzdC9mb3Jtcy9zZWxlY3Qt
c2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMv
c2VsZWN0LXNldC1sZW5ndGguaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3RoKToK
KwogMjAxMC0wMS0yMiAgR2lyaXNoIFJhbWFrcmlzaG5hbiAgPGdpcmlzaEBmb3J3YXJkYmlhcy5p
bj4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwCmluZGV4IDI0MDlmMzEuLmVkYTA0NGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RF
bGVtZW50LmNwcApAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNl
dExlbmd0aCh1bnNpZ25lZCBuZXdMZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9IHdoaWxlICgrK2RpZmYpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CisgICAgICAg
IGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4gaXRlbXMgPSBsaXN0SXRlbXMoKTsKIAogICAgICAgICBz
aXplX3Qgb3B0aW9uSW5kZXggPSAwOwogICAgICAgICBmb3IgKHNpemVfdCBsaXN0SW5kZXggPSAw
OyBsaXN0SW5kZXggPCBpdGVtcy5zaXplKCk7IGxpc3RJbmRleCsrKSB7Cg==
</data>
<flag name="review"
          id="29665"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="29666"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47460</attachid>
            <date>2010-01-26 16:23:47 -0800</date>
            <delta_ts>2010-03-01 17:41:48 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b_33983_2.diff</filename>
            <type>text/plain</type>
            <size>16128</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOWVmMzY5Li4yNGFlNTliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDEt
MjYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3Igc2V0dGluZyBhbiBz
ZWxlY3QncyBvcHRpb25zLmxlbmd0aCBhdHRyaWJ1dGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzk4MworCisgICAgICAgICogZmFzdC9mb3Jtcy9z
ZWxlY3Qtc2V0LWxlbmd0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvc2VsZWN0LXNldC1sZW5ndGgtb3B0Z3JvdXAuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0aW9u
LXJlbW92ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVu
Z3RoLXdpdGgtbXV0YXRpb24tcmVwYXJlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGguaHRtbDogQWRkZWQuCisKIDIwMTAtMDEt
MjIgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIENoZWNrIGluIGV4
cGVjdGVkIGZhaWx1cmUgcmVzdWx0cyBmb3IgdGV4dC16b29tLnhodG1sIG9uIFdpbmRvd3MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUxZjQ1NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGhpcyB0ZXN0IHRoYXQgc2V0dGluZyBIVE1MU2Vs
ZWN0RWxlbWVudC5sZW5ndGggY2FuIGFkZCBhbmQgcmVtb3ZlIGVsZW1lbnRzLgorCitTZWxlY3Qg
bGVuZ3RoIGlzIDAKK1RyeWluZzogLSBzZWwubGVuZ3RoID0gMjAwOworU2VsZWN0IGxlbmd0aCBp
cyAyMDAKK1RyeWluZzogLSBzZWwubGVuZ3RoID0gMTAwOworU2VsZWN0IGxlbmd0aCBpcyAxMDAK
K1RyeWluZzogLSBzZWwubGVuZ3RoID0gMTgwOworU2VsZWN0IGxlbmd0aCBpcyAxODAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtb3B0Z3JvdXAt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC1v
cHRncm91cC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
N2Y5NjM0YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0
LXNldC1sZW5ndGgtb3B0Z3JvdXAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMg
dGVzdCB0aGF0IHNldHRpbmcgSFRNTFNlbGVjdEVsZW1lbnQubGVuZ3RoIHJlc3BlY3RzIG9wdGdy
b3Vwcy4KKworU2VsZWN0IGxlbmd0aCBpcyAxCitUcnlpbmc6IC0gc2VsLmxlbmd0aCA9IDI7CitT
ZWxlY3QgbGVuZ3RoIGlzIDIKK09wdGdyb3VwIGhhcyAxIGNoaWxkcmVuCitUcnlpbmc6IC0gc2Vs
Lmxlbmd0aCA9IDE7CitTZWxlY3QgbGVuZ3RoIGlzIDEKK09wdGdyb3VwIGhhcyAxIGNoaWxkcmVu
CitJbnNlcnRpbmcgb3B0aW9uIGJlZm9yZSBvcHRncm91cAorVHJ5aW5nOiAtIHNlbC5sZW5ndGgg
PSAxOworU2VsZWN0IGxlbmd0aCBpcyAxCitPcHRncm91cCBoYXMgMCBjaGlsZHJlbgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC1vcHRncm91cC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC1vcHRncm91cC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMWU4YTEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLW9wdGdy
b3VwLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPHA+VGhpcyB0ZXN0IHRoYXQgc2V0dGluZyBIVE1M
U2VsZWN0RWxlbWVudC5sZW5ndGggcmVzcGVjdHMgb3B0Z3JvdXBzLjwvcD4KKzxwcmUgaWQ9ImNv
bnNvbGUiPjwvcHJlPgorPHNlbGVjdCBpZD0idGhlU2VsZWN0Ij4KKzxvcHRncm91cCBsYWJlbD0i
Zm9vIiBpZD0idGhlT3B0R3JvdXAiPgorPG9wdGlvbiBpZD0ib3B0aW9uSW5Hcm91cCI+PC9vcHRp
b24+Cis8L29wdGdyb3VwPgorPC9zZWxlY3Q+CisKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCisgICAgZnVuY3Rpb24gbG9nKG1zZykKKyAgICB7CisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobXNnICsgIlxuIikpOworICAgIH0KKworICAgIHZhciBzZWwgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGhlU2VsZWN0Jyk7CisgICAgbG9nKCJTZWxlY3QgbGVuZ3RoIGlzICIgKyBz
ZWwubGVuZ3RoKTsKKworICAgIHZhciBvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVP
cHRHcm91cCcpOworCisgICAgbG9nKCJUcnlpbmc6IC0gc2VsLmxlbmd0aCA9IDI7Iik7CisgICAg
c2VsLmxlbmd0aCA9IDI7CisgICAgbG9nKCJTZWxlY3QgbGVuZ3RoIGlzICIgKyBzZWwubGVuZ3Ro
KTsKKyAgICBsb2coIk9wdGdyb3VwIGhhcyAiICsgb2cuY2hpbGRFbGVtZW50Q291bnQgKyAiIGNo
aWxkcmVuIik7IAorCisgICAgbG9nKCJUcnlpbmc6IC0gc2VsLmxlbmd0aCA9IDE7Iik7CisgICAg
c2VsLmxlbmd0aCA9IDE7CisgICAgbG9nKCJTZWxlY3QgbGVuZ3RoIGlzICIgKyBzZWwubGVuZ3Ro
KTsKKyAgICBsb2coIk9wdGdyb3VwIGhhcyAiICsgb2cuY2hpbGRFbGVtZW50Q291bnQgKyAiIGNo
aWxkcmVuIik7IAorCisgICAgbG9nKCJJbnNlcnRpbmcgb3B0aW9uIGJlZm9yZSBvcHRncm91cCIp
OworICAgIHNlbC5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyks
IG9nKTsKKworICAgIGxvZygiVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAxOyIpOworICAgIHNlbC5s
ZW5ndGggPSAxOworICAgIGxvZygiU2VsZWN0IGxlbmd0aCBpcyAiICsgc2VsLmxlbmd0aCk7Cisg
ICAgbG9nKCJPcHRncm91cCBoYXMgIiArIG9nLmNoaWxkRWxlbWVudENvdW50ICsgIiBjaGlsZHJl
biIpOyAKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxl
Y3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUxZjQ1NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUaGlzIHRlc3QgdGhhdCBzZXR0aW5nIEhU
TUxTZWxlY3RFbGVtZW50Lmxlbmd0aCBjYW4gYWRkIGFuZCByZW1vdmUgZWxlbWVudHMuCisKK1Nl
bGVjdCBsZW5ndGggaXMgMAorVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAyMDA7CitTZWxlY3QgbGVu
Z3RoIGlzIDIwMAorVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAxMDA7CitTZWxlY3QgbGVuZ3RoIGlz
IDEwMAorVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAxODA7CitTZWxlY3QgbGVuZ3RoIGlzIDE4MApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRo
LW11dGF0aW9uLXJlbW92ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Nl
bGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVtb3ZlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTFmNDU1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLXJl
bW92ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUaGlzIHRlc3QgdGhhdCBzZXR0aW5n
IEhUTUxTZWxlY3RFbGVtZW50Lmxlbmd0aCBjYW4gYWRkIGFuZCByZW1vdmUgZWxlbWVudHMuCisK
K1NlbGVjdCBsZW5ndGggaXMgMAorVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAyMDA7CitTZWxlY3Qg
bGVuZ3RoIGlzIDIwMAorVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAxMDA7CitTZWxlY3QgbGVuZ3Ro
IGlzIDEwMAorVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAxODA7CitTZWxlY3QgbGVuZ3RoIGlzIDE4
MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13
aXRoLW11dGF0aW9uLXJlbW92ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qt
c2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLXJlbW92ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjM0ODhlNDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVtb3ZlLmh0bWwKQEAg
LTAsMCArMSw1MSBAQAorPHA+VGhpcyB0ZXN0IHRoYXQgc2V0dGluZyBIVE1MU2VsZWN0RWxlbWVu
dC5sZW5ndGggY2FuIGFkZCBhbmQgcmVtb3ZlIGVsZW1lbnRzLjwvcD4KKzxwcmUgaWQ9ImNvbnNv
bGUiPjwvcHJlPgorPHNlbGVjdCBpZD0idGhlU2VsZWN0Ij48L3NlbGVjdD4KKworPHNjcmlwdD4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUobXNnICsgIlxuIikpOworfQorCitmdW5jdGlvbiBnYygpIHsKKyAgICBpZiAod2luZG93LkdD
Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisKKyAg
ICBmb3IgKHZhciBpPTA7IGk8MTAwMDA7ICsraSkgeworICAgICAgICB2YXIgcyA9IG5ldyBTdHJp
bmcoImFiYyIpOworICAgIH0KK30KKworCitmdW5jdGlvbiBvblJlbW92ZShlKSB7CisgICAgaWYg
KGUudGFyZ2V0Lm5leHRTaWJsaW5nICE9IG51bGwpIHsKKyAgICAgICAgLy8gcmVtb3ZlIGxpc3Rl
bmVyIHRlbXBvcmFyaWx5IHRvIGF2b2lkIGxvdHMgb2YgbmVzdGluZworICAgICAgICBzZWwucmVt
b3ZlRXZlbnRMaXN0ZW5lcignRE9NTm9kZVJlbW92ZWQnLCBvblJlbW92ZSwgZmFsc2UpOworICAg
ICAgICBlLnRhcmdldC5uZXh0U2libGluZy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUudGFyZ2V0
Lm5leHRTaWJsaW5nKTsKKyAgICAgICAgc2VsLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVSZW1v
dmVkJywgb25SZW1vdmUsIGZhbHNlKTsKKyAgICB9CisgICAgZ2MoKTsKK30KKwordmFyIHNlbCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVTZWxlY3QnKTsKK2xvZygiU2VsZWN0IGxlbmd0
aCBpcyAiICsgc2VsLmxlbmd0aCk7CisKK3NlbC5hZGRFdmVudExpc3RlbmVyKCdET01Ob2RlUmVt
b3ZlZCcsIG9uUmVtb3ZlLCBmYWxzZSk7CitzZWwuYWRkRXZlbnRMaXN0ZW5lcignRE9NTm9kZUlu
c2VydGVkJywgZnVuY3Rpb24oKSB7fSwgZmFsc2UpOworCitsb2coIlRyeWluZzogLSBzZWwubGVu
Z3RoID0gMjAwOyIpOworc2VsLmxlbmd0aCA9IDIwMDsKK2xvZygiU2VsZWN0IGxlbmd0aCBpcyAi
ICsgc2VsLmxlbmd0aCk7CisKK2xvZygiVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAxMDA7Iik7Citz
ZWwubGVuZ3RoID0gMTAwOworbG9nKCJTZWxlY3QgbGVuZ3RoIGlzICIgKyBzZWwubGVuZ3RoKTsK
KworbG9nKCJUcnlpbmc6IC0gc2VsLmxlbmd0aCA9IDE4MDsiKTsKK3NlbC5sZW5ndGggPSAxODA7
Citsb2coIlNlbGVjdCBsZW5ndGggaXMgIiArIHNlbC5sZW5ndGgpOworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0
YXRpb24tcmVvcmRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVj
dC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVvcmRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY3ODQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1yZW9y
ZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1RoaXMgdGVzdCB0aGF0IHNldHRpbmcg
SFRNTFNlbGVjdEVsZW1lbnQubGVuZ3RoIHJlbW92ZXMgdGhlIGNvcnJlY3QgZWxlbWVudHMgaW4g
dGhlIHByZXNlbmNlIG9mIG11dGF0aW9uIGxpc3RlbmVycyB0aGF0IHJlb3JkZXIgb3B0aW9ucy4K
KworU2VsZWN0IGxlbmd0aCBpcyA0CitUcnlpbmc6IC0gc2VsLmxlbmd0aCA9IDI7CitTZWxlY3Qg
bGVuZ3RoIGlzIDIKK1NlbGVjdCBvcHRpb25zOiBhLCBiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVvcmRlci5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0aW9u
LXJlb3JkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTNmZTFl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxl
bmd0aC13aXRoLW11dGF0aW9uLXJlb3JkZXIuaHRtbApAQCAtMCwwICsxLDQzIEBACis8cD5UaGlz
IHRlc3QgdGhhdCBzZXR0aW5nIEhUTUxTZWxlY3RFbGVtZW50Lmxlbmd0aCByZW1vdmVzIHRoZSBj
b3JyZWN0IGVsZW1lbnRzIGluIHRoZSBwcmVzZW5jZSBvZiBtdXRhdGlvbiBsaXN0ZW5lcnMgdGhh
dCByZW9yZGVyIG9wdGlvbnMuCis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzZWxlY3QgaWQ9
InRoZVNlbGVjdCI+Cis8b3B0aW9uIGlkPSJhIj5hPC9vcHRpb24+Cis8b3B0aW9uIGlkPSJiIj5i
PC9vcHRpb24+Cis8b3B0aW9uIGlkPSJjIj5jPC9vcHRpb24+Cis8b3B0aW9uIGlkPSJkIj5kPC9v
cHRpb24+Cis8L3NlbGVjdD4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlv
biBsb2cobXNnKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnICsgIlxuIikpOworfQorCit2YXIg
c2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZVNlbGVjdCcpOworbG9nKCJTZWxlY3Qg
bGVuZ3RoIGlzICIgKyBzZWwubGVuZ3RoKTsKKwordmFyIGZpcnN0UmVtb3ZlID0gdHJ1ZTsKK2Z1
bmN0aW9uIG9uUmVtb3ZlKGUpIHsKKyAgICBpZiAoZmlyc3RSZW1vdmUpIHsKKyAgICAgICAgLy8g
cmVtb3ZlIGxpc3RlbmVyIHRlbXBvcmFyaWx5IHRvIGF2b2lkIGxvdHMgb2YgbmVzdGluZworICAg
ICAgICBzZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignRE9NTm9kZVJlbW92ZWQnLCBvblJlbW92ZSwg
ZmFsc2UpOworICAgICAgICB2YXIgbGFzdE9wdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdkJyk7CisgICAgICAgIHNlbC5yZW1vdmVDaGlsZChsYXN0T3B0aW9uKTsKKyAgICAgICAgc2Vs
Lmluc2VydEJlZm9yZShsYXN0T3B0aW9uLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYycpKTsK
KyAgICAgICAgZmlyc3RSZW1vdmUgPSBmYWxzZTsKKyAgICAgICAgc2VsLmFkZEV2ZW50TGlzdGVu
ZXIoJ0RPTU5vZGVSZW1vdmVkJywgb25SZW1vdmUsIGZhbHNlKTsKKyAgICB9Cit9CisKK3NlbC5h
ZGRFdmVudExpc3RlbmVyKCdET01Ob2RlUmVtb3ZlZCcsIG9uUmVtb3ZlLCBmYWxzZSk7CitzZWwu
YWRkRXZlbnRMaXN0ZW5lcignRE9NTm9kZUluc2VydGVkJywgZnVuY3Rpb24oKSB7fSwgZmFsc2Up
OworCitsb2coIlRyeWluZzogLSBzZWwubGVuZ3RoID0gMjsiKTsKK3NlbC5sZW5ndGggPSAyOwor
bG9nKCJTZWxlY3QgbGVuZ3RoIGlzICIgKyBzZWwubGVuZ3RoKTsKK2xvZygiU2VsZWN0IG9wdGlv
bnM6ICIgKyBzZWwub3B0aW9ucy5pdGVtKDApLmlkICsgIiwgIiArIHNlbC5vcHRpb25zLml0ZW0o
MSkuaWQpOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
c2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1yZXBhcmVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVw
YXJlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0
NDZjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1z
ZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVwYXJlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK1RoaXMgdGVzdCB0aGF0IHNldHRpbmcgSFRNTFNlbGVjdEVsZW1lbnQubGVuZ3RoIGNh
biBhZGQgYW5kIHJlbW92ZSBlbGVtZW50cy4KKworU2VsZWN0IGxlbmd0aHMgYXJlIDAsIDAKK1Ry
eWluZzogLSBzZWwubGVuZ3RoID0gMjAwOworU2VsZWN0IGxlbmd0aHMgYXJlIDIwMCwgMAorVHJ5
aW5nOiAtIHNlbC5sZW5ndGggPSAxMDA7CitTZWxlY3QgbGVuZ3RocyBhcmUgMTAwLCAwCitUcnlp
bmc6IC0gc2VsLmxlbmd0aCA9IDE4MDsKK1NlbGVjdCBsZW5ndGhzIGFyZSAxODAsIDAKKyAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1t
dXRhdGlvbi1yZXBhcmVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0
LWxlbmd0aC13aXRoLW11dGF0aW9uLXJlcGFyZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMWY1YjRlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1yZXBhcmVudC5odG1sCkBA
IC0wLDAgKzEsNDQgQEAKKzxwPlRoaXMgdGVzdCB0aGF0IHNldHRpbmcgSFRNTFNlbGVjdEVsZW1l
bnQubGVuZ3RoIGNhbiBhZGQgYW5kIHJlbW92ZSBlbGVtZW50cy48L3A+Cis8cHJlIGlkPSJjb25z
b2xlIj48L3ByZT4KKzxzZWxlY3QgaWQ9InRoZVNlbGVjdCI+PC9zZWxlY3Q+Cis8c2VsZWN0IGlk
PSJ0aGVPdGhlclNlbGVjdCI+PC9zZWxlY3Q+CisKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCisgICAgZnVuY3Rpb24gbG9nKG1zZykKKyAgICB7CisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobXNnICsgIlxuIikpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG9uUmVtb3ZlKGUpIHsK
KyAgICAgICAgaWYgKGUudGFyZ2V0Lm5leHRTaWJsaW5nICE9IG51bGwpIHsKKyAgICAgICAgICAg
IC8vIHJlbW92ZSBsaXN0ZW5lciB0ZW1wb3JhcmlseSB0byBhdm9pZCBsb3RzIG9mIG5lc3RpbmcK
KyAgICAgICAgICAgIHNlbC5yZW1vdmVFdmVudExpc3RlbmVyKCdET01Ob2RlUmVtb3ZlZCcsIG9u
UmVtb3ZlLCBmYWxzZSk7CisgICAgICAgICAgICB2YXIgbiA9IGUudGFyZ2V0Lm5leHRTaWJsaW5n
OworICAgICAgICAgICAgbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pOworICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZU90aGVyU2VsZWN0JykuYXBwZW5kQ2hpbGQobik7
CisgICAgICAgICAgICBzZWwuYWRkRXZlbnRMaXN0ZW5lcignRE9NTm9kZVJlbW92ZWQnLCBvblJl
bW92ZSwgZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgdmFyIHNlbCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0aGVTZWxlY3QnKTsKKyAgICB2YXIgb3RoZXJTZWwgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGhlT3RoZXJTZWxlY3QnKTsKKyAgICBsb2coIlNlbGVjdCBsZW5n
dGhzIGFyZSAiICsgc2VsLmxlbmd0aCArICIsICIgKyBvdGhlclNlbC5sZW5ndGgpOworCisgICAg
c2VsLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVSZW1vdmVkJywgb25SZW1vdmUsIGZhbHNlKTsK
KyAgICBzZWwuYWRkRXZlbnRMaXN0ZW5lcignRE9NTm9kZUluc2VydGVkJywgZnVuY3Rpb24oKSB7
fSwgZmFsc2UpOworCisgICAgbG9nKCJUcnlpbmc6IC0gc2VsLmxlbmd0aCA9IDIwMDsiKTsKKyAg
ICBzZWwubGVuZ3RoID0gMjAwOworICAgIGxvZygiU2VsZWN0IGxlbmd0aHMgYXJlICIgKyBzZWwu
bGVuZ3RoICsgIiwgIiArIG90aGVyU2VsLmxlbmd0aCk7CisKKyAgICBsb2coIlRyeWluZzogLSBz
ZWwubGVuZ3RoID0gMTAwOyIpOworICAgIHNlbC5sZW5ndGggPSAxMDA7CisgICAgbG9nKCJTZWxl
Y3QgbGVuZ3RocyBhcmUgIiArIHNlbC5sZW5ndGggKyAiLCAiICsgb3RoZXJTZWwubGVuZ3RoKTsK
KworICAgIGxvZygiVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAxODA7Iik7CisgICAgc2VsLmxlbmd0
aCA9IDE4MDsKKyAgICBsb2coIlNlbGVjdCBsZW5ndGhzIGFyZSAiICsgc2VsLmxlbmd0aCArICIs
ICIgKyBvdGhlclNlbC5sZW5ndGgpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24uaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiOTAzMjQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRp
b24uaHRtbApAQCAtMCwwICsxLDMxIEBACis8cD5UaGlzIHRlc3QgdGhhdCBzZXR0aW5nIEhUTUxT
ZWxlY3RFbGVtZW50Lmxlbmd0aCBjYW4gYWRkIGFuZCByZW1vdmUgZWxlbWVudHMuPC9wPgorPHBy
ZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2VsZWN0IGlkPSJ0aGVTZWxlY3QiPjwvc2VsZWN0Pgor
Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZ1bmN0aW9uIGxvZyht
c2cpCisgICAgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKKyAgICB9CisK
KyAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZVNlbGVjdCcpOworICAg
IGxvZygiU2VsZWN0IGxlbmd0aCBpcyAiICsgc2VsLmxlbmd0aCk7CisKKyAgICBzZWwuYWRkRXZl
bnRMaXN0ZW5lcignRE9NTm9kZVJlbW92ZWQnLCBmdW5jdGlvbigpIHt9LCBmYWxzZSk7CisgICAg
c2VsLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVJbnNlcnRlZCcsIGZ1bmN0aW9uKCkge30sIGZh
bHNlKTsKKworICAgIGxvZygiVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAyMDA7Iik7CisgICAgc2Vs
Lmxlbmd0aCA9IDIwMDsKKyAgICBsb2coIlNlbGVjdCBsZW5ndGggaXMgIiArIHNlbC5sZW5ndGgp
OworCisgICAgbG9nKCJUcnlpbmc6IC0gc2VsLmxlbmd0aCA9IDEwMDsiKTsKKyAgICBzZWwubGVu
Z3RoID0gMTAwOworICAgIGxvZygiU2VsZWN0IGxlbmd0aCBpcyAiICsgc2VsLmxlbmd0aCk7CisK
KyAgICBsb2coIlRyeWluZzogLSBzZWwubGVuZ3RoID0gMTgwOyIpOworICAgIHNlbC5sZW5ndGgg
PSAxODA7CisgICAgbG9nKCJTZWxlY3QgbGVuZ3RoIGlzICIgKyBzZWwubGVuZ3RoKTsKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0
aC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNDhiMTMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLmh0bWwKQEAgLTAs
MCArMSwyOCBAQAorPHA+VGhpcyB0ZXN0IHRoYXQgc2V0dGluZyBIVE1MU2VsZWN0RWxlbWVudC5s
ZW5ndGggY2FuIGFkZCBhbmQgcmVtb3ZlIGVsZW1lbnRzLjwvcD4KKzxwcmUgaWQ9ImNvbnNvbGUi
PjwvcHJlPgorPHNlbGVjdCBpZD0idGhlU2VsZWN0Ij48L3NlbGVjdD4KKworPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmdW5jdGlvbiBsb2cobXNnKQorICAgIHsKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cgKyAiXG4iKSk7CisgICAgfQorCisgICAgdmFyIHNlbCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVTZWxlY3QnKTsKKyAgICBsb2coIlNlbGVjdCBs
ZW5ndGggaXMgIiArIHNlbC5sZW5ndGgpOworCisgICAgbG9nKCJUcnlpbmc6IC0gc2VsLmxlbmd0
aCA9IDIwMDsiKTsKKyAgICBzZWwubGVuZ3RoID0gMjAwOworICAgIGxvZygiU2VsZWN0IGxlbmd0
aCBpcyAiICsgc2VsLmxlbmd0aCk7CisKKyAgICBsb2coIlRyeWluZzogLSBzZWwubGVuZ3RoID0g
MTAwOyIpOworICAgIHNlbC5sZW5ndGggPSAxMDA7CisgICAgbG9nKCJTZWxlY3QgbGVuZ3RoIGlz
ICIgKyBzZWwubGVuZ3RoKTsKKworICAgIGxvZygiVHJ5aW5nOiAtIHNlbC5sZW5ndGggPSAxODA7
Iik7CisgICAgc2VsLmxlbmd0aCA9IDE4MDsKKyAgICBsb2coIlNlbGVjdCBsZW5ndGggaXMgIiAr
IHNlbC5sZW5ndGgpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ0ZWY1NGYuLjY5NmQ4NzkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTAtMDEtMjYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGVzIHNldHRp
bmcgSFRNTFNlbGVjdEVsZW1lbnQubGVuZ3RoIHdpdGggbXV0YXRpb24gaGFuZGxlcnMgcHJlc2Vu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM5ODMK
KworICAgICAgICBXaGVuIHNldHRpbmcgYW4gSFRNTFNlbGVjdEVsZW1lbnQncyBsZW5ndGggYXR0
cmlidXRlLCBvcHRpb24gZWxlbWVudHMgaGF2ZSB0byBiZSBhZGRlZCBvciByZW1vdmVkIHRvIHRo
ZSBzZWxlY3QKKyAgICAgICAgYXMgYXBwcm9wcmlhdGUuICBUaGlzIGlzIGEgbGl0dGxlIHRyaWNr
eSB3aXRoIG11dGF0aW9uIGV2ZW50cyBzaW5jZSB0aGV5IG1pZ2h0IGFkZCwgcmVtb3ZlLCBvciBy
ZW9yZGVyIGVsZW1lbnRzCisgICAgICAgIHdoaWxlIG9wdGlvbiBlbGVtZW50cyBhcmUgYmVpbmcg
YWRkZWQgb3IgZGVsZXRlZC4KKworICAgICAgICBUZXN0czogZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0
LWxlbmd0aC1vcHRncm91cC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL3NlbGVjdC1z
ZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVtb3ZlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
Zm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1yZW9yZGVyLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1yZXBh
cmVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdp
dGgtbXV0YXRpb24uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxl
bmd0aC5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRMZW5ndGgpOgorCiAyMDEwLTAxLTIy
ICBHaXJpc2ggUmFtYWtyaXNobmFuICA8Z2lyaXNoQGZvcndhcmRiaWFzLmluPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAK
aW5kZXggMjQwOWYzMS4uNTIzY2RlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBA
IC00MDUsMTEgKzQwNSwyMSBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRMZW5ndGgodW5z
aWduZWQgbmV3TGVuLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9IGVsc2UgewogICAgICAgICBj
b25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogCisgICAgICAgIC8v
IFJlbW92aW5nIGNoaWxkcmVuIGZpcmVzIG11dGF0aW9uIGV2ZW50cywgd2hpY2ggbWlnaHQgbXV0
YXRlIHRoZSBET00gZnVydGhlciwgc28gd2UgZmlyc3QgY29weSBvdXQgYSBsaXN0CisgICAgICAg
IC8vIG9mIGVsZW1lbnRzIHRoYXQgd2UgaW50ZW5kIHRvIHJlbW92ZSB0aGVuIGF0dGVtcHQgdG8g
cmVtb3ZlIHRoZW0gb25lIGF0IGEgdGltZS4KKyAgICAgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50
PiA+IGl0ZW1zVG9SZW1vdmU7CiAgICAgICAgIHNpemVfdCBvcHRpb25JbmRleCA9IDA7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGxpc3RJbmRleCA9IDA7IGxpc3RJbmRleCA8IGl0ZW1zLnNpemUoKTsg
bGlzdEluZGV4KyspIHsKLSAgICAgICAgICAgIGlmIChpdGVtc1tsaXN0SW5kZXhdLT5oYXNMb2Nh
bE5hbWUob3B0aW9uVGFnKSAmJiBvcHRpb25JbmRleCsrID49IG5ld0xlbikgewotICAgICAgICAg
ICAgICAgIEVsZW1lbnQgKml0ZW0gPSBpdGVtc1tsaXN0SW5kZXhdOworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBFbGVtZW50
KiBpdGVtID0gaXRlbXNbaV07CisgICAgICAgICAgICBpZiAoaXRlbS0+aGFzTG9jYWxOYW1lKG9w
dGlvblRhZykgJiYgb3B0aW9uSW5kZXgrKyA+PSBuZXdMZW4pIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoaXRlbS0+cGFyZW50Tm9kZSgpKTsKKyAgICAgICAgICAgICAgICBpdGVtc1RvUmVtb3Zl
LmFwcGVuZChpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgaXRlbXNUb1JlbW92ZS5zaXplKCk7ICsraSkgeworICAgICAgICAg
ICAgRWxlbWVudCogaXRlbSA9IGl0ZW1zVG9SZW1vdmVbaV0uZ2V0KCk7CisgICAgICAgICAgICBp
ZiAoaXRlbS0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICAgICAgaXRlbS0+cGFyZW50Tm9k
ZSgpLT5yZW1vdmVDaGlsZChpdGVtLCBlYyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49766</attachid>
            <date>2010-03-01 17:41:52 -0800</date>
            <delta_ts>2010-03-04 15:29:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33983-20100301174150.patch</filename>
            <type>text/plain</type>
            <size>20034</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YTdiM2ZlLi42ZmQzODZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTAtMDMt
MDEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3Igc2V0dGluZyBhbiBz
ZWxlY3QncyBvcHRpb25zLmxlbmd0aCBhdHRyaWJ1dGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzk4MworCisgICAgICAgICogZmFzdC9mb3Jtcy9z
Y3JpcHQtdGVzdHMvc2VsZWN0LXNldC1sZW5ndGgtb3B0Z3JvdXAuanM6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRp
b24tcmVtb3ZlLmpzOiBBZGRlZC4KKyAgICAgICAgKGdjKToKKyAgICAgICAgKG9uUmVtb3ZlKToK
KyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRo
LW11dGF0aW9uLXJlb3JkZXIuanM6IEFkZGVkLgorICAgICAgICAob25SZW1vdmUpOgorICAgICAg
ICAqIGZhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRp
b24tcmVwYXJlbnQuanM6IEFkZGVkLgorICAgICAgICAob25SZW1vdmUpOgorICAgICAgICAqIGZh
c3QvZm9ybXMvc2NyaXB0LXRlc3RzL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24uanM6
IEFkZGVkLgorICAgICAgICAoc2VsKToKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0
cy9zZWxlY3Qtc2V0LWxlbmd0aC5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9zZWxl
Y3Qtc2V0LWxlbmd0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
c2VsZWN0LXNldC1sZW5ndGgtb3B0Z3JvdXAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLW9wdGdyb3VwLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0
aC1tdXRhdGlvbi1yZW1vdmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVtb3ZlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1yZW9y
ZGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0
LWxlbmd0aC13aXRoLW11dGF0aW9uLXJlb3JkZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLXJlcGFyZW50LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRo
LW11dGF0aW9uLXJlcGFyZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc2Vs
ZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLmh0bWw6IEFkZGVkLgorCiAyMDEwLTAyLTI3ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3Jp
cHQtdGVzdHMvc2VsZWN0LXNldC1sZW5ndGgtb3B0Z3JvdXAuanMgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3NjcmlwdC10ZXN0cy9zZWxlY3Qtc2V0LWxlbmd0aC1vcHRncm91cC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjVlNGNjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvc2VsZWN0LXNldC1sZW5ndGgtb3B0
Z3JvdXAuanMKQEAgLTAsMCArMSwzMCBAQAorZGVzY3JpcHRpb24oJ1RoaXMgdGVzdCB0aGF0IHNl
dHRpbmcgSFRNTFNlbGVjdEVsZW1lbnQubGVuZ3RoIHJlc3BlY3RzIG9wdGdyb3Vwcy4nKTsKKwor
dmFyIHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQod3JhcHBlcik7Cit3cmFwcGVyLmlubmVySFRNTCA9ICc8c2VsZWN0IGlk
PSJ0aGVTZWxlY3QiPicrCisgICAgICAgICAgICAgICAgICAgICc8b3B0Z3JvdXAgbGFiZWw9ImZv
byIgaWQ9InRoZU9wdEdyb3VwIj4nKworICAgICAgICAgICAgICAgICAgICAnPG9wdGlvbiBpZD0i
b3B0aW9uSW5Hcm91cCI+PC9vcHRpb24+JysKKyAgICAgICAgICAgICAgICAgICAgJzwvb3B0Z3Jv
dXA+JysKKyAgICAgICAgICAgICAgICAgICAgJzwvc2VsZWN0Pic7CisKK3ZhciBzZWwgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGhlU2VsZWN0Jyk7CitzaG91bGRCZSgnc2VsLmxlbmd0aCcs
ICcxJyk7CisKK3ZhciBvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVPcHRHcm91cCcp
OworCitzZWwubGVuZ3RoID0gMjsKK3Nob3VsZEJlKCdzZWwubGVuZ3RoJywgJzInKTsKK3Nob3Vs
ZEJlKCdvZy5jaGlsZEVsZW1lbnRDb3VudCcsICcxJyk7CisKK3NlbC5sZW5ndGggPSAxOworc2hv
dWxkQmUoJ3NlbC5sZW5ndGgnLCAnMScpOworc2hvdWxkQmUoJ29nLmNoaWxkRWxlbWVudENvdW50
JywgJzEnKTsKKworc2VsLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRp
b24nKSwgb2cpOworCitzZWwubGVuZ3RoID0gMTsKK3Nob3VsZEJlKCdzZWwubGVuZ3RoJywgJzEn
KTsKK3Nob3VsZEJlKCdvZy5jaGlsZEVsZW1lbnRDb3VudCcsICcwJyk7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9z
Y3JpcHQtdGVzdHMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1yZW1vdmUuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRo
LW11dGF0aW9uLXJlbW92ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45
YThiNDY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQt
dGVzdHMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1yZW1vdmUuanMKQEAgLTAsMCAr
MSwzNyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgc2V0dGluZyAubGVuZ3RoIG9uIGFuIEhU
TUxTZWxlY3RFbGVtZW50IHdvcmtzIGluIHRoZSBwcmVzZW5jZSBvZiBtdXRhdGlvbiBsaXN0ZW5l
cnMgdGhhdCByZW1vdmUgb3B0aW9uIGVsZW1lbnRzLicpOworCitmdW5jdGlvbiBnYygpIHsKKyAg
ICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5j
b2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBpPTA7IGk8MTAwMDA7ICsraSkgeworICAgICAgICB2
YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOworICAgIH0KK30KKworZnVuY3Rpb24gb25SZW1vdmUo
ZSkgeworICAgIGlmIChlLnRhcmdldC5uZXh0U2libGluZyAhPSBudWxsKSB7CisgICAgICAgIC8v
IHJlbW92ZSBsaXN0ZW5lciB0ZW1wb3JhcmlseSB0byBhdm9pZCBsb3RzIG9mIG5lc3RpbmcKKyAg
ICAgICAgc2VsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVSZW1vdmVkJywgb25SZW1vdmUs
IGZhbHNlKTsKKyAgICAgICAgZS50YXJnZXQubmV4dFNpYmxpbmcucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZChlLnRhcmdldC5uZXh0U2libGluZyk7CisgICAgICAgIHNlbC5hZGRFdmVudExpc3RlbmVy
KCdET01Ob2RlUmVtb3ZlZCcsIG9uUmVtb3ZlLCBmYWxzZSk7CisgICAgfQorICAgIGdjKCk7Cit9
CisKK3ZhciBzZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3QnKTsKK2RvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoc2VsKTsKKworc2VsLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVS
ZW1vdmVkJywgb25SZW1vdmUsIGZhbHNlKTsKK3NlbC5hZGRFdmVudExpc3RlbmVyKCdET01Ob2Rl
SW5zZXJ0ZWQnLCBmdW5jdGlvbigpIHt9LCBmYWxzZSk7CisKK3NlbC5sZW5ndGggPSAyMDA7Citz
aG91bGRCZSgnc2VsLmxlbmd0aCcsICcyMDAnKTsKKworc2VsLmxlbmd0aCA9IDEwMDsKK3Nob3Vs
ZEJlKCdzZWwubGVuZ3RoJywgJzEwMCcpOworCitzZWwubGVuZ3RoID0gMTgwOworc2hvdWxkQmUo
J3NlbC5sZW5ndGgnLCAnMTgwJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvc2VsZWN0LXNl
dC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1yZW9yZGVyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zY3JpcHQtdGVzdHMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1yZW9yZGVyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkODI3ZGIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9zZWxlY3Qtc2V0LWxl
bmd0aC13aXRoLW11dGF0aW9uLXJlb3JkZXIuanMKQEAgLTAsMCArMSwzNiBAQAorZGVzY3JpcHRp
b24oJ1Rlc3RzIHRoYXQgc2V0dGluZyB0aGUgLmxlbmd0aCBvbiBhbiBIVE1MU2VsZWN0RWxlbWVu
dCB3b3JrcyBpbiB0aGUgcHJlc2VuY2Ugb2YgRE9NIG11dGF0aW9uIGxpc3RlbmVycyB0aGF0IHJl
b3JkZXIgb3B0aW9uIGVsZW1lbnRzJyk7CisKK3ZhciB3cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHdyYXBwZXIpOword3Jh
cHBlci5pbm5lckhUTUwgPSAnPHNlbGVjdCBpZD0idGhlU2VsZWN0Ij4nICsKKyAgICAgICAgICAg
ICAgICAgICAgJzxvcHRpb24gaWQ9ImEiPmE8L29wdGlvbj4nICsKKyAgICAgICAgICAgICAgICAg
ICAgJzxvcHRpb24gaWQ9ImIiPmI8L29wdGlvbj4nICsKKyAgICAgICAgICAgICAgICAgICAgJzxv
cHRpb24gaWQ9ImMiPmM8L29wdGlvbj4nICsKKyAgICAgICAgICAgICAgICAgICAgJzxvcHRpb24g
aWQ9ImQiPmQ8L29wdGlvbj4nICsKKyAgICAgICAgICAgICAgICAgICAgJzwvc2VsZWN0Pic7CisK
K3ZhciBzZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhlU2VsZWN0Jyk7CisKK3ZhciBm
aXJzdFJlbW92ZSA9IHRydWU7CitmdW5jdGlvbiBvblJlbW92ZShlKSB7CisgICAgaWYgKGZpcnN0
UmVtb3ZlKSB7CisgICAgICAgIC8vIHJlbW92ZSBsaXN0ZW5lciB0ZW1wb3JhcmlseSB0byBhdm9p
ZCBsb3RzIG9mIG5lc3RpbmcKKyAgICAgICAgc2VsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ0RPTU5v
ZGVSZW1vdmVkJywgb25SZW1vdmUsIGZhbHNlKTsKKyAgICAgICAgdmFyIGxhc3RPcHRpb24gPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZCcpOworICAgICAgICBzZWwucmVtb3ZlQ2hpbGQobGFz
dE9wdGlvbik7CisgICAgICAgIHNlbC5pbnNlcnRCZWZvcmUobGFzdE9wdGlvbiwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2MnKSk7CisgICAgICAgIGZpcnN0UmVtb3ZlID0gZmFsc2U7CisgICAg
ICAgIHNlbC5hZGRFdmVudExpc3RlbmVyKCdET01Ob2RlUmVtb3ZlZCcsIG9uUmVtb3ZlLCBmYWxz
ZSk7CisgICAgfQorfQorCitzZWwuYWRkRXZlbnRMaXN0ZW5lcignRE9NTm9kZVJlbW92ZWQnLCBv
blJlbW92ZSwgZmFsc2UpOworc2VsLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVJbnNlcnRlZCcs
IGZ1bmN0aW9uKCkge30sIGZhbHNlKTsKKworc2hvdWxkQmUoJ3NlbC5sZW5ndGgnLCAnNCcpOwor
c2VsLmxlbmd0aCA9IDI7CitzaG91bGRCZSgnc2VsLmxlbmd0aCcsICcyJyk7CitzaG91bGRCZSgn
c2VsLm9wdGlvbnMuaXRlbSgwKS5pZCcsICciYSInKTsKK3Nob3VsZEJlKCdzZWwub3B0aW9ucy5p
dGVtKDEpLmlkJywgJyJiIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL3NlbGVjdC1zZXQt
bGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVwYXJlbnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3NjcmlwdC10ZXN0cy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLXJlcGFyZW50Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNGEwOWIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9zZWxlY3Qtc2V0LWxl
bmd0aC13aXRoLW11dGF0aW9uLXJlcGFyZW50LmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Rlc2NyaXB0
aW9uKCdUZXN0cyB0aGF0IHNldHRpbmcgLmxlbmd0aCBvbiBhbiBIVE1MU2VsZWN0RWxlbWVudCB3
b3JrcyBpbiB0aGUgcHJlc2VuY2Ugb2YgbXV0YXRpb24gZXZlbnQgbGlzdGVuZXJzIHRoYXQgcmVw
YXJlbnQgb3B0aW9ucycpOworCit2YXIgc2VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2Vs
ZWN0Jyk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNlbCk7Cit2YXIgb3RoZXJTZWwgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3QnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQob3RoZXJTZWwpOworCitmdW5jdGlvbiBvblJlbW92ZShlKSB7CisgICAgaWYgKGUudGFyZ2V0
Lm5leHRTaWJsaW5nICE9IG51bGwpIHsKKyAgICAgICAgLy8gcmVtb3ZlIGxpc3RlbmVyIHRlbXBv
cmFyaWx5IHRvIGF2b2lkIGxvdHMgb2YgbmVzdGluZworICAgICAgICBzZWwucmVtb3ZlRXZlbnRM
aXN0ZW5lcignRE9NTm9kZVJlbW92ZWQnLCBvblJlbW92ZSwgZmFsc2UpOworICAgICAgICB2YXIg
biA9IGUudGFyZ2V0Lm5leHRTaWJsaW5nOworICAgICAgICBuLnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQobik7CisgICAgICAgIG90aGVyU2VsLmFwcGVuZENoaWxkKG4pOworICAgICAgICBzZWwuYWRk
RXZlbnRMaXN0ZW5lcignRE9NTm9kZVJlbW92ZWQnLCBvblJlbW92ZSwgZmFsc2UpOworICAgIH0K
K30KKworc2VsLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVSZW1vdmVkJywgb25SZW1vdmUsIGZh
bHNlKTsKK3NlbC5hZGRFdmVudExpc3RlbmVyKCdET01Ob2RlSW5zZXJ0ZWQnLCBmdW5jdGlvbigp
IHt9LCBmYWxzZSk7CisKK3NlbC5sZW5ndGggPSAyMDA7CitzaG91bGRCZSgnc2VsLmxlbmd0aCcs
ICcyMDAnKTsKK3Nob3VsZEJlKCdvdGhlclNlbC5sZW5ndGgnLCAnMCcpOworCitzZWwubGVuZ3Ro
ID0gMTAwOworc2hvdWxkQmUoJ3NlbC5sZW5ndGgnLCAnMTAwJyk7CitzaG91bGRCZSgnb3RoZXJT
ZWwubGVuZ3RoJywgJzAnKTsKKworc2VsLmxlbmd0aCA9IDE4MDsKK3Nob3VsZEJlKCdzZWwubGVu
Z3RoJywgJzE4MCcpOworc2hvdWxkQmUoJ290aGVyU2VsLmxlbmd0aCcsICcwJyk7CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9zY3JpcHQtdGVzdHMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi5qcyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgt
bXV0YXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFkZTcxYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL3Nl
bGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24uanMKQEAgLTAsMCArMSwxOCBAQAorZGVzY3Jp
cHRpb24oJ1Rlc3RzIHNldHRpbmcgdGhlIC5sZW5ndGggb2YgYW4gSFRNTFNlbGVjdEVsZW1lbnQg
d2l0aCBtdXRhdGlvbiBsaXN0ZW5lcnMgcmVnaXN0ZXJlZC4nKTsKKwordmFyIHNlbCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChz
ZWwpOworCitzZWwuYWRkRXZlbnRMaXN0ZW5lcignRE9NTm9kZVJlbW92ZWQnLCBmdW5jdGlvbigp
IHt9LCBmYWxzZSk7CitzZWwuYWRkRXZlbnRMaXN0ZW5lcignRE9NTm9kZUluc2VydGVkJywgZnVu
Y3Rpb24oKSB7fSwgZmFsc2UpOworCitzZWwubGVuZ3RoID0gMjAwOworc2hvdWxkQmUoJ3NlbC5s
ZW5ndGgnLCAnMjAwJyk7CisKK3NlbC5sZW5ndGggPSAxMDA7CitzaG91bGRCZSgnc2VsLmxlbmd0
aCcsICcxMDAnKTsKKworc2VsLmxlbmd0aCA9IDE4MDsKK3Nob3VsZEJlKCdzZWwubGVuZ3RoJywg
JzE4MCcpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL3NlbGVjdC1zZXQtbGVuZ3RoLmpzIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvc2VsZWN0LXNldC1sZW5ndGguanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ4M2M4MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL3NlbGVjdC1zZXQtbGVu
Z3RoLmpzCkBAIC0wLDAgKzEsMTcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IHNldHRpbmcg
dGhlIC5sZW5ndGggb2YgYW4gSFRNTFNlbGVjdEVsZW1lbnQgY29ycmVjdGx5IGNyZWF0ZXMgYW5k
IGRlc3Ryb3lzIG9wdGlvbnMuJyk7CisKK3ZhciBzZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzZWxlY3QnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2VsKTsKKworc2hvdWxkQmUo
J3NlbC5sZW5ndGgnLCAnMCcpOworCitzZWwubGVuZ3RoID0gMjAwOworc2hvdWxkQmUoJ3NlbC5s
ZW5ndGgnLCAnMjAwJyk7CisKK3NlbC5sZW5ndGggPSAxMDA7CitzaG91bGRCZSgnc2VsLmxlbmd0
aCcsICcxMDAnKTsKKworc2VsLmxlbmd0aCA9IDE4MDsKK3Nob3VsZEJlKCdzZWwubGVuZ3RoJywg
JzE4MCcpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk2ZTFmNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTMgQEAKK1Rlc3RzIHRoYXQgc2V0dGluZyB0aGUgLmxlbmd0aCBvZiBhbiBIVE1M
U2VsZWN0RWxlbWVudCBjb3JyZWN0bHkgY3JlYXRlcyBhbmQgZGVzdHJveXMgb3B0aW9ucy4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc2VsLmxlbmd0aCBpcyAwCitQQVNT
IHNlbC5sZW5ndGggaXMgMjAwCitQQVNTIHNlbC5sZW5ndGggaXMgMTAwCitQQVNTIHNlbC5sZW5n
dGggaXMgMTgwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0
aC1vcHRncm91cC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1z
ZXQtbGVuZ3RoLW9wdGdyb3VwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi43MTMwYjNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC1vcHRncm91cC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NiBAQAorVGhpcyB0ZXN0IHRoYXQgc2V0dGluZyBIVE1MU2VsZWN0RWxlbWVudC5sZW5ndGggcmVz
cGVjdHMgb3B0Z3JvdXBzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBz
ZWwubGVuZ3RoIGlzIDEKK1BBU1Mgc2VsLmxlbmd0aCBpcyAyCitQQVNTIG9nLmNoaWxkRWxlbWVu
dENvdW50IGlzIDEKK1BBU1Mgc2VsLmxlbmd0aCBpcyAxCitQQVNTIG9nLmNoaWxkRWxlbWVudENv
dW50IGlzIDEKK1BBU1Mgc2VsLmxlbmd0aCBpcyAxCitQQVNTIG9nLmNoaWxkRWxlbWVudENvdW50
IGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLW9w
dGdyb3VwLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLW9w
dGdyb3VwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWEzNWE0Zgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5n
dGgtb3B0Z3JvdXAuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZWxlY3Qtc2V0
LWxlbmd0aC1vcHRncm91cC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0
aC1tdXRhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1z
ZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmYyYmM2N2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHNldHRpbmcgdGhlIC5sZW5ndGggb2YgYW4gSFRNTFNlbGVj
dEVsZW1lbnQgd2l0aCBtdXRhdGlvbiBsaXN0ZW5lcnMgcmVnaXN0ZXJlZC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc2VsLmxlbmd0aCBpcyAyMDAKK1BBU1Mgc2VsLmxl
bmd0aCBpcyAxMDAKK1BBU1Mgc2VsLmxlbmd0aCBpcyAxODAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVtb3ZlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRh
dGlvbi1yZW1vdmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjM2NzkzMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Nl
bGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVtb3ZlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEyIEBACitUZXN0cyB0aGF0IHNldHRpbmcgLmxlbmd0aCBvbiBhbiBIVE1MU2VsZWN0RWxl
bWVudCB3b3JrcyBpbiB0aGUgcHJlc2VuY2Ugb2YgbXV0YXRpb24gbGlzdGVuZXJzIHRoYXQgcmVt
b3ZlIG9wdGlvbiBlbGVtZW50cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgc2VsLmxlbmd0aCBpcyAyMDAKK1BBU1Mgc2VsLmxlbmd0aCBpcyAxMDAKK1BBU1Mgc2VsLmxl
bmd0aCBpcyAxODAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVu
Z3RoLXdpdGgtbXV0YXRpb24tcmVtb3ZlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Nl
bGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVtb3ZlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4NGVjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1yZW1vdmUuaHRt
bApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRoLW11
dGF0aW9uLXJlbW92ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1t
dXRhdGlvbi1yZW9yZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2Vs
ZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1yZW9yZGVyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmJlYTAzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLXJl
b3JkZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3RzIHRoYXQgc2V0dGluZyB0
aGUgLmxlbmd0aCBvbiBhbiBIVE1MU2VsZWN0RWxlbWVudCB3b3JrcyBpbiB0aGUgcHJlc2VuY2Ug
b2YgRE9NIG11dGF0aW9uIGxpc3RlbmVycyB0aGF0IHJlb3JkZXIgb3B0aW9uIGVsZW1lbnRzCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNlbC5sZW5ndGggaXMgNAorUEFT
UyBzZWwubGVuZ3RoIGlzIDIKK1BBU1Mgc2VsLm9wdGlvbnMuaXRlbSgwKS5pZCBpcyAiYSIKK1BB
U1Mgc2VsLm9wdGlvbnMuaXRlbSgxKS5pZCBpcyAiYiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVvcmRlci5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLXJlb3Jk
ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTZlNTg3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13
aXRoLW11dGF0aW9uLXJlb3JkZXIuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9z
ZWxlY3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLXJlb3JkZXIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVwYXJlbnQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLXJl
cGFyZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40
ZTlhYTg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qt
c2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLXJlcGFyZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE1IEBACitUZXN0cyB0aGF0IHNldHRpbmcgLmxlbmd0aCBvbiBhbiBIVE1MU2VsZWN0RWxlbWVu
dCB3b3JrcyBpbiB0aGUgcHJlc2VuY2Ugb2YgbXV0YXRpb24gZXZlbnQgbGlzdGVuZXJzIHRoYXQg
cmVwYXJlbnQgb3B0aW9ucworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBz
ZWwubGVuZ3RoIGlzIDIwMAorUEFTUyBvdGhlclNlbC5sZW5ndGggaXMgMAorUEFTUyBzZWwubGVu
Z3RoIGlzIDEwMAorUEFTUyBvdGhlclNlbC5sZW5ndGggaXMgMAorUEFTUyBzZWwubGVuZ3RoIGlz
IDE4MAorUEFTUyBvdGhlclNlbC5sZW5ndGggaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1yZXBhcmVudC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0aW9uLXJlcGFy
ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk3NGRlOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgt
d2l0aC1tdXRhdGlvbi1yZXBhcmVudC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24tcmVwYXJlbnQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzZThmNjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24uaHRtbApA
QCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZWxlY3Qtc2V0LWxlbmd0aC13aXRoLW11dGF0
aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjNmMDY2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvc2VsZWN0LXNldC1sZW5ndGguanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDMzMDA4MWEuLmJiYWM4NTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDMtMDEgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGVzIHNldHRpbmcgSFRNTFNlbGVjdEVsZW1l
bnQubGVuZ3RoIHdpdGggbXV0YXRpb24gaGFuZGxlcnMgcHJlc2VudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM5ODMKKworICAgICAgICBXaGVuIHNl
dHRpbmcgYW4gSFRNTFNlbGVjdEVsZW1lbnQncyBsZW5ndGggYXR0cmlidXRlLCBvcHRpb24gZWxl
bWVudHMgaGF2ZSB0byBiZSBhZGRlZCBvciByZW1vdmVkIHRvIHRoZSBzZWxlY3QKKyAgICAgICAg
YXMgYXBwcm9wcmlhdGUuICBUaGlzIGlzIGEgbGl0dGxlIHRyaWNreSB3aXRoIG11dGF0aW9uIGV2
ZW50cyBzaW5jZSB0aGV5IG1pZ2h0IGFkZCwgcmVtb3ZlLCBvciByZW9yZGVyIGVsZW1lbnRzCisg
ICAgICAgIHdoaWxlIG9wdGlvbiBlbGVtZW50cyBhcmUgYmVpbmcgYWRkZWQgb3IgZGVsZXRlZC4K
KworICAgICAgICBUZXN0czogZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC1vcHRncm91cC5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0
YXRpb24tcmVtb3ZlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvc2VsZWN0LXNldC1s
ZW5ndGgtd2l0aC1tdXRhdGlvbi1yZW9yZGVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9y
bXMvc2VsZWN0LXNldC1sZW5ndGgtd2l0aC1tdXRhdGlvbi1yZXBhcmVudC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2Zvcm1zL3NlbGVjdC1zZXQtbGVuZ3RoLXdpdGgtbXV0YXRpb24uaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9zZWxlY3Qtc2V0LWxlbmd0aC5odG1sCisKKyAgICAg
ICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
ZWxlY3RFbGVtZW50OjpzZXRMZW5ndGgpOgorCiAyMDEwLTAzLTAxICBKYWtvYiBQZXRzb3ZpdHMg
IDxqcGV0c292aXRzQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGlyayBTY2h1bHpl
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggNTA2MzllOS4uZjExNzU1ZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC00MTgsMTEgKzQxOCwyMSBAQCB2b2lkIEhU
TUxTZWxlY3RFbGVtZW50OjpzZXRMZW5ndGgodW5zaWduZWQgbmV3TGVuLCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICB9IGVsc2UgewogICAgICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVt
cyA9IGxpc3RJdGVtcygpOwogCisgICAgICAgIC8vIFJlbW92aW5nIGNoaWxkcmVuIGZpcmVzIG11
dGF0aW9uIGV2ZW50cywgd2hpY2ggbWlnaHQgbXV0YXRlIHRoZSBET00gZnVydGhlciwgc28gd2Ug
Zmlyc3QgY29weSBvdXQgYSBsaXN0CisgICAgICAgIC8vIG9mIGVsZW1lbnRzIHRoYXQgd2UgaW50
ZW5kIHRvIHJlbW92ZSB0aGVuIGF0dGVtcHQgdG8gcmVtb3ZlIHRoZW0gb25lIGF0IGEgdGltZS4K
KyAgICAgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiA+IGl0ZW1zVG9SZW1vdmU7CiAgICAgICAg
IHNpemVfdCBvcHRpb25JbmRleCA9IDA7Ci0gICAgICAgIGZvciAoc2l6ZV90IGxpc3RJbmRleCA9
IDA7IGxpc3RJbmRleCA8IGl0ZW1zLnNpemUoKTsgbGlzdEluZGV4KyspIHsKLSAgICAgICAgICAg
IGlmIChpdGVtc1tsaXN0SW5kZXhdLT5oYXNMb2NhbE5hbWUob3B0aW9uVGFnKSAmJiBvcHRpb25J
bmRleCsrID49IG5ld0xlbikgewotICAgICAgICAgICAgICAgIEVsZW1lbnQgKml0ZW0gPSBpdGVt
c1tsaXN0SW5kZXhdOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGl0ZW1zLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBFbGVtZW50KiBpdGVtID0gaXRlbXNbaV07CisgICAgICAg
ICAgICBpZiAoaXRlbS0+aGFzTG9jYWxOYW1lKG9wdGlvblRhZykgJiYgb3B0aW9uSW5kZXgrKyA+
PSBuZXdMZW4pIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaXRlbS0+cGFyZW50Tm9kZSgpKTsK
KyAgICAgICAgICAgICAgICBpdGVtc1RvUmVtb3ZlLmFwcGVuZChpdGVtKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXNUb1Jl
bW92ZS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgRWxlbWVudCogaXRlbSA9IGl0ZW1zVG9S
ZW1vdmVbaV0uZ2V0KCk7CisgICAgICAgICAgICBpZiAoaXRlbS0+cGFyZW50Tm9kZSgpKSB7CiAg
ICAgICAgICAgICAgICAgaXRlbS0+cGFyZW50Tm9kZSgpLT5yZW1vdmVDaGlsZChpdGVtLCBlYyk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>