<?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>48002</bug_id>
          
          <creation_ts>2010-10-20 13:15:57 -0700</creation_ts>
          <short_desc>network-simulator.php makes for very slow layout tests</short_desc>
          <delta_ts>2010-11-02 18:09:42 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Nordman">michaeln</reporter>
          <assigned_to name="Michael Nordman">michaeln</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>296962</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-10-20 13:15:57 -0700</bug_when>
    <thetext>The script simulates network errors with by forever redirecting back to requested url. Some layout tests make repeated use of this script in a single test run. On an unloaded system, each invocation can take many round trips and multiple seconds to trigger the desired error (depending on the underlying http stack). On a system trying to run tests in parallel, this slowness is more pronounced and timeouts result.

A few appcache layout tests use this script and at least one xhr test. In many (maybe all?) of the layout tests, an HTTP error would work as well as a network error for testing the logic, and would run a lot faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296966</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-20 13:22:32 -0700</bug_when>
    <thetext>This script simulates a disconnected network, as well as we can. Sending an error response would test something different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296976</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-10-20 13:29:04 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; This script simulates a disconnected network, as well as we can. Sending an error response would test something different.

Yes, I see what it&apos;s doing and why. The fact remains that we have tests that timeout due to this.

I question whether we need to simulate a network error in all the places where this script is used. It looks like a http error would effectively test the logic that wants to be tested. I&apos;m looking thru the appcache tests and noticing that simulated network errors are used thruout, but haven&apos;t really noticed (m)any tests that simulate a server error.

Also, I question whether this is as good of a simulation of a network error as can be constructed. I wonder if we can close the underlying connection from the server-side?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296997</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-20 13:47:30 -0700</bug_when>
    <thetext>&gt; Yes, I see what it&apos;s doing and why. The fact remains that we have tests that timeout due to this.

Can that be fixed in chromium networking code? I don&apos;t think CFNetwork has any performance issues with redirects.

&gt; I&apos;m looking thru the appcache tests and noticing that simulated network errors are used thruout, but haven&apos;t really noticed (m)any tests that simulate a server error.

Yeah, we need more of the latter kind.

&gt; Also, I question whether this is as good of a simulation of a network error as can be constructed. I wonder if we can close the underlying connection from the server-side?

I couldn&apos;t find a better way when making those tests. If there is a way to force Apache to rudely drop a connection, that would be a much better approximation indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297014</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-10-20 14:07:17 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Yes, I see what it&apos;s doing and why. The fact remains that we have tests that timeout due to this.
&gt; 
&gt; Can that be fixed in chromium networking code? I don&apos;t think CFNetwork has any performance issues with redirects.

It functions fine, its just slow on this non-sensical content. I really don&apos;t want to modify the networking code for this.

&gt; 
&gt; &gt; I&apos;m looking thru the appcache tests and noticing that simulated network errors are used thruout, but haven&apos;t really noticed (m)any tests that simulate a server error.
&gt; 
&gt; Yeah, we need more of the latter kind.

I&apos;d like to switch some of the former to be some of the latter, and retain some &apos;network error&apos; cases in there too, but lean on them less.

&gt; &gt; Also, I question whether this is as good of a simulation of a network error as can be constructed. I wonder if we can close the underlying connection from the server-side?
&gt; 
&gt; I couldn&apos;t find a better way when making those tests. If there is a way to force Apache to rudely drop a connection, that would be a much better approximation indeed.

I don&apos;t know php very well, I didn&apos;t see an obvious way to close the connection? If I could get a reference to the underlying &apos;socket&apos; there is a call to close the socket. 

Another approach could be to simulate a &apos;network error&apos; could be with a malformed http message, maybe an excessively large header? I&apos;ll see if php lets me form a malformed header? It&apos;d be nice if php let me produce the output w/o doing anything &apos;for me&apos; in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297024</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-10-20 14:21:47 -0700</bug_when>
    <thetext>&gt; Another approach could be to simulate a &apos;network error&apos; could be with a malformed http message, maybe an excessively large header? I&apos;ll see if php lets me form a malformed header? It&apos;d be nice if php let me produce the output w/o doing anything &apos;for me&apos; in this case.

Ah ha... at least the instance of php i&apos;m running here let&apos;s me produce arbitrarily large headers!

        # Simulate a network error with an excessively large response header.
        $largeString = &quot;&quot;;
        for ($x = 0; $x &lt; 10000; $x++)
            $largeString .= &quot;abcdefghijklmonpqrstuvwxyz0123456789&quot;;
        header(&apos;HTTP/1.1 200 OK&apos;);
        header(&apos;X-WayTooBig: &apos; . $largeString);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297097</commentid>
    <comment_count>6</comment_count>
      <attachid>71353</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-10-20 16:13:26 -0700</bug_when>
    <thetext>Created attachment 71353
faster network simulator

as mentioned in the previous comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297106</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-20 16:27:03 -0700</bug_when>
    <thetext>Which network back-ends did you test with? What happened with performance on non-chromium ones?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297108</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-20 16:29:14 -0700</bug_when>
    <thetext>Also, why do you think that changing an existing test in this way is a good idea? You can add a new one if you want to test this code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297115</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-10-20 16:32:23 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Which network back-ends did you test with? What happened with performance on non-chromium ones?

I haven&apos;t gotten that far yet, only run with chrome&apos;s test_shell thusfar (that&apos;s why no cq setting). I&apos;m working on patching this in on my mac and am watching what the try bots are doing with the uploaded patch.

(In reply to comment #8)
&gt; Also, why do you think that changing an existing test in this way is a good idea? You can add a new one if you want to test this code path.

As mentioned in the previous comments, because there&apos;s little (or no) coverage for http errors triggering fallbacks in the tests. I believe there still are other tests where &apos;network errors&apos; trigger fallbacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297687</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-10-21 15:31:05 -0700</bug_when>
    <thetext>Bah! Excessively large headers don&apos;t induce an error in safari(win), looks like the value is truncated (at least as displayed by the inspector).

Curious tidbits...

* chrome and firefox will follow 21 self-redirects before giving up
* safari(win) follows 17
* ie8, followed 800+ redirects before i gave up on it

... so i definitely can&apos;t change this self-redirect following behavior in the network stack</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298193</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-10-22 14:49:17 -0700</bug_when>
    <thetext>A related chrome issue with some relevant history.
http://code.google.com/p/chromium/issues/detail?id=54717</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300653</commentid>
    <comment_count>12</comment_count>
      <attachid>72099</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-10-27 15:44:47 -0700</bug_when>
    <thetext>Created attachment 72099
faster network simulator

A smaller change to the script that does the trick.

        # Simulate a network error by replying with a non-sense response.
        header(&apos;HTTP/1.1 307 Temporary Redirect&apos;);
        header(&apos;Location: &apos; . $_SERVER[&apos;REQUEST_URI&apos;]); # redirect to self
        header(&apos;Content-Length: 1&apos;);
        header(&apos;Content-Length: 5&apos;, false); # multiple content-length headers
        echo &quot;Intentionally incorrect response.&quot;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300682</commentid>
    <comment_count>13</comment_count>
      <attachid>72099</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-27 16:22:16 -0700</bug_when>
    <thetext>Comment on attachment 72099
faster network simulator

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

Nice, but please don&apos;t change existing tests.

&gt; LayoutTests/http/tests/resources/network-simulator.php:5
&gt; +// offline, it simulates a network error with a non-sense response.

What&apos;s the difference between non-sense and nonsense? Most dictionaries don&apos;t seem to include this spelling.

&gt; LayoutTests/http/tests/resources/network-simulator.php:66
&gt; +        header(&apos;Content-Length: 1&apos;);
&gt; +        header(&apos;Content-Length: 5&apos;, false); # multiple content-length headers

A good comment would explain why we have these lines (like, it helps some network back-ends detect the error faster).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300691</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-10-27 16:31:22 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 72099 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72099&amp;action=review
&gt; 
&gt; Nice, but please don&apos;t change existing tests.

Do you mean in this patch or at all?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300714</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-27 17:02:38 -0700</bug_when>
    <thetext>Well, I certainly agree it&apos;s a good idea to land a test using the new capability in the same patch.

It seems best and safest to add a new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300731</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-10-27 17:26:16 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Well, I certainly agree it&apos;s a good idea to land a test using the new capability in the same patch.

There is no new capability?

Some details of how the error is simulated is changed is all. The layout test changes in this patch are strictly minor improvements (imho). In fallback.html, don&apos;t send two requests when one will do. In offline-access.htlm, delete some stale code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300734</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-27 17:31:52 -0700</bug_when>
    <thetext>I was distracted, and somehow thought of your earlier patch, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300736</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-27 17:34:11 -0700</bug_when>
    <thetext>There was some reason why I made a separate canLoad() check, I&apos;ll try to remember it. Maybe it wasn&apos;t a good one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301396</commentid>
    <comment_count>19</comment_count>
      <attachid>72250</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-10-28 15:49:17 -0700</bug_when>
    <thetext>Created attachment 72250
faster network simulator

spelling and wordsmithing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301994</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-10-29 13:17:36 -0700</bug_when>
    <thetext>ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302939</commentid>
    <comment_count>21</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-11-01 14:30:35 -0700</bug_when>
    <thetext>ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302957</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-01 14:49:21 -0700</bug_when>
    <thetext>I asked, and you said there was no urgency. Why do you ping each working day? Is this super urgent now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302963</commentid>
    <comment_count>23</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-11-01 14:55:34 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; I asked, and you said there was no urgency. Why do you ping each working day? Is this super urgent now?

It isn&apos;t super urgent, but the timeout problem does obscure actual test results, so I&apos;d like to get it in so I can start seeing the actual results more clearly. It&apos;s a small change so I thought it would be easy to review.

Maybe I should have somebody else take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303550</commentid>
    <comment_count>24</comment_count>
      <attachid>72250</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-02 12:23:48 -0700</bug_when>
    <thetext>Comment on attachment 72250
faster network simulator

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

OK. Please address the comments, and verify how much of a performance win the test change is.

&gt; LayoutTests/ChangeLog:9
&gt; +        multiple content-length headers. Chrome&apos;s network stacks consider that an

Typo: considers.

&gt; LayoutTests/ChangeLog:11
&gt; +        This avoids time outs due to using PHP via slow CGI on windows.

Typo: timeouts.

&gt; LayoutTests/ChangeLog:21
&gt; +        * http/tests/resources/offline-access.html:

This change is in http/tests/appcache/resources/offline-access-frame.html, not offline-access.html.

&gt; LayoutTests/http/tests/appcache/fallback.html:57
&gt; +        log(&quot;FAIL:Cannot load a URL from fallback namespace when network is enabled, ex = &quot; + ex);

Missing space.

&gt; LayoutTests/http/tests/appcache/fallback.html:59
&gt;          hadError = true;
&gt;      }

I remembered what the benefit from canLoad() was - it helped write more concise and readable code. It&apos;s much harder to read the new version of the test.

If you get measurable speedup from these changes, let&apos;s land them - but if it can&apos;t be measured, let&apos;s keep the test as is.

&gt; LayoutTests/http/tests/appcache/fallback.html:149
&gt; -    if (!canLoad(testURL)) {
&gt; -        log(&quot;FAIL: Cannot load an URL from fallback namespace when network is disabled&quot;);
&gt; -        hadError = true;
&gt; -    } else if (load(testURL) != load(&quot;resources/simple.txt&quot;)) {
&gt; -        log(&quot;FAIL: Loading an URL from fallback namespace when network is disabled returned unexpected response&quot;);
&gt; +    try {
&gt; +      if (load(testURL) != load(&quot;resources/simple.txt&quot;)) {

There is a slight difference here - an exception from loading resources/simple.txt would be attributed to loading testURL. Not a big deal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303745</commentid>
    <comment_count>25</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-11-02 15:58:58 -0700</bug_when>
    <thetext>When using php via cgi it is measurable, 2 of the 3 urls given to load() are satisfied by a php script. Under normal cirucumstances each php request adds about 100ms.

I can eliminate the multiple try/catch blocks if you think that would help.

function load(url)
{
    try {
        var req = new XMLHttpRequest();
        req.open(&quot;GET&quot;, url, false);
        req.send(&quot;&quot;);
        return req.responseText;
    catch (ex) {
        log(&quot;FAIL: Cannot load &quot; + url + &quot;, ex = &quot; + ex);
        hadError = true;
        return &quot;&quot;;  // This value should not be expected as the responseText for a url presented to this function.
    }
}


    if (load(redirectURL) != &quot;Hello, World!&quot;) {
        log(&quot;FAIL: Loaded the wrong content for a redirect to another origin when network is enabled&quot;);
        hadError = true;
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303754</commentid>
    <comment_count>26</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-02 16:05:25 -0700</bug_when>
    <thetext>That looks better to me, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303769</commentid>
    <comment_count>27</comment_count>
      <attachid>72763</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-11-02 16:22:20 -0700</bug_when>
    <thetext>Created attachment 72763
faster network simulator

new patch with changes outlined above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303781</commentid>
    <comment_count>28</comment_count>
      <attachid>72763</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-02 16:31:50 -0700</bug_when>
    <thetext>Comment on attachment 72763
faster network simulator

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

&gt; LayoutTests/ChangeLog:15
&gt; +        3) Removed some unneeded code from offline-access.html. Appcache events are guaranteed

offline-access-frame.html here, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303834</commentid>
    <comment_count>29</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-11-02 18:09:42 -0700</bug_when>
    <thetext>Committed r71196: &lt;http://trac.webkit.org/changeset/71196&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71353</attachid>
            <date>2010-10-20 16:13:26 -0700</date>
            <delta_ts>2010-10-27 15:44:47 -0700</delta_ts>
            <desc>faster network simulator</desc>
            <filename>simulator.txt</filename>
            <type>text/plain</type>
            <size>6476</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDcwMTg3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMTAtMjAgIE1pY2hhZWwgTm9yZG1hbiAg
PG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSBuZXR3b3JrLXNpbXVsYXRvci5waHAgbGVzcyBzbG93LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgwMDIKKyAgICAg
ICAgSW5zdGVhZCBvZiByZXNwb25kaW5nIHdpdGggYSBzZXJpZXMgb2YgcmVkaXJlY3RzIGJhY2sg
dG8gdGhlIHJlcXVlc3RlZCB1cmwsCisgICAgICAgIHNpbXVsYXRlIGEgbmV0d29yayBlcnJvciBi
eSByZXR1cm5pbmcgYW4gZXhjZXNzaXZlbHkgbGFyZ2UgcmVzcG9uc2UgaGVhZGVyLgorICAgICAg
ICBBbHNvIG1vZGlmaWVkIG5ldHdvcmstc2ltdWxhdG9yLnBocCB0byBvcHRpb25hbGx5IHJlc3Bv
bmQgd2l0aCBhIHNpbXVsYXRlZAorICAgICAgICBIVFRQIGVycm9yIGluc3RlYWQgb2YgYSBzaW11
bGF0ZWQgbmV0d29yayBlcnJvciwgYW5kIHVzZWQgdGhlIEhUVFAgZXJyb3IKKyAgICAgICAgbW9k
ZSBmb3IgYXBwY2FjaGUvZmFsbGJhY2suaHRtbC4gQWxzbyBnb3QgcmlkIG9mIGNhbkxvYWQoKSwg
dGhlIGxvYWQoKQorICAgICAgICByZXN1bHQgaXMgc3VmZmljaWVudCBmb3IgZGV0ZXJtaW5pbmcg
aWYgaXQgY291bGQgYmUgbG9hZGVkLgorCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9m
YWxsYmFjay5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VzL25ldHdvcmstc2lt
dWxhdG9yLnBocDoKKwogMjAxMC0xMC0yMCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEFkZC91cGRhdGUgY2hyb21pdW0gZXhwZWN0YXRpb25zIGZvciBu
ZXdseSBhZGRlZCBhbmQgY2hhbmdlZCB0ZXN0cy4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvZmFsbGJhY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL2ZhbGxiYWNrLmh0bWwJKHJldmlzaW9uIDcwMTg1KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9mYWxsYmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw3ICsyMSw3IEBAIGZ1bmN0aW9uIHNldE5ldHdvcmtFbmFibGVkKHN0YXRlKQogewogICAg
IHRyeSB7CiAgICAgICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7Ci0gICAgICAgIHJl
cS5vcGVuKCJHRVQiLCAiL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD0i
ICsgKHN0YXRlID8gImNvbm5lY3QiIDogImRpc2Nvbm5lY3QiKSwgZmFsc2UpOworICAgICAgICBy
ZXEub3BlbigiR0VUIiwgIi9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9
IiArIChzdGF0ZSA/ICJjb25uZWN0IiA6ICJzaW11bGF0ZS1odHRwLWVycm9yIiksIGZhbHNlKTsK
ICAgICAgICAgcmVxLnNlbmQoIiIpOwogICAgIH0gY2F0Y2ggKGV4KSB7CiAgICAgICAgIGxvZygi
Q2Fubm90IGFjY2VzcyBuZXR3b3JrIHNpbXVsYXRvciBVUkwiKTsKQEAgLTI5LDI5ICsyOSwxMiBA
QCBmdW5jdGlvbiBzZXROZXR3b3JrRW5hYmxlZChzdGF0ZSkKICAgICB9CiB9CiAKLWZ1bmN0aW9u
IGNhbkxvYWQodXJsKQotewotICAgIHRyeSB7Ci0gICAgICAgIHZhciByZXEgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKTsKLSAgICAgICAgcmVxLm9wZW4oIkdFVCIsIHVybCwgZmFsc2UpOwotICAgICAg
ICByZXEuc2VuZCgiIik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQogZnVuY3Rpb24gbG9hZCh1cmwpCiB7
Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAg
ICAgICByZXEub3BlbigiR0VUIiwgdXJsLCBmYWxzZSk7Ci0gICAgICAgIHJlcS5zZW5kKCIiKTsK
LSAgICAgICAgcmV0dXJuIHJlcS5yZXNwb25zZVRleHQ7Ci0gICAgfSBjYXRjaCAoZXgpIHsKLSAg
ICAgICAgYWxlcnQoIlVuZXhwZWN0ZWQgZXJyb3IgbG9hZGluZyAiICsgdXJsICsgIjogIiArIGV4
KTsKLSAgICAgICAgaGFkRXJyb3IgPSB0cnVlOwotICAgIH0KKyAgICB2YXIgcmVxID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxLm9wZW4oIkdFVCIsIHVybCwgZmFsc2UpOworICAgIHJl
cS5zZW5kKCIiKTsKKyAgICByZXR1cm4gcmVxLnJlc3BvbnNlVGV4dDsKIH0KIAogdmFyIHRlc3RV
UkwgPSAiL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/cGF0aD0vYXBwY2FjaGUvcmVz
b3VyY2VzL25vdC1pbi1jYWNoZS50eHQiOwpAQCAtNjUsMTggKzQ4LDIxIEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgIAogICAgIHNldE5ldHdvcmtFbmFibGVkKHRydWUpOwogCi0gICAgaWYgKCFjYW5M
b2FkKHRlc3RVUkwpIHx8ICEvbm90IGluIHRoZSBjYWNoZS8udGVzdChsb2FkKHRlc3RVUkwpKSkg
ewotICAgICAgICBsb2coIkZBSUw6IENhbm5vdCBsb2FkIGFuIFVSTCBmcm9tIGZhbGxiYWNrIG5h
bWVzcGFjZSB3aGVuIG5ldHdvcmsgaXMgZW5hYmxlZCIpOwotICAgICAgICBoYWRFcnJvciA9IHRy
dWU7Ci0gICAgfQotCi0gICAgaWYgKCFjYW5Mb2FkKG5vbmV4aXN0ZW50VVJMKSB8fCBsb2FkKG5v
bmV4aXN0ZW50VVJMKSAhPSAiSGVsbG8sIFdvcmxkISIpIHsKLSAgICAgICAgbG9nKCJGQUlMOiBG
YWxsYmFjayByZXNvdXJjZSB3YXNuJ3QgdXNlZCBmb3IgYSA0MDQgcmVzcG9uc2UiKTsKLSAgICAg
ICAgaGFkRXJyb3IgPSB0cnVlOwotICAgIH0KLQotICAgIGlmICghY2FuTG9hZChyZWRpcmVjdFVS
TCkgfHwgbG9hZChyZWRpcmVjdFVSTCkgIT0gIkhlbGxvLCBXb3JsZCEiKSB7Ci0gICAgICAgIGxv
ZygiRkFJTDogRmFsbGJhY2sgcmVzb3VyY2Ugd2Fzbid0IHVzZWQgZm9yIGEgcmVkaXJlY3QgdG8g
YSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2luIik7CisgICAgdHJ5IHsKKyAgICAgIGlmICgh
L25vdCBpbiB0aGUgY2FjaGUvLnRlc3QobG9hZCh0ZXN0VVJMKSkpIHsKKyAgICAgICAgICBsb2co
IkZBSUw6IENhbm5vdCBsb2FkIGFuIFVSTCBmcm9tIGZhbGxiYWNrIG5hbWVzcGFjZSB3aGVuIG5l
dHdvcmsgaXMgZW5hYmxlZCIpOworICAgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKKyAgICAgIH0K
KyAgICAgIGlmIChsb2FkKG5vbmV4aXN0ZW50VVJMKSAhPSAiSGVsbG8sIFdvcmxkISIpIHsKKyAg
ICAgICAgICBsb2coIkZBSUw6IEZhbGxiYWNrIHJlc291cmNlIHdhc24ndCB1c2VkIGZvciBhIDQw
NCByZXNwb25zZSIpOworICAgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAg
IGlmIChsb2FkKHJlZGlyZWN0VVJMKSAhPSAiSGVsbG8sIFdvcmxkISIpIHsKKyAgICAgICAgICBs
b2coIkZBSUw6IEZhbGxiYWNrIHJlc291cmNlIHdhc24ndCB1c2VkIGZvciBhIHJlZGlyZWN0IHRv
IGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiIpOworICAgICAgICAgIGhhZEVycm9yID0g
dHJ1ZTsKKyAgICAgIH0KKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBsb2coIkZBSUw6IENh
dWdodCBleGNlcHRpb24gaW4gdGVzdCgpLCAiICsgZXgpOwogICAgICAgICBoYWRFcnJvciA9IHRy
dWU7CiAgICAgfQogCkBAIC0xNDcsMTIgKzEzMywxNCBAQCBmdW5jdGlvbiB0ZXN0NigpCiB7CiAg
ICAgc2V0TmV0d29ya0VuYWJsZWQoZmFsc2UpOwogCi0gICAgaWYgKCFjYW5Mb2FkKHRlc3RVUkwp
KSB7CisgICAgdHJ5IHsKKyAgICAgIGlmIChsb2FkKHRlc3RVUkwpICE9IGxvYWQoInJlc291cmNl
cy9zaW1wbGUudHh0IikpIHsKKyAgICAgICAgICBsb2coIkZBSUw6IExvYWRpbmcgYW4gVVJMIGZy
b20gZmFsbGJhY2sgbmFtZXNwYWNlIHdoZW4gbmV0d29yayBpcyBkaXNhYmxlZCByZXR1cm5lZCB1
bmV4cGVjdGVkIHJlc3BvbnNlIik7CisgICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAg
fQorICAgIH0gY2F0Y2ggKGV4KSB7CiAgICAgICAgIGxvZygiRkFJTDogQ2Fubm90IGxvYWQgYW4g
VVJMIGZyb20gZmFsbGJhY2sgbmFtZXNwYWNlIHdoZW4gbmV0d29yayBpcyBkaXNhYmxlZCIpOwog
ICAgICAgICBoYWRFcnJvciA9IHRydWU7Ci0gICAgfSBlbHNlIGlmIChsb2FkKHRlc3RVUkwpICE9
IGxvYWQoInJlc291cmNlcy9zaW1wbGUudHh0IikpIHsKLSAgICAgICAgbG9nKCJGQUlMOiBMb2Fk
aW5nIGFuIFVSTCBmcm9tIGZhbGxiYWNrIG5hbWVzcGFjZSB3aGVuIG5ldHdvcmsgaXMgZGlzYWJs
ZWQgcmV0dXJuZWQgdW5leHBlY3RlZCByZXNwb25zZSIpOwotICAgICAgICBoYWRFcnJvciA9IHRy
dWU7CiAgICAgfQogCiAgICAgbG9nKGhhZEVycm9yID8gIkZBSUxVUkUiIDogIlNVQ0NFU1MiKTsK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9y
LnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9uZXR3
b3JrLXNpbXVsYXRvci5waHAJKHJldmlzaW9uIDcwMTg1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwCSh3b3JraW5nIGNvcHkpCkBAIC01
OSw5ICs1OSwxNSBAQCBmdW5jdGlvbiBnZW5lcmF0ZVJlc3BvbnNlKCRwYXRoKQogICAgIGdsb2Jh
bCAkc3RhdGVGaWxlOwogICAgICRzdGF0ZSA9IGdldFN0YXRlKCRzdGF0ZUZpbGUpOwogICAgIGlm
ICgkc3RhdGUgPT0gIk9mZmxpbmUiKSB7Ci0gICAgICAgIGhlYWRlcignSFRUUC8xLjEgMzA3IFRl
bXBvcmFyeSBSZWRpcmVjdCcpOwotICAgICAgICAjIFNpbXVsYXRlIGEgbmV0d29yayBlcnJvciBi
eSByZWRpcmVjdGluZyB0byBzZWxmLgotICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnIC4gJF9T
RVJWRVJbJ1JFUVVFU1RfVVJJJ10pOworICAgICAgICAjIFNpbXVsYXRlIGEgbmV0d29yayBlcnJv
ciB3aXRoIGFuIGV4Y2Vzc2l2ZWx5IGxhcmdlIHJlc3BvbnNlIGhlYWRlci4KKyAgICAgICAgJGxh
cmdlU3RyaW5nID0gIiI7CisgICAgICAgIGZvciAoJHggPSAwOyAkeCA8IDEwMDAwOyAkeCsrKQor
ICAgICAgICAgICAgJGxhcmdlU3RyaW5nIC49ICJhYmNkZWZnaGlqa2xtb25wcXJzdHV2d3h5ejAx
MjM0NTY3ODkiOworICAgICAgICBoZWFkZXIoJ0hUVFAvMS4xIDIwMCBPSycpOworICAgICAgICBo
ZWFkZXIoJ1gtV2F5VG9vQmlnOiAnIC4gJGxhcmdlU3RyaW5nKTsKKyAgICB9IGVsc2UgIGlmICgk
c3RhdGUgPT0gIkhUVFBFcnJvciIpIHsKKyAgICAgICAgIyBSZXNwb25kIHdpdGggYW4gSFRUUCBl
cnJvcgorICAgICAgICBoZWFkZXIoJ0hUVFAvMS4xIDUwMCBTaW11bGF0ZWQgRXJyb3InKTsKICAg
ICB9IGVsc2UgewogICAgICAgICAvLyBBIGxpdHRsZSBzZWN1cnV0eSBjaGVja2luZyBjYW4ndCBo
dXJ0LgogICAgICAgICBpZiAoc3Ryc3RyKCRwYXRoLCAiLi4iKSkKQEAgLTcwLDcgKzc2LDcgQEAg
ZnVuY3Rpb24gZ2VuZXJhdGVSZXNwb25zZSgkcGF0aCkKICAgICAgICAgaWYgKCRwYXRoWzBdID09
ICcvJykKICAgICAgICAgICAgICRwYXRoID0gJy4uJyAuICRwYXRoOwogCi0gICAgICAgIGdlbmVy
YXRlTm9DYWNoZUhUVFBIZWFkZXIoKTsgICAgCisgICAgICAgIGdlbmVyYXRlTm9DYWNoZUhUVFBI
ZWFkZXIoKTsKIAogICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHBhdGgpKSB7CiAgICAgICAgICAg
ICBoZWFkZXIoIkxhc3QtTW9kaWZpZWQ6ICIgLiBnbWRhdGUoIkQsIGQgTSBZIEg6aTpzIFQiLCBm
aWxlbXRpbWUoJHBhdGgpKSk7CkBAIC0xNTksNiArMTY1LDggQEAgaWYgKCRjb21tYW5kKSB7CiAg
ICAgICAgIHNldFN0YXRlKCJPbmxpbmUiLCAkc3RhdGVGaWxlKTsKICAgICBlbHNlIGlmICgkY29t
bWFuZCA9PSAiZGlzY29ubmVjdCIpCiAgICAgICAgIHNldFN0YXRlKCJPZmZsaW5lIiwgJHN0YXRl
RmlsZSk7CisgICAgZWxzZSBpZiAoJGNvbW1hbmQgPT0gInNpbXVsYXRlLWh0dHAtZXJyb3IiKQor
ICAgICAgICBzZXRTdGF0ZSgiSFRUUEVycm9yIiwgJHN0YXRlRmlsZSk7CiAgICAgZWxzZSBpZiAo
JGNvbW1hbmQgPT0gImluY3JlYXNlLXJlc291cmNlLWNvdW50IikKICAgICAgICAgaGFuZGxlSW5j
cmVhc2VSZXNvdXJjZUNvdW50Q29tbWFuZCgkX0dFVFsncGF0aCddKTsKICAgICBlbHNlIGlmICgk
Y29tbWFuZCA9PSAicmVzZXQtcmVzb3VyY2UtY291bnQiKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72099</attachid>
            <date>2010-10-27 15:44:47 -0700</date>
            <delta_ts>2010-10-28 15:49:17 -0700</delta_ts>
            <desc>faster network simulator</desc>
            <filename>simulator.2.txt</filename>
            <type>text/plain</type>
            <size>7629</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDcwNjk1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMTAtMjAgIE1pY2hhZWwgTm9yZG1hbiAg
PG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTb21lIHdvcmsgb24gbWFraW5nIGFwcGNhY2hlIGxh
eW91dCB0ZXN0cyBsZXNzIGZsYWt5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDgwMDIKKyAgICAgICAgMSkgTWFrZSBuZXR3b3JrLXNpbXVsYXRvci5w
aHAgbGVzcyBzbG93LgorICAgICAgICBJbiBhZGRpdGlvbiB0byByZWRpcmVjdGluZyBiYWNrIHRv
IHRoZSByZXF1ZXN0ZWQgdXJsLCB0aGUgcmVzcG9uc2UgY29udGFpbnMKKyAgICAgICAgbXVsdGlw
bGUgY29udGVudC1sZW5ndGggaGVhZGVycy4gQ2hyb21lJ3MgbmV0d29yayBzdGFja3MgY29uc2lk
ZXIgdGhhdCBhbgorICAgICAgICBlcnJvciBjb25kaXRpb24gdG9vIGFuZCBwaWNrcyB1cCBvbiBp
dCBmYXN0ZXIgKG9uZSByb3VuZCB0cmlwIGluc3RlYWQgb2YgbXVsdGlwbGUpLgorICAgICAgICBU
aGlzIGF2b2lkcyB0aW1lIG91dHMgZHVlIHRvIHVzaW5nIFBIUCB2aWEgc2xvdyBDR0kgb24gd2lu
ZG93cy4KKyAgICAgICAgMikgUmVtb3ZlZCBjYW5Mb2FkKCkgZnJvbSBhcHBjYWNoZS9mYWxsYmFj
ay5odG1sIGxheW91dCB0ZXN0LCB0aGUgbG9hZCgpCisgICAgICAgIHJlc3VsdCBpcyBzdWZmaWNp
ZW50IGZvciBkZXRlcm1pbmluZyBpZiBpdCBjb3VsZCBiZSBsb2FkZWQuIFNvIGZld2VyIHJlcXVl
c3RzIGFyZQorICAgICAgICBtYWRlIHRvIGNvbmR1Y3QgdGhlIHRlc3QsIGN1dHRpbmcgb3V0IG1v
cmUgdGltZS4KKyAgICAgICAgMykgUmVtb3ZlZCBzb21lIHVubmVlZGVkIGNvZGUgZnJvbSBvZmZs
aW5lLWFjY2Vzcy5odG1sLiBBcHBjYWNoZSBldmVudHMgYXJlIGd1YXJhbnRlZWQKKyAgICAgICAg
dG8gYmUgZGVmZXJyZWQgdW50aWwgYWZ0ZXIgJ29ubG9hZCcgaGFzIGhhcHBlbmVkLiBUaGlzIHRl
c3Qgd2FzIGNvZGVkIHByaW9yIHRvIHRoYXQKKyAgICAgICAgZ3VhcmFudGVlIGJlaW5nIHNhdGlz
ZmllZC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvZmFsbGJhY2suaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA6CisgICAg
ICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZXMvb2ZmbGluZS1hY2Nlc3MuaHRtbDoKKwogMjAxMC0x
MC0yNyAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQmV0aCBEYWtpbi4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZmFs
bGJhY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L2ZhbGxiYWNrLmh0bWwJKHJldmlzaW9uIDcwNjk1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9mYWxsYmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyOSArMjksMTIg
QEAgZnVuY3Rpb24gc2V0TmV0d29ya0VuYWJsZWQoc3RhdGUpCiAgICAgfQogfQogCi1mdW5jdGlv
biBjYW5Mb2FkKHVybCkKLXsKLSAgICB0cnkgewotICAgICAgICB2YXIgcmVxID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCk7Ci0gICAgICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKLSAgICAg
ICAgcmVxLnNlbmQoIiIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IGNhdGNoIChlKSB7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KIGZ1bmN0aW9uIGxvYWQodXJsKQog
ewotICAgIHRyeSB7Ci0gICAgICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAg
ICAgICAgcmVxLm9wZW4oIkdFVCIsIHVybCwgZmFsc2UpOwotICAgICAgICByZXEuc2VuZCgiIik7
Ci0gICAgICAgIHJldHVybiByZXEucmVzcG9uc2VUZXh0OwotICAgIH0gY2F0Y2ggKGV4KSB7Ci0g
ICAgICAgIGFsZXJ0KCJVbmV4cGVjdGVkIGVycm9yIGxvYWRpbmcgIiArIHVybCArICI6ICIgKyBl
eCk7Ci0gICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKLSAgICB9CisgICAgdmFyIHJlcSA9IG5ldyBY
TUxIdHRwUmVxdWVzdCgpOworICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKKyAgICBy
ZXEuc2VuZCgiIik7CisgICAgcmV0dXJuIHJlcS5yZXNwb25zZVRleHQ7CiB9CiAKIHZhciB0ZXN0
VVJMID0gIi9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP3BhdGg9L2FwcGNhY2hlL3Jl
c291cmNlcy9ub3QtaW4tY2FjaGUudHh0IjsKQEAgLTY1LDE4ICs0OCwzMyBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAKICAgICBzZXROZXR3b3JrRW5hYmxlZCh0cnVlKTsKIAotICAgIGlmICghY2Fu
TG9hZCh0ZXN0VVJMKSB8fCAhL25vdCBpbiB0aGUgY2FjaGUvLnRlc3QobG9hZCh0ZXN0VVJMKSkp
IHsKLSAgICAgICAgbG9nKCJGQUlMOiBDYW5ub3QgbG9hZCBhbiBVUkwgZnJvbSBmYWxsYmFjayBu
YW1lc3BhY2Ugd2hlbiBuZXR3b3JrIGlzIGVuYWJsZWQiKTsKKyAgICB0cnkgeworICAgICAgaWYg
KCEvbm90IGluIHRoZSBjYWNoZS8udGVzdChsb2FkKHRlc3RVUkwpKSkgeworICAgICAgICAgIGxv
ZygiRkFJTDogTG9hZGVkIHRoZSB3cm9uZyBjb250ZW50IGZvciBhIFVSTCBmcm9tIGZhbGxiYWNr
IG5hbWVzcGFjZSB3aGVuIG5ldHdvcmsgaXMgZW5hYmxlZCIpOworICAgICAgICAgIGhhZEVycm9y
ID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBsb2coIkZBSUw6
Q2Fubm90IGxvYWQgYSBVUkwgZnJvbSBmYWxsYmFjayBuYW1lc3BhY2Ugd2hlbiBuZXR3b3JrIGlz
IGVuYWJsZWQsIGV4ID0gIiArIGV4KTsKICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOwogICAgIH0K
IAotICAgIGlmICghY2FuTG9hZChub25leGlzdGVudFVSTCkgfHwgbG9hZChub25leGlzdGVudFVS
TCkgIT0gIkhlbGxvLCBXb3JsZCEiKSB7Ci0gICAgICAgIGxvZygiRkFJTDogRmFsbGJhY2sgcmVz
b3VyY2Ugd2Fzbid0IHVzZWQgZm9yIGEgNDA0IHJlc3BvbnNlIik7CisgICAgdHJ5IHsKKyAgICAg
IGlmIChsb2FkKG5vbmV4aXN0ZW50VVJMKSAhPSAiSGVsbG8sIFdvcmxkISIpIHsKKyAgICAgICAg
ICBsb2coIkZBSUw6IExvYWRlZCB0aGUgd3JvbmcgY29udGVudCBmb3IgYSA0MDQgcmVzcG9uc2Ug
d2hlbiBuZXR3b3JrIGlzIGVuYWJsZWQiKTsKKyAgICAgICAgICBoYWRFcnJvciA9IHRydWU7Cisg
ICAgICB9CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgbG9nKCJGQUlMOiBDYW5ub3QgbG9h
ZCBhIGZhbGxiYWNrIHJlc291cmNlIGZvciBhIDQwNCByZXNwb25zZSB3aGVuIG5ldHdvcmsgaXMg
ZW5hYmxlZCwgZXggPSAiICsgZXgpOwogICAgICAgICBoYWRFcnJvciA9IHRydWU7CiAgICAgfQog
Ci0gICAgaWYgKCFjYW5Mb2FkKHJlZGlyZWN0VVJMKSB8fCBsb2FkKHJlZGlyZWN0VVJMKSAhPSAi
SGVsbG8sIFdvcmxkISIpIHsKLSAgICAgICAgbG9nKCJGQUlMOiBGYWxsYmFjayByZXNvdXJjZSB3
YXNuJ3QgdXNlZCBmb3IgYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhlciBvcmln
aW4iKTsKKyAgICB0cnkgeworICAgICAgaWYgKGxvYWQocmVkaXJlY3RVUkwpICE9ICJIZWxsbywg
V29ybGQhIikgeworICAgICAgICAgIGxvZygiRkFJTDogTG9hZGVkIHRoZSB3cm9uZyBjb250ZW50
IGZvciBhIHJlZGlyZWN0IHRvIGFub3RoZXIgb3JpZ2luIHdoZW4gbmV0d29yayBpcyBlbmFibGVk
Iik7CisgICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgfQorICAgIH0gY2F0Y2ggKGV4
KSB7CisgICAgICAgIGxvZygiRkFJTDogQ2Fubm90IGxvYWQgYSBmYWxsYmFjayByZXNvdXJjZSBm
b3IgYSByZWRpcmVjdCB0byBhbm90aGVyIG9yaWdpbiB3aGVuIG5ldHdvcmsgaXMgZW5hYmxlZCwg
ZXggPSAiICsgZXgpOwogICAgICAgICBoYWRFcnJvciA9IHRydWU7CiAgICAgfQogCkBAIC0xNDcs
MTEgKzE0NSwxMyBAQCBmdW5jdGlvbiB0ZXN0NigpCiB7CiAgICAgc2V0TmV0d29ya0VuYWJsZWQo
ZmFsc2UpOwogCi0gICAgaWYgKCFjYW5Mb2FkKHRlc3RVUkwpKSB7Ci0gICAgICAgIGxvZygiRkFJ
TDogQ2Fubm90IGxvYWQgYW4gVVJMIGZyb20gZmFsbGJhY2sgbmFtZXNwYWNlIHdoZW4gbmV0d29y
ayBpcyBkaXNhYmxlZCIpOwotICAgICAgICBoYWRFcnJvciA9IHRydWU7Ci0gICAgfSBlbHNlIGlm
IChsb2FkKHRlc3RVUkwpICE9IGxvYWQoInJlc291cmNlcy9zaW1wbGUudHh0IikpIHsKLSAgICAg
ICAgbG9nKCJGQUlMOiBMb2FkaW5nIGFuIFVSTCBmcm9tIGZhbGxiYWNrIG5hbWVzcGFjZSB3aGVu
IG5ldHdvcmsgaXMgZGlzYWJsZWQgcmV0dXJuZWQgdW5leHBlY3RlZCByZXNwb25zZSIpOworICAg
IHRyeSB7CisgICAgICBpZiAobG9hZCh0ZXN0VVJMKSAhPSBsb2FkKCJyZXNvdXJjZXMvc2ltcGxl
LnR4dCIpKSB7CisgICAgICAgICAgbG9nKCJGQUlMOiBMb2FkaW5nIGFuIFVSTCBmcm9tIGZhbGxi
YWNrIG5hbWVzcGFjZSB3aGVuIG5ldHdvcmsgaXMgZGlzYWJsZWQgcmV0dXJuZWQgdW5leHBlY3Rl
ZCByZXNwb25zZSIpOworICAgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9
IGNhdGNoIChleCkgeworICAgICAgICBsb2coIkZBSUw6IENhbm5vdCBsb2FkIGFuIFVSTCBmcm9t
IGZhbGxiYWNrIG5hbWVzcGFjZSB3aGVuIG5ldHdvcmsgaXMgZGlzYWJsZWQsIGV4ID0gIiArIGV4
KTsKICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOwogICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvb2ZmbGluZS1hY2Nlc3MtZnJhbWUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9v
ZmZsaW5lLWFjY2Vzcy1mcmFtZS5odG1sCShyZXZpc2lvbiA3MDY5NSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29mZmxpbmUtYWNjZXNzLWZyYW1lLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTE3LDE0ICsxNyw1IEBAIGFwcGxpY2F0aW9uQ2FjaGUub25vYnNv
bGV0ZSA9IGZ1bmN0aW9uKCkKIGFwcGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigp
IHsgbG9nKCJjYWNoZWQiKTsgdGVzdCgpIH0KIGFwcGxpY2F0aW9uQ2FjaGUub25ub3VwZGF0ZSA9
IGZ1bmN0aW9uKCkgeyBsb2coIm5vdXBkYXRlIik7IHRlc3QoKSB9CiBhcHBsaWNhdGlvbkNhY2hl
Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgbG9nKCJlcnJvciIpOyB0ZXN0KCkgfQotCi1pZiAoYXBw
bGljYXRpb25DYWNoZS5zdGF0dXMgPT0gYXBwbGljYXRpb25DYWNoZS5JRExFKSB7Ci0gICAgLy8g
VXBkYXRlIGZpbmlzaGVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZyBmb3Igb2ZmbGluZS1hY2Nlc3Mu
anMgdG8gbG9hZC4KLSAgICBhcHBsaWNhdGlvbkNhY2hlLm9uY2FjaGVkID0gZnVuY3Rpb24oKSB7
IGxvZygiY2FjaGVkIikgfQotICAgIGFwcGxpY2F0aW9uQ2FjaGUub25ub3VwZGF0ZSA9IGZ1bmN0
aW9uKCkgeyBsb2coIm5vdXBkYXRlIikgfQotICAgIGFwcGxpY2F0aW9uQ2FjaGUub25lcnJvciA9
IGZ1bmN0aW9uKCkgeyBsb2coImVycm9yIikgfQotICAgIHRlc3QoKTsKLX0KLQogPC9zY3JpcHQ+
CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9uZXR3b3Jr
LXNpbXVsYXRvci5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwCShyZXZpc2lvbiA3MDY5NSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocAkod29ya2luZyBj
b3B5KQpAQCAtMiw3ICsyLDcgQEAKIHJlcXVpcmVfb25jZSAncG9ydGFiaWxpdHlMYXllci5waHAn
OwogCiAvLyBUaGlzIHNjcmlwdCBhY3RzIGFzIGEgc3RhdGVmdWwgcHJveHkgZm9yIHJldHJpZXZp
bmcgZmlsZXMuIFdoZW4gdGhlIHN0YXRlIGlzIHNldCB0bwotLy8gb2ZmbGluZSwgaXQgc2ltdWxh
dGVzIGEgbmV0d29yayBlcnJvciBieSByZWRpcmVjdGluZyB0byBpdHNlbGYuCisvLyBvZmZsaW5l
LCBpdCBzaW11bGF0ZXMgYSBuZXR3b3JrIGVycm9yIHdpdGggYSBub24tc2Vuc2UgcmVzcG9uc2Uu
CiAKIGlmICghc3lzX2dldF90ZW1wX2RpcigpKSB7CiAgICAgZWNobyAiRkFJTDogTm8gdGVtcCBk
aXIgd2FzIHJldHVybmVkLlxuIjsKQEAgLTU5LDkgKzU5LDEyIEBAIGZ1bmN0aW9uIGdlbmVyYXRl
UmVzcG9uc2UoJHBhdGgpCiAgICAgZ2xvYmFsICRzdGF0ZUZpbGU7CiAgICAgJHN0YXRlID0gZ2V0
U3RhdGUoJHN0YXRlRmlsZSk7CiAgICAgaWYgKCRzdGF0ZSA9PSAiT2ZmbGluZSIpIHsKKyAgICAg
ICAgIyBTaW11bGF0ZSBhIG5ldHdvcmsgZXJyb3IgYnkgcmVwbHlpbmcgd2l0aCBhIG5vbi1zZW5z
ZSByZXNwb25zZS4KICAgICAgICAgaGVhZGVyKCdIVFRQLzEuMSAzMDcgVGVtcG9yYXJ5IFJlZGly
ZWN0Jyk7Ci0gICAgICAgICMgU2ltdWxhdGUgYSBuZXR3b3JrIGVycm9yIGJ5IHJlZGlyZWN0aW5n
IHRvIHNlbGYuCi0gICAgICAgIGhlYWRlcignTG9jYXRpb246ICcgLiAkX1NFUlZFUlsnUkVRVUVT
VF9VUkknXSk7CisgICAgICAgIGhlYWRlcignTG9jYXRpb246ICcgLiAkX1NFUlZFUlsnUkVRVUVT
VF9VUkknXSk7ICMgcmVkaXJlY3QgdG8gc2VsZgorICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtTGVu
Z3RoOiAxJyk7CisgICAgICAgIGhlYWRlcignQ29udGVudC1MZW5ndGg6IDUnLCBmYWxzZSk7ICMg
bXVsdGlwbGUgY29udGVudC1sZW5ndGggaGVhZGVycworICAgICAgICBlY2hvICJJbnRlbnRpb25h
bGx5IGluY29ycmVjdCByZXNwb25zZS4iOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEEgbGl0
dGxlIHNlY3VydXR5IGNoZWNraW5nIGNhbid0IGh1cnQuCiAgICAgICAgIGlmIChzdHJzdHIoJHBh
dGgsICIuLiIpKQpAQCAtNzAsNyArNzMsNyBAQCBmdW5jdGlvbiBnZW5lcmF0ZVJlc3BvbnNlKCRw
YXRoKQogICAgICAgICBpZiAoJHBhdGhbMF0gPT0gJy8nKQogICAgICAgICAgICAgJHBhdGggPSAn
Li4nIC4gJHBhdGg7CiAKLSAgICAgICAgZ2VuZXJhdGVOb0NhY2hlSFRUUEhlYWRlcigpOyAgICAK
KyAgICAgICAgZ2VuZXJhdGVOb0NhY2hlSFRUUEhlYWRlcigpOwogCiAgICAgICAgIGlmIChmaWxl
X2V4aXN0cygkcGF0aCkpIHsKICAgICAgICAgICAgIGhlYWRlcigiTGFzdC1Nb2RpZmllZDogIiAu
IGdtZGF0ZSgiRCwgZCBNIFkgSDppOnMgVCIsIGZpbGVtdGltZSgkcGF0aCkpKTsK
</data>
<flag name="review"
          id="62278"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72250</attachid>
            <date>2010-10-28 15:49:17 -0700</date>
            <delta_ts>2010-11-02 16:22:20 -0700</delta_ts>
            <desc>faster network simulator</desc>
            <filename>simulator.3.txt</filename>
            <type>text/plain</type>
            <size>7683</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDcwNjk1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMTAtMjAgIE1pY2hhZWwgTm9yZG1hbiAg
PG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTb21lIHdvcmsgb24gbWFraW5nIGFwcGNhY2hlIGxh
eW91dCB0ZXN0cyBsZXNzIGZsYWt5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDgwMDIKKyAgICAgICAgMSkgTWFrZSBuZXR3b3JrLXNpbXVsYXRvci5w
aHAgbGVzcyBzbG93LgorICAgICAgICBJbiBhZGRpdGlvbiB0byByZWRpcmVjdGluZyBiYWNrIHRv
IHRoZSByZXF1ZXN0ZWQgdXJsLCB0aGUgcmVzcG9uc2UgY29udGFpbnMKKyAgICAgICAgbXVsdGlw
bGUgY29udGVudC1sZW5ndGggaGVhZGVycy4gQ2hyb21lJ3MgbmV0d29yayBzdGFja3MgY29uc2lk
ZXIgdGhhdCBhbgorICAgICAgICBlcnJvciBjb25kaXRpb24gdG9vIGFuZCBwaWNrcyB1cCBvbiBp
dCBmYXN0ZXIgKG9uZSByb3VuZCB0cmlwIGluc3RlYWQgb2YgbXVsdGlwbGUpLgorICAgICAgICBU
aGlzIGF2b2lkcyB0aW1lIG91dHMgZHVlIHRvIHVzaW5nIFBIUCB2aWEgc2xvdyBDR0kgb24gd2lu
ZG93cy4KKyAgICAgICAgMikgUmVtb3ZlZCBjYW5Mb2FkKCkgZnJvbSBhcHBjYWNoZS9mYWxsYmFj
ay5odG1sIGxheW91dCB0ZXN0LCB0aGUgbG9hZCgpCisgICAgICAgIHJlc3VsdCBpcyBzdWZmaWNp
ZW50IGZvciBkZXRlcm1pbmluZyBpZiBpdCBjb3VsZCBiZSBsb2FkZWQuIFNvIGZld2VyIHJlcXVl
c3RzIGFyZQorICAgICAgICBtYWRlIHRvIGNvbmR1Y3QgdGhlIHRlc3QsIGN1dHRpbmcgb3V0IG1v
cmUgdGltZS4KKyAgICAgICAgMykgUmVtb3ZlZCBzb21lIHVubmVlZGVkIGNvZGUgZnJvbSBvZmZs
aW5lLWFjY2Vzcy5odG1sLiBBcHBjYWNoZSBldmVudHMgYXJlIGd1YXJhbnRlZWQKKyAgICAgICAg
dG8gYmUgZGVmZXJyZWQgdW50aWwgYWZ0ZXIgJ29ubG9hZCcgaGFzIGhhcHBlbmVkLiBUaGlzIHRl
c3Qgd2FzIGNvZGVkIHByaW9yIHRvIHRoYXQKKyAgICAgICAgZ3VhcmFudGVlIGJlaW5nIHNhdGlz
ZmllZC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvZmFsbGJhY2suaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA6CisgICAg
ICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZXMvb2ZmbGluZS1hY2Nlc3MuaHRtbDoKKwogMjAxMC0x
MC0yNyAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQmV0aCBEYWtpbi4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZmFs
bGJhY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L2ZhbGxiYWNrLmh0bWwJKHJldmlzaW9uIDcwNjk1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9mYWxsYmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyOSArMjksMTIg
QEAgZnVuY3Rpb24gc2V0TmV0d29ya0VuYWJsZWQoc3RhdGUpCiAgICAgfQogfQogCi1mdW5jdGlv
biBjYW5Mb2FkKHVybCkKLXsKLSAgICB0cnkgewotICAgICAgICB2YXIgcmVxID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCk7Ci0gICAgICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKLSAgICAg
ICAgcmVxLnNlbmQoIiIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IGNhdGNoIChlKSB7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KIGZ1bmN0aW9uIGxvYWQodXJsKQog
ewotICAgIHRyeSB7Ci0gICAgICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAg
ICAgICAgcmVxLm9wZW4oIkdFVCIsIHVybCwgZmFsc2UpOwotICAgICAgICByZXEuc2VuZCgiIik7
Ci0gICAgICAgIHJldHVybiByZXEucmVzcG9uc2VUZXh0OwotICAgIH0gY2F0Y2ggKGV4KSB7Ci0g
ICAgICAgIGFsZXJ0KCJVbmV4cGVjdGVkIGVycm9yIGxvYWRpbmcgIiArIHVybCArICI6ICIgKyBl
eCk7Ci0gICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKLSAgICB9CisgICAgdmFyIHJlcSA9IG5ldyBY
TUxIdHRwUmVxdWVzdCgpOworICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKKyAgICBy
ZXEuc2VuZCgiIik7CisgICAgcmV0dXJuIHJlcS5yZXNwb25zZVRleHQ7CiB9CiAKIHZhciB0ZXN0
VVJMID0gIi9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP3BhdGg9L2FwcGNhY2hlL3Jl
c291cmNlcy9ub3QtaW4tY2FjaGUudHh0IjsKQEAgLTY1LDE4ICs0OCwzMyBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAKICAgICBzZXROZXR3b3JrRW5hYmxlZCh0cnVlKTsKIAotICAgIGlmICghY2Fu
TG9hZCh0ZXN0VVJMKSB8fCAhL25vdCBpbiB0aGUgY2FjaGUvLnRlc3QobG9hZCh0ZXN0VVJMKSkp
IHsKLSAgICAgICAgbG9nKCJGQUlMOiBDYW5ub3QgbG9hZCBhbiBVUkwgZnJvbSBmYWxsYmFjayBu
YW1lc3BhY2Ugd2hlbiBuZXR3b3JrIGlzIGVuYWJsZWQiKTsKKyAgICB0cnkgeworICAgICAgaWYg
KCEvbm90IGluIHRoZSBjYWNoZS8udGVzdChsb2FkKHRlc3RVUkwpKSkgeworICAgICAgICAgIGxv
ZygiRkFJTDogTG9hZGVkIHRoZSB3cm9uZyBjb250ZW50IGZvciBhIFVSTCBmcm9tIGZhbGxiYWNr
IG5hbWVzcGFjZSB3aGVuIG5ldHdvcmsgaXMgZW5hYmxlZCIpOworICAgICAgICAgIGhhZEVycm9y
ID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBsb2coIkZBSUw6
Q2Fubm90IGxvYWQgYSBVUkwgZnJvbSBmYWxsYmFjayBuYW1lc3BhY2Ugd2hlbiBuZXR3b3JrIGlz
IGVuYWJsZWQsIGV4ID0gIiArIGV4KTsKICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOwogICAgIH0K
IAotICAgIGlmICghY2FuTG9hZChub25leGlzdGVudFVSTCkgfHwgbG9hZChub25leGlzdGVudFVS
TCkgIT0gIkhlbGxvLCBXb3JsZCEiKSB7Ci0gICAgICAgIGxvZygiRkFJTDogRmFsbGJhY2sgcmVz
b3VyY2Ugd2Fzbid0IHVzZWQgZm9yIGEgNDA0IHJlc3BvbnNlIik7CisgICAgdHJ5IHsKKyAgICAg
IGlmIChsb2FkKG5vbmV4aXN0ZW50VVJMKSAhPSAiSGVsbG8sIFdvcmxkISIpIHsKKyAgICAgICAg
ICBsb2coIkZBSUw6IExvYWRlZCB0aGUgd3JvbmcgY29udGVudCBmb3IgYSA0MDQgcmVzcG9uc2Ug
d2hlbiBuZXR3b3JrIGlzIGVuYWJsZWQiKTsKKyAgICAgICAgICBoYWRFcnJvciA9IHRydWU7Cisg
ICAgICB9CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgbG9nKCJGQUlMOiBDYW5ub3QgbG9h
ZCBhIGZhbGxiYWNrIHJlc291cmNlIGZvciBhIDQwNCByZXNwb25zZSB3aGVuIG5ldHdvcmsgaXMg
ZW5hYmxlZCwgZXggPSAiICsgZXgpOwogICAgICAgICBoYWRFcnJvciA9IHRydWU7CiAgICAgfQog
Ci0gICAgaWYgKCFjYW5Mb2FkKHJlZGlyZWN0VVJMKSB8fCBsb2FkKHJlZGlyZWN0VVJMKSAhPSAi
SGVsbG8sIFdvcmxkISIpIHsKLSAgICAgICAgbG9nKCJGQUlMOiBGYWxsYmFjayByZXNvdXJjZSB3
YXNuJ3QgdXNlZCBmb3IgYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhlciBvcmln
aW4iKTsKKyAgICB0cnkgeworICAgICAgaWYgKGxvYWQocmVkaXJlY3RVUkwpICE9ICJIZWxsbywg
V29ybGQhIikgeworICAgICAgICAgIGxvZygiRkFJTDogTG9hZGVkIHRoZSB3cm9uZyBjb250ZW50
IGZvciBhIHJlZGlyZWN0IHRvIGFub3RoZXIgb3JpZ2luIHdoZW4gbmV0d29yayBpcyBlbmFibGVk
Iik7CisgICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgfQorICAgIH0gY2F0Y2ggKGV4
KSB7CisgICAgICAgIGxvZygiRkFJTDogQ2Fubm90IGxvYWQgYSBmYWxsYmFjayByZXNvdXJjZSBm
b3IgYSByZWRpcmVjdCB0byBhbm90aGVyIG9yaWdpbiB3aGVuIG5ldHdvcmsgaXMgZW5hYmxlZCwg
ZXggPSAiICsgZXgpOwogICAgICAgICBoYWRFcnJvciA9IHRydWU7CiAgICAgfQogCkBAIC0xNDcs
MTEgKzE0NSwxMyBAQCBmdW5jdGlvbiB0ZXN0NigpCiB7CiAgICAgc2V0TmV0d29ya0VuYWJsZWQo
ZmFsc2UpOwogCi0gICAgaWYgKCFjYW5Mb2FkKHRlc3RVUkwpKSB7Ci0gICAgICAgIGxvZygiRkFJ
TDogQ2Fubm90IGxvYWQgYW4gVVJMIGZyb20gZmFsbGJhY2sgbmFtZXNwYWNlIHdoZW4gbmV0d29y
ayBpcyBkaXNhYmxlZCIpOwotICAgICAgICBoYWRFcnJvciA9IHRydWU7Ci0gICAgfSBlbHNlIGlm
IChsb2FkKHRlc3RVUkwpICE9IGxvYWQoInJlc291cmNlcy9zaW1wbGUudHh0IikpIHsKLSAgICAg
ICAgbG9nKCJGQUlMOiBMb2FkaW5nIGFuIFVSTCBmcm9tIGZhbGxiYWNrIG5hbWVzcGFjZSB3aGVu
IG5ldHdvcmsgaXMgZGlzYWJsZWQgcmV0dXJuZWQgdW5leHBlY3RlZCByZXNwb25zZSIpOworICAg
IHRyeSB7CisgICAgICBpZiAobG9hZCh0ZXN0VVJMKSAhPSBsb2FkKCJyZXNvdXJjZXMvc2ltcGxl
LnR4dCIpKSB7CisgICAgICAgICAgbG9nKCJGQUlMOiBMb2FkaW5nIGFuIFVSTCBmcm9tIGZhbGxi
YWNrIG5hbWVzcGFjZSB3aGVuIG5ldHdvcmsgaXMgZGlzYWJsZWQgcmV0dXJuZWQgdW5leHBlY3Rl
ZCByZXNwb25zZSIpOworICAgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9
IGNhdGNoIChleCkgeworICAgICAgICBsb2coIkZBSUw6IENhbm5vdCBsb2FkIGFuIFVSTCBmcm9t
IGZhbGxiYWNrIG5hbWVzcGFjZSB3aGVuIG5ldHdvcmsgaXMgZGlzYWJsZWQsIGV4ID0gIiArIGV4
KTsKICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOwogICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvb2ZmbGluZS1hY2Nlc3MtZnJhbWUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9v
ZmZsaW5lLWFjY2Vzcy1mcmFtZS5odG1sCShyZXZpc2lvbiA3MDY5NSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29mZmxpbmUtYWNjZXNzLWZyYW1lLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTE3LDE0ICsxNyw1IEBAIGFwcGxpY2F0aW9uQ2FjaGUub25vYnNv
bGV0ZSA9IGZ1bmN0aW9uKCkKIGFwcGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigp
IHsgbG9nKCJjYWNoZWQiKTsgdGVzdCgpIH0KIGFwcGxpY2F0aW9uQ2FjaGUub25ub3VwZGF0ZSA9
IGZ1bmN0aW9uKCkgeyBsb2coIm5vdXBkYXRlIik7IHRlc3QoKSB9CiBhcHBsaWNhdGlvbkNhY2hl
Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgbG9nKCJlcnJvciIpOyB0ZXN0KCkgfQotCi1pZiAoYXBw
bGljYXRpb25DYWNoZS5zdGF0dXMgPT0gYXBwbGljYXRpb25DYWNoZS5JRExFKSB7Ci0gICAgLy8g
VXBkYXRlIGZpbmlzaGVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZyBmb3Igb2ZmbGluZS1hY2Nlc3Mu
anMgdG8gbG9hZC4KLSAgICBhcHBsaWNhdGlvbkNhY2hlLm9uY2FjaGVkID0gZnVuY3Rpb24oKSB7
IGxvZygiY2FjaGVkIikgfQotICAgIGFwcGxpY2F0aW9uQ2FjaGUub25ub3VwZGF0ZSA9IGZ1bmN0
aW9uKCkgeyBsb2coIm5vdXBkYXRlIikgfQotICAgIGFwcGxpY2F0aW9uQ2FjaGUub25lcnJvciA9
IGZ1bmN0aW9uKCkgeyBsb2coImVycm9yIikgfQotICAgIHRlc3QoKTsKLX0KLQogPC9zY3JpcHQ+
CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9uZXR3b3Jr
LXNpbXVsYXRvci5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwCShyZXZpc2lvbiA3MDY5NSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocAkod29ya2luZyBj
b3B5KQpAQCAtMiw3ICsyLDcgQEAKIHJlcXVpcmVfb25jZSAncG9ydGFiaWxpdHlMYXllci5waHAn
OwogCiAvLyBUaGlzIHNjcmlwdCBhY3RzIGFzIGEgc3RhdGVmdWwgcHJveHkgZm9yIHJldHJpZXZp
bmcgZmlsZXMuIFdoZW4gdGhlIHN0YXRlIGlzIHNldCB0bwotLy8gb2ZmbGluZSwgaXQgc2ltdWxh
dGVzIGEgbmV0d29yayBlcnJvciBieSByZWRpcmVjdGluZyB0byBpdHNlbGYuCisvLyBvZmZsaW5l
LCBpdCBzaW11bGF0ZXMgYSBuZXR3b3JrIGVycm9yIHdpdGggYSBub25zZW5zZSByZXNwb25zZS4K
IAogaWYgKCFzeXNfZ2V0X3RlbXBfZGlyKCkpIHsKICAgICBlY2hvICJGQUlMOiBObyB0ZW1wIGRp
ciB3YXMgcmV0dXJuZWQuXG4iOwpAQCAtNTksOSArNTksMTIgQEAgZnVuY3Rpb24gZ2VuZXJhdGVS
ZXNwb25zZSgkcGF0aCkKICAgICBnbG9iYWwgJHN0YXRlRmlsZTsKICAgICAkc3RhdGUgPSBnZXRT
dGF0ZSgkc3RhdGVGaWxlKTsKICAgICBpZiAoJHN0YXRlID09ICJPZmZsaW5lIikgeworICAgICAg
ICAjIFNpbXVsYXRlIGEgbmV0d29yayBlcnJvciBieSByZXBseWluZyB3aXRoIGEgbm9uc2Vuc2Ug
cmVzcG9uc2UuCiAgICAgICAgIGhlYWRlcignSFRUUC8xLjEgMzA3IFRlbXBvcmFyeSBSZWRpcmVj
dCcpOwotICAgICAgICAjIFNpbXVsYXRlIGEgbmV0d29yayBlcnJvciBieSByZWRpcmVjdGluZyB0
byBzZWxmLgotICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnIC4gJF9TRVJWRVJbJ1JFUVVFU1Rf
VVJJJ10pOworICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnIC4gJF9TRVJWRVJbJ1JFUVVFU1Rf
VVJJJ10pOyAjIFJlZGlyZWN0IHRvIHNlbGYuCisgICAgICAgIGhlYWRlcignQ29udGVudC1MZW5n
dGg6IDEnKTsKKyAgICAgICAgaGVhZGVyKCdDb250ZW50LUxlbmd0aDogNScsIGZhbHNlKTsgIyBN
dWx0aXBsZSBjb250ZW50LWxlbmd0aCBoZWFkZXJzLCBzb21lIG5ldHdvcmsgc3RhY2tzIGNhbiBk
ZXRlY3QgdGhpcyBjb25kaXRpb24gZmFzdGVyLgorICAgICAgICBlY2hvICJJbnRlbnRpb25hbGx5
IGluY29ycmVjdCByZXNwb25zZS4iOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEEgbGl0dGxl
IHNlY3VydXR5IGNoZWNraW5nIGNhbid0IGh1cnQuCiAgICAgICAgIGlmIChzdHJzdHIoJHBhdGgs
ICIuLiIpKQpAQCAtNzAsNyArNzMsNyBAQCBmdW5jdGlvbiBnZW5lcmF0ZVJlc3BvbnNlKCRwYXRo
KQogICAgICAgICBpZiAoJHBhdGhbMF0gPT0gJy8nKQogICAgICAgICAgICAgJHBhdGggPSAnLi4n
IC4gJHBhdGg7CiAKLSAgICAgICAgZ2VuZXJhdGVOb0NhY2hlSFRUUEhlYWRlcigpOyAgICAKKyAg
ICAgICAgZ2VuZXJhdGVOb0NhY2hlSFRUUEhlYWRlcigpOwogCiAgICAgICAgIGlmIChmaWxlX2V4
aXN0cygkcGF0aCkpIHsKICAgICAgICAgICAgIGhlYWRlcigiTGFzdC1Nb2RpZmllZDogIiAuIGdt
ZGF0ZSgiRCwgZCBNIFkgSDppOnMgVCIsIGZpbGVtdGltZSgkcGF0aCkpKTsK
</data>
<flag name="review"
          id="62471"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72763</attachid>
            <date>2010-11-02 16:22:20 -0700</date>
            <delta_ts>2010-11-02 16:31:50 -0700</delta_ts>
            <desc>faster network simulator</desc>
            <filename>simulator.4.txt</filename>
            <type>text/plain</type>
            <size>6515</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDcxMDYwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMTAtMjAgIE1pY2hhZWwgTm9yZG1hbiAg
PG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTb21lIHdvcmsgb24gbWFraW5nIGFwcGNhY2hlIGxh
eW91dCB0ZXN0cyBsZXNzIGZsYWt5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDgwMDIKKyAgICAgICAgMSkgTWFrZSBuZXR3b3JrLXNpbXVsYXRvci5w
aHAgbGVzcyBzbG93LgorICAgICAgICBJbiBhZGRpdGlvbiB0byByZWRpcmVjdGluZyBiYWNrIHRv
IHRoZSByZXF1ZXN0ZWQgdXJsLCB0aGUgcmVzcG9uc2UgY29udGFpbnMKKyAgICAgICAgbXVsdGlw
bGUgY29udGVudC1sZW5ndGggaGVhZGVycy4gQ2hyb21lJ3MgbmV0d29yayBzdGFja3MgY29uc2lk
ZXJzIHRoYXQgYW4KKyAgICAgICAgZXJyb3IgY29uZGl0aW9uIHRvbyBhbmQgcGlja3MgdXAgb24g
aXQgZmFzdGVyIChvbmUgcm91bmQgdHJpcCBpbnN0ZWFkIG9mIG11bHRpcGxlKS4KKyAgICAgICAg
VGhpcyBhdm9pZHMgdGltZW91dHMgZHVlIHRvIHVzaW5nIFBIUCB2aWEgc2xvdyBDR0kgb24gd2lu
ZG93cy4KKyAgICAgICAgMikgUmVtb3ZlZCBjYW5Mb2FkKCkgZnJvbSBhcHBjYWNoZS9mYWxsYmFj
ay5odG1sIGxheW91dCB0ZXN0LCB0aGUgbG9hZCgpCisgICAgICAgIHJlc3VsdCBpcyBzdWZmaWNp
ZW50IGZvciBkZXRlcm1pbmluZyBpZiBpdCBjb3VsZCBiZSBsb2FkZWQuIFNvIGZld2VyIHJlcXVl
c3RzIGFyZQorICAgICAgICBtYWRlIHRvIGNvbmR1Y3QgdGhlIHRlc3QsIGN1dHRpbmcgb3V0IG1v
cmUgdGltZS4KKyAgICAgICAgMykgUmVtb3ZlZCBzb21lIHVubmVlZGVkIGNvZGUgZnJvbSBvZmZs
aW5lLWFjY2Vzcy5odG1sLiBBcHBjYWNoZSBldmVudHMgYXJlIGd1YXJhbnRlZWQKKyAgICAgICAg
dG8gYmUgZGVmZXJyZWQgdW50aWwgYWZ0ZXIgJ29ubG9hZCcgaGFzIGhhcHBlbmVkLiBUaGlzIHRl
c3Qgd2FzIGNvZGVkIHByaW9yIHRvIHRoYXQKKyAgICAgICAgZ3VhcmFudGVlIGJlaW5nIHNhdGlz
ZmllZC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvZmFsbGJhY2suaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA6CisgICAg
ICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZXMvb2ZmbGluZS1hY2Nlc3MtZnJhbWUuaHRtbDoKKwog
MjAxMC0xMS0wMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggdGVzdCBmYWlsdXJlcyBvbiBRdCBieSBhdm9pZGluZyByZWZlcmVuY2VzIHRvIGV4
dGVybmFsIGltYWdlIGZpbGVzLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9mYWxsYmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvZmFsbGJhY2suaHRtbAkocmV2aXNpb24gNzEwNjApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL2ZhbGxiYWNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE4ICsy
OSw2IEBAIGZ1bmN0aW9uIHNldE5ldHdvcmtFbmFibGVkKHN0YXRlKQogICAgIH0KIH0KIAotZnVu
Y3Rpb24gY2FuTG9hZCh1cmwpCi17Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIHJlcSA9IG5ldyBY
TUxIdHRwUmVxdWVzdCgpOwotICAgICAgICByZXEub3BlbigiR0VUIiwgdXJsLCBmYWxzZSk7Ci0g
ICAgICAgIHJlcS5zZW5kKCIiKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSBjYXRjaCAo
ZSkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCiBmdW5jdGlvbiBsb2FkKHVy
bCkKIHsKICAgICB0cnkgewpAQCAtNDksOCArMzcsOSBAQCBmdW5jdGlvbiBsb2FkKHVybCkKICAg
ICAgICAgcmVxLnNlbmQoIiIpOwogICAgICAgICByZXR1cm4gcmVxLnJlc3BvbnNlVGV4dDsKICAg
ICB9IGNhdGNoIChleCkgewotICAgICAgICBhbGVydCgiVW5leHBlY3RlZCBlcnJvciBsb2FkaW5n
ICIgKyB1cmwgKyAiOiAiICsgZXgpOworICAgICAgICBsb2coIkZBSUw6IENhbm5vdCBsb2FkICIg
KyB1cmwgKyAiLCBleCA9ICIgKyBleCk7CiAgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuICIiOyAvLyBUaGlzIHZhbHVlIHNob3VsZCBub3QgYmUgZXhwZWN0ZWQgYXMgdGhl
IHJlc3BvbnNlVGV4dCBmb3IgYSB1cmwgcHJlc2VudGVkIHRvIHRoaXMgZnVuY3Rpb24uCiAgICAg
fQogfQogCkBAIC02NSwxNyArNTQsMTcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgCiAgICAgc2V0
TmV0d29ya0VuYWJsZWQodHJ1ZSk7CiAKLSAgICBpZiAoIWNhbkxvYWQodGVzdFVSTCkgfHwgIS9u
b3QgaW4gdGhlIGNhY2hlLy50ZXN0KGxvYWQodGVzdFVSTCkpKSB7CisgICAgaWYgKCEvbm90IGlu
IHRoZSBjYWNoZS8udGVzdChsb2FkKHRlc3RVUkwpKSkgewogICAgICAgICBsb2coIkZBSUw6IENh
bm5vdCBsb2FkIGFuIFVSTCBmcm9tIGZhbGxiYWNrIG5hbWVzcGFjZSB3aGVuIG5ldHdvcmsgaXMg
ZW5hYmxlZCIpOwogICAgICAgICBoYWRFcnJvciA9IHRydWU7CiAgICAgfQogCi0gICAgaWYgKCFj
YW5Mb2FkKG5vbmV4aXN0ZW50VVJMKSB8fCBsb2FkKG5vbmV4aXN0ZW50VVJMKSAhPSAiSGVsbG8s
IFdvcmxkISIpIHsKKyAgICBpZiAobG9hZChub25leGlzdGVudFVSTCkgIT0gIkhlbGxvLCBXb3Js
ZCEiKSB7CiAgICAgICAgIGxvZygiRkFJTDogRmFsbGJhY2sgcmVzb3VyY2Ugd2Fzbid0IHVzZWQg
Zm9yIGEgNDA0IHJlc3BvbnNlIik7CiAgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKICAgICB9CiAK
LSAgICBpZiAoIWNhbkxvYWQocmVkaXJlY3RVUkwpIHx8IGxvYWQocmVkaXJlY3RVUkwpICE9ICJI
ZWxsbywgV29ybGQhIikgeworICAgIGlmIChsb2FkKHJlZGlyZWN0VVJMKSAhPSAiSGVsbG8sIFdv
cmxkISIpIHsKICAgICAgICAgbG9nKCJGQUlMOiBGYWxsYmFjayByZXNvdXJjZSB3YXNuJ3QgdXNl
ZCBmb3IgYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhlciBvcmlnaW4iKTsKICAg
ICAgICAgaGFkRXJyb3IgPSB0cnVlOwogICAgIH0KQEAgLTE0NywxMCArMTM2LDcgQEAgZnVuY3Rp
b24gdGVzdDYoKQogewogICAgIHNldE5ldHdvcmtFbmFibGVkKGZhbHNlKTsKIAotICAgIGlmICgh
Y2FuTG9hZCh0ZXN0VVJMKSkgewotICAgICAgICBsb2coIkZBSUw6IENhbm5vdCBsb2FkIGFuIFVS
TCBmcm9tIGZhbGxiYWNrIG5hbWVzcGFjZSB3aGVuIG5ldHdvcmsgaXMgZGlzYWJsZWQiKTsKLSAg
ICAgICAgaGFkRXJyb3IgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAobG9hZCh0ZXN0VVJMKSAhPSBs
b2FkKCJyZXNvdXJjZXMvc2ltcGxlLnR4dCIpKSB7CisgICAgaWYgKGxvYWQodGVzdFVSTCkgIT0g
bG9hZCgicmVzb3VyY2VzL3NpbXBsZS50eHQiKSkgewogICAgICAgICBsb2coIkZBSUw6IExvYWRp
bmcgYW4gVVJMIGZyb20gZmFsbGJhY2sgbmFtZXNwYWNlIHdoZW4gbmV0d29yayBpcyBkaXNhYmxl
ZCByZXR1cm5lZCB1bmV4cGVjdGVkIHJlc3BvbnNlIik7CiAgICAgICAgIGhhZEVycm9yID0gdHJ1
ZTsKICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNl
cy9vZmZsaW5lLWFjY2Vzcy1mcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL29mZmxpbmUtYWNjZXNzLWZyYW1lLmh0bWwJKHJl
dmlzaW9uIDcxMDYwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJj
ZXMvb2ZmbGluZS1hY2Nlc3MtZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcsMTQgKzE3
LDUgQEAgYXBwbGljYXRpb25DYWNoZS5vbm9ic29sZXRlID0gZnVuY3Rpb24oKQogYXBwbGljYXRp
b25DYWNoZS5vbmNhY2hlZCA9IGZ1bmN0aW9uKCkgeyBsb2coImNhY2hlZCIpOyB0ZXN0KCkgfQog
YXBwbGljYXRpb25DYWNoZS5vbm5vdXBkYXRlID0gZnVuY3Rpb24oKSB7IGxvZygibm91cGRhdGUi
KTsgdGVzdCgpIH0KIGFwcGxpY2F0aW9uQ2FjaGUub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBsb2co
ImVycm9yIik7IHRlc3QoKSB9Ci0KLWlmIChhcHBsaWNhdGlvbkNhY2hlLnN0YXR1cyA9PSBhcHBs
aWNhdGlvbkNhY2hlLklETEUpIHsKLSAgICAvLyBVcGRhdGUgZmluaXNoZWQgd2hpbGUgd2Ugd2Vy
ZSB3YWl0aW5nIGZvciBvZmZsaW5lLWFjY2Vzcy5qcyB0byBsb2FkLgotICAgIGFwcGxpY2F0aW9u
Q2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsgbG9nKCJjYWNoZWQiKSB9Ci0gICAgYXBwbGlj
YXRpb25DYWNoZS5vbm5vdXBkYXRlID0gZnVuY3Rpb24oKSB7IGxvZygibm91cGRhdGUiKSB9Ci0g
ICAgYXBwbGljYXRpb25DYWNoZS5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGxvZygiZXJyb3IiKSB9
Ci0gICAgdGVzdCgpOwotfQotCiA8L3NjcmlwdD4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHAJ
KHJldmlzaW9uIDcxMDYwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZXMvbmV0
d29yay1zaW11bGF0b3IucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQAogcmVxdWly
ZV9vbmNlICdwb3J0YWJpbGl0eUxheWVyLnBocCc7CiAKIC8vIFRoaXMgc2NyaXB0IGFjdHMgYXMg
YSBzdGF0ZWZ1bCBwcm94eSBmb3IgcmV0cmlldmluZyBmaWxlcy4gV2hlbiB0aGUgc3RhdGUgaXMg
c2V0IHRvCi0vLyBvZmZsaW5lLCBpdCBzaW11bGF0ZXMgYSBuZXR3b3JrIGVycm9yIGJ5IHJlZGly
ZWN0aW5nIHRvIGl0c2VsZi4KKy8vIG9mZmxpbmUsIGl0IHNpbXVsYXRlcyBhIG5ldHdvcmsgZXJy
b3Igd2l0aCBhIG5vbnNlbnNlIHJlc3BvbnNlLgogCiBpZiAoIXN5c19nZXRfdGVtcF9kaXIoKSkg
ewogICAgIGVjaG8gIkZBSUw6IE5vIHRlbXAgZGlyIHdhcyByZXR1cm5lZC5cbiI7CkBAIC01OSw5
ICs1OSwxMiBAQCBmdW5jdGlvbiBnZW5lcmF0ZVJlc3BvbnNlKCRwYXRoKQogICAgIGdsb2JhbCAk
c3RhdGVGaWxlOwogICAgICRzdGF0ZSA9IGdldFN0YXRlKCRzdGF0ZUZpbGUpOwogICAgIGlmICgk
c3RhdGUgPT0gIk9mZmxpbmUiKSB7CisgICAgICAgICMgU2ltdWxhdGUgYSBuZXR3b3JrIGVycm9y
IGJ5IHJlcGx5aW5nIHdpdGggYSBub25zZW5zZSByZXNwb25zZS4KICAgICAgICAgaGVhZGVyKCdI
VFRQLzEuMSAzMDcgVGVtcG9yYXJ5IFJlZGlyZWN0Jyk7Ci0gICAgICAgICMgU2ltdWxhdGUgYSBu
ZXR3b3JrIGVycm9yIGJ5IHJlZGlyZWN0aW5nIHRvIHNlbGYuCi0gICAgICAgIGhlYWRlcignTG9j
YXRpb246ICcgLiAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSk7CisgICAgICAgIGhlYWRlcignTG9j
YXRpb246ICcgLiAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSk7ICMgUmVkaXJlY3QgdG8gc2VsZi4K
KyAgICAgICAgaGVhZGVyKCdDb250ZW50LUxlbmd0aDogMScpOworICAgICAgICBoZWFkZXIoJ0Nv
bnRlbnQtTGVuZ3RoOiA1JywgZmFsc2UpOyAjIE11bHRpcGxlIGNvbnRlbnQtbGVuZ3RoIGhlYWRl
cnMsIHNvbWUgbmV0d29yayBzdGFja3MgY2FuIGRldGVjdCB0aGlzIGNvbmRpdGlvbiBmYXN0ZXIu
CisgICAgICAgIGVjaG8gIkludGVudGlvbmFsbHkgaW5jb3JyZWN0IHJlc3BvbnNlLiI7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gQSBsaXR0bGUgc2VjdXJ1dHkgY2hlY2tpbmcgY2FuJ3QgaHVy
dC4KICAgICAgICAgaWYgKHN0cnN0cigkcGF0aCwgIi4uIikpCkBAIC03MCw3ICs3Myw3IEBAIGZ1
bmN0aW9uIGdlbmVyYXRlUmVzcG9uc2UoJHBhdGgpCiAgICAgICAgIGlmICgkcGF0aFswXSA9PSAn
LycpCiAgICAgICAgICAgICAkcGF0aCA9ICcuLicgLiAkcGF0aDsKIAotICAgICAgICBnZW5lcmF0
ZU5vQ2FjaGVIVFRQSGVhZGVyKCk7ICAgIAorICAgICAgICBnZW5lcmF0ZU5vQ2FjaGVIVFRQSGVh
ZGVyKCk7CiAKICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRwYXRoKSkgewogICAgICAgICAgICAg
aGVhZGVyKCJMYXN0LU1vZGlmaWVkOiAiIC4gZ21kYXRlKCJELCBkIE0gWSBIOmk6cyBUIiwgZmls
ZW10aW1lKCRwYXRoKSkpOwo=
</data>
<flag name="review"
          id="63076"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>