<?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>203882</bug_id>
          
          <creation_ts>2019-11-06 01:02:53 -0800</creation_ts>
          <short_desc>WindowEventLoop should be shared among similar origin documents</short_desc>
          <delta_ts>2019-11-22 04:47:18 -0800</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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=204510</see_also>
          <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>
          
          <blocked>202843</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1587713</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-06 01:02:53 -0800</bug_when>
    <thetext>Share WindowEventLoop amongst similar-origin window events as HTML5 spec says:
https://html.spec.whatwg.org/multipage/webappapis.html#window-event-loop</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587715</commentid>
    <comment_count>1</comment_count>
      <attachid>382902</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-06 01:07:16 -0800</bug_when>
    <thetext>Created attachment 382902
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587996</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-06 16:46:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/56965038&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587997</commentid>
    <comment_count>3</comment_count>
      <attachid>382985</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-06 16:50:25 -0800</bug_when>
    <thetext>Created attachment 382985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588340</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-07 12:07:03 -0800</bug_when>
    <thetext>Ping reviewers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588341</commentid>
    <comment_count>5</comment_count>
      <attachid>382985</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-11-07 12:17:41 -0800</bug_when>
    <thetext>Comment on attachment 382985
Patch

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

&gt; Source/WebCore/dom/WindowEventLoop.cpp:58
&gt; +    ASSERT(windowEventLoopMap().contains(m_domain));

Do we need both this debug assert and the release assert below?

&gt; LayoutTests/http/tests/eventloop/queue-task-across-cross-site-frames.html:22
&gt; +    setTimeout(() =&gt; finishJSTest(), 3000);

I don’t think you meant to include this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588482</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-07 16:30:23 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #5)
&gt; Comment on attachment 382985 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382985&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/WindowEventLoop.cpp:58
&gt; &gt; +    ASSERT(windowEventLoopMap().contains(m_domain));
&gt; 
&gt; Do we need both this debug assert and the release assert below?
&gt; 
&gt; &gt; LayoutTests/http/tests/eventloop/queue-task-across-cross-site-frames.html:22
&gt; &gt; +    setTimeout(() =&gt; finishJSTest(), 3000);
&gt; 
&gt; I don’t think you meant to include this.

Oops these are added for debugging. Removed both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588508</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-07 17:13:21 -0800</bug_when>
    <thetext>Committed r252221: &lt;https://trac.webkit.org/changeset/252221&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382902</attachid>
            <date>2019-11-06 01:07:16 -0800</date>
            <delta_ts>2019-11-06 16:50:24 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wip203882.patch</filename>
            <type>text/plain</type>
            <size>12550</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjUyMTIzKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE4MiwxNCArNjE4
Miw5IEBACiBBYnN0cmFjdEV2ZW50TG9vcCYgRG9jdW1lbnQ6OmV2ZW50TG9vcCgpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoIW1fZXZlbnRMb29wKSB7Ci0gICAgICAg
IGlmIChtX2NvbnRleHREb2N1bWVudCkKLSAgICAgICAgICAgIG1fZXZlbnRMb29wID0gbV9jb250
ZXh0RG9jdW1lbnQtPm1fZXZlbnRMb29wOwotICAgICAgICBlbHNlIC8vIEZJWE1FOiBEb2N1bWVu
dHMgb2Ygc2ltaWxhciBvcmlnaW4gc2hvdWxkIHNoYXJlIHRoZSBzYW1lIGV2ZW50IGxvb3AuCi0g
ICAgICAgICAgICBtX2V2ZW50TG9vcCA9IFdpbmRvd0V2ZW50TG9vcDo6Y3JlYXRlKCk7Ci0gICAg
fQorICAgIGlmIChVTkxJS0VMWSghbV9ldmVudExvb3ApKQorICAgICAgICBtX2V2ZW50TG9vcCA9
IFdpbmRvd0V2ZW50TG9vcDo6ZW5zdXJlRm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVE
b21haW4geyBzZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9KTsKICAgICByZXR1cm4gKm1fZXZlbnRM
b29wOwotCiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnN1c3BlbmRTY2hlZHVsZWRUYXNrcyhSZWFzb25G
b3JTdXNwZW5zaW9uIHJlYXNvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVu
dExvb3AuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExv
b3AuY3BwCShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZl
bnRMb29wLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDM2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPFdpbmRvd0V2ZW50TG9vcD4gV2luZG93RXZlbnRMb29wOjpjcmVh
dGUoKQorc3RhdGljIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdpbmRvd0V2ZW50TG9vcCo+
JiB3aW5kb3dFdmVudExvb3BNYXAoKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdpbmRv
d0V2ZW50TG9vcCk7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBXaW5kb3dFdmVu
dExvb3AqPj4gbWFwOworICAgIHJldHVybiBtYXAuZ2V0KCk7CiB9CiAKK1JlZjxXaW5kb3dFdmVu
dExvb3A+IFdpbmRvd0V2ZW50TG9vcDo6ZW5zdXJlRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IHdpbmRv
d0V2ZW50TG9vcE1hcCgpLmFkZChkb21haW4sIG51bGxwdHIpOworICAgIGlmIChVTkxJS0VMWShh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkpIHsKKyAgICAgICAgYXV0byBuZXdFdmVudExvb3AgPSBhZG9w
dFJlZigqbmV3IFdpbmRvd0V2ZW50TG9vcChkb21haW4pKTsKKyAgICAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IG5ld0V2ZW50TG9vcC5wdHIoKTsKKyAgICAgICAgcmV0dXJuIG5ld0V2
ZW50TG9vcDsKKyAgICB9CisgICAgcmV0dXJuICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwor
fQorCitpbmxpbmUgV2luZG93RXZlbnRMb29wOjpXaW5kb3dFdmVudExvb3AoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbikKKyAgICA6IG1fZG9tYWluKGRvbWFpbikKK3sKK30KKworV2lu
ZG93RXZlbnRMb29wOjp+V2luZG93RXZlbnRMb29wKCkKK3sKKyAgICBBU1NFUlQod2luZG93RXZl
bnRMb29wTWFwKCkuY29udGFpbnMobV9kb21haW4pKTsKKyAgICBhdXRvIGRpZFJlbW92ZSA9IHdp
bmRvd0V2ZW50TG9vcE1hcCgpLnJlbW92ZShtX2RvbWFpbik7CisgICAgUkVMRUFTRV9BU1NFUlQo
ZGlkUmVtb3ZlKTsKK30KKwogdm9pZCBXaW5kb3dFdmVudExvb3A6OnF1ZXVlVGFzayhUYXNrU291
cmNlIHNvdXJjZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVGFza0Z1bmN0aW9u
JiYgdGFzaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9XaW5kb3dFdmVudExvb3AuaAkocmV2aXNpb24gMjUyMTIzKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAKICNpbmNsdWRlICJBYnN0cmFjdEV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50SWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsOCArMzcsMTAgQEAKIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCN3
aW5kb3ctZXZlbnQtbG9vcAogY2xhc3MgV2luZG93RXZlbnRMb29wIGZpbmFsIDogcHVibGljIEFi
c3RyYWN0RXZlbnRMb29wIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdpbmRvd0V2ZW50TG9v
cD4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZjxXaW5kb3dFdmVudExvb3A+IGVuc3VyZUZvclJl
Z2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKKyAgICB+V2luZG93
RXZlbnRMb29wKCk7CisKICAgICB2b2lkIHF1ZXVlVGFzayhUYXNrU291cmNlLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgVGFza0Z1bmN0aW9uJiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdXNw
ZW5kKERvY3VtZW50Jik7CkBAIC00NSw3ICs0OCw3IEBACiAgICAgdm9pZCBzdG9wKERvY3VtZW50
Jik7CiAKIHByaXZhdGU6Ci0gICAgV2luZG93RXZlbnRMb29wKCkgPSBkZWZhdWx0OworICAgIFdp
bmRvd0V2ZW50TG9vcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogCiAgICAgdm9pZCBzY2hl
ZHVsZVRvUnVuSWZOZWVkZWQoKTsKICAgICB2b2lkIHJ1bigpOwpAQCAtNTgsOCArNjEsOSBAQAog
CiAgICAgLy8gVXNlIGEgZ2xvYmFsIHF1ZXVlIGluc3RlYWQgb2YgbXVsdGlwbGUgdGFzayBxdWV1
ZXMgc2luY2UgSFRNTDUgc3BlYyBhbGxvd3MgVUEgdG8gcGljayBhcmJpdHJhcnkgcXVldWUuCiAg
ICAgVmVjdG9yPFRhc2s+IG1fdGFza3M7CisgICAgSGFzaFNldDxEb2N1bWVudElkZW50aWZpZXI+
IG1fZG9jdW1lbnRJZGVudGlmaWVyc0ZvclN1c3BlbmRlZFRhc2tzOworICAgIFJlZ2lzdHJhYmxl
RG9tYWluIG1fZG9tYWluOwogICAgIGJvb2wgbV9pc1NjaGVkdWxlZFRvUnVuIHsgZmFsc2UgfTsK
LSAgICBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4gbV9kb2N1bWVudElkZW50aWZpZXJzRm9y
U3VzcGVuZGVkVGFza3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NzUsNiAr
NDY3NSwyMSBAQAogICAgIH0pOwogfQogCitFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnF1
ZXVlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRh
c2tTb3VyY2VOYW1lLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQoreworICAgIFRh
c2tTb3VyY2Ugc291cmNlOworICAgIGlmICh0YXNrU291cmNlTmFtZSA9PSAiRE9NTWFuaXB1bGF0
aW9uIikKKyAgICAgICAgc291cmNlID0gVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisK
KyAgICBjb250ZXh0LmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhzb3VyY2UsIGNvbnRleHQsIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIHsKKyAgICAgICAgY2FsbGJhY2stPmhhbmRsZUV2
ZW50KCk7CisgICAgfSk7CisKKyAgICByZXR1cm4geyB9OworfQorCiBWZWN0b3I8U3RyaW5nPiBJ
bnRlcm5hbHM6OmFjY2Vzc0tleU1vZGlmaWVycygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gYWNjZXNzS2V5TW9kaWZpZXJTdHJpbmdzOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NzYsNiArNzc2LDcgQEAKICAgICBib29sIGlzU3lz
dGVtUHJldmlld0ltYWdlKEVsZW1lbnQmKSBjb25zdDsKIAogICAgIHZvaWQgcG9zdFRhc2soUmVm
UHRyPFZvaWRDYWxsYmFjaz4mJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcXVldWVUYXNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgUmVmUHRyPFZvaWRD
YWxsYmFjaz4mJik7CiAgICAgdm9pZCBtYXJrQ29udGV4dEFzSW5zZWN1cmUoKTsKIAogICAgIGJv
b2wgdXNpbmdBcHBsZUludGVybmFsU0RLKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTc2NSw2ICs3NjUsNyBAQAogICAg
IGJvb2xlYW4gdXNpbmdBcHBsZUludGVybmFsU0RLKCk7CiAKICAgICB2b2lkIHBvc3RUYXNrKFZv
aWRDYWxsYmFjayBjYWxsYmFjayk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHF1ZXVlVGFzayhET01TdHJpbmcgc291cmNlLCBW
b2lkQ2FsbGJhY2sgY2FsbGJhY2spOwogICAgIHZvaWQgbWFya0NvbnRleHRBc0luc2VjdXJlKCk7
CiAKICAgICB2b2lkIHNldE1heENhbnZhc1BpeGVsTWVtb3J5KHVuc2lnbmVkIGxvbmcgc2l6ZSk7
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50bG9vcC9xdWV1ZS10YXNrLWFjcm9z
cy1jcm9zcy1zaXRlLWZyYW1lcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9ldmVudGxvb3AvcXVldWUtdGFzay1hY3Jvc3MtY3Jvc3Mtc2l0ZS1mcmFt
ZXMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
ZXZlbnRsb29wL3F1ZXVlLXRhc2stYWNyb3NzLWNyb3NzLXNpdGUtZnJhbWVzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitUaGlzIHRlc3RzIHRoZSBvcmRlciBi
eSB3aGljaCB0YXNrcyBhcmUgc2NoZWR1bGVkIGFjcm9zcyBkb2N1bWVudHMgdGhhdCBhcmUgbm90
IHNpbWlsYXIgb3JpZ2lucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
bG9ncy5qb2luKCIsICIpIGlzICIxLCAyLCAzLCA0LCA1IgorUEFTUyBjcm9zc09yaWdpbkxvZ3Mu
am9pbigiLCAiKSBpcyAiMTAsIDExLCAxMiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50
bG9vcC9xdWV1ZS10YXNrLWFjcm9zcy1jcm9zcy1zaXRlLWZyYW1lcy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRsb29wL3F1ZXVlLXRhc2stYWNyb3NzLWNy
b3NzLXNpdGUtZnJhbWVzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9ldmVudGxvb3AvcXVldWUtdGFzay1hY3Jvc3MtY3Jvc3Mtc2l0ZS1mcmFtZXMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoZSBvcmRlciBieSB3aGlj
aCB0YXNrcyBhcmUgc2NoZWR1bGVkIGFjcm9zcyBkb2N1bWVudHMgdGhhdCBhcmUgbm90IHNpbWls
YXIgb3JpZ2lucy4nKTsKKworaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgIHRlc3RGYWlsZWQo
J1RoaXMgdGVzdCByZWxpZXMgb24gd2luZG93LmludGVybmFscycpOworZWxzZSB7CisgICAganNU
ZXN0SXNBc3luYyA9IHRydWU7CisgICAgd2luZG93Lm9ubG9hZCA9IHN0YXJ0VGVzdDsKK30KKwor
bG9ncyA9IFtdOworY3Jvc3NPcmlnaW5Mb2dzID0gW107CisKK2FzeW5jIGZ1bmN0aW9uIHN0YXJ0
VGVzdCgpCit7CisKKyAgICBzZXRUaW1lb3V0KCgpID0+IGZpbmlzaEpTVGVzdCgpLCAzMDAwKTsK
KworICAgIGNvbnN0IGZyYW1lMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUxKTsKKworICAgIGNvbnN0IGZyYW1l
MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgIGZyYW1lMi5uYW1lID0g
J2ZyYW1lMic7CisgICAgZnJhbWUyLnNyYyA9ICdodHRwOi8vbG9jYWxob3N0OjgwMDAvZXZlbnRs
b29wL3Jlc291cmNlcy9ldmVudGxvb3AtaGVscGVyLmh0bWwnOworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZnJhbWUyKTsKKworICAgIGNvbnN0IGZyYW1lMyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgIGZyYW1lMy5zcmMgPSAncmVzb3VyY2VzL2V2ZW50bG9v
cC1oZWxwZXIuaHRtbCc7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFtZTMpOwor
CisgICAgY29uc3QgZnJhbWU0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7Cisg
ICAgZnJhbWU0Lm5hbWUgPSAnZnJhbWU0JzsKKyAgICBmcmFtZTQuc3JjID0gJ2h0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9ldmVudGxvb3AvcmVzb3VyY2VzL2V2ZW50bG9vcC1oZWxwZXIuaHRtbCc7CisK
KyAgICBhd2FpdCB3YWl0Rm9yTG9hZChmcmFtZTMpOworICAgIGZyYW1lMy5jb250ZW50RG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChmcmFtZTQpOworCisgICAgYXdhaXQgd2FpdEZvckxvYWQoZnJh
bWUyKTsKKyAgICBhd2FpdCB3YWl0Rm9yTG9hZChmcmFtZTQpOworCisgICAgZnJhbWUzLmNvbnRl
bnRXaW5kb3cuaW50ZXJuYWxzLnF1ZXVlVGFzaygiRE9NTWFuaXB1bGF0aW9uIiwgKCkgPT4gbG9n
cy5wdXNoKCcxJykpOworICAgIGZyYW1lMy5jb250ZW50V2luZG93LmludGVybmFscy5xdWV1ZVRh
c2soIkRPTU1hbmlwdWxhdGlvbiIsICgpID0+IGxvZ3MucHVzaCgnMicpKTsKKyAgICBpbnRlcm5h
bHMucXVldWVUYXNrKCJET01NYW5pcHVsYXRpb24iLCAoKSA9PiBsb2dzLnB1c2goJzMnKSk7Cisg
ICAgZnJhbWUxLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLnF1ZXVlVGFzaygiRE9NTWFuaXB1bGF0
aW9uIiwgKCkgPT4gbG9ncy5wdXNoKCc0JykpOworICAgIGludGVybmFscy5xdWV1ZVRhc2soIkRP
TU1hbmlwdWxhdGlvbiIsICgpID0+IGxvZ3MucHVzaCgnNScpKTsKKworICAgIGZyYW1lMi5jb250
ZW50V2luZG93LnBvc3RNZXNzYWdlKHsKKyAgICAgICAgdHlwZTogJ3J1bicsCisgICAgICAgIG9y
ZGVyOiBbJ2ZyYW1lMicsICdmcmFtZTInLCAnc2VsZiddLAorICAgICAgICBzdGFydGluZ051bWJl
cjogMTAsCisgICAgfSwgJyonKTsKKworICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2xvZ3Muam9pbigiLCAiKScsICcxLCAyLCAzLCA0LCA1Jyk7
CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY3Jvc3NPcmlnaW5Mb2dzLmpvaW4oIiwg
IiknLCAnMTAsIDExLCAxMicpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAxMDAp
OworfQorCitjb25zdCBsb2FkZWRGcmFtZXMgPSBuZXcgTWFwOworb25tZXNzYWdlID0gKGV2ZW50
KSA9PiB7CisgICAgaWYgKGV2ZW50LmRhdGEudHlwZSA9PSAnbG9hZCcpIHsKKyAgICAgICAgY29u
c3QgcmVzb2x2ZSA9IGxvYWRlZEZyYW1lcy5nZXQoZXZlbnQuc291cmNlKTsKKyAgICAgICAgaWYg
KHJlc29sdmUpCisgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGxvYWRlZEZyYW1lcy5zZXQoZXZlbnQuc291cmNlLCBudWxsKTsKKyAgICB9IGVsc2UgaWYg
KGV2ZW50LmRhdGEudHlwZSA9PSAnbG9ncycpCisgICAgICAgIGNyb3NzT3JpZ2luTG9ncyA9IGV2
ZW50LmRhdGEubG9nczsKK30KKworZnVuY3Rpb24gd2FpdEZvckxvYWQoZnJhbWUpCit7CisgICAg
aWYgKGxvYWRlZEZyYW1lcy5oYXMoZnJhbWUuY29udGVudFdpbmRvdykpCisgICAgICAgIHJldHVy
biBQcm9taXNlLnJlc29sdmUoKTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+
IGxvYWRlZEZyYW1lcy5zZXQoZnJhbWUuY29udGVudFdpbmRvdywgcmVzb2x2ZSkpOworfQorCitz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRsb29wL3F1ZXVlLXRhc2stYWNyb3NzLWZy
YW1lcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9l
dmVudGxvb3AvcXVldWUtdGFzay1hY3Jvc3MtZnJhbWVzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50bG9vcC9xdWV1ZS10YXNrLWFjcm9z
cy1mcmFtZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1Ro
aXMgdGVzdHMgdGhlIG9yZGVyIGJ5IHdoaWNoIHRhc2tzIGFyZSBzY2hlZHVsZWQgYWNyb3NzIGRv
Y3VtZW50cyBvZiBzaW1pbGFyIG9yaWdpbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGxvZ3Muam9pbigiLCAiKSBpcyAiMSwgMiwgMywgNCwgNSwgNiIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2V2ZW50bG9vcC9xdWV1ZS10YXNrLWFjcm9zcy1mcmFtZXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50bG9vcC9xdWV1ZS10YXNr
LWFjcm9zcy1mcmFtZXMuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2V2ZW50bG9vcC9xdWV1ZS10YXNrLWFjcm9zcy1mcmFtZXMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisKK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoZSBvcmRlciBieSB3aGljaCB0YXNrcyBhcmUg
c2NoZWR1bGVkIGFjcm9zcyBkb2N1bWVudHMgb2Ygc2ltaWxhciBvcmlnaW5zLicpOworCitpZiAo
IXdpbmRvdy5pbnRlcm5hbHMpCisgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlbGllcyBvbiB3
aW5kb3cuaW50ZXJuYWxzJyk7CitlbHNlIHsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAg
ICBsb2dzID0gW107CisKKyAgICBmcmFtZTEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJh
bWUnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lMSk7CisKKyAgICBmcmFt
ZTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICBmcmFtZTIuc3JjID0g
J3Jlc291cmNlcy9ldmVudGxvb3AtaGVscGVyLmh0bWwnOworICAgIGZyYW1lMi5hZGRFdmVudExp
c3RlbmVyKCdsb2FkJywgcnVuVGVzdCk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChm
cmFtZTIpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGludGVybmFscy5xdWV1ZVRh
c2soIkRPTU1hbmlwdWxhdGlvbiIsICgpID0+IGxvZ3MucHVzaCgnMScpKTsKKyAgICBmcmFtZTEu
Y29udGVudFdpbmRvdy5pbnRlcm5hbHMucXVldWVUYXNrKCJET01NYW5pcHVsYXRpb24iLCAoKSA9
PiBsb2dzLnB1c2goJzInKSk7CisgICAgaW50ZXJuYWxzLnF1ZXVlVGFzaygiRE9NTWFuaXB1bGF0
aW9uIiwgKCkgPT4gbG9ncy5wdXNoKCczJykpOworICAgIGZyYW1lMi5jb250ZW50V2luZG93Lmlu
dGVybmFscy5xdWV1ZVRhc2soIkRPTU1hbmlwdWxhdGlvbiIsICgpID0+IGxvZ3MucHVzaCgnNCcp
KTsKKyAgICBmcmFtZTEuY29udGVudFdpbmRvdy5pbnRlcm5hbHMucXVldWVUYXNrKCJET01NYW5p
cHVsYXRpb24iLCAoKSA9PiBsb2dzLnB1c2goJzUnKSk7CisgICAgaW50ZXJuYWxzLnF1ZXVlVGFz
aygiRE9NTWFuaXB1bGF0aW9uIiwgKCkgPT4gbG9ncy5wdXNoKCc2JykpOworCisgICAgc2V0VGlt
ZW91dCgoKSA9PiB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbG9ncy5qb2luKCIs
ICIpJywgJzEsIDIsIDMsIDQsIDUsIDYnKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
fSwgMTAwKTsKK30KKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50bG9vcC9yZXNv
dXJjZXMvZXZlbnRsb29wLWhlbHBlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvZXZlbnRsb29wL3Jlc291cmNlcy9ldmVudGxvb3AtaGVscGVyLmh0bWwJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9ldmVudGxvb3AvcmVzb3VyY2VzL2V2
ZW50bG9vcC1oZWxwZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0PgorCitvbmxvYWQgPSB0b3AucG9z
dE1lc3NhZ2Uoeyd0eXBlJzogJ2xvYWQnfSwgJyonKTsKK29ubWVzc2FnZSA9IChldmVudCkgPT4g
eworICAgIGlmIChldmVudC5kYXRhLnR5cGUgIT0gJ3J1bicpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGxldCBudW1iZXIgPSBldmVudC5kYXRhLnN0YXJ0aW5nTnVtYmVyOworICAgIGxldCBsb2dz
ID0gW107CisgICAgZm9yIChjb25zdCBmcmFtZU5hbWUgb2YgZXZlbnQuZGF0YS5vcmRlcikgewor
ICAgICAgICBjb25zdCB3aW5kb3dQcm94eSA9IGZyYW1lTmFtZSA9PSAnc2VsZicgPyBzZWxmIDog
dG9wW2ZyYW1lTmFtZV07CisgICAgICAgIHdpbmRvd1Byb3h5LmludGVybmFscy5xdWV1ZVRhc2so
IkRPTU1hbmlwdWxhdGlvbiIsICgpID0+IGxvZ3MucHVzaChudW1iZXIrKykpOworICAgIH0KKwor
ICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICB0b3AucG9zdE1lc3NhZ2Uoeyd0eXBlJzog
J2xvZ3MnLCBsb2dzfSwgJyonKTsKKyAgICB9LCAwKTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382985</attachid>
            <date>2019-11-06 16:50:25 -0800</date>
            <delta_ts>2019-11-07 12:17:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203882-20191106165024.patch</filename>
            <type>text/plain</type>
            <size>15648</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjE2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE5LTExLTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdpbmRvd0V2ZW50TG9vcCBzaG91
bGQgYmUgc2hhcmVkIGFtb25nIHNpbWlsYXIgb3JpZ2luIGRvY3VtZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzODgyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFkZSBXaW5kb3dFdmVudExvb3Ag
c2hhcmVkIGFjcm9zcyBzaW1pbGFyIG9yaWdpbiBkb2N1bWVudHMuCisKKyAgICAgICAgQWxzbyBh
ZGRlZCBpbnRlcm5hbHMucXVldWVUYXNrIHRvIGRpcmVjdGx5IHRlc3QgdGhlIGV2ZW50IGxvb3Ag
YmVoYXZpb3IKKyAgICAgICAgc2luY2UgaW1wbGljaXRseSB0ZXN0aW5nIGl0IHZpYSBvdGhlciBm
ZWF0dXJlcyBoYXMgYmVlbiB2ZXJ5IGN1bWJlcnNvbWUuCisKKyAgICAgICAgVGhpcyB3aWxsIGhl
bHAgdGVzdCBvdGhlciBmZWF0dXJlcyB0aGF0IHVzZSB0aGUgSFRNTDUgZXZlbnQgbG9vcCBhcyB3
ZWxsLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2V2ZW50bG9vcC9xdWV1ZS10YXNrLWFj
cm9zcy1jcm9zcy1zaXRlLWZyYW1lcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2V2
ZW50bG9vcC9xdWV1ZS10YXNrLWFjcm9zcy1mcmFtZXMuaHRtbAorCisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpldmVudExvb3ApOiBVc2Ug
V2luZG93RXZlbnRMb29wOjplbnN1cmVGb3JSZWdpc3RyYWJsZURvbWFpbi4KKyAgICAgICAgKiBk
b20vV2luZG93RXZlbnRMb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd0V2ZW50TG9v
cDo6ZW5zdXJlRm9yUmVnaXN0cmFibGVEb21haW4pOiBBZGRlZC4gUmVwbGFjZXMgY3JlYXRlLAor
ICAgICAgICBhbmQgcmV0dXJucyBhbiBleGlzdGluZyBXaW5kb3dFdmVudExvb3AgaWYgdGhlIFJl
Z2lzdHJhYmxlRG9tYWluIG1hdGNoZXMuCisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dFdmVudExv
b3A6OldpbmRvd0V2ZW50TG9vcCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2luZG93RXZl
bnRMb29wOjp+V2luZG93RXZlbnRMb29wKTogQWRkZWQuIFJlbW92ZXMgaXRzZWxmIGZyb20gdGhl
IG1hcC4KKyAgICAgICAgKiBkb20vV2luZG93RXZlbnRMb29wLmg6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpxdWV1ZVRhc2sp
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxOS0xMS0wNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBTY3JlZW4gbG9ja3Mgd2hpbGUgd2F0Y2hpbmcgcHJldmlvdXNs
eS1tdXRlZC10aGVuLXVubXV0ZWQgdmlkZW8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAko
cmV2aXNpb24gMjUyMTIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjE4MiwxNCArNjE4Miw5IEBAIHZvaWQgRG9jdW1lbnQ6OnBlbmRpbmdU
YXNrc1RpbWVyRmlyZWQoKQogQWJzdHJhY3RFdmVudExvb3AmIERvY3VtZW50OjpldmVudExvb3Ao
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCFtX2V2ZW50TG9vcCkg
ewotICAgICAgICBpZiAobV9jb250ZXh0RG9jdW1lbnQpCi0gICAgICAgICAgICBtX2V2ZW50TG9v
cCA9IG1fY29udGV4dERvY3VtZW50LT5tX2V2ZW50TG9vcDsKLSAgICAgICAgZWxzZSAvLyBGSVhN
RTogRG9jdW1lbnRzIG9mIHNpbWlsYXIgb3JpZ2luIHNob3VsZCBzaGFyZSB0aGUgc2FtZSBldmVu
dCBsb29wLgotICAgICAgICAgICAgbV9ldmVudExvb3AgPSBXaW5kb3dFdmVudExvb3A6OmNyZWF0
ZSgpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIW1fZXZlbnRMb29wKSkKKyAgICAgICAgbV9l
dmVudExvb3AgPSBXaW5kb3dFdmVudExvb3A6OmVuc3VyZUZvclJlZ2lzdHJhYmxlRG9tYWluKFJl
Z2lzdHJhYmxlRG9tYWluIHsgc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfSk7CiAgICAgcmV0dXJu
ICptX2V2ZW50TG9vcDsKLQogfQogCiB2b2lkIERvY3VtZW50OjpzdXNwZW5kU2NoZWR1bGVkVGFz
a3MoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
V2luZG93RXZlbnRMb29wLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2lu
ZG93RXZlbnRMb29wLmNwcAkocmV2aXNpb24gMjUyMTIzKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L1dpbmRvd0V2ZW50TG9vcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMwLDM0IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdpbmRvd0V2ZW50TG9vcD4gV2luZG93RXZlbnRM
b29wOjpjcmVhdGUoKQorc3RhdGljIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdpbmRvd0V2
ZW50TG9vcCo+JiB3aW5kb3dFdmVudExvb3BNYXAoKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdpbmRvd0V2ZW50TG9vcCk7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBX
aW5kb3dFdmVudExvb3AqPj4gbWFwOworICAgIHJldHVybiBtYXAuZ2V0KCk7Cit9CisKK1JlZjxX
aW5kb3dFdmVudExvb3A+IFdpbmRvd0V2ZW50TG9vcDo6ZW5zdXJlRm9yUmVnaXN0cmFibGVEb21h
aW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK3sKKyAgICBhdXRvIGFkZFJlc3Vs
dCA9IHdpbmRvd0V2ZW50TG9vcE1hcCgpLmFkZChkb21haW4sIG51bGxwdHIpOworICAgIGlmIChV
TkxJS0VMWShhZGRSZXN1bHQuaXNOZXdFbnRyeSkpIHsKKyAgICAgICAgYXV0byBuZXdFdmVudExv
b3AgPSBhZG9wdFJlZigqbmV3IFdpbmRvd0V2ZW50TG9vcChkb21haW4pKTsKKyAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG5ld0V2ZW50TG9vcC5wdHIoKTsKKyAgICAgICAgcmV0
dXJuIG5ld0V2ZW50TG9vcDsKKyAgICB9CisgICAgcmV0dXJuICphZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlOworfQorCitpbmxpbmUgV2luZG93RXZlbnRMb29wOjpXaW5kb3dFdmVudExvb3AoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKKyAgICA6IG1fZG9tYWluKGRvbWFpbikKK3sK
K30KKworV2luZG93RXZlbnRMb29wOjp+V2luZG93RXZlbnRMb29wKCkKK3sKKyAgICBBU1NFUlQo
d2luZG93RXZlbnRMb29wTWFwKCkuY29udGFpbnMobV9kb21haW4pKTsKKyAgICBhdXRvIGRpZFJl
bW92ZSA9IHdpbmRvd0V2ZW50TG9vcE1hcCgpLnJlbW92ZShtX2RvbWFpbik7CisgICAgUkVMRUFT
RV9BU1NFUlQoZGlkUmVtb3ZlKTsKIH0KIAogdm9pZCBXaW5kb3dFdmVudExvb3A6OnF1ZXVlVGFz
ayhUYXNrU291cmNlIHNvdXJjZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVGFz
a0Z1bmN0aW9uJiYgdGFzaykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExv
b3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgJ
KHJldmlzaW9uIDI1MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3Au
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3RF
dmVudExvb3AuaCIKICNpbmNsdWRlICJEb2N1bWVudElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJS
ZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTM2LDcgKzM3LDkgQEAgY2xhc3MgRG9jdW1lbnQ7CiAvLyBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjd2luZG93LWV2
ZW50LWxvb3AKIGNsYXNzIFdpbmRvd0V2ZW50TG9vcCBmaW5hbCA6IHB1YmxpYyBBYnN0cmFjdEV2
ZW50TG9vcCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXaW5kb3dFdmVudExvb3A+IGNyZWF0
ZSgpOworICAgIHN0YXRpYyBSZWY8V2luZG93RXZlbnRMb29wPiBlbnN1cmVGb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOworCisgICAgfldpbmRvd0V2ZW50TG9v
cCgpOwogCiAgICAgdm9pZCBxdWV1ZVRhc2soVGFza1NvdXJjZSwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFRhc2tGdW5jdGlvbiYmKSBvdmVycmlkZTsKIApAQCAtNDUsNyArNDgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdG9wKERvY3VtZW50Jik7CiAKIHByaXZhdGU6Ci0gICAgV2luZG93RXZl
bnRMb29wKCkgPSBkZWZhdWx0OworICAgIFdpbmRvd0V2ZW50TG9vcChjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpOwogCiAgICAgdm9pZCBzY2hlZHVsZVRvUnVuSWZOZWVkZWQoKTsKICAgICB2b2lk
IHJ1bigpOwpAQCAtNTgsOCArNjEsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gVXNlIGEgZ2xvYmFs
IHF1ZXVlIGluc3RlYWQgb2YgbXVsdGlwbGUgdGFzayBxdWV1ZXMgc2luY2UgSFRNTDUgc3BlYyBh
bGxvd3MgVUEgdG8gcGljayBhcmJpdHJhcnkgcXVldWUuCiAgICAgVmVjdG9yPFRhc2s+IG1fdGFz
a3M7Ci0gICAgYm9vbCBtX2lzU2NoZWR1bGVkVG9SdW4geyBmYWxzZSB9OwogICAgIEhhc2hTZXQ8
RG9jdW1lbnRJZGVudGlmaWVyPiBtX2RvY3VtZW50SWRlbnRpZmllcnNGb3JTdXNwZW5kZWRUYXNr
czsKKyAgICBSZWdpc3RyYWJsZURvbWFpbiBtX2RvbWFpbjsKKyAgICBib29sIG1faXNTY2hlZHVs
ZWRUb1J1biB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJJbnRlcm5hbHMuaCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2Fj
aGUuaCIKKyNpbmNsdWRlICJBYnN0cmFjdEV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkFjdGl2ZURP
TUNhbGxiYWNrTWljcm90YXNrLmgiCiAjaW5jbHVkZSAiQWN0aXZpdHlTdGF0ZS5oIgogI2luY2x1
ZGUgIkFuaW1hdGlvblRpbWVsaW5lLmgiCkBAIC00Njc1LDYgKzQ2NzYsMjEgQEAgdm9pZCBJbnRl
cm5hbHM6OnBvc3RUYXNrKFJlZlB0cjxWb2lkQ2FsbAogICAgIH0pOwogfQogCitFeGNlcHRpb25P
cjx2b2lkPiBJbnRlcm5hbHM6OnF1ZXVlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHRhc2tTb3VyY2VOYW1lLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYm
IGNhbGxiYWNrKQoreworICAgIFRhc2tTb3VyY2Ugc291cmNlOworICAgIGlmICh0YXNrU291cmNl
TmFtZSA9PSAiRE9NTWFuaXB1bGF0aW9uIikKKyAgICAgICAgc291cmNlID0gVGFza1NvdXJjZTo6
RE9NTWFuaXB1bGF0aW9uOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07CisKKyAgICBjb250ZXh0LmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhz
b3VyY2UsIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIHsKKyAgICAg
ICAgY2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7CisgICAgfSk7CisKKyAgICByZXR1cm4geyB9Owor
fQorCiBWZWN0b3I8U3RyaW5nPiBJbnRlcm5hbHM6OmFjY2Vzc0tleU1vZGlmaWVycygpIGNvbnN0
CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gYWNjZXNzS2V5TW9kaWZpZXJTdHJpbmdzOwpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NzYsNiArNzc2
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTeXN0ZW1QcmV2aWV3SW1hZ2UoRWxlbWVudCYpIGNv
bnN0OwogCiAgICAgdm9pZCBwb3N0VGFzayhSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBxdWV1ZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0
IFN0cmluZyYgc291cmNlLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKICAgICB2b2lkIG1hcmtD
b250ZXh0QXNJbnNlY3VyZSgpOwogCiAgICAgYm9vbCB1c2luZ0FwcGxlSW50ZXJuYWxTREsoKSBj
b25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDI1
MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtNzY1LDYgKzc2NSw3IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIGJv
b2xlYW4gdXNpbmdBcHBsZUludGVybmFsU0RLKCk7CiAKICAgICB2b2lkIHBvc3RUYXNrKFZvaWRD
YWxsYmFjayBjYWxsYmFjayk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHF1ZXVlVGFzayhET01TdHJpbmcgc291cmNlLCBWb2lk
Q2FsbGJhY2sgY2FsbGJhY2spOwogICAgIHZvaWQgbWFya0NvbnRleHRBc0luc2VjdXJlKCk7CiAK
ICAgICB2b2lkIHNldE1heENhbnZhc1BpeGVsTWVtb3J5KHVuc2lnbmVkIGxvbmcgc2l6ZSk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTIxMjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxOS0xMS0wNiAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KKworICAgICAgICBXaW5kb3dFdmVudExvb3Agc2hvdWxkIGJlIHNoYXJl
ZCBhbW9uZyBzaW1pbGFyIG9yaWdpbiBkb2N1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzg4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHNvbWUgdGVzdHMgdG8gbWFrZSBzdXJlIHRo
ZSBldmVudCBsb29wIGlzIHNoYXJlZCBhbW9uZyBzaW1pbGFyIG9yaWdpbiBkb2N1bWVudHMuCisK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2V2ZW50bG9vcDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9ldmVudGxvb3AvcXVldWUtdGFzay1hY3Jvc3MtY3Jvc3Mtc2l0ZS1mcmFtZXMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2V2ZW50bG9vcC9xdWV1ZS10YXNr
LWFjcm9zcy1jcm9zcy1zaXRlLWZyYW1lcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2V2ZW50bG9vcC9xdWV1ZS10YXNrLWFjcm9zcy1mcmFtZXMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2V2ZW50bG9vcC9xdWV1ZS10YXNrLWFjcm9zcy1mcmFt
ZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9ldmVudGxvb3AvcmVzb3VyY2Vz
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2V2ZW50bG9vcC9yZXNvdXJjZXMvZXZlbnRs
b29wLWhlbHBlci5odG1sOiBBZGRlZC4KKwogMjAxOS0xMS0wNSAgS2F0ZSBDaGVuZXkgIDxrYXRo
ZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXQgdGVzdCB3ZWJzaXRlLWRh
dGEtcmVtb3ZhbC1mb3Itc2l0ZS1uYXZpZ2F0ZWQtdG8td2l0aC1saW5rLWRlY29yYXRpb24uaHRt
bCBpcyBhIGZsYWt5IGZhaWx1cmUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRs
b29wL3F1ZXVlLXRhc2stYWNyb3NzLWNyb3NzLXNpdGUtZnJhbWVzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50bG9vcC9xdWV1ZS10YXNrLWFj
cm9zcy1jcm9zcy1zaXRlLWZyYW1lcy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9ldmVudGxvb3AvcXVldWUtdGFzay1hY3Jvc3MtY3Jvc3Mtc2l0
ZS1mcmFtZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK1Ro
aXMgdGVzdHMgdGhlIG9yZGVyIGJ5IHdoaWNoIHRhc2tzIGFyZSBzY2hlZHVsZWQgYWNyb3NzIGRv
Y3VtZW50cyB0aGF0IGFyZSBub3Qgc2ltaWxhciBvcmlnaW5zLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBsb2dzLmpvaW4oIiwgIikgaXMgIjEsIDIsIDMsIDQsIDUiCitQ
QVNTIGNyb3NzT3JpZ2luTG9ncy5qb2luKCIsICIpIGlzICIxMCwgMTEsIDEyIgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvZXZlbnRsb29wL3F1ZXVlLXRhc2stYWNyb3NzLWNyb3NzLXNpdGUtZnJh
bWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9ldmVudGxvb3Av
cXVldWUtdGFzay1hY3Jvc3MtY3Jvc3Mtc2l0ZS1mcmFtZXMuaHRtbAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50bG9vcC9xdWV1ZS10YXNrLWFjcm9zcy1jcm9z
cy1zaXRlLWZyYW1lcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODkgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1RoaXMgdGVz
dHMgdGhlIG9yZGVyIGJ5IHdoaWNoIHRhc2tzIGFyZSBzY2hlZHVsZWQgYWNyb3NzIGRvY3VtZW50
cyB0aGF0IGFyZSBub3Qgc2ltaWxhciBvcmlnaW5zLicpOworCitpZiAoIXdpbmRvdy5pbnRlcm5h
bHMpCisgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlbGllcyBvbiB3aW5kb3cuaW50ZXJuYWxz
Jyk7CitlbHNlIHsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB3aW5kb3cub25sb2Fk
ID0gc3RhcnRUZXN0OworfQorCitsb2dzID0gW107Citjcm9zc09yaWdpbkxvZ3MgPSBbXTsKKwor
YXN5bmMgZnVuY3Rpb24gc3RhcnRUZXN0KCkKK3sKKworICAgIHNldFRpbWVvdXQoKCkgPT4gZmlu
aXNoSlNUZXN0KCksIDMwMDApOworCisgICAgY29uc3QgZnJhbWUxID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaWZyYW1lJyk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFtZTEp
OworCisgICAgY29uc3QgZnJhbWUyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7
CisgICAgZnJhbWUyLm5hbWUgPSAnZnJhbWUyJzsKKyAgICBmcmFtZTIuc3JjID0gJ2h0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9ldmVudGxvb3AvcmVzb3VyY2VzL2V2ZW50bG9vcC1oZWxwZXIuaHRtbCc7
CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFtZTIpOworCisgICAgY29uc3QgZnJh
bWUzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgZnJhbWUzLnNyYyA9
ICdyZXNvdXJjZXMvZXZlbnRsb29wLWhlbHBlci5odG1sJzsKKyAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGZyYW1lMyk7CisKKyAgICBjb25zdCBmcmFtZTQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdpZnJhbWUnKTsKKyAgICBmcmFtZTQubmFtZSA9ICdmcmFtZTQnOworICAgIGZyYW1l
NC5zcmMgPSAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL2V2ZW50bG9vcC9yZXNvdXJjZXMvZXZlbnRs
b29wLWhlbHBlci5odG1sJzsKKworICAgIGF3YWl0IHdhaXRGb3JMb2FkKGZyYW1lMyk7CisgICAg
ZnJhbWUzLmNvbnRlbnREb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lNCk7CisKKyAgICBh
d2FpdCB3YWl0Rm9yTG9hZChmcmFtZTIpOworICAgIGF3YWl0IHdhaXRGb3JMb2FkKGZyYW1lNCk7
CisKKyAgICBmcmFtZTMuY29udGVudFdpbmRvdy5pbnRlcm5hbHMucXVldWVUYXNrKCJET01NYW5p
cHVsYXRpb24iLCAoKSA9PiBsb2dzLnB1c2goJzEnKSk7CisgICAgZnJhbWUzLmNvbnRlbnRXaW5k
b3cuaW50ZXJuYWxzLnF1ZXVlVGFzaygiRE9NTWFuaXB1bGF0aW9uIiwgKCkgPT4gbG9ncy5wdXNo
KCcyJykpOworICAgIGludGVybmFscy5xdWV1ZVRhc2soIkRPTU1hbmlwdWxhdGlvbiIsICgpID0+
IGxvZ3MucHVzaCgnMycpKTsKKyAgICBmcmFtZTEuY29udGVudFdpbmRvdy5pbnRlcm5hbHMucXVl
dWVUYXNrKCJET01NYW5pcHVsYXRpb24iLCAoKSA9PiBsb2dzLnB1c2goJzQnKSk7CisgICAgaW50
ZXJuYWxzLnF1ZXVlVGFzaygiRE9NTWFuaXB1bGF0aW9uIiwgKCkgPT4gbG9ncy5wdXNoKCc1Jykp
OworCisgICAgZnJhbWUyLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoeworICAgICAgICB0eXBl
OiAncnVuJywKKyAgICAgICAgb3JkZXI6IFsnZnJhbWUyJywgJ2ZyYW1lMicsICdzZWxmJ10sCisg
ICAgICAgIHN0YXJ0aW5nTnVtYmVyOiAxMCwKKyAgICB9LCAnKicpOworCisgICAgc2V0VGltZW91
dCgoKSA9PiB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbG9ncy5qb2luKCIsICIp
JywgJzEsIDIsIDMsIDQsIDUnKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdjcm9z
c09yaWdpbkxvZ3Muam9pbigiLCAiKScsICcxMCwgMTEsIDEyJyk7CisgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgIH0sIDEwMCk7Cit9CisKK2NvbnN0IGxvYWRlZEZyYW1lcyA9IG5ldyBNYXA7
Citvbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YS50eXBlID09ICds
b2FkJykgeworICAgICAgICBjb25zdCByZXNvbHZlID0gbG9hZGVkRnJhbWVzLmdldChldmVudC5z
b3VyY2UpOworICAgICAgICBpZiAocmVzb2x2ZSkKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbG9hZGVkRnJhbWVzLnNldChldmVudC5zb3VyY2UsIG51
bGwpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YS50eXBlID09ICdsb2dzJykKKyAgICAgICAg
Y3Jvc3NPcmlnaW5Mb2dzID0gZXZlbnQuZGF0YS5sb2dzOworfQorCitmdW5jdGlvbiB3YWl0Rm9y
TG9hZChmcmFtZSkKK3sKKyAgICBpZiAobG9hZGVkRnJhbWVzLmhhcyhmcmFtZS5jb250ZW50V2lu
ZG93KSkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIHJldHVybiBuZXcg
UHJvbWlzZSgocmVzb2x2ZSkgPT4gbG9hZGVkRnJhbWVzLnNldChmcmFtZS5jb250ZW50V2luZG93
LCByZXNvbHZlKSk7Cit9CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9ldmVudGxvb3Av
cXVldWUtdGFzay1hY3Jvc3MtZnJhbWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50bG9vcC9xdWV1ZS10YXNrLWFjcm9zcy1mcmFtZXMtZXhw
ZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRs
b29wL3F1ZXVlLXRhc2stYWNyb3NzLWZyYW1lcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyB0aGUgb3JkZXIgYnkgd2hpY2ggdGFza3MgYXJl
IHNjaGVkdWxlZCBhY3Jvc3MgZG9jdW1lbnRzIG9mIHNpbWlsYXIgb3JpZ2lucy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbG9ncy5qb2luKCIsICIpIGlzICIxLCAyLCAz
LCA0LCA1LCA2IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRsb29wL3F1ZXVlLXRhc2st
YWNyb3NzLWZyYW1lcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
ZXZlbnRsb29wL3F1ZXVlLXRhc2stYWNyb3NzLWZyYW1lcy5odG1sCShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRsb29wL3F1ZXVlLXRhc2stYWNyb3NzLWZyYW1l
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1RoaXMgdGVzdHMgdGhlIG9yZGVy
IGJ5IHdoaWNoIHRhc2tzIGFyZSBzY2hlZHVsZWQgYWNyb3NzIGRvY3VtZW50cyBvZiBzaW1pbGFy
IG9yaWdpbnMuJyk7CisKK2lmICghd2luZG93LmludGVybmFscykKKyAgICB0ZXN0RmFpbGVkKCdU
aGlzIHRlc3QgcmVsaWVzIG9uIHdpbmRvdy5pbnRlcm5hbHMnKTsKK2Vsc2UgeworICAgIGpzVGVz
dElzQXN5bmMgPSB0cnVlOworICAgIGxvZ3MgPSBbXTsKKworICAgIGZyYW1lMSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
ZnJhbWUxKTsKKworICAgIGZyYW1lMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScp
OworICAgIGZyYW1lMi5zcmMgPSAncmVzb3VyY2VzL2V2ZW50bG9vcC1oZWxwZXIuaHRtbCc7Cisg
ICAgZnJhbWUyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBydW5UZXN0KTsKKyAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lMik7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7Cisg
ICAgaW50ZXJuYWxzLnF1ZXVlVGFzaygiRE9NTWFuaXB1bGF0aW9uIiwgKCkgPT4gbG9ncy5wdXNo
KCcxJykpOworICAgIGZyYW1lMS5jb250ZW50V2luZG93LmludGVybmFscy5xdWV1ZVRhc2soIkRP
TU1hbmlwdWxhdGlvbiIsICgpID0+IGxvZ3MucHVzaCgnMicpKTsKKyAgICBpbnRlcm5hbHMucXVl
dWVUYXNrKCJET01NYW5pcHVsYXRpb24iLCAoKSA9PiBsb2dzLnB1c2goJzMnKSk7CisgICAgZnJh
bWUyLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLnF1ZXVlVGFzaygiRE9NTWFuaXB1bGF0aW9uIiwg
KCkgPT4gbG9ncy5wdXNoKCc0JykpOworICAgIGZyYW1lMS5jb250ZW50V2luZG93LmludGVybmFs
cy5xdWV1ZVRhc2soIkRPTU1hbmlwdWxhdGlvbiIsICgpID0+IGxvZ3MucHVzaCgnNScpKTsKKyAg
ICBpbnRlcm5hbHMucXVldWVUYXNrKCJET01NYW5pcHVsYXRpb24iLCAoKSA9PiBsb2dzLnB1c2go
JzYnKSk7CisKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdsb2dzLmpvaW4oIiwgIiknLCAnMSwgMiwgMywgNCwgNSwgNicpOworICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAxMDApOworfQorCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvZXZlbnRsb29wL3Jlc291cmNlcy9ldmVudGxvb3AtaGVscGVyLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9ldmVudGxvb3AvcmVzb3VyY2VzL2V2ZW50bG9v
cC1oZWxwZXIuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2
ZW50bG9vcC9yZXNvdXJjZXMvZXZlbnRsb29wLWhlbHBlci5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQ+
CisKK29ubG9hZCA9IHRvcC5wb3N0TWVzc2FnZSh7J3R5cGUnOiAnbG9hZCd9LCAnKicpOworb25t
ZXNzYWdlID0gKGV2ZW50KSA9PiB7CisgICAgaWYgKGV2ZW50LmRhdGEudHlwZSAhPSAncnVuJykK
KyAgICAgICAgcmV0dXJuOworCisgICAgbGV0IG51bWJlciA9IGV2ZW50LmRhdGEuc3RhcnRpbmdO
dW1iZXI7CisgICAgbGV0IGxvZ3MgPSBbXTsKKyAgICBmb3IgKGNvbnN0IGZyYW1lTmFtZSBvZiBl
dmVudC5kYXRhLm9yZGVyKSB7CisgICAgICAgIGNvbnN0IHdpbmRvd1Byb3h5ID0gZnJhbWVOYW1l
ID09ICdzZWxmJyA/IHNlbGYgOiB0b3BbZnJhbWVOYW1lXTsKKyAgICAgICAgd2luZG93UHJveHku
aW50ZXJuYWxzLnF1ZXVlVGFzaygiRE9NTWFuaXB1bGF0aW9uIiwgKCkgPT4gbG9ncy5wdXNoKG51
bWJlcisrKSk7CisgICAgfQorCisgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIHRvcC5w
b3N0TWVzc2FnZSh7J3R5cGUnOiAnbG9ncycsIGxvZ3N9LCAnKicpOworICAgIH0sIDApOworfQor
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="398746"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>