<?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>215382</bug_id>
          
          <creation_ts>2020-08-11 10:24:46 -0700</creation_ts>
          <short_desc>Deferred WKUserScripts are exponentially injected on preloaded pages with frames</short_desc>
          <delta_ts>2020-08-11 12:52:37 -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>WebKit API</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1679447</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-08-11 10:24:46 -0700</bug_when>
    <thetext>We inject a web extension script multiple times per frame if the page is preloaded in Safari and has multiple frames. The number of times we inject is how many frames the page has. So this is exponential.

&lt;rdar://problem/66837802&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679452</commentid>
    <comment_count>1</comment_count>
      <attachid>406390</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-08-11 10:32:12 -0700</bug_when>
    <thetext>Created attachment 406390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679455</commentid>
    <comment_count>2</comment_count>
      <attachid>406390</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-08-11 10:44:49 -0700</bug_when>
    <thetext>Comment on attachment 406390
Patch

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

r=me

&gt; Source/WebCore/page/Frame.cpp:694
&gt; +void Frame::injectUserScriptsAwaitingNotification()
&gt; +{
&gt; +    for (const auto&amp; pair : m_userScriptsAwaitingNotification)
&gt; +        injectUserScriptImmediately(pair.first, pair.second.get());
&gt; +
&gt; +    m_userScriptsAwaitingNotification.clear();
&gt; +}

I prefer the idiom where you take() or WTFMove() or exchange() before entering the loop. This means the data member is always coherent, even during the loop. One reason this might matter is re-entrancy. But even if we think re-entrancy won&apos;t happen, I think the idiom is a bit clearer.

In this case, you even get to delete a line of code:

for (const auto&amp; pair : std::exchange(m_userScriptsAwaitingNotification, { }))
    ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679457</commentid>
    <comment_count>3</comment_count>
      <attachid>406390</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-08-11 10:46:32 -0700</bug_when>
    <thetext>Comment on attachment 406390
Patch

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

&gt; Source/WebCore/page/Frame.cpp:690
&gt; +    for (const auto&amp; pair : m_userScriptsAwaitingNotification)

You can use structured bindings to make this a bit nicer:

for (const auto&amp; [world, script] : m_userScriptsAwaitingNotification)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679459</commentid>
    <comment_count>4</comment_count>
      <attachid>406390</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-08-11 10:47:35 -0700</bug_when>
    <thetext>Comment on attachment 406390
Patch

Eek, sorry, did not meant to change the review flag state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679496</commentid>
    <comment_count>5</comment_count>
      <attachid>406402</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-08-11 12:19:35 -0700</bug_when>
    <thetext>Created attachment 406402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679497</commentid>
    <comment_count>6</comment_count>
      <attachid>406390</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-08-11 12:20:22 -0700</bug_when>
    <thetext>Comment on attachment 406390
Patch

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

&gt;&gt; Source/WebCore/page/Frame.cpp:690
&gt;&gt; +    for (const auto&amp; pair : m_userScriptsAwaitingNotification)
&gt; 
&gt; You can use structured bindings to make this a bit nicer:
&gt; 
&gt; for (const auto&amp; [world, script] : m_userScriptsAwaitingNotification)

Cool. Did this.

&gt;&gt; Source/WebCore/page/Frame.cpp:694
&gt;&gt; +}
&gt; 
&gt; I prefer the idiom where you take() or WTFMove() or exchange() before entering the loop. This means the data member is always coherent, even during the loop. One reason this might matter is re-entrancy. But even if we think re-entrancy won&apos;t happen, I think the idiom is a bit clearer.
&gt; 
&gt; In this case, you even get to delete a line of code:
&gt; 
&gt; for (const auto&amp; pair : std::exchange(m_userScriptsAwaitingNotification, { }))
&gt;     ...

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679512</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-11 12:52:36 -0700</bug_when>
    <thetext>Committed r265510: &lt;https://trac.webkit.org/changeset/265510&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406402.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406390</attachid>
            <date>2020-08-11 10:32:12 -0700</date>
            <delta_ts>2020-08-11 12:19:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215382-20200811103211.patch</filename>
            <type>text/plain</type>
            <size>9688</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGVmNmViYTQ1YzExMWIy
MGY1Nzc3ZTcxMzVjOTUyYmU5M2JmMDZiZS4uZDUwNDQ5OWU2ZmE3YThkMzI0M2EwM2RiNDE3OTZk
ZjFhZmVhMzBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA4LTExICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBEZWZlcnJlZCBXS1Vz
ZXJTY3JpcHRzIGFyZSBleHBvbmVudGlhbGx5IGluamVjdGVkIG9uIHByZWxvYWRlZCBwYWdlcyB3
aXRoIGZyYW1lcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTM4MgorICAgICAgICByZGFyOi8vcHJvYmxlbS82NjgzNzgwMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gZGVmZXJpbmcgYSBzY3Jp
cHQgaW4gYSBmcmFtZSBpdCB3YXMgcHJldmlvdXNseSBhZGRlZCB0byBhIHZlY3RvciBwZXItcGFn
ZS4KKyAgICAgICAgTGF0ZXIgd2hlbiBub3RpZmllZCB0byBpbmplY3QgdGhlIGRlZmVyZWQgc2Ny
aXB0cywgdGhlIHBhZ2Ugd291bGQgaXRlcmF0ZSBvdmVyIGFsbAorICAgICAgICB0aGUgZnJhbWVz
IGFuZCBldmFsdWF0ZSB0aGUgc2NyaXB0cyBvbiBlYWNoIGZyYW1lLiBTaW5jZSB0aGlzIHZlY3Rv
ciBoYWQgYWxsIHRoZQorICAgICAgICBmcmFtZSdzIHNjcmlwdHMgdGhlIGV2YWx1YXRpb25zIHdv
dWxkIGJlIG11bHRpcGxpZWQgYnkgdGhlIG51bWJlciBvZiBmcmFtZXMuCisKKyAgICAgICAgTm93
IHRoZSBkZWZlcmVkIHNjcmlwdHMgYXJlIHN0b3JlZCBwZXItZnJhbWUgYW5kIHRoZSBwYWdlIGFz
a3MgZWFjaCBmcmFtZSB0bworICAgICAgICBpbmplY3QgdGhlIGRlZmVyZWQgc2NyaXB0cy4KKwor
ICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVj
dFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjphZGRVc2VyU2NyaXB0QXdh
aXRpbmdOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJT
Y3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24pOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6bm90aWZ5VG9J
bmplY3RVc2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRVc2VyU2NyaXB0
QXdhaXRpbmdOb3RpZmljYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgor
ICAgICAgICAqIHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6dHJp
Z2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrIGNvbnN0KToKKwogMjAyMC0wOC0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEF1eGlsaWFyeVByb2Nlc3M6
OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgpIGZvciBXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24gSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGNiMjFlOTYxNjljZDI4ZmM4
ZTM5ZjA0MDA3YTYzY2JlZTdhMDIwNTIuLjBhYTBjNjIxMDExNWQyOTBmYThjMWY2NmNmNjlmNmRh
NzE2NmMxODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBG
cmFtZTo6aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9u
VGltZSkKICAgICBtX3BhZ2UtPnVzZXJDb250ZW50UHJvdmlkZXIoKS5mb3JFYWNoVXNlclNjcmlw
dChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbmplY3Rpb25UaW1lLCBw
YWdlV2FzTm90aWZpZWRdIChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0
JiBzY3JpcHQpIHsKICAgICAgICAgaWYgKHNjcmlwdC5pbmplY3Rpb25UaW1lKCkgPT0gaW5qZWN0
aW9uVGltZSkgewogICAgICAgICAgICAgaWYgKHNjcmlwdC53YWl0Rm9yTm90aWZpY2F0aW9uQmVm
b3JlSW5qZWN0aW5nKCkgPT0gV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6WWVz
ICYmICFwYWdlV2FzTm90aWZpZWQpCi0gICAgICAgICAgICAgICAgbV9wYWdlLT5hZGRVc2VyU2Ny
aXB0QXdhaXRpbmdOb3RpZmljYXRpb24od29ybGQsIHNjcmlwdCk7CisgICAgICAgICAgICAgICAg
YWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKHdvcmxkLCBzY3JpcHQpOwogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3
b3JsZCwgc2NyaXB0KTsKICAgICAgICAgfQpAQCAtNjgwLDYgKzY4MCwxOSBAQCB2b2lkIEZyYW1l
OjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29u
c3QgVXNlclNjcmlwdAogICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgVVJMKHNjcmlwdC51cmwoKSkp
LCB3b3JsZCk7CiB9CiAKK3ZvaWQgRnJhbWU6OmFkZFVzZXJTY3JpcHRBd2FpdGluZ05vdGlmaWNh
dGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0JiBzY3JpcHQpCit7
CisgICAgbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0aW9uLmFwcGVuZCh7IG1ha2VSZWYo
d29ybGQpLCBtYWtlVW5pcXVlUmVmPFVzZXJTY3JpcHQ+KHNjcmlwdCkgfSk7Cit9CisKK3ZvaWQg
RnJhbWU6OmluamVjdFVzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24oKQoreworICAgIGZv
ciAoY29uc3QgYXV0byYgcGFpciA6IG1fdXNlclNjcmlwdHNBd2FpdGluZ05vdGlmaWNhdGlvbikK
KyAgICAgICAgaW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHBhaXIuZmlyc3QsIHBhaXIuc2Vj
b25kLmdldCgpKTsKKworICAgIG1fdXNlclNjcmlwdHNBd2FpdGluZ05vdGlmaWNhdGlvbi5jbGVh
cigpOworfQorCiBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gRnJhbWU6OnBhZ2VJRCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGxvYWRlcigpLnBhZ2VJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDc4
YWY0YmY0MjhhZGQzYzgxNmYxZmM1MjBkYzQzOTA0ZGQ0M2M4N2UuLjY4ZmRjMTE1NWQ5MTNlZWNm
MjU3MDZhZDk4ODliNTAyMWZhYmYyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTE5OCw3ICsxOTgs
MTAgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmplY3RVc2VyU2NyaXB0
cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmpl
Y3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgVXNlclNjcmlw
dCYpOwotICAgIAorCisgICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0
aW9uKCk7CisgICAgdm9pZCBhZGRVc2VyU2NyaXB0QXdhaXRpbmdOb3RpZmljYXRpb24oRE9NV3Jh
cHBlcldvcmxkJiwgY29uc3QgVXNlclNjcmlwdCYpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGxheWVyVHJlZUFzVGV4dChMYXllclRyZWVGbGFncyA9IDApIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyB0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3Q7CiAKQEAg
LTMyOCw2ICszMzEsOCBAQCBwcml2YXRlOgogCiAgICAgSGFzaFNldDxGcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIqPiBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzOwogCisgICAgVmVjdG9yPHN0ZDo6cGFp
cjxSZWY8RE9NV3JhcHBlcldvcmxkPiwgVW5pcXVlUmVmPFVzZXJTY3JpcHQ+Pj4gbV91c2VyU2Ny
aXB0c0F3YWl0aW5nTm90aWZpY2F0aW9uOworCiAgICAgRnJhbWUmIG1fbWFpbkZyYW1lOwogICAg
IFBhZ2UqIG1fcGFnZTsKICAgICBjb25zdCBSZWZQdHI8U2V0dGluZ3M+IG1fc2V0dGluZ3M7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAppbmRleCAxOWQ4MmQxNDA0MTM1MmRiM2I5Zjk5MTdjYjkxOTI2NzE4M2Q0
MDQ2Li43MjFlZTBkMDA1ZWQ0Y2E3YWEzZjQzNjUyMzBjNzVlMGYwMTg1YTg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKQEAgLTI2NzMsMTcgKzI2NzMsOCBAQCB2b2lkIFBhZ2U6Om5vdGlmeVRvSW5qZWN0
VXNlclNjcmlwdHMoKQogewogICAgIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0
cyA9IHRydWU7CiAKLSAgICBmb3IgKGF1dG8qIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIGZvciAoY29u
c3QgYXV0byYgcGFpciA6IG1fdXNlclNjcmlwdHNBd2FpdGluZ05vdGlmaWNhdGlvbikKLSAgICAg
ICAgICAgIGZyYW1lLT5pbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkocGFpci5maXJzdCwgcGFp
ci5zZWNvbmQuZ2V0KCkpOwotICAgIH0KLQotICAgIG1fdXNlclNjcmlwdHNBd2FpdGluZ05vdGlm
aWNhdGlvbi5jbGVhcigpOwotfQotCi12b2lkIFBhZ2U6OmFkZFVzZXJTY3JpcHRBd2FpdGluZ05v
dGlmaWNhdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0JiBzY3Jp
cHQpCi17Ci0gICAgbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0aW9uLmFwcGVuZCh7IG1h
a2VSZWYod29ybGQpLCBtYWtlVW5pcXVlUmVmPFVzZXJTY3JpcHQ+KHNjcmlwdCkgfSk7CisgICAg
Zm9yIChhdXRvKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgZnJhbWUtPmluamVjdFVzZXJTY3JpcHRzQXdh
aXRpbmdOb3RpZmljYXRpb24oKTsKIH0KIAogdm9pZCBQYWdlOjpzZXRVc2VyQ29udGVudFByb3Zp
ZGVyKFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmIHVzZXJDb250ZW50UHJvdmlkZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCmluZGV4IDdiYzQwZDE0NjQwOTk4OWJlM2UyNGRkNzJhN2ExNDdmOWY4MmVjNTguLmM4
MTIwMWQwNWYwZGIyMDU0YWE2ODdlYjRlYTgyMmRkODE0YTAyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBA
IC03NzUsNyArNzc1LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNCZWVuTm90aWZpZWRUb0lu
amVjdFVzZXJTY3JpcHRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNCZWVuTm90aWZpZWRUb0luamVj
dFVzZXJTY3JpcHRzOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlUb0luamVjdFVz
ZXJTY3JpcHRzKCk7Ci0gICAgdm9pZCBhZGRVc2VyU2NyaXB0QXdhaXRpbmdOb3RpZmljYXRpb24o
RE9NV3JhcHBlcldvcmxkJiwgY29uc3QgVXNlclNjcmlwdCYpOwogCiBwcml2YXRlOgogICAgIHN0
cnVjdCBOYXZpZ2F0aW9uIHsKQEAgLTEwNzAsNyArMTA2OSw2IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2xvYWRzRnJvbU5ldHdvcmsgeyB0cnVlIH07CiAgICAgU2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogICAgIGJvb2wgbV9oYXNC
ZWVuTm90aWZpZWRUb0luamVjdFVzZXJTY3JpcHRzIHsgZmFsc2UgfTsKLSAgICBWZWN0b3I8c3Rk
OjpwYWlyPFJlZjxET01XcmFwcGVyV29ybGQ+LCBVbmlxdWVSZWY8VXNlclNjcmlwdD4+PiBtX3Vz
ZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb247CiB9OwogCiBpbmxpbmUgUGFnZUdyb3VwJiBQ
YWdlOjpncm91cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKaW5kZXggY2Y2YTk5ODc5NTM1NDUwNWFj
NDkwNTYxYzcxZGE1NDczZjE3MzNhMC4uMTBlNTg1NDYzZjkzYWIyN2U3NzEzMjFlN2EzNDA5NmE0
NzYzYThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcApAQCAtOTQ3LDExICs5NDcsOSBAQCBRdWly
a3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNj
ZXNzUXVpcmsoY29uc3QgRWxlbQogICAgICAgICAgICAgYXV0byogYWJzdHJhY3RGcmFtZSA9IHBy
b3h5LT5mcmFtZSgpOwogICAgICAgICAgICAgaWYgKGFic3RyYWN0RnJhbWUgJiYgaXM8RnJhbWU+
KCphYnN0cmFjdEZyYW1lKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGZyYW1lID0gZG93bmNh
c3Q8RnJhbWU+KCphYnN0cmFjdEZyYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogcGFn
ZSA9IGZyYW1lLnBhZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIHdvcmxkID0gU2Ny
aXB0Q29udHJvbGxlcjo6Y3JlYXRlV29ybGQoImtpbmphQ29tUXVpcmtXb3JsZCIsIFNjcmlwdENv
bnRyb2xsZXI6OldvcmxkVHlwZTo6VXNlcik7Ci0gICAgICAgICAgICAgICAgICAgIHBhZ2UtPmFk
ZFVzZXJTY3JpcHRBd2FpdGluZ05vdGlmaWNhdGlvbih3b3JsZC5nZXQoKSwga2luamFMb2dpblVz
ZXJTY3JpcHQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNj
ZXNzUmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudDsKLSAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYXV0byB3b3JsZCA9IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKCJraW5q
YUNvbVF1aXJrV29ybGQiLCBTY3JpcHRDb250cm9sbGVyOjpXb3JsZFR5cGU6OlVzZXIpOworICAg
ICAgICAgICAgICAgIGZyYW1lLmFkZFVzZXJTY3JpcHRBd2FpdGluZ05vdGlmaWNhdGlvbih3b3Js
ZC5nZXQoKSwga2luamFMb2dpblVzZXJTY3JpcHQpOworICAgICAgICAgICAgICAgIHJldHVybiBR
dWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50OwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDViNTViYjBkMjZlNDUzZTcxYjNhNTc0NTE1YzZlMDA0Mzc1MDA1
ODUuLmQ4YzljMWZmODVjZjE2ZmE3MmQyODExYTA0Y2EyNDQ4ZDViOWRjNDUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAyMC0wOC0xMSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGVmZXJyZWQgV0tVc2VyU2NyaXB0cyBhcmUgZXhwb25lbnRpYWxseSBpbmplY3RlZCBvbiBw
cmVsb2FkZWQgcGFnZXMgd2l0aCBmcmFtZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUzODIKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNjY4Mzc4
MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgor
ICAgICAgICAoVEVTVCk6CisKIDIwMjAtMDgtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoKSBmb3IgV2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uIElQQwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENv
bnRyb2xsZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJD
b250ZW50Q29udHJvbGxlci5tbQppbmRleCAxNWE5M2RhYmVmMjMxZDQ1YmViMDYyM2RlZTdlZDYx
ZGUyMGUzMDFhLi44NDNjMTEwMzAzOTU5MzZlNDhiODEyZTkwN2RjNTNmNDkxMjAyYmJhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50
Q29udHJvbGxlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpAQCAtOTQ1LDYgKzk0NSwxOCBAQCBURVNUKFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyLCBVc2VyU2NyaXB0Tm90aWZpY2F0aW9uKQogICAgIEVYUEVDVF9G
QUxTRSh3ZWJWaWV3My5fZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7CiAg
ICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAid2FpdGVkIGZvciBu
b3RpZmljYXRpb24iKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVy
dF0sICJkb2N1bWVudCBwYXJzaW5nIGVuZGVkIik7CisKKyAgICBUZXN0V0tXZWJWaWV3ICp3ZWJW
aWV3NCA9IFtbVGVzdFdLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBFWFBFQ1RfVFJV
RSh3ZWJWaWV3NC5fZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7CisgICAg
W3dlYlZpZXc0LmNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3Jp
cHQ6d2FpdHNGb3JOb3RpZmljYXRpb25dOworICAgIFt3ZWJWaWV3NC5jb25maWd1cmF0aW9uLnVz
ZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OmRvY3VtZW50RW5kXTsKKyAgICB3ZWJW
aWV3NC5VSURlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgW3dlYlZpZXc0IGxvYWRUZXN0UGFnZU5h
bWVkOkAic2ltcGxlLWlmcmFtZSJdOworICAgIFt3ZWJWaWV3NCBfbm90aWZ5VXNlclNjcmlwdHNd
OworCisgICAgLy8gSWYgdGhpcyBpcyBicm9rZW4sIHR3byBhbGVydHMgd291bGQgYXBwZWFyIGJh
Y2stdG8tYmFjayB3aXRoIHRoZSBzYW1lIHRleHQgZHVlIHRvIHRoZSBmcmFtZS4KKyAgICBFWFBF
Q1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVydF0sICJ3YWl0ZWQgZm9yIG5vdGlmaWNh
dGlvbiIpOworICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgImRv
Y3VtZW50IHBhcnNpbmcgZW5kZWQiKTsKIH0KIAogQGludGVyZmFjZSBBc3luY1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406402</attachid>
            <date>2020-08-11 12:19:35 -0700</date>
            <delta_ts>2020-08-11 12:52:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215382-20200811121935.patch</filename>
            <type>text/plain</type>
            <size>9651</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGVmNmViYTQ1YzExMWIy
MGY1Nzc3ZTcxMzVjOTUyYmU5M2JmMDZiZS4uMjEyYjA1NzY5OTQwNjkxYTA1Y2M1YmM4NDYzMjBm
YjI0YWU4YTBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA4LTExICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBEZWZlcnJlZCBXS1Vz
ZXJTY3JpcHRzIGFyZSBleHBvbmVudGlhbGx5IGluamVjdGVkIG9uIHByZWxvYWRlZCBwYWdlcyB3
aXRoIGZyYW1lcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTM4MgorICAgICAgICByZGFyOi8vcHJvYmxlbS82NjgzNzgwMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgV2hlbiBkZWZlcmluZyBhIHNjcmlwdCBp
biBhIGZyYW1lIGl0IHdhcyBwcmV2aW91c2x5IGFkZGVkIHRvIGEgdmVjdG9yIHBlci1wYWdlLgor
ICAgICAgICBMYXRlciB3aGVuIG5vdGlmaWVkIHRvIGluamVjdCB0aGUgZGVmZXJlZCBzY3JpcHRz
LCB0aGUgcGFnZSB3b3VsZCBpdGVyYXRlIG92ZXIgYWxsCisgICAgICAgIHRoZSBmcmFtZXMgYW5k
IGV2YWx1YXRlIHRoZSBzY3JpcHRzIG9uIGVhY2ggZnJhbWUuIFNpbmNlIHRoaXMgdmVjdG9yIGhh
ZCBhbGwgdGhlCisgICAgICAgIGZyYW1lJ3Mgc2NyaXB0cyB0aGUgZXZhbHVhdGlvbnMgd291bGQg
YmUgbXVsdGlwbGllZCBieSB0aGUgbnVtYmVyIG9mIGZyYW1lcy4KKworICAgICAgICBOb3cgdGhl
IGRlZmVyZWQgc2NyaXB0cyBhcmUgc3RvcmVkIHBlci1mcmFtZSBhbmQgdGhlIHBhZ2UgYXNrcyBl
YWNoIGZyYW1lIHRvCisgICAgICAgIGluamVjdCB0aGUgZGVmZXJlZCBzY3JpcHRzLgorCisgICAg
ICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNl
clNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmFkZFVzZXJTY3JpcHRBd2FpdGlu
Z05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlw
dHNBd2FpdGluZ05vdGlmaWNhdGlvbik6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpub3RpZnlUb0luamVj
dFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFVzZXJTY3JpcHRBd2Fp
dGluZ05vdGlmaWNhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAg
ICAgICogcGFnZS9RdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXVpcmtzOjp0cmlnZ2Vy
T3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsgY29uc3QpOgorCiAyMDIwLTA4LTEwICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQXV4aWxpYXJ5UHJvY2Vzczo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKCkgZm9yIFdlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbiBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggY2IyMWU5NjE2OWNkMjhmYzhlMzlm
MDQwMDdhNjNjYmVlN2EwMjA1Mi4uMjg5YmVhOGVhMTRiZmE5N2ViODc0NmI3ZTk4YWYyMWQ4MjE5
NmUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lkIEZyYW1l
OjppbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1l
KQogICAgIG1fcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLmZvckVhY2hVc2VyU2NyaXB0KFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluamVjdGlvblRpbWUsIHBhZ2VX
YXNOb3RpZmllZF0gKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNj
cmlwdCkgewogICAgICAgICBpZiAoc2NyaXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25U
aW1lKSB7CiAgICAgICAgICAgICBpZiAoc2NyaXB0LndhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJ
bmplY3RpbmcoKSA9PSBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZZXMgJiYg
IXBhZ2VXYXNOb3RpZmllZCkKLSAgICAgICAgICAgICAgICBtX3BhZ2UtPmFkZFVzZXJTY3JpcHRB
d2FpdGluZ05vdGlmaWNhdGlvbih3b3JsZCwgc2NyaXB0KTsKKyAgICAgICAgICAgICAgICBhZGRV
c2VyU2NyaXB0QXdhaXRpbmdOb3RpZmljYXRpb24od29ybGQsIHNjcmlwdCk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgaW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxk
LCBzY3JpcHQpOwogICAgICAgICB9CkBAIC02ODAsNiArNjgwLDE3IEBAIHZvaWQgRnJhbWU6Omlu
amVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBV
c2VyU2NyaXB0CiAgICAgbV9zY3JpcHQtPmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LnNvdXJjZSgpLCBVUkwoc2NyaXB0LnVybCgpKSksIHdv
cmxkKTsKIH0KIAordm9pZCBGcmFtZTo6YWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9u
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNjcmlwdCkKK3sKKyAg
ICBtX3VzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24uYXBwZW5kKHsgbWFrZVJlZih3b3Js
ZCksIG1ha2VVbmlxdWVSZWY8VXNlclNjcmlwdD4oc2NyaXB0KSB9KTsKK30KKwordm9pZCBGcmFt
ZTo6aW5qZWN0VXNlclNjcmlwdHNBd2FpdGluZ05vdGlmaWNhdGlvbigpCit7CisgICAgZm9yIChj
b25zdCBhdXRvJiBbd29ybGQsIHNjcmlwdF0gOiBzdGQ6OmV4Y2hhbmdlKG1fdXNlclNjcmlwdHNB
d2FpdGluZ05vdGlmaWNhdGlvbiwgeyB9KSkKKyAgICAgICAgaW5qZWN0VXNlclNjcmlwdEltbWVk
aWF0ZWx5KHdvcmxkLCBzY3JpcHQuZ2V0KCkpOworfQorCiBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gRnJhbWU6OnBhZ2VJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGxvYWRlcigpLnBhZ2VJRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oCmluZGV4IDc4YWY0YmY0MjhhZGQzYzgxNmYxZmM1MjBkYzQzOTA0ZGQ0
M2M4N2UuLjY4ZmRjMTE1NWQ5MTNlZWNmMjU3MDZhZDk4ODliNTAyMWZhYmYyYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmgKQEAgLTE5OCw3ICsxOTgsMTAgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBpbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBpbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBl
cldvcmxkJiwgY29uc3QgVXNlclNjcmlwdCYpOwotICAgIAorCisgICAgdm9pZCBpbmplY3RVc2Vy
U2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0aW9uKCk7CisgICAgdm9pZCBhZGRVc2VyU2NyaXB0QXdh
aXRpbmdOb3RpZmljYXRpb24oRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgVXNlclNjcmlwdCYpOwor
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChMYXllclRyZWVGbGFn
cyA9IDApIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0cmFja2VkUmVwYWludFJl
Y3RzQXNUZXh0KCkgY29uc3Q7CiAKQEAgLTMyOCw2ICszMzEsOCBAQCBwcml2YXRlOgogCiAgICAg
SGFzaFNldDxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIqPiBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJz
OwogCisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RE9NV3JhcHBlcldvcmxkPiwgVW5pcXVlUmVm
PFVzZXJTY3JpcHQ+Pj4gbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0aW9uOworCiAgICAg
RnJhbWUmIG1fbWFpbkZyYW1lOwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBjb25zdCBSZWZQdHI8
U2V0dGluZ3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAxOWQ4MmQxNDA0MTM1
MmRiM2I5Zjk5MTdjYjkxOTI2NzE4M2Q0MDQ2Li43MjFlZTBkMDA1ZWQ0Y2E3YWEzZjQzNjUyMzBj
NzVlMGYwMTg1YTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI2NzMsMTcgKzI2NzMsOCBAQCB2
b2lkIFBhZ2U6Om5vdGlmeVRvSW5qZWN0VXNlclNjcmlwdHMoKQogewogICAgIG1faGFzQmVlbk5v
dGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0cyA9IHRydWU7CiAKLSAgICBmb3IgKGF1dG8qIGZyYW1l
ID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fdXNlclNjcmlwdHNBd2Fp
dGluZ05vdGlmaWNhdGlvbikKLSAgICAgICAgICAgIGZyYW1lLT5pbmplY3RVc2VyU2NyaXB0SW1t
ZWRpYXRlbHkocGFpci5maXJzdCwgcGFpci5zZWNvbmQuZ2V0KCkpOwotICAgIH0KLQotICAgIG1f
dXNlclNjcmlwdHNBd2FpdGluZ05vdGlmaWNhdGlvbi5jbGVhcigpOwotfQotCi12b2lkIFBhZ2U6
OmFkZFVzZXJTY3JpcHRBd2FpdGluZ05vdGlmaWNhdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBjb25zdCBVc2VyU2NyaXB0JiBzY3JpcHQpCi17Ci0gICAgbV91c2VyU2NyaXB0c0F3YWl0aW5n
Tm90aWZpY2F0aW9uLmFwcGVuZCh7IG1ha2VSZWYod29ybGQpLCBtYWtlVW5pcXVlUmVmPFVzZXJT
Y3JpcHQ+KHNjcmlwdCkgfSk7CisgICAgZm9yIChhdXRvKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgZnJh
bWUtPmluamVjdFVzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24oKTsKIH0KIAogdm9pZCBQ
YWdlOjpzZXRVc2VyQ29udGVudFByb3ZpZGVyKFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmIHVz
ZXJDb250ZW50UHJvdmlkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDdiYzQwZDE0NjQwOTk4OWJlM2Uy
NGRkNzJhN2ExNDdmOWY4MmVjNTguLmM4MTIwMWQwNWYwZGIyMDU0YWE2ODdlYjRlYTgyMmRkODE0
YTAyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC03NzUsNyArNzc1LDYgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBoYXNCZWVuTm90aWZpZWRUb0luamVjdFVzZXJTY3JpcHRzKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNCZWVuTm90aWZpZWRUb0luamVjdFVzZXJTY3JpcHRzOyB9CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBub3RpZnlUb0luamVjdFVzZXJTY3JpcHRzKCk7Ci0gICAgdm9pZCBhZGRVc2VyU2Ny
aXB0QXdhaXRpbmdOb3RpZmljYXRpb24oRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgVXNlclNjcmlw
dCYpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0aW9uIHsKQEAgLTEwNzAsNyArMTA2
OSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRzRnJvbU5ldHdvcmsgeyB0cnVlIH07CiAg
ICAgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgbV9zaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZyB7IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
OjpObyB9OwogICAgIGJvb2wgbV9oYXNCZWVuTm90aWZpZWRUb0luamVjdFVzZXJTY3JpcHRzIHsg
ZmFsc2UgfTsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxET01XcmFwcGVyV29ybGQ+LCBVbmlx
dWVSZWY8VXNlclNjcmlwdD4+PiBtX3VzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb247CiB9
OwogCiBpbmxpbmUgUGFnZUdyb3VwJiBQYWdlOjpncm91cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAK
aW5kZXggY2Y2YTk5ODc5NTM1NDUwNWFjNDkwNTYxYzcxZGE1NDczZjE3MzNhMC4uMTBlNTg1NDYz
ZjkzYWIyN2U3NzEzMjFlN2EzNDA5NmE0NzYzYThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9RdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcApA
QCAtOTQ3LDExICs5NDcsOSBAQCBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0
cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoY29uc3QgRWxlbQogICAgICAgICAgICAg
YXV0byogYWJzdHJhY3RGcmFtZSA9IHByb3h5LT5mcmFtZSgpOwogICAgICAgICAgICAgaWYgKGFi
c3RyYWN0RnJhbWUgJiYgaXM8RnJhbWU+KCphYnN0cmFjdEZyYW1lKSkgewogICAgICAgICAgICAg
ICAgIGF1dG8mIGZyYW1lID0gZG93bmNhc3Q8RnJhbWU+KCphYnN0cmFjdEZyYW1lKTsKLSAgICAg
ICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLnBhZ2UoKSkgewotICAgICAgICAgICAg
ICAgICAgICBhdXRvIHdvcmxkID0gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV29ybGQoImtpbmph
Q29tUXVpcmtXb3JsZCIsIFNjcmlwdENvbnRyb2xsZXI6OldvcmxkVHlwZTo6VXNlcik7Ci0gICAg
ICAgICAgICAgICAgICAgIHBhZ2UtPmFkZFVzZXJTY3JpcHRBd2FpdGluZ05vdGlmaWNhdGlvbih3
b3JsZC5nZXQoKSwga2luamFMb2dpblVzZXJTY3JpcHQpOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudDsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXV0byB3b3JsZCA9IFNjcmlwdENvbnRy
b2xsZXI6OmNyZWF0ZVdvcmxkKCJraW5qYUNvbVF1aXJrV29ybGQiLCBTY3JpcHRDb250cm9sbGVy
OjpXb3JsZFR5cGU6OlVzZXIpOworICAgICAgICAgICAgICAgIGZyYW1lLmFkZFVzZXJTY3JpcHRB
d2FpdGluZ05vdGlmaWNhdGlvbih3b3JsZC5nZXQoKSwga2luamFMb2dpblVzZXJTY3JpcHQpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3Vs
ZENhbmNlbEV2ZW50OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDViNTViYjBkMjZlNDUz
ZTcxYjNhNTc0NTE1YzZlMDA0Mzc1MDA1ODUuLjM4NGU3YjBhNzZmM2I1N2ExMmRkNGE4NzNhMTUy
MGE0YzAxZWY4NWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wOC0xMSAgVGltb3RoeSBIYXRjaGVyICA8dGlt
b3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgRGVmZXJyZWQgV0tVc2VyU2NyaXB0cyBhcmUgZXhw
b25lbnRpYWxseSBpbmplY3RlZCBvbiBwcmVsb2FkZWQgcGFnZXMgd2l0aCBmcmFtZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUzODIKKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vNjY4Mzc4MDIKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vp
bmlnLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIubW06CisgICAgICAgIChURVNUKToKKwogMjAyMC0wOC0xMCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEF1eGlsaWFyeVByb2Nlc3M6OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgpIGZvciBXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24gSVBDCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDE1YTkzZGFiZWYy
MzFkNDViZWIwNjIzZGVlN2VkNjFkZTIwZTMwMWEuLjg0M2MxMTAzMDM5NTkzNmU0OGI4MTJlOTA3
ZGM1M2Y0OTEyMDJiYmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC05NDUsNiAr
OTQ1LDE4IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTY3JpcHROb3RpZmlj
YXRpb24pCiAgICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXczLl9kZWZlcnJhYmxlVXNlclNjcmlwdHNO
ZWVkTm90aWZpY2F0aW9uKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JB
bGVydF0sICJ3YWl0ZWQgZm9yIG5vdGlmaWNhdGlvbiIpOwogICAgIEVYUEVDVF9XS19TVFJFUShb
ZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgImRvY3VtZW50IHBhcnNpbmcgZW5kZWQiKTsKKworICAg
IFRlc3RXS1dlYlZpZXcgKndlYlZpZXc0ID0gW1tUZXN0V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOworICAgIEVYUEVDVF9UUlVFKHdlYlZpZXc0Ll9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVk
Tm90aWZpY2F0aW9uKTsKKyAgICBbd2ViVmlldzQuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENv
bnRyb2xsZXIgYWRkVXNlclNjcmlwdDp3YWl0c0Zvck5vdGlmaWNhdGlvbl07CisgICAgW3dlYlZp
ZXc0LmNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6ZG9j
dW1lbnRFbmRdOworICAgIHdlYlZpZXc0LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBbd2Vi
VmlldzQgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUtaWZyYW1lIl07CisgICAgW3dlYlZpZXc0
IF9ub3RpZnlVc2VyU2NyaXB0c107CisKKyAgICAvLyBJZiB0aGlzIGlzIGJyb2tlbiwgdHdvIGFs
ZXJ0cyB3b3VsZCBhcHBlYXIgYmFjay10by1iYWNrIHdpdGggdGhlIHNhbWUgdGV4dCBkdWUgdG8g
dGhlIGZyYW1lLgorICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwg
IndhaXRlZCBmb3Igbm90aWZpY2F0aW9uIik7CisgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0
ZSB3YWl0Rm9yQWxlcnRdLCAiZG9jdW1lbnQgcGFyc2luZyBlbmRlZCIpOwogfQogCiBAaW50ZXJm
YWNlIEFzeW5jU2NyaXB0TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdl
SGFuZGxlcldpdGhSZXBseT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>