<?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>194894</bug_id>
          
          <creation_ts>2019-02-20 21:11:18 -0800</creation_ts>
          <short_desc>Discard cached processes when clearing website data store</short_desc>
          <delta_ts>2019-02-27 10:05:01 -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>WebKit2</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=195102</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>tsavell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1508434</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-20 21:11:18 -0800</bug_when>
    <thetext>When clearing website data store, we should clear the process caches.
Otherwise, the privacy sensitive information such as which site the user had visited may linger around.

&lt;rdar://problem/48243972&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508435</commentid>
    <comment_count>1</comment_count>
      <attachid>362587</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-20 21:16:02 -0800</bug_when>
    <thetext>Created attachment 362587
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508436</commentid>
    <comment_count>2</comment_count>
      <attachid>362587</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-20 21:20:28 -0800</bug_when>
    <thetext>Comment on attachment 362587
Fixes the bug

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

&gt; Source/WebKit/ChangeLog:8
&gt; +        Clear the process cache when clearing the website data store so that

Is there any reason we clear the process cache but keep suspended pages/processes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508438</commentid>
    <comment_count>3</comment_count>
      <attachid>362587</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-20 21:24:31 -0800</bug_when>
    <thetext>Comment on attachment 362587
Fixes the bug

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:2843
&gt; +    auto processPoolConfiguration = adoptNS([[_WKProcessPoolConfiguration alloc] init]);

It would be better to use the convenience function in this file that returns a process pool configuration. You can always disable prewarming after calling it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508453</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-02-20 21:56:40 -0800</bug_when>
    <thetext>I didn&apos;t think about suspended pages because they&apos;re tied to the back forward list, and technically the client didn&apos;t ask to clear the back forward list.

Still, might as well clear suspended pages too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508459</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-20 22:39:05 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #4)
&gt; I didn&apos;t think about suspended pages because they&apos;re tied to the back
&gt; forward list, and technically the client didn&apos;t ask to clear the back
&gt; forward list.
&gt; 
&gt; Still, might as well clear suspended pages too.

If the concern is leaking information via activity monitor, suspended pages actually more obviously leak domains than cached processes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508568</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-02-21 10:27:40 -0800</bug_when>
    <thetext>&gt; If the concern is leaking information via activity monitor, suspended pages
&gt; actually more obviously leak domains than cached processes.

Let&apos;s clear suspended pages too. Marking r- to reflect that request (and patch doesn&apos;t apply cleanly?)

Clearing suspended pages seems like a reasonable interpretation of a request to clear the memory cache, and it&apos;s very unlikely to be a performance problem in practice, since the act of clearing the memory cache is rare.

That said, just to explain the situation a bit more: I believe it&apos;s technically not an information leak to display a domain in Activity Monitor if the domain is already displayed in a window&apos;s back-forward list. What&apos;s unique about cached pages is that they reflect domains that are completely gone from any other user-visible presentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508682</commentid>
    <comment_count>7</comment_count>
      <attachid>362650</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-21 14:56:27 -0800</bug_when>
    <thetext>Created attachment 362650
Clears the suspended pages</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508692</commentid>
    <comment_count>8</comment_count>
      <attachid>362650</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-21 15:13:31 -0800</bug_when>
    <thetext>Comment on attachment 362650
Clears the suspended pages

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

&gt; Source/WebKit/UIProcess/WebProcessCache.cpp:54
&gt; +    if (!capacity() || m_disabled)

Is this patch based on ToT? Seems like this check should also be in addProcessIfNecessary(), not just addProcess().

&gt; Source/WebKit/UIProcess/WebProcessCache.h:52
&gt; +    bool disabled() const { return m_disabled; }

isDisabled() and m_isDisabled as per coding style.

&gt; Source/WebKit/UIProcess/WebProcessCache.h:53
&gt; +    void setDisabled(bool disabled) { m_disabled = disabled; }

setIsDisabled().

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:783
&gt; +            ASSERT(!processPool-&gt;webProcessCache().disabled());

Wouldn&apos;t it be pretty easy to trigger this assertion by clearing website data twice in a row, without returning to the run loop?

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:787
&gt; +            WTF::RunLoop::main().dispatch([pool = makeRef(*processPool)] {

WTF:: should not be needed.
Also, it seems like this should capture the callbackAggregator since we do not want to claim we&apos;re done until we&apos;ve cleared the WebProcess cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508698</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-21 15:23:26 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Comment on attachment 362650 [details]
&gt; Clears the suspended pages
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=362650&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebProcessCache.cpp:54
&gt; &gt; +    if (!capacity() || m_disabled)
&gt; 
&gt; Is this patch based on ToT? Seems like this check should also be in
&gt; addProcessIfNecessary(), not just addProcess().

Oh, I guess my checkout was old. Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebProcessCache.h:52
&gt; &gt; +    bool disabled() const { return m_disabled; }
&gt; 
&gt; isDisabled() and m_isDisabled as per coding style.

Good catch. Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebProcessCache.h:53
&gt; &gt; +    void setDisabled(bool disabled) { m_disabled = disabled; }
&gt; 
&gt; setIsDisabled().

Ditto.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:783
&gt; &gt; +            ASSERT(!processPool-&gt;webProcessCache().disabled());
&gt; 
&gt; Wouldn&apos;t it be pretty easy to trigger this assertion by clearing website
&gt; data twice in a row, without returning to the run loop?
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:787
&gt; &gt; +            WTF::RunLoop::main().dispatch([pool = makeRef(*processPool)] {
&gt; 
&gt; WTF:: should not be needed.
&gt; Also, it seems like this should capture the callbackAggregator since we do
&gt; not want to claim we&apos;re done until we&apos;ve cleared the WebProcess cache.

Hm... good point. I guess I&apos;m gonna just restore the original value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508700</commentid>
    <comment_count>10</comment_count>
      <attachid>362650</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-21 15:28:56 -0800</bug_when>
    <thetext>Comment on attachment 362650
Clears the suspended pages

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

&gt;&gt;&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:783
&gt;&gt;&gt; +            ASSERT(!processPool-&gt;webProcessCache().disabled());
&gt;&gt; 
&gt;&gt; Wouldn&apos;t it be pretty easy to trigger this assertion by clearing website data twice in a row, without returning to the run loop?
&gt; 
&gt; Hm... good point. I guess I&apos;m gonna just restore the original value.

Alternatively, it could be a &quot;isClearingWebsiteData&quot; flag on the WebProcessPool that the WebProcessCache would check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508738</commentid>
    <comment_count>11</comment_count>
      <attachid>362668</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-21 16:27:12 -0800</bug_when>
    <thetext>Created attachment 362668
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508740</commentid>
    <comment_count>12</comment_count>
      <attachid>362668</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-21 16:33:35 -0800</bug_when>
    <thetext>Comment on attachment 362668
Fixes the bug

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508815</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-21 18:58:42 -0800</bug_when>
    <thetext>Committed r241928: &lt;https://trac.webkit.org/changeset/241928&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508890</commentid>
    <comment_count>14</comment_count>
      <attachid>362668</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-02-21 21:50:51 -0800</bug_when>
    <thetext>Comment on attachment 362668
Fixes the bug

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

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:785
&gt; +            // FIXME: We need to delay the clearing of the process cache because ~SuspendedPageProxy() calls maybeShutDown asynchronously.

This is pretty weird. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508891</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-21 21:53:26 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #14)
&gt; Comment on attachment 362668 [details]
&gt; Fixes the bug
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=362668&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:785
&gt; &gt; +            // FIXME: We need to delay the clearing of the process cache because ~SuspendedPageProxy() calls maybeShutDown asynchronously.
&gt; 
&gt; This is pretty weird. :(

Yes, I will clean this up on trunk in a follow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509002</commentid>
    <comment_count>16</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-02-22 08:43:38 -0800</bug_when>
    <thetext>The new API test ProcessSwap.NumberOfCachedProcesses

added in https://trac.webkit.org/changeset/241928/webkit

is failing on iOS.

Build:
https://build.webkit.org/builders/Apple%20iOS%2012%20Simulator%20Release%20WK2%20%28Tests%29/builds/2751</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509003</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-22 08:45:57 -0800</bug_when>
    <thetext>(In reply to Truitt Savell from comment #16)
&gt; The new API test ProcessSwap.NumberOfCachedProcesses
&gt; 
&gt; added in https://trac.webkit.org/changeset/241928/webkit
&gt; 
&gt; is failing on iOS.
&gt; 
&gt; Build:
&gt; https://build.webkit.org/builders/
&gt; Apple%20iOS%2012%20Simulator%20Release%20WK2%20%28Tests%29/builds/2751

Process cache is disabled on devices with less than 3GB of RAM, which likely includes the iOS simulator. We should probably disable the new test on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509005</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-22 08:49:09 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #17)
&gt; (In reply to Truitt Savell from comment #16)
&gt; &gt; The new API test ProcessSwap.NumberOfCachedProcesses
&gt; &gt; 
&gt; &gt; added in https://trac.webkit.org/changeset/241928/webkit
&gt; &gt; 
&gt; &gt; is failing on iOS.
&gt; &gt; 
&gt; &gt; Build:
&gt; &gt; https://build.webkit.org/builders/
&gt; &gt; Apple%20iOS%2012%20Simulator%20Release%20WK2%20%28Tests%29/builds/2751
&gt; 
&gt; Process cache is disabled on devices with less than 3GB of RAM, which likely
&gt; includes the iOS simulator. We should probably disable the new test on iOS.

Done in &lt;https://trac.webkit.org/changeset/241948&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362587</attachid>
            <date>2019-02-20 21:16:02 -0800</date>
            <delta_ts>2019-02-21 14:56:26 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-194894-20190220211601.patch</filename>
            <type>text/plain</type>
            <size>7841</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDE4NTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE5LTAyLTIwICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIERpc2NhcmQgY2FjaGVkIHByb2Nlc3Nl
cyB3aGVuIGNsZWFyaW5nIHdlYnNpdGUgZGF0YSBzdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0ODk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYXIgdGhlIHByb2Nlc3MgY2FjaGUgd2hlbiBj
bGVhcmluZyB0aGUgd2Vic2l0ZSBkYXRhIHN0b3JlIHNvIHRoYXQKKyAgICAgICAgdGhlcmUgaXMg
bm8gd2F5IHRvIGluZmVyIHdoaWNoIHNpdGUgdGhlIHVzZXIgaGFkIHZpc2l0ZWQgYnkgb2JzZXJ2
aW5nCisgICAgICAgIGZvciB3aGljaCBzaXRlcyBXZWJDb250ZW50IHByb2Nlc3NlcyBoYWQgYmVl
biBjYWNoZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Byb2Nlc3NDYWNoZUNhcGFjaXR5XSk6IEFk
ZGVkIGZvciB0ZXN0aW5nLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURh
dGEpOgorCiAyMDE5LTAyLTE4ICBCYWJhayBTaGFmaWVpICA8YnNoYWZpZWlAYXBwbGUuY29tPgog
CiAgICAgICAgIENoZXJyeS1waWNrIHIyNDE2MzUuIHJkYXI6Ly9wcm9ibGVtLzQ4MTY1MjYyCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbQkocmV2aXNpb24gMjQxODU0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHdvcmtpbmcgY29weSkKQEAgLTUxOSw2ICs1MTksMTEg
QEAgLSAoTlNVSW50ZWdlcilfbWF4aW11bVN1c3BlbmRlZFBhZ2VDb3VudAogICAgIHJldHVybiBf
cHJvY2Vzc1Bvb2wtPm1heFN1c3BlbmRlZFBhZ2VDb3VudCgpOwogfQogCistIChOU1VJbnRlZ2Vy
KV9wcm9jZXNzQ2FjaGVDYXBhY2l0eQoreworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPndlYlBy
b2Nlc3NDYWNoZSgpLmNhcGFjaXR5KCk7Cit9CisKIC0gKHNpemVfdClfc2VydmljZVdvcmtlclBy
b2Nlc3NDb3VudAogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oCShyZXZpc2lvbiAyNDE4NTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEw
Myw3IEBACiAtICh2b2lkKV9tYWtlTmV4dFdlYlByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZyBX
S19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xNCksIGlvcygxMi4wKSk7CiAtICh2b2lkKV9tYWtl
TmV4dE5ldHdvcmtQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goMTAuMTQpLCBpb3MoMTIuMCkpOwogLSAoTlNVSW50ZWdlcilfbWF4aW11bVN1c3BlbmRl
ZFBhZ2VDb3VudCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKy0gKE5TVUludGVnZXIpX3Byb2Nlc3NDYWNoZUNhcGFjaXR5IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAvLyBUZXN0IG9u
bHkuIFJldHVybnMgd2ViIHByb2Nlc3NlcyBydW5uaW5nIHdlYiBwYWdlcyAoZG9lcyBub3QgaW5j
bHVkZSB3ZWIgcHJvY2Vzc2VzIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzKQogLSAoc2l6ZV90KV93
ZWJQYWdlQ29udGVudFByb2Nlc3NDb3VudCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMy40
KSwgaW9zKDExLjMpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNDE4NTQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldl
YkNvb2tpZU1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NDYWNoZS5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgi
CiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC03NzYsNiAr
Nzc3LDkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgogCiAgICAg
YXV0byB3ZWJQcm9jZXNzQWNjZXNzVHlwZSA9IGNvbXB1dGVXZWJQcm9jZXNzQWNjZXNzVHlwZUZv
ckRhdGFSZW1vdmFsKGRhdGFUeXBlcywgIWlzUGVyc2lzdGVudCgpKTsKICAgICBpZiAod2ViUHJv
Y2Vzc0FjY2Vzc1R5cGUgIT0gUHJvY2Vzc0FjY2Vzc1R5cGU6Ok5vbmUpIHsKKyAgICAgICAgZm9y
IChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICAgICAgcHJvY2Vz
c1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLmNsZWFyKCk7CisKICAgICAgICAgZm9yIChhdXRvJiBw
cm9jZXNzIDogcHJvY2Vzc2VzKCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAod2ViUHJvY2Vzc0Fj
Y2Vzc1R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUHJvY2Vzc0FjY2Vzc1R5cGU6Ok9ubHlJZkxh
dW5jaGVkOgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjQxODYwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDItMjAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgRGlzY2FyZCBjYWNoZWQgcHJvY2Vzc2VzIHdoZW4gY2xlYXJpbmcg
d2Vic2l0ZSBkYXRhIHN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTQ4OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBhIHRlc3QgY2FzZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJLlByb2Nlc3NTd2FwLk51bWJlck9mQ2FjaGVkUHJvY2Vzc2VzKTogQWRkZWQu
CisKIDIwMTktMDItMTggIEJhYmFrIFNoYWZpZWkgIDxic2hhZmllaUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQXBwbHkgcGF0Y2guIHJkYXI6Ly9wcm9ibGVtLzQ4MTIyNTUzCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0JKHJldmlzaW9uIDI0MTg1NCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0yODM3
LDYgKzI4MzgsNjIgQEAgVEVTVChQcm9jZXNzU3dhcCwgTnVtYmVyT2ZQcmV3YXJtZWRQcm9jZQog
ICAgIEVYUEVDVF9UUlVFKFtwcm9jZXNzUG9vbCBfaGFzUHJld2FybWVkV2ViUHJvY2Vzc10pOwog
fQogCitURVNUKFByb2Nlc3NTd2FwLCBOdW1iZXJPZkNhY2hlZFByb2Nlc3NlcykKK3sKKyAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Z2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKS51c2VzV2ViUHJvY2Vzc0NhY2hlID0gWUVTOworICAgIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkgPSBO
TzsKKyAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7
CisKKyAgICBFWFBFQ1RfR1QoW3Byb2Nlc3NQb29sIF9tYXhpbXVtU3VzcGVuZGVkUGFnZUNvdW50
XSwgMHUpOworICAgIEVYUEVDVF9HVChbcHJvY2Vzc1Bvb2wgX3Byb2Nlc3NDYWNoZUNhcGFjaXR5
XSwgMHUpOworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0
aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBhdXRvIGhhbmRsZXIg
PSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworCisgICAgY29uc3QgdW5zaWdu
ZWQgbWF4U3VzcGVuZGVkUGFnZUNvdW50ID0gW3Byb2Nlc3NQb29sIF9tYXhpbXVtU3VzcGVuZGVk
UGFnZUNvdW50XTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF4U3VzcGVuZGVkUGFn
ZUNvdW50ICsgMjsgaSsrKQorICAgICAgICBbaGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmlu
ZzptYWtlU3RyaW5nKCJwc29uOi8vd3d3LmRvbWFpbi0iLCBpLCAiLmNvbSIpIHRvRGF0YTpwYWdl
Q2FjaGUxQnl0ZXNdOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5k
bGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiUFNPTiJdOworCisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgp
XSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tQU09OTmF2aWdhdGlvbkRlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXhTdXNwZW5kZWRQ
YWdlQ291bnQgKyAxOyBpKyspIHsKKyAgICAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptYWtlU3RyaW5n
KCJwc29uOi8vd3d3LmRvbWFpbi0iLCBpLCAiLmNvbSIpXV07CisgICAgICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworICAgICAgICBkb25lID0gZmFsc2U7CisKKyAgICAgICAgRVhQRUNUX0VRKGkgKyAxLCBb
cHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudF0pOworICAgICAgICBFWFBFQ1RfRVEoaSArIDEs
IFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWRd
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtwcm9jZXNzUG9vbCBfaGFzUHJld2FybWVkV2ViUHJv
Y2Vzc10pOworICAgIH0KKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bWFrZVN0cmluZygicHNvbjov
L3d3dy5kb21haW4tIiwgbWF4U3VzcGVuZGVkUGFnZUNvdW50ICsgMSwgIi5jb20iKV1dOworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgRVhQRUNUX0VRKG1heFN1c3Bl
bmRlZFBhZ2VDb3VudCArIDIsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50XSk7CisgICAg
RVhQRUNUX0VRKG1heFN1c3BlbmRlZFBhZ2VDb3VudCArIDEsIFtwcm9jZXNzUG9vbCBfd2ViUHJv
Y2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWRdKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
W3Byb2Nlc3NQb29sIF9oYXNQcmV3YXJtZWRXZWJQcm9jZXNzXSk7CisKKyAgICBzdGF0aWMgYm9v
bCByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZh
dWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxX
ZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZV0gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRp
c3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICByZWFkeVRvQ29udGlu
dWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlU
b0NvbnRpbnVlKTsKKworICAgIEVYUEVDVF9FUShtYXhTdXNwZW5kZWRQYWdlQ291bnQgKyAxLCBb
cHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudF0pOworICAgIEVYUEVDVF9FUShtYXhTdXNwZW5k
ZWRQYWdlQ291bnQgKyAxLCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJl
d2FybWVkQW5kQ2FjaGVkXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtwcm9jZXNzUG9vbCBfaGFzUHJl
d2FybWVkV2ViUHJvY2Vzc10pOworCit9CisKIHN0YXRpYyBjb25zdCBjaGFyKiB2aXNpYmlsaXR5
Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgKIDxzY3JpcHQ+CiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigncGFnZXNob3cnLCBmdW5jdGlvbihldmVudCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362650</attachid>
            <date>2019-02-21 14:56:27 -0800</date>
            <delta_ts>2019-02-21 16:27:11 -0800</delta_ts>
            <desc>Clears the suspended pages</desc>
            <filename>bug-194894-20190221145626.patch</filename>
            <type>text/plain</type>
            <size>12091</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDE4NDcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE5LTAyLTIxICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIERpc2NhcmQgY2FjaGVkIHByb2Nlc3Nl
cyB3aGVuIGNsZWFyaW5nIHdlYnNpdGUgZGF0YSBzdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0ODk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYXIgdGhlIHByb2Nlc3MgY2FjaGUgd2hlbiBj
bGVhcmluZyB0aGUgd2Vic2l0ZSBkYXRhIHN0b3JlIHNvIHRoYXQgdGhlcmUgaXMgbm8gd2F5IHRv
IGluZmVyCisgICAgICAgIHdoaWNoIHNpdGUgdGhlIHVzZXIgaGFkIHZpc2l0ZWQgYnkgb2JzZXJ2
aW5nIGZvciB3aGljaCBzaXRlcyBXZWJDb250ZW50IHByb2Nlc3NlcyBoYWQgYmVlbiBjYWNoZWQu
CisKKyAgICAgICAgVGhlcmUgaXMgb25lIHN1Ymx0eSBpbiBXZWJzaXRlRGF0YVN0b3JlOjpyZW1v
dmVEYXRhIHRoYXQgd2UgaGF2ZSB0byBkZWxheSB0aGUgY2xlYXJpbmcgb2YKKyAgICAgICAgdGhl
IHdlYiBwcm9jZXNzIGNhY2hlIHVudGlsIHRoZSBuZXh0IHJ1biBsb29wIGJlY2F1c2UgU3VzcGVu
ZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5CisgICAgICAgIGludm9rZXMgV2ViUHJv
Y2Vzc1Byb3h5OjptYXliZVNodXREb3duIGluIHRoZSBuZXh0IHJ1biBsb29wLiBXZSBhbHNvIGhh
dmUgdG8gZGlzYWJsZSB0aGUgcHJvY2VzcworICAgICAgICBjYWNoZSBkdXJpbmcgdGhpcyB0aW1l
IGFzIGl0IHdvdWxkIG90aGVyd2lzZSB0cmlnZ2VyIHRoZSByZXNwb25zaXZlbmVzcyBjaGVjayBv
ZiBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAgICAgY2FuIHRha2UgYXJiaXRyYXJpbHkgbG9uZyB0
aW1lLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgor
ICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9wcm9jZXNzQ2FjaGVDYXBhY2l0eV0pOiBBZGRlZCBm
b3IgdGVzdGluZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzcyk6IEF2b2lkIGFkZGluZyB3
ZWIgcHJvY2Vzc2VzIHRvIHRoZSBjYWNoZSB3aGlsZSB0aGUgc3VzcGVuZGVkCisgICAgICAgIHBh
Z2VzIGFyZSBiZWluZyBjbGVhcmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzQ2Fj
aGUuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpkaXNhYmxlZCBjb25zdCk6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnNldERpc2FibGVkKTog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmhhbmRsZU1lbW9yeVByZXNzdXJlV2FybmluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjbGVhclN1c3BlbmRlZFBhZ2VzKTogQWRk
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKwogMjAxOS0wMi0yMCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBbIGlP
UyBdIExheW91dCBUZXN0IGVkaXRpbmcvaW5wdXQvaW9zL3J0bC1rZXlib2FyZC1pbnB1dC1vbi1m
b2N1cy5odG1sIGlzIGEgVGltZW91dApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc0NhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzQ2FjaGUuY3BwCShyZXZpc2lvbiAyNDE4NDcpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3
IEBAIGJvb2wgV2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzKGNvbnN0IFMKICAgICBBU1NFUlQo
IXByb2Nlc3MtPnByb3Zpc2lvbmFsUGFnZUNvdW50KCkpOwogICAgIEFTU0VSVCghcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5oYXNTdXNwZW5kZWRQYWdlRm9yKHByb2Nlc3MpKTsKIAotICAgIGlmICgh
Y2FwYWNpdHkoKSkKKyAgICBpZiAoIWNhcGFjaXR5KCkgfHwgbV9kaXNhYmxlZCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9u
KCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NDYWNoZS5oCShyZXZpc2lvbiAyNDE4NDcpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDks
OSBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9wcm9j
ZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5zaXplKCk7IH0KIAorICAgIGJvb2wgZGlzYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkOyB9CisgICAgdm9pZCBzZXREaXNhYmxlZChib29s
IGRpc2FibGVkKSB7IG1fZGlzYWJsZWQgPSBkaXNhYmxlZDsgfQorCiAgICAgdm9pZCBjbGVhcigp
OwogICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc0FjdGl2ZShib29sKTsKIApAQCAtNzksNiArODIs
NyBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxDYWNo
ZWRQcm9jZXNzPj4gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbjsKICAgICBSdW5Mb29w
OjpUaW1lcjxXZWJQcm9jZXNzQ2FjaGU+IG1fZXZpY3Rpb25UaW1lcjsKKyAgICBib29sIG1fZGlz
YWJsZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNDE4NDcp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNDAsNyArMTM0MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmhhbmRsZU1l
bW9yeVByZXNzdXIKICAgICAgICAgbV9wcmV3YXJtZWRQcm9jZXNzLT5zaHV0RG93bigpOwogICAg
IEFTU0VSVCghbV9wcmV3YXJtZWRQcm9jZXNzKTsKIAotICAgIG1fc3VzcGVuZGVkUGFnZXMuY2xl
YXIoKTsKKyAgICBjbGVhclN1c3BlbmRlZFBhZ2VzKCk7CiB9CiAKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKQEAgLTIzNTIsNiArMjM1MiwxMSBAQCBib29sIFdlYlByb2Nlc3NQb29s
OjpoYXNTdXNwZW5kZWRQYWdlRm9yCiAgICAgfSkgIT0gbV9zdXNwZW5kZWRQYWdlcy5lbmQoKTsK
IH0KIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJTdXNwZW5kZWRQYWdlcygpCit7CisgICAg
bV9zdXNwZW5kZWRQYWdlcy5jbGVhcigpOworfQorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRN
b2NrTWVkaWFEZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJiBkZXZpY2UpCiB7CiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAkocmV2aXNpb24gMjQxODQ3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNDY4LDYgKzQ2OCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc1N1c3BlbmRlZFBhZ2VGb3IoV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZVBy
b3h5KiA9IG51bGxwdHIpIGNvbnN0OwogICAgIHVuc2lnbmVkIG1heFN1c3BlbmRlZFBhZ2VDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4U3VzcGVuZGVkUGFnZUNvdW50OyB9CiAgICAgUmVmUHRy
PFdlYlByb2Nlc3NQcm94eT4gZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoY29uc3Qg
U3RyaW5nJiwgV2ViUGFnZVByb3h5Jik7CisgICAgdm9pZCBjbGVhclN1c3BlbmRlZFBhZ2VzKCk7
CiAKICAgICB2b2lkIGRpZFJlYWNoR29vZFRpbWVUb1ByZXdhcm0oKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJl
dmlzaW9uIDI0MTg0NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MTQsNiArNTE0LDExIEBAIC0gKE5TVUlu
dGVnZXIpX21heGltdW1TdXNwZW5kZWRQYWdlQ291bnQKICAgICByZXR1cm4gX3Byb2Nlc3NQb29s
LT5tYXhTdXNwZW5kZWRQYWdlQ291bnQoKTsKIH0KIAorLSAoTlNVSW50ZWdlcilfcHJvY2Vzc0Nh
Y2hlQ2FwYWNpdHkKK3sKKyAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUo
KS5jYXBhY2l0eSgpOworfQorCiAtIChzaXplX3QpX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQK
IHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAkocmV2
aXNpb24gMjQxODQ3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQAogLSAo
dm9pZClfbWFrZU5leHRXZWJQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuMTQpLCBpb3MoMTIuMCkpOwogLSAodm9pZClfbWFrZU5leHROZXR3b3Jr
UHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjE0
KSwgaW9zKDEyLjApKTsKIC0gKE5TVUludGVnZXIpX21heGltdW1TdXNwZW5kZWRQYWdlQ291bnQg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Cist
IChOU1VJbnRlZ2VyKV9wcm9jZXNzQ2FjaGVDYXBhY2l0eSBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLy8gVGVzdCBvbmx5LiBSZXR1cm5z
IHdlYiBwcm9jZXNzZXMgcnVubmluZyB3ZWIgcGFnZXMgKGRvZXMgbm90IGluY2x1ZGUgd2ViIHBy
b2Nlc3NlcyBydW5uaW5nIHNlcnZpY2Ugd29ya2VycykKIC0gKHNpemVfdClfd2ViUGFnZUNvbnRl
bnRQcm9jZXNzQ291bnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4z
KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjQxODQ3KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3Rv
cmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1
ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAtNzc4LDYgKzc3OSwxNyBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAKICAgICBhdXRvIHdl
YlByb2Nlc3NBY2Nlc3NUeXBlID0gY29tcHV0ZVdlYlByb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YVJl
bW92YWwoZGF0YVR5cGVzLCAhaXNQZXJzaXN0ZW50KCkpOwogICAgIGlmICh3ZWJQcm9jZXNzQWNj
ZXNzVHlwZSAhPSBQcm9jZXNzQWNjZXNzVHlwZTo6Tm9uZSkgeworICAgICAgICBmb3IgKGF1dG8m
IHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghcHJv
Y2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLmRpc2FibGVkKCkpOworICAgICAgICAgICAgcHJv
Y2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnNldERpc2FibGVkKHRydWUpOworICAgICAgICAg
ICAgcHJvY2Vzc1Bvb2wtPmNsZWFyU3VzcGVuZGVkUGFnZXMoKTsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSBuZWVkIHRvIGRlbGF5IHRoZSBjbGVhcmluZyBvZiB0aGUgcHJvY2VzcyBjYWNoZSBi
ZWNhdXNlIH5TdXNwZW5kZWRQYWdlUHJveHkoKSBjYWxscyBtYXliZVNodXREb3duIGFzeW5jaHJv
bm91c2x5LgorICAgICAgICAgICAgV1RGOjpSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Bvb2wg
PSBtYWtlUmVmKCpwcm9jZXNzUG9vbCldIHsKKyAgICAgICAgICAgICAgICBwb29sLT53ZWJQcm9j
ZXNzQ2FjaGUoKS5jbGVhcigpOworICAgICAgICAgICAgICAgIHBvb2wtPndlYlByb2Nlc3NDYWNo
ZSgpLnNldERpc2FibGVkKGZhbHNlKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKICAg
ICAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc2VzKCkpIHsKICAgICAgICAgICAgIHN3
aXRjaCAod2ViUHJvY2Vzc0FjY2Vzc1R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUHJvY2Vzc0Fj
Y2Vzc1R5cGU6Ok9ubHlJZkxhdW5jaGVkOgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQxODQ3KQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDItMjEgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGlzY2FyZCBjYWNoZWQgcHJvY2Vz
c2VzIHdoZW4gY2xlYXJpbmcgd2Vic2l0ZSBkYXRhIHN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ4OTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgY2FzZS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRp
b24ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJLlByb2Nlc3NTd2FwLk51bWJlck9mQ2FjaGVk
UHJvY2Vzc2VzKTogQWRkZWQuCisKIDIwMTktMDItMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKFBTT04pICJSZWxvYWQgd2l0aG91dCBjb250
ZW50IGV4dGVuc2lvbnMiIGRvZXMgbm90IHdvcmsgd2hlbiB0aGUgbWFpbiByZXNvdXJjZSBpcyBi
bG9ja2VkCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nl
c3NTd2FwT25OYXZpZ2F0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0JKHJldmlzaW9uIDI0
MTg0NykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3
YXBPbk5hdmlnYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICNpbXBv
cnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3
dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCkBAIC0zMDUxLDYgKzMwNTIsNjIgQEAgVEVTVChQcm9jZXNzU3dhcCwgTnVt
YmVyT2ZQcmV3YXJtZWRQcm9jZQogICAgIEVYUEVDVF9UUlVFKFtwcm9jZXNzUG9vbCBfaGFzUHJl
d2FybWVkV2ViUHJvY2Vzc10pOwogfQogCitURVNUKFByb2Nlc3NTd2FwLCBOdW1iZXJPZkNhY2hl
ZFByb2Nlc3NlcykKK3sKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVT
OworICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS51c2VzV2ViUHJvY2Vzc0NhY2hl
ID0gWUVTOworICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcmV3YXJtc1Byb2Nl
c3Nlc0F1dG9tYXRpY2FsbHkgPSBOTzsKKyAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhb
W1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBFWFBFQ1RfR1QoW3Byb2Nlc3NQb29sIF9tYXhp
bXVtU3VzcGVuZGVkUGFnZUNvdW50XSwgMHUpOworICAgIEVYUEVDVF9HVChbcHJvY2Vzc1Bvb2wg
X3Byb2Nlc3NDYWNoZUNhcGFjaXR5XSwgMHUpOworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgp
XTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0p
OworCisgICAgY29uc3QgdW5zaWduZWQgbWF4U3VzcGVuZGVkUGFnZUNvdW50ID0gW3Byb2Nlc3NQ
b29sIF9tYXhpbXVtU3VzcGVuZGVkUGFnZUNvdW50XTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbWF4U3VzcGVuZGVkUGFnZUNvdW50ICsgMjsgaSsrKQorICAgICAgICBbaGFuZGxlciBh
ZGRNYXBwaW5nRnJvbVVSTFN0cmluZzptYWtlU3RyaW5nKCJwc29uOi8vd3d3LmRvbWFpbi0iLCBp
LCAiLmNvbSIpIHRvRGF0YTpwYWdlQ2FjaGUxQnl0ZXNdOworICAgIFt3ZWJWaWV3Q29uZmlndXJh
dGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiUFNP
TiJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZp
ZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tQ
U09OTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtYXhTdXNwZW5kZWRQYWdlQ291bnQgKyAxOyBpKyspIHsKKyAgICAgICAgTlNVUkxS
ZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzptYWtlU3RyaW5nKCJwc29uOi8vd3d3LmRvbWFpbi0iLCBpLCAiLmNvbSIpXV07
CisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgICAgICBkb25lID0gZmFsc2U7CisKKyAgICAg
ICAgRVhQRUNUX0VRKGkgKyAxLCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudF0pOworICAg
ICAgICBFWFBFQ1RfRVEoaSArIDEsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3Jp
bmdQcmV3YXJtZWRBbmRDYWNoZWRdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtwcm9jZXNzUG9v
bCBfaGFzUHJld2FybWVkV2ViUHJvY2Vzc10pOworICAgIH0KKworICAgIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6bWFrZVN0cmluZygicHNvbjovL3d3dy5kb21haW4tIiwgbWF4U3VzcGVuZGVkUGFnZUNvdW50
ICsgMSwgIi5jb20iKV1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisg
ICAgRVhQRUNUX0VRKG1heFN1c3BlbmRlZFBhZ2VDb3VudCArIDIsIFtwcm9jZXNzUG9vbCBfd2Vi
UHJvY2Vzc0NvdW50XSk7CisgICAgRVhQRUNUX0VRKG1heFN1c3BlbmRlZFBhZ2VDb3VudCArIDEs
IFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWRd
KTsKKyAgICBFWFBFQ1RfRkFMU0UoW3Byb2Nlc3NQb29sIF9oYXNQcmV3YXJtZWRXZWJQcm9jZXNz
XSk7CisKKyAgICBzdGF0aWMgYm9vbCByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKyAgICBbW1dL
V2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tX
ZWJzaXRlRGF0YVN0b3JlIF9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZV0gbW9k
aWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewor
ICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKworICAgIEVYUEVDVF9FUSgxdSwgW3By
b2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRdKTsKKyAgICBFWFBFQ1RfRVEoMXUsIFtwcm9jZXNz
UG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWRdKTsKKyAgICBF
WFBFQ1RfRkFMU0UoW3Byb2Nlc3NQb29sIF9oYXNQcmV3YXJtZWRXZWJQcm9jZXNzXSk7CisKK30K
Kwogc3RhdGljIGNvbnN0IGNoYXIqIHZpc2liaWxpdHlCeXRlcyA9IFIiUFNPTlJFU09VUkNFKAog
PHNjcmlwdD4KIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwYWdlc2hvdycsIGZ1bmN0aW9uKGV2
ZW50KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362668</attachid>
            <date>2019-02-21 16:27:12 -0800</date>
            <delta_ts>2019-02-21 16:33:35 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-194894-20190221162712.patch</filename>
            <type>text/plain</type>
            <size>12287</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDE5MjIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE5LTAyLTIxICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIERpc2NhcmQgY2FjaGVkIHByb2Nlc3Nl
cyB3aGVuIGNsZWFyaW5nIHdlYnNpdGUgZGF0YSBzdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0ODk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYXIgdGhlIHByb2Nlc3MgY2FjaGUgd2hlbiBj
bGVhcmluZyB0aGUgd2Vic2l0ZSBkYXRhIHN0b3JlIHNvIHRoYXQgdGhlcmUgaXMgbm8gd2F5IHRv
IGluZmVyCisgICAgICAgIHdoaWNoIHNpdGUgdGhlIHVzZXIgaGFkIHZpc2l0ZWQgYnkgb2JzZXJ2
aW5nIGZvciB3aGljaCBzaXRlcyBXZWJDb250ZW50IHByb2Nlc3NlcyBoYWQgYmVlbiBjYWNoZWQu
CisKKyAgICAgICAgVGhlcmUgaXMgb25lIHN1Ymx0eSBpbiBXZWJzaXRlRGF0YVN0b3JlOjpyZW1v
dmVEYXRhIHRoYXQgd2UgaGF2ZSB0byBkZWxheSB0aGUgY2xlYXJpbmcgb2YKKyAgICAgICAgdGhl
IHdlYiBwcm9jZXNzIGNhY2hlIHVudGlsIHRoZSBuZXh0IHJ1biBsb29wIGJlY2F1c2UgU3VzcGVu
ZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5CisgICAgICAgIGludm9rZXMgV2ViUHJv
Y2Vzc1Byb3h5OjptYXliZVNodXREb3duIGluIHRoZSBuZXh0IHJ1biBsb29wLiBXZSBhbHNvIGhh
dmUgdG8gZGlzYWJsZSB0aGUgcHJvY2VzcworICAgICAgICBjYWNoZSBkdXJpbmcgdGhpcyB0aW1l
IGFzIGl0IHdvdWxkIG90aGVyd2lzZSB0cmlnZ2VyIHRoZSByZXNwb25zaXZlbmVzcyBjaGVjayBv
ZiBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAgICAgY2FuIHRha2UgYXJiaXRyYXJpbHkgbG9uZyB0
aW1lLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgor
ICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9wcm9jZXNzQ2FjaGVDYXBhY2l0eV0pOiBBZGRlZCBm
b3IgdGVzdGluZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzcyk6IEF2b2lkIGFkZGluZyB3
ZWIgcHJvY2Vzc2VzIHRvIHRoZSBjYWNoZSB3aGlsZSB0aGUgc3VzcGVuZGVkCisgICAgICAgIHBh
Z2VzIGFyZSBiZWluZyBjbGVhcmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzQ2Fj
aGUuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpkaXNhYmxlZCBjb25zdCk6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnNldERpc2FibGVkKTog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmhhbmRsZU1lbW9yeVByZXNzdXJlV2FybmluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjbGVhclN1c3BlbmRlZFBhZ2VzKTogQWRk
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKwogMjAxOS0wMi0yMSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBBUEkgdGVzdCBjcmFzaGVzIGFm
dGVyIHIyNDE4NTUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2Fj
aGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3ND
YWNoZS5jcHAJKHJldmlzaW9uIDI0MTkyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBX
ZWJQcm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3NJZlBvc3NpYgogICAgIEFTU0VSVCghcHJvY2Vzcy0+
cHJvdmlzaW9uYWxQYWdlQ291bnQoKSk7CiAgICAgQVNTRVJUKCFwcm9jZXNzLT5wcm9jZXNzUG9v
bCgpLmhhc1N1c3BlbmRlZFBhZ2VGb3IocHJvY2VzcykpOwogCi0gICAgaWYgKCFjYXBhY2l0eSgp
KQorICAgIGlmICghY2FwYWNpdHkoKSB8fCBtX2lzRGlzYWJsZWQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmIChNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmlzVW5k
ZXJNZW1vcnlQcmVzc3VyZSgpKSB7CkBAIC04NSw3ICs4NSw3IEBAIGJvb2wgV2ViUHJvY2Vzc0Nh
Y2hlOjphZGRQcm9jZXNzKGNvbnN0IFMKICAgICBBU1NFUlQoIXByb2Nlc3MtPnByb3Zpc2lvbmFs
UGFnZUNvdW50KCkpOwogICAgIEFTU0VSVCghcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5oYXNTdXNw
ZW5kZWRQYWdlRm9yKHByb2Nlc3MpKTsKIAotICAgIGlmICghY2FwYWNpdHkoKSkKKyAgICBpZiAo
IWNhcGFjaXR5KCkgfHwgbV9pc0Rpc2FibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pc1VuZGVyTWVtb3J5UHJl
c3N1cmUoKSkgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hl
LmgJKHJldmlzaW9uIDI0MTkyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKIAogICAg
IHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxl
RG9tYWluLnNpemUoKTsgfQogCisgICAgdm9pZCBzZXRJc0Rpc2FibGVkKGJvb2wgaXNEaXNhYmxl
ZCkgeyBtX2lzRGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9CisKICAgICB2b2lkIGNsZWFyKCk7CiAg
ICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzQWN0aXZlKGJvb2wpOwogCkBAIC02MSw2ICs2Myw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBhZGRQcm9jZXNzKGNvbnN0IFN0cmluZyYgcmVnaXN0cmFibGVE
b21haW4sIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYpOwogCiAgICAgdW5zaWduZWQgbV9jYXBhY2l0
eSB7IDAgfTsKKyAgICBib29sIG1faXNEaXNhYmxlZCB7IGZhbHNlIH07CiAKICAgICBjbGFzcyBD
YWNoZWRQcm9jZXNzIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNDE5
MjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzNDAsNyArMTM0MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmhhbmRs
ZU1lbW9yeVByZXNzdXIKICAgICAgICAgbV9wcmV3YXJtZWRQcm9jZXNzLT5zaHV0RG93bigpOwog
ICAgIEFTU0VSVCghbV9wcmV3YXJtZWRQcm9jZXNzKTsKIAotICAgIG1fc3VzcGVuZGVkUGFnZXMu
Y2xlYXIoKTsKKyAgICBjbGVhclN1c3BlbmRlZFBhZ2VzKCk7CiB9CiAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKQEAgLTIzNTIsNiArMjM1MiwxMSBAQCBib29sIFdlYlByb2Nlc3NQ
b29sOjpoYXNTdXNwZW5kZWRQYWdlRm9yCiAgICAgfSkgIT0gbV9zdXNwZW5kZWRQYWdlcy5lbmQo
KTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJTdXNwZW5kZWRQYWdlcygpCit7Cisg
ICAgbV9zdXNwZW5kZWRQYWdlcy5jbGVhcigpOworfQorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjph
ZGRNb2NrTWVkaWFEZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJiBkZXZpY2UpCiB7CiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAkocmV2aXNpb24gMjQxOTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNDY4LDYgKzQ2OCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc1N1c3BlbmRlZFBhZ2VGb3IoV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFn
ZVByb3h5KiA9IG51bGxwdHIpIGNvbnN0OwogICAgIHVuc2lnbmVkIG1heFN1c3BlbmRlZFBhZ2VD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4U3VzcGVuZGVkUGFnZUNvdW50OyB9CiAgICAgUmVm
UHRyPFdlYlByb2Nlc3NQcm94eT4gZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoY29u
c3QgU3RyaW5nJiwgV2ViUGFnZVByb3h5Jik7CisgICAgdm9pZCBjbGVhclN1c3BlbmRlZFBhZ2Vz
KCk7CiAKICAgICB2b2lkIGRpZFJlYWNoR29vZFRpbWVUb1ByZXdhcm0oKTsKIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0J
KHJldmlzaW9uIDI0MTkyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MTQsNiArNTE0LDExIEBAIC0gKE5T
VUludGVnZXIpX21heGltdW1TdXNwZW5kZWRQYWdlQ291bnQKICAgICByZXR1cm4gX3Byb2Nlc3NQ
b29sLT5tYXhTdXNwZW5kZWRQYWdlQ291bnQoKTsKIH0KIAorLSAoTlNVSW50ZWdlcilfcHJvY2Vz
c0NhY2hlQ2FwYWNpdHkKK3sKKyAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2Fj
aGUoKS5jYXBhY2l0eSgpOworfQorCiAtIChzaXplX3QpX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291
bnQKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAko
cmV2aXNpb24gMjQxOTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQAog
LSAodm9pZClfbWFrZU5leHRXZWJQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3MoMTIuMCkpOwogLSAodm9pZClfbWFrZU5leHROZXR3
b3JrUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjE0KSwgaW9zKDEyLjApKTsKIC0gKE5TVUludGVnZXIpX21heGltdW1TdXNwZW5kZWRQYWdlQ291
bnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CistIChOU1VJbnRlZ2VyKV9wcm9jZXNzQ2FjaGVDYXBhY2l0eSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLy8gVGVzdCBvbmx5LiBSZXR1
cm5zIHdlYiBwcm9jZXNzZXMgcnVubmluZyB3ZWIgcGFnZXMgKGRvZXMgbm90IGluY2x1ZGUgd2Vi
IHByb2Nlc3NlcyBydW5uaW5nIHNlcnZpY2Ugd29ya2VycykKIC0gKHNpemVfdClfd2ViUGFnZUNv
bnRlbnRQcm9jZXNzQ291bnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygx
MS4zKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjQxOTIyKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0
YXRpc3RpY3MuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAtNzc4LDYgKzc3OSwx
NiBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uCiAKICAgICBhdXRv
IHdlYlByb2Nlc3NBY2Nlc3NUeXBlID0gY29tcHV0ZVdlYlByb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0
YVJlbW92YWwoZGF0YVR5cGVzLCAhaXNQZXJzaXN0ZW50KCkpOwogICAgIGlmICh3ZWJQcm9jZXNz
QWNjZXNzVHlwZSAhPSBQcm9jZXNzQWNjZXNzVHlwZTo6Tm9uZSkgeworICAgICAgICBmb3IgKGF1
dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQ
b29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5zZXRJc0Rpc2FibGVkKHRydWUpOworICAgICAgICAgICAg
cHJvY2Vzc1Bvb2wtPmNsZWFyU3VzcGVuZGVkUGFnZXMoKTsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBXZSBuZWVkIHRvIGRlbGF5IHRoZSBjbGVhcmluZyBvZiB0aGUgcHJvY2VzcyBjYWNoZSBiZWNh
dXNlIH5TdXNwZW5kZWRQYWdlUHJveHkoKSBjYWxscyBtYXliZVNodXREb3duIGFzeW5jaHJvbm91
c2x5LgorICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwb29sID0gbWFrZVJl
ZigqcHJvY2Vzc1Bvb2wpXSB7CisgICAgICAgICAgICAgICAgcG9vbC0+d2ViUHJvY2Vzc0NhY2hl
KCkuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBwb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5zZXRJ
c0Rpc2FibGVkKGZhbHNlKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKICAgICAgICAg
Zm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc2VzKCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAo
d2ViUHJvY2Vzc0FjY2Vzc1R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUHJvY2Vzc0FjY2Vzc1R5
cGU6Ok9ubHlJZkxhdW5jaGVkOgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQxOTIyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDItMjEgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGlzY2FyZCBjYWNoZWQgcHJvY2Vzc2VzIHdo
ZW4gY2xlYXJpbmcgd2Vic2l0ZSBkYXRhIHN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ4OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgY2FzZS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJLlByb2Nlc3NTd2FwLk51bWJlck9mQ2FjaGVkUHJvY2Vz
c2VzKTogQWRkZWQuCisKIDIwMTktMDItMjEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBMZWFrIG9mIENGRXJyb3JSZWYgb2JqZWN0cyAoMS45MiBLYnl0ZXMp
IGluIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudCBydW5uaW5nIFdlYktp
dCBsYXlvdXQgdGVzdHMgb24gaU9TIFNpbXVsYXRvcgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCShyZXZpc2lvbiAyNDE5MjIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw2ICs1Miw3IEBACiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzA1OCw2ICszMDU5LDYy
IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE51bWJlck9mUHJld2FybWVkUHJvY2UKICAgICBFWFBFQ1Rf
VFJVRShbcHJvY2Vzc1Bvb2wgX2hhc1ByZXdhcm1lZFdlYlByb2Nlc3NdKTsKIH0KIAorVEVTVChQ
cm9jZXNzU3dhcCwgTnVtYmVyT2ZDYWNoZWRQcm9jZXNzZXMpCit7CisgICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nl
c3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Z2V0KCkudXNlc1dlYlByb2Nlc3NDYWNoZSA9IFlFUzsKKyAgICBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5ID0gTk87CisgICAgYXV0
byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgRVhQ
RUNUX0dUKFtwcm9jZXNzUG9vbCBfbWF4aW11bVN1c3BlbmRlZFBhZ2VDb3VudF0sIDB1KTsKKyAg
ICBFWFBFQ1RfR1QoW3Byb2Nlc3NQb29sIF9wcm9jZXNzQ2FjaGVDYXBhY2l0eV0sIDB1KTsKKwor
ICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRQcm9j
ZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhb
W1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKKworICAgIGNvbnN0IHVuc2lnbmVkIG1heFN1c3Bl
bmRlZFBhZ2VDb3VudCA9IFtwcm9jZXNzUG9vbCBfbWF4aW11bVN1c3BlbmRlZFBhZ2VDb3VudF07
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heFN1c3BlbmRlZFBhZ2VDb3VudCArIDI7
IGkrKykKKyAgICAgICAgW2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6bWFrZVN0cmlu
ZygicHNvbjovL3d3dy5kb21haW4tIiwgaSwgIi5jb20iKSB0b0RhdGE6cGFnZUNhY2hlMUJ5dGVz
XTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVy
LmdldCgpIGZvclVSTFNjaGVtZTpAIlBTT04iXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF4U3VzcGVuZGVkUGFnZUNvdW50ICsg
MTsgaSsrKSB7CisgICAgICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bWFrZVN0cmluZygicHNvbjovL3d3
dy5kb21haW4tIiwgaSwgIi5jb20iKV1dOworICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICAg
ICAgZG9uZSA9IGZhbHNlOworCisgICAgICAgIEVYUEVDVF9FUShpICsgMSwgW3Byb2Nlc3NQb29s
IF93ZWJQcm9jZXNzQ291bnRdKTsKKyAgICAgICAgRVhQRUNUX0VRKGkgKyAxLCBbcHJvY2Vzc1Bv
b2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShbcHJvY2Vzc1Bvb2wgX2hhc1ByZXdhcm1lZFdlYlByb2Nlc3NdKTsKKyAg
ICB9CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1ha2VTdHJpbmcoInBzb246Ly93d3cuZG9tYWlu
LSIsIG1heFN1c3BlbmRlZFBhZ2VDb3VudCArIDEsICIuY29tIildXTsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIEVYUEVDVF9FUShtYXhTdXNwZW5kZWRQYWdlQ291
bnQgKyAyLCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudF0pOworICAgIEVYUEVDVF9FUSht
YXhTdXNwZW5kZWRQYWdlQ291bnQgKyAxLCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudEln
bm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtwcm9jZXNzUG9v
bCBfaGFzUHJld2FybWVkV2ViUHJvY2Vzc10pOworCisgICAgc3RhdGljIGJvb2wgcmVhZHlUb0Nv
bnRpbnVlID0gZmFsc2U7CisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9y
ZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsV2Vic2l0ZURhdGFU
eXBlc0luY2x1ZGluZ1ByaXZhdGVdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0g
Y29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7
CisKKyAgICBFWFBFQ1RfRVEoMXUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50XSk7Cisg
ICAgRVhQRUNUX0VRKDF1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJl
d2FybWVkQW5kQ2FjaGVkXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtwcm9jZXNzUG9vbCBfaGFzUHJl
d2FybWVkV2ViUHJvY2Vzc10pOworCit9CisKIHN0YXRpYyBjb25zdCBjaGFyKiB2aXNpYmlsaXR5
Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgKIDxzY3JpcHQ+CiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigncGFnZXNob3cnLCBmdW5jdGlvbihldmVudCkgewo=
</data>
<flag name="review"
          id="379280"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>