<?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>81141</bug_id>
          
          <creation_ts>2012-03-14 12:16:00 -0700</creation_ts>
          <short_desc>REGRESSION(r103452): 100% CPU usage and 5s pause after clicking on a link in Yahoo Mail</short_desc>
          <delta_ts>2012-03-15 18:24:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>adamk</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>578630</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-03-14 12:16:00 -0700</bug_when>
    <thetext>Log into yahoo mail, and try to open an email that contain an email link. Just loading that email causes a spike in CPU. Opening the link is delayed by quite a few seconds before it opens in a new tab.

CC&apos;ed devs involved in checkin.

&lt;rdar://problem/10839734&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578656</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-14 12:36:17 -0700</bug_when>
    <thetext>Can&apos;t reproduce with latest Chrome Canary on Mac. Given the nature of http://trac.webkit.org/changeset/103452, I&apos;m quite surprised it&apos;d cause a regression that doesn&apos;t manifest itself on all ports (leaving aside that the change was supposed to have no effect on behavior). Can you give some background on how you narrowed the regression down to this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578693</commentid>
    <comment_count>2</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-03-14 13:14:51 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Can&apos;t reproduce with latest Chrome Canary on Mac. Given the nature of http://trac.webkit.org/changeset/103452, I&apos;m quite surprised it&apos;d cause a regression that doesn&apos;t manifest itself on all ports (leaving aside that the change was supposed to have no effect on behavior). Can you give some background on how you narrowed the regression down to this change?

We have an internal tool that allows us to binary search builds in order to hunt down checkins that cause regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578708</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-14 13:26:57 -0700</bug_when>
    <thetext>I can&apos;t reproduce this at r109773 on WebKit Mac/Snow Leopard. Is there something Lion-specific about it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578750</commentid>
    <comment_count>4</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-03-14 14:05:44 -0700</bug_when>
    <thetext>An excerpt of the spin dump on Lion:

382 WebCore::JSHTMLElement::put(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&amp;, JSC::JSValue, JSC::PutPropertySlot&amp;) + 62 (in WebCore) [0x10707705e]
  382 bool JSC::lookupPut&lt;WebCore::JSHTMLElement&gt;(JSC::ExecState*, JSC::Identifier const&amp;, JSC::JSValue, JSC::HashTable const*, WebCore::JSHTMLElement*, bool) + 251 (in WebCore) [0x10707786b]
    382 WebCore::setJSHTMLElementId(JSC::ExecState*, JSC::JSObject*, JSC::JSValue) + 104 (in WebCore) [0x1069493b8]
      382 WebCore::Element::setAttributeInternal(unsigned long, WebCore::QualifiedName const&amp;, WTF::AtomicString const&amp;, WebCore::EInUpdateStyleAttribute) + 381 (in WebCore) [0x106ed620d]
        382 WebCore::Node::dispatchSubtreeModifiedEvent() + 297 (in WebCore) [0x1068622c9]
          382 WebCore::Node::dispatchScopedEvent(WTF::PassRefPtr&lt;WebCore::Event&gt;) + 67 (in WebCore) [0x106a59583]
            382 WebCore::EventDispatcher::dispatchScopedEvent(WebCore::Node*, WTF::PassRefPtr&lt;WebCore::EventDispatchMediator&gt;) + 204 (in WebCore) [0x106ed965c]
              382 WebCore::ScopedEventQueue::enqueueEventDispatchMediator(WTF::PassRefPtr&lt;WebCore::EventDispatchMediator&gt;) + 175 (in WebCore) [0x1072527ff]
                382 WebCore::EventDispatcher::dispatchEvent(WebCore::Node*, WTF::PassRefPtr&lt;WebCore::EventDispatchMediator&gt;) + 146 (in WebCore) [0x106ed9572]
                  382 WebCore::EventDispatchMediator::dispatchEvent(WebCore::EventDispatcher*) const + 37 (in WebCore) [0x1067afff5]
                    382 WebCore::EventDispatcher::dispatchEvent(WTF::PassRefPtr&lt;WebCore::Event&gt;) + 943 (in WebCore) [0x1067b03df]
                      382 WebCore::EventContext::handleLocalEvents(WebCore::Event*) const + 86 (in WebCore) [0x106859796]
                        382 WebCore::Node::handleLocalEvents(WebCore::Event*) + 170 (in WebCore) [0x1067b0bba]
                          382 WebCore::EventTarget::fireEventListeners(WebCore::Event*) + 69 (in WebCore) [0x1067b0ae5]
                            382 WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector&lt;WebCore::RegisteredEventListener, 1ul&gt;&amp;) + 212 (in WebCore) [0x10684dc94]
                              382 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*) + 920 (in WebCore) [0x10684e188]
                                382 JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 49 (in JavaScriptCore) [0x10647a941]
                                  382 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 879 (in JavaScriptCore) [0x10647acbf]
                                    374 ??? [0x50e0d571edc9]
                                      374 operationPutByIdNonStrict + 64 (in JavaScriptCore) [0x1065462b0]
                                        374 WebCore::JSHTMLElement::put(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&amp;, JSC::JSValue, JSC::PutPropertySlot&amp;) + 62 (in WebCore) [0x10707705e]
                                          374 bool JSC::lookupPut&lt;WebCore::JSHTMLElement&gt;(JSC::ExecState*, JSC::Identifier const&amp;, JSC::JSValue, JSC::HashTable const*, WebCore::JSHTMLElement*, bool) + 251 (in WebCore) [0x10707786b]
                                            374 WebCore::setJSHTMLElementId(JSC::ExecState*, JSC::JSObject*, JSC::JSValue) + 104 (in WebCore) [0x1069493b8]
                                              374 WebCore::Element::setAttributeInternal(unsigned long, WebCore::QualifiedName const&amp;, WTF::AtomicString const&amp;, WebCore::EInUpdateStyleAttribute) + 381 (in WebCore) [0x106ed620d]
                                                374 WebCore::Node::dispatchSubtreeModifiedEvent() + 297 (in WebCore) [0x1068622c9]
                                                  374 WebCore::Node::dispatchScopedEvent(WTF::PassRefPtr&lt;WebCore::Event&gt;) + 67 (in WebCore) [0x106a59583]
                                                    374 WebCore::EventDispatcher::dispatchScopedEvent(WebCore::Node*, WTF::PassRefPtr&lt;WebCore::EventDispatchMediator&gt;) + 204 (in WebCore) [0x106ed965c]
                                                      374 WebCore::ScopedEventQueue::enqueueEventDispatchMediator(WTF::PassRefPtr&lt;WebCore::EventDispatchMediator&gt;) + 175 (in WebCore) [0x1072527ff]
                                                        374 WebCore::EventDispatcher::dispatchEvent(WebCore::Node*, WTF::PassRefPtr&lt;WebCore::EventDispatchMediator&gt;) + 146 (in WebCore) [0x106ed9572]
                                                          374 WebCore::EventDispatchMediator::dispatchEvent(WebCore::EventDispatcher*) const + 37 (in WebCore) [0x1067afff5]
                                                            374 WebCore::EventDispatcher::dispatchEvent(WTF::PassRefPtr&lt;WebCore::Event&gt;) + 835 (in WebCore) [0x1067b0373]
                                                              374 WebCore::Node::handleLocalEvents(WebCore::Event*) + 170 (in WebCore) [0x1067b0bba]
                                                                374 WebCore::EventTarget::fireEventListeners(WebCore::Event*) + 69 (in WebCore) [0x1067b0ae5]
                                                                  374 WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector&lt;WebCore::RegisteredEventListener, 1ul&gt;&amp;) + 212 (in WebCore) [0x10684dc94]
                                                                    374 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*) + 920 (in WebCore) [0x10684e188]
                                                                      374 JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 49 (in JavaScriptCore) [0x10647a941]
                                                                        374 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 879 (in JavaScriptCore) [0x10647acbf]
                                                                          365 ??? [0x50e0d571edc9]
                                                                            365 operationPutByIdNonStrict + 64 (in JavaScriptCore) [0x1065462b0]
                                                                              365 WebCore::JSHTMLElement::put(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&amp;, JSC::JSValue, JSC::PutPropertySlot&amp;) + 62 (in WebCore) [0x10707705e]
                                                                                365 bool JSC::lookupPut&lt;WebCore::JSHTMLElement&gt;(JSC::ExecState*, JSC::Identifier const&amp;, JSC::JSValue, JSC::HashTable const*, WebCore::JSHTMLElement*, bool) + 251 (in WebCore) [0x10707786b]
                                                                                  365 WebCore::setJSHTMLElementId(JSC::ExecState*, JSC::JSObject*, JSC::JSValue) + 104 (in WebCore) [0x1069493b8]
                                                                                    365 WebCore::Element::setAttributeInternal(unsigned long, WebCore::QualifiedName const&amp;, WTF::AtomicString const&amp;, WebCore::EInUpdateStyleAttribute) + 381 (in WebCore) [0x106ed620d]
                                                                                      365 WebCore::Node::dispatchSubtreeModifiedEvent() + 297 (in WebCore) [0x1068622c9]

etc.etc.

Looks like there is recursive invocation of the mutation event. You can see this by getting the nightlies surrounding the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578832</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-14 15:14:12 -0700</bug_when>
    <thetext>Thanks for the spin dump.

Looks like there&apos;s a DOMSubtreeModified listener modifying the ID each time it&apos;s called. Before r103452, only adding or removing an attribute would cause this event to fire, not modifying an existing one. Now it&apos;s possible to spin with a simple listener like:

function() { someDiv.id = &apos;foo&apos;; }

This new behavior was an inadvertent side effect of a refactor that made the code more consistent. Based on the (rather unfortunately broad) spec, http://www.w3.org/TR/DOM-Level-3-Events/#event-type-DOMSubtreeModified, it seems like the behavior after r103452 is closer to the spec, and this sort of bug is easy to fix for a web app. But we could still consider suppressing the event in this case, given that mutation events are deprecated and to avoid making them any more powerful (useful to webapps) than they already were.

Adding some folks who may have input.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578901</commentid>
    <comment_count>6</comment_count>
      <attachid>131952</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-14 16:20:38 -0700</bug_when>
    <thetext>Created attachment 131952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578979</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-14 17:38:26 -0700</bug_when>
    <thetext>Do we really want to make this change? It seems like this is an evangelical issue unless we see the same issues on other websites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579514</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-15 10:55:22 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Do we really want to make this change? It seems like this is an evangelical issue unless we see the same issues on other websites.

My thinking (and Ojan&apos;s too) is that there&apos;s nothing to be gained from making DOMSubtreeModified any more useful. So given that WebKit didn&apos;t previously fire it in the case of an attribute modification, why not treat the change in behavior as a regression just like any other?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579525</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-15 11:02:18 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Do we really want to make this change? It seems like this is an evangelical issue unless we see the same issues on other websites.
&gt; 
&gt; My thinking (and Ojan&apos;s too) is that there&apos;s nothing to be gained from making DOMSubtreeModified any more useful. So given that WebKit didn&apos;t previously fire it in the case of an attribute modification, why not treat the change in behavior as a regression just like any other?

On the other hand, don&apos;t they (website) have the same issue on Gecko?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579530</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-15 11:09:16 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; Do we really want to make this change? It seems like this is an evangelical issue unless we see the same issues on other websites.
&gt; &gt; 
&gt; &gt; My thinking (and Ojan&apos;s too) is that there&apos;s nothing to be gained from making DOMSubtreeModified any more useful. So given that WebKit didn&apos;t previously fire it in the case of an attribute modification, why not treat the change in behavior as a regression just like any other?
&gt; 
&gt; On the other hand, don&apos;t they (website) have the same issue on Gecko?

Sure. I&apos;m not arguing that websites that do this are correct.

But what&apos;s the upside of this change in behavior? The only effects it has are

1. Make DOMSubtreeModified more accurate.

2. Make pages (or extensions) that make use of DOMSubtreeModified slower.

I claim we don&apos;t care much about (1). And (2) definitely seems bad. Do you think (1) is a worthy goal?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579536</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-15 11:14:43 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Sure. I&apos;m not arguing that websites that do this are correct.
&gt; 
&gt; But what&apos;s the upside of this change in behavior? The only effects it has are
&gt; 
&gt; 1. Make DOMSubtreeModified more accurate.
&gt; 
&gt; 2. Make pages (or extensions) that make use of DOMSubtreeModified slower.
&gt; 
&gt; I claim we don&apos;t care much about (1). And (2) definitely seems bad. Do you think (1) is a worthy goal?

I think (1) is worthy goal for now. We might decide to kill mutation events in near future, but until that day comes, we should try to be spec-compliant as much as possible. I&apos;d argue that the only case we might willingly diverge is when we have significant security implications (e.g. editing, adoptNode, etc...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579553</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-15 11:19:37 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Sure. I&apos;m not arguing that websites that do this are correct.
&gt; &gt; 
&gt; &gt; But what&apos;s the upside of this change in behavior? The only effects it has are
&gt; &gt; 
&gt; &gt; 1. Make DOMSubtreeModified more accurate.
&gt; &gt; 
&gt; &gt; 2. Make pages (or extensions) that make use of DOMSubtreeModified slower.
&gt; &gt; 
&gt; &gt; I claim we don&apos;t care much about (1). And (2) definitely seems bad. Do you think (1) is a worthy goal?
&gt; 
&gt; I think (1) is worthy goal for now. We might decide to kill mutation events in near future, but until that day comes, we should try to be spec-compliant as much as possible. I&apos;d argue that the only case we might willingly diverge is when we have significant security implications (e.g. editing, adoptNode, etc...)

Note that spec compliance for DOMSubtreeModified is open to interpretation (we could fire it arbitrarily later than the mutations it&apos;s notifying about). I&apos;m not sure that &quot;spec compliance&quot; is a good argument for this case (see http://www.w3.org/TR/DOM-Level-3-Events/#event-type-DOMSubtreeModified for the wording).

Anyone from Apple care to comment, given that this started from a radr issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579608</commentid>
    <comment_count>13</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-03-15 11:57:35 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Anyone from Apple care to comment, given that this started from a radr issue?
I agree with Adam. I&apos;m not an expert on mutation events, but from what I can tell, this event is deprecated, which means everyone is discouraged from using it. I don&apos;t think trying to improve a deprecated behavior makes anything better. At best it won&apos;t affect anyone because no one&apos;s using the feature, in which case, why make the change, and at worst we break a major site, like this one. So it seems lose/lose to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579699</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-15 13:48:31 -0700</bug_when>
    <thetext>Okay, Anne also agrees with you all so I have no problem with landing this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580002</commentid>
    <comment_count>15</comment_count>
      <attachid>131952</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-15 18:24:24 -0700</bug_when>
    <thetext>Comment on attachment 131952
Patch

Clearing flags on attachment: 131952

Committed r110925: &lt;http://trac.webkit.org/changeset/110925&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580004</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-15 18:24:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131952</attachid>
            <date>2012-03-14 16:20:38 -0700</date>
            <delta_ts>2012-03-15 18:24:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81141-20120314162037.patch</filename>
            <type>text/plain</type>
            <size>6436</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY1MzIwYTc4Y2JjZTk5
ZGM1ZTEwMmU0YWIzMmMxNTI1NDEzNjNmYS4uZjZlMmRmMDIxOTVhODMwNzlmYWIxZjJkOTZiOWUx
YTg1MjkzZDAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTE0ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjEwMzQ1
Mik6IDEwMCUgQ1BVIHVzYWdlIGFuZCA1cyBwYXVzZSBhZnRlciBjbGlja2luZyBvbiBhIGxpbmsg
aW4gWWFob28gTWFpbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODExNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZXZlcnQgdGhlIGJlaGF2aW9yIGNoYW5nZSBmcm9tIHIxMDM0NTI6IGRvbid0IGZpcmUg
RE9NU3VidHJlZU1vZGlmaWVkCisgICAgICAgIGV2ZW50cyB3aGVuIGFuIGF0dHJpYnV0ZSB2YWx1
ZSBtZXJlbHkgY2hhbmdlcy4gU3RpbGwgZmlyZSB0aGF0IGV2ZW50CisgICAgICAgIHdoZW4gYW4g
YXR0cmlidXRlIGlzIGFkZGVkIG9yIHJlbW92ZWQgZnJvbSBhbiBlbGVtZW50LgorCisgICAgICAg
IFRob3VnaCB0aGlzIGNvbnRyYWRpY3RzIHRoZSBET00zIHNwZWMsIGl0IG1hdGNoZXMgbGVnYWN5
IFdlYktpdCBiZWhhdmlvciwKKyAgICAgICAgYW5kIGdpdmVuIHRoYXQgTXV0YXRpb24gRXZlbnRz
IGFyZSBkZXByZWNhdGVkLCBpdCBzZWVtcyB1bndpc2UgdG8gbWFrZQorICAgICAgICBhbnkgYWRk
aXRpb25zIHRvIFdlYktpdCdzIGltcGxlbWVudGF0aW9uIG9mIHRoZW0uCisKKyAgICAgICAgVGVz
dDogZmFzdC9kb20vc3VidHJlZS1tb2RpZmllZC1hdHRyaWJ1dGVzLmh0bWwKKworICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpZEFkZEF0dHJp
YnV0ZSk6IFJlbmFtZWQgZnJvbSBkaWRNb2RpZnlBdHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpkaWRNb2RpZnlBdHRyaWJ1dGUpOiBSZW1vdmUgdGhlIGNhbGwgdG8gZGlzcGF0
Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRv
bS9FbGVtZW50Lmg6CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudEF0
dHJpYnV0ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6
OmFkZEF0dHJpYnV0ZSk6IENhbGwgZGlkQWRkQXR0cmlidXRlIGluc3RlYWQgb2YgZGlkTW9kaWZ5
QXR0cmlidXRlLgorCiAyMDEyLTAzLTE0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5u
QG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIFJ1bkxvb3BRdCBpcyBtaXNzaW5nIHJlZW50cmFu
Y3kgZ3VhcmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYzY5N2YwMDk0MDhlYTY5MzM5YzJk
NjNkMGNjYWEyZDFiZTFhYmNiNi4uMmJhN2ViZjgxYTk1NzIwMjdhNmU0OTA5YmE4NTI1ODc2OGJk
NWQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjAwNSwxNCArMjAwNSwyMCBAQCB2b2lk
IEVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJgogI2VuZGlmCiB9CiAKLXZvaWQgRWxlbWVudDo6ZGlkTW9kaWZ5
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3ZvaWQgRWxlbWVudDo6ZGlkQWRkQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGF0dHIpOwotCiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRo
aXMsIGF0dHItPm5hbWUoKS5sb2NhbE5hbWUoKSwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZGlzcGF0
Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogfQogCit2b2lkIEVsZW1lbnQ6OmRpZE1vZGlmeUF0
dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgYXR0cmlidXRlQ2hhbmdlZChhdHRyKTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQo
KSwgdGhpcywgYXR0ci0+bmFtZSgpLmxvY2FsTmFtZSgpLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAv
LyBEbyBub3QgZGlzcGF0Y2ggYSBET01TdWJ0cmVlTW9kaWZpZWQgZXZlbnQgaGVyZTsgc2VlIGJ1
ZyA4MTE0MS4KK30KKwogdm9pZCBFbGVtZW50OjpkaWRSZW1vdmVBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQogewogICAgIGlmIChhdHRyLT5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4
IDczNTUwOTg1MmJhZTZmNDZjNTRhOWVjM2UxYTVjMjBjMjVhNzIzN2QuLjRlNTYzZmYwMWFmZmNh
YmU3YjJmMjM0ODZjMjAyYzcyOTM5Nzg4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjk1LDYg
KzI5NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbE1vZGlmeUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdWYWx1ZSk7CiAgICAgdm9pZCB3aWxsUmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKKyAgICB2b2lkIGRpZEFk
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2b2lkIGRpZE1vZGlmeUF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2b2lkIGRpZFJlbW92ZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAKaW5kZXggMTQxZWM3ZTJk
MjMwNjI5MGUzY2E4M2U1MWE1NjMyOWZjMGE4MGNlMi4uZDMyOTgxZjljMWY3MmMxNDkyNTgyNGI0
ODY4Yzg2YzBhZjVkOTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRB
dHRyaWJ1dGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0
ZURhdGEuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6
YWRkQXR0cmlidXRlKFBhc3NSZWZQdHI8QXR0cmlidXRlPiBwcnBBdHRyaWJ1dGUsIEVsZW0KICAg
ICAgICAgYXR0ci0+bV9lbGVtZW50ID0gZWxlbWVudDsKIAogICAgIGlmIChlbGVtZW50ICYmIGlu
VXBkYXRlU3R5bGVBdHRyaWJ1dGUgPT0gTm90SW5VcGRhdGVTdHlsZUF0dHJpYnV0ZSkKLSAgICAg
ICAgZWxlbWVudC0+ZGlkTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZS5nZXQoKSk7CisgICAgICAg
IGVsZW1lbnQtPmRpZEFkZEF0dHJpYnV0ZShhdHRyaWJ1dGUuZ2V0KCkpOwogfQogCiB2b2lkIEVs
ZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZW1vdmVBdHRyaWJ1dGUoc2l6ZV90IGluZGV4LCBFbGVtZW50
KiBlbGVtZW50LCBFSW5VcGRhdGVTdHlsZUF0dHJpYnV0ZSBpblVwZGF0ZVN0eWxlQXR0cmlidXRl
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGIzZjQ1YmQ0Yzg0YjUwODBlMWFmY2JkNjlkZjg2YmFkMWNjOTIwNmYuLjU1ZWQ3
NGE1NzczNjY1YTJiYjgyYTA1YWQ1OTljOGJjZjBiODZiNmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMi0wMy0xNCAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSRUdSRVNTSU9OKHIxMDM0NTIpOiAxMDAlIENQVSB1c2FnZSBhbmQgNXMgcGF1c2UgYWZ0ZXIg
Y2xpY2tpbmcgb24gYSBsaW5rIGluIFlhaG9vIE1haWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zdWJ0cmVlLW1vZGlmaWVkLWF0dHJp
YnV0ZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zdWJ0cmVlLW1v
ZGlmaWVkLWF0dHJpYnV0ZXMuaHRtbDogQWRkZWQuCisKIDIwMTItMDMtMTQgIEtlbnRhcm8gSGFy
YSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldHVybiBudWxsIHdoZW4gc2hv
dWxkQWxsb3dBY2Nlc3NUb05vZGUoKSBmYWlscwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc3VidHJlZS1tb2RpZmllZC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3N1YnRyZWUtbW9kaWZpZWQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGMxN2RiMTY4ODExODdkMmZlMmNlYTRmNGM1OGE5NDRkZmJiMDI2NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3N1YnRyZWUtbW9kaWZpZWQtYXR0cmli
dXRlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorRE9NU3VidHJlZU1vZGlmaWVkIHNo
b3VsZCBmaXJlIHdoZW4gYXR0cmlidXRlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCwgYnV0IG5vdCBt
b2RpZmllZCAoc2VlIGJ1ZyA4MTE0MSkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgZXhwZWN0ZWQgaXMgdHJ1ZQorUEFTUyBleHBlY3RlZCBpcyB0cnVlCitQQVNTIGV4cGVj
dGVkIGlzIHRydWUKK1BBU1MgZXhwZWN0ZWQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3N1YnRyZWUtbW9kaWZpZWQtYXR0cmlidXRlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc3VidHJlZS1tb2RpZmllZC1hdHRyaWJ1dGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE0MzQ3
M2FhNGZlNDFmODY5NDBmMjNiNmM2YzdiYjJmM2YwNDRhYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3N1YnRyZWUtbW9kaWZpZWQtYXR0cmlidXRlcy5odG1sCkBAIC0w
LDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bignRE9NU3VidHJlZU1vZGlmaWVkIHNob3VsZCBmaXJlIHdoZW4gYXR0cmlidXRlcyBhcmUgYWRk
ZWQgb3IgcmVtb3ZlZCwgYnV0IG5vdCBtb2RpZmllZCAoc2VlIGJ1ZyA4MTE0MSknKTsKKwordmFy
IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChkaXYpOwordmFyIGV4cGVjdGVkID0gZmFsc2U7CitkaXYuYWRkRXZlbnRMaXN0ZW5l
cignRE9NU3VidHJlZU1vZGlmaWVkJywgZnVuY3Rpb24oZXZ0KSB7CisgICAgc2hvdWxkQmVUcnVl
KCdleHBlY3RlZCcpOworfSk7CitleHBlY3RlZCA9IHRydWU7CitkaXYuc2V0QXR0cmlidXRlKCdm
b28nLCAnYmFyJyk7CitleHBlY3RlZCA9IGZhbHNlOworZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywg
J2JheicpOworZXhwZWN0ZWQgPSB0cnVlOworZGl2LnJlbW92ZUF0dHJpYnV0ZSgnZm9vJyk7CisK
K3ZhciBhdHRyID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCdiYXInKTsKK2F0dHIudmFsdWUg
PSAnZm9vJzsKK2V4cGVjdGVkID0gdHJ1ZTsKK2Rpdi5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIpOwor
ZXhwZWN0ZWQgPSBmYWxzZTsKK2F0dHIudmFsdWUgPSAnYmFyJzsKK2V4cGVjdGVkID0gdHJ1ZTsK
K2Rpdi5yZW1vdmVBdHRyaWJ1dGVOb2RlKGF0dHIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>