<?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>209560</bug_id>
          
          <creation_ts>2020-03-25 13:43:29 -0700</creation_ts>
          <short_desc>[ Mac wk1] ASSERTION FAILED: m_wrapper under WebCore::XMLHttpRequestUpload::dispatchProgressEvent</short_desc>
          <delta_ts>2020-03-26 14:33:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>macOS 10.15</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="Jason Lawrence">Lawrence.j</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1634034</commentid>
    <comment_count>0</comment_count>
    <who name="Jason Lawrence">Lawrence.j</who>
    <bug_when>2020-03-25 13:43:29 -0700</bug_when>
    <thetext>imported/w3c/web-platform-tests/xhr/send-response-upload-event-progress.htm 

Description:
This test is flaky failing and crashing on Mac wk1. The first failure is apparent on 03/12/2020.

History:
https://results.webkit.org/?suite=layout-tests&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fxhr%2Fsend-response-upload-event-progress.htm&amp;flavor=wk1&amp;limit=50000

Diff:
--- /Volumes/Data/slave/catalina-release-tests-wk1/build/layout-test-results/imported/w3c/web-platform-tests/xhr/send-response-upload-event-progress-expected.txt
+++ /Volumes/Data/slave/catalina-release-tests-wk1/build/layout-test-results/imported/w3c/web-platform-tests/xhr/send-response-upload-event-progress-actual.txt
@@ -1,3 +1,5 @@
 
-PASS XMLHttpRequest: The send() method: Fire a progress event named progress on the XMLHttpRequestUpload (synchronous flag is unset) 
+Harness Error (TIMEOUT), message = null
 
+TIMEOUT XMLHttpRequest: The send() method: Fire a progress event named progress on the XMLHttpRequestUpload (synchronous flag is unset) Test timed out
+


Stderr:
stderr:
ASSERTION FAILED: m_wrapper
./bindings/js/JSEventListener.h(123) : JSC::JSObject *WebCore::JSEventListener::jsFunction(WebCore::ScriptExecutionContext &amp;) const
1   0x10e1ec779 WTFCrash
2   0x124aafefb WTFCrashWithInfo(int, char const*, char const*, int)
3   0x126de73c8 WebCore::JSEventListener::jsFunction(WebCore::ScriptExecutionContext&amp;) const
4   0x126de66eb WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext&amp;, WebCore::Event&amp;)
5   0x1274a1cac WebCore::EventTarget::innerInvokeEventListeners(WebCore::Event&amp;, WTF::Vector&lt;WTF::RefPtr&lt;WebCore::RegisteredEventListener, WTF::DumbPtrTraits&lt;WebCore::RegisteredEventListener&gt; &gt;, 1ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;, WebCore::EventTarget::EventInvokePhase)
6   0x12749dee2 WebCore::EventTarget::fireEventListeners(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase)
7   0x1274a186d WebCore::EventTarget::dispatchEvent(WebCore::Event&amp;)
8   0x12944d468 WebCore::XMLHttpRequestUpload::dispatchProgressEvent(WTF::AtomString const&amp;, unsigned long long, unsigned long long)
9   0x12944ee9f WebCore::XMLHttpRequest::didSendData(unsigned long long, unsigned long long)
10  0x127edfc76 WebCore::DocumentThreadableLoader::dataSent(WebCore::CachedResource&amp;, unsigned long long, unsigned long long)
11  0x12804e3e3 WebCore::CachedRawResource::didSendData(unsigned long long, unsigned long long)
12  0x127fd00d1 WebCore::SubresourceLoader::didSendData(unsigned long long, unsigned long long)
13  0x127fb1568 WebCore::ResourceLoader::didSendData(WebCore::ResourceHandle*, unsigned long long, unsigned long long)
14  0x12953bd65 -[WebCoreResourceHandleAsOperationQueueDelegate connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:]::$_6::operator()()
15  0x12953bc39 WTF::Detail::CallableWrapper&lt;-[WebCoreResourceHandleAsOperationQueueDelegate connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:]::$_6, void&gt;::call()
16  0x10e216a4a WTF::Function&lt;void ()&gt;::operator()() const
17  0x10e25597b WTF::dispatchFunctionsFromMainThread()
18  0x10e258f31 WTF::timerFired(__CFRunLoopTimer*, void*)
19  0x7fff3b60f804 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
20  0x7fff3b60f3be __CFRunLoopDoTimer
21  0x7fff3b60ee9e __CFRunLoopDoTimers
22  0x7fff3b5f3aed __CFRunLoopRun
23  0x7fff3b5f2bd3 CFRunLoopRunSpecific
24  0x10cad769d runTest(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)
25  0x10cad68aa runTestingServerLoop()
26  0x10cad5fe3 dumpRenderTree(int, char const**)
27  0x10cad809d DumpRenderTreeMain(int, char const**)
28  0x10cb66b12 main
29  0x7fff72c987fd start</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634035</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-25 13:43:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/60887773&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634036</commentid>
    <comment_count>2</comment_count>
    <who name="Jason Lawrence">Lawrence.j</who>
    <bug_when>2020-03-25 13:49:54 -0700</bug_when>
    <thetext>I have marked this test as failing and crashing while this issue is investigated.
https://trac.webkit.org/changeset/259007/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634037</commentid>
    <comment_count>3</comment_count>
    <who name="Jason Lawrence">Lawrence.j</who>
    <bug_when>2020-03-25 13:53:37 -0700</bug_when>
    <thetext>I was able to reproduce the failure with the command below.
run-webkit-tests --iterations 2000 --exit-after-n-failures 1 --exit-after-n-crashes-or-timeouts 1 --debug-rwt-logging --no-retry --force --no-build -f -1 imported/w3c/web-platform-tests/xhr/send-response-upload-event-progress.htm&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634418</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-26 10:45:20 -0700</bug_when>
    <thetext>(In reply to Jason Lawrence from comment #3)
&gt; I was able to reproduce the failure with the command below.
&gt; run-webkit-tests --iterations 2000 --exit-after-n-failures 1
&gt; --exit-after-n-crashes-or-timeouts 1 --debug-rwt-logging --no-retry --force
&gt; --no-build -f -1
&gt; imported/w3c/web-platform-tests/xhr/send-response-upload-event-progress.htm&apos;

This seems to reproduce a flaky timeout for me but not a crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634421</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-26 10:48:31 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; (In reply to Jason Lawrence from comment #3)
&gt; &gt; I was able to reproduce the failure with the command below.
&gt; &gt; run-webkit-tests --iterations 2000 --exit-after-n-failures 1
&gt; &gt; --exit-after-n-crashes-or-timeouts 1 --debug-rwt-logging --no-retry --force
&gt; &gt; --no-build -f -1
&gt; &gt; imported/w3c/web-platform-tests/xhr/send-response-upload-event-progress.htm&apos;
&gt; 
&gt; This seems to reproduce a flaky timeout for me but not a crash.

Crash might have been fixed by http://trac.webkit.org/r259009 or http://trac.webkit.org/r258959.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634446</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-26 11:26:25 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; (In reply to Jason Lawrence from comment #3)
&gt; &gt; &gt; I was able to reproduce the failure with the command below.
&gt; &gt; &gt; run-webkit-tests --iterations 2000 --exit-after-n-failures 1
&gt; &gt; &gt; --exit-after-n-crashes-or-timeouts 1 --debug-rwt-logging --no-retry --force
&gt; &gt; &gt; --no-build -f -1
&gt; &gt; &gt; imported/w3c/web-platform-tests/xhr/send-response-upload-event-progress.htm&apos;
&gt; &gt; 
&gt; &gt; This seems to reproduce a flaky timeout for me but not a crash.
&gt; 
&gt; Crash might have been fixed by http://trac.webkit.org/r259009 or
&gt; http://trac.webkit.org/r258959.

Not fixed, I can now reproduce the crash with aggressive GC on:
run-webkit-tests --iterations 200 --no-retry --force --no-build -f -1 imported/w3c/web-platform-tests/xhr/send-response-upload-event-progress.htm --additional-env-var=JSC_slowPathAllocsBetweenGCs=10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634450</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-26 11:29:44 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; &gt; (In reply to Jason Lawrence from comment #3)
&gt; &gt; &gt; &gt; I was able to reproduce the failure with the command below.
&gt; &gt; &gt; &gt; run-webkit-tests --iterations 2000 --exit-after-n-failures 1
&gt; &gt; &gt; &gt; --exit-after-n-crashes-or-timeouts 1 --debug-rwt-logging --no-retry --force
&gt; &gt; &gt; &gt; --no-build -f -1
&gt; &gt; &gt; &gt; imported/w3c/web-platform-tests/xhr/send-response-upload-event-progress.htm&apos;
&gt; &gt; &gt; 
&gt; &gt; &gt; This seems to reproduce a flaky timeout for me but not a crash.
&gt; &gt; 
&gt; &gt; Crash might have been fixed by http://trac.webkit.org/r259009 or
&gt; &gt; http://trac.webkit.org/r258959.
&gt; 
&gt; Not fixed, I can now reproduce the crash with aggressive GC on:
&gt; run-webkit-tests --iterations 200 --no-retry --force --no-build -f -1
&gt; imported/w3c/web-platform-tests/xhr/send-response-upload-event-progress.htm
&gt; --additional-env-var=JSC_slowPathAllocsBetweenGCs=10

It reproduces on WebKit2 as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634456</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-26 11:35:56 -0700</bug_when>
    <thetext>This seems to indicate that the JS wrapper for the XMLHttpRequestUpload object has been collected by the time we try and dispatch the JS event.

Normally, the XMLHttpRequestUpload wrapper is kept alive by the XMLHttpRequest wrapper via this visit method:

void JSXMLHttpRequest::visitAdditionalChildren(SlotVisitor&amp; visitor)
{
    if (auto* upload = wrapped().optionalUpload())
        visitor.addOpaqueRoot(upload);

    if (auto* responseDocument = wrapped().optionalResponseXML())
        visitor.addOpaqueRoot(responseDocument);
}

and this generated isReachable code for JSXMLHttpRequestUpload:
bool JSXMLHttpRequestUploadOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt; handle, void*, SlotVisitor&amp; visitor, const char** reason)
{
    auto* jsXMLHttpRequestUpload = jsCast&lt;JSXMLHttpRequestUpload*&gt;(handle.slot()-&gt;asCell());
    if (jsXMLHttpRequestUpload-&gt;wrapped().isFiringEventListeners()) {
        if (UNLIKELY(reason))
            *reason = &quot;EventTarget firing event listeners&quot;;
        return true;
    }
    XMLHttpRequestUpload* root = &amp;jsXMLHttpRequestUpload-&gt;wrapped();
    if (UNLIKELY(reason))
        *reason = &quot;Reachable from XMLHttpRequestUpload&quot;;
    return visitor.containsOpaqueRoot(root);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634469</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-26 11:49:59 -0700</bug_when>
    <thetext>The generated bindings code for the upload.onprogress setter looks reasonable:

static inline bool setJSXMLHttpRequestEventTargetOnprogressSetter(JSGlobalObject&amp; lexicalGlobalObject, JSXMLHttpRequestEventTarget&amp; thisObject, JSValue value, ThrowScope&amp; throwScope)
{
    UNUSED_PARAM(lexicalGlobalObject);
    UNUSED_PARAM(throwScope);
    setEventHandlerAttribute(lexicalGlobalObject, thisObject, thisObject.wrapped(), eventNames().progressEvent, value);

    VM&amp; vm = JSC::getVM(&amp;lexicalGlobalObject);
    vm.heap.writeBarrier(&amp;thisObject, value);
    ensureStillAliveHere(value);

    return true;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634478</commentid>
    <comment_count>10</comment_count>
      <attachid>394636</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-26 12:12:39 -0700</bug_when>
    <thetext>Created attachment 394636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634517</commentid>
    <comment_count>11</comment_count>
      <attachid>394636</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-03-26 13:15:43 -0700</bug_when>
    <thetext>Comment on attachment 394636
Patch

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

r=me

&gt; Source/WebCore/ChangeLog:10
&gt; +        have any relevant event listeners. However, the XMLHttpRequestUpload&apos;s wrapper lifetime is tried

tied

&gt; Source/WebCore/ChangeLog:13
&gt; +        relevant listener, even though XMLHttpRequestUpload may have a relevant event listeners. We would

listener

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:1188
&gt;      switch (readyState()) {

Does the readyState change to DONE before or after we fire event listeners? (It might be a problem if the answer is &apos;before&apos;.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634521</commentid>
    <comment_count>12</comment_count>
      <attachid>394636</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-03-26 13:16:33 -0700</bug_when>
    <thetext>Comment on attachment 394636
Patch

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

&gt; LayoutTests/http/wpt/xhr/send-response-upload-event-progress-agressive-gc.htm:1
&gt; +&lt;!DOCTYPE html&gt;&lt;!-- webkit-test-runner [ jscOptions=--slowPathAllocsBetweenGCs=10 ] --&gt;

Are wpt tests supposed to be upstreamed? This one obviously can&apos;t.

I remain very skeptical about adding copies of tests with slowPathAllocsBetweenGCs. That&apos;s a high cost for catching issues that we would catch anyway post-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634527</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-26 13:20:10 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #12)
&gt; Comment on attachment 394636 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=394636&amp;action=review
&gt; 
&gt; &gt; LayoutTests/http/wpt/xhr/send-response-upload-event-progress-agressive-gc.htm:1
&gt; &gt; +&lt;!DOCTYPE html&gt;&lt;!-- webkit-test-runner [ jscOptions=--slowPathAllocsBetweenGCs=10 ] --&gt;
&gt; 
&gt; Are wpt tests supposed to be upstreamed? This one obviously can&apos;t.
&gt; 
&gt; I remain very skeptical about adding copies of tests with
&gt; slowPathAllocsBetweenGCs. That&apos;s a high cost for catching issues that we
&gt; would catch anyway post-commit.

Ok, I can drop the slowPathAllocsBetweenGCs test. I think Saam was the one who suggested I add such test in a previous review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634531</commentid>
    <comment_count>14</comment_count>
      <attachid>394652</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-26 13:24:03 -0700</bug_when>
    <thetext>Created attachment 394652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634571</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-26 14:33:38 -0700</bug_when>
    <thetext>Committed r259080: &lt;https://trac.webkit.org/changeset/259080&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394652.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394636</attachid>
            <date>2020-03-26 12:12:39 -0700</date>
            <delta_ts>2020-03-26 13:24:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209560-20200326121239.patch</filename>
            <type>text/plain</type>
            <size>8119</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjgwNWE1MWFmZTFkMGQw
Y2RhZmU1Yjg4MjE0ZWJiOWVjNTJkMTNjZC4uMGYwMmNkOWU0NDkyZTBkMWEwZmNmOGFhNzUyMjQ4
ODg2YjUwMGY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAzLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgWyBNYWMgd2sxXSBBU1NFUlRJ
T04gRkFJTEVEOiBtX3dyYXBwZXIgdW5kZXIgV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RVcGxvYWQ6
OmRpc3BhdGNoUHJvZ3Jlc3NFdmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA5NTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDg4Nzc3Mz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBYTUxIdHRw
UmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgd2FzIHJldHVybmluZyBmYWxzZSBpZiB0aGUg
WE1MSHR0cFJlcXVlc3Qgb2JqZWN0IGRpZCBub3QKKyAgICAgICAgaGF2ZSBhbnkgcmVsZXZhbnQg
ZXZlbnQgbGlzdGVuZXJzLiBIb3dldmVyLCB0aGUgWE1MSHR0cFJlcXVlc3RVcGxvYWQncyB3cmFw
cGVyIGxpZmV0aW1lIGlzIHRyaWVkCisgICAgICAgIHRvIHRoZSBsaWZldGltZSBvZiBpdHMgWE1M
SHR0cFJlcXVlc3Qgd3JhcHBlci4gQXMgYSByZXN1bHQsIGJvdGggdGhlIFhNTEh0dHBSZXF1ZXN0
IGFuZAorICAgICAgICBYTUxIdHRwUmVxdWVzdFVwbG9hZCB3cmFwcGVycyBjb3VsZCBnZXQgZ2Fy
YmFnZSBjb2xsZWN0ZWQgaWYgdGhlIFhNTEh0dHBSZXF1ZXN0IGRpZCBub3QgaGF2ZSBhCisgICAg
ICAgIHJlbGV2YW50IGxpc3RlbmVyLCBldmVuIHRob3VnaCBYTUxIdHRwUmVxdWVzdFVwbG9hZCBt
YXkgaGF2ZSBhIHJlbGV2YW50IGV2ZW50IGxpc3RlbmVycy4gV2Ugd291bGQKKyAgICAgICAgdGhl
biBoaXQgdGhlIGFzc2VydGlvbiB3aGVuIHRyeWluZyB0byBmaXJlIGFuIGV2ZW50IG9uIHRoaXMg
WE1MSHR0cFJlcXVlc3RVcGxvYWQgb2JqZWN0LgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIGlz
c3VlLCB3ZSB1cGRhdGUgWE1MSHR0cFJlcXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIHRvIHJl
dHVybiBmYWxzZSBpZiBib3RoCisgICAgICAgIFhNTEh0dHBSZXF1ZXN0IEFORCBYTUxIdHRwUmVx
dWVzdFVwbG9hZCBoYXZlIG5vIHJlbGV2YW50IGV2ZW50IGxpc3RlbmVycy4KKworICAgICAgICBU
ZXN0OiBodHRwL3dwdC94aHIvc2VuZC1yZXNwb25zZS11cGxvYWQtZXZlbnQtcHJvZ3Jlc3MtYWdy
ZXNzaXZlLWdjLmh0bQorCisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdFVwbG9hZDo6ZXZlbnRMaXN0ZW5lcnNEaWRDaGFuZ2UpOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oOgorCiAyMDIwLTAzLTI2ICBSb2IgQnVpcyAg
PHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgVGFrZSBpbnRvIGFjY291bnQgcmVmZXJyZXIt
cG9saWN5IGluIGFwcGVuZCBPcmlnaW4gaGVhZGVyIGFsZ29yaXRobQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMjNjNDMzMmVhMTI5YjdiZDE4OWNkY2NmM2FmYzhhNjE0
ZTcyYzJmNi4uMmIyZjdkOTNhNzc5MWNjMmUyODY1ZWUzMzhiZWU1YzU0ZTZiYzc5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMTgyLDcgKzExODIsNyBAQCBib29s
IFhNTEh0dHBSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogICAgIGlmIChBY3Rp
dmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGlmICghbV9oYXNSZWxldmFudEV2ZW50TGlzdGVuZXIpCisgICAgaWYgKCFtX2hhc1Jl
bGV2YW50RXZlbnRMaXN0ZW5lciAmJiAhKG1fdXBsb2FkICYmIG1fdXBsb2FkLT5oYXNSZWxldmFu
dEV2ZW50TGlzdGVuZXIoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAo
cmVhZHlTdGF0ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3RVcGxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2Fk
LmNwcAppbmRleCA5MjlhMzRjYjc2ZTAwY2I1MTMwYTFmMThhZTI0OTIxNTEzMzFiZTcxLi5iODUx
MmJjNzdlOTM0NjZlZDAxMjgzMDJiNzRlYmQyM2IyMzhkMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5jcHAKQEAgLTQxLDYgKzQxLDE3IEBAIFhNTEh0dHBS
ZXF1ZXN0VXBsb2FkOjpYTUxIdHRwUmVxdWVzdFVwbG9hZChYTUxIdHRwUmVxdWVzdCYgcmVxdWVz
dCkKIHsKIH0KIAordm9pZCBYTUxIdHRwUmVxdWVzdFVwbG9hZDo6ZXZlbnRMaXN0ZW5lcnNEaWRD
aGFuZ2UoKQoreworICAgIG1faGFzUmVsZXZhbnRFdmVudExpc3RlbmVyID0gaGFzRXZlbnRMaXN0
ZW5lcnMoZXZlbnROYW1lcygpLmFib3J0RXZlbnQpCisgICAgICAgIHx8IGhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KQorICAgICAgICB8fCBoYXNFdmVudExpc3RlbmVy
cyhldmVudE5hbWVzKCkubG9hZEV2ZW50KQorICAgICAgICB8fCBoYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkubG9hZGVuZEV2ZW50KQorICAgICAgICB8fCBoYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkubG9hZHN0YXJ0RXZlbnQpCisgICAgICAgIHx8IGhhc0V2ZW50TGlzdGVuZXJz
KGV2ZW50TmFtZXMoKS5wcm9ncmVzc0V2ZW50KQorICAgICAgICB8fCBoYXNFdmVudExpc3RlbmVy
cyhldmVudE5hbWVzKCkudGltZW91dEV2ZW50KTsKK30KKwogdm9pZCBYTUxIdHRwUmVxdWVzdFVw
bG9hZDo6ZGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIHVuc2ln
bmVkIGxvbmcgbG9uZyBsb2FkZWQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbCkKIHsKICAgICBB
U1NFUlQodHlwZSA9PSBldmVudE5hbWVzKCkubG9hZHN0YXJ0RXZlbnQgfHwgdHlwZSA9PSBldmVu
dE5hbWVzKCkucHJvZ3Jlc3NFdmVudCB8fCB0eXBlID09IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQg
fHwgdHlwZSA9PSBldmVudE5hbWVzKCkubG9hZGVuZEV2ZW50IHx8IHR5cGUgPT0gZXZlbnROYW1l
cygpLmFib3J0RXZlbnQgfHwgdHlwZSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCB8fCB0eXBl
ID09IGV2ZW50TmFtZXMoKS50aW1lb3V0RXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3RVcGxvYWQuaAppbmRleCBkMDk5ZDJiYTJiNDRhMTFjYTZlNDhiZjI5Mjg3ZTkxOTk4
NzllZGM3Li43YjJiOTM5Y2YxZTE3MWI4MmU2YmM3ZDM3MWIyYWY4OTlmYzQxYjYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaApAQCAtNDAsNyArNDAsMTEgQEAg
cHVibGljOgogCiAgICAgdm9pZCBkaXNwYXRjaFByb2dyZXNzRXZlbnQoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSwgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRlZCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsKTsKIAorICAgIGJvb2wgaGFzUmVsZXZhbnRFdmVudExpc3RlbmVyKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNSZWxldmFudEV2ZW50TGlzdGVuZXI7IH0KKwogcHJpdmF0ZToKKyAgICAvLyBFdmVu
dFRhcmdldC4KKyAgICB2b2lkIGV2ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCkgZmluYWw7CiAgICAg
dm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIApAQCAtNDgsNiArNTIsNyBAQCBwcml2YXRl
OgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3JlcXVlc3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9
CiAKICAgICBYTUxIdHRwUmVxdWVzdCYgbV9yZXF1ZXN0OworICAgIGJvb2wgbV9oYXNSZWxldmFu
dEV2ZW50TGlzdGVuZXIgeyBmYWxzZSB9OwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBmODM3MmFiMWRjNTgxM2U2M2VkMWZiZWZkNjdjOTA2MjMwOTM3YjdmLi5iYTRl
ZjUxMDM5NTczYTZjMzA2NTkwNDVhMDQ5NDEzYTI4OWFjY2I3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMjAtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBbIE1hYyB3azFdIEFTU0VSVElPTiBGQUlMRUQ6IG1fd3JhcHBlciB1bmRlciBXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdFVwbG9hZDo6ZGlzcGF0Y2hQcm9ncmVzc0V2ZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk1NjAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzYwODg3NzczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIGh0dHAv
d3B0L3hoci9zZW5kLXJlc3BvbnNlLXVwbG9hZC1ldmVudC1wcm9ncmVzcy1hZ3Jlc3NpdmUtZ2Mt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC94aHIvc2VuZC1yZXNwb25z
ZS11cGxvYWQtZXZlbnQtcHJvZ3Jlc3MtYWdyZXNzaXZlLWdjLmh0bTogQWRkZWQuCisKIDIwMjAt
MDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCBtYWtlIEdDIGEgYml0IGxlc3MgYWdncmVzc2l2ZSBvbiB0ZXN0IHRvIGRlY3JlYXNlIHJ1
bnRpbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC94aHIvc2VuZC1yZXNwb25z
ZS11cGxvYWQtZXZlbnQtcHJvZ3Jlc3MtYWdyZXNzaXZlLWdjLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3hoci9zZW5kLXJlc3BvbnNlLXVwbG9hZC1ldmVudC1wcm9ncmVzcy1h
Z3Jlc3NpdmUtZ2MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlNGNjOWI3ODQ2YTZiNjM0YzNl
NmQ0NDU1OTA1YjhiZTlhYjk5N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC94aHIvc2VuZC1yZXNwb25zZS11cGxvYWQtZXZlbnQtcHJvZ3Jlc3MtYWdyZXNzaXZlLWdj
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBYTUxIdHRwUmVxdWVzdDogVGhl
IHNlbmQoKSBtZXRob2Q6IEZpcmUgYSBwcm9ncmVzcyBldmVudCBuYW1lZCBwcm9ncmVzcyBvbiB0
aGUgWE1MSHR0cFJlcXVlc3RVcGxvYWQgKHN5bmNocm9ub3VzIGZsYWcgaXMgdW5zZXQpIAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC94aHIvc2VuZC1yZXNwb25zZS11cGxvYWQt
ZXZlbnQtcHJvZ3Jlc3MtYWdyZXNzaXZlLWdjLmh0bSBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3ho
ci9zZW5kLXJlc3BvbnNlLXVwbG9hZC1ldmVudC1wcm9ncmVzcy1hZ3Jlc3NpdmUtZ2MuaHRtCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZjZWYxYzkwZWQ0OTdjNGQ0NThkNjc2OWQwZWVlOTMyMGEyZTJlMzQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC94aHIvc2VuZC1yZXNwb25zZS11cGxv
YWQtZXZlbnQtcHJvZ3Jlc3MtYWdyZXNzaXZlLWdjLmh0bQpAQCAtMCwwICsxLDM5IEBACis8IURP
Q1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGpzY09wdGlvbnM9LS1zbG93UGF0
aEFsbG9jc0JldHdlZW5HQ3M9MTAgXSAtLT4KKzxodG1sPgorPGhlYWQ+CisgICAgPGxpbmsgcmVs
PSJoZWxwIiBocmVmPSJodHRwczovL3hoci5zcGVjLndoYXR3Zy5vcmcvI2hhbmRsZXIteGhyLW9u
cHJvZ3Jlc3MiIGRhdGEtdGVzdGVkLWFzc2VydGF0aW9ucz0iLi4vLi4iIC8+CisgICAgPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwczovL3hoci5zcGVjLndoYXR3Zy5vcmcvI2V2ZW50LXhoci1w
cm9ncmVzcyIgZGF0YS10ZXN0ZWQtYXNzZXJ0YXRpb25zPSIuLi8uLiIgLz4KKyAgICA8bGluayBy
ZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8veGhyLnNwZWMud2hhdHdnLm9yZy8jdGhlLXNlbmQoKS1t
ZXRob2QiIGRhdGEtdGVzdGVkLWFzc2VydGF0aW9ucz0iZm9sbG93aW5nOjphW2NvbnRhaW5zKEBo
cmVmLCcjbWFrZS11cGxvYWQtcHJvZ3Jlc3Mtbm90aWZpY2F0aW9ucycpXS8uLiBmb2xsb3dpbmc6
Om9sWzFdL2xpWzhdIiAvPgorICAgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly94aHIu
c3BlYy53aGF0d2cub3JnLyNtYWtlLXVwbG9hZC1wcm9ncmVzcy1ub3RpZmljYXRpb25zIiBkYXRh
LXRlc3RlZC1hc3NlcnRhdGlvbnM9ImZvbGxvd2luZzo6dWxbMV0vbGlbMl0vb2xbMV0vbGlbMl0i
IC8+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKyAgICA8dGl0bGU+WE1MSHR0cFJlcXVlc3Q6IFRoZSBzZW5kKCkgbWV0aG9kOiBGaXJl
IGEgcHJvZ3Jlc3MgZXZlbnQgbmFtZWQgcHJvZ3Jlc3Mgb24gdGhlIFhNTEh0dHBSZXF1ZXN0VXBs
b2FkIChzeW5jaHJvbm91cyBmbGFnIGlzIHVuc2V0KTwvdGl0bGU+Cis8L2hlYWQ+CisKKzxib2R5
PgorICAgIDxkaXYgaWQ9ImxvZyI+PC9kaXY+CisKKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CisgICAgICAgIHZhciB0ZXN0ID0gYXN5bmNfdGVzdCgpOworCisgICAgICAgIHRl
c3Quc3RlcChmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB4aHIgPSBuZXcg
WE1MSHR0cFJlcXVlc3QoKTsKKworICAgICAgICAgICAgeGhyLnVwbG9hZC5vbnByb2dyZXNzID0g
ZnVuY3Rpb24oZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVu
Y3Rpb24oKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoZSBpbnN0YW5jZW9mIFByb2dyZXNzRXZlbnQpOworICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGUudHlwZSwgInByb2dyZXNzIik7CisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoZS50YXJnZXQsIHhoci51cGxvYWQpOworICAgICAgICAgICAgICAgICAgICB0ZXN0
LmRvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAg
ICAgIHhoci5vcGVuKCJQT1NUIiwgIi4vcmVzb3VyY2VzL2NvbnRlbnQucHkiLCB0cnVlKTsKKyAg
ICAgICAgICAgIHhoci5zZW5kKCJUZXN0IE1lc3NhZ2UiKTsKKyAgICAgICAgfSk7CisgICAgPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394652</attachid>
            <date>2020-03-26 13:24:03 -0700</date>
            <delta_ts>2020-03-26 14:33:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209560-20200326132402.patch</filename>
            <type>text/plain</type>
            <size>4680</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM2MjMxZDljN2I3ZTRh
YzY4MTQ5ZGM4M2YzYmM2MDUxYzFiMGI2My4uNDExMGNhODI2MmY1NmYwNDdiNTZjNWYwM2U4MGQy
MzViN2NlMWU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAzLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgWyBNYWMgd2sxXSBBU1NFUlRJ
T04gRkFJTEVEOiBtX3dyYXBwZXIgdW5kZXIgV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RVcGxvYWQ6
OmRpc3BhdGNoUHJvZ3Jlc3NFdmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA5NTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDg4Nzc3Mz4K
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBYTUxIdHRw
UmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgd2FzIHJldHVybmluZyBmYWxzZSBpZiB0aGUg
WE1MSHR0cFJlcXVlc3Qgb2JqZWN0IGRpZCBub3QKKyAgICAgICAgaGF2ZSBhbnkgcmVsZXZhbnQg
ZXZlbnQgbGlzdGVuZXJzLiBIb3dldmVyLCB0aGUgWE1MSHR0cFJlcXVlc3RVcGxvYWQncyB3cmFw
cGVyIGxpZmV0aW1lIGlzIHRyaWVkCisgICAgICAgIHRvIHRoZSBsaWZldGltZSBvZiBpdHMgWE1M
SHR0cFJlcXVlc3Qgd3JhcHBlci4gQXMgYSByZXN1bHQsIGJvdGggdGhlIFhNTEh0dHBSZXF1ZXN0
IGFuZAorICAgICAgICBYTUxIdHRwUmVxdWVzdFVwbG9hZCB3cmFwcGVycyBjb3VsZCBnZXQgZ2Fy
YmFnZSBjb2xsZWN0ZWQgaWYgdGhlIFhNTEh0dHBSZXF1ZXN0IGRpZCBub3QgaGF2ZSBhCisgICAg
ICAgIHJlbGV2YW50IGxpc3RlbmVyLCBldmVuIHRob3VnaCBYTUxIdHRwUmVxdWVzdFVwbG9hZCBt
YXkgaGF2ZSBhIHJlbGV2YW50IGV2ZW50IGxpc3RlbmVycy4gV2Ugd291bGQKKyAgICAgICAgdGhl
biBoaXQgdGhlIGFzc2VydGlvbiB3aGVuIHRyeWluZyB0byBmaXJlIGFuIGV2ZW50IG9uIHRoaXMg
WE1MSHR0cFJlcXVlc3RVcGxvYWQgb2JqZWN0LgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIGlz
c3VlLCB3ZSB1cGRhdGUgWE1MSHR0cFJlcXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIHRvIHJl
dHVybiBmYWxzZSBpZiBib3RoCisgICAgICAgIFhNTEh0dHBSZXF1ZXN0IEFORCBYTUxIdHRwUmVx
dWVzdFVwbG9hZCBoYXZlIG5vIHJlbGV2YW50IGV2ZW50IGxpc3RlbmVycy4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94
aHIvc2VuZC1yZXNwb25zZS11cGxvYWQtZXZlbnQtcHJvZ3Jlc3MuaHRtCisKKyAgICAgICAgKiB4
bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0
VXBsb2FkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0VXBsb2FkOjpldmVu
dExpc3RlbmVyc0RpZENoYW5nZSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2Fk
Lmg6CisKIDIwMjAtMDMtMjUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgU2VxdWVudGlhbCBmb2N1cyBuYXZpZ2F0aW9uIGNhbid0IGdldCBvdXQgb2YgYSBkZXNj
ZW5kZW50IG9mIGEgc2xvdCBlbGVtZW50IGluIGEgZG9jdW1lbnQgdHJlZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMjNjNDMzMmVhMTI5YjdiZDE4OWNkY2NmM2FmYzhh
NjE0ZTcyYzJmNi4uMmIyZjdkOTNhNzc5MWNjMmUyODY1ZWUzMzhiZWU1YzU0ZTZiYzc5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMTgyLDcgKzExODIsNyBAQCBi
b29sIFhNTEh0dHBSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogICAgIGlmIChB
Y3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIGlmICghbV9oYXNSZWxldmFudEV2ZW50TGlzdGVuZXIpCisgICAgaWYgKCFtX2hh
c1JlbGV2YW50RXZlbnRMaXN0ZW5lciAmJiAhKG1fdXBsb2FkICYmIG1fdXBsb2FkLT5oYXNSZWxl
dmFudEV2ZW50TGlzdGVuZXIoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRj
aCAocmVhZHlTdGF0ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3RVcGxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBs
b2FkLmNwcAppbmRleCA5MjlhMzRjYjc2ZTAwY2I1MTMwYTFmMThhZTI0OTIxNTEzMzFiZTcxLi5i
ODUxMmJjNzdlOTM0NjZlZDAxMjgzMDJiNzRlYmQyM2IyMzhkMjIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5jcHAKQEAgLTQxLDYgKzQxLDE3IEBAIFhNTEh0
dHBSZXF1ZXN0VXBsb2FkOjpYTUxIdHRwUmVxdWVzdFVwbG9hZChYTUxIdHRwUmVxdWVzdCYgcmVx
dWVzdCkKIHsKIH0KIAordm9pZCBYTUxIdHRwUmVxdWVzdFVwbG9hZDo6ZXZlbnRMaXN0ZW5lcnNE
aWRDaGFuZ2UoKQoreworICAgIG1faGFzUmVsZXZhbnRFdmVudExpc3RlbmVyID0gaGFzRXZlbnRM
aXN0ZW5lcnMoZXZlbnROYW1lcygpLmFib3J0RXZlbnQpCisgICAgICAgIHx8IGhhc0V2ZW50TGlz
dGVuZXJzKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KQorICAgICAgICB8fCBoYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkubG9hZEV2ZW50KQorICAgICAgICB8fCBoYXNFdmVudExpc3RlbmVy
cyhldmVudE5hbWVzKCkubG9hZGVuZEV2ZW50KQorICAgICAgICB8fCBoYXNFdmVudExpc3RlbmVy
cyhldmVudE5hbWVzKCkubG9hZHN0YXJ0RXZlbnQpCisgICAgICAgIHx8IGhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50TmFtZXMoKS5wcm9ncmVzc0V2ZW50KQorICAgICAgICB8fCBoYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkudGltZW91dEV2ZW50KTsKK30KKwogdm9pZCBYTUxIdHRwUmVxdWVz
dFVwbG9hZDo6ZGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIHVu
c2lnbmVkIGxvbmcgbG9uZyBsb2FkZWQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbCkKIHsKICAg
ICBBU1NFUlQodHlwZSA9PSBldmVudE5hbWVzKCkubG9hZHN0YXJ0RXZlbnQgfHwgdHlwZSA9PSBl
dmVudE5hbWVzKCkucHJvZ3Jlc3NFdmVudCB8fCB0eXBlID09IGV2ZW50TmFtZXMoKS5sb2FkRXZl
bnQgfHwgdHlwZSA9PSBldmVudE5hbWVzKCkubG9hZGVuZEV2ZW50IHx8IHR5cGUgPT0gZXZlbnRO
YW1lcygpLmFib3J0RXZlbnQgfHwgdHlwZSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCB8fCB0
eXBlID09IGV2ZW50TmFtZXMoKS50aW1lb3V0RXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3RVcGxvYWQuaAppbmRleCBkMDk5ZDJiYTJiNDRhMTFjYTZlNDhiZjI5Mjg3ZTkx
OTk4NzllZGM3Li43YjJiOTM5Y2YxZTE3MWI4MmU2YmM3ZDM3MWIyYWY4OTlmYzQxYjYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaApAQCAtNDAsNyArNDAsMTEg
QEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNwYXRjaFByb2dyZXNzRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRlZCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsKTsKIAorICAgIGJvb2wgaGFzUmVsZXZhbnRFdmVudExpc3RlbmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNSZWxldmFudEV2ZW50TGlzdGVuZXI7IH0KKwogcHJpdmF0ZToKKyAgICAvLyBF
dmVudFRhcmdldC4KKyAgICB2b2lkIGV2ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCkgZmluYWw7CiAg
ICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVm
RXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIApAQCAtNDgsNiArNTIsNyBAQCBwcml2
YXRlOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlcXVlc3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OyB9CiAKICAgICBYTUxIdHRwUmVxdWVzdCYgbV9yZXF1ZXN0OworICAgIGJvb2wgbV9oYXNSZWxl
dmFudEV2ZW50TGlzdGVuZXIgeyBmYWxzZSB9OwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>