<?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>211190</bug_id>
          
          <creation_ts>2020-04-29 10:05:15 -0700</creation_ts>
          <short_desc>REGRESSION: [ iOS ] http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion tests are flaky crashing, failing an timing out.</short_desc>
          <delta_ts>2020-05-01 11:35:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 13</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=209634</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=211305</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="Jason Lawrence">Lawrence.j</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1647037</commentid>
    <comment_count>0</comment_count>
    <who name="Jason Lawrence">Lawrence.j</who>
    <bug_when>2020-04-29 10:05:15 -0700</bug_when>
    <thetext>http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database.html 
http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion.html

Description:
These tests are flaky crashing on iOS wk2 Debug. They are flaky timing out also, primarily on Release. The first, with database in the URL, is also flaky failing on Release. The flaky timeouts are apparent throughout the visible history. The flaky crashes and failures appear to have started on 04/27/2020.

History:
https://results.webkit.org/?suite=layout-tests&amp;suite=layout-tests&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fstandalone-web-application-exempt-from-website-data-deletion-database.html&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fstandalone-web-application-exempt-from-website-data-deletion.html&amp;platform=ios&amp;limit=50000

Crash log:
No crash log found for com.apple.WebKit.Networking.Development:50857.

stdout:

stderr:
MRMediaRemoteSetNowPlayingApplicationPlaybackStateForOrigin(stopped) failed with error 3
ERROR: SQLite database failed to set journal_mode to WAL, error: database is locked
./platform/sql/SQLiteDatabase.cpp(175) : void WebCore::SQLiteDatabase::useWALJournalMode()
ERROR: SQLite database failed to checkpoint: database is locked
./platform/sql/SQLiteDatabase.cpp(185) : void WebCore::SQLiteDatabase::useWALJournalMode()
ERROR: Unable to prepare statement to fetch schema for the ObservedDomains table.
/Volumes/Data/slave/ios-simulator-13-debug/build/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp(507) : void WebKit::ResourceLoadStatisticsDatabaseStore::openAndUpdateSchemaIfNecessary()
SHOULD NEVER BE REACHED
/Volumes/Data/slave/ios-simulator-13-debug/build/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp(508) : void WebKit::ResourceLoadStatisticsDatabaseStore::openAndUpdateSchemaIfNecessary()
1   0x11ca85f99 WTFCrash
2   0x109ac1ccb WTFCrashWithInfo(int, char const*, char const*, int)
3   0x10a1d5ddf WebKit::ResourceLoadStatisticsDatabaseStore::openAndUpdateSchemaIfNecessary()
4   0x10a1d5966 WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore(WebKit::WebResourceLoadStatisticsStore&amp;, WTF::WorkQueue&amp;, WebKit::ShouldIncludeLocalhost, WTF::String const&amp;, PAL::SessionID)
5   0x10a1d6863 WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore(WebKit::WebResourceLoadStatisticsStore&amp;, WTF::WorkQueue&amp;, WebKit::ShouldIncludeLocalhost, WTF::String const&amp;, PAL::SessionID)
6   0x10a27340c std::__1::__unique_if&lt;WebKit::ResourceLoadStatisticsDatabaseStore&gt;::__unique_single std::__1::make_unique&lt;WebKit::ResourceLoadStatisticsDatabaseStore, WebKit::WebResourceLoadStatisticsStore&amp;, WTF::Ref&lt;WTF::WorkQueue, WTF::DumbPtrTraits&lt;WTF::WorkQueue&gt; &gt;&amp;, WebKit::ShouldIncludeLocalhost const&amp;, WTF::String const&amp;, PAL::SessionID const&amp;&gt;(WebKit::WebResourceLoadStatisticsStore&amp;, WTF::Ref&lt;WTF::WorkQueue, WTF::DumbPtrTraits&lt;WTF::WorkQueue&gt; &gt;&amp;, WebKit::ShouldIncludeLocalhost const&amp;, WTF::String const&amp;, PAL::SessionID const&amp;)
7   0x10a272ff3 decltype(auto) WTF::makeUnique&lt;WebKit::ResourceLoadStatisticsDatabaseStore, WebKit::WebResourceLoadStatisticsStore&amp;, WTF::Ref&lt;WTF::WorkQueue, WTF::DumbPtrTraits&lt;WTF::WorkQueue&gt; &gt;&amp;, WebKit::ShouldIncludeLocalhost const&amp;, WTF::String const&amp;, PAL::SessionID const&amp;&gt;(WebKit::WebResourceLoadStatisticsStore&amp;, WTF::Ref&lt;WTF::WorkQueue, WTF::DumbPtrTraits&lt;WTF::WorkQueue&gt; &gt;&amp;, WebKit::ShouldIncludeLocalhost const&amp;, WTF::String const&amp;, PAL::SessionID const&amp;)
8   0x10a272d46 WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore(WebKit::NetworkSession&amp;, WTF::String const&amp;, WebKit::ShouldIncludeLocalhost, WebCore::ResourceLoadStatistics::IsEphemeral)::$_42::operator()() const
9   0x10a272bfe WTF::Detail::CallableWrapper&lt;WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore(WebKit::NetworkSession&amp;, WTF::String const&amp;, WebKit::ShouldIncludeLocalhost, WebCore::ResourceLoadStatistics::IsEphemeral)::$_42, void&gt;::call()
10  0x109ba54c2 WTF::Function&lt;void ()&gt;::operator()() const
11  0x10a2494ae WebKit::WebResourceLoadStatisticsStore::postTask(WTF::Function&lt;void ()&gt;&amp;&amp;)::&apos;lambda&apos;()::operator()() const
12  0x10a2493de WTF::Detail::CallableWrapper&lt;WebKit::WebResourceLoadStatisticsStore::postTask(WTF::Function&lt;void ()&gt;&amp;&amp;)::&apos;lambda&apos;(), void&gt;::call()
13  0x11cab0732 WTF::Function&lt;void ()&gt;::operator()() const
14  0x11cbbb00e WTF::WorkQueue::dispatch(WTF::Function&lt;void ()&gt;&amp;&amp;)::$_0::operator()() const
15  0x11cbbb202 WTF::BlockPtr&lt;void ()&gt; WTF::BlockPtr&lt;void ()&gt;::fromCallable&lt;WTF::WorkQueue::dispatch(WTF::Function&lt;void ()&gt;&amp;&amp;)::$_0&gt;(WTF::WorkQueue::dispatch(WTF::Function&lt;void ()&gt;&amp;&amp;)::$_0)::&apos;lambda&apos;(void*)::operator()(void*) const
16  0x11cbbb1d5 WTF::BlockPtr&lt;void ()&gt; WTF::BlockPtr&lt;void ()&gt;::fromCallable&lt;WTF::WorkQueue::dispatch(WTF::Function&lt;void ()&gt;&amp;&amp;)::$_0&gt;(WTF::WorkQueue::dispatch(WTF::Function&lt;void ()&gt;&amp;&amp;)::$_0)::&apos;lambda&apos;(void*)::__invoke(void*)
17  0x10971a951 _dispatch_call_block_and_release
18  0x10971b8cb _dispatch_client_callout
19  0x10972160c _dispatch_lane_serial_drain
20  0x109722044 _dispatch_lane_invoke
21  0x10972c0c4 _dispatch_workloop_worker_thread
22  0x115fcaa3d _pthread_wqthread
23  0x115fc9b77 start_wqthread


Diff:
--- /Volumes/Data/slave/ipados-simulator-13-release-tests-wk2/build/layout-test-results/http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database-expected.txt
+++ /Volumes/Data/slave/ipados-simulator-13-release-tests-wk2/build/layout-test-results/http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database-actual.txt
@@ -1,5 +1,6 @@
 Check that non-cookie website data does not get removed after a period of no user interaction if the website is a standalone web application.
 
+FAIL: http://127.0.0.1:8000 didn&apos;t get classified as prevalent.
 Before deletion: Client-side cookie exists.
 Before deletion: HttpOnly cookie exists.
 Before deletion: Regular server-side cookie exists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647039</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-29 10:05:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/62606519&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647047</commentid>
    <comment_count>2</comment_count>
    <who name="Jason Lawrence">Lawrence.j</who>
    <bug_when>2020-04-29 10:23:07 -0700</bug_when>
    <thetext>I can reproduce the failure issue on release with r260802, r260801, and r260897.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647049</commentid>
    <comment_count>3</comment_count>
    <who name="Jason Lawrence">Lawrence.j</who>
    <bug_when>2020-04-29 10:23:49 -0700</bug_when>
    <thetext>reproduction command: run-webkit-tests --iterations 99 --exit-after-n-failures 2 --force -f --ios-simulator http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647065</commentid>
    <comment_count>4</comment_count>
    <who name="Jason Lawrence">Lawrence.j</who>
    <bug_when>2020-04-29 10:46:56 -0700</bug_when>
    <thetext>It looks like there&apos;s two more resourceLoadStatistics tests affected by this issue:
http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects-database.html
http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction-database.html

New History link:
https://results.webkit.org/?suite=layout-tests&amp;suite=layout-tests&amp;suite=layout-tests&amp;suite=layout-tests&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fstandalone-web-application-exempt-from-website-data-deletion-database.html&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fstandalone-web-application-exempt-from-website-data-deletion.html&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fstrip-referrer-to-origin-for-prevalent-subresource-redirects-database.html&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fthird-party-cookie-blocking-on-sites-without-user-interaction-database.html&amp;platform=ios&amp;limit=50000&amp;style=debug&amp;style=release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647212</commentid>
    <comment_count>5</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-04-29 17:11:24 -0700</bug_when>
    <thetext>We probably have a number of distinct issues called out in this bug, but r260841 looks like it landed right before we started seeing text failures with at least these two tests:

https://results.webkit.org/?suite=layout-tests&amp;suite=layout-tests&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fstrip-referrer-to-origin-for-prevalent-subresource-redirects-database.html&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fthird-party-cookie-blocking-on-sites-without-user-interaction-database.html&amp;platform=ios&amp;limit=50000&amp;style=debug&amp;style=release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647213</commentid>
    <comment_count>6</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-04-29 17:15:11 -0700</bug_when>
    <thetext>These two:
http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database.html 
http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion.html

were added 4 weeks ago with https://trac.webkit.org/changeset/259440/webkit (which was reverted then re-landed for test issues), and they seem to have been flaky timeouts on iOS bots from the beginning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647218</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-04-29 17:22:29 -0700</bug_when>
    <thetext>http://trac.webkit.org/r260791 may be related to the WAL errors in the crashes called out in the description

cc&apos;ing some folks, but I think we need this to be split up into distinct bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647219</commentid>
    <comment_count>8</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-29 17:26:21 -0700</bug_when>
    <thetext>It seems like the problem is multiple threads trying to access the same database file simultaneously. This likely has to do with the fact that the standalone web application tests create their own website data store at the same path as the WebKitTestRunner default store.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647220</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-29 17:28:02 -0700</bug_when>
    <thetext>This is probably related to http://trac.webkit.org/r260791 and more specifically this line in NetworkSession::setResourceLoadStatisticsEnabled:
destroyResourceLoadStatistics([] { });
We probably need to wait for that completion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647221</commentid>
    <comment_count>10</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-29 17:30:43 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #9)
&gt; This is probably related to http://trac.webkit.org/r260791 and more
&gt; specifically this line in NetworkSession::setResourceLoadStatisticsEnabled:
&gt; destroyResourceLoadStatistics([] { });
&gt; We probably need to wait for that completion.

Ah, this would explain it. Maybe we should pass a completion handler to this function then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647244</commentid>
    <comment_count>11</comment_count>
      <attachid>398018</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-29 19:03:04 -0700</bug_when>
    <thetext>Created attachment 398018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647246</commentid>
    <comment_count>12</comment_count>
      <attachid>398019</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-29 19:12:47 -0700</bug_when>
    <thetext>Created attachment 398019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647247</commentid>
    <comment_count>13</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-29 19:13:56 -0700</bug_when>
    <thetext>My iOS SDK isn&apos;t doing too well, so I can&apos;t run tests with it but I&apos;m pretty sure this will fix it.  Could someone verify that they can reproduce the issue without but not with this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647296</commentid>
    <comment_count>14</comment_count>
      <attachid>398039</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-29 23:10:25 -0700</bug_when>
    <thetext>Created attachment 398039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647395</commentid>
    <comment_count>15</comment_count>
      <attachid>398058</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-30 09:40:47 -0700</bug_when>
    <thetext>Created attachment 398058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647396</commentid>
    <comment_count>16</comment_count>
      <attachid>398058</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-30 09:42:44 -0700</bug_when>
    <thetext>Comment on attachment 398058
Patch

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

I used this command to verify there were crashes before but not after this patch.

run-webkit-tests --iterations 99 --exit-after-n-failures 2 --force -f --ios-simulator http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database.html http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects-database.html http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction-database.html http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database.html --no-build

&gt; Tools/WebKitTestRunner/TestController.cpp:536
&gt; +        WKWebsiteDataStoreConfigurationSetResourceLoadStatisticsDirectory(configuration, toWK(makeString(temporaryFolder, pathSeparator, &quot;ResourceLoadStatistics&quot;, pathSeparator, cryptographicallyRandomNumber())).get());

This is necessary to prevent two WebsiteDataStores from opening databases at the same directory at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647397</commentid>
    <comment_count>17</comment_count>
      <attachid>398058</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-30 09:48:05 -0700</bug_when>
    <thetext>Comment on attachment 398058
Patch

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

&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h:48
&gt; +WK_EXPORT void WKWebsiteDataStoreSetResourceLoadStatisticsEnabled(WKWebsiteDataStoreRef dataStoreRef, bool enable, void* functionContext, WKWebsiteDataStoreStatisticsEnabledFunction completionHandler);

If the client does:
WKWebsiteDataStoreSetResourceLoadStatisticsEnabled(dataStore, false, nullptr, nullptr);
WKWebsiteDataStoreSetResourceLoadStatisticsEnabled(dataStore, true, nullptr, nullptr);

without waiting for completion handlers. Do I understand correctly that we will still crash? If so, I think this is super fragile and not the right design.

Also, turning on or off a feature should really not need to be async IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647401</commentid>
    <comment_count>18</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-30 10:01:21 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #17)
&gt; Comment on attachment 398058 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398058&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h:48
&gt; &gt; +WK_EXPORT void WKWebsiteDataStoreSetResourceLoadStatisticsEnabled(WKWebsiteDataStoreRef dataStoreRef, bool enable, void* functionContext, WKWebsiteDataStoreStatisticsEnabledFunction completionHandler);
&gt; 
&gt; If the client does:
&gt; WKWebsiteDataStoreSetResourceLoadStatisticsEnabled(dataStore, false,
&gt; nullptr, nullptr);
&gt; WKWebsiteDataStoreSetResourceLoadStatisticsEnabled(dataStore, true, nullptr,
&gt; nullptr);
&gt; 
&gt; without waiting for completion handlers. Do I understand correctly that we
&gt; will still crash? If so, I think this is super fragile and not the right
&gt; design.
&gt; 

I think all crashes should be fixed using just the random addition to the ResourceLoadStatistics directory, per my comment about two databases being created at the same path. This change alone fixed all local crashes for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647423</commentid>
    <comment_count>19</comment_count>
      <attachid>398058</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-04-30 11:09:57 -0700</bug_when>
    <thetext>Comment on attachment 398058
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h:48
&gt;&gt;&gt; +WK_EXPORT void WKWebsiteDataStoreSetResourceLoadStatisticsEnabled(WKWebsiteDataStoreRef dataStoreRef, bool enable, void* functionContext, WKWebsiteDataStoreStatisticsEnabledFunction completionHandler);
&gt;&gt; 
&gt;&gt; If the client does:
&gt;&gt; WKWebsiteDataStoreSetResourceLoadStatisticsEnabled(dataStore, false, nullptr, nullptr);
&gt;&gt; WKWebsiteDataStoreSetResourceLoadStatisticsEnabled(dataStore, true, nullptr, nullptr);
&gt;&gt; 
&gt;&gt; without waiting for completion handlers. Do I understand correctly that we will still crash? If so, I think this is super fragile and not the right design.
&gt;&gt; 
&gt;&gt; Also, turning on or off a feature should really not need to be async IMO.
&gt; 
&gt; I think all crashes should be fixed using just the random addition to the ResourceLoadStatistics directory, per my comment about two databases being created at the same path. This change alone fixed all local crashes for me.

I think it&apos;s possible for both statements to be true: It&apos;s possible that a client that didn&apos;t wait for a completion handler would crash; and also that all our client code happens to wait for a completion handler.

Do we need setting this preference to also do the work of creating and destroying databases before we consider the preference set? Would it would to treat setting the preference to true to be a simple set of a boolean, where database creation would happen on demand when we had new data to store? And for setting the preference to false, could we schedule an async task to delete all previous databases without the client needing to wait for that result?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647427</commentid>
    <comment_count>20</comment_count>
      <attachid>398068</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-30 11:18:07 -0700</bug_when>
    <thetext>Created attachment 398068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647428</commentid>
    <comment_count>21</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-30 11:19:14 -0700</bug_when>
    <thetext>This whole thing is problematic.  We should make it so you can&apos;t turn resource load statistics on and off at runtime, you can&apos;t switch between database mode and plist mode at runtime, and we should remove the plist mode entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647429</commentid>
    <comment_count>22</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-30 11:20:09 -0700</bug_when>
    <thetext>But my latest patch fixes the crashes for me.  It is indeed invalid to have two persistent website data stores pointing at the same location at the same time, and none of our SPI clients do that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647430</commentid>
    <comment_count>23</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-04-30 11:21:05 -0700</bug_when>
    <thetext>plist mode changes sound reasonable; but for turning on/off at runtime, isn&apos;t that a Safari feature? [ Preferences -&gt; Privacy -&gt; Prevent cross-site tracking ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647432</commentid>
    <comment_count>24</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-30 11:23:44 -0700</bug_when>
    <thetext>We should make that safari feature require a restart like so many other things do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647461</commentid>
    <comment_count>25</comment_count>
      <attachid>398068</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-30 11:54:42 -0700</bug_when>
    <thetext>Comment on attachment 398068
Patch

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

&gt; Tools/WebKitTestRunner/TestController.cpp:536
&gt; +        WKWebsiteDataStoreConfigurationSetResourceLoadStatisticsDirectory(configuration, toWK(makeString(temporaryFolder, pathSeparator, &quot;ResourceLoadStatistics&quot;, pathSeparator, cryptographicallyRandomNumber())).get());

Why are we doing this only for ITP? The issue is that we have a default store with those temporary paths set. Then, if the test uses options.standaloneWebApplicationURL, it will get its own data store. Currently, this new data store gets the exact same paths as the default data store, which always seems wrong, no? You are fixing it for ITP but do we have any reason to believe it is OK both other databases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647465</commentid>
    <comment_count>26</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-30 11:57:35 -0700</bug_when>
    <thetext>I&apos;m fixing ITP right now because we have tests crashing right now and that&apos;s urgent, but you&apos;re right, we should fix everything at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647470</commentid>
    <comment_count>27</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-30 11:59:20 -0700</bug_when>
    <thetext>I think fixing everything else should be done in a separate patch.  This is a targeted response to a recent regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647472</commentid>
    <comment_count>28</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-30 12:00:42 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #25)
&gt; Comment on attachment 398068 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398068&amp;action=review
&gt; 
&gt; &gt; Tools/WebKitTestRunner/TestController.cpp:536
&gt; &gt; +        WKWebsiteDataStoreConfigurationSetResourceLoadStatisticsDirectory(configuration, toWK(makeString(temporaryFolder, pathSeparator, &quot;ResourceLoadStatistics&quot;, pathSeparator, cryptographicallyRandomNumber())).get());
&gt; 
&gt; Why are we doing this only for ITP? The issue is that we have a default
&gt; store with those temporary paths set. Then, if the test uses
&gt; options.standaloneWebApplicationURL, it will get its own data store.
&gt; Currently, this new data store gets the exact same paths as the default data
&gt; store, which always seems wrong, no? You are fixing it for ITP but do we
&gt; have any reason to believe it is OK both other databases?

Another option could be to set TestController::defaultWebsiteDataStore() to be the data store created by the standalone-web-application tests for those tests only. This will prevent two data stores from being initialized for the same test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647475</commentid>
    <comment_count>29</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-30 12:03:46 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #28)
&gt; (In reply to Chris Dumez from comment #25)
&gt; &gt; Comment on attachment 398068 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=398068&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/WebKitTestRunner/TestController.cpp:536
&gt; &gt; &gt; +        WKWebsiteDataStoreConfigurationSetResourceLoadStatisticsDirectory(configuration, toWK(makeString(temporaryFolder, pathSeparator, &quot;ResourceLoadStatistics&quot;, pathSeparator, cryptographicallyRandomNumber())).get());
&gt; &gt; 
&gt; &gt; Why are we doing this only for ITP? The issue is that we have a default
&gt; &gt; store with those temporary paths set. Then, if the test uses
&gt; &gt; options.standaloneWebApplicationURL, it will get its own data store.
&gt; &gt; Currently, this new data store gets the exact same paths as the default data
&gt; &gt; store, which always seems wrong, no? You are fixing it for ITP but do we
&gt; &gt; have any reason to believe it is OK both other databases?
&gt; 
&gt; Another option could be to set TestController::defaultWebsiteDataStore() to
&gt; be the data store created by the standalone-web-application tests for those
&gt; tests only. This will prevent two data stores from being initialized for the
&gt; same test.

TestController::defaultWebsiteDataStore() is a static data store which is used by most tests (except ephemeral ones and standalone-web-application ones). It is not created on a per-test basic, it outlives the tests. I think the bug here is that we create a new non-ephemeral data store that has the exact same paths as the default data store.

As it stands, the patch looks like a partial fix / hack and it would be very little work to make it fully correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647491</commentid>
    <comment_count>30</comment_count>
      <attachid>398079</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-30 12:23:30 -0700</bug_when>
    <thetext>Created attachment 398079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647506</commentid>
    <comment_count>31</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-30 12:50:42 -0700</bug_when>
    <thetext>Committed r260961: &lt;https://trac.webkit.org/changeset/260961&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398079.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647930</commentid>
    <comment_count>32</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-05-01 11:05:10 -0700</bug_when>
    <thetext>We&apos;re still seeing tests crash with the following in stderr:

ERROR: SQLite database failed to set journal_mode to WAL, error: database is locked
./platform/sql/SQLiteDatabase.cpp(175) : void WebCore::SQLiteDatabase::useWALJournalMode()
ERROR: SQLite database failed to checkpoint: database is locked
./platform/sql/SQLiteDatabase.cpp(185) : void WebCore::SQLiteDatabase::useWALJournalMode()
ERROR: Unable to prepare statement to fetch schema for the ObservedDomains table.
/Volumes/Data/slave/ios-simulator-13-debug/build/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp(507) : void WebKit::ResourceLoadStatisticsDatabaseStore::openAndUpdateSchemaIfNecessary()
SHOULD NEVER BE REACHED
/Volumes/Data/slave/ios-simulator-13-debug/build/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp(508) : void WebKit::ResourceLoadStatisticsDatabaseStore::openAndUpdateSchemaIfNecessary()

There are also 16 unassociated com.apple.WebKit.Networking.Development crashes on this run

https://build.webkit.org/results/Apple%20iOS%2013%20Simulator%20Debug%20WK2%20(Tests)/r260998%20(3465)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647937</commentid>
    <comment_count>33</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-01 11:24:48 -0700</bug_when>
    <thetext>I think there should be a separate bug. It looks like this fix did address the standalone-web-application-exempt-from-website-data-deletion tests. The other tests might need some variation of Alex&apos;s original patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647942</commentid>
    <comment_count>34</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-05-01 11:30:46 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #33)
&gt; I think there should be a separate bug. It looks like this fix did address
&gt; the standalone-web-application-exempt-from-website-data-deletion tests. The
&gt; other tests might need some variation of Alex&apos;s original patch.
https://bugs.webkit.org/show_bug.cgi?id=211305</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398018</attachid>
            <date>2020-04-29 19:03:04 -0700</date>
            <delta_ts>2020-04-29 19:12:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211190-20200429190303.patch</filename>
            <type>text/plain</type>
            <size>18810</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjA4NTgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA0LTI5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTjog
WyBpT1MgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWIt
YXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uIHRlc3RzIGFyZSBm
bGFreSBjcmFzaGluZywgZmFpbGluZyBhbiB0aW1pbmcgb3V0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTkwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2FpdCBmb3IgYSBjb21wbGV0aW9uIGhhbmRs
ZXIgaW4gTmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIGR1
cmluZyB0ZXN0cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAy
MDIwLTA0LTI4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3ZlIFdlYlBhZ2U6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KCkgdG8gV2ViUGFnZUlPUy5tbQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk1LDEwICsxMTk1LDEyIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZENsYXNzaWZ5UmUKICAgICB9CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgYm9vbCBlbmFibGVkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBi
b29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50
KGJvb2wgZW5hYmxlZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDcgKzI0Nyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoUEFMOjpTZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdChQ
QUw6OlNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKFBBTDo6U2Vz
c2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZv
aWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIGJvb2wp
OworICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9u
SUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50KGJvb2wpOwogICAgIHZvaWQgc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShQQUw6OlNlc3Npb25JRCwgYm9vbCBkZWJ1Z01v
ZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJmQpOwogICAgIHZvaWQgaXNSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRXBoZW1lcmFsKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYwODMx
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
UHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9t
YWluKSAtPiAoKSBBc3luYwogICAgIENsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+
ICgpIEFzeW5jCiAgICAgRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoU3RyaW5nIGR1bXBlZFN0YXRpc3RpY3MpIEFzeW5jCi0gICAgU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29s
IGVuYWJsZWQpCisgICAgU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBib29sIGVuYWJsZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChib29sIGVuYWJsZWQpCiAgICAgVXBkYXRl
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9jaykgLT4g
KCkgQXN5bmMKICAgICBJc0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pIC0+IChib29sIGlzR3JhbmRm
YXRoZXJlZCkgQXN5bmMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwCShyZXZpc2lvbiAyNjA4MzEpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcg
KzEyOCw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHIKICAgICB9
KTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5lbmFibGVkKTsKKyAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQsIFtd
IHsgfSk7CiAjZW5kaWYKIH0KIApAQCAtMTY0LDE4ICsxNjQsMTggQEAgdm9pZCBOZXR3b3JrU2Vz
c2lvbjo6aW52YWxpZGF0ZUFuZENhbmNlbAogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLXZvaWQgTmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGJvb2wgZW5hYmxlKQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1faXNJbnZhbGlkYXRlZCk7
CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkp
CiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChlbmFibGUpOwogICAgIGlmICghZW5hYmxlKSB7Ci0gICAgICAgIGRlc3Ryb3lSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKFtdIHsgfSk7CisgICAgICAgIGRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKICAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhv
c3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MsIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8g
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllcyA6IFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOwogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkKQEAgLTE4Nyw2ICsxODcsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRSZXNv
dXJjZUxvYWRTdGF0CiAgICAgaWYgKCFtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2
YWxlbnRSZXNvdXJjZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUobV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UsIFtdIHsgfSk7CiAgICAgZm9yd2FyZFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTZXR0aW5ncygpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAK
IHZvaWQgTmV0d29ya1Nlc3Npb246OnJlY3JlYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljU3RvcmUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkocmV2aXNpb24g
MjYwODMxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZWNyZWF0ZVJl
c291cmNlTG9hZFN0YXRpc3RpY1N0b3JlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgYm9vbCBpc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CiAgICAgdm9p
ZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHAJKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDEzICs5MCwx
NiBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZURvZXNTdGF0aXN0aWNzRG9tCiAjZW5kaWYKIH0K
IAotdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSkKK3ZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUsIHZvaWQqIGZ1bmN0aW9u
Q29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0VuYWJsZWRGdW5jdGlvbiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIHdlYnNpdGVEYXRhU3RvcmUtPnVzZUV4cGxpY2l0SVRQU3RhdGUoKTsKICNlbmRpZgot
ICAgIHdlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVu
YWJsZSk7CisgICAgd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoZW5hYmxlLCBbZnVuY3Rpb25Db250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAg
ICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmdW5jdGlvbkNvbnRleHQpOworICAgIH0pOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZUlzU3RhdGlzdGljc0VwaGVtZXJhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRXBoZW1lcmFsRnVu
Y3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkocmV2aXNpb24gMjYwODMx
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDggQEAgV0tfRVhQT1JUIFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBXS1dlYnNpdAogV0tfRVhQT1JUIFdLSFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vi
c2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmKTsKIAogV0tfRVhQT1JUIGJvb2wgV0tXZWJzaXRlRGF0YVN0b3JlR2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
Zik7Ci1XS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVu
YWJsZSk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRW5hYmxl
ZEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUsIHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0VuYWJsZWRGdW5jdGlvbiBjb21wbGV0aW9u
SGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRXBo
ZW1lcmFsRnVuY3Rpb24pKGJvb2wgaXNFcGhlbWVyYWwsIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NFcGhlbWVyYWwo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzRXBoZW1lcmFsRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW0JKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4
Niw3ICsyODYsNyBAQCAtIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAogLSAo
dm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewog
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT51c2VFeHBsaWNpdElUUFN0YXRlKCk7Ci0gICAgX3dlYnNp
dGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwor
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChl
bmFibGVkLCBbXSB7IH0pOwogfQogCiAtICh2b2lkKV9zZXRVc2VJVFBEYXRhYmFzZTooQk9PTCll
bmFibGVkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
cgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDUxLDMwICsyMDUxLDIyIEBAIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3Vy
Y2VMb2FkU3RhdGkKICNlbmRpZgogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3ZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgUmVmUHRy
PENhbGxiYWNrQWdncmVnYXRvcj4gYWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3Jl
YXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIGlmIChlbmFibGVkID09IHJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChlbmFibGVkKSB7Ci0gICAgICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAKKyAgICBp
ZiAoZW5hYmxlZCkKICAgICAgICAgcmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKLSAg
ICAgICAgCi0gICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkg
ewotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQobV9z
ZXNzaW9uSUQsIHRydWUpKTsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9j
ZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKHRydWUpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQogCisgICAgbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7CiAgICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIHByb2Nlc3NQb29sLT5zZW5k
VG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKG1fc2Vzc2lvbklELCBmYWxzZSkpOwotICAgICAgICBwcm9j
ZXNzUG9vbC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChmYWxzZSkpOworICAgICAgICBpZiAoYXV0byogbmV0
d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAg
IG5ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChtX3Nlc3Npb25JRCwgZW5hYmxl
ZCksIFthZ2dyZWdhdG9yXSB7IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChlbmFibGVkKSk7CiAgICAgfQotCi0gICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCA9IGZhbHNlOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWFrSGFzaFNldDxXZWJQcm9jZXNz
UHJveHk+JiBwcm9jZXNzZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NlczsgfQogCiAgICAg
Ym9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0OwotICAgIHZvaWQgc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpIGNvbnN0OwogICAg
IHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sKTsKICAgICB2b2lk
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDkyOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA0LTI5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTjogWyBpT1MgXSBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRp
b24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uIHRlc3RzIGFyZSBmbGFreSBjcmFz
aGluZywgZmFpbGluZyBhbiB0aW1pbmcgb3V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdUUjo6UmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0OjpSZXNv
dXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAoV1RSOjpyZXNvdXJjZVN0
YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybUFkanVzdENvbnRleHQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6c2V0U3RhdGlzdGljc0VuYWJsZWQpOgorCiAyMDIwLTA0LTI5ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjYwNzkxKSBOZXR3b3JrIHBy
b2Nlc3MgZmFpbHMgdG8gc3VzcGVuZCBwcm9tcHRseQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI2MDgzMSkKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTgsNiAr
NTU4LDI1IEBAIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBUZXN0Q29udHJvbGxlcjo6d2UKICAgICBy
ZXR1cm4gV0tQYWdlQ29uZmlndXJhdGlvbkdldFdlYnNpdGVEYXRhU3RvcmUoYWRvcHRXSyhXS1Bh
Z2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24obV9tYWluV2ViVmlldy0+cGFnZSgpKSkuZ2V0KCkpOwog
fQogCitzdHJ1Y3QgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IHsKKyAgICBleHBs
aWNpdCBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQoVGVzdENvbnRyb2xsZXImIGNv
bnRyb2xsZXIpCisgICAgICAgIDogdGVzdENvbnRyb2xsZXIoY29udHJvbGxlcikKKyAgICB7Cisg
ICAgfQorCisgICAgVGVzdENvbnRyb2xsZXImIHRlc3RDb250cm9sbGVyOworICAgIGJvb2wgZG9u
ZSB7IGZhbHNlIH07CisgICAgYm9vbCByZXN1bHQgeyBmYWxzZSB9OworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVwcmVzZW50YXRpb247Cit9Owor
CitzdGF0aWMgdm9pZCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2sodm9pZCog
dXNlckRhdGEpCit7CisgICAgYXV0byogY29udGV4dCA9IHN0YXRpY19jYXN0PFJlc291cmNlU3Rh
dGlzdGljc0NhbGxiYWNrQ29udGV4dCo+KHVzZXJEYXRhKTsKKyAgICBjb250ZXh0LT5kb25lID0g
dHJ1ZTsKKyAgICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKIFdL
UmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0
ZVBhZ2VDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
ICghbV9jb250ZXh0IHx8ICFtX2NvbnRleHRPcHRpb25zLT5oYXNTYW1lSW5pdGlhbGl6YXRpb25P
cHRpb25zKG9wdGlvbnMuY29udGV4dE9wdGlvbnMpKSB7CkBAIC02MjgsNyArNjQ3LDEwIEBAIFdL
UmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3QKICAgICAKICAgICBpZiAob3B0
aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKSB7CiAgICAgICAgIGF1dG8gZXBoZW1lcmFsRGF0YVN0
b3JlID0gYWRvcHRXSyhXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0
b3JlKCkpOwotICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZChlcGhlbWVyYWxEYXRhU3RvcmUuZ2V0KCksIHRydWUpOworCisgICAgICAgIFJl
c291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICAgICAg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZXBoZW1l
cmFsRGF0YVN0b3JlLmdldCgpLCB0cnVlLCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVm9p
ZFJlc3VsdENhbGxiYWNrKTsKKyAgICAgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVv
dXQpOwogICAgICAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0V2Vic2l0ZURhdGFTdG9yZShwYWdl
Q29uZmlndXJhdGlvbi5nZXQoKSwgZXBoZW1lcmFsRGF0YVN0b3JlLmdldCgpKTsKICAgICB9CiAK
QEAgLTMxMjUsMTIgKzMxNDcsMTQgQEAgUGxhdGZvcm1XZWJWaWV3KiBUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcgogCiBXS0NvbnRleHRSZWYgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQWRqdXN0Q29u
dGV4dChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb250
ZXh0Q29uZmlndXJhdGlvbikKIHsKKyAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRl
eHQgY29udGV4dCgqdGhpcyk7CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0g
ICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZGVm
YXVsdFdlYnNpdGVEYXRhU3RvcmUoKSwgdHJ1ZSk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZGVmYXVsdFdlYnNpdGVEYXRhU3RvcmUoKSwg
dHJ1ZSwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGljc1ZvaWRSZXN1bHRDYWxsYmFjayk7CiAg
ICAgV0tDb250ZXh0U2V0UHJpbWFyeVdlYnNpdGVEYXRhU3RvcmUoY29udGV4dCwgZGVmYXVsdFdl
YnNpdGVEYXRhU3RvcmUoKSk7CiAjZWxzZQotICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUoY29u
dGV4dCksIHRydWUpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUoY29udGV4dCksIHRydWUs
ICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOwogI2VuZGlm
CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOwogICAgIHJldHVybiBjb250
ZXh0OwogfQogCkBAIC0zMzgxLDE4ICszNDA1LDYgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6aXNE
b2luZ01lZGlhQ2FwdHVyZQogfQogCiAjZW5kaWYKLQotc3RydWN0IFJlc291cmNlU3RhdGlzdGlj
c0NhbGxiYWNrQ29udGV4dCB7Ci0gICAgZXhwbGljaXQgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJh
Y2tDb250ZXh0KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVyKQotICAgICAgICA6IHRlc3RDb250
cm9sbGVyKGNvbnRyb2xsZXIpCi0gICAgewotICAgIH0KLQotICAgIFRlc3RDb250cm9sbGVyJiB0
ZXN0Q29udHJvbGxlcjsKLSAgICBib29sIGRvbmUgeyBmYWxzZSB9OwotICAgIGJvb2wgcmVzdWx0
IHsgZmFsc2UgfTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1JlcHJlc2VudGF0aW9uOwotfTsKICAgICAKIHN0YXRpYyB2b2lkIHJlc291cmNlU3Rh
dGlzdGljc1N0cmluZ1Jlc3VsdENhbGxiYWNrKFdLU3RyaW5nUmVmIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NSZXByZXNlbnRhdGlvbiwgdm9pZCogdXNlckRhdGEpCiB7CkBAIC0zNDAyLDEzICszNDE0
LDYgQEAgc3RhdGljIHZvaWQgcmVzb3VyY2VTdGF0aXN0aWNzU3RyaW5nUmVzdQogICAgIGNvbnRl
eHQtPnRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKIH0KIAotc3RhdGljIHZvaWQgcmVzb3Vy
Y2VTdGF0aXN0aWNzVm9pZFJlc3VsdENhbGxiYWNrKHZvaWQqIHVzZXJEYXRhKQotewotICAgIGF1
dG8qIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRl
eHQqPih1c2VyRGF0YSk7Ci0gICAgY29udGV4dC0+ZG9uZSA9IHRydWU7Ci0gICAgY29udGV4dC0+
dGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotCiBzdGF0aWMgdm9pZCByZXNvdXJjZVN0
YXRpc3RpY3NCb29sZWFuUmVzdWx0Q2FsbGJhY2soYm9vbCByZXN1bHQsIHZvaWQqIHVzZXJEYXRh
KQogewogICAgIGF1dG8qIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZVN0YXRpc3RpY3ND
YWxsYmFja0NvbnRleHQqPih1c2VyRGF0YSk7CkBAIC0zNDM1LDcgKzM0NDAsOSBAQCBib29sIFRl
c3RDb250cm9sbGVyOjpkb2VzU3RhdGlzdGljc0RvbWFpCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6
OnNldFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgdmFsdWUpCiB7Ci0gICAgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQod2Vic2l0ZURhdGFTdG9yZSgpLCB2
YWx1ZSk7CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRo
aXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKHdlYnNpdGVEYXRhU3RvcmUoKSwgdmFsdWUsICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3Rp
Y3NWb2lkUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1l
b3V0KTsKIH0KIAogYm9vbCBUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0aWNzRXBoZW1lcmFsKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398019</attachid>
            <date>2020-04-29 19:12:47 -0700</date>
            <delta_ts>2020-04-29 23:10:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211190-20200429191246.patch</filename>
            <type>text/plain</type>
            <size>18851</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjA4NTgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA0LTI5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTjog
WyBpT1MgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWIt
YXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uIHRlc3RzIGFyZSBm
bGFreSBjcmFzaGluZywgZmFpbGluZyBhbiB0aW1pbmcgb3V0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTkwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2FpdCBmb3IgYSBjb21wbGV0aW9uIGhhbmRs
ZXIgaW4gTmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIGR1
cmluZyB0ZXN0cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAy
MDIwLTA0LTI4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3ZlIFdlYlBhZ2U6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KCkgdG8gV2ViUGFnZUlPUy5tbQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk1LDEwICsxMTk1LDEyIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZENsYXNzaWZ5UmUKICAgICB9CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgYm9vbCBlbmFibGVkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBi
b29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50
KGJvb2wgZW5hYmxlZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDcgKzI0Nyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoUEFMOjpTZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdChQ
QUw6OlNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKFBBTDo6U2Vz
c2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZv
aWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIGJvb2wp
OworICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9u
SUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50KGJvb2wpOwogICAgIHZvaWQgc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShQQUw6OlNlc3Npb25JRCwgYm9vbCBkZWJ1Z01v
ZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJmQpOwogICAgIHZvaWQgaXNSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRXBoZW1lcmFsKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYwODMx
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
UHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9t
YWluKSAtPiAoKSBBc3luYwogICAgIENsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+
ICgpIEFzeW5jCiAgICAgRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoU3RyaW5nIGR1bXBlZFN0YXRpc3RpY3MpIEFzeW5jCi0gICAgU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29s
IGVuYWJsZWQpCisgICAgU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBib29sIGVuYWJsZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChib29sIGVuYWJsZWQpCiAgICAgVXBkYXRl
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9jaykgLT4g
KCkgQXN5bmMKICAgICBJc0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pIC0+IChib29sIGlzR3JhbmRm
YXRoZXJlZCkgQXN5bmMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwCShyZXZpc2lvbiAyNjA4MzEpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcg
KzEyOCw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHIKICAgICB9
KTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5lbmFibGVkKTsKKyAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQsIFtd
IHsgfSk7CiAjZW5kaWYKIH0KIApAQCAtMTY0LDE4ICsxNjQsMTggQEAgdm9pZCBOZXR3b3JrU2Vz
c2lvbjo6aW52YWxpZGF0ZUFuZENhbmNlbAogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLXZvaWQgTmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGJvb2wgZW5hYmxlKQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1faXNJbnZhbGlkYXRlZCk7
CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkp
CiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChlbmFibGUpOwogICAgIGlmICghZW5hYmxlKSB7Ci0gICAgICAgIGRlc3Ryb3lSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKFtdIHsgfSk7CisgICAgICAgIGRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKICAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhv
c3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MsIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8g
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllcyA6IFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOwogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkKQEAgLTE4Nyw2ICsxODcsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRSZXNv
dXJjZUxvYWRTdGF0CiAgICAgaWYgKCFtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2
YWxlbnRSZXNvdXJjZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUobV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UsIFtdIHsgfSk7CiAgICAgZm9yd2FyZFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTZXR0aW5ncygpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAK
IHZvaWQgTmV0d29ya1Nlc3Npb246OnJlY3JlYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljU3RvcmUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkocmV2aXNpb24g
MjYwODMxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZWNyZWF0ZVJl
c291cmNlTG9hZFN0YXRpc3RpY1N0b3JlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgYm9vbCBpc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CiAgICAgdm9p
ZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHAJKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDEzICs5MCwx
NiBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZURvZXNTdGF0aXN0aWNzRG9tCiAjZW5kaWYKIH0K
IAotdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSkKK3ZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUsIHZvaWQqIGZ1bmN0aW9u
Q29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0VuYWJsZWRGdW5jdGlvbiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIHdlYnNpdGVEYXRhU3RvcmUtPnVzZUV4cGxpY2l0SVRQU3RhdGUoKTsKICNlbmRpZgot
ICAgIHdlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVu
YWJsZSk7CisgICAgd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoZW5hYmxlLCBbZnVuY3Rpb25Db250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAg
ICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmdW5jdGlvbkNvbnRleHQpOworICAgIH0pOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZUlzU3RhdGlzdGljc0VwaGVtZXJhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRXBoZW1lcmFsRnVu
Y3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkocmV2aXNpb24gMjYwODMx
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDggQEAgV0tfRVhQT1JUIFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBXS1dlYnNpdAogV0tfRVhQT1JUIFdLSFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vi
c2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmKTsKIAogV0tfRVhQT1JUIGJvb2wgV0tXZWJzaXRlRGF0YVN0b3JlR2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
Zik7Ci1XS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVu
YWJsZSk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRW5hYmxl
ZEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUsIHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0VuYWJsZWRGdW5jdGlvbiBjb21wbGV0aW9u
SGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRXBo
ZW1lcmFsRnVuY3Rpb24pKGJvb2wgaXNFcGhlbWVyYWwsIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NFcGhlbWVyYWwo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzRXBoZW1lcmFsRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW0JKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4
Niw3ICsyODYsNyBAQCAtIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAogLSAo
dm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewog
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT51c2VFeHBsaWNpdElUUFN0YXRlKCk7Ci0gICAgX3dlYnNp
dGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwor
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChl
bmFibGVkLCBbXSB7IH0pOwogfQogCiAtICh2b2lkKV9zZXRVc2VJVFBEYXRhYmFzZTooQk9PTCll
bmFibGVkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
cgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDUxLDMwICsyMDUxLDIyIEBAIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3Vy
Y2VMb2FkU3RhdGkKICNlbmRpZgogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3ZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgUmVmUHRy
PENhbGxiYWNrQWdncmVnYXRvcj4gYWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3Jl
YXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIGlmIChlbmFibGVkID09IHJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChlbmFibGVkKSB7Ci0gICAgICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAKKyAgICBp
ZiAoZW5hYmxlZCkKICAgICAgICAgcmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKLSAg
ICAgICAgCi0gICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkg
ewotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQobV9z
ZXNzaW9uSUQsIHRydWUpKTsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9j
ZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKHRydWUpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQogCisgICAgbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7CiAgICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIHByb2Nlc3NQb29sLT5zZW5k
VG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKG1fc2Vzc2lvbklELCBmYWxzZSkpOwotICAgICAgICBwcm9j
ZXNzUG9vbC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChmYWxzZSkpOworICAgICAgICBpZiAoYXV0byogbmV0
d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAg
IG5ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChtX3Nlc3Npb25JRCwgZW5hYmxl
ZCksIFthZ2dyZWdhdG9yXSB7IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChlbmFibGVkKSk7CiAgICAgfQotCi0gICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCA9IGZhbHNlOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI2MDgzMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWFrSGFzaFNldDxXZWJQcm9jZXNz
UHJveHk+JiBwcm9jZXNzZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NlczsgfQogCiAgICAg
Ym9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0OwotICAgIHZvaWQgc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
PSBbXSB7IH0pOwogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpIGNv
bnN0OwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sKTsK
ICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDkyOSkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA0LTI5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTjog
WyBpT1MgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWIt
YXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uIHRlc3RzIGFyZSBm
bGFreSBjcmFzaGluZywgZmFpbGluZyBhbiB0aW1pbmcgb3V0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTkwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6UmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250
ZXh0OjpSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAoV1RSOjpy
ZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpwbGF0Zm9ybUFkanVzdENvbnRleHQpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0VuYWJsZWQpOgorCiAyMDIwLTA0LTI5ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjYwNzkxKSBO
ZXR3b3JrIHByb2Nlc3MgZmFpbHMgdG8gc3VzcGVuZCBwcm9tcHRseQpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI2MDgzMSkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NTgsNiArNTU4LDI1IEBAIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBUZXN0Q29udHJvbGxlcjo6
d2UKICAgICByZXR1cm4gV0tQYWdlQ29uZmlndXJhdGlvbkdldFdlYnNpdGVEYXRhU3RvcmUoYWRv
cHRXSyhXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24obV9tYWluV2ViVmlldy0+cGFnZSgpKSku
Z2V0KCkpOwogfQogCitzdHJ1Y3QgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IHsK
KyAgICBleHBsaWNpdCBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQoVGVzdENvbnRy
b2xsZXImIGNvbnRyb2xsZXIpCisgICAgICAgIDogdGVzdENvbnRyb2xsZXIoY29udHJvbGxlcikK
KyAgICB7CisgICAgfQorCisgICAgVGVzdENvbnRyb2xsZXImIHRlc3RDb250cm9sbGVyOworICAg
IGJvb2wgZG9uZSB7IGZhbHNlIH07CisgICAgYm9vbCByZXN1bHQgeyBmYWxzZSB9OworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVwcmVzZW50YXRp
b247Cit9OworCitzdGF0aWMgdm9pZCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJh
Y2sodm9pZCogdXNlckRhdGEpCit7CisgICAgYXV0byogY29udGV4dCA9IHN0YXRpY19jYXN0PFJl
c291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCo+KHVzZXJEYXRhKTsKKyAgICBjb250ZXh0
LT5kb25lID0gdHJ1ZTsKKyAgICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9CisKIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVy
OjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIGlmICghbV9jb250ZXh0IHx8ICFtX2NvbnRleHRPcHRpb25zLT5oYXNTYW1lSW5pdGlh
bGl6YXRpb25PcHRpb25zKG9wdGlvbnMuY29udGV4dE9wdGlvbnMpKSB7CkBAIC02MjgsNyArNjQ3
LDEwIEBAIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3QKICAgICAKICAg
ICBpZiAob3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKSB7CiAgICAgICAgIGF1dG8gZXBoZW1l
cmFsRGF0YVN0b3JlID0gYWRvcHRXSyhXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVOb25QZXJzaXN0
ZW50RGF0YVN0b3JlKCkpOwotICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZChlcGhlbWVyYWxEYXRhU3RvcmUuZ2V0KCksIHRydWUpOworCisg
ICAgICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsK
KyAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoZXBoZW1lcmFsRGF0YVN0b3JlLmdldCgpLCB0cnVlLCAmY29udGV4dCwgcmVzb3VyY2VTdGF0
aXN0aWNzVm9pZFJlc3VsdENhbGxiYWNrKTsKKyAgICAgICAgcnVuVW50aWwoY29udGV4dC5kb25l
LCBub1RpbWVvdXQpOwogICAgICAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0V2Vic2l0ZURhdGFT
dG9yZShwYWdlQ29uZmlndXJhdGlvbi5nZXQoKSwgZXBoZW1lcmFsRGF0YVN0b3JlLmdldCgpKTsK
ICAgICB9CiAKQEAgLTMxMjUsMTIgKzMxNDcsMTQgQEAgUGxhdGZvcm1XZWJWaWV3KiBUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcgogCiBXS0NvbnRleHRSZWYgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
QWRqdXN0Q29udGV4dChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tDb250ZXh0Q29uZmlndXJhdGlv
blJlZiBjb250ZXh0Q29uZmlndXJhdGlvbikKIHsKKyAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxs
YmFja0NvbnRleHQgY2FsbGJhY2tDb250ZXh0KCp0aGlzKTsKICNpZiBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdQRSkKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChkZWZhdWx0V2Vic2l0ZURhdGFTdG9yZSgpLCB0cnVlKTsKKyAgICBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChkZWZhdWx0V2Vi
c2l0ZURhdGFTdG9yZSgpLCB0cnVlLCAmY2FsbGJhY2tDb250ZXh0LCByZXNvdXJjZVN0YXRpc3Rp
Y3NWb2lkUmVzdWx0Q2FsbGJhY2spOwogICAgIFdLQ29udGV4dFNldFByaW1hcnlXZWJzaXRlRGF0
YVN0b3JlKGNvbnRleHQsIGRlZmF1bHRXZWJzaXRlRGF0YVN0b3JlKCkpOwogI2Vsc2UKLSAgICBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChXS0NvbnRl
eHRHZXRXZWJzaXRlRGF0YVN0b3JlKGNvbnRleHQpLCB0cnVlKTsKKyAgICBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChXS0NvbnRleHRHZXRXZWJzaXRl
RGF0YVN0b3JlKGNvbnRleHQpLCB0cnVlLCAmY2FsbGJhY2tDb250ZXh0LCByZXNvdXJjZVN0YXRp
c3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOwogI2VuZGlmCisgICAgcnVuVW50aWwoY2FsbGJhY2tD
b250ZXh0LmRvbmUsIG5vVGltZW91dCk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKQEAgLTMz
ODEsMTggKzM0MDUsNiBAQCBib29sIFRlc3RDb250cm9sbGVyOjppc0RvaW5nTWVkaWFDYXB0dXJl
CiB9CiAKICNlbmRpZgotCi1zdHJ1Y3QgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0
IHsKLSAgICBleHBsaWNpdCBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQoVGVzdENv
bnRyb2xsZXImIGNvbnRyb2xsZXIpCi0gICAgICAgIDogdGVzdENvbnRyb2xsZXIoY29udHJvbGxl
cikKLSAgICB7Ci0gICAgfQotCi0gICAgVGVzdENvbnRyb2xsZXImIHRlc3RDb250cm9sbGVyOwot
ICAgIGJvb2wgZG9uZSB7IGZhbHNlIH07Ci0gICAgYm9vbCByZXN1bHQgeyBmYWxzZSB9OwotICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVwcmVzZW50
YXRpb247Ci19OwogICAgIAogc3RhdGljIHZvaWQgcmVzb3VyY2VTdGF0aXN0aWNzU3RyaW5nUmVz
dWx0Q2FsbGJhY2soV0tTdHJpbmdSZWYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1JlcHJlc2VudGF0
aW9uLCB2b2lkKiB1c2VyRGF0YSkKIHsKQEAgLTM0MDIsMTMgKzM0MTQsNiBAQCBzdGF0aWMgdm9p
ZCByZXNvdXJjZVN0YXRpc3RpY3NTdHJpbmdSZXN1CiAgICAgY29udGV4dC0+dGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOwogfQogCi1zdGF0aWMgdm9pZCByZXNvdXJjZVN0YXRpc3RpY3NWb2lk
UmVzdWx0Q2FsbGJhY2sodm9pZCogdXNlckRhdGEpCi17Ci0gICAgYXV0byogY29udGV4dCA9IHN0
YXRpY19jYXN0PFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCo+KHVzZXJEYXRhKTsK
LSAgICBjb250ZXh0LT5kb25lID0gdHJ1ZTsKLSAgICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHJlc291cmNlU3RhdGlzdGljc0Jvb2xlYW5S
ZXN1bHRDYWxsYmFjayhib29sIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCiB7CiAgICAgYXV0byog
Y29udGV4dCA9IHN0YXRpY19jYXN0PFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCo+
KHVzZXJEYXRhKTsKQEAgLTM0MzUsNyArMzQ0MCw5IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OmRv
ZXNTdGF0aXN0aWNzRG9tYWkKIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0Vu
YWJsZWQoYm9vbCB2YWx1ZSkKIHsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHZhbHVlKTsKKyAgICBSZXNv
dXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQod2Vic2l0ZURhdGFT
dG9yZSgpLCB2YWx1ZSwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGljc1ZvaWRSZXN1bHRDYWxs
YmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOwogfQogCiBib29s
IFRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NFcGhlbWVyYWwoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398039</attachid>
            <date>2020-04-29 23:10:25 -0700</date>
            <delta_ts>2020-04-30 09:40:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211190-20200429231024.patch</filename>
            <type>text/plain</type>
            <size>17134</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA0LTI5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTjog
WyBpT1MgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWIt
YXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uIHRlc3RzIGFyZSBm
bGFreSBjcmFzaGluZywgZmFpbGluZyBhbiB0aW1pbmcgb3V0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTkwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2FpdCBmb3IgYSBjb21wbGV0aW9uIGhhbmRs
ZXIgaW4gTmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIGR1
cmluZyB0ZXN0cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAy
MDIwLTA0LTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVzZSBpbml0aWFsaXplcnMgaW4gUGxhdGZvcm1Nb3VzZUV2ZW50IGFuZCBXZWJFdmVudApJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjA1LDEwICsxMjA1LDEyIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZENsYXNzaWZ5UmUKICAgICB9CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgYm9vbCBlbmFibGVkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBi
b29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50
KGJvb2wgZW5hYmxlZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0NCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoUEFMOjpTZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdChQ
QUw6OlNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKFBBTDo6U2Vz
c2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZv
aWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIGJvb2wp
OworICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9u
SUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50KGJvb2wpOwogICAgIHZvaWQgc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShQQUw6OlNlc3Npb25JRCwgYm9vbCBkZWJ1Z01v
ZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJmQpOwogICAgIHZvaWQgaXNSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRXBoZW1lcmFsKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYwOTM1
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
UHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9t
YWluKSAtPiAoKSBBc3luYwogICAgIENsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+
ICgpIEFzeW5jCiAgICAgRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoU3RyaW5nIGR1bXBlZFN0YXRpc3RpY3MpIEFzeW5jCi0gICAgU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29s
IGVuYWJsZWQpCisgICAgU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBib29sIGVuYWJsZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChib29sIGVuYWJsZWQpCiAgICAgVXBkYXRl
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9jaykgLT4g
KCkgQXN5bmMKICAgICBJc0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pIC0+IChib29sIGlzR3JhbmRm
YXRoZXJlZCkgQXN5bmMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcg
KzEyOCw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHIKICAgICB9
KTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5lbmFibGVkKTsKKyAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQsIFtd
IHsgfSk7CiAjZW5kaWYKIH0KIApAQCAtMTY0LDE4ICsxNjQsMTggQEAgdm9pZCBOZXR3b3JrU2Vz
c2lvbjo6aW52YWxpZGF0ZUFuZENhbmNlbAogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLXZvaWQgTmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGJvb2wgZW5hYmxlKQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1faXNJbnZhbGlkYXRlZCk7
CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkp
CiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChlbmFibGUpOwogICAgIGlmICghZW5hYmxlKSB7Ci0gICAgICAgIGRlc3Ryb3lSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKFtdIHsgfSk7CisgICAgICAgIGRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKICAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhv
c3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MsIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8g
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllcyA6IFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOwogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkKQEAgLTE4Nyw2ICsxODcsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRSZXNv
dXJjZUxvYWRTdGF0CiAgICAgaWYgKCFtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2
YWxlbnRSZXNvdXJjZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUobV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UsIFtdIHsgfSk7CiAgICAgZm9yd2FyZFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTZXR0aW5ncygpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAK
IHZvaWQgTmV0d29ya1Nlc3Npb246OnJlY3JlYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljU3RvcmUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkocmV2aXNpb24g
MjYwOTM1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZWNyZWF0ZVJl
c291cmNlTG9hZFN0YXRpc3RpY1N0b3JlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgYm9vbCBpc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CiAgICAgdm9p
ZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDEzICs5MCwx
NiBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZURvZXNTdGF0aXN0aWNzRG9tCiAjZW5kaWYKIH0K
IAotdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSkKK3ZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUsIHZvaWQqIGZ1bmN0aW9u
Q29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0VuYWJsZWRGdW5jdGlvbiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIHdlYnNpdGVEYXRhU3RvcmUtPnVzZUV4cGxpY2l0SVRQU3RhdGUoKTsKICNlbmRpZgot
ICAgIHdlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVu
YWJsZSk7CisgICAgd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoZW5hYmxlLCBbZnVuY3Rpb25Db250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAg
ICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmdW5jdGlvbkNvbnRleHQpOworICAgIH0pOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZUlzU3RhdGlzdGljc0VwaGVtZXJhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRXBoZW1lcmFsRnVu
Y3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkocmV2aXNpb24gMjYwOTM1
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDggQEAgV0tfRVhQT1JUIFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBXS1dlYnNpdAogV0tfRVhQT1JUIFdLSFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vi
c2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmKTsKIAogV0tfRVhQT1JUIGJvb2wgV0tXZWJzaXRlRGF0YVN0b3JlR2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
Zik7Ci1XS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVu
YWJsZSk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRW5hYmxl
ZEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUsIHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0VuYWJsZWRGdW5jdGlvbiBjb21wbGV0aW9u
SGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRXBo
ZW1lcmFsRnVuY3Rpb24pKGJvb2wgaXNFcGhlbWVyYWwsIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NFcGhlbWVyYWwo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzRXBoZW1lcmFsRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW0JKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4
Niw3ICsyODYsNyBAQCAtIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAogLSAo
dm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewog
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT51c2VFeHBsaWNpdElUUFN0YXRlKCk7Ci0gICAgX3dlYnNp
dGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwor
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChl
bmFibGVkLCBbXSB7IH0pOwogfQogCiAtICh2b2lkKV9zZXRVc2VJVFBEYXRhYmFzZTooQk9PTCll
bmFibGVkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
cgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDY1LDMwICsyMDY1LDIyIEBAIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3Vy
Y2VMb2FkU3RhdGkKICNlbmRpZgogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3ZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgUmVmUHRy
PENhbGxiYWNrQWdncmVnYXRvcj4gYWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3Jl
YXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIGlmIChlbmFibGVkID09IHJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChlbmFibGVkKSB7Ci0gICAgICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAKKyAgICBp
ZiAoZW5hYmxlZCkKICAgICAgICAgcmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKLSAg
ICAgICAgCi0gICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkg
ewotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQobV9z
ZXNzaW9uSUQsIHRydWUpKTsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9j
ZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKHRydWUpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQogCisgICAgbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7CiAgICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIHByb2Nlc3NQb29sLT5zZW5k
VG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKG1fc2Vzc2lvbklELCBmYWxzZSkpOwotICAgICAgICBwcm9j
ZXNzUG9vbC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChmYWxzZSkpOworICAgICAgICBpZiAoYXV0byogbmV0
d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAg
IG5ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChtX3Nlc3Npb25JRCwgZW5hYmxl
ZCksIFthZ2dyZWdhdG9yXSB7IH0pOworICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChlbmFibGVkKSk7CiAgICAgfQotCi0gICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCA9IGZhbHNlOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWFrSGFzaFNldDxXZWJQcm9jZXNz
UHJveHk+JiBwcm9jZXNzZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NlczsgfQogCiAgICAg
Ym9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0OwotICAgIHZvaWQgc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
PSBbXSB7IH0pOwogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpIGNv
bnN0OwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sKTsK
ICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDkzNSkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA0LTI5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTjog
WyBpT1MgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWIt
YXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uIHRlc3RzIGFyZSBm
bGFreSBjcmFzaGluZywgZmFpbGluZyBhbiB0aW1pbmcgb3V0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTkwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6UmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250
ZXh0OjpSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAoV1RSOjpy
ZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpwbGF0Zm9ybUFkanVzdENvbnRleHQpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0VuYWJsZWQpOgorCiAyMDIwLTA0LTI5ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIE1pbmlCcm93
c2VyIG9wdGlvbiB0byBpbnNldCB0aGUgd2ViIHZpZXcgc28gaXQgZG9lc24ndCBmaWxsIHRoZSB3
aW5kb3cKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiAyNjA5MzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU4LDYgKzU1OCwxMiBAQCBXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgVGVzdENvbnRyb2xsZXI6OndlCiAgICAgcmV0dXJuIFdLUGFnZUNvbmZpZ3VyYXRpb25H
ZXRXZWJzaXRlRGF0YVN0b3JlKGFkb3B0V0soV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKG1f
bWFpbldlYlZpZXctPnBhZ2UoKSkpLmdldCgpKTsKIH0KIAorc3RhdGljIHZvaWQgc2V0Qm9vbFRv
VHJ1ZSh2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBib29sKiBwb2ludGVyID0gc3RhdGljX2Nhc3Q8
Ym9vbCo+KHVzZXJEYXRhKTsKKyAgICAqcG9pbnRlciA9IHRydWU7Cit9CisKIFdLUmV0YWluUHRy
PFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBhZ2VDb25m
aWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghbV9jb250
ZXh0IHx8ICFtX2NvbnRleHRPcHRpb25zLT5oYXNTYW1lSW5pdGlhbGl6YXRpb25PcHRpb25zKG9w
dGlvbnMuY29udGV4dE9wdGlvbnMpKSB7CkBAIC02MjgsNyArNjM0LDkgQEAgV0tSZXRhaW5QdHI8
V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gVGVzdAogICAgIAogICAgIGlmIChvcHRpb25zLnVzZUVw
aGVtZXJhbFNlc3Npb24pIHsKICAgICAgICAgYXV0byBlcGhlbWVyYWxEYXRhU3RvcmUgPSBhZG9w
dFdLKFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKSk7Ci0g
ICAgICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KGVwaGVtZXJhbERhdGFTdG9yZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgIGJvb2wgZG9uZSA9IGZh
bHNlOworICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChlcGhlbWVyYWxEYXRhU3RvcmUuZ2V0KCksIHRydWUsICZkb25lLCBzZXRCb29sVG9U
cnVlKTsKKyAgICAgICAgcnVuVW50aWwoZG9uZSwgbm9UaW1lb3V0KTsKICAgICAgICAgV0tQYWdl
Q29uZmlndXJhdGlvblNldFdlYnNpdGVEYXRhU3RvcmUocGFnZUNvbmZpZ3VyYXRpb24uZ2V0KCks
IGVwaGVtZXJhbERhdGFTdG9yZS5nZXQoKSk7CiAgICAgfQogCkBAIC0zMTI3LDEyICszMTM1LDE0
IEBAIFBsYXRmb3JtV2ViVmlldyogVGVzdENvbnRyb2xsZXI6OnBsYXRmb3IKIAogV0tDb250ZXh0
UmVmIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUFkanVzdENvbnRleHQoV0tDb250ZXh0UmVmIGNv
bnRleHQsIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29udGV4dENvbmZpZ3VyYXRpb24pCiB7
CisgICAgYm9vbCBkb25lID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShX
UEUpCi0gICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoZGVmYXVsdFdlYnNpdGVEYXRhU3RvcmUoKSwgdHJ1ZSk7CisgICAgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZGVmYXVsdFdlYnNpdGVEYXRhU3Rv
cmUoKSwgdHJ1ZSwgJmRvbmUsIHNldEJvb2xUb1RydWUpOwogICAgIFdLQ29udGV4dFNldFByaW1h
cnlXZWJzaXRlRGF0YVN0b3JlKGNvbnRleHQsIGRlZmF1bHRXZWJzaXRlRGF0YVN0b3JlKCkpOwog
I2Vsc2UKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKGNvbnRleHQpLCB0cnVlKTsKKyAgICBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChXS0NvbnRl
eHRHZXRXZWJzaXRlRGF0YVN0b3JlKGNvbnRleHQpLCB0cnVlLCAmZG9uZSwgc2V0Qm9vbFRvVHJ1
ZSk7CiAjZW5kaWYKKyAgICBydW5VbnRpbChkb25lLCBub1RpbWVvdXQpOwogICAgIHJldHVybiBj
b250ZXh0OwogfQogCkBAIC0zNDMzLDcgKzM0NDMsOSBAQCBib29sIFRlc3RDb250cm9sbGVyOjpk
b2VzU3RhdGlzdGljc0RvbWFpCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NF
bmFibGVkKGJvb2wgdmFsdWUpCiB7Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQod2Vic2l0ZURhdGFTdG9yZSgpLCB2YWx1ZSk7CisgICAgYm9v
bCBkb25lID0gZmFsc2U7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQod2Vic2l0ZURhdGFTdG9yZSgpLCB2YWx1ZSwgJmRvbmUsIHNldEJvb2xU
b1RydWUpOworICAgIHJ1blVudGlsKGRvbmUsIG5vVGltZW91dCk7CiB9CiAKIGJvb2wgVGVzdENv
bnRyb2xsZXI6OmlzU3RhdGlzdGljc0VwaGVtZXJhbCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398058</attachid>
            <date>2020-04-30 09:40:47 -0700</date>
            <delta_ts>2020-04-30 11:18:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211190-20200430094047.patch</filename>
            <type>text/plain</type>
            <size>17701</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA0LTMwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTjog
WyBpT1MgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWIt
YXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uIHRlc3RzIGFyZSBm
bGFreSBjcmFzaGluZywgZmFpbGluZyBhbiB0aW1pbmcgb3V0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTkwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2FpdCBmb3IgYSBjb21wbGV0aW9uIGhhbmRs
ZXIgaW4gTmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIGR1
cmluZyB0ZXN0cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAy
MDIwLTA0LTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVzZSBpbml0aWFsaXplcnMgaW4gUGxhdGZvcm1Nb3VzZUV2ZW50IGFuZCBXZWJFdmVudApJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjA1LDEwICsxMjA1LDEyIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZENsYXNzaWZ5UmUKICAgICB9CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgYm9vbCBlbmFibGVkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBi
b29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50
KGJvb2wgZW5hYmxlZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0NCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoUEFMOjpTZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdChQ
QUw6OlNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKFBBTDo6U2Vz
c2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZv
aWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIGJvb2wp
OworICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9u
SUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50KGJvb2wpOwogICAgIHZvaWQgc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShQQUw6OlNlc3Npb25JRCwgYm9vbCBkZWJ1Z01v
ZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJmQpOwogICAgIHZvaWQgaXNSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRXBoZW1lcmFsKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYwOTM1
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
UHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9t
YWluKSAtPiAoKSBBc3luYwogICAgIENsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+
ICgpIEFzeW5jCiAgICAgRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoU3RyaW5nIGR1bXBlZFN0YXRpc3RpY3MpIEFzeW5jCi0gICAgU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29s
IGVuYWJsZWQpCisgICAgU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBib29sIGVuYWJsZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChib29sIGVuYWJsZWQpCiAgICAgVXBkYXRl
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9jaykgLT4g
KCkgQXN5bmMKICAgICBJc0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pIC0+IChib29sIGlzR3JhbmRm
YXRoZXJlZCkgQXN5bmMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcg
KzEyOCw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHIKICAgICB9
KTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5lbmFibGVkKTsKKyAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQsIFtd
IHsgfSk7CiAjZW5kaWYKIH0KIApAQCAtMTY0LDE4ICsxNjQsMTggQEAgdm9pZCBOZXR3b3JrU2Vz
c2lvbjo6aW52YWxpZGF0ZUFuZENhbmNlbAogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLXZvaWQgTmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGJvb2wgZW5hYmxlKQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1faXNJbnZhbGlkYXRlZCk7
CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkp
CiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChlbmFibGUpOwogICAgIGlmICghZW5hYmxlKSB7Ci0gICAgICAgIGRlc3Ryb3lSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKFtdIHsgfSk7CisgICAgICAgIGRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKICAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhv
c3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MsIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8g
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllcyA6IFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOwogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkKQEAgLTE4Nyw2ICsxODcsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRSZXNv
dXJjZUxvYWRTdGF0CiAgICAgaWYgKCFtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2
YWxlbnRSZXNvdXJjZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUobV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UsIFtdIHsgfSk7CiAgICAgZm9yd2FyZFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTZXR0aW5ncygpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAK
IHZvaWQgTmV0d29ya1Nlc3Npb246OnJlY3JlYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljU3RvcmUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkocmV2aXNpb24g
MjYwOTM1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZWNyZWF0ZVJl
c291cmNlTG9hZFN0YXRpc3RpY1N0b3JlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgYm9vbCBpc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CiAgICAgdm9p
ZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDEzICs5MCwx
NiBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZURvZXNTdGF0aXN0aWNzRG9tCiAjZW5kaWYKIH0K
IAotdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSkKK3ZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUsIHZvaWQqIGZ1bmN0aW9u
Q29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0VuYWJsZWRGdW5jdGlvbiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIHdlYnNpdGVEYXRhU3RvcmUtPnVzZUV4cGxpY2l0SVRQU3RhdGUoKTsKICNlbmRpZgot
ICAgIHdlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVu
YWJsZSk7CisgICAgd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoZW5hYmxlLCBbZnVuY3Rpb25Db250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAg
ICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmdW5jdGlvbkNvbnRleHQpOworICAgIH0pOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZUlzU3RhdGlzdGljc0VwaGVtZXJhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRXBoZW1lcmFsRnVu
Y3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkocmV2aXNpb24gMjYwOTM1
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDggQEAgV0tfRVhQT1JUIFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBXS1dlYnNpdAogV0tfRVhQT1JUIFdLSFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vi
c2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmKTsKIAogV0tfRVhQT1JUIGJvb2wgV0tXZWJzaXRlRGF0YVN0b3JlR2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
Zik7Ci1XS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVu
YWJsZSk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRW5hYmxl
ZEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUsIHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0VuYWJsZWRGdW5jdGlvbiBjb21wbGV0aW9u
SGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRXBo
ZW1lcmFsRnVuY3Rpb24pKGJvb2wgaXNFcGhlbWVyYWwsIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NFcGhlbWVyYWwo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzRXBoZW1lcmFsRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwNjUsMzAgKzIwNjUsMjIgQEAgYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvdXJjZUxvYWRT
dGF0aQogI2VuZGlmCiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpz
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBSZWZQdHI8Q2FsbGJh
Y2tBZ2dyZWdhdG9yPiBhZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgaWYgKGVuYWJsZWQgPT0gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGVuYWJsZWQpIHsKLSAgICAgICAgbV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgIAorICAgIGlmIChlbmFi
bGVkKQogICAgICAgICByZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwotICAgICAgICAK
LSAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAg
ICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChtX3Nlc3Npb25J
RCwgdHJ1ZSkpOwotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQodHJ1
ZSkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAKKyAgICBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkID0gZW5hYmxlZDsKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQ
b29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdv
cmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQobV9zZXNzaW9uSUQsIGZhbHNlKSk7Ci0gICAgICAgIHByb2Nlc3NQb29s
LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGZhbHNlKSk7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJv
Y2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgbmV0d29y
a1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKG1fc2Vzc2lvbklELCBlbmFibGVkKSwgW2Fn
Z3JlZ2F0b3JdIHsgfSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVu
YWJsZWQpKTsKICAgICB9Ci0KLSAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0g
ZmFsc2U7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyAr
MTE5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4m
IHByb2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc2VzOyB9CiAKICAgICBib29sIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiA9IFtdIHsg
fSk7CiAgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wpOwogICAgIHZv
aWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYwOTM1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDQtMzAgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSRUdSRVNTSU9OOiBbIGlPUyBd
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNh
dGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24gdGVzdHMgYXJlIGZsYWt5IGNy
YXNoaW5nLCBmYWlsaW5nIGFuIHRpbWluZyBvdXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTExOTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV1RSOjpSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQ6OlJl
c291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCk6CisgICAgICAgIChXVFI6OnJlc291cmNl
U3RhdGlzdGljc1ZvaWRSZXN1bHRDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtQWRqdXN0Q29udGV4dCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpzZXRTdGF0aXN0aWNzRW5hYmxlZCk6CisKIDIwMjAtMDQtMjkgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgTWluaUJyb3dzZXIgb3B0
aW9uIHRvIGluc2V0IHRoZSB3ZWIgdmlldyBzbyBpdCBkb2Vzbid0IGZpbGwgdGhlIHdpbmRvdwpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDI2MDkzNSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MzMsNyArNTMzLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y29u
ZmlndXJlV2Vic2l0ZURhdAogICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
U2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGNvbmZpZ3VyYXRpb24sIHRvV0sodGVtcG9yYXJ5Rm9s
ZGVyICsgcGF0aFNlcGFyYXRvciArICJMb2NhbFN0b3JhZ2UiKS5nZXQoKSk7CiAgICAgICAgIFdL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25TZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShj
b25maWd1cmF0aW9uLCB0b1dLKHRlbXBvcmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3IgKyAiRGF0
YWJhc2VzIiArIHBhdGhTZXBhcmF0b3IgKyAiV2ViU1FMIikuZ2V0KCkpOwogICAgICAgICBXS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShj
b25maWd1cmF0aW9uLCB0b1dLKHRlbXBvcmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3IgKyAiTWVk
aWFLZXlzIikuZ2V0KCkpOwotICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShjb25maWd1cmF0aW9uLCB0b1dLKHRl
bXBvcmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3IgKyAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIp
LmdldCgpKTsKKyAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoY29uZmlndXJhdGlvbiwgdG9XSyhtYWtlU3RyaW5n
KHRlbXBvcmFyeUZvbGRlciwgcGF0aFNlcGFyYXRvciwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3Mi
LCBwYXRoU2VwYXJhdG9yLCBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSkuZ2V0KCkp
OwogICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25maWd1cmF0aW9uLCB0b1dLKHRlbXBvcmFyeUZvbGRl
ciArIHBhdGhTZXBhcmF0b3IgKyAiU2VydmljZVdvcmtlcnMiKS5nZXQoKSk7CiAgICAgICAgIFdL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25TZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEoY29u
ZmlndXJhdGlvbiwgNDAwICogMTAyNCk7CiAgICAgICAgIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb25TZXROZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKGNvbmZp
Z3VyYXRpb24sIHRydWUpOwpAQCAtNTU4LDYgKzU1OCwxMiBAQCBXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgVGVzdENvbnRyb2xsZXI6OndlCiAgICAgcmV0dXJuIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRX
ZWJzaXRlRGF0YVN0b3JlKGFkb3B0V0soV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKG1fbWFp
bldlYlZpZXctPnBhZ2UoKSkpLmdldCgpKTsKIH0KIAorc3RhdGljIHZvaWQgc2V0Qm9vbFRvVHJ1
ZSh2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBib29sKiBwb2ludGVyID0gc3RhdGljX2Nhc3Q8Ym9v
bCo+KHVzZXJEYXRhKTsKKyAgICAqcG9pbnRlciA9IHRydWU7Cit9CisKIFdLUmV0YWluUHRyPFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1
cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghbV9jb250ZXh0
IHx8ICFtX2NvbnRleHRPcHRpb25zLT5oYXNTYW1lSW5pdGlhbGl6YXRpb25PcHRpb25zKG9wdGlv
bnMuY29udGV4dE9wdGlvbnMpKSB7CkBAIC02MjgsNyArNjM0LDkgQEAgV0tSZXRhaW5QdHI8V0tQ
YWdlQ29uZmlndXJhdGlvblJlZj4gVGVzdAogICAgIAogICAgIGlmIChvcHRpb25zLnVzZUVwaGVt
ZXJhbFNlc3Npb24pIHsKICAgICAgICAgYXV0byBlcGhlbWVyYWxEYXRhU3RvcmUgPSBhZG9wdFdL
KFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKSk7Ci0gICAg
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVw
aGVtZXJhbERhdGFTdG9yZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgIGJvb2wgZG9uZSA9IGZhbHNl
OworICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChlcGhlbWVyYWxEYXRhU3RvcmUuZ2V0KCksIHRydWUsICZkb25lLCBzZXRCb29sVG9UcnVl
KTsKKyAgICAgICAgcnVuVW50aWwoZG9uZSwgbm9UaW1lb3V0KTsKICAgICAgICAgV0tQYWdlQ29u
ZmlndXJhdGlvblNldFdlYnNpdGVEYXRhU3RvcmUocGFnZUNvbmZpZ3VyYXRpb24uZ2V0KCksIGVw
aGVtZXJhbERhdGFTdG9yZS5nZXQoKSk7CiAgICAgfQogCkBAIC0zMTI3LDEyICszMTM1LDE0IEBA
IFBsYXRmb3JtV2ViVmlldyogVGVzdENvbnRyb2xsZXI6OnBsYXRmb3IKIAogV0tDb250ZXh0UmVm
IFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUFkanVzdENvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29udGV4dENvbmZpZ3VyYXRpb24pCiB7Cisg
ICAgYm9vbCBkb25lID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUp
Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
ZGVmYXVsdFdlYnNpdGVEYXRhU3RvcmUoKSwgdHJ1ZSk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZGVmYXVsdFdlYnNpdGVEYXRhU3RvcmUo
KSwgdHJ1ZSwgJmRvbmUsIHNldEJvb2xUb1RydWUpOwogICAgIFdLQ29udGV4dFNldFByaW1hcnlX
ZWJzaXRlRGF0YVN0b3JlKGNvbnRleHQsIGRlZmF1bHRXZWJzaXRlRGF0YVN0b3JlKCkpOwogI2Vs
c2UKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKGNvbnRleHQpLCB0cnVlKTsKKyAgICBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChXS0NvbnRleHRH
ZXRXZWJzaXRlRGF0YVN0b3JlKGNvbnRleHQpLCB0cnVlLCAmZG9uZSwgc2V0Qm9vbFRvVHJ1ZSk7
CiAjZW5kaWYKKyAgICBydW5VbnRpbChkb25lLCBub1RpbWVvdXQpOwogICAgIHJldHVybiBjb250
ZXh0OwogfQogCkBAIC0zNDMzLDcgKzM0NDMsOSBAQCBib29sIFRlc3RDb250cm9sbGVyOjpkb2Vz
U3RhdGlzdGljc0RvbWFpCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NFbmFi
bGVkKGJvb2wgdmFsdWUpCiB7Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQod2Vic2l0ZURhdGFTdG9yZSgpLCB2YWx1ZSk7CisgICAgYm9vbCBk
b25lID0gZmFsc2U7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQod2Vic2l0ZURhdGFTdG9yZSgpLCB2YWx1ZSwgJmRvbmUsIHNldEJvb2xUb1Ry
dWUpOworICAgIHJ1blVudGlsKGRvbmUsIG5vVGltZW91dCk7CiB9CiAKIGJvb2wgVGVzdENvbnRy
b2xsZXI6OmlzU3RhdGlzdGljc0VwaGVtZXJhbCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398068</attachid>
            <date>2020-04-30 11:18:07 -0700</date>
            <delta_ts>2020-04-30 12:23:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211190-20200430111806.patch</filename>
            <type>text/plain</type>
            <size>2339</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MDk1NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDIwLTA0LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTjogWyBpT1MgXSBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20t
d2Vic2l0ZS1kYXRhLWRlbGV0aW9uIHRlc3RzIGFyZSBmbGFreSBjcmFzaGluZywgZmFpbGluZyBh
biB0aW1pbmcgb3V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjExMTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OmNvbmZpZ3VyZVdlYnNpdGVEYXRhU3RvcmVUZW1wb3JhcnlEaXJl
Y3Rvcmllcyk6CisgICAgICAgIE1ha2Ugc3VyZSB3ZSBkb24ndCBoYXZlIHR3byBkYXRhYmFzZSBm
aWxlcyBvcGVuIGF0IHRoZSBzYW1lIHRpbWUgaW4gdGhlIHNhbWUgbG9jYXRpb24gaW4gb3VyIHRl
c3RzLgorCiAyMDIwLTA0LTMwICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TXSBJbXBsZW1lbnQgLW1hcmtlZFRleHRSYW5nZQpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MzMsNyArNTMzLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y29uZmlndXJlV2Vic2l0ZURh
dAogICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0TG9jYWxTdG9yYWdl
RGlyZWN0b3J5KGNvbmZpZ3VyYXRpb24sIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgcGF0aFNlcGFy
YXRvciArICJMb2NhbFN0b3JhZ2UiKS5nZXQoKSk7CiAgICAgICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb25TZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShjb25maWd1cmF0aW9uLCB0
b1dLKHRlbXBvcmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3IgKyAiRGF0YWJhc2VzIiArIHBhdGhT
ZXBhcmF0b3IgKyAiV2ViU1FMIikuZ2V0KCkpOwogICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uU2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShjb25maWd1cmF0aW9uLCB0
b1dLKHRlbXBvcmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3IgKyAiTWVkaWFLZXlzIikuZ2V0KCkp
OwotICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeShjb25maWd1cmF0aW9uLCB0b1dLKHRlbXBvcmFyeUZvbGRlciAr
IHBhdGhTZXBhcmF0b3IgKyAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpLmdldCgpKTsKKyAgICAg
ICAgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoY29uZmlndXJhdGlvbiwgdG9XSyhtYWtlU3RyaW5nKHRlbXBvcmFyeUZvbGRl
ciwgcGF0aFNlcGFyYXRvciwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiLCBwYXRoU2VwYXJhdG9y
LCBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSkuZ2V0KCkpOwogICAgICAgICBXS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeShjb25maWd1cmF0aW9uLCB0b1dLKHRlbXBvcmFyeUZvbGRlciArIHBhdGhTZXBhcmF0
b3IgKyAiU2VydmljZVdvcmtlcnMiKS5nZXQoKSk7CiAgICAgICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb25TZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEoY29uZmlndXJhdGlvbiwgNDAw
ICogMTAyNCk7CiAgICAgICAgIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25TZXROZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKGNvbmZpZ3VyYXRpb24sIHRydWUp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398079</attachid>
            <date>2020-04-30 12:23:30 -0700</date>
            <delta_ts>2020-04-30 12:50:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211190-20200430122329.patch</filename>
            <type>text/plain</type>
            <size>4821</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MDk1OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDIwLTA0LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTjogWyBpT1MgXSBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20t
d2Vic2l0ZS1kYXRhLWRlbGV0aW9uIHRlc3RzIGFyZSBmbGFreSBjcmFzaGluZywgZmFpbGluZyBh
biB0aW1pbmcgb3V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjExMTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OmNvbmZpZ3VyZVdlYnNpdGVEYXRhU3RvcmVUZW1wb3JhcnlEaXJl
Y3Rvcmllcyk6CisgICAgICAgIEluIHRlc3RzIHRoYXQgc3dhcCBvdXQgdGhlIFdlYnNpdGVEYXRh
U3RvcmUsIGRvbid0IHVzZSB0aGUgc2FtZSBwYXRocyBhcyB0aGUgb3RoZXIgV2Vic2l0ZURhdGFT
dG9yZS4KKwogMjAyMC0wNC0zMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04gKHIxNzY4NjIsIHIyMTA0ODMpOiBMZWFrcyBvZiBCcm93c2Vy
V2luZG93Q29udHJvbGxlciBpbiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQpJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI2MDkz
NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MjUsMTYgKzUyNSwxNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjb25maWd1
cmVXZWJzaXRlRGF0CiB7CiAgICAgaWYgKGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9
IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpKSB7CiAgICAgICAgIFN0cmluZyB0ZW1wb3JhcnlGb2xk
ZXIgPSBTdHJpbmc6OmZyb21VVEY4KGR1bXBSZW5kZXJUcmVlVGVtcCk7CisgICAgICAgIGF1dG8g
cmFuZG9tTnVtYmVyID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKIAotICAgICAg
ICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0QXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeShjb25maWd1cmF0aW9uLCB0b1dLKHRlbXBvcmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3Ig
KyAiQXBwbGljYXRpb25DYWNoZSIpLmdldCgpKTsKLSAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvblNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShjb25maWd1cmF0aW9uLCB0b1dL
KHRlbXBvcmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3IgKyAiQ2FjaGUiKS5nZXQoKSk7Ci0gICAg
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25TZXRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkoY29uZmlndXJhdGlvbiwgdG9XSyh0ZW1wb3JhcnlGb2xkZXIgKyBwYXRoU2VwYXJhdG9yICsg
IkNhY2hlU3RvcmFnZSIpLmdldCgpKTsKLSAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvblNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNvbmZpZ3VyYXRpb24sIHRvV0so
dGVtcG9yYXJ5Rm9sZGVyICsgcGF0aFNlcGFyYXRvciArICJEYXRhYmFzZXMiICsgcGF0aFNlcGFy
YXRvciArICJJbmRleGVkREIiKS5nZXQoKSk7Ci0gICAgICAgIFdLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb25TZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoY29uZmlndXJhdGlvbiwgdG9XSyh0
ZW1wb3JhcnlGb2xkZXIgKyBwYXRoU2VwYXJhdG9yICsgIkxvY2FsU3RvcmFnZSIpLmdldCgpKTsK
LSAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KGNvbmZpZ3VyYXRpb24sIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgcGF0aFNlcGFy
YXRvciArICJEYXRhYmFzZXMiICsgcGF0aFNlcGFyYXRvciArICJXZWJTUUwiKS5nZXQoKSk7Ci0g
ICAgICAgIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25TZXRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KGNvbmZpZ3VyYXRpb24sIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgcGF0aFNlcGFy
YXRvciArICJNZWRpYUtleXMiKS5nZXQoKSk7Ci0gICAgICAgIFdLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb25TZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGNvbmZpZ3VyYXRp
b24sIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgcGF0aFNlcGFyYXRvciArICJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzIikuZ2V0KCkpOwotICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uU2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25maWd1cmF0aW9uLCB0
b1dLKHRlbXBvcmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3IgKyAiU2VydmljZVdvcmtlcnMiKS5n
ZXQoKSk7CisgICAgICAgIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25TZXRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KGNvbmZpZ3VyYXRpb24sIHRvV0sobWFrZVN0cmluZyh0ZW1wb3Jh
cnlGb2xkZXIsIHBhdGhTZXBhcmF0b3IsICJBcHBsaWNhdGlvbkNhY2hlIiwgcGF0aFNlcGFyYXRv
ciwgcmFuZG9tTnVtYmVyKSkuZ2V0KCkpOworICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uU2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGNvbmZpZ3VyYXRpb24sIHRvV0sobWFr
ZVN0cmluZyh0ZW1wb3JhcnlGb2xkZXIsIHBhdGhTZXBhcmF0b3IsICJDYWNoZSIsIHBhdGhTZXBh
cmF0b3IsIHJhbmRvbU51bWJlcikpLmdldCgpKTsKKyAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvblNldENhY2hlU3RvcmFnZURpcmVjdG9yeShjb25maWd1cmF0aW9uLCB0b1dL
KG1ha2VTdHJpbmcodGVtcG9yYXJ5Rm9sZGVyLCBwYXRoU2VwYXJhdG9yLCAiQ2FjaGVTdG9yYWdl
IiwgcGF0aFNlcGFyYXRvciwgcmFuZG9tTnVtYmVyKSkuZ2V0KCkpOworICAgICAgICBXS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoY29u
ZmlndXJhdGlvbiwgdG9XSyhtYWtlU3RyaW5nKHRlbXBvcmFyeUZvbGRlciwgcGF0aFNlcGFyYXRv
ciwgIkRhdGFiYXNlcyIsIHBhdGhTZXBhcmF0b3IsICJJbmRleGVkREIiLCBwYXRoU2VwYXJhdG9y
LCByYW5kb21OdW1iZXIpKS5nZXQoKSk7CisgICAgICAgIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb25TZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoY29uZmlndXJhdGlvbiwgdG9XSyhtYWtl
U3RyaW5nKHRlbXBvcmFyeUZvbGRlciwgcGF0aFNlcGFyYXRvciwgIkxvY2FsU3RvcmFnZSIsIHBh
dGhTZXBhcmF0b3IsIHJhbmRvbU51bWJlcikpLmdldCgpKTsKKyAgICAgICAgV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvblNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGNvbmZpZ3VyYXRp
b24sIHRvV0sobWFrZVN0cmluZyh0ZW1wb3JhcnlGb2xkZXIsIHBhdGhTZXBhcmF0b3IsICJEYXRh
YmFzZXMiLCBwYXRoU2VwYXJhdG9yLCAiV2ViU1FMIiwgcGF0aFNlcGFyYXRvciwgcmFuZG9tTnVt
YmVyKSkuZ2V0KCkpOworICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0
TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShjb25maWd1cmF0aW9uLCB0b1dLKG1ha2VTdHJpbmco
dGVtcG9yYXJ5Rm9sZGVyLCBwYXRoU2VwYXJhdG9yLCAiTWVkaWFLZXlzIiwgcGF0aFNlcGFyYXRv
ciwgcmFuZG9tTnVtYmVyKSkuZ2V0KCkpOworICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShjb25maWd1cmF0aW9u
LCB0b1dLKG1ha2VTdHJpbmcodGVtcG9yYXJ5Rm9sZGVyLCBwYXRoU2VwYXJhdG9yLCAiUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyIsIHBhdGhTZXBhcmF0b3IsIHJhbmRvbU51bWJlcikpLmdldCgpKTsK
KyAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkoY29uZmlndXJhdGlvbiwgdG9XSyhtYWtlU3RyaW5nKHRlbXBv
cmFyeUZvbGRlciwgcGF0aFNlcGFyYXRvciwgIlNlcnZpY2VXb3JrZXJzIiwgcGF0aFNlcGFyYXRv
ciwgcmFuZG9tTnVtYmVyKSkuZ2V0KCkpOwogICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uU2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKGNvbmZpZ3VyYXRpb24sIDQwMCAqIDEw
MjQpOwogICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0TmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZChjb25maWd1cmF0aW9uLCB0cnVlKTsKICAg
ICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldFN0YWxlV2hpbGVSZXZhbGlk
YXRlRW5hYmxlZChjb25maWd1cmF0aW9uLCB0cnVlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>