<?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>175265</bug_id>
          
          <creation_ts>2017-08-07 09:43:23 -0700</creation_ts>
          <short_desc>[GTK][WPE] webkit_cookie_manager_delete_all_cookies doesn&apos;t delete the cookies if called before a web process is running</short_desc>
          <delta_ts>2017-11-20 00:19:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>Other</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugzilla.gnome.org/show_bug.cgi?id=781005</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Debarshi Ray">rishi.is</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>tpopela</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1335990</commentid>
    <comment_count>0</comment_count>
    <who name="Debarshi Ray">rishi.is</who>
    <bug_when>2017-08-07 09:43:23 -0700</bug_when>
    <thetext>For context, see:
https://bugzilla.gnome.org/show_bug.cgi?id=781005

webkit_cookie_manager_delete_all_cookies no longer deletes all the cookies before returning ever since it was re-written in terms of webkit_website_data_manager_clear in:

commit c968a9600329208662695273a6ce676f84fc657f
Author: carlosgc@webkit.org &lt;carlosgc@webkit.org...&gt;
Date:   Wed Feb 15 07:34:59 2017 +0000

    [GTK] Update cookie manager API to properly work with ephemeral sessions
    https://bugs.webkit.org/show_bug.cgi?id=168230

This isn&apos;t surprising because now webkit_cookie_manager_delete_all_cookies asynchronously calls webkit_website_data_manager_clear but doesn&apos;t wait for it to complete without returning.

I don&apos;t know how WebProcessPool and the network process works, so I am not sure if webkit_cookie_manager_delete_all_cookies was working merely by accident.

I tried to work around this by wrapping webkit_website_data_manager_clear inside a new thread-default GMainContext (using g_main_context_push/pop_thread_default), but that doesn&apos;t work either. The GAsyncReadyCallback doesn&apos;t get invoked. Doesn&apos;t WTF::RunLoop, etc. not work with thread-default GMainContexts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335992</commentid>
    <comment_count>1</comment_count>
      <attachid>317425</attachid>
    <who name="Debarshi Ray">rishi.is</who>
    <bug_when>2017-08-07 09:44:35 -0700</bug_when>
    <thetext>Created attachment 317425
Reproducer: webkit_cookie_manager_delete_all_cookies doesn&apos;t delete the cookies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335994</commentid>
    <comment_count>2</comment_count>
      <attachid>317427</attachid>
    <who name="Debarshi Ray">rishi.is</who>
    <bug_when>2017-08-07 09:45:07 -0700</bug_when>
    <thetext>Created attachment 317427
Attempted workaround using webkit_website_data_manager_clear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337349</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-10 01:33:11 -0700</bug_when>
    <thetext>webkit_cookie_manager_delete_all_cookies() has never been sync, it has always sent an async message to the network process to delete the cookies. However, it&apos;s expected that a subsequent load always happens after the cookies has been deleted, because the load message is sent after the delete cookies ones. I don&apos;t know why this is not happening now with the data manager, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337359</commentid>
    <comment_count>4</comment_count>
    <who name="Debarshi Ray">rishi.is</who>
    <bug_when>2017-08-10 02:20:57 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #3)
&gt; webkit_cookie_manager_delete_all_cookies() has never been sync, it has
&gt; always sent an async message to the network process to delete the cookies.
&gt; However, it&apos;s expected that a subsequent load always happens after the
&gt; cookies has been deleted, because the load message is sent after the delete
&gt; cookies ones. I don&apos;t know why this is not happening now with the data
&gt; manager, though.

I see. Thanks for looking into it, Carlos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337373</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-10 03:46:11 -0700</bug_when>
    <thetext>The problem is that we are not deleting the cookies at all. This is what happens:

1- We create our WebKitWebContext that creates its WebProcessPool
2- We set a persistent cookies storage so a new network process is spawned for the process pool.
3- We ask the website data store to delete all cookies, but since website data store is a web process observer and we haven&apos;t spwaned any web process yet, it creates a new WebProcessPool with the default configuration (no persistent cookies) and sends the message to delete the cookies there.
4- The network process of the second process pool does nothing because it doesn&apos;t have cookies at all.

I don&apos;t know why website data store only uses process pools that already have a web process launched, Brady, Alex, any idea?

I know Apple fixed this by adding WebsiteDataStore::processPoolForCookieStorageOperations() that doesn&apos;t create a process pool if there isn&apos;t one with a web process launched, and returns nullptr in that case. Then the website data store saves the pending cookie operations, so that when the new process pool is created from the website data store, the pending cookies are sent to the newly created network process as parameters of the message AddWebsiteDataStore. We could try something similar, but I still don&apos;t understand why we want to create a secondary network process when we already have one running that is configured.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337483</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-08-10 10:34:18 -0700</bug_when>
    <thetext>Wow that&apos;s way too complicated....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339100</commentid>
    <comment_count>7</comment_count>
      <attachid>318242</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-16 00:43:42 -0700</bug_when>
    <thetext>Created attachment 318242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339101</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-16 00:45:35 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339206</commentid>
    <comment_count>9</comment_count>
      <attachid>318242</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-08-16 10:29:58 -0700</bug_when>
    <thetext>Comment on attachment 318242
Patch

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

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1191
&gt; -    return &amp;processPool.websiteDataStore().websiteDataStore() == this;
&gt; +    return &amp;processPool.websiteDataStore().websiteDataStore() == this || m_associatedProcessPools.contains(&amp;processPool);

This is the magic line that makes everything work, right? How does this avoid the network process being unnecessarily spawned?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339216</commentid>
    <comment_count>10</comment_count>
      <attachid>318242</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-16 10:56:10 -0700</bug_when>
    <thetext>Comment on attachment 318242
Patch

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

We need a wk2 owner for this, Alex?

&gt;&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1191
&gt;&gt; +    return &amp;processPool.websiteDataStore().websiteDataStore() == this || m_associatedProcessPools.contains(&amp;processPool);
&gt; 
&gt; This is the magic line that makes everything work, right? How does this avoid the network process being unnecessarily spawned?

It doesn&apos;t avoid the network process from being spawnede, it avoids that a new process pool with a default configuration is spawned to do nothing. This ensures that our process pool, already configured, is used and the network process with the right configuration  is spawned only if needed, to do the right thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342660</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-08-26 10:02:26 -0700</bug_when>
    <thetext>Hm, I have another question about this. What about bug #169797? It looks like Brady already fixed this in a different way? Perhaps we just need to implement the unimplemented cookie storage functions in NetworkStorageSessionSoup.cpp?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342783</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-28 02:40:47 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #11)
&gt; Hm, I have another question about this. What about bug #169797? It looks
&gt; like Brady already fixed this in a different way? Perhaps we just need to
&gt; implement the unimplemented cookie storage functions in
&gt; NetworkStorageSessionSoup.cpp?

I don&apos;t think that &quot;workaround&quot; would fix this issue, it seems to allow setting cookies while the network process hasn&apos;t been spawned yet, but not to delete them or any other operation. It doesn&apos;t avoid spawning a network process for nothing either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342799</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-08-28 04:26:02 -0700</bug_when>
    <thetext>OK. I would ask Brady to do the owner review. Maybe he&apos;ll want to update the Mac to take this approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342846</commentid>
    <comment_count>14</comment_count>
      <attachid>318242</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-08-28 09:34:53 -0700</bug_when>
    <thetext>Comment on attachment 318242
Patch

If a WebsiteDataStore is going to keep a set of &quot;associated WebProcessPools&quot; like this, then WebProcessPool itself has to do the association in its constructor and destructor. It&apos;s folly to mix API objects and IMPL objects like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342847</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-08-28 09:35:59 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #14)
&gt; Comment on attachment 318242 [details]
&gt; Patch
&gt; 
&gt; If a WebsiteDataStore is going to keep a set of &quot;associated WebProcessPools&quot;
&gt; like this, then WebProcessPool itself has to do the association in its
&gt; constructor and destructor. It&apos;s folly to mix API objects and IMPL objects
&gt; like this.

We need to do better about this &quot;web process pool vs website data store&quot; thing in general. This patch is a wallpaper job for one specific API for one specific use case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343086</commentid>
    <comment_count>16</comment_count>
      <attachid>319250</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-29 04:11:32 -0700</bug_when>
    <thetext>Created attachment 319250
Updated patch

This patch moves the process pool tracking from the GLib API to the cross-platform code. This way WebProcessPool and WebPageProxy are the ones adding/removing associated process pools to WebsiteDataStore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344699</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-01 17:44:36 -0700</bug_when>
    <thetext>Brady, is this version OK with you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347888</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-12 07:21:51 -0700</bug_when>
    <thetext>Hi Brady, we need to land a fix for this issue and you didn&apos;t like the last version of this patch... can you review the new version please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348368</commentid>
    <comment_count>19</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-09-13 11:00:20 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #18)
&gt; Hi Brady, we need to land a fix for this issue and you didn&apos;t like the last
&gt; version of this patch... can you review the new version please?

Sure, will look in a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348371</commentid>
    <comment_count>20</comment_count>
      <attachid>319250</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-13 11:01:37 -0700</bug_when>
    <thetext>Comment on attachment 319250
Updated patch

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

&gt; Source/WebKit/ChangeLog:24
&gt; +        (API::ProcessPoolConfiguration::copy): Aslo copy the default WebsiteDataStore.

Aslo

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:183
&gt; +    Vector&lt;WebProcessPool*&gt; m_associatedProcessPools;

This can probably be a Vector&lt;std::reference_wrapper&lt;WebProcessPool&gt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348373</commentid>
    <comment_count>21</comment_count>
      <attachid>319250</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-13 11:04:15 -0700</bug_when>
    <thetext>Comment on attachment 319250
Updated patch

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

&gt; Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h:157
&gt; +    RefPtr&lt;WebsiteDataStore&gt; m_defaultWebsiteDataStore;

It seems strange to have a member reference to the default website data store.  Couldn&apos;t defaultWebsiteDataStore be a static method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348392</commentid>
    <comment_count>22</comment_count>
      <attachid>319250</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-09-13 11:27:06 -0700</bug_when>
    <thetext>Comment on attachment 319250
Updated patch

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

Note that this patch is obsoleted by https://trac.webkit.org/changeset/221834/webkit, and will need to be rethought.

&gt; Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h:68
&gt; +    WebsiteDataStore* defaultWebsiteDataStore() const { return m_defaultWebsiteDataStore.get(); }
&gt; +    void setDefaultWebsiteDataStore(WebsiteDataStore&amp; websiteDataStore) { m_defaultWebsiteDataStore = &amp;websiteDataStore; }

This name is problematic:
&quot;default website data store&quot; is already an established concept in the APIWebsiteDataStore API.

But also, please note that we need to move *away* from the concept of a process pool having a default datastore and this patch further cements the concept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348395</commentid>
    <comment_count>23</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-09-13 11:29:29 -0700</bug_when>
    <thetext>I&apos;m sorry if I didn&apos;t make this explicitly clear in my earlier comment a few weeks ago.

It is a problem that we rely on a WebProcessPool having an implicit WebsiteDataStore. It should be a goal to move *away* from that, not further cement it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348733</commentid>
    <comment_count>24</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-09-14 05:26:18 -0700</bug_when>
    <thetext>Is it just a naming issue? WebProcessPool has always a data store, at construction time it creates a legacy one or gets the default one (there&apos;s indeed a default one, I&apos;m just allowing the api layer to set it up in my patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351557</commentid>
    <comment_count>25</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-09-22 00:26:16 -0700</bug_when>
    <thetext>Brady?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351820</commentid>
    <comment_count>26</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-09-22 14:00:34 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #24)
&gt; WebProcessPool has always a data store, at
&gt; construction time it creates a legacy one or gets the default one 

I agree that is what exists in the tree today.

What I am saying is that this is a mistake and we need to move away from it.

If you&apos;re insistent that you need to expose this as API, I&apos;m giving you fair warning that future WebKit refactoring patches will break the API and it will be up to you to maintain support at that point up in your API layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351930</commentid>
    <comment_count>27</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-09-22 23:05:51 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #26)
&gt; (In reply to Carlos Garcia Campos from comment #24)
&gt; &gt; WebProcessPool has always a data store, at
&gt; &gt; construction time it creates a legacy one or gets the default one 
&gt; 
&gt; I agree that is what exists in the tree today.
&gt; 
&gt; What I am saying is that this is a mistake and we need to move away from it.

Ok, what should we do instead?

&gt; If you&apos;re insistent that you need to expose this as API, I&apos;m giving you fair
&gt; warning that future WebKit refactoring patches will break the API and it
&gt; will be up to you to maintain support at that point up in your API layer.

I&apos;m not insistent to do this, I&apos;m insistent to fix this bug. If this is not the right way, let&apos;s do it right, but I need to know what the right way is. I don&apos;t mind doing any refactorings needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353167</commentid>
    <comment_count>28</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-09-27 10:43:06 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #27)
&gt; (In reply to Brady Eidson from comment #26)
&gt; &gt; (In reply to Carlos Garcia Campos from comment #24)
&gt; &gt; &gt; WebProcessPool has always a data store, at
&gt; &gt; &gt; construction time it creates a legacy one or gets the default one 
&gt; &gt; 
&gt; &gt; I agree that is what exists in the tree today.
&gt; &gt; 
&gt; &gt; What I am saying is that this is a mistake and we need to move away from it.
&gt; 
&gt; Ok, what should we do instead?

It&apos;s already wrong in that web views created from one process pool already can have difference data stores from one another. Additionally, we&apos;ll soon be entering a world where one web view might use more than one data store.

So, WebProcessPool should not have a data store member. 

Everything it does that uses the data store member should instead take a data store argument.

With those principles in place, recompiling and fixing up call sites, etc etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372559</commentid>
    <comment_count>29</comment_count>
      <attachid>327054</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-11-16 02:58:30 -0800</bug_when>
    <thetext>Created attachment 327054
New patch

In r221834, WebProcessPool::setPrimaryDataStore() was added and the default one is no longer created until the very last moment. Using WebProcessPool::setPrimaryDataStore() when creating the web context fixes this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373086</commentid>
    <comment_count>30</comment_count>
      <attachid>327054</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-17 08:59:32 -0800</bug_when>
    <thetext>Comment on attachment 327054
New patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestCookieManager.cpp:313
&gt; +    // Changed signal is emittend for every deleted cookie, twice in this case.

emitted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373741</commentid>
    <comment_count>31</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-11-20 00:11:37 -0800</bug_when>
    <thetext>Committed r225043: &lt;https://trac.webkit.org/changeset/225043&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373743</commentid>
    <comment_count>32</comment_count>
    <who name="Debarshi Ray">rishi.is</who>
    <bug_when>2017-11-20 00:19:24 -0800</bug_when>
    <thetext>Thanks for seeing this through, folks. Much appreciated.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>317425</attachid>
            <date>2017-08-07 09:44:35 -0700</date>
            <delta_ts>2017-08-07 09:44:35 -0700</delta_ts>
            <desc>Reproducer: webkit_cookie_manager_delete_all_cookies doesn&apos;t delete the cookies</desc>
            <filename>webkit-delete-cookies.c</filename>
            <type>text/plain</type>
            <size>1271</size>
            <attacher name="Debarshi Ray">rishi.is</attacher>
            
              <data encoding="base64">LyogZ2NjIHdlYmtpdC1kZWxldGUtY29va2llcy5jICQocGtnLWNvbmZpZyAtLWNmbGFncyAtLWxp
YnMKICAgd2Via2l0Mmd0ay00LjAgZ3RrKy0zLjAgZ2xpYi0yLjApICovCgojaW5jbHVkZSA8Z3Rr
L2d0ay5oPgojaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CgppbnQKbWFpbiAodm9pZCkKewog
IEd0a1dpZGdldCAqaGVhZGVyOwogIEd0a1dpZGdldCAqdmlldzsKICBHdGtXaWRnZXQgKndpbmRv
dzsKICBXZWJLaXRDb29raWVNYW5hZ2VyICpjb29raWVfbWFuYWdlcjsKICBXZWJLaXRXZWJDb250
ZXh0ICpjb250ZXh0OwoKICBndGtfaW5pdCAoTlVMTCwgTlVMTCk7CgogIHdpbmRvdyA9IGd0a193
aW5kb3dfbmV3IChHVEtfV0lORE9XX1RPUExFVkVMKTsKICBndGtfd2luZG93X3NldF9kZWZhdWx0
X3NpemUgKEdUS19XSU5ET1cgKHdpbmRvdyksIDYwMCwgNDAwKTsKICBnX3NpZ25hbF9jb25uZWN0
ICh3aW5kb3csICJkZWxldGUtZXZlbnQiLCBndGtfbWFpbl9xdWl0LCBOVUxMKTsKCiAgaGVhZGVy
ID0gZ3RrX2hlYWRlcl9iYXJfbmV3ICgpOwogIGd0a19oZWFkZXJfYmFyX3NldF9zaG93X2Nsb3Nl
X2J1dHRvbiAoR1RLX0hFQURFUl9CQVIgKGhlYWRlciksIFRSVUUpOwogIGd0a193aW5kb3dfc2V0
X3RpdGxlYmFyIChHVEtfV0lORE9XICh3aW5kb3cpLCBoZWFkZXIpOwoKICB2aWV3ID0gd2Via2l0
X3dlYl92aWV3X25ldyAoKTsKICBndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAod2lu
ZG93KSwgdmlldyk7CgogIGNvbnRleHQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQgKFdF
QktJVF9XRUJfVklFVyAodmlldykpOwogIGNvb2tpZV9tYW5hZ2VyID0gd2Via2l0X3dlYl9jb250
ZXh0X2dldF9jb29raWVfbWFuYWdlciAoY29udGV4dCk7CiAgd2Via2l0X2Nvb2tpZV9tYW5hZ2Vy
X3NldF9wZXJzaXN0ZW50X3N0b3JhZ2UgKAogICAgICBjb29raWVfbWFuYWdlciwKICAgICAgIi90
bXAvY29va2llcy5zcWxpdGUiLAogICAgICBXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFH
RV9TUUxJVEUpOwogIHdlYmtpdF9jb29raWVfbWFuYWdlcl9kZWxldGVfYWxsX2Nvb2tpZXMgKGNv
b2tpZV9tYW5hZ2VyKTsKICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkgKFdFQktJVF9XRUJfVklF
VyAodmlldyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly93d3cuZmFjZWJv
b2suY29tLyIpOwoKICBndGtfd2lkZ2V0X3Nob3dfYWxsICh3aW5kb3cpOwogIGd0a19tYWluICgp
OwoKICByZXR1cm4gMDsKfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>317427</attachid>
            <date>2017-08-07 09:45:07 -0700</date>
            <delta_ts>2017-08-07 09:45:07 -0700</delta_ts>
            <desc>Attempted workaround using webkit_website_data_manager_clear</desc>
            <filename>webkit-delete-cookies-1.c</filename>
            <type>text/plain</type>
            <size>3072</size>
            <attacher name="Debarshi Ray">rishi.is</attacher>
            
              <data encoding="base64">LyogZ2NjIHdlYmtpdC1kZWxldGUtY29va2llcy0xLmMgJChwa2ctY29uZmlnIC0tY2ZsYWdzIC0t
bGlicwogICB3ZWJraXQyZ3RrLTQuMCBndGsrLTMuMCBnbGliLTIuMCkgKi8KCiNpbmNsdWRlIDxn
dGsvZ3RrLmg+CiNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KCnR5cGVkZWYgc3RydWN0CnsK
ICBHQXN5bmNSZXN1bHQgKnJlczsKICBHTWFpbkxvb3AgKmxvb3A7Cn0gV2Vic2l0ZURhdGFNYW5h
Z2VyQ2xlYXJEYXRhOwoKc3RhdGljIHZvaWQKd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xlYXJfY2Ig
KEdPYmplY3QgKnNvdXJjZV9vYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QXN5bmNSZXN1bHQgKnJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVy
IHVzZXJfZGF0YSkKewogIFdlYnNpdGVEYXRhTWFuYWdlckNsZWFyRGF0YSAqZGF0YQogICAgPSAo
V2Vic2l0ZURhdGFNYW5hZ2VyQ2xlYXJEYXRhICopIHVzZXJfZGF0YTsKCiAgZGF0YS0+cmVzID0g
Z19vYmplY3RfcmVmIChyZXMpOwogIGdfbWFpbl9sb29wX3F1aXQgKGRhdGEtPmxvb3ApOwp9Cgpz
dGF0aWMgZ2Jvb2xlYW4Kd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyX3N5bmMgKFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgdHlwZXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVGltZVNwYW4gdGltZXNwYW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgKmNhbmNlbGxhYmxl
KQp7CiAgR01haW5Db250ZXh0ICpjb250ZXh0OwogIFdlYnNpdGVEYXRhTWFuYWdlckNsZWFyRGF0
YSBkYXRhOwogIGdib29sZWFuIHJldF92YWw7CgogIGNvbnRleHQgPSBnX21haW5fY29udGV4dF9u
ZXcgKCk7CiAgZ19tYWluX2NvbnRleHRfcHVzaF90aHJlYWRfZGVmYXVsdCAoY29udGV4dCk7Cgog
IGRhdGEubG9vcCA9IGdfbWFpbl9sb29wX25ldyAoY29udGV4dCwgRkFMU0UpOwoKICB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xlYXIgKG1hbmFnZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eXBlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRpbWVzcGFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2Vs
bGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJzaXRlX2RhdGFf
bWFuYWdlcl9jbGVhcl9jYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZk
YXRhKTsKCiAgZ19tYWluX2xvb3BfcnVuIChkYXRhLmxvb3ApOwogIGdfbWFpbl9jb250ZXh0X3Bv
cF90aHJlYWRfZGVmYXVsdCAoY29udGV4dCk7CgogIHJldF92YWwgPSB3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfY2xlYXJfZmluaXNoIChtYW5hZ2VyLCBkYXRhLnJlcywgTlVMTCk7CgogIGdf
b2JqZWN0X3VucmVmIChkYXRhLnJlcyk7CiAgZ19tYWluX2xvb3BfdW5yZWYgKGRhdGEubG9vcCk7
CiAgZ19tYWluX2NvbnRleHRfdW5yZWYgKGNvbnRleHQpOwogIHJldHVybiByZXRfdmFsOwp9Cgpp
bnQKbWFpbiAodm9pZCkKewogIEd0a1dpZGdldCAqaGVhZGVyOwogIEd0a1dpZGdldCAqdmlldzsK
ICBHdGtXaWRnZXQgKndpbmRvdzsKICBXZWJLaXRDb29raWVNYW5hZ2VyICpjb29raWVfbWFuYWdl
cjsKICBXZWJLaXRXZWJDb250ZXh0ICpjb250ZXh0OwogIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ciAqd2Vic2l0ZV9kYXRhX21hbmFnZXI7CgogIGd0a19pbml0IChOVUxMLCBOVUxMKTsKCiAgd2lu
ZG93ID0gZ3RrX3dpbmRvd19uZXcgKEdUS19XSU5ET1dfVE9QTEVWRUwpOwogIGd0a193aW5kb3df
c2V0X2RlZmF1bHRfc2l6ZSAoR1RLX1dJTkRPVyAod2luZG93KSwgNjAwLCA0MDApOwogIGdfc2ln
bmFsX2Nvbm5lY3QgKHdpbmRvdywgImRlbGV0ZS1ldmVudCIsIGd0a19tYWluX3F1aXQsIE5VTEwp
OwoKICBoZWFkZXIgPSBndGtfaGVhZGVyX2Jhcl9uZXcgKCk7CiAgZ3RrX2hlYWRlcl9iYXJfc2V0
X3Nob3dfY2xvc2VfYnV0dG9uIChHVEtfSEVBREVSX0JBUiAoaGVhZGVyKSwgVFJVRSk7CiAgZ3Rr
X3dpbmRvd19zZXRfdGl0bGViYXIgKEdUS19XSU5ET1cgKHdpbmRvdyksIGhlYWRlcik7CgogIHZp
ZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3ICgpOwogIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09O
VEFJTkVSICh3aW5kb3cpLCB2aWV3KTsKCiAgY29udGV4dCA9IHdlYmtpdF93ZWJfdmlld19nZXRf
Y29udGV4dCAoV0VCS0lUX1dFQl9WSUVXICh2aWV3KSk7CgogIGNvb2tpZV9tYW5hZ2VyID0gd2Vi
a2l0X3dlYl9jb250ZXh0X2dldF9jb29raWVfbWFuYWdlciAoY29udGV4dCk7CiAgd2Via2l0X2Nv
b2tpZV9tYW5hZ2VyX3NldF9wZXJzaXN0ZW50X3N0b3JhZ2UgKAogICAgICBjb29raWVfbWFuYWdl
ciwKICAgICAgIi90bXAvY29va2llcy5zcWxpdGUiLAogICAgICBXRUJLSVRfQ09PS0lFX1BFUlNJ
U1RFTlRfU1RPUkFHRV9TUUxJVEUpOwoKICB3ZWJzaXRlX2RhdGFfbWFuYWdlciA9IHdlYmtpdF93
ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIgKGNvbnRleHQpOwogIHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVhcl9zeW5jICh3ZWJzaXRlX2RhdGFfbWFuYWdlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1dFQlNJVEVfREFU
QV9DT09LSUVTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKCiAgd2Via2l0
X3dlYl92aWV3X2xvYWRfdXJpIChXRUJLSVRfV0VCX1ZJRVcgKHZpZXcpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS8iKTsKCiAgZ3RrX3dpZGdl
dF9zaG93X2FsbCAod2luZG93KTsKICBndGtfbWFpbiAoKTsKCiAgcmV0dXJuIDA7Cn0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318242</attachid>
            <date>2017-08-16 00:43:42 -0700</date>
            <delta_ts>2017-08-29 04:11:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-associated-process-pool.diff</filename>
            <type>text/plain</type>
            <size>10393</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNTlkOTUxMmYzNTcuLjMzYWYwMDRlYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM3IEBACisyMDE3LTA4LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIHdlYmtpdF9jb29raWVfbWFuYWdlcl9kZWxldGVf
YWxsX2Nvb2tpZXMgZG9lc24ndCBkZWxldGUgdGhlIGNvb2tpZXMgaWYgY2FsbGVkIGJlZm9yZSBh
IHdlYiBwcm9jZXNzIGlzIHJ1bm5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgaXMgd2hhdCBoYXBwZW5zOgorCisgICAgICAgIDEtIFdlIGNy
ZWF0ZSBvdXIgV2ViS2l0V2ViQ29udGV4dCB0aGF0IGNyZWF0ZXMgaXRzIFdlYlByb2Nlc3NQb29s
LgorICAgICAgICAyLSBXZSBzZXQgYSBwZXJzaXN0ZW50IGNvb2tpZXMgc3RvcmFnZS4KKyAgICAg
ICAgMy0gV2UgYXNrIHRoZSB3ZWJzaXRlIGRhdGEgc3RvcmUgdG8gZGVsZXRlIGFsbCBjb29raWVz
LCBidXQgc2luY2Ugd2Vic2l0ZSBkYXRhIHN0b3JlIGlzIGEgd2ViIHByb2Nlc3Mgb2JzZXJ2ZXIK
KyAgICAgICAgICAgYW5kIHdlIGhhdmVuJ3Qgc3Bhd25lZCBhbnkgd2ViIHByb2Nlc3MgeWV0LCBp
dCBjcmVhdGVzIGEgbmV3IFdlYlByb2Nlc3NQb29sIHdpdGggdGhlIGRlZmF1bHQgY29uZmlndXJh
dGlvbgorICAgICAgICAgICAobm8gcGVyc2lzdGVudCBjb29raWVzKSBhbmQgc2VuZHMgdGhlIG1l
c3NhZ2UgdG8gZGVsZXRlIHRoZSBjb29raWVzIHRoZXJlLgorICAgICAgICA0LSBUaGUgbmV0d29y
ayBwcm9jZXNzIG9mIHRoZSBzZWNvbmQgcHJvY2VzcyBwb29sIGRvZXMgbm90aGluZyBiZWNhdXNl
IGl0IGRvZXNuJ3QgaGF2ZSBjb29raWVzIGF0IGFsbC4KKworICAgICAgICBXZSBkb24ndCByZWFs
bHkgbmVlZCB0byBjcmVhdGUgYSBuZXcgV2ViUHJvY2Vzc1Bvb2wgYW5kIGxhdW5jaCBhIG5ldHdv
cmsgcHJvY2VzcyB0byBzZW5kIGl0IGEgdGFzayB0aGF0IHdlIGtub3cKKyAgICAgICAgZm9yIHN1
cmUgaXQncyBub3QgZ29pbmcgdG8gZG8gYW55dGhpbmcuIEluIHRoZSBHTGliIEFQSSB3ZSBhbHJl
YWR5IGtlZXAgdHJhY2sgb2YgdGhlIFdlYlByb2Nlc3NQb29scyBhc3NvY2lhdGVkCisgICAgICAg
IHRvIHRoZSB3ZWJzaXRlIGRhdGEgc3RvcmUsIHNvIHdlIGtub3cgZm9yIHN1cmUgd2hpY2ggcHJv
Y2VzcyBwb29sIGlzIHRoZSByaWdodCBvbmUuIFRoaXMgcGF0Y2ggYWRkcyBhIHdheSB0bworICAg
ICAgICBhZGQvcmVtb3ZlIGFzc29jaWF0ZWQgV2ViUHJvY2Vzc1Bvb2xzIHRvIGEgV2Vic2l0ZURh
dGFTdG9yZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIuY3BwOgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0
b3JlKTogSW5pdGlhbGl6ZSB0aGUgYXNzb2NpYXRlZCBwcm9jZXNzIHBvb2xzLgorICAgICAgICAo
d2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJvY2Vzc1Bvb2wpOiBBZGQgdGhlIHByb2Nlc3Mg
cG9vbCBhcyBhc3NvY2lhdGVkIHRvIHRoZSBXZWJzaXRlRGF0YVN0b3JlLgorICAgICAgICAod2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyUmVtb3ZlUHJvY2Vzc1Bvb2wpOiBSZW1vdmUgdGhlIHByb2Nl
c3MgcG9vbCBhcyBhc3NvY2lhdGVkIGZyb20gdGhlIFdlYnNpdGVEYXRhU3RvcmUuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjphZGRBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wpOiBBZGQg
dGhlIGdpdmVuIFdlYlByb2Nlc3NQb29sIHRvIHRoZSBzZXQgb2YgYXNzb2NpYXRlZAorICAgICAg
ICBwcm9jZXNzIHBvb2xzLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1v
dmVBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wpOiBSZW1vdmUgdGhlIGdpdmVuIFdlYlByb2Nlc3NQb29s
IGZyb20gdGhlIHNldCBvZgorICAgICAgICBhc3NvY2lhdGVkIHByb2Nlc3MgcG9vbHMuCisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmlzQXNzb2NpYXRlZFByb2Nlc3NQb29sIGNv
bnN0KTogQSBwcm9jZXNzIHBvb2wgaXMgYWxzbyBhc3NvY2lhdGVkIGlmIGl0J3MgaW4gdGhlIHNl
dAorICAgICAgICBvZiBhc3NvY2lhdGVkIHByb2Nlc3MgcG9vbHMuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwogMjAxNy0wOC0xNCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BF
XSBBdm9pZCBlbWl0dGluZyBXZWJLaXRGYXZpY29uRGF0YWJhc2U6OmZhdmljb24tY2hhbmdlZCBt
dWx0aXBsZSB0aW1lcyB3aGlsZSBzZXR0aW5nIGFuIGljb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIu
Y3BwCmluZGV4IGM1Y2RlZGIyOGEwLi5mYzU1OTAwYmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIuY3BwCkBAIC0zNzIsNiArMzcyLDggQEAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRX
ZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW4KICAgICAg
ICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkgOiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYt
PndlYlNRTERpcmVjdG9yeS5nZXQoKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29uZmlndXJhdGlvbikp
OworICAgICAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogcHJpdi0+cHJvY2Vzc1Bvb2xzKQor
ICAgICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmFk
ZEFzc29jaWF0ZWRQcm9jZXNzUG9vbCgqcHJvY2Vzc1Bvb2wpOwogICAgIH0KIAogICAgIHJldHVy
biAqcHJpdi0+d2Vic2l0ZURhdGFTdG9yZTsKQEAgLTM4MSwxMiArMzgzLDE2IEBAIHZvaWQgd2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJvY2Vzc1Bvb2woV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyKiBtYW5hZ2VyLCBXCiB7CiAgICAgQVNTRVJUKCFtYW5hZ2VyLT5wcml2LT5wcm9jZXNzUG9v
bHMuY29udGFpbnMoJnByb2Nlc3NQb29sKSk7CiAgICAgbWFuYWdlci0+cHJpdi0+cHJvY2Vzc1Bv
b2xzLmFwcGVuZCgmcHJvY2Vzc1Bvb2wpOworICAgIGlmIChtYW5hZ2VyLT5wcml2LT53ZWJzaXRl
RGF0YVN0b3JlKQorICAgICAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlLT53ZWJz
aXRlRGF0YVN0b3JlKCkuYWRkQXNzb2NpYXRlZFByb2Nlc3NQb29sKHByb2Nlc3NQb29sKTsKIH0K
IAogdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJSZW1vdmVQcm9jZXNzUG9vbChXZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkK
IHsKICAgICBBU1NFUlQobWFuYWdlci0+cHJpdi0+cHJvY2Vzc1Bvb2xzLmNvbnRhaW5zKCZwcm9j
ZXNzUG9vbCkpOwogICAgIG1hbmFnZXItPnByaXYtPnByb2Nlc3NQb29scy5yZW1vdmVGaXJzdCgm
cHJvY2Vzc1Bvb2wpOworICAgIGlmIChtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlKQor
ICAgICAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucmVtb3ZlQXNzb2NpYXRlZFByb2Nlc3NQb29sKHByb2Nlc3NQb29sKTsKIH0KIAogY29uc3Qg
VmVjdG9yPFdlYlByb2Nlc3NQb29sKj4mIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nl
c3NQb29scyhXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CmluZGV4IGQzZTNhNTM0NzVlLi4xOTU2MzliODYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTEx
NzYsOSArMTE3NiwxOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OndlYlByb2Nlc3NEaWRDbG9z
ZUNvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUAogICAgICAgICBtX3N0b3Jh
Z2VNYW5hZ2VyLT5wcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKHdlYlByb2Nlc3NQcm94eSwgY29u
bmVjdGlvbik7CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6YWRkQXNzb2NpYXRlZFByb2Nl
c3NQb29sKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKK3sKKyAgICBtX2Fzc29jaWF0ZWRQ
cm9jZXNzUG9vbHMuYWRkKCZwcm9jZXNzUG9vbCk7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6cmVtb3ZlQXNzb2NpYXRlZFByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9v
bCkKK3sKKyAgICBtX2Fzc29jaWF0ZWRQcm9jZXNzUG9vbHMucmVtb3ZlKCZwcm9jZXNzUG9vbCk7
Cit9CisKIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2woV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKSBjb25zdAogewotICAgIHJldHVybiAmcHJvY2Vzc1Bv
b2wud2Vic2l0ZURhdGFTdG9yZSgpLndlYnNpdGVEYXRhU3RvcmUoKSA9PSB0aGlzOworICAgIHJl
dHVybiAmcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpLndlYnNpdGVEYXRhU3RvcmUoKSA9
PSB0aGlzIHx8IG1fYXNzb2NpYXRlZFByb2Nlc3NQb29scy5jb250YWlucygmcHJvY2Vzc1Bvb2wp
OwogfQogCiBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVEYXRhU3RvcmU6
OnByb2Nlc3NQb29scyhzaXplX3QgY291bnQsIGJvb2wgZW5zdXJlQVBvb2xFeGlzdHMpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKaW5kZXggODBlOGYwN2UyNTAuLjUwMDM5MzYwYTMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
CkBAIC0xMTksNiArMTE5LDggQEAgcHVibGljOgogICAgIFN0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdl
TWFuYWdlcigpIHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0KIAogICAgIFdlYlBy
b2Nlc3NQb29sKiBwcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAg
dm9pZCBhZGRBc3NvY2lhdGVkUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2wmKTsKKyAgICB2b2lk
IHJlbW92ZUFzc29jaWF0ZWRQcm9jZXNzUG9vbChXZWJQcm9jZXNzUG9vbCYpOwogICAgIGJvb2wg
aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2wmKSBjb25zdDsKIAogICAgIFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHBhcmFtZXRlcnMoKTsKQEAgLTE3NSw2ICsxNzcsOCBA
QCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBtX2NmQ29v
a2llU3RvcmFnZTsKICNlbmRpZgogICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q29va2llPiBtX3BlbmRp
bmdDb29raWVzOworCisgICAgSGFzaFNldDxXZWJQcm9jZXNzUG9vbCo+IG1fYXNzb2NpYXRlZFBy
b2Nlc3NQb29sczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA4YjM2Nzg5NjUxNy4uODQ4NjNhZTdkOTYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Ny0wOC0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0dUS11bV1BFXSB3ZWJraXRfY29va2llX21hbmFnZXJfZGVsZXRlX2FsbF9jb29raWVz
IGRvZXNuJ3QgZGVsZXRlIHRoZSBjb29raWVzIGlmIGNhbGxlZCBiZWZvcmUgYSB3ZWIgcHJvY2Vz
cyBpcyBydW5uaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzUyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGVzdCBjYXNlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHRlc3RDb29raWVNYW5hZ2Vy
UGVyc2lzdGVudFN0b3JhZ2VEZWxldGVBbGwpOgorICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgor
ICAgICAgICAoYmVmb3JlQWxsKToKKwogMjAxNy0wOC0xMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFdURjo6RnVuY3Rpb24gZG9lcyBub3QgYWxsb3cgZm9yIHJlZmVy
ZW5jZSAvIG5vbi1kZWZhdWx0IGNvbnN0cnVjdGlibGUgcmV0dXJuIHR5cGVzCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5h
Z2VyLmNwcAppbmRleCAxYmU4Y2MwZDA2MC4uZGE5NzQ1NjdlNDggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2Vy
LmNwcApAQCAtMzAwLDYgKzMwMCwyOCBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlclBl
cnNpc3RlbnRTdG9yYWdlKENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0LCBnY29uc3RwbwogICAgIGdf
YXNzZXJ0X2NtcGludChnX3N0cnZfbGVuZ3RoKHRlc3QtPmdldERvbWFpbnMoKSksID09LCAwKTsK
IH0KIAorc3RhdGljIHZvaWQgdGVzdENvb2tpZU1hbmFnZXJQZXJzaXN0ZW50U3RvcmFnZURlbGV0
ZUFsbChDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICAvLyBU
aGlzIGNoZWNrcyB0aGF0IHdlIGNhbiByZW1vdmUgYWxsIHRoZSBjb29raWVzIG9mIGFuIGV4aXN0
aW5nIGZpbGUgYmVmb3JlIGEgd2ViIHByb2Nlc3MgaXMgY3JlYXRlZC4KKyAgICAvLyBTZWUgYnVn
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUyNjUuCisgICAgc3Rh
dGljIGNvbnN0IGNoYXIgY29va2llc0ZpbGVGb3JtYXRbXSA9ICIxMjcuMC4wLjFcdEZBTFNFXHQv
XHRGQUxTRVx0JWxkXHRmb29cdGJhclxubG9jYWxob3N0XHRGQUxTRVx0L1x0RkFMU0VcdCVsZFx0
YmF6XHRxdXhcbiI7CisgICAgdGltZV90IGV4cGlyZXMgPSB0aW1lKG51bGxwdHIpICsgNjA7Cisg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBjb29raWVzRmlsZUNvbnRlbnRzKGdfc3RyZHVwX3ByaW50Zihj
b29raWVzRmlsZUZvcm1hdCwgZXhwaXJlcywgZXhwaXJlcykpOworICAgIEdVbmlxdWVQdHI8Y2hh
cj4gY29va2llc0ZpbGUoZ19idWlsZF9maWxlbmFtZShUZXN0OjpkYXRhRGlyZWN0b3J5KCksICJj
b29raWVzLnR4dCIsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydChnX2ZpbGVfc2V0X2NvbnRlbnRz
KGNvb2tpZXNGaWxlLmdldCgpLCBjb29raWVzRmlsZUNvbnRlbnRzLmdldCgpLCAtMSwgbnVsbHB0
cikpOworCisgICAgdGVzdC0+c2V0UGVyc2lzdGVudFN0b3JhZ2UoV0VCS0lUX0NPT0tJRV9QRVJT
SVNURU5UX1NUT1JBR0VfVEVYVCk7CisgICAgdGVzdC0+ZGVsZXRlQWxsQ29va2llcygpOworCisg
ICAgLy8gRW5zdXJlIHRoZSB3ZWIgcHJvY2VzcyBpcyBjcmVhdGVkIGFuZCBsb2FkIHNvbWV0aGlu
ZyB3aXRob3V0IGNvb2tpZXMuCisgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQ
YXRoKCIvbm8tY29va2llcy5odG1sIikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2Fk
RmluaXNoZWQoKTsKKyAgICBnX2Fzc2VydCghdGVzdC0+bV9jb29raWVzQ2hhbmdlZCk7CisgICAg
Y2hhcioqIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21haW5zKCk7CisgICAgZ19hc3NlcnQoZG9tYWlu
cyk7CisgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgoZG9tYWlucyksID09LCAwKTsK
K30KKwogc3RhdGljIHZvaWQgZXBoZW1lcmFsVmlld2xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsIFdlYlZpZXdUZXN0KiB0ZXN0KQog
ewogICAgIGlmIChsb2FkRXZlbnQgIT0gV0VCS0lUX0xPQURfRklOSVNIRUQpCkBAIC0zNjYsNyAr
Mzg4LDEwIEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwg
U291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAgICAgIHNvdXBfbWVzc2FnZV9i
b2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9UQUtFLCBpbmRl
eEh0bWwsIHN0cmxlbihpbmRleEh0bWwpKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBh
dGgsICIvaW1hZ2UucG5nIikpCiAgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxhY2Uo
bWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29raWUiLCAiYmF6PXF1eDsgTWF4LUFn
ZT02MCIpOwotICAgIGVsc2UKKyAgICBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL25vLWNv
b2tpZXMuaHRtbCIpKSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbmRleEh0bWwgPSAi
PGh0bWw+PGJvZHk+PHA+Tm8gY29va2llczwvcD48L2JvZHk+PC9odG1sPiI7CisgICAgICAgIHNv
dXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9S
WV9TVEFUSUMsIGluZGV4SHRtbCwgc3RybGVuKGluZGV4SHRtbCkpOworICAgIH0gZWxzZQogICAg
ICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfRk9V
TkQpOwogICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2Jv
ZHkpOwogfQpAQCAtMzgwLDYgKzQwNSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBDb29raWVN
YW5hZ2VyVGVzdDo6YWRkKCJXZWJLaXRDb29raWVNYW5hZ2VyIiwgImRlbGV0ZS1jb29raWVzIiwg
dGVzdENvb2tpZU1hbmFnZXJEZWxldGVDb29raWVzKTsKICAgICBDb29raWVNYW5hZ2VyVGVzdDo6
YWRkKCJXZWJLaXRDb29raWVNYW5hZ2VyIiwgImNvb2tpZXMtY2hhbmdlZCIsIHRlc3RDb29raWVN
YW5hZ2VyQ29va2llc0NoYW5nZWQpOwogICAgIENvb2tpZU1hbmFnZXJUZXN0OjphZGQoIldlYktp
dENvb2tpZU1hbmFnZXIiLCAicGVyc2lzdGVudC1zdG9yYWdlIiwgdGVzdENvb2tpZU1hbmFnZXJQ
ZXJzaXN0ZW50U3RvcmFnZSk7CisgICAgQ29va2llTWFuYWdlclRlc3Q6OmFkZCgiV2ViS2l0Q29v
a2llTWFuYWdlciIsICJwZXJzaXN0ZW50LXN0b3JhZ2UtZGVsZXRlLWFsbCIsIHRlc3RDb29raWVN
YW5hZ2VyUGVyc2lzdGVudFN0b3JhZ2VEZWxldGVBbGwpOwogICAgIENvb2tpZU1hbmFnZXJUZXN0
OjphZGQoIldlYktpdENvb2tpZU1hbmFnZXIiLCAiZXBoZW1lcmFsIiwgdGVzdENvb2tpZU1hbmFn
ZXJFcGhlbWVyYWwpOwogfQogCg==
</data>
<flag name="review"
          id="338659"
          type_id="1"
          status="-"
          setter="beidson"
    />
    <flag name="commit-queue"
          id="338697"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319250</attachid>
            <date>2017-08-29 04:11:32 -0700</date>
            <delta_ts>2017-11-16 02:58:30 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-cookies-delete-all.diff</filename>
            <type>text/plain</type>
            <size>27966</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZDRmNThkZGFjYTguLjFmNGI5MWI5NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDY3IEBACisyMDE3LTA4LTI5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIHdlYmtpdF9jb29raWVfbWFuYWdlcl9kZWxldGVf
YWxsX2Nvb2tpZXMgZG9lc24ndCBkZWxldGUgdGhlIGNvb2tpZXMgaWYgY2FsbGVkIGJlZm9yZSBh
IHdlYiBwcm9jZXNzIGlzIHJ1bm5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgaXMgd2hhdCBoYXBwZW5zOgorCisgICAgICAgIDEtIFdlIGNy
ZWF0ZSBvdXIgV2ViS2l0V2ViQ29udGV4dCB0aGF0IGNyZWF0ZXMgaXRzIFdlYlByb2Nlc3NQb29s
LgorICAgICAgICAyLSBXZSBzZXQgYSBwZXJzaXN0ZW50IGNvb2tpZXMgc3RvcmFnZS4KKyAgICAg
ICAgMy0gV2UgYXNrIHRoZSB3ZWJzaXRlIGRhdGEgc3RvcmUgdG8gZGVsZXRlIGFsbCBjb29raWVz
LCBidXQgc2luY2Ugd2Vic2l0ZSBkYXRhIHN0b3JlIGlzIGEgd2ViIHByb2Nlc3Mgb2JzZXJ2ZXIK
KyAgICAgICAgICAgYW5kIHdlIGhhdmVuJ3Qgc3Bhd25lZCBhbnkgd2ViIHByb2Nlc3MgeWV0LCBp
dCBjcmVhdGVzIGEgbmV3IFdlYlByb2Nlc3NQb29sIHdpdGggdGhlIGRlZmF1bHQgY29uZmlndXJh
dGlvbgorICAgICAgICAgICAobm8gcGVyc2lzdGVudCBjb29raWVzKSBhbmQgc2VuZHMgdGhlIG1l
c3NhZ2UgdG8gZGVsZXRlIHRoZSBjb29raWVzIHRoZXJlLgorICAgICAgICA0LSBUaGUgbmV0d29y
ayBwcm9jZXNzIG9mIHRoZSBzZWNvbmQgcHJvY2VzcyBwb29sIGRvZXMgbm90aGluZyBiZWNhdXNl
IGl0IGRvZXNuJ3QgaGF2ZSBjb29raWVzIGF0IGFsbC4KKworICAgICAgICBXZSBkb24ndCByZWFs
bHkgbmVlZCB0byBjcmVhdGUgYSBuZXcgV2ViUHJvY2Vzc1Bvb2wgYW5kIGxhdW5jaCBhIG5ldHdv
cmsgcHJvY2VzcyB0byBzZW5kIGl0IGEgdGFzayB0aGF0IHdlIGtub3cKKyAgICAgICAgZm9yIHN1
cmUgaXQncyBub3QgZ29pbmcgdG8gZG8gYW55dGhpbmcuIEluIHRoZSBHTGliIEFQSSB3ZSBhbHJl
YWR5IGtlZXAgdHJhY2sgb2YgdGhlIFdlYlByb2Nlc3NQb29scyBhc3NvY2lhdGVkCisgICAgICAg
IHRvIHRoZSB3ZWJzaXRlIGRhdGEgc3RvcmUsIHNvIHdlIGtub3cgZm9yIHN1cmUgd2hpY2ggcHJv
Y2VzcyBwb29sIGlzIHRoZSByaWdodCBvbmUuIFRoaXMgcGF0Y2ggYWRkcyBhIHdheSB0bworICAg
ICAgICBhZGQvcmVtb3ZlIGFzc29jaWF0ZWQgV2ViUHJvY2Vzc1Bvb2xzIHRvIGEgV2Vic2l0ZURh
dGFTdG9yZSBhbmQgbW92ZXMgdGhlIHByb2Nlc3MgcG9vbCB0cmFja2luZyBmcm9tIEdMaWIgQVBJ
CisgICAgICAgIHRvIHRoZSBjcm9zcy1wbGF0Zm9ybSBjb2RlLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOiBBc2xvIGNvcHkgdGhlIGRlZmF1bHQgV2Vi
c2l0ZURhdGFTdG9yZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oOiBBZGQgZGVmYXVsdCBXZWJzaXRlRGF0YVN0b3JlLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKF9XZWJL
aXRDb29raWVNYW5hZ2VyUHJpdmF0ZTo6fl9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSk6IHdl
YmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nlc3NQb29scygpIG5vdworICAgICAgICByZXR1
cm5zIGEgSGFzaFNldCBpbnN0ZWFkIG9mIGEgVmVjdG9yLgorICAgICAgICAod2Via2l0Q29va2ll
TWFuYWdlckNyZWF0ZSk6IERpdHRvLgorICAgICAgICAod2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3Nl
dF9wZXJzaXN0ZW50X3N0b3JhZ2UpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF9jb29raWVfbWFu
YWdlcl9zZXRfYWNjZXB0X3BvbGljeSk6IERpdHRvLgorICAgICAgICAod2Via2l0X2Nvb2tpZV9t
YW5hZ2VyX2dldF9hY2NlcHRfcG9saWN5KTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENv
bnN0cnVjdGVkKTogU2V0IHRoZSBkZWZhdWx0IFdlYnNpdGVEYXRhU3RvcmUgdG8gdGhlIEFQSTo6
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGJlZm9yZQorICAgICAgICBjcmVhdGluZyB0aGUgV2Vi
UHJvY2Vzc1Bvb2wuCisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0RGlzcG9zZSk6IFJlbW92ZSB0
aGUgY2FsbCB0byB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJSZW1vdmVQcm9jZXNzUG9vbCgpIHNp
bmNlIHRoYXQncyBub3cgZG9uZSBieSBXZWJQcm9jZXNzUG9vbC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29u
c3RydWN0ZWQpOiBEb3Qgbm90IGNhbGwgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJvY2Vz
c1Bvb2woKSBzaW5jZSB0aGF0J3Mgbm93IGRvbmUgYnkgV2ViUGFnZVByb3h5LgorICAgICAgICAo
d2Via2l0V2ViVmlld0Rpc3Bvc2UpOiBEb3Qgbm90IGNhbGwgd2Via2l0V2Vic2l0ZURhdGFNYW5h
Z2VyUmVtb3ZlUHJvY2Vzc1Bvb2woKSBlaXRoZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRXZWJzaXRl
RGF0YU1hbmFnZXJHZXRQcm9jZXNzUG9vbHMpOiBSZXR1cm4gYSBIYXNoU2V0IHRvIGVuc3VyZSB0
aGVyZSBhcmVuJ3QgZHVwbGljYXRlcyBhbmQgZ2V0IHRoZSBsaXN0CisgICAgICAgIG9mIGFzc29j
aWF0ZWQgcHJvY2VzcyBwb29scyBmcm9tIHRoZSBXZWJzaXRlRGF0YVN0b3JlLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmg6IFJl
bW92ZSB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJBZGRQcm9jZXNzUG9vbCgpIGFuZAorICAgICAg
ICB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJSZW1vdmVQcm9jZXNzUG9vbCgpLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHkpOiBJZiB0aGUgcGFnZSBXZWJzaXRlRGF0YVN0b3JlIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUg
cHJvY2VzcyBwb29sLCBhZGQgdGhlIHByb2Nlc3MgcG9vbAorICAgICAgICB0byB0aGUgV2Vic2l0
ZURhdGFTdG9yZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6IElmIHRo
ZSBwYWdlIFdlYnNpdGVEYXRhU3RvcmUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBwcm9jZXNzIHBv
b2wsIHJlbW92ZSB0aGUKKyAgICAgICAgcHJvY2VzcyBwb29sIGZyb20gdGhlIFdlYnNpdGVEYXRh
U3RvcmUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Z2V0T3JDcmVhdGVXZWJzaXRlRGF0YVN0b3JlRnJvbUNvbmZpZ3VyYXRpb24pOiBI
ZWxwZXIgdG8gaW5pdGlhbGl6ZSBtX3dlYnNpdGVEYXRhU3RvcmUuIElmIGEgZGVmYXVsdAorICAg
ICAgICBXZWJzaXRlRGF0YVN0b3JlIHdhcyBzZXQsIGl0J3MgdXNlZCBpbnN0ZWFkIG9mIGNyZWF0
aW5nIGEgbmV3IGRlZmF1bHQgb25lLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
V2ViUHJvY2Vzc1Bvb2wpOiBBZGQgdGhlIHByb2Nlc3MgcG9vbCB0byB0aGUgbGlzdCBvZiBXZWJz
aXRlRGF0YVN0b3JlIGFzc29jaWF0ZWQKKyAgICAgICAgcHJvY2VzcyBwb29scy4KKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCk6IFJlbW92ZSB0aGUgcHJv
Y2VzcyBwb29sIGZyb20gdGhlIGxpc3Qgb2YgV2Vic2l0ZURhdGFTdG9yZSBhc3NvY2lhdGVkCisg
ICAgICAgIHByb2Nlc3MgcG9vbHMuCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp+
V2Vic2l0ZURhdGFTdG9yZSk6IEFzc2VydCBpZiBpdCBjb250YWlucyBhc3NvY2lhdGVkIHByb2Nl
c3MgcG9vbHMuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmFkZEFzc29jaWF0
ZWRQcm9jZXNzUG9vbCk6IEFkZCB0aGUgZ2l2ZW4gcHJvY2VzcyBwb29sIHRvIHRoZSBsaXN0Lgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVBc3NvY2lhdGVkUHJvY2Vz
c1Bvb2wpOiBSZW1vdmUgdGhlIGdpdmVuIHByb2Nlc3MgcG9vbCBmcm9tIHRoZSBsaXN0LgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjppc0Fzc29jaWF0ZWRQcm9jZXNzUG9vbCBj
b25zdCk6IENoZWNrIGlmIHRoZSBnaXZlbiBwcm9jZXNzIHBvb2wgaXMgaW4gdGhlIGxpc3QuCisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyBjb25zdCk6IFJl
dHVybiB0aGUgbGlzdCBvZiBhc3NvY2lhdGVkIHByb2Nlc3MgcG9vbHMuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwogMjAxNy0wOC0yOCAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVcHN0cmVhbSBX
S0dldFdlYkRlZmF1bHRDRlN0cmluZ0VuY29kaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5k
ZXggNDA2M2E5ZGM4OGIuLmQzMjZjMmI4NGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcApAQCAt
MTA4LDYgKzEwOCw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y29weSgpCiAgICAgY29weS0+bV9jYWNoZU1vZGVsID0gdGhpcy0+bV9j
YWNoZU1vZGVsOwogICAgIGNvcHktPm1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5h
YmxlZCA9IHRoaXMtPm1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZDsKICAg
ICBjb3B5LT5tX2Rpc2tDYWNoZVNpemVPdmVycmlkZSA9IHRoaXMtPm1fZGlza0NhY2hlU2l6ZU92
ZXJyaWRlOworICAgIGNvcHktPm1fZGVmYXVsdFdlYnNpdGVEYXRhU3RvcmUgPSB0aGlzLT5tX2Rl
ZmF1bHRXZWJzaXRlRGF0YVN0b3JlOwogICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2Fw
cGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSB0aGlzLT5tX2FwcGxpY2F0
aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7CiAgICAgY29weS0+bV9jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnkgPSB0aGlzLT5tX2NhY2hlU3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaAppbmRleCA5NTQ0ODQ3OTNiNC4uN2JmMmI1M2VlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgK
QEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQVBJQ29udGV4dENvbmZpZ3VyYXRpb25faAogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgog
I2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAj
aW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgpAQCAtNjMsNiArNjQsOSBAQCBwdWJsaWM6CiAgICAg
aW50NjRfdCBkaXNrQ2FjaGVTaXplT3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX2Rpc2tDYWNo
ZVNpemVPdmVycmlkZTsgfQogICAgIHZvaWQgc2V0RGlza0NhY2hlU2l6ZU92ZXJyaWRlKGludDY0
X3Qgc2l6ZSkgeyBtX2Rpc2tDYWNoZVNpemVPdmVycmlkZSA9IHNpemU7IH0KIAorICAgIFdlYnNp
dGVEYXRhU3RvcmUqIGRlZmF1bHRXZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9k
ZWZhdWx0V2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGVmYXVsdFdlYnNp
dGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkgeyBtX2RlZmF1
bHRXZWJzaXRlRGF0YVN0b3JlID0gJndlYnNpdGVEYXRhU3RvcmU7IH0KKwogICAgIGNvbnN0IFdU
Rjo6U3RyaW5nJiBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KSB7
IG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7
IH0KIApAQCAtMTUwLDYgKzE1NCw4IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVs
IG1fY2FjaGVNb2RlbCB7IFdlYktpdDo6Q2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyIH07CiAg
ICAgaW50NjRfdCBtX2Rpc2tDYWNoZVNpemVPdmVycmlkZSB7IC0xIH07CiAKKyAgICBSZWZQdHI8
V2Vic2l0ZURhdGFTdG9yZT4gbV9kZWZhdWx0V2Vic2l0ZURhdGFTdG9yZTsKKwogICAgIFdURjo6
U3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX2Fw
cGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7CiAgICAgV1RGOjpTdHJpbmcg
bV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGVlZDI3MDI2NjQ3
Li5hNTcxYzY5ZTdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0
IF9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSB7CiAgICAgfl9XZWJLaXRDb29raWVNYW5hZ2Vy
UHJpdmF0ZSgpCiAgICAgewogICAgICAgICBhdXRvIHNlc3Npb25JRCA9IHdlYmtpdFdlYnNpdGVE
YXRhTWFuYWdlckdldERhdGFTdG9yZShkYXRhTWFuYWdlcikud2Vic2l0ZURhdGFTdG9yZSgpLnNl
c3Npb25JRCgpOwotICAgICAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogd2Via2l0V2Vic2l0
ZURhdGFNYW5hZ2VyR2V0UHJvY2Vzc1Bvb2xzKGRhdGFNYW5hZ2VyKSkKKyAgICAgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nlc3NQb29s
cyhkYXRhTWFuYWdlcikpCiAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJD
b29raWVNYW5hZ2VyUHJveHk+KCktPnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2soc2Vzc2lvbklE
LCBudWxscHRyKTsKICAgICB9CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBXZWJLaXRDb29raWVNYW5h
Z2VyKiB3ZWJraXRDb29raWVNYW5hZ2VyQ3JlYXRlKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciog
ZGF0YU1hbgogICAgIFdlYktpdENvb2tpZU1hbmFnZXIqIG1hbmFnZXIgPSBXRUJLSVRfQ09PS0lF
X01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPT0tJRV9NQU5BR0VSLCBudWxscHRy
KSk7CiAgICAgbWFuYWdlci0+cHJpdi0+ZGF0YU1hbmFnZXIgPSBkYXRhTWFuYWdlcjsKICAgICBh
dXRvIHNlc3Npb25JRCA9IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShtYW5h
Z2VyLT5wcml2LT5kYXRhTWFuYWdlcikud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpOwot
ICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQ
cm9jZXNzUG9vbHMobWFuYWdlci0+cHJpdi0+ZGF0YU1hbmFnZXIpKSB7CisgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nlc3NQb29scyht
YW5hZ2VyLT5wcml2LT5kYXRhTWFuYWdlcikpIHsKICAgICAgICAgcHJvY2Vzc1Bvb2wtPnN1cHBs
ZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRDb29raWVPYnNlcnZlckNhbGxiYWNr
KHNlc3Npb25JRCwgW21hbmFnZXJdIHsKICAgICAgICAgICAgIGdfc2lnbmFsX2VtaXQobWFuYWdl
ciwgc2lnbmFsc1tDSEFOR0VEXSwgMCk7CiAgICAgICAgIH0pOwpAQCAtMTY0LDcgKzE2NCw3IEBA
IHZvaWQgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9wZXJzaXN0ZW50X3N0b3JhZ2UoV2ViS2l0
Q29va2llTWFuYWdlciogbWFuYWdlciwKICAgICBnX3JldHVybl9pZl9mYWlsKGZpbGVuYW1lKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBo
ZW1lcmFsKG1hbmFnZXItPnByaXYtPmRhdGFNYW5hZ2VyKSk7CiAKLSAgICBmb3IgKGF1dG8qIHBy
b2Nlc3NQb29sIDogd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0UHJvY2Vzc1Bvb2xzKG1hbmFn
ZXItPnByaXYtPmRhdGFNYW5hZ2VyKSkKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogd2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0UHJvY2Vzc1Bvb2xzKG1hbmFnZXItPnByaXYtPmRhdGFN
YW5hZ2VyKSkKICAgICAgICAgcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdl
clByb3h5PigpLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShTdHJpbmc6OmZyb21VVEY4KGZp
bGVuYW1lKSwgdG9Tb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKHN0b3JhZ2UpKTsKIH0K
IApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9hY2Nl
cHRfcG9saWN5KFdlYktpdENvb2tpZU1hbmFnZXIqIG1hbmFnZXIsIFdlYktpCiB7CiAgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQ09PS0lFX01BTkFHRVIobWFuYWdlcikpOwogCi0gICAg
Zm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nl
c3NQb29scyhtYW5hZ2VyLT5wcml2LT5kYXRhTWFuYWdlcikpCisgICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nlc3NQb29scyhtYW5hZ2Vy
LT5wcml2LT5kYXRhTWFuYWdlcikpCiAgICAgICAgIHByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdl
YkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9s
aWN5KSwgW10oQ2FsbGJhY2tCYXNlOjpFcnJvcil7fSk7CiB9CiAKQEAgLTIwMiwxMyArMjAyLDE0
IEBAIHZvaWQgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9hY2NlcHRfcG9saWN5KFdlYktpdENv
b2tpZU1hbmFnZXIqIG1hbmFnZXIsIEdDYW5jCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFk
b3B0R1JlZihnX3Rhc2tfbmV3KG1hbmFnZXIsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRh
dGEpKTsKIAogICAgIC8vIFRoZSBwb2xpY3kgaXMgdGhlIHNhbWUgaW4gYWxsIHByb2Nlc3MgcG9v
bHMgaGF2aW5nIHRoZSBzYW1lIHNlc3Npb24gSUQsIHNvIGp1c3QgYXNrIGFueS4KLSAgICBjb25z
dCBhdXRvJiBwcm9jZXNzUG9vbHMgPSB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9jZXNz
UG9vbHMobWFuYWdlci0+cHJpdi0+ZGF0YU1hbmFnZXIpOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xz
ID0gd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0UHJvY2Vzc1Bvb2xzKG1hbmFnZXItPnByaXYt
PmRhdGFNYW5hZ2VyKTsKICAgICBpZiAocHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSkgewogICAgICAg
ICBnX3Rhc2tfcmV0dXJuX2ludCh0YXNrLmdldCgpLCBXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NF
UFRfTk9fVEhJUkRfUEFSVFkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2Vz
c1Bvb2xzWzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBbdGFz
ayA9IFdURk1vdmUodGFzayldKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBDYWxsYmFj
a0Jhc2U6OkVycm9yKSB7CisgICAgYXV0byYgcHJvY2Vzc1Bvb2wgPSAqcHJvY2Vzc1Bvb2xzLmJl
Z2luKCk7CisgICAgcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5
PigpLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBw
b2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgZ190YXNrX3JldHVybl9pbnQo
dGFzay5nZXQoKSwgdG9XZWJLaXRDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwCmluZGV4IDNhMGI0ZjM3N2VhLi5hMDdmZGFlYmUzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAK
QEAgLTMzNSwxMyArMzM1LDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1
Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgfSBlbHNlIGlmICghcHJpdi0+bG9jYWxTdG9yYWdl
RGlyZWN0b3J5LmlzTnVsbCgpKQogICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFn
ZURpcmVjdG9yeShXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBy
aXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCkpKTsKIAotICAgIHByaXYtPnByb2Nlc3NQ
b29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9uKTsKLQogICAgIGlmICgh
cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyKQogICAgICAgICBwcml2LT53ZWJzaXRlRGF0YU1hbmFn
ZXIgPSBhZG9wdEdSZWYod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKHdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uRm9yV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKGNvbmZpZ3Vy
YXRpb24pKSk7CisgICAgY29uZmlndXJhdGlvbi5zZXREZWZhdWx0V2Vic2l0ZURhdGFTdG9yZSh3
ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUocHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpKSk7CiAKLSAgICB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJBZGRQcm9jZXNzUG9v
bChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCksICpwcml2LT5wcm9jZXNzUG9vbCk7Ci0K
KyAgICBwcml2LT5wcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJh
dGlvbik7CiAgICAgcHJpdi0+dGxzRXJyb3JzUG9saWN5ID0gV0VCS0lUX1RMU19FUlJPUlNfUE9M
SUNZX0ZBSUw7CiAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldElnbm9yZVRMU0Vycm9ycyhmYWxz
ZSk7CiAKQEAgLTM3MywxMSArMzcxLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dERp
c3Bvc2UoR09iamVjdCogb2JqZWN0KQogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0TGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG51bGxwdHIpOwogICAgIH0KIAotICAgIGlm
IChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpIHsKLSAgICAgICAgd2Via2l0V2Vic2l0ZURhdGFN
YW5hZ2VyUmVtb3ZlUHJvY2Vzc1Bvb2wocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpLCAq
cHJpdi0+cHJvY2Vzc1Bvb2wpOwotICAgICAgICBwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgPSBu
dWxscHRyOwotICAgIH0KLQogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfY29udGV4dF9w
YXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggYTc3M2QzZjU3NWYu
LjkxNzE5N2I0MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNjI0LDcgKzYyNCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBpZiAocHJpdi0+aXNF
cGhlbWVyYWwgJiYgIXdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwocHJpdi0+Y29udGV4
dC5nZXQoKSkpIHsKICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVm
KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXdfZXBoZW1lcmFsKCkpOwotICAgICAgICB3
ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJBZGRQcm9jZXNzUG9vbChwcml2LT53ZWJzaXRlRGF0YU1h
bmFnZXIuZ2V0KCksIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbChwcml2LT5jb250ZXh0
LmdldCgpKSk7CiAgICAgfQogCiAgICAgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJW
aWV3KHByaXYtPmNvbnRleHQuZ2V0KCksIHdlYlZpZXcsIHByaXYtPnVzZXJDb250ZW50TWFuYWdl
ci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcpOwpAQCAtNzYyLDExICs3NjEsNiBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3RGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIHdlYmtp
dFdlYkNvbnRleHRXZWJWaWV3RGVzdHJveWVkKHdlYlZpZXctPnByaXYtPmNvbnRleHQuZ2V0KCks
IHdlYlZpZXcpOwogICAgIH0KIAotICAgIGlmICh3ZWJWaWV3LT5wcml2LT53ZWJzaXRlRGF0YU1h
bmFnZXIpIHsKLSAgICAgICAgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyUmVtb3ZlUHJvY2Vzc1Bv
b2wod2ViVmlldy0+cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpLCB3ZWJraXRXZWJDb250
ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViVmlldy0+cHJpdi0+Y29udGV4dC5nZXQoKSkpOwotICAgICAg
ICB3ZWJWaWV3LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgPSBudWxscHRyOwotICAgIH0KLQog
I2lmIFBMQVRGT1JNKFdQRSkKICAgICB3ZWJWaWV3LT5wcml2LT52aWV3LT5jbG9zZSgpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAppbmRleCBjNWNkZWRiMjhhMC4uZmM1YmUyZTM4
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcApAQCAtODgsMTEgKzg4LDYgQEAgZW51bSB7
CiB9OwogCiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUgewotICAgIH5f
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQo
cHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSk7Ci0gICAgfQotCiAgICAgUmVmUHRyPEFQSTo6V2Vic2l0
ZURhdGFTdG9yZT4gd2Vic2l0ZURhdGFTdG9yZTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJhc2VE
YXRhRGlyZWN0b3J5OwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYmFzZUNhY2hlRGlyZWN0b3J5OwpA
QCAtMTAzLDcgKzk4LDYgQEAgc3RydWN0IF9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRl
IHsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHdlYlNRTERpcmVjdG9yeTsKIAogICAgIEdSZWZQdHI8
V2ViS2l0Q29va2llTWFuYWdlcj4gY29va2llTWFuYWdlcjsKLSAgICBWZWN0b3I8V2ViUHJvY2Vz
c1Bvb2wqPiBwcm9jZXNzUG9vbHM7CiB9OwogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIsIEdfVFlQRV9PQkpF
Q1QpCkBAIC0zNzcsMjIgKzM3MSwxNCBAQCBBUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdl
YnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbgogICAgIHJl
dHVybiAqcHJpdi0+d2Vic2l0ZURhdGFTdG9yZTsKIH0KIAotdm9pZCB3ZWJraXRXZWJzaXRlRGF0
YU1hbmFnZXJBZGRQcm9jZXNzUG9vbChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIs
IFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKK0hhc2hTZXQ8UmVmUHRyPFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w+PiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9jZXNzUG9vbHMoV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKQogewotICAgIEFTU0VSVCghbWFuYWdlci0+
cHJpdi0+cHJvY2Vzc1Bvb2xzLmNvbnRhaW5zKCZwcm9jZXNzUG9vbCkpOwotICAgIG1hbmFnZXIt
PnByaXYtPnByb2Nlc3NQb29scy5hcHBlbmQoJnByb2Nlc3NQb29sKTsKKyAgICBIYXNoU2V0PFJl
ZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQb29sczsKKyAgICBmb3IgKGF1dG8qIHByb2Nl
c3NQb29sIDogbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmFzc29jaWF0ZWRQcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2xzLmFkZChw
cm9jZXNzUG9vbCk7CisgICAgcmV0dXJuIHByb2Nlc3NQb29sczsKIH0KIAotdm9pZCB3ZWJraXRX
ZWJzaXRlRGF0YU1hbmFnZXJSZW1vdmVQcm9jZXNzUG9vbChXZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIqIG1hbmFnZXIsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKLXsKLSAgICBBU1NFUlQo
bWFuYWdlci0+cHJpdi0+cHJvY2Vzc1Bvb2xzLmNvbnRhaW5zKCZwcm9jZXNzUG9vbCkpOwotICAg
IG1hbmFnZXItPnByaXYtPnByb2Nlc3NQb29scy5yZW1vdmVGaXJzdCgmcHJvY2Vzc1Bvb2wpOwot
fQotCi1jb25zdCBWZWN0b3I8V2ViUHJvY2Vzc1Bvb2wqPiYgd2Via2l0V2Vic2l0ZURhdGFNYW5h
Z2VyR2V0UHJvY2Vzc1Bvb2xzKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlcikKLXsK
LSAgICByZXR1cm4gbWFuYWdlci0+cHJpdi0+cHJvY2Vzc1Bvb2xzOwotfQogCiAvKioKICAqIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXc6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQ
cml2YXRlLmgKaW5kZXggN2Q5MjhmMDVmYTcuLjEwNDI3ODBkZWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCkBAIC0yMSwxMSArMjEsOCBAQAogCiAjaW5jbHVkZSAiQVBJ
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIHdlYmtp
dFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZp
Z3VyYXRpb24mJik7CiBBUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqKTsKLXZvaWQgd2Via2l0
V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJvY2Vzc1Bvb2woV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
KiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpOwotdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJSZW1vdmVQcm9jZXNzUG9vbChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqLCBXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sJik7Ci1jb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQcm9jZXNzUG9vbCo+JiB3
ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9jZXNzUG9vbHMoV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyKik7CitIYXNoU2V0PFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPj4gd2Via2l0
V2Vic2l0ZURhdGFNYW5hZ2VyR2V0UHJvY2Vzc1Bvb2xzKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBkMzVl
NzgwZTQ2ZC4uM2Y2YTE4MTFjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMzY3LDYgKzM2Nyw5IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAgICAg
LCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZVZhbHVlcygpKQogICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQogeworICAgIGlmICht
X3dlYnNpdGVEYXRhU3RvcmUucHRyKCkgIT0gJm1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS53ZWJz
aXRlRGF0YVN0b3JlKCkud2Vic2l0ZURhdGFTdG9yZSgpKQorICAgICAgICBtX3dlYnNpdGVEYXRh
U3RvcmUtPmFkZEFzc29jaWF0ZWRQcm9jZXNzUG9vbChtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkp
OworCiAgICAgbV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmFkZE9ic2VydmVyKG1fdmlzaXRl
ZExpbmtTdG9yZSk7CiAgICAgbV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmFkZE9ic2VydmVy
KG1fd2Vic2l0ZURhdGFTdG9yZSk7CiAKQEAgLTc3Miw2ICs3NzUsOSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y2xvc2UoKQogICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOwogI2VuZGlmCiAKKyAgICBpZiAobV93ZWJzaXRlRGF0
YVN0b3JlLnB0cigpICE9ICZtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkud2Vic2l0ZURhdGFTdG9y
ZSgpLndlYnNpdGVEYXRhU3RvcmUoKSkKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5yZW1v
dmVBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wobV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpKTsKKwogICAg
IG1fd2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5wYWdlV2FzSW52YWxpZGF0ZWQoKTsKIAogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9wYWdlSUQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGRiZDA2OWZl
NTkxLi45YjcyNzM0OWZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtMjEwLDYgKzIxMCwxNyBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdAogICAg
IHJldHVybiBzZXQ7CiB9CiAKK3N0YXRpYyBSZWY8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBnZXRP
ckNyZWF0ZVdlYnNpdGVEYXRhU3RvcmVGcm9tQ29uZmlndXJhdGlvbihBUEk6OlByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBpZiAoY29uZmlndXJhdGlvbi5z
aG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlKCkpCisgICAgICAgIHJldHVybiBBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bihjb25maWd1cmF0aW9uKSk7CisKKyAgICBpZiAoYXV0byogZGVmYXVsdFdlYnNpdGVEYXRhU3Rv
cmUgPSBjb25maWd1cmF0aW9uLmRlZmF1bHRXZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgICAgIHJl
dHVybiAqZGVmYXVsdFdlYnNpdGVEYXRhU3RvcmU7CisKKyAgICByZXR1cm4gQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCk7Cit9CisKIFdlYlByb2Nlc3NQb29sOjpXZWJQ
cm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikK
ICAgICA6IG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLmNvcHkoKSkKICAgICAsIG1faGF2
ZUluaXRpYWxFbXB0eVByb2Nlc3MoZmFsc2UpCkBAIC0yMjcsNyArMjM4LDcgQEAgV2ViUHJvY2Vz
c1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKQogICAgICwgbV9zaG91bGRVc2VGb250U21vb3RoaW5nKHRydWUpCiAgICAgLCBt
X21lbW9yeVNhbXBsZXJFbmFibGVkKGZhbHNlKQogICAgICwgbV9tZW1vcnlTYW1wbGVySW50ZXJ2
YWwoMTQwMC4wKQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+c2hv
dWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSgpID8gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVM
ZWdhY3kobGVnYWN5V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9u
KSkgOiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKSkKKyAgICAsIG1f
d2Vic2l0ZURhdGFTdG9yZShnZXRPckNyZWF0ZVdlYnNpdGVEYXRhU3RvcmVGcm9tQ29uZmlndXJh
dGlvbihtX2NvbmZpZ3VyYXRpb24pKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1faGlnaFBl
cmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIoc3RkOjptYWtlX3VuaXF1ZTxIaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcj4oKnRoaXMpKQogICAgICwgbV9wZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyKHN0ZDo6bWFrZV91bmlxdWU8UGVyQWN0aXZpdHlTdGF0ZUNQVVVz
YWdlU2FtcGxlcj4oKnRoaXMpKQpAQCAtMjQ0LDYgKzI1NSw4IEBAIFdlYlByb2Nlc3NQb29sOjpX
ZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikKICAgICAsIG1faGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlcihbdGhp
c10oUmVmQ291bnRlckV2ZW50KSB7IG1faGlkZGVuUGFnZVRocm90dGxpbmdUaW1lci5zdGFydE9u
ZVNob3QoMF9zKTsgfSkKICAgICAsIG1faGlkZGVuUGFnZVRocm90dGxpbmdUaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZXZWJQcm9jZXNzUG9vbDo6dXBkYXRlSGlkZGVuUGFnZVRocm90dGxp
bmdBdXRvSW5jcmVhc2VMaW1pdCkKIHsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5hZGRBc3NvY2lhdGVkUHJvY2Vzc1Bvb2woKnRoaXMpOworCiAgICAgZm9yIChh
dXRvJiBzY2hlbWUgOiBtX2NvbmZpZ3VyYXRpb24tPmFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1l
cygpKQogICAgICAgICBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNBbHdheXNSZXZhbGlkYXRlZC5hZGQo
c2NoZW1lKTsKIApAQCAtMjkxLDYgKzMwNCw4IEBAIFdlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vz
c1Bvb2woKQogICAgIGJvb2wgcmVtb3ZlZCA9IHByb2Nlc3NQb29scygpLnJlbW92ZUZpcnN0KHRo
aXMpOwogICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7CiAKKyAgICBtX3dlYnNp
dGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVBc3NvY2lhdGVkUHJvY2Vzc1Bv
b2woKnRoaXMpOworCiAgICAgcmVtb3ZlTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih0aGlzKTsKIAog
ICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5k
ZXggMmMzOWE0Y2I5MjUuLjE0MDI0NjI3NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtOTgsNiAr
OTgsOCBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCiAgICAgICAgIGZv
ciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkp
CiAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95U2Vzc2lvbihtX3Nlc3Npb25JRCkpOwogICAgIH0K
KworICAgIEFTU0VSVChtX2Fzc29jaWF0ZWRQcm9jZXNzUG9vbHMuaXNFbXB0eSgpKTsKIH0KIAog
V2ViUHJvY2Vzc1Bvb2wqIFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29sRm9yQ29va2llU3Rv
cmFnZU9wZXJhdGlvbnMoKQpAQCAtMTE4MCw5ICsxMTgyLDIwIEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6d2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlBy
b2Nlc3NQCiAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXItPnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rp
b24od2ViUHJvY2Vzc1Byb3h5LCBjb25uZWN0aW9uKTsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjphZGRBc3NvY2lhdGVkUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29s
KQoreworICAgIG1fYXNzb2NpYXRlZFByb2Nlc3NQb29scy5hcHBlbmQoJnByb2Nlc3NQb29sKTsK
K30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wo
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQoreworICAgIEFTU0VSVChtX2Fzc29jaWF0ZWRQ
cm9jZXNzUG9vbHMuY29udGFpbnMoJnByb2Nlc3NQb29sKSk7CisgICAgbV9hc3NvY2lhdGVkUHJv
Y2Vzc1Bvb2xzLnJlbW92ZUZpcnN0KCZwcm9jZXNzUG9vbCk7Cit9CisKIGJvb2wgV2Vic2l0ZURh
dGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQ
b29sKSBjb25zdAogewotICAgIHJldHVybiAmcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgp
LndlYnNpdGVEYXRhU3RvcmUoKSA9PSB0aGlzOworICAgIHJldHVybiBtX2Fzc29jaWF0ZWRQcm9j
ZXNzUG9vbHMuY29udGFpbnMoJnByb2Nlc3NQb29sKTsKIH0KIAogSGFzaFNldDxSZWZQdHI8V2Vi
UHJvY2Vzc1Bvb2w+PiBXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMoc2l6ZV90IGNvdW50
LCBib29sIGVuc3VyZUFQb29sRXhpc3RzKSBjb25zdApAQCAtMTE5Miw3ICsxMjA1LDYgQEAgSGFz
aFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9v
bHMoc2l6ZV90IGNvdW50LCBib28KICAgICAgICAgcHJvY2Vzc1Bvb2xzLmFkZCgmcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKSk7CiAKICAgICBpZiAocHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSkgewotICAg
ICAgICAvLyBDaGVjayBpZiB3ZSdyZSBvbmUgb2YgdGhlIGxlZ2FjeSBkYXRhIHN0b3Jlcy4KICAg
ICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNz
UG9vbHMoKSkgewogICAgICAgICAgICAgaWYgKCFpc0Fzc29jaWF0ZWRQcm9jZXNzUG9vbCgqcHJv
Y2Vzc1Bvb2wpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGU2
NDI5YTdmYjFkLi43ODJhYWQzOTYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMTIwLDcgKzEyMCwxMCBA
QCBwdWJsaWM6CiAgICAgU3RvcmFnZU1hbmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4g
bV9zdG9yYWdlTWFuYWdlci5nZXQoKTsgfQogCiAgICAgV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQ
b29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICB2b2lkIGFkZEFzc29jaWF0ZWRQ
cm9jZXNzUG9vbChXZWJQcm9jZXNzUG9vbCYpOworICAgIHZvaWQgcmVtb3ZlQXNzb2NpYXRlZFBy
b2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sJik7CiAgICAgYm9vbCBpc0Fzc29jaWF0ZWRQcm9jZXNz
UG9vbChXZWJQcm9jZXNzUG9vbCYpIGNvbnN0OworICAgIGNvbnN0IFZlY3RvcjxXZWJQcm9jZXNz
UG9vbCo+JiBhc3NvY2lhdGVkUHJvY2Vzc1Bvb2xzKCkgY29uc3QgeyByZXR1cm4gbV9hc3NvY2lh
dGVkUHJvY2Vzc1Bvb2xzOyB9CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBwYXJh
bWV0ZXJzKCk7CiAgICAgU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgc3RvcmFnZVBy
b2Nlc3NQYXJhbWV0ZXJzKCk7CkBAIC0xNzYsNiArMTc5LDggQEAgcHJpdmF0ZToKICAgICBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gbV9jZkNvb2tpZVN0b3JhZ2U7CiAjZW5kaWYK
ICAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb2tpZT4gbV9wZW5kaW5nQ29va2llczsKKworICAgIFZl
Y3RvcjxXZWJQcm9jZXNzUG9vbCo+IG1fYXNzb2NpYXRlZFByb2Nlc3NQb29sczsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlZGE5
ZmQ5YTQ1NC4uZjllMTcyZmI4YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNy0wOC0yOSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSB3ZWJr
aXRfY29va2llX21hbmFnZXJfZGVsZXRlX2FsbF9jb29raWVzIGRvZXNuJ3QgZGVsZXRlIHRoZSBj
b29raWVzIGlmIGNhbGxlZCBiZWZvcmUgYSB3ZWIgcHJvY2VzcyBpcyBydW5uaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUyNjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBjYXNlLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKHRlc3RDb29raWVNYW5hZ2VyUGVyc2lzdGVudFN0b3JhZ2VEZWxl
dGVBbGwpOgorICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAoYmVmb3JlQWxsKToK
KwogMjAxNy0wOC0yOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBMb2dnZXIgc2hvdWxkIHVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nOjpm
b3JtYXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0Q29va2llTWFuYWdlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwCmluZGV4IDFiZThjYzBkMDYwLi5kYTk3NDU2N2U0OCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29r
aWVNYW5hZ2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdENvb2tpZU1hbmFnZXIuY3BwCkBAIC0zMDAsNiArMzAwLDI4IEBAIHN0YXRpYyB2b2lkIHRl
c3RDb29raWVNYW5hZ2VyUGVyc2lzdGVudFN0b3JhZ2UoQ29va2llTWFuYWdlclRlc3QqIHRlc3Qs
IGdjb25zdHBvCiAgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgodGVzdC0+Z2V0RG9t
YWlucygpKSwgPT0sIDApOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlclBlcnNp
c3RlbnRTdG9yYWdlRGVsZXRlQWxsKENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQoreworICAgIC8vIFRoaXMgY2hlY2tzIHRoYXQgd2UgY2FuIHJlbW92ZSBhbGwgdGhlIGNv
b2tpZXMgb2YgYW4gZXhpc3RpbmcgZmlsZSBiZWZvcmUgYSB3ZWIgcHJvY2VzcyBpcyBjcmVhdGVk
LgorICAgIC8vIFNlZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTI2NS4KKyAgICBzdGF0aWMgY29uc3QgY2hhciBjb29raWVzRmlsZUZvcm1hdFtdID0gIjEy
Ny4wLjAuMVx0RkFMU0VcdC9cdEZBTFNFXHQlbGRcdGZvb1x0YmFyXG5sb2NhbGhvc3RcdEZBTFNF
XHQvXHRGQUxTRVx0JWxkXHRiYXpcdHF1eFxuIjsKKyAgICB0aW1lX3QgZXhwaXJlcyA9IHRpbWUo
bnVsbHB0cikgKyA2MDsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGNvb2tpZXNGaWxlQ29udGVudHMo
Z19zdHJkdXBfcHJpbnRmKGNvb2tpZXNGaWxlRm9ybWF0LCBleHBpcmVzLCBleHBpcmVzKSk7Cisg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBjb29raWVzRmlsZShnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmRh
dGFEaXJlY3RvcnkoKSwgImNvb2tpZXMudHh0IiwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0KGdf
ZmlsZV9zZXRfY29udGVudHMoY29va2llc0ZpbGUuZ2V0KCksIGNvb2tpZXNGaWxlQ29udGVudHMu
Z2V0KCksIC0xLCBudWxscHRyKSk7CisKKyAgICB0ZXN0LT5zZXRQZXJzaXN0ZW50U3RvcmFnZShX
RUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhUKTsKKyAgICB0ZXN0LT5kZWxldGVB
bGxDb29raWVzKCk7CisKKyAgICAvLyBFbnN1cmUgdGhlIHdlYiBwcm9jZXNzIGlzIGNyZWF0ZWQg
YW5kIGxvYWQgc29tZXRoaW5nIHdpdGhvdXQgY29va2llcy4KKyAgICB0ZXN0LT5sb2FkVVJJKGtT
ZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9uby1jb29raWVzLmh0bWwiKS5kYXRhKCkpOworICAgIHRl
c3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2Nvb2tp
ZXNDaGFuZ2VkKTsKKyAgICBjaGFyKiogZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKKyAg
ICBnX2Fzc2VydChkb21haW5zKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChk
b21haW5zKSwgPT0sIDApOworfQorCiBzdGF0aWMgdm9pZCBlcGhlbWVyYWxWaWV3bG9hZENoYW5n
ZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCwgV2Vi
Vmlld1Rlc3QqIHRlc3QpCiB7CiAgICAgaWYgKGxvYWRFdmVudCAhPSBXRUJLSVRfTE9BRF9GSU5J
U0hFRCkKQEAgLTM2Niw3ICszODgsMTAgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291
cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKICAgICAg
ICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBf
TUVNT1JZX1RBS0UsIGluZGV4SHRtbCwgc3RybGVuKGluZGV4SHRtbCkpOwogICAgIH0gZWxzZSBp
ZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9pbWFnZS5wbmciKSkKICAgICAgICAgc291cF9tZXNzYWdl
X2hlYWRlcnNfcmVwbGFjZShtZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzLCAiU2V0LUNvb2tpZSIs
ICJiYXo9cXV4OyBNYXgtQWdlPTYwIik7Ci0gICAgZWxzZQorICAgIGVsc2UgaWYgKGdfc3RyX2Vx
dWFsKHBhdGgsICIvbm8tY29va2llcy5odG1sIikpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGluZGV4SHRtbCA9ICI8aHRtbD48Ym9keT48cD5ObyBjb29raWVzPC9wPjwvYm9keT48L2h0
bWw+IjsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNl
X2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgaW5kZXhIdG1sLCBzdHJsZW4oaW5kZXhIdG1sKSk7
CisgICAgfSBlbHNlCiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNP
VVBfU1RBVFVTX05PVF9GT1VORCk7CiAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVz
c2FnZS0+cmVzcG9uc2VfYm9keSk7CiB9CkBAIC0zODAsNiArNDA1LDcgQEAgdm9pZCBiZWZvcmVB
bGwoKQogICAgIENvb2tpZU1hbmFnZXJUZXN0OjphZGQoIldlYktpdENvb2tpZU1hbmFnZXIiLCAi
ZGVsZXRlLWNvb2tpZXMiLCB0ZXN0Q29va2llTWFuYWdlckRlbGV0ZUNvb2tpZXMpOwogICAgIENv
b2tpZU1hbmFnZXJUZXN0OjphZGQoIldlYktpdENvb2tpZU1hbmFnZXIiLCAiY29va2llcy1jaGFu
Z2VkIiwgdGVzdENvb2tpZU1hbmFnZXJDb29raWVzQ2hhbmdlZCk7CiAgICAgQ29va2llTWFuYWdl
clRlc3Q6OmFkZCgiV2ViS2l0Q29va2llTWFuYWdlciIsICJwZXJzaXN0ZW50LXN0b3JhZ2UiLCB0
ZXN0Q29va2llTWFuYWdlclBlcnNpc3RlbnRTdG9yYWdlKTsKKyAgICBDb29raWVNYW5hZ2VyVGVz
dDo6YWRkKCJXZWJLaXRDb29raWVNYW5hZ2VyIiwgInBlcnNpc3RlbnQtc3RvcmFnZS1kZWxldGUt
YWxsIiwgdGVzdENvb2tpZU1hbmFnZXJQZXJzaXN0ZW50U3RvcmFnZURlbGV0ZUFsbCk7CiAgICAg
Q29va2llTWFuYWdlclRlc3Q6OmFkZCgiV2ViS2l0Q29va2llTWFuYWdlciIsICJlcGhlbWVyYWwi
LCB0ZXN0Q29va2llTWFuYWdlckVwaGVtZXJhbCk7CiB9CiAK
</data>
<flag name="review"
          id="339556"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327054</attachid>
            <date>2017-11-16 02:58:30 -0800</date>
            <delta_ts>2017-11-17 08:59:32 -0800</delta_ts>
            <desc>New patch</desc>
            <filename>wk2-cookies.diff</filename>
            <type>text/plain</type>
            <size>8340</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNzk1MGQwY2JkOGEuLjc1NWVmMTZmZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI1IEBACisyMDE3LTExLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIHdlYmtpdF9jb29raWVfbWFuYWdlcl9kZWxldGVf
YWxsX2Nvb2tpZXMgZG9lc24ndCBkZWxldGUgdGhlIGNvb2tpZXMgaWYgY2FsbGVkIGJlZm9yZSBh
IHdlYiBwcm9jZXNzIGlzIHJ1bm5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgaXMgd2hhdCBoYXBwZW5zOgorCisgICAgICAgIDEtIFdlIGNy
ZWF0ZSBvdXIgV2ViS2l0V2ViQ29udGV4dCB0aGF0IGNyZWF0ZXMgaXRzIFdlYlByb2Nlc3NQb29s
LgorICAgICAgICAyLSBXZSBzZXQgYSBwZXJzaXN0ZW50IGNvb2tpZXMgc3RvcmFnZS4KKyAgICAg
ICAgMy0gV2UgYXNrIHRoZSB3ZWJzaXRlIGRhdGEgc3RvcmUgdG8gZGVsZXRlIGFsbCBjb29raWVz
LCBidXQgc2luY2Ugd2Vic2l0ZSBkYXRhIHN0b3JlIGlzIGEgd2ViIHByb2Nlc3Mgb2JzZXJ2ZXIK
KyAgICAgICAgICAgYW5kIHdlIGhhdmVuJ3Qgc3Bhd25lZCBhbnkgd2ViIHByb2Nlc3MgeWV0LCBp
dCBjcmVhdGVzIGEgbmV3IFdlYlByb2Nlc3NQb29sIHdpdGggdGhlIGRlZmF1bHQgY29uZmlndXJh
dGlvbgorICAgICAgICAgICAobm8gcGVyc2lzdGVudCBjb29raWVzKSBhbmQgc2VuZHMgdGhlIG1l
c3NhZ2UgdG8gZGVsZXRlIHRoZSBjb29raWVzIHRoZXJlLgorICAgICAgICA0LSBUaGUgbmV0d29y
ayBwcm9jZXNzIG9mIHRoZSBzZWNvbmQgcHJvY2VzcyBwb29sIGRvZXMgbm90aGluZyBiZWNhdXNl
IGl0IGRvZXNuJ3QgaGF2ZSBjb29raWVzIGF0IGFsbC4KKworICAgICAgICBXZSBuZWVkIHRvIHNl
dCB0aGUgcHJpbWFyeSBkYXRhIHN0b3JlIG9mIHRoZSBXZWJQcm9jZXNzUG9vbCB3aGVuIFdlYktp
dFdlYkNvbnRleHQgaXMgY29uc3RydWN0ZWQgdG8gZW5zdXJlIHRoYXQKKyAgICAgICAgb25lIGlz
IHVzZWQgYmVmb3JlIHRoZSB3ZWIgcHJvY2VzcyBpcyBsYXVuY2hlZC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdl
YkNvbnRleHRDb25zdHJ1Y3RlZCk6CisKIDIwMTctMTEtMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBiYXNpY3Mgb2YgIlRlcm1pbmF0ZSBT
ZXJ2aWNlIFdvcmtlciIgYWxnb3JpdGhtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBmZDE3ODJmOGJlOC4uN2Q1
ODUzZWY2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0zNDEsNiArMzQxLDcgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAgIGlmICghcHJp
di0+d2Vic2l0ZURhdGFNYW5hZ2VyKQogICAgICAgICBwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIg
PSBhZG9wdEdSZWYod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKHdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uRm9yV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRp
b24pKSk7CisgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldFByaW1hcnlEYXRhU3RvcmUod2Via2l0
V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5n
ZXQoKSkpOwogCiAgICAgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJvY2Vzc1Bvb2wocHJp
di0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpLCAqcHJpdi0+cHJvY2Vzc1Bvb2wpOwogCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzQ1ZjEwMWRj
MTMuLmUxYWFmY2VhOGEzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMTEtMTYgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gd2Via2l0X2Nv
b2tpZV9tYW5hZ2VyX2RlbGV0ZV9hbGxfY29va2llcyBkb2Vzbid0IGRlbGV0ZSB0aGUgY29va2ll
cyBpZiBjYWxsZWQgYmVmb3JlIGEgd2ViIHByb2Nlc3MgaXMgcnVubmluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjY1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgY2FzZS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5j
cHA6CisgICAgICAgICh0ZXN0Q29va2llTWFuYWdlclBlcnNpc3RlbnRTdG9yYWdlRGVsZXRlQWxs
KToKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisKIDIw
MTctMTEtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBXZWJWaWV3cyBzY2hlZHVsZWQgaW4gY3VzdG9tIHJ1biBsb29wIG1vZGVzIHNob3Vs
ZCBiZSBhYmxlIHRvIGRvIG1vcmUgdGhhbiA1MG1zIG9mIHdvcmsgYXQgYSB0aW1lCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFn
ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVN
YW5hZ2VyLmNwcAppbmRleCAxYmU4Y2MwZDA2MC4uMTYzMzcwZGFiNzMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5h
Z2VyLmNwcApAQCAtNDAsMTcgKzQwLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjb29r
aWVzQ2hhbmdlZENhbGxiYWNrKFdlYktpdENvb2tpZU1hbmFnZXIqLCBDb29raWVNYW5hZ2VyVGVz
dCogdGVzdCkKICAgICB7CiAgICAgICAgIHRlc3QtPm1fY29va2llc0NoYW5nZWQgPSB0cnVlOwot
ICAgICAgICBpZiAodGVzdC0+bV9maW5pc2hMb29wV2hlbkNvb2tpZXNDaGFuZ2UpCisgICAgICAg
IGlmICh0ZXN0LT5tX2ZpbmlzaExvb3BXaGVuQ29va2llc0NoYW5nZSAmJiAhKC0tdGVzdC0+bV9j
b29raWVzRXhwZWN0ZWRUb0NoYW5nZUNvdW50KSkKICAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1
aXQodGVzdC0+bV9tYWluTG9vcCk7CiAgICAgfQogCiAgICAgQ29va2llTWFuYWdlclRlc3QoKQog
ICAgICAgICA6IFdlYlZpZXdUZXN0KCkKICAgICAgICAgLCBtX2Nvb2tpZU1hbmFnZXIod2Via2l0
X3dlYl9jb250ZXh0X2dldF9jb29raWVfbWFuYWdlcih3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRl
eHQobV93ZWJWaWV3KSkpCi0gICAgICAgICwgbV9hY2NlcHRQb2xpY3koV0VCS0lUX0NPT0tJRV9Q
T0xJQ1lfQUNDRVBUX05PX1RISVJEX1BBUlRZKQotICAgICAgICAsIG1fZG9tYWlucygwKQotICAg
ICAgICAsIG1fY29va2llc0NoYW5nZWQoZmFsc2UpCi0gICAgICAgICwgbV9maW5pc2hMb29wV2hl
bkNvb2tpZXNDaGFuZ2UoZmFsc2UpCiAgICAgewogICAgICAgICBnX2Fzc2VydCh3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyKHdlYmtpdF93ZWJfY29udGV4dF9n
ZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KG1fd2Vi
VmlldykpKSA9PSBtX2Nvb2tpZU1hbmFnZXIpOwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1f
Y29va2llTWFuYWdlciwgImNoYW5nZWQiLCBHX0NBTExCQUNLKGNvb2tpZXNDaGFuZ2VkQ2FsbGJh
Y2spLCB0aGlzKTsKQEAgLTE2MiwxOSArMTU4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgR19HTlVD
X0VORF9JR05PUkVfREVQUkVDQVRJT05TOwogICAgIH0KIAotICAgIHZvaWQgd2FpdFVudGlsQ29v
a2llc0NoYW5nZWQoKQorICAgIHZvaWQgd2FpdFVudGlsQ29va2llc0NoYW5nZWQoaW50IGNvb2tp
ZXNFeHBlY3RlZFRvQ2hhbmdlQ291bnQgPSAxKQogICAgIHsKICAgICAgICAgbV9jb29raWVzQ2hh
bmdlZCA9IGZhbHNlOworICAgICAgICBtX2Nvb2tpZXNFeHBlY3RlZFRvQ2hhbmdlQ291bnQgPSBj
b29raWVzRXhwZWN0ZWRUb0NoYW5nZUNvdW50OwogICAgICAgICBtX2ZpbmlzaExvb3BXaGVuQ29v
a2llc0NoYW5nZSA9IHRydWU7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsK
ICAgICAgICAgbV9maW5pc2hMb29wV2hlbkNvb2tpZXNDaGFuZ2UgPSBmYWxzZTsKICAgICB9CiAK
LSAgICBXZWJLaXRDb29raWVNYW5hZ2VyKiBtX2Nvb2tpZU1hbmFnZXI7Ci0gICAgV2ViS2l0Q29v
a2llQWNjZXB0UG9saWN5IG1fYWNjZXB0UG9saWN5OwotICAgIGNoYXIqKiBtX2RvbWFpbnM7Ci0g
ICAgYm9vbCBtX2Nvb2tpZXNDaGFuZ2VkOwotICAgIGJvb2wgbV9maW5pc2hMb29wV2hlbkNvb2tp
ZXNDaGFuZ2U7CisgICAgV2ViS2l0Q29va2llTWFuYWdlciogbV9jb29raWVNYW5hZ2VyIHsgbnVs
bHB0ciB9OworICAgIFdlYktpdENvb2tpZUFjY2VwdFBvbGljeSBtX2FjY2VwdFBvbGljeSB7IFdF
QktJVF9DT09LSUVfUE9MSUNZX0FDQ0VQVF9OT19USElSRF9QQVJUWSB9OworICAgIGNoYXIqKiBt
X2RvbWFpbnMgeyBudWxscHRyIH07CisgICAgYm9vbCBtX2Nvb2tpZXNDaGFuZ2VkIHsgZmFsc2Ug
fTsKKyAgICBpbnQgbV9jb29raWVzRXhwZWN0ZWRUb0NoYW5nZUNvdW50IHsgMCB9OworICAgIGJv
b2wgbV9maW5pc2hMb29wV2hlbkNvb2tpZXNDaGFuZ2UgeyBmYWxzZSB9OwogICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gbV9jb29raWVzVGV4dEZpbGU7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBtX2Nvb2tp
ZXNTUUxpdGVGaWxlOwogfTsKQEAgLTMwMCw2ICsyOTgsMzEgQEAgc3RhdGljIHZvaWQgdGVzdENv
b2tpZU1hbmFnZXJQZXJzaXN0ZW50U3RvcmFnZShDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2Nv
bnN0cG8KICAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aCh0ZXN0LT5nZXREb21haW5z
KCkpLCA9PSwgMCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyUGVyc2lzdGVu
dFN0b3JhZ2VEZWxldGVBbGwoQ29va2llTWFuYWdlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
Cit7CisgICAgLy8gVGhpcyBjaGVja3MgdGhhdCB3ZSBjYW4gcmVtb3ZlIGFsbCB0aGUgY29va2ll
cyBvZiBhbiBleGlzdGluZyBmaWxlIGJlZm9yZSBhIHdlYiBwcm9jZXNzIGlzIGNyZWF0ZWQuCisg
ICAgLy8gU2VlIGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
MjY1LgorICAgIHN0YXRpYyBjb25zdCBjaGFyIGNvb2tpZXNGaWxlRm9ybWF0W10gPSAiMTI3LjAu
MC4xXHRGQUxTRVx0L1x0RkFMU0VcdCVsZFx0Zm9vXHRiYXJcbmxvY2FsaG9zdFx0RkFMU0VcdC9c
dEZBTFNFXHQlbGRcdGJhelx0cXV4XG4iOworICAgIHRpbWVfdCBleHBpcmVzID0gdGltZShudWxs
cHRyKSArIDYwOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29va2llc0ZpbGVDb250ZW50cyhnX3N0
cmR1cF9wcmludGYoY29va2llc0ZpbGVGb3JtYXQsIGV4cGlyZXMsIGV4cGlyZXMpKTsKKyAgICBH
VW5pcXVlUHRyPGNoYXI+IGNvb2tpZXNGaWxlKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURp
cmVjdG9yeSgpLCAiY29va2llcy50eHQiLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnQoZ19maWxl
X3NldF9jb250ZW50cyhjb29raWVzRmlsZS5nZXQoKSwgY29va2llc0ZpbGVDb250ZW50cy5nZXQo
KSwgLTEsIG51bGxwdHIpKTsKKworICAgIHRlc3QtPnNldFBlcnNpc3RlbnRTdG9yYWdlKFdFQktJ
VF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQpOworICAgIHRlc3QtPmRlbGV0ZUFsbENv
b2tpZXMoKTsKKyAgICAvLyBDaGFuZ2VkIHNpZ25hbCBpcyBlbWl0dGVuZCBmb3IgZXZlcnkgZGVs
ZXRlZCBjb29raWUsIHR3aWNlIGluIHRoaXMgY2FzZS4KKyAgICB0ZXN0LT53YWl0VW50aWxDb29r
aWVzQ2hhbmdlZCgyKTsKKworICAgIC8vIEVuc3VyZSB0aGUgd2ViIHByb2Nlc3MgaXMgY3JlYXRl
ZCBhbmQgbG9hZCBzb21ldGhpbmcgd2l0aG91dCBjb29raWVzLgorICAgIHRlc3QtPm1fY29va2ll
c0NoYW5nZWQgPSBmYWxzZTsKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBh
dGgoIi9uby1jb29raWVzLmh0bWwiKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOworICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKKyAgICBj
aGFyKiogZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKKyAgICBnX2Fzc2VydChkb21haW5z
KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDApOwor
fQorCiBzdGF0aWMgdm9pZCBlcGhlbWVyYWxWaWV3bG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCwgV2ViVmlld1Rlc3QqIHRlc3QpCiB7
CiAgICAgaWYgKGxvYWRFdmVudCAhPSBXRUJLSVRfTE9BRF9GSU5JU0hFRCkKQEAgLTM2Niw3ICsz
ODksMTAgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBT
b3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKICAgICAgICAgc291cF9tZXNzYWdlX2Jv
ZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1RBS0UsIGluZGV4
SHRtbCwgc3RybGVuKGluZGV4SHRtbCkpOwogICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0
aCwgIi9pbWFnZS5wbmciKSkKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfcmVwbGFjZSht
ZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzLCAiU2V0LUNvb2tpZSIsICJiYXo9cXV4OyBNYXgtQWdl
PTYwIik7Ci0gICAgZWxzZQorICAgIGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvbm8tY29v
a2llcy5odG1sIikpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGluZGV4SHRtbCA9ICI8
aHRtbD48Ym9keT48cD5ObyBjb29raWVzPC9wPjwvYm9keT48L2h0bWw+IjsKKyAgICAgICAgc291
cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZ
X1NUQVRJQywgaW5kZXhIdG1sLCBzdHJsZW4oaW5kZXhIdG1sKSk7CisgICAgfSBlbHNlCiAgICAg
ICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9GT1VO
RCk7CiAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9k
eSk7CiB9CkBAIC0zODAsNiArNDA2LDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIENvb2tpZU1h
bmFnZXJUZXN0OjphZGQoIldlYktpdENvb2tpZU1hbmFnZXIiLCAiZGVsZXRlLWNvb2tpZXMiLCB0
ZXN0Q29va2llTWFuYWdlckRlbGV0ZUNvb2tpZXMpOwogICAgIENvb2tpZU1hbmFnZXJUZXN0Ojph
ZGQoIldlYktpdENvb2tpZU1hbmFnZXIiLCAiY29va2llcy1jaGFuZ2VkIiwgdGVzdENvb2tpZU1h
bmFnZXJDb29raWVzQ2hhbmdlZCk7CiAgICAgQ29va2llTWFuYWdlclRlc3Q6OmFkZCgiV2ViS2l0
Q29va2llTWFuYWdlciIsICJwZXJzaXN0ZW50LXN0b3JhZ2UiLCB0ZXN0Q29va2llTWFuYWdlclBl
cnNpc3RlbnRTdG9yYWdlKTsKKyAgICBDb29raWVNYW5hZ2VyVGVzdDo6YWRkKCJXZWJLaXRDb29r
aWVNYW5hZ2VyIiwgInBlcnNpc3RlbnQtc3RvcmFnZS1kZWxldGUtYWxsIiwgdGVzdENvb2tpZU1h
bmFnZXJQZXJzaXN0ZW50U3RvcmFnZURlbGV0ZUFsbCk7CiAgICAgQ29va2llTWFuYWdlclRlc3Q6
OmFkZCgiV2ViS2l0Q29va2llTWFuYWdlciIsICJlcGhlbWVyYWwiLCB0ZXN0Q29va2llTWFuYWdl
ckVwaGVtZXJhbCk7CiB9CiAK
</data>
<flag name="review"
          id="346299"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>