<?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>178198</bug_id>
          
          <creation_ts>2017-10-11 17:40:21 -0700</creation_ts>
          <short_desc>Web Inspector: ASSERT_NOT_REACHED hit in PageDebuggerAgent::didAddEventListener</short_desc>
          <delta_ts>2018-05-02 18:50:34 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>181580</dup_id>
          
          <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="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mattbaker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1359485</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2017-10-11 17:40:21 -0700</bug_when>
    <thetext>Repro steps:

1. run-minibrowser --debug / run-safari --debug
2. Open Web Inspector.
3. Enter &quot;playstation.com&quot; into URL bar.

Results:

1. this.treeOutline is unexpectedly null @ https://trac.webkit.org/browser/webkit/trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js#L1340
2. &quot;SHOULD NEVER BE REACHED&quot; @ https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/inspector/PageDebuggerAgent.cpp#L174

Note:

- Adding a null-check in DOMTreeElement does not stop the WebCore crash in PageDebuggerAgent.
- I assume this is related to https://trac.webkit.org/changeset/220036/webkit (unless result 1 points to a different root cause that I haven&apos;t identified).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363916</commentid>
    <comment_count>1</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2017-10-24 14:36:40 -0700</bug_when>
    <thetext>Result (1) mentioned above is unrelated and addressed in https://bugs.webkit.org/show_bug.cgi?id=178745.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363958</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-10-24 15:21:42 -0700</bug_when>
    <thetext>&gt; void PageDebuggerAgent::didAddEventListener(EventTarget&amp; target, const AtomicString&amp; eventType)
&gt; {
&gt;     ...
&gt;     auto&amp; eventListeners = target.eventListeners(eventType);
&gt;     const RefPtr&lt;RegisteredEventListener&gt;&amp; listener = eventListeners.last();
&gt;     if (m_registeredEventListeners.contains(listener.get())) {
&gt;         ASSERT_NOT_REACHED();
&gt;         return;
&gt;     }
&gt;     ...
&gt;

So this looks like its getting a didAddEventListener twice for the same event. That or the eventListeners.last() is a poor choice. Do you have a backtrace to see how we got here? I&apos;d be interested to know what EventTarget entry point got us here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363983</commentid>
    <comment_count>3</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2017-10-24 16:08:01 -0700</bug_when>
    <thetext>It really is as easy as visiting playstation.com, but here you go. :P
&gt; 1   0x119c30c7d WTFCrash
&gt; 2   0x10d325c66 WebCore::PageDebuggerAgent::didAddEventListener(WebCore::EventTarget&amp;, WTF::AtomicString const&amp;)
&gt; 3   0x10cfe0d7d WebCore::InspectorInstrumentation::didAddEventListenerImpl(WebCore::InstrumentingAgents&amp;, WebCore::EventTarget&amp;, WTF::AtomicString const&amp;)
&gt; 4   0x10f1e5152 WebCore::InspectorInstrumentation::didAddEventListener(WebCore::EventTarget&amp;, WTF::AtomicString const&amp;)
&gt; 5   0x10f1e576c WebCore::EventTarget::setAttributeEventListener(WTF::AtomicString const&amp;, WTF::RefPtr&lt;WebCore::EventListener&gt;&amp;&amp;, WebCore::DOMWrapperWorld&amp;)
&gt; 6   0x10ed2b214 WebCore::setEventHandlerAttribute(JSC::ExecState&amp;, JSC::JSObject&amp;, WebCore::EventTarget&amp;, WTF::AtomicString const&amp;, JSC::JSValue)
&gt; 7   0x10de6b079 WebCore::setJSDOMWindowOnloadSetter(JSC::ExecState&amp;, WebCore::JSDOMWindow&amp;, JSC::JSValue, JSC::ThrowScope&amp;)
&gt; 8   0x10ddeaad8 bool WebCore::IDLAttribute&lt;WebCore::JSDOMWindow&gt;::set&lt;&amp;(WebCore::setJSDOMWindowOnloadSetter(JSC::ExecState&amp;, WebCore::JSDOMWindow&amp;, JSC::JSValue, JSC::ThrowScope&amp;)), (WebCore::CastedThisErrorBehavior)0&gt;(JSC::ExecState&amp;, long long, long long, char const*)
&gt; 9   0x10ddea99c WebCore::setJSDOMWindowOnload(JSC::ExecState*, long long, long long)
&gt; 10  0x11976b82d JSC::callCustomSetter(JSC::ExecState*, bool (*)(JSC::ExecState*, long long, long long), bool, JSC::JSValue, JSC::JSValue)
&gt; 11  0x1198606bc JSC::putEntry(JSC::ExecState*, JSC::ClassInfo const*, JSC::HashTableValue const*, JSC::JSObject*, JSC::JSObject*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;)
&gt; 12  0x11985fd86 JSC::JSObject::putInlineSlow(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;)
&gt; 13  0x11904b5a0 JSC::JSObject::putInlineForJSObject(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;)
&gt; 14  0x119850925 JSC::JSObject::put(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;)
&gt; 15  0x1197f7d73 JSC::JSGlobalObject::put(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;)
&gt; 16  0x10ed16ebc WebCore::JSDOMWindow::put(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;)
&gt; 17  0x1198842e5 JSC::JSProxy::put(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;)
&gt; 18  0x11904b0fc JSC::JSCell::putInline(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;)
&gt; 19  0x11904c803 JSC::JSValue::putInline(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;)
&gt; 20  0x11957bf62 llint_slow_path_put_by_id
&gt; 21  0x1187ebfcc llint_entry
&gt; 22  0x1187e8477 vmEntryToJavaScript
&gt; 23  0x1195106de JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
&gt; 24  0x1194b71e6 JSC::Interpreter::executeProgram(JSC::SourceCode const&amp;, JSC::ExecState*, JSC::JSObject*)
&gt; 25  0x119732297 JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
&gt; 26  0x119732420 JSC::profiledEvaluate(JSC::ExecState*, JSC::ProfilingReason, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
&gt; 27  0x10ed5bbdb WebCore::JSMainThreadExecState::profiledEvaluate(JSC::ExecState*, JSC::ProfilingReason, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
&gt; 28  0x10ed5b9c8 WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode const&amp;, WebCore::DOMWrapperWorld&amp;, WebCore::ExceptionDetails*)
&gt; 29  0x10ed5bcbd WebCore::ScriptController::evaluate(WebCore::ScriptSourceCode const&amp;, WebCore::ExceptionDetails*)
&gt; 30  0x10f260bb2 WebCore::ScriptElement::executeClassicScript(WebCore::ScriptSourceCode const&amp;)
&gt; 31  0x10f25f156 WebCore::ScriptElement::prepareScript(WTF::TextPosition const&amp;, WebCore::ScriptElement::LegacyTypeSupport)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364035</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-10-24 17:22:31 -0700</bug_when>
    <thetext>&gt; So this looks like its getting a didAddEventListener twice for the same
&gt; event. That or the eventListeners.last() is a poor choice. Do you have a
&gt; backtrace to see how we got here? I&apos;d be interested to know what EventTarget
&gt; entry point got us here.

Yeah, I think last() is the wrong choice.

&gt;    bool EventTarget::setAttributeEventListener(const AtomicString&amp; eventType, RefPtr&lt;EventListener&gt;&amp;&amp; listener, DOMWrapperWorld&amp; isolatedWorld)
&gt;    {
&gt;        auto* existingListener = attributeEventListener(eventType, isolatedWorld);
&gt;        ...
&gt;        if (existingListener) {
&gt;            InspectorInstrumentation::willRemoveEventListener(*this, eventType, *existingListener, false);
&gt;            eventTargetData()-&gt;eventListenerMap.replace(eventType, *existingListener, listener.releaseNonNull(), { });
&gt;            InspectorInstrumentation::didAddEventListener(*this, eventType);
&gt;            return true;
&gt;        }
&gt;        ...
&gt;    }

This has an eventListenerMap.replace(), probably means that when didAddEventListener gets call, &quot;last()&quot; might not be the right value to use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419488</commentid>
    <comment_count>5</comment_count>
      <attachid>339247</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-05-01 17:46:17 -0700</bug_when>
    <thetext>Created attachment 339247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419491</commentid>
    <comment_count>6</comment_count>
      <attachid>339247</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-05-01 17:47:19 -0700</bug_when>
    <thetext>Comment on attachment 339247
Patch

This still needs a test, but I wanted to get a rough draft solution up in the meantime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419492</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-01 17:48:45 -0700</bug_when>
    <thetext>Attachment 339247 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419532</commentid>
    <comment_count>8</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-05-01 20:31:54 -0700</bug_when>
    <thetext>Is this a different case than that covered by https://webkit.org/b/181580?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419563</commentid>
    <comment_count>9</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-05-01 21:54:15 -0700</bug_when>
    <thetext>(In reply to Matt Baker from comment #8)
&gt; Is this a different case than that covered by https://webkit.org/b/181580?

Looks to be one and the same! Hehe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419985</commentid>
    <comment_count>10</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-05-02 18:49:58 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 181580 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339247</attachid>
            <date>2018-05-01 17:46:17 -0700</date>
            <delta_ts>2018-05-02 18:50:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178198-20180501174617.patch</filename>
            <type>text/plain</type>
            <size>11004</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU2OTYxNzdiMTY5MWIx
NDZjMWZlZjc1ZGM2OWQyM2M5NjUyZDE4ZC4uZDVlNGI2NDk0OTAyNjJiMzJiYmYwMjJhMjAzZWEx
MTVlMzgyZWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTA1LTAxICBSb3Nz
IEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBBU1NFUlRfTk9UX1JFQUNIRUQgaGl0IGluIFBhZ2VEZWJ1Z2dlckFnZW50OjpkaWRBZGRF
dmVudExpc3RlbmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzgxOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6c2V0QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcik6CisgICAgICAgIFBhc3MgaXNvbGF0ZWRXb3JsZCBkb3duIHRvIGRpZEFkZEV2ZW50TGlz
dGVuZXIgaW4gdGhlICJvbmV2ZW50IiBhdHRyaWJ1dGUgY2FzZS4KKworICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRUYXJnZXQ6OmF0dHJpYnV0ZVJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0OjphdHRyaWJ1dGVFdmVudExpc3RlbmVyKTogRGVsZXRl
ZC4KKyAgICAgICAgRG9uJ3QganVzdCB0aHJvdyBhd2F5IHRoZSBSZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lciB3aGVuIGxvb2tpbmcgZm9yIGFuICJvbmV2ZW50IiBjYWxsYmFjay4uLgorCisgICAgICAg
ICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6YXR0
cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIC4uLmluc3RlYWQsIG1ha2UgYXR0cmlidXRl
RXZlbnRMaXN0ZW5lciBhbiBpbmxpbmUgd3JhcHBlciBmb3IgYXR0cmlidXRlUmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
QWRkRXZlbnRMaXN0ZW5lckltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdl
L1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFn
ZW50OjpkaWRBZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgV2hlbiBvdmVyd3JpdGluZyBhbiAib25l
dmVudCIgYXR0cmlidXRlLCB0aGUgbmV3IGV2ZW50IGxpc3RlbmVyIHJlcGxhY2VzIHRoZSBvbGQg
b25lLAorICAgICAgICBzbyB3ZSBuZWVkIHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBsaXN0IGZvciBp
dCBpbnN0ZWFkIG9mIGFzc3VtaW5nIHRoYXQgaXQgd2FzIGFwcGVuZGVkLgorCiAyMDE4LTA0LTI3
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbihy
MjIyMzkyPyk6IEV2ZW50cyBjYW4gaGF2ZSBhIG5lZ2F0aXZlIHRpbWVzdGFtcCB3aGljaCBjYXVz
ZXMgYXBwIGJyZWFrYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCAyZjYwYzMx
OTI5OGVkMjVlMmNlODkzZTY3NjcwZDk3YzUyMDdlNzY1Li5hZGQ1OWJkNmJjZTRiNmE5OGEwYTQw
Zjc5MDk5OWViMjAyNThiMDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTEz
NywxNCArMTM3LDE0IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0CiAKICAgICAgICAgZXZlbnRU
YXJnZXREYXRhKCktPmV2ZW50TGlzdGVuZXJNYXAucmVwbGFjZShldmVudFR5cGUsICpleGlzdGlu
Z0xpc3RlbmVyLCBsaXN0ZW5lci5yZWxlYXNlTm9uTnVsbCgpLCB7IH0pOwogCi0gICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQWRkRXZlbnRMaXN0ZW5lcigqdGhpcywgZXZlbnRU
eXBlKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRBZGRFdmVudExpc3Rl
bmVyKCp0aGlzLCBldmVudFR5cGUsICZpc29sYXRlZFdvcmxkKTsKIAogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0
ZW5lci5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAotRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXQ6
OmF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERP
TVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRXb3JsZCkKK1JlZlB0cjxSZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lcj4gRXZlbnRUYXJnZXQ6OmF0dHJpYnV0ZVJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQp
CiB7CiAgICAgZm9yIChhdXRvJiBldmVudExpc3RlbmVyIDogZXZlbnRMaXN0ZW5lcnMoZXZlbnRU
eXBlKSkgewogICAgICAgICBhdXRvJiBsaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXItPmNhbGxiYWNr
KCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXQ6OmF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUKIAogICAgICAg
ICBhdXRvJiBsaXN0ZW5lcldvcmxkID0gZG93bmNhc3Q8SlNFdmVudExpc3RlbmVyPihsaXN0ZW5l
cikuaXNvbGF0ZWRXb3JsZCgpOwogICAgICAgICBpZiAoJmxpc3RlbmVyV29ybGQgPT0gJmlzb2xh
dGVkV29ybGQpCi0gICAgICAgICAgICByZXR1cm4gJmxpc3RlbmVyOworICAgICAgICAgICAgcmV0
dXJuIGV2ZW50TGlzdGVuZXI7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oCmluZGV4IDkwYjEyMmFlNzRjYWZjNWUyMmJjYjY2MzM2ZDhkMTUwZjNl
ZjU4OWUuLjIwZTE1ZTNjYTNhOTJjOTg4MzViMDU3ZDFlNDZiMzAzODc2NzI5YTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5oCkBAIC0xMDIsNiArMTAyLDcgQEAgcHVibGljOgogCiAgICAgLy8g
VXNlZCBmb3IgbGVnYWN5ICJvbmV2ZW50IiBhdHRyaWJ1dGVzLgogICAgIGJvb2wgc2V0QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+JiYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIFJlZlB0cjxSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lcj4gYXR0cmlidXRlUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdyYXBwZXJXb3JsZCYpOwogICAgIEV2ZW50TGlzdGVu
ZXIqIGF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgYm9vbCBoYXNFdmVudExpc3RlbmVycygpIGNvbnN0
OwpAQCAtMTcxLDQgKzE3MiwxMCBAQCBpbmxpbmUgYm9vbCBFdmVudFRhcmdldDo6aGFzQ2FwdHVy
aW5nRXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cAogICAgIHJldHVy
biBkYXRhICYmIGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAuY29udGFpbnNDYXB0dXJpbmcoZXZlbnRU
eXBlKTsKIH0KIAoraW5saW5lIEV2ZW50TGlzdGVuZXIqIEV2ZW50VGFyZ2V0OjphdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XcmFwcGVyV29y
bGQmIGlzb2xhdGVkV29ybGQpCit7CisgICAgY29uc3QgYXV0byYgcmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXIgPSBhdHRyaWJ1dGVSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGlzb2xh
dGVkV29ybGQpOworICAgIHJldHVybiByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciA/ICZyZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lci0+Y2FsbGJhY2soKSA6IG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggM2JkNGJjMGE0OGZhOGI2Zjc1ZjI5YTEwZGU0NTdl
ZDBlMTk2ODljYy4uMmZmMzBmMTMwNDk4MTI1OTg3Zjg2YTdkMzhiMWNkODkwMWU0NzhjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKQEAgLTMxMywxMCArMzEzLDEwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZW1vdmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVuCiAg
ICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlbW92ZVRpbWVyKHRpbWVySWQsIGZyYW1lRm9yU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRBZGRFdmVudExpc3RlbmVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRBZGRFdmVu
dExpc3RlbmVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBF
dmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV3Jh
cHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQogewogICAgIGlmIChQYWdlRGVidWdnZXJBZ2VudCog
cGFnZURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VEZWJ1Z2dlckFnZW50
KCkpCi0gICAgICAgIHBhZ2VEZWJ1Z2dlckFnZW50LT5kaWRBZGRFdmVudExpc3RlbmVyKHRhcmdl
dCwgZXZlbnRUeXBlKTsKKyAgICAgICAgcGFnZURlYnVnZ2VyQWdlbnQtPmRpZEFkZEV2ZW50TGlz
dGVuZXIodGFyZ2V0LCBldmVudFR5cGUsIGlzb2xhdGVkV29ybGQpOwogICAgIGlmIChJbnNwZWN0
b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFn
ZW50KCkpCiAgICAgICAgIGRvbUFnZW50LT5kaWRBZGRFdmVudExpc3RlbmVyKHRhcmdldCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKaW5kZXggOGY5M2Y0NTM3ZmMyMTUwZWE3ZDgwY2Y0ZGY4M2E1MWVlM2MxODZhYS4uNGIw
M2ZiNDYwMzMzMzI2NjVhNTQ4ODg3OTcwZTVmYTY2OWYxOTRiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTQ2LDcg
KzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgd2lsbENhbGxGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2Fs
bEZ1bmN0aW9uKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRBZGRFdmVudExpc3RlbmVyKEV2
ZW50VGFyZ2V0JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOworICAgIHN0YXRpYyB2
b2lkIGRpZEFkZEV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkID0gbnVsbHB0cik7CiAg
ICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZUV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmLCBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7
CiAgICAgc3RhdGljIGJvb2wgaXNFdmVudExpc3RlbmVyRGlzYWJsZWQoRXZlbnRUYXJnZXQmLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVy
ZSk7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0
Y2hFdmVudChEb2N1bWVudCYsIGNvbnN0IEV2ZW50JiwgYm9vbCBoYXNFdmVudExpc3RlbmVycyk7
CkBAIC0zMzAsNyArMzMwLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgd2lsbENhbGxGdW5jdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDYWxsRnVuY3Rpb25JbXBsKGNvbnN0
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRBZGRFdmVudExpc3RlbmVySW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiwgRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7Cisg
ICAgc3RhdGljIHZvaWQgZGlkQWRkRXZlbnRMaXN0ZW5lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdyYXBw
ZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCk7CiAgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZUV2ZW50
TGlzdGVuZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCBjYXB0dXJlKTsKICAg
ICBzdGF0aWMgYm9vbCBpc0V2ZW50TGlzdGVuZXJEaXNhYmxlZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBE
b2N1bWVudCYsIGNvbnN0IEV2ZW50JiwgYm9vbCBoYXNFdmVudExpc3RlbmVycyk7CkBAIC02ODMs
MTEgKzY4MywxMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
bW92ZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbgogICAgICAgICBkaWRSZW1vdmVU
aW1lckltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVySWQsIGNvbnRleHQpOwogfQogCi1p
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEFkZEV2ZW50TGlzdGVuZXIo
RXZlbnRUYXJnZXQmIHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEFkZEV2ZW50TGlzdGVuZXIoRXZl
bnRUYXJnZXQmIHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdyYXBw
ZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVO
RFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KHRhcmdldC5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpKQotICAgICAgICBkaWRBZGRFdmVudExpc3RlbmVySW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cywgdGFyZ2V0LCBldmVudFR5cGUpOworICAgICAgICBkaWRBZGRFdmVudExpc3Rl
bmVySW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgdGFyZ2V0LCBldmVudFR5cGUsIGlzb2xhdGVk
V29ybGQpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxS
ZW1vdmVFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVi
dWdnZXJBZ2VudC5jcHAKaW5kZXggMjljZGRhMjllZTRjMGQ0ZjljYjA3YTQwODVkMmIxYWRkNTZi
NjI4ZS4uYzdmNzY2MWEyY2M2MGQyMDg4MDYyNzUwNjEwNzVjMThiZjNiNDk0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVn
Z2VyQWdlbnQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUGFnZURlYnVnZ2VyQWdl
bnQuaCIKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCisjaW5jbHVkZSAiRE9NV3JhcHBl
cldvcmxkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVy
LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKQEAgLTE2NCwxMyArMTY1LDEyIEBAIHZvaWQg
UGFnZURlYnVnZ2VyQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZCgpCiAgICAgc2V0U3VwcHJlc3NB
bGxQYXVzZXMoZmFsc2UpOwogfQogCi12b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpkaWRBZGRFdmVu
dExpc3RlbmVyKEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlKQordm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlkQWRkRXZlbnRMaXN0ZW5lcihFdmVudFRh
cmdldCYgdGFyZ2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV3JhcHBlcldv
cmxkKiBpc29sYXRlZFdvcmxkKQogewogICAgIGlmICghYnJlYWtwb2ludHNBY3RpdmUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgZXZlbnRMaXN0ZW5lcnMgPSB0YXJnZXQuZXZlbnRM
aXN0ZW5lcnMoZXZlbnRUeXBlKTsKLSAgICBjb25zdCBSZWZQdHI8UmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXI+JiBsaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXJzLmxhc3QoKTsKKyAgICBjb25zdCBhdXRv
JiBsaXN0ZW5lciA9IGlzb2xhdGVkV29ybGQgPyB0YXJnZXQuYXR0cmlidXRlUmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCAqaXNvbGF0ZWRXb3JsZCkgOiB0YXJnZXQuZXZlbnRMaXN0
ZW5lcnMoZXZlbnRUeXBlKS5sYXN0KCk7CiAgICAgaWYgKG1fcmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXJzLmNvbnRhaW5zKGxpc3RlbmVyLmdldCgpKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaAppbmRleCBkMmI4Yjg5YTRhZmMy
MzkxNzdmOGEzYWY4NmE5ZDliZGM2YTg4MmYwLi4yZGQxN2FhMGU0NTRkOTI0ZWZiYmIxZWYyNzYw
YmJhY2M3NWIzMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKGludCBjYWxsYmFja0lkKTsKICAgICB2
b2lkIGRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKGludCBjYWxsYmFja0lkKTsKIAotICAgIHZvaWQg
ZGlkQWRkRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlKTsKKyAgICB2b2lkIGRpZEFkZEV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmLCBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxk
KTsKICAgICB2b2lkIHdpbGxSZW1vdmVFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwog
ICAgIHZvaWQgd2lsbEhhbmRsZUV2ZW50KGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJik7
CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>