<?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>99868</bug_id>
          
          <creation_ts>2012-10-19 13:56:40 -0700</creation_ts>
          <short_desc>webkitsourceopen event doesn&apos;t always fire</short_desc>
          <delta_ts>2012-10-22 11:53:03 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aaron Colwell">acolwell</reporter>
          <assigned_to name="Aaron Colwell">acolwell</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>746612</commentid>
    <comment_count>0</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-10-19 13:56:40 -0700</bug_when>
    <thetext>The following HTML &amp; JavaScript exposes a bug where the webkitsourceopen event doesn&apos;t always fire.

&lt;html&gt;
  &lt;body&gt;
    &lt;video autoplay controls=&quot;controls&quot; id=&apos;vid&apos;&gt;&lt;/video&gt;
    &lt;script type=&quot;text/javascript&quot;&gt;
      function start()
      {
         var video = document.getElementById(&apos;vid&apos;);
         var mediaSource = new WebKitMediaSource();
         var onSourceOpen = function (e) {
           document.body.style.background = &quot;silver&quot;
           document.getElementById(&apos;statsArea&apos;).textContent = &apos;ok&apos;;
         };
         document.body.style.background = &quot;red&quot;
         mediaSource.addEventListener(&apos;webkitsourceopen&apos;, onSourceOpen);
         video.src = window.URL.createObjectURL(mediaSource);
      }
      start();
    &lt;/script&gt;
    &lt;span id=&quot;statsArea&quot;&gt;loading...&lt;/span&gt;
  &lt;/body&gt;
&lt;/html&gt;

The problem is that the JavaScript engine is sometimes garbage collecting the JavaScript MediaSource object because it thinks that it is not active beyond the scope of start().

I talked to abarth@ about this and he said I needed to update MediaSource to derive from ActiveDOMObject. This allows it to tell the JavaScript engine that the MediaSource object is still active even after it goes out of the current scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746620</commentid>
    <comment_count>1</comment_count>
      <attachid>169689</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-10-19 14:03:58 -0700</bug_when>
    <thetext>Created attachment 169689
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746626</commentid>
    <comment_count>2</comment_count>
      <attachid>169689</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 14:11:12 -0700</bug_when>
    <thetext>Comment on attachment 169689
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Bug contains a manual test case. I was unable to reproduce the same garbage collection behavior in a LayoutTest.

Did you try including resource/gc.js and calling gc manually?  This seems like something we should be able to reproduce in a LayoutTest.

&gt; Source/WebCore/Modules/mediasource/MediaSource.cpp:336
&gt; +    return m_player || m_asyncEventQueue-&gt;hasPendingEvents()
&gt; +        || ActiveDOMObject::hasPendingActivity();

Is m_player always cleared by the time stop() is called?  We don&apos;t want to report that we have pending activity forever or else we&apos;ll leak memory.

Perhaps we should override stop() to ASSERT(!hasPendingActivity()) ?

&gt; Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp:70
&gt; +    // Remove the pending activity added in registerMediaSourceURL().
&gt; +    source-&gt;unsetPendingActivity(source.get());

What triggers unregisterMediaSourceURL to be called?  I&apos;m worried about leaks here again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746652</commentid>
    <comment_count>3</comment_count>
      <attachid>169689</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-10-19 14:33:25 -0700</bug_when>
    <thetext>Comment on attachment 169689
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        Bug contains a manual test case. I was unable to reproduce the same garbage collection behavior in a LayoutTest.
&gt; 
&gt; Did you try including resource/gc.js and calling gc manually?  This seems like something we should be able to reproduce in a LayoutTest.

I&apos;ll take a look at this file and try again. I tried sprinkling window.GCController.collect() calls in places that I thought would trigger the problem, but no luck.

&gt;&gt; Source/WebCore/Modules/mediasource/MediaSource.cpp:336
&gt;&gt; +        || ActiveDOMObject::hasPendingActivity();
&gt; 
&gt; Is m_player always cleared by the time stop() is called?  We don&apos;t want to report that we have pending activity forever or else we&apos;ll leak memory.
&gt; 
&gt; Perhaps we should override stop() to ASSERT(!hasPendingActivity()) ?

Yes. The HTMLMediaElement always calls m_mediaSource-&gt;setReadyState(closedKeyword()) when it wants to detach the MediaSource from the HTMLMediaElement. A transition to the &quot;closed&quot; state clears the m_player pointer.

When is stop() called? I believe this should be safe assuming that all HTMLMediaElements have been destroyed by the time this call occurs.

&gt;&gt; Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp:70
&gt;&gt; +    source-&gt;unsetPendingActivity(source.get());
&gt; 
&gt; What triggers unregisterMediaSourceURL to be called?  I&apos;m worried about leaks here again.

There are 2 places.
1. JavaScript can call it via URL.revokeObjectURL() (http://trac.webkit.org/browser/trunk/Source/WebCore/html/DOMURL.cpp#L129)
2. The PublicURLManager can call it when the ScriptExecutionContext gets destroyed. (http://trac.webkit.org/browser/trunk/Source/WebCore/html/PublicURLManager.h#L67, http://trac.webkit.org/browser/trunk/Source/WebCore/dom/ScriptExecutionContext.cpp#L121)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746711</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 15:37:39 -0700</bug_when>
    <thetext>&gt; When is stop() called? I believe this should be safe assuming that all HTMLMediaElements have been destroyed by the time this call occurs.

stop() is called when the document is removed from the frame (e.g., when we&apos;re navigating the frame to a new document).

&gt; &gt;&gt; Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp:70
&gt; &gt;&gt; +    source-&gt;unsetPendingActivity(source.get());
&gt; &gt; 
&gt; &gt; What triggers unregisterMediaSourceURL to be called?  I&apos;m worried about leaks here again.
&gt; 
&gt; There are 2 places.
&gt; 1. JavaScript can call it via URL.revokeObjectURL() (http://trac.webkit.org/browser/trunk/Source/WebCore/html/DOMURL.cpp#L129)
&gt; 2. The PublicURLManager can call it when the ScriptExecutionContext gets destroyed. (http://trac.webkit.org/browser/trunk/Source/WebCore/html/PublicURLManager.h#L67, http://trac.webkit.org/browser/trunk/Source/WebCore/dom/ScriptExecutionContext.cpp#L121)

Great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746712</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 15:38:05 -0700</bug_when>
    <thetext>I&apos;d feel better if we added some ASSERTs to verify that we&apos;re not leaking in these cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746754</commentid>
    <comment_count>6</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-10-19 16:36:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I&apos;d feel better if we added some ASSERTs to verify that we&apos;re not leaking in these cases.

Understood. I&apos;m working on it. I added stop() with the ASSERT you suggested and wouldn&apos;t you know it the ASSERT fails. :) I&apos;m trying to untangle what is going on. It looks like the HTMLMediaElement doesn&apos;t always transition the MediaSource to closed before MediaSource::stop() is called. I&apos;m looking to see if I can identify a place where HTMLMediaElement is aware of the page closing down before MediaSource::stop() gets called. If not, I&apos;ll just clear m_player in stop(). 

Getting ActiveDOMObject::hasPendingActivity() to be false when stop() is called may be tricky because I believe MediaSource::stop() is getting called before the PublicURLManager has a chance to remove the entries from MediaSourceRegistry. This does eventually get called, but it means that hasPendingActivity() may return true for a little while until the ScriptExecutionContext gets destroyed. Is that ok or would you like me to add a m_stopCalled type boolean to make sure that hasPendingActivity() always returns false after stop()?

I was able to create a LayoutTest that exposes the bug so I&apos;ll include that in my next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746764</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 16:45:37 -0700</bug_when>
    <thetext>&gt; Is that ok?

Yeah, that&apos;s fine.  As long as we know that PublicURLManager will always balance its calls eventually, then we&apos;ll be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746826</commentid>
    <comment_count>8</comment_count>
      <attachid>169737</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-10-19 18:28:45 -0700</bug_when>
    <thetext>Created attachment 169737
Added LayoutTest and stop() method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746921</commentid>
    <comment_count>9</comment_count>
      <attachid>169737</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 23:43:59 -0700</bug_when>
    <thetext>Comment on attachment 169737
Added LayoutTest and stop() method.

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

&gt; Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp:53
&gt; +    // Add a pending activity to the source so Javascript knows this object is still active.

I&apos;d remove this comment.  It&apos;s just saying what the code is doing.

&gt; Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp:69
&gt; +    // Remove the pending activity added in registerMediaSourceURL().

By contrast, this comment is helpful.  :)

&gt; LayoutTests/http/tests/media/media-source/video-media-source-garbage-collection-before-sourceopen.html:14
&gt; +                if (window.GCController)
&gt; +                    GCController.collect();

Generally we prefer to use gc.js so that we can run the test outside of DumpRenderTree.

&gt; LayoutTests/http/tests/media/media-source/video-media-source-garbage-collection-before-sourceopen.html:40
&gt; +                setTimeout(runGC, 0);

Is there a race here between onSourceOpen and the setTimeout?  Maybe we can keep the URL created by createObjectURL around and only set video.src after running GC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747698</commentid>
    <comment_count>10</comment_count>
      <attachid>169737</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-10-22 11:05:27 -0700</bug_when>
    <thetext>Comment on attachment 169737
Added LayoutTest and stop() method.

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

&gt;&gt; Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp:53
&gt;&gt; +    // Add a pending activity to the source so Javascript knows this object is still active.
&gt; 
&gt; I&apos;d remove this comment.  It&apos;s just saying what the code is doing.

Done

&gt;&gt; LayoutTests/http/tests/media/media-source/video-media-source-garbage-collection-before-sourceopen.html:14
&gt;&gt; +                    GCController.collect();
&gt; 
&gt; Generally we prefer to use gc.js so that we can run the test outside of DumpRenderTree.

gc.js isn&apos;t available, but it looks like an equivalent function is in http/test/resources/js-test-pre.js. I&apos;ll update the code to use that.

&gt;&gt; LayoutTests/http/tests/media/media-source/video-media-source-garbage-collection-before-sourceopen.html:40
&gt;&gt; +                setTimeout(runGC, 0);
&gt; 
&gt; Is there a race here between onSourceOpen and the setTimeout?  Maybe we can keep the URL created by createObjectURL around and only set video.src after running GC?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747703</commentid>
    <comment_count>11</comment_count>
      <attachid>169941</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-10-22 11:09:55 -0700</bug_when>
    <thetext>Created attachment 169941
Fix test to not use setTimeout() &amp; removed unnecessary comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747705</commentid>
    <comment_count>12</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-10-22 11:12:48 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=169941) [details]
&gt; Fix test to not use setTimeout() &amp; removed unnecessary comment.

You already got an r+ so if you upload with &quot;webkit-patch land-safely&quot; it&apos;ll fill in the reviewer and someone can just cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747710</commentid>
    <comment_count>13</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-10-22 11:22:57 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; Created an attachment (id=169941) [details] [details]
&gt; &gt; Fix test to not use setTimeout() &amp; removed unnecessary comment.
&gt; 
&gt; You already got an r+ so if you upload with &quot;webkit-patch land-safely&quot; it&apos;ll fill in the reviewer and someone can just cq+.

Can I still do this now? The r+ on the previous patch is gone now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747714</commentid>
    <comment_count>14</comment_count>
      <attachid>169941</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-22 11:26:50 -0700</bug_when>
    <thetext>Comment on attachment 169941
Fix test to not use setTimeout() &amp; removed unnecessary comment.

Yes.  You can always write the reviewer&apos;s name directly in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747715</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-22 11:27:11 -0700</bug_when>
    <thetext>land-safely won&apos;t do it for you, but you can do it manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747734</commentid>
    <comment_count>16</comment_count>
      <attachid>169941</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 11:52:59 -0700</bug_when>
    <thetext>Comment on attachment 169941
Fix test to not use setTimeout() &amp; removed unnecessary comment.

Clearing flags on attachment: 169941

Committed r132115: &lt;http://trac.webkit.org/changeset/132115&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747735</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 11:53:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169689</attachid>
            <date>2012-10-19 14:03:58 -0700</date>
            <delta_ts>2012-10-19 18:28:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99868-20121019140242.patch</filename>
            <type>text/plain</type>
            <size>5856</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQwMDY0MmIwZGNiNTQw
MTY3Yjk1NTYxMzMxYjY2YjE5OTBiNjM1Ni4uOGJkOWVhMjNlYTc3NjNkNDlhMzNiMjEyMGEyOTUx
YTM4ODVjN2FlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEwLTE5ICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHdlYmtpdHNvdXJj
ZW9wZW4gZXZlbnQgZG9lc24ndCBhbHdheXMgZmlyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFu
Z2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBk
ZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBCdWcgY29udGFpbnMgYSBtYW51
YWwgdGVzdCBjYXNlLiBJIHdhcyB1bmFibGUgdG8gcmVwcm9kdWNlIHRoZSBzYW1lIGdhcmJhZ2Ug
Y29sbGVjdGlvbiBiZWhhdmlvciBpbiBhIExheW91dFRlc3QuCisKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Ok1lZGlhU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Omhh
c1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZS5oOgorICAgICAgICAoTWVkaWFTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2VSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVJlZ2lz
dHJ5OjpyZWdpc3Rlck1lZGlhU291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlUmVnaXN0cnk6OnVucmVnaXN0ZXJNZWRpYVNvdXJjZVVSTCk6CisKIDIwMTItMTAtMTkgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHRpbGUg
Y2FjaGVzIGluIHBsYWNlIG9mIENBVGlsZWRMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAppbmRleCA5N2E1NzM4M2JjYmEwYzAz
NmYwNTUzZjI4OGQ1NjJkZmMyNjY1Nzg2Li41ZGVmMDBiMTBmMGMzMDNhOGMxZjFmMmNkOTQ3OWIz
NzQ0ZGIxMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcApAQCAtNDIsMTEgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4gTWVkaWFTb3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFT
b3VyY2UoY29udGV4dCkpOworICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4gbWVkaWFTb3VyY2UoYWRv
cHRSZWYobmV3IE1lZGlhU291cmNlKGNvbnRleHQpKSk7CisgICAgbWVkaWFTb3VyY2UtPnN1c3Bl
bmRJZk5lZWRlZCgpOworICAgIHJldHVybiBtZWRpYVNvdXJjZS5yZWxlYXNlKCk7CiB9CiAKIE1l
ZGlhU291cmNlOjpNZWRpYVNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQot
ICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKKyAgICA6IEFjdGl2ZURP
TU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9yZWFkeVN0YXRlKGNsb3NlZEtleXdvcmQo
KSkKICAgICAsIG1fcGxheWVyKDApCiAgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShHZW5lcmljRXZl
bnRRdWV1ZTo6Y3JlYXRlKHRoaXMpKQpAQCAtMzI1LDcgKzMyNywxMyBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIE1lZGlhU291cmNlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIAogU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogTWVkaWFTb3VyY2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAog
ewotICAgIHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOworICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKK30KKworYm9vbCBNZWRpYVNvdXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9wbGF5ZXIgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRp
bmdFdmVudHMoKQorICAgICAgICB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0
eSgpOwogfQogCiBFdmVudFRhcmdldERhdGEqIE1lZGlhU291cmNlOjpldmVudFRhcmdldERhdGEo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5o
CmluZGV4IDJlZDJiZjJjMzc4N2M0MDZjMTk1OTZlMTY3Yjk3NmI1NGIxM2JhNmEuLmVmMjg1Yzkz
NjIxNGZhNTM3NjU0MDQ3NGZjZWJlZjMwYTQ1YjIxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAog
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKLSNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlci5oIgorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkdlbmVy
aWNFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJTb3Vy
Y2VCdWZmZXIuaCIKQEAgLTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBNZWRpYVNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU291cmNlPiwgcHVibGlj
IEV2ZW50VGFyZ2V0LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworY2xhc3Mg
TWVkaWFTb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNvdXJjZT4sIHB1YmxpYyBFdmVu
dFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IFN0cmluZyYgb3BlbktleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBjbG9z
ZWRLZXl3b3JkKCk7CkBAIC03Niw2ICs3Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
IE9WRVJSSURFOwogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0IGludGVyZmFjZQorICAgIHZpcnR1
YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBPVkVSUklERTsKKwogICAgIHVzaW5n
IFJlZkNvdW50ZWQ8TWVkaWFTb3VyY2U+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRp
YVNvdXJjZT46OmRlcmVmOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuaWRsCmluZGV4IGJjMGY2Yzk2OTA4MDZmZDkwMGVmMTFjYzYxNjRk
N2Y4NDRmNTY5YmYuLjYxNjhhMjE3YWFiNjkwYmE4NDc4NzM1M2U1ODRlNzU1MWMyOGQ3MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aWRsCkBAIC0zMSw2ICszMSw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9TUVESUFfU09VUkNFLAog
ICAgIFY4RW5hYmxlZEF0UnVudGltZT1tZWRpYVNvdXJjZSwKKyAgICBBY3RpdmVET01PYmplY3Qs
CiAgICAgRXZlbnRUYXJnZXQsCiAgICAgQ29uc3RydWN0b3IsCiAgICAgQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAKaW5kZXggMGZiOGNlYjM4ZjU5N2Zm
MzMzMGVlYWI2NzU1YTZhMDM1M2ZmODZkMi4uM2IxOGJhNjRhMWJlMzI1NDkwMGI2YmIwZGVjNGUw
MDIyYzZkZGM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCkBAIC00OSwxMyArNDksMjUgQEAgTWVk
aWFTb3VyY2VSZWdpc3RyeSYgTWVkaWFTb3VyY2VSZWdpc3RyeTo6cmVnaXN0cnkoKQogdm9pZCBN
ZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3Rlck1lZGlhU291cmNlVVJMKGNvbnN0IEtVUkwmIHVy
bCwgUGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4gc291cmNlKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICAvLyBBZGQgYSBwZW5kaW5nIGFjdGl2aXR5IHRvIHRoZSBzb3VyY2Ug
c28gSmF2YXNjcmlwdCBrbm93cyB0aGlzIG9iamVjdCBpcyBzdGlsbCBhY3RpdmUuCisgICAgc291
cmNlLT5zZXRQZW5kaW5nQWN0aXZpdHkoc291cmNlLmdldCgpKTsKKwogICAgIG1fbWVkaWFTb3Vy
Y2VzLnNldCh1cmwuc3RyaW5nKCksIHNvdXJjZSk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VSZWdp
c3RyeTo6dW5yZWdpc3Rlck1lZGlhU291cmNlVVJMKGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIG1fbWVkaWFTb3VyY2VzLnJlbW92ZSh1cmwuc3Ry
aW5nKCkpOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8TWVkaWFTb3VyY2U+ID46Oml0ZXJh
dG9yIGl0ZXIgPSBtX21lZGlhU291cmNlcy5maW5kKHVybC5zdHJpbmcoKSk7CisgICAgaWYgKGl0
ZXIgPT0gbV9tZWRpYVNvdXJjZXMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0
cjxNZWRpYVNvdXJjZT4gc291cmNlID0gaXRlci0+dmFsdWU7CisgICAgbV9tZWRpYVNvdXJjZXMu
cmVtb3ZlKGl0ZXIpOworCisgICAgLy8gUmVtb3ZlIHRoZSBwZW5kaW5nIGFjdGl2aXR5IGFkZGVk
IGluIHJlZ2lzdGVyTWVkaWFTb3VyY2VVUkwoKS4KKyAgICBzb3VyY2UtPnVuc2V0UGVuZGluZ0Fj
dGl2aXR5KHNvdXJjZS5nZXQoKSk7CiB9CiAKIE1lZGlhU291cmNlKiBNZWRpYVNvdXJjZVJlZ2lz
dHJ5Ojpsb29rdXBNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169737</attachid>
            <date>2012-10-19 18:28:45 -0700</date>
            <delta_ts>2012-10-22 11:09:53 -0700</delta_ts>
            <desc>Added LayoutTest and stop() method.</desc>
            <filename>bug-99868-20121019182728.patch</filename>
            <type>text/plain</type>
            <size>10225</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQwMDY0MmIwZGNiNTQw
MTY3Yjk1NTYxMzMxYjY2YjE5OTBiNjM1Ni4uOTEzZTZhNjI5NzVkMWQ2N2MyZTAwNGJkNzVmNzhi
N2RhNmQ3MjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTEwLTE5ICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHdlYmtpdHNvdXJj
ZW9wZW4gZXZlbnQgZG9lc24ndCBhbHdheXMgZmlyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIE1lZGlhU291cmNlIHRvIGRlcml2ZSBmcm9t
IEFjdGl2ZURPTU9iamVjdCBzbyB0aGF0IGV2ZW50IGxpc3RlbmVycworICAgICAgICB3aWxsIHN0
aWxsIGZpcmUgZXZlbiBpZiBhbGwgcmVmZXJlbmNlcyB0byB0aGUgb2JqZWN0IGdvIG91dCBvZiBz
Y29wZS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS92aWRl
by1tZWRpYS1zb3VyY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLWJlZm9yZS1zb3VyY2VvcGVuLmh0bWwK
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZTo6TWVkaWFTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNvdXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU291cmNlOjpzdG9wKTogQ2xlYXJzIG1fcGxheWVyICYgbV9hc3luY0V2ZW50UXVldWUg
c28gdGhleSBkb24ndCBpbmRpY2F0ZSBwZW5kaW5nIGFjdGl2aXR5IGFueW1vcmUuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oOgorICAgICAgICAoTWVkaWFTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3Rlck1lZGlhU291cmNlVVJM
KTogQWRkZWQgc2V0UGVuZGluZ0FjdGl2aXR5KCkgY2FsbCBzbyB0aGUgTWVkaWFTb3VyY2Ugb2Jq
ZWN0IHN0YXlzIGFjdGl2ZSB3aGlsZSBpbiB0aGUgcmVnaXN0cnkuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNvdXJjZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyTWVkaWFTb3VyY2VVUkwpOiBBZGRlZCB1
bnNldFBlbmRpbmdBY3Rpdml0eSgpIGNhbGwgc28gdGhlIE1lZGlhU291cmNlIG9iamVjdCBjYW4g
YmVjb21lIGluYWN0aXZlIGFmdGVyIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgcmVnaXN0cnkuCisK
IDIwMTItMTAtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIHRpbGUgY2FjaGVzIGluIHBsYWNlIG9mIENBVGlsZWRMYXllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAppbmRleCA5
N2E1NzM4M2JjYmEwYzAzNmYwNTUzZjI4OGQ1NjJkZmMyNjY1Nzg2Li5hOTE1YzI3M2RjM2NlNzdj
MWFlMTljMzZmZmE1Y2JmZWVmMTYyMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtNDIsMTEgKzQyLDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4gTWVkaWFTb3VyY2U6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgTWVkaWFTb3VyY2UoY29udGV4dCkpOworICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4g
bWVkaWFTb3VyY2UoYWRvcHRSZWYobmV3IE1lZGlhU291cmNlKGNvbnRleHQpKSk7CisgICAgbWVk
aWFTb3VyY2UtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBtZWRpYVNvdXJjZS5yZWxl
YXNlKCk7CiB9CiAKIE1lZGlhU291cmNlOjpNZWRpYVNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQotICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkK
KyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9yZWFkeVN0YXRl
KGNsb3NlZEtleXdvcmQoKSkKICAgICAsIG1fcGxheWVyKDApCiAgICAgLCBtX2FzeW5jRXZlbnRR
dWV1ZShHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKHRoaXMpKQpAQCAtMzI1LDcgKzMyNywxOSBA
QCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QK
IAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTb3VyY2U6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdAogewotICAgIHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKworYm9vbCBNZWRpYVNvdXJjZTo6aGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbGF5ZXIgfHwgbV9hc3luY0V2ZW50
UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKQorICAgICAgICB8fCBBY3RpdmVET01PYmplY3Q6Omhh
c1BlbmRpbmdBY3Rpdml0eSgpOworfQorCit2b2lkIE1lZGlhU291cmNlOjpzdG9wKCkKK3sKKyAg
ICBtX3BsYXllciA9IDA7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmNhbmNlbEFsbEV2ZW50cygp
OwogfQogCiBFdmVudFRhcmdldERhdGEqIE1lZGlhU291cmNlOjpldmVudFRhcmdldERhdGEoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCmlu
ZGV4IDJlZDJiZjJjMzc4N2M0MDZjMTk1OTZlMTY3Yjk3NmI1NGIxM2JhNmEuLjFkM2YzNDc2YjY3
ODFmM2M5ZjVjZTRmYTQyYWVjN2NlMDUxMGRjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKLSNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlci5oIgorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkdlbmVyaWNF
dmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJTb3VyY2VC
dWZmZXIuaCIKQEAgLTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBNZWRpYVNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU291cmNlPiwgcHVibGljIEV2
ZW50VGFyZ2V0LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworY2xhc3MgTWVk
aWFTb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNvdXJjZT4sIHB1YmxpYyBFdmVudFRh
cmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
IFN0cmluZyYgb3BlbktleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBjbG9zZWRL
ZXl3b3JkKCk7CkBAIC03Niw2ICs3NiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBP
VkVSUklERTsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdCBpbnRlcmZhY2UKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHN0b3AoKSBPVkVSUklERTsKKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTb3VyY2U+
OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVNvdXJjZT46OmRlcmVmOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsCmlu
ZGV4IGJjMGY2Yzk2OTA4MDZmZDkwMGVmMTFjYzYxNjRkN2Y4NDRmNTY5YmYuLjYxNjhhMjE3YWFi
NjkwYmE4NDc4NzM1M2U1ODRlNzU1MWMyOGQ3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsCkBAIC0zMSw2ICszMSw3IEBACiBb
CiAgICAgQ29uZGl0aW9uYWw9TUVESUFfU09VUkNFLAogICAgIFY4RW5hYmxlZEF0UnVudGltZT1t
ZWRpYVNvdXJjZSwKKyAgICBBY3RpdmVET01PYmplY3QsCiAgICAgRXZlbnRUYXJnZXQsCiAgICAg
Q29uc3RydWN0b3IsCiAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VS
ZWdpc3RyeS5jcHAKaW5kZXggMGZiOGNlYjM4ZjU5N2ZmMzMzMGVlYWI2NzU1YTZhMDM1M2ZmODZk
Mi4uM2IxOGJhNjRhMWJlMzI1NDkwMGI2YmIwZGVjNGUwMDIyYzZkZGM3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVn
aXN0cnkuY3BwCkBAIC00OSwxMyArNDksMjUgQEAgTWVkaWFTb3VyY2VSZWdpc3RyeSYgTWVkaWFT
b3VyY2VSZWdpc3RyeTo6cmVnaXN0cnkoKQogdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdp
c3Rlck1lZGlhU291cmNlVVJMKGNvbnN0IEtVUkwmIHVybCwgUGFzc1JlZlB0cjxNZWRpYVNvdXJj
ZT4gc291cmNlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBBZGQg
YSBwZW5kaW5nIGFjdGl2aXR5IHRvIHRoZSBzb3VyY2Ugc28gSmF2YXNjcmlwdCBrbm93cyB0aGlz
IG9iamVjdCBpcyBzdGlsbCBhY3RpdmUuCisgICAgc291cmNlLT5zZXRQZW5kaW5nQWN0aXZpdHko
c291cmNlLmdldCgpKTsKKwogICAgIG1fbWVkaWFTb3VyY2VzLnNldCh1cmwuc3RyaW5nKCksIHNv
dXJjZSk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6dW5yZWdpc3Rlck1lZGlhU291
cmNlVVJMKGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIG1fbWVkaWFTb3VyY2VzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOworICAgIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8TWVkaWFTb3VyY2U+ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX21lZGlhU291cmNl
cy5maW5kKHVybC5zdHJpbmcoKSk7CisgICAgaWYgKGl0ZXIgPT0gbV9tZWRpYVNvdXJjZXMuZW5k
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4gc291cmNlID0g
aXRlci0+dmFsdWU7CisgICAgbV9tZWRpYVNvdXJjZXMucmVtb3ZlKGl0ZXIpOworCisgICAgLy8g
UmVtb3ZlIHRoZSBwZW5kaW5nIGFjdGl2aXR5IGFkZGVkIGluIHJlZ2lzdGVyTWVkaWFTb3VyY2VV
UkwoKS4KKyAgICBzb3VyY2UtPnVuc2V0UGVuZGluZ0FjdGl2aXR5KHNvdXJjZS5nZXQoKSk7CiB9
CiAKIE1lZGlhU291cmNlKiBNZWRpYVNvdXJjZVJlZ2lzdHJ5Ojpsb29rdXBNZWRpYVNvdXJjZShj
b25zdCBTdHJpbmcmIHVybCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMzNlYzkxYjJiZmEzYjliODkwMWIxZjkyNmUxZjdk
ZjJkY2E0M2JmLi4wY2I0YTMwYWMwMzc0MTRmMTc5N2E2ZWY0MjdlODgzM2Q5ZGM5NDAzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAtMTkgIEFhcm9uIENvbHdlbGwgIDxhY29sd2VsbEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgd2Via2l0c291cmNlb3BlbiBldmVudCBkb2Vzbid0IGFs
d2F5cyBmaXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05OTg2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIGEgdGVzdCB0aGF0IHZlcmlmaWVzIHRoZSB3ZWJraXRzb3VyY2VvcGVuIGV2ZW50IHN0
aWxsIGZpcmVzIAorICAgICAgICBldmVuIGlmIHRoZSBNZWRpYVNvdXJjZSB2YXJpYWJsZSBnb2Vz
IG91dCBvZiBzY29wZSBhbmQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3ZpZGVvLW1lZGlhLXNvdXJjZS1nYXJiYWdl
LWNvbGxlY3Rpb24tYmVmb3JlLXNvdXJjZW9wZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS92aWRlby1tZWRpYS1zb3VyY2UtZ2Fy
YmFnZS1jb2xsZWN0aW9uLWJlZm9yZS1zb3VyY2VvcGVuLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEw
LTE5ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEv
bWVkaWEtc291cmNlL3ZpZGVvLW1lZGlhLXNvdXJjZS1nYXJiYWdlLWNvbGxlY3Rpb24tYmVmb3Jl
LXNvdXJjZW9wZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvdmlkZW8tbWVkaWEtc291cmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1iZWZvcmUt
c291cmNlb3Blbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRlY2M0NmFlYmRjODVjMzE3MDRh
MWQ1N2M4YmVkNDk3YTM4YWNiZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3ZpZGVvLW1lZGlhLXNvdXJjZS1nYXJiYWdlLWNvbGxl
Y3Rpb24tYmVmb3JlLXNvdXJjZW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVz
dHMgdGhhdCB3ZWJraXRzb3VyY2VvcGVuIGV2ZW50IGZpcmVzIGV2ZW4gaWYgZ2FyYmFnZSBjb2xs
ZWN0aW9uIGhhcHBlbnMgYmV0d2VlbiBzZXR0aW5nIHZpZGVvLnNyYyAmIHRoZSB3ZWJraXRzb3Vy
Y2VvcGVuIGV2ZW50LgorCitTZXR0aW5nIHdlYmtpdHNvdXJjZW9wZW4gZXZlbnQgbGlzdGVuZXIu
CitTZXR0aW5nIHZpZGVvLnNyYyB0byBvYmplY3QgVVJMLgorUnVubmluZyBnYXJiYWdlIGNvbGxl
Y3Rvci4KK29uU291cmNlT3BlbiBjYWxsZWQuCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS92aWRlby1tZWRpYS1zb3Vy
Y2UtZ2FyYmFnZS1jb2xsZWN0aW9uLWJlZm9yZS1zb3VyY2VvcGVuLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS92aWRlby1tZWRpYS1zb3VyY2UtZ2FyYmFn
ZS1jb2xsZWN0aW9uLWJlZm9yZS1zb3VyY2VvcGVuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWYwYWM2MTc1
NzkzOTRmM2Y2MTFhNmQzOWI3ODFhMjhkMDVlYjNjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3ZpZGVvLW1lZGlhLXNvdXJjZS1n
YXJiYWdlLWNvbGxlY3Rpb24tYmVmb3JlLXNvdXJjZW9wZW4uaHRtbApAQCAtMCwwICsxLDQ1IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iL21lZGlhLXJlc291cmNlcy92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHk+CisgICAgICAgIDx2aWRlbyBhdXRvcGxheSBjb250cm9scz0iY29udHJvbHMi
IGlkPSd2aWQnPjwvdmlkZW8+CisgICAgICAgIDxwPlRlc3RzIHRoYXQgd2Via2l0c291cmNlb3Bl
biBldmVudCBmaXJlcyBldmVuIGlmIGdhcmJhZ2UgY29sbGVjdGlvbiBoYXBwZW5zIGJldHdlZW4g
c2V0dGluZyB2aWRlby5zcmMgJmFtcDsgdGhlIHdlYmtpdHNvdXJjZW9wZW4gZXZlbnQuPC9wPgor
ICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgICAgICBmdW5j
dGlvbiBydW5HQygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJSdW5uaW5nIGdhcmJhZ2UgY29sbGVjdG9yLiIpOworICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cuR0NDb250cm9sbGVyKQorICAgICAgICAgICAgICAgICAgICBHQ0NvbnRyb2xsZXIuY29sbGVj
dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3ZpZCcpOworICAgICAgICAgICAgICAgIHZhciBzb3VyY2VPcGVuZWQgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICB2YXIgb25TdGFsbGVkID0gZnVuY3Rpb24gKGUpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlT3BlbmVkKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCdz
dGFsbGVkIGV2ZW50IGZpcmVkIGJlZm9yZSB3ZWJraXRzb3VyY2VvcGVuJyk7CisgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdzdGFsbGVk
Jywgb25TdGFsbGVkKTsKKyAgICAgICAgICAgICAgICB2YXIgbWVkaWFTb3VyY2UgPSBuZXcgV2Vi
S2l0TWVkaWFTb3VyY2UoKTsKKyAgICAgICAgICAgICAgICB2YXIgb25Tb3VyY2VPcGVuID0gZnVu
Y3Rpb24gKGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzb3VyY2VP
cGVuZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIm9uU291cmNl
T3BlbiBjYWxsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2V0dGluZyB3ZWJraXRz
b3VyY2VvcGVuIGV2ZW50IGxpc3RlbmVyLiIpOworICAgICAgICAgICAgICAgIG1lZGlhU291cmNl
LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdHNvdXJjZW9wZW4nLCBvblNvdXJjZU9wZW4pOworICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2V0dGluZyB2aWRlby5zcmMgdG8gb2JqZWN0IFVS
TC4iKTsKKyAgICAgICAgICAgICAgICB2aWRlby5zcmMgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVj
dFVSTChtZWRpYVNvdXJjZSk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChydW5HQywgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGFydCgpOworICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169941</attachid>
            <date>2012-10-22 11:09:55 -0700</date>
            <delta_ts>2012-10-22 11:52:58 -0700</delta_ts>
            <desc>Fix test to not use setTimeout() &amp; removed unnecessary comment.</desc>
            <filename>bug-99868-20121022110834.patch</filename>
            <type>text/plain</type>
            <size>10194</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg1ZjZmZDdhZDRmNGQ0
MTM4Y2I0NmUzOWVmZjQ2MjEwZjAxM2VlZi4uOGZkNTQwYWFkNzkzZGQ5ZjFhODhhZGZhYzRlNTNl
M2M4NDMzMDMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTEwLTIyICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHdlYmtpdHNvdXJj
ZW9wZW4gZXZlbnQgZG9lc24ndCBhbHdheXMgZmlyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIE1lZGlhU291cmNlIHRvIGRlcml2ZSBmcm9t
IEFjdGl2ZURPTU9iamVjdCBzbyB0aGF0IGV2ZW50IGxpc3RlbmVycworICAgICAgICB3aWxsIHN0
aWxsIGZpcmUgZXZlbiBpZiBhbGwgcmVmZXJlbmNlcyB0byB0aGUgb2JqZWN0IGdvIG91dCBvZiBz
Y29wZS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS92aWRl
by1tZWRpYS1zb3VyY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLWJlZm9yZS1zb3VyY2VvcGVuLmh0bWwK
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZTo6TWVkaWFTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNvdXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU291cmNlOjpzdG9wKTogQ2xlYXJzIG1fcGxheWVyICYgbV9hc3luY0V2ZW50UXVldWUg
c28gdGhleSBkb24ndCBpbmRpY2F0ZSBwZW5kaW5nIGFjdGl2aXR5IGFueW1vcmUuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oOgorICAgICAgICAoTWVkaWFTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3Rlck1lZGlhU291cmNlVVJM
KTogQWRkZWQgc2V0UGVuZGluZ0FjdGl2aXR5KCkgY2FsbCBzbyB0aGUgTWVkaWFTb3VyY2Ugb2Jq
ZWN0IHN0YXlzIGFjdGl2ZSB3aGlsZSBpbiB0aGUgcmVnaXN0cnkuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNvdXJjZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyTWVkaWFTb3VyY2VVUkwpOiBBZGRlZCB1
bnNldFBlbmRpbmdBY3Rpdml0eSgpIGNhbGwgc28gdGhlIE1lZGlhU291cmNlIG9iamVjdCBjYW4g
YmVjb21lIGluYWN0aXZlIGFmdGVyIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgcmVnaXN0cnkuCisK
IDIwMTItMTAtMjIgIEphbiBLZXJvbW5lcyAgPGphbnhAbGludXguY29tPgogCiAgICAgICAgIE1v
dmVkIGNtZGV2dG9vbHMuanMgdG8gZm9sZGVyIGNtLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAppbmRleCA5N2E1NzM4M2JjYmEwYzAz
NmYwNTUzZjI4OGQ1NjJkZmMyNjY1Nzg2Li5hOTE1YzI3M2RjM2NlNzdjMWFlMTljMzZmZmE1Y2Jm
ZWVmMTYyMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcApAQCAtNDIsMTEgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4gTWVkaWFTb3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFT
b3VyY2UoY29udGV4dCkpOworICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4gbWVkaWFTb3VyY2UoYWRv
cHRSZWYobmV3IE1lZGlhU291cmNlKGNvbnRleHQpKSk7CisgICAgbWVkaWFTb3VyY2UtPnN1c3Bl
bmRJZk5lZWRlZCgpOworICAgIHJldHVybiBtZWRpYVNvdXJjZS5yZWxlYXNlKCk7CiB9CiAKIE1l
ZGlhU291cmNlOjpNZWRpYVNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQot
ICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKKyAgICA6IEFjdGl2ZURP
TU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9yZWFkeVN0YXRlKGNsb3NlZEtleXdvcmQo
KSkKICAgICAsIG1fcGxheWVyKDApCiAgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShHZW5lcmljRXZl
bnRRdWV1ZTo6Y3JlYXRlKHRoaXMpKQpAQCAtMzI1LDcgKzMyNywxOSBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIE1lZGlhU291cmNlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIAogU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogTWVkaWFTb3VyY2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAog
ewotICAgIHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOworICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKK30KKworYm9vbCBNZWRpYVNvdXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9wbGF5ZXIgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRp
bmdFdmVudHMoKQorICAgICAgICB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0
eSgpOworfQorCit2b2lkIE1lZGlhU291cmNlOjpzdG9wKCkKK3sKKyAgICBtX3BsYXllciA9IDA7
CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmNhbmNlbEFsbEV2ZW50cygpOwogfQogCiBFdmVudFRh
cmdldERhdGEqIE1lZGlhU291cmNlOjpldmVudFRhcmdldERhdGEoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDJlZDJiZjJjMzc4
N2M0MDZjMTk1OTZlMTY3Yjk3NmI1NGIxM2JhNmEuLjFkM2YzNDc2YjY3ODFmM2M5ZjVjZTRmYTQy
YWVjN2NlMDUxMGRjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCiAKLSNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgorI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXIuaCIKQEAgLTQy
LDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRpYVNvdXJjZSA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU291cmNlPiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJs
aWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworY2xhc3MgTWVkaWFTb3VyY2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxNZWRpYVNvdXJjZT4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgb3Blbktl
eXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBjbG9zZWRLZXl3b3JkKCk7CkBAIC03
Niw2ICs3NiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGlu
dGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKIAorICAg
IC8vIEFjdGl2ZURPTU9iamVjdCBpbnRlcmZhY2UKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVS
UklERTsKKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTb3VyY2U+OjpyZWY7CiAgICAgdXNp
bmcgUmVmQ291bnRlZDxNZWRpYVNvdXJjZT46OmRlcmVmOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsCmluZGV4IGJjMGY2Yzk2OTA4
MDZmZDkwMGVmMTFjYzYxNjRkN2Y4NDRmNTY5YmYuLjYxNjhhMjE3YWFiNjkwYmE4NDc4NzM1M2U1
ODRlNzU1MWMyOGQ3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuaWRsCkBAIC0zMSw2ICszMSw3IEBACiBbCiAgICAgQ29uZGl0aW9u
YWw9TUVESUFfU09VUkNFLAogICAgIFY4RW5hYmxlZEF0UnVudGltZT1tZWRpYVNvdXJjZSwKKyAg
ICBBY3RpdmVET01PYmplY3QsCiAgICAgRXZlbnRUYXJnZXQsCiAgICAgQ29uc3RydWN0b3IsCiAg
ICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAKaW5k
ZXggMGZiOGNlYjM4ZjU5N2ZmMzMzMGVlYWI2NzU1YTZhMDM1M2ZmODZkMi4uMWM2MjY3NDY3ZjQ1
ZGU4NzU0Y2U1MzZhMzYwODI1M2JjNmYyYTRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCkBAIC00
OSwxMyArNDksMjQgQEAgTWVkaWFTb3VyY2VSZWdpc3RyeSYgTWVkaWFTb3VyY2VSZWdpc3RyeTo6
cmVnaXN0cnkoKQogdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3Rlck1lZGlhU291cmNl
VVJMKGNvbnN0IEtVUkwmIHVybCwgUGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4gc291cmNlKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzb3VyY2UtPnNldFBlbmRpbmdBY3Rp
dml0eShzb3VyY2UuZ2V0KCkpOworCiAgICAgbV9tZWRpYVNvdXJjZXMuc2V0KHVybC5zdHJpbmco
KSwgc291cmNlKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyTWVk
aWFTb3VyY2VVUkwoY29uc3QgS1VSTCYgdXJsKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgbV9tZWRpYVNvdXJjZXMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFJlZlB0cjxNZWRpYVNvdXJjZT4gPjo6aXRlcmF0b3IgaXRlciA9IG1fbWVkaWFT
b3VyY2VzLmZpbmQodXJsLnN0cmluZygpKTsKKyAgICBpZiAoaXRlciA9PSBtX21lZGlhU291cmNl
cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPE1lZGlhU291cmNlPiBzb3Vy
Y2UgPSBpdGVyLT52YWx1ZTsKKyAgICBtX21lZGlhU291cmNlcy5yZW1vdmUoaXRlcik7CisKKyAg
ICAvLyBSZW1vdmUgdGhlIHBlbmRpbmcgYWN0aXZpdHkgYWRkZWQgaW4gcmVnaXN0ZXJNZWRpYVNv
dXJjZVVSTCgpLgorICAgIHNvdXJjZS0+dW5zZXRQZW5kaW5nQWN0aXZpdHkoc291cmNlLmdldCgp
KTsKIH0KIAogTWVkaWFTb3VyY2UqIE1lZGlhU291cmNlUmVnaXN0cnk6Omxvb2t1cE1lZGlhU291
cmNlKGNvbnN0IFN0cmluZyYgdXJsKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNhMjM4NjEyZjE5ODJiMGUyNDZhMzY4NmQx
NjY1ZjYwMDNlOTg4YjkuLjAyYTFkMWVmYjMwZjQyZjM0MWRiMGNlMDZhMWEzMTQ2N2QzYzEyZmMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMC0yMiAgQWFyb24gQ29sd2VsbCAgPGFjb2x3
ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICB3ZWJraXRzb3VyY2VvcGVuIGV2ZW50IGRvZXNu
J3QgYWx3YXlzIGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk5ODY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQgdmVyaWZpZXMgdGhlIHdlYmtpdHNvdXJjZW9wZW4gZXZl
bnQgc3RpbGwgZmlyZXMKKyAgICAgICAgZXZlbiBpZiB0aGUgTWVkaWFTb3VyY2UgdmFyaWFibGUg
Z29lcyBvdXQgb2Ygc2NvcGUgYW5kIGdhcmJhZ2UKKyAgICAgICAgY29sbGVjdGlvbiBvY2N1cnMu
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS92aWRlby1tZWRpYS1z
b3VyY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLWJlZm9yZS1zb3VyY2VvcGVuLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvdmlkZW8tbWVk
aWEtc291cmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1iZWZvcmUtc291cmNlb3Blbi5odG1sOiBBZGRl
ZC4KKwogMjAxMi0xMC0yMiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcmVwYXJlIG1hcHBpbmdzIHRvIG1vdmluZyB1aVNv
dXJjZUNvZGVzIGNyZWF0aW9uIG91dCBvZiB0aGVtIHRvIHdvcmtzcGFjZS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3ZpZGVvLW1lZGlhLXNv
dXJjZS1nYXJiYWdlLWNvbGxlY3Rpb24tYmVmb3JlLXNvdXJjZW9wZW4tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvdmlkZW8tbWVkaWEtc291
cmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1iZWZvcmUtc291cmNlb3Blbi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZThlODUwMGM3ZGY3MGE0M2FjZTVjNDc1OGY3Njc4OWQ3Y2YzNjI4ZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3Zp
ZGVvLW1lZGlhLXNvdXJjZS1nYXJiYWdlLWNvbGxlY3Rpb24tYmVmb3JlLXNvdXJjZW9wZW4tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdHMgdGhhdCB3ZWJraXRzb3VyY2VvcGVuIGV2
ZW50IGZpcmVzIGV2ZW4gaWYgZ2FyYmFnZSBjb2xsZWN0aW9uIGhhcHBlbnMgYmV0d2VlbiBzZXR0
aW5nIHZpZGVvLnNyYyAmIHRoZSB3ZWJraXRzb3VyY2VvcGVuIGV2ZW50LgorCitTZXR0aW5nIHdl
YmtpdHNvdXJjZW9wZW4gZXZlbnQgbGlzdGVuZXIuCitSdW5uaW5nIGdhcmJhZ2UgY29sbGVjdG9y
LgorU2V0dGluZyB2aWRlby5zcmMgdG8gb2JqZWN0IFVSTC4KK29uU291cmNlT3BlbiBjYWxsZWQu
CitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlh
L21lZGlhLXNvdXJjZS92aWRlby1tZWRpYS1zb3VyY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLWJlZm9y
ZS1zb3VyY2VvcGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS92aWRlby1tZWRpYS1zb3VyY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLWJlZm9yZS1zb3VyY2Vv
cGVuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RiZDY2MDAxNTY0MzAwYjAxNjE0MGI5MDFjNWFhOGRhZGRi
OTAyNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVk
aWEtc291cmNlL3ZpZGVvLW1lZGlhLXNvdXJjZS1nYXJiYWdlLWNvbGxlY3Rpb24tYmVmb3JlLXNv
dXJjZW9wZW4uaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iL21lZGlhLXJlc291cmNlcy92aWRlby10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDx2aWRl
byBhdXRvcGxheSBjb250cm9scz0iY29udHJvbHMiIGlkPSd2aWQnPjwvdmlkZW8+CisgICAgICAg
IDxwPlRlc3RzIHRoYXQgd2Via2l0c291cmNlb3BlbiBldmVudCBmaXJlcyBldmVuIGlmIGdhcmJh
Z2UgY29sbGVjdGlvbiBoYXBwZW5zIGJldHdlZW4gc2V0dGluZyB2aWRlby5zcmMgJmFtcDsgdGhl
IHdlYmtpdHNvdXJjZW9wZW4gZXZlbnQuPC9wPgorICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisgICAgICAgICAgICBmdW5jdGlvbiBjcmVhdGVNZWRpYVNvdXJjZVVSTCgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIG1lZGlhU291cmNlID0gbmV3IFdl
YktpdE1lZGlhU291cmNlKCk7CisgICAgICAgICAgICAgICAgdmFyIG9uU291cmNlT3BlbiA9IGZ1
bmN0aW9uIChlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc291cmNl
T3BlbmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJvblNvdXJj
ZU9wZW4gY2FsbGVkLiIpOworICAgICAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNldHRpbmcgd2Via2l0
c291cmNlb3BlbiBldmVudCBsaXN0ZW5lci4iKTsKKyAgICAgICAgICAgICAgICBtZWRpYVNvdXJj
ZS5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRzb3VyY2VvcGVuJywgb25Tb3VyY2VPcGVuKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobWVkaWFTb3Vy
Y2UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3ZpZCcpOworICAgICAgICAgICAgICAgIHZhciBzb3VyY2VPcGVuZWQgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICB2YXIgb25TdGFsbGVkID0gZnVuY3Rpb24gKGUpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlT3BlbmVkKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCdz
dGFsbGVkIGV2ZW50IGZpcmVkIGJlZm9yZSB3ZWJraXRzb3VyY2VvcGVuJyk7CisgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdzdGFsbGVk
Jywgb25TdGFsbGVkKTsKKworICAgICAgICAgICAgICAgIHZhciB1cmwgPSBjcmVhdGVNZWRpYVNv
dXJjZVVSTCgpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiUnVubmluZyBnYXJiYWdl
IGNvbGxlY3Rvci4iKTsKKyAgICAgICAgICAgICAgICBnYygpOworCisgICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCJTZXR0aW5nIHZpZGVvLnNyYyB0byBvYmplY3QgVVJMLiIpOworICAgICAg
ICAgICAgICAgIHZpZGVvLnNyYyA9IHVybDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0
YXJ0KCk7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>