<?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>119303</bug_id>
          
          <creation_ts>2013-07-30 20:25:13 -0700</creation_ts>
          <short_desc>[GTK] Support browser credential storage</short_desc>
          <delta_ts>2020-06-17 00:12:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>99352</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ben Boeckel">mathstuf</reporter>
          <assigned_to name="Brian Holt">brian.holt</assigned_to>
          <cc>brian.holt</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>d.nomiyama</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>913149</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Boeckel">mathstuf</who>
    <bug_when>2013-07-30 20:25:13 -0700</bug_when>
    <thetext>With the new &quot;authenticate&quot; signal, it&apos;d be nice to be able to disable WebKit&apos;s backing store and allow the browser to handle all credentials. Just ignoring WebKit&apos;s store still causes dbus to be launched when libsecret probes for a libsecret client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915401</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-08-08 05:52:49 -0700</bug_when>
    <thetext>I think we could add webkit_authentication_request_set_allow_persistent_storage() or something similar. That way the user can connect to authenticate signal, set allow_persistent_storage to FALSE and return FALSE, so that the default dialog is shown, but it won&apos;t allow to save credentials persistenly using libsecret.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915414</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-08-08 06:16:50 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; I think we could add webkit_authentication_request_set_allow_persistent_storage() or something similar. That way the user can connect to authenticate signal, set allow_persistent_storage to FALSE and return FALSE, so that the default dialog is shown, but it won&apos;t allow to save credentials persistenly using libsecret.

Maybe this deserves a global setting?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915427</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-08-08 07:16:01 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; I think we could add webkit_authentication_request_set_allow_persistent_storage() or something similar. That way the user can connect to authenticate signal, set allow_persistent_storage to FALSE and return FALSE, so that the default dialog is shown, but it won&apos;t allow to save credentials persistenly using libsecret.
&gt; 
&gt; Maybe this deserves a global setting?

It would be easier to use indeed, I guess you won&apos;t want a different mode per auth request. Global settings as per web view group or web context?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915428</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-08-08 07:20:10 -0700</bug_when>
    <thetext>(In reply to comment #3)

&gt; It would be easier to use indeed, I guess you won&apos;t want a different mode per auth request. Global settings as per web view group or web context?

Can requests not have a WebView that owns them? I&apos;d say WebContext, but I&apos;m not certain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944891</commentid>
    <comment_count>5</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-30 07:08:06 -0700</bug_when>
    <thetext>Changed title</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944932</commentid>
    <comment_count>6</comment_count>
      <attachid>215514</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-30 09:30:36 -0700</bug_when>
    <thetext>Created attachment 215514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944934</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-30 09:31:56 -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>945151</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-30 13:24:08 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; With the new &quot;authenticate&quot; signal, it&apos;d be nice to be able to disable WebKit&apos;s backing store and allow the browser to handle all credentials. Just ignoring WebKit&apos;s store still causes dbus to be launched when libsecret probes for a libsecret client.

Is my patch what you had in mind? Run-time enabling/disabling libsecret persistent storage?  Of course you can always force WebKit not to use libsecret by compiling with --enable-credential-storage=no, but this patch gives you run-time control.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945277</commentid>
    <comment_count>9</comment_count>
    <who name="Ben Boeckel">mathstuf</who>
    <bug_when>2013-10-30 18:03:15 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Is my patch what you had in mind? Run-time enabling/disabling libsecret persistent storage?

Yep. Thanks!

&gt; Of course you can always force WebKit not to use libsecret by compiling with --enable-credential-storage=no, but this patch gives you run-time control.

I don&apos;t know of any binary distro that would build with that option :) .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945441</commentid>
    <comment_count>10</comment_count>
      <attachid>215514</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-10-31 01:33:50 -0700</bug_when>
    <thetext>Comment on attachment 215514
Patch

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

I think the default dialog should honor this setting and not show the option to save the credentials when this is disabled. webkit_authentication_request_can_save_credentials() should also return FALSE when persistent credential storage is enabled, I guess. The problem of this is that this doesn&apos;t allow to use the default dialog but with the user implementing the credential storage.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:1091
&gt; +void ResourceHandle::setUsePersistentCredentialStorage(bool usePersistentCredentialStorage)
&gt; +{
&gt; +    gUsePersistentCredentialStorage = usePersistentCredentialStorage;
&gt; +}

All other uses of credential storage are GTK specific, so I think this should be in a #if PLATFORM(GTK) block

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:833
&gt; + * webkit_web_context_get_persistent_storage_enabled:

This is a very generic name, persistent storage doesn&apos;t say anything about HTTPs authentication nor credentials.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:836
&gt; + * Get whether persistent storage is currently enabled.

You should explain what persistent storage is here, and what happens when this is enabled/disabled. We should also document what the default is.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1407
&gt; +    webkit_settings_set_enable_private_browsing(webkit_web_view_get_settings(test-&gt;m_webView), FALSE);
&gt; +    webkit_web_context_set_persistent_storage_enabled(webkit_web_view_get_context(test-&gt;m_webView), FALSE);

How can you know if it&apos;s because of the private browsing or persisten storage if both are disabled?

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1416
&gt; -    webkit_settings_set_enable_private_browsing(webkit_web_view_get_settings(test-&gt;m_webView), FALSE);
&gt; +    webkit_web_context_set_persistent_storage_enabled(webkit_web_view_get_context(test-&gt;m_webView), TRUE);

I think we want to check both, if persistent storage is enabled, but private browsing disabled, credentials should not be stored permanently.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1419
&gt;      g_assert(!webkit_authentication_request_get_proposed_credential(request));

One of the goals of this API is allow the users to implement credential sotring by themselves. I think we should add a unit tests to check that case it&apos;s actually possible, disabling the persistent credential storage in wk, but providing your own credentials in the authenticate signal.

&gt; Source/WebKit2/UIProcess/WebContext.cpp:151
&gt; +    , m_usePersistentCredentialStorage(true)

I think this is GTK specific.

&gt; Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp:147
&gt; +    m_usePersistentCredentialStorage = usePersistentCredentialStorage;
&gt; +    sendToAllProcesses(Messages::WebProcess::SetUsePersistentCredentialStorage(m_usePersistentCredentialStorage));

You should check that the value has actually changed to avoid sending a meesage to the WebProcess for nothing. We can also avoid the message if webkit has been compiled without credential storage support (ENABLE(CREDENTIAL_STORAGE))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945487</commentid>
    <comment_count>11</comment_count>
      <attachid>215514</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-31 04:53:12 -0700</bug_when>
    <thetext>Comment on attachment 215514
Patch

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

Thanks for the review!

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:833
&gt;&gt; + * webkit_web_context_get_persistent_storage_enabled:
&gt; 
&gt; This is a very generic name, persistent storage doesn&apos;t say anything about HTTPs authentication nor credentials.

Very good point.  I&apos;ve been thinking about possible names, what about webkit_web_context_get_persistent_credential_storage_enabled?

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:836
&gt;&gt; + * Get whether persistent storage is currently enabled.
&gt; 
&gt; You should explain what persistent storage is here, and what happens when this is enabled/disabled. We should also document what the default is.

Sure, that makes sense.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1419
&gt;&gt;      g_assert(!webkit_authentication_request_get_proposed_credential(request));
&gt; 
&gt; One of the goals of this API is allow the users to implement credential sotring by themselves. I think we should add a unit tests to check that case it&apos;s actually possible, disabling the persistent credential storage in wk, but providing your own credentials in the authenticate signal.

All good points, I&apos;ll improve the unit test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663185</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-06-16 11:48:45 -0700</bug_when>
    <thetext>The adventure continues in bug #213177</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663391</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-17 00:12:35 -0700</bug_when>
    <thetext>I had forgotten this, let&apos;s continue in bug #213177, yes, I&apos;ll submit a patch soon.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215514</attachid>
            <date>2013-10-30 09:30:36 -0700</date>
            <delta_ts>2013-10-31 04:53:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119303-20131030163050.patch</filename>
            <type>text/plain</type>
            <size>16683</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4MjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUxNjQ5MjMyMjhmYzU5
OWUyNjk1YTczYjRkNTllNzQ5MGFkMTdhYi4uNThlYTRiMzUyNTY2YTFlMzQ1YWVhMDk0ZGVjZWQ0
MTY3YTViOGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTEwLTMwICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBTdXBwb3J0
IGJyb3dzZXIgY3JlZGVudGlhbCBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTkzMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0IHJ1bi10aW1lIHNlbGVjdGlvbiBvZiBwZXJzaXN0
ZW50IHN0b3JhZ2Ugb2YgY3JlZGVudGlhbHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnb3RIZWFkZXJzQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldFVzZVBlcnNpc3RlbnRDcmVk
ZW50aWFsU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwpOgorCiAyMDEzLTEwLTI5ICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBTdG9yZSB2
aWRlby1zaW5rIGluIGEgYmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDQ3NTk3NzI3MTFjYjEwN2RlZjViNjY0
ZDYyNjhlMmM1MGNjNjE2ZC4uNDM0ZDc0Y2I4MGIwM2M2MTBlZjQyYjlmYzg0YTk0ZTgyZWEzMjQw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTEwLTMwICBCcmlhbiBIb2x0ICA8
YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBTdXBwb3J0IGJyb3dzZXIg
Y3JlZGVudGlhbCBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTkzMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdXBwb3J0IHJ1bi10aW1lIGNob2ljZSBvZiBwZXJzaXN0ZW50IHN0b3JhZ2Ug
b2YgY3JlZGVudGlhbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcGVyc2lzdGVudF9z
dG9yYWdlX2VuYWJsZWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3NldF9wZXJzaXN0
ZW50X3N0b3JhZ2VfZW5hYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdl
YktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblN0b3Jh
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6V2ViQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRl
eHQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6dXNlUGVyc2lzdGVudENyZWRlbnRp
YWxTdG9yYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRVc2VQZXJzaXN0ZW50Q3JlZGVudGlhbFN0
b3JhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL3Nv
dXAvV2ViUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRV
c2VQZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2UpOgorCiAyMDEzLTEwLTMwICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSB3ZWJraXRf
d2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0IGRvYyBpcyBtaXNzaW5n
IFNpbmNlIHRhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCmluZGV4IDAyOTQ1ZTFiMjgxNDc3YTI2ZDQ3ZGE1N2QwYTM5MDczNWIzOGY4M2Eu
LjRhZTkzOTMzNjE3NmYxM2RhZmE5ZWExMWI2YTYzN2UyNWVhNGQyNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTE3NCw2ICsx
NzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SG9zdEFsbG93c0FueUhUVFBTQ2Vy
dGlmaWNhdGUoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHZvaWQgc2V0Q2xpZW50Q2VydGlm
aWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBHVGxzQ2VydGlmaWNhdGUqKTsKICAgICBzdGF0aWMg
dm9pZCBzZXRJZ25vcmVTU0xFcnJvcnMoYm9vbCk7CisgICAgc3RhdGljIHZvaWQgc2V0VXNlUGVy
c2lzdGVudENyZWRlbnRpYWxTdG9yYWdlKGJvb2wpOwogI2VuZGlmCiAKICAgICAvLyBVc2VkIHRv
IHdvcmsgYXJvdW5kIHRoZSBmYWN0IHRoYXQgeW91IGRvbid0IGdldCBhbnkgbW9yZSBOU1VSTENv
bm5lY3Rpb24gY2FsbGJhY2tzIHVudGlsIHlvdSByZXR1cm4gZnJvbSB0aGUgb25lIHlvdSdyZSBp
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggNGM4ODIxNjk5YWI0MWNmYTE5ODM2NjQ5NjE4
MzM4MWFlODdkNjI3My4uY2M5NmI1ZmRlODIyYmNhZDc2ZTQ3MmI1YmIyZDA1MTI4ZGU4NDkwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
SGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTIyOSw2ICsyMjksOCBAQCBzdGF0aWMgaW50ICBt
aWxpc2Vjb25kc1NpbmNlUmVxdWVzdChkb3VibGUgcmVxdWVzdFRpbWUpOwogCiBzdGF0aWMgYm9v
bCBnSWdub3JlU1NMRXJyb3JzID0gZmFsc2U7CiAKK3N0YXRpYyBib29sIGdVc2VQZXJzaXN0ZW50
Q3JlZGVudGlhbFN0b3JhZ2UgPSB0cnVlOworCiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBhbGxv
d3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
SGFzaFNldDxTdHJpbmc+LCBob3N0cywgKCkpOwpAQCAtMzM4LDE0ICszNDAsMTYgQEAgc3RhdGlj
IHZvaWQgZ290SGVhZGVyc0NhbGxiYWNrKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRlciBk
YXRhKQogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCi0gICAgLy8gV2UgYXJlIGEgYml0IG1v
cmUgY29uc2VydmF0aXZlIHdpdGggdGhlIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9yYWdlIHRo
YW4gdGhlIHNlc3Npb24gc3RvcmUsCi0gICAgLy8gc2luY2Ugd2UgYXJlIHdhaXRpbmcgdW50aWwg
d2Uga25vdyB0aGF0IHRoaXMgYXV0aGVudGljYXRpb24gc3VjY2VlZGVkIGJlZm9yZSBhY3R1YWxs
eSBzdG9yaW5nLgotICAgIC8vIFRoaXMgaXMgYmVjYXVzZSB3ZSB3YW50IHRvIGF2b2lkIGhpdHRp
bmcgdGhlIGRpc2sgdHdpY2UgKG9uY2UgdG8gYWRkIGFuZCBvbmNlIHRvIHJlbW92ZSkgZm9yCi0g
ICAgLy8gaW5jb3JyZWN0IGNyZWRlbnRpYWxzIG9yIHBvbGx1dGluZyB0aGUga2V5Y2hhaW4gd2l0
aCBpbnZhbGlkIGNyZWRlbnRpYWxzLgotICAgIGlmICghaXNBdXRoZW50aWNhdGlvbkZhaWx1cmVT
dGF0dXNDb2RlKG1lc3NhZ2UtPnN0YXR1c19jb2RlKSAmJiBtZXNzYWdlLT5zdGF0dXNfY29kZSA8
IDUwMCAmJiAhZC0+bV9jcmVkZW50aWFsRGF0YVRvU2F2ZUluUGVyc2lzdGVudFN0b3JlLmNyZWRl
bnRpYWwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNyZWRlbnRpYWxCYWNraW5nU3RvcmUoKS5zdG9y
ZUNyZWRlbnRpYWxzRm9yQ2hhbGxlbmdlKAotICAgICAgICAgICAgZC0+bV9jcmVkZW50aWFsRGF0
YVRvU2F2ZUluUGVyc2lzdGVudFN0b3JlLmNoYWxsZW5nZSwKLSAgICAgICAgICAgIGQtPm1fY3Jl
ZGVudGlhbERhdGFUb1NhdmVJblBlcnNpc3RlbnRTdG9yZS5jcmVkZW50aWFsKTsKKyAgICBpZiAo
Z1VzZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZSkgeworICAgICAgICAvLyBXZSBhcmUgYSBi
aXQgbW9yZSBjb25zZXJ2YXRpdmUgd2l0aCB0aGUgcGVyc2lzdGVudCBjcmVkZW50aWFsIHN0b3Jh
Z2UgdGhhbiB0aGUgc2Vzc2lvbiBzdG9yZSwKKyAgICAgICAgLy8gc2luY2Ugd2UgYXJlIHdhaXRp
bmcgdW50aWwgd2Uga25vdyB0aGF0IHRoaXMgYXV0aGVudGljYXRpb24gc3VjY2VlZGVkIGJlZm9y
ZSBhY3R1YWxseSBzdG9yaW5nLgorICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2Ugd2Ugd2FudCB0
byBhdm9pZCBoaXR0aW5nIHRoZSBkaXNrIHR3aWNlIChvbmNlIHRvIGFkZCBhbmQgb25jZSB0byBy
ZW1vdmUpIGZvcgorICAgICAgICAvLyBpbmNvcnJlY3QgY3JlZGVudGlhbHMgb3IgcG9sbHV0aW5n
IHRoZSBrZXljaGFpbiB3aXRoIGludmFsaWQgY3JlZGVudGlhbHMuCisgICAgICAgIGlmICghaXNB
dXRoZW50aWNhdGlvbkZhaWx1cmVTdGF0dXNDb2RlKG1lc3NhZ2UtPnN0YXR1c19jb2RlKSAmJiBt
ZXNzYWdlLT5zdGF0dXNfY29kZSA8IDUwMCAmJiAhZC0+bV9jcmVkZW50aWFsRGF0YVRvU2F2ZUlu
UGVyc2lzdGVudFN0b3JlLmNyZWRlbnRpYWwuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBjcmVk
ZW50aWFsQmFja2luZ1N0b3JlKCkuc3RvcmVDcmVkZW50aWFsc0ZvckNoYWxsZW5nZSgKKyAgICAg
ICAgICAgICAgICBkLT5tX2NyZWRlbnRpYWxEYXRhVG9TYXZlSW5QZXJzaXN0ZW50U3RvcmUuY2hh
bGxlbmdlLAorICAgICAgICAgICAgICAgIGQtPm1fY3JlZGVudGlhbERhdGFUb1NhdmVJblBlcnNp
c3RlbnRTdG9yZS5jcmVkZW50aWFsKTsKKyAgICAgICAgfQogICAgIH0KICNlbmRpZgogCkBAIC0x
MDgxLDYgKzEwODUsMTEgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UoKQogICAgIHJldHVybiAoIWNsaWVudCgpIHx8IGNsaWVudCgpLT5zaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZSh0aGlzKSkgJiYgZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpOwogfQogCit2b2lkIFJlc291cmNlSGFuZGxlOjpzZXRVc2VQZXJzaXN0
ZW50Q3JlZGVudGlhbFN0b3JhZ2UoYm9vbCB1c2VQZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2Up
Cit7CisgICAgZ1VzZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZSA9IHVzZVBlcnNpc3RlbnRD
cmVkZW50aWFsU3RvcmFnZTsKK30KKwogdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93
c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0KQogewogICAgIGFsbG93c0Fu
eUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpLmFkZChob3N0Lmxvd2VyKCkpOwpAQCAtMTE2MSw3ICsx
MTcwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKICAgICAvLyBvZiBhbGwgcmVxdWVzdCBs
YXRlbmN5LCB2ZXJzdXMgYSBvbmUtdGltZSBsYXRlbmN5IGZvciB0aGUgc21hbGwgc3Vic2V0IG9m
IHJlcXVlc3RzIHRoYXQKICAgICAvLyB1c2UgSFRUUCBhdXRoZW50aWNhdGlvbi4gSW4gdGhlIGVu
ZCwgdGhpcyBkb2Vzbid0IG1hdHRlciBtdWNoLCBiZWNhdXNlIHBlcnNpc3RlbnQgY3JlZGVudGlh
bHMKICAgICAvLyB3aWxsIGJlY29tZSBzZXNzaW9uIGNyZWRlbnRpYWxzIGFmdGVyIHRoZSBmaXJz
dCB1c2UuCi0gICAgaWYgKHVzZUNyZWRlbnRpYWxTdG9yYWdlKSB7CisgICAgaWYgKHVzZUNyZWRl
bnRpYWxTdG9yYWdlICYmIGdVc2VQZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2UpIHsKICAgICAg
ICAgY3JlZGVudGlhbEJhY2tpbmdTdG9yZSgpLmNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UoY2hhbGxl
bmdlLCBnZXRDcmVkZW50aWFsRnJvbVBlcnNpc3RlbnRTdG9yZUNhbGxiYWNrLCB0aGlzKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMDEsNyArMTIxMCw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
Y2hhbGxlbmdlCiAgICAgICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNyZWRlbnRpYWws
IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgp
LnVybCgpKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICAgICAgaWYgKGNyZWRlbnRpYWwucGVy
c2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnQpIHsKKyAgICAgICAg
aWYgKGdVc2VQZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2UgJiYgY3JlZGVudGlhbC5wZXJzaXN0
ZW5jZSgpID09IENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudCkgewogICAgICAgICAgICAg
ZC0+bV9jcmVkZW50aWFsRGF0YVRvU2F2ZUluUGVyc2lzdGVudFN0b3JlLmNyZWRlbnRpYWwgPSBj
cmVkZW50aWFsOwogICAgICAgICAgICAgZC0+bV9jcmVkZW50aWFsRGF0YVRvU2F2ZUluUGVyc2lz
dGVudFN0b3JlLmNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRl
eCBlODQ3OWU1ZDJlYzJjNjJkMjA5YzEzMWM2YzljM2M3MjgyZjI5YmU2Li4xZmJiZDBlY2Y2MWRm
YzNkNmI3NjBhZTBhNmRmNGRhNmQzMTBlNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtODI5LDYgKzgyOSwz
OSBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hv
c3QoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgIGNvbnRleHQtPnByaXYtPmNvbnRleHQt
PmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8u
Z2V0KCksIFN0cmluZzo6ZnJvbVVURjgoaG9zdCkpOwogfQogCisvKioKKyAqIHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfcGVyc2lzdGVudF9zdG9yYWdlX2VuYWJsZWQ6CisgKiBAY29udGV4dDogYSAj
V2ViS2l0V2ViQ29udGV4dAorICoKKyAqIEdldCB3aGV0aGVyIHBlcnNpc3RlbnQgc3RvcmFnZSBp
cyBjdXJyZW50bHkgZW5hYmxlZC4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBwZXJzaXN0ZW50
IHN0b3JhZ2UgaXMgZW5hYmxlZCwgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBTaW5jZTog
Mi40CisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcGVyc2lzdGVudF9zdG9y
YWdlX2VuYWJsZWQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCksIEZBTFNFKTsKKworICAg
IHJldHVybiBjb250ZXh0LT5wcml2LT5jb250ZXh0LT51c2VQZXJzaXN0ZW50Q3JlZGVudGlhbFN0
b3JhZ2UoKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3BlcnNpc3RlbnRf
c3RvcmFnZV9lbmFibGVkOgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKKyAqIEBl
bmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBFbmFibGUgb3IgZGlzYWJsZSB0aGUgcGVy
c2lzdGVudCBzdG9yYWdlIGZlYXR1cmUuCisgKgorICogU2luY2U6IDIuNAorICovCit2b2lkIHdl
YmtpdF93ZWJfY29udGV4dF9zZXRfcGVyc2lzdGVudF9zdG9yYWdlX2VuYWJsZWQoV2ViS2l0V2Vi
Q29udGV4dCogY29udGV4dCwgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CisKKyAgICBjb250ZXh0LT5wcml2
LT5jb250ZXh0LT5zZXRVc2VQZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2UoZW5hYmxlZCk7Cit9
CisKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChE
b3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQogewogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxv
YWQ+IGRvd25sb2FkID0gZG93bmxvYWRzTWFwKCkuZ2V0KGRvd25sb2FkUHJveHkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCmlu
ZGV4IDllN2JjMTQ0NzZkYjAyMjNhNzhiY2RmNzM4YzJmNjBiOTA2NTNkN2UuLmVmOGYyZjM4OWE0
MTE1OTY4YWI0YTg4ODA3NWM5ZDAyMDU3NTM2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTIwOCw2ICsyMDgsMTMg
QEAgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCAgIChX
ZWJLaXRXZWJDb250ZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyAgICAgICAgICppbmZvLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciAgICAgICAgICAgICAgICAgICAqaG9zdCk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtp
dF93ZWJfY29udGV4dF9nZXRfcGVyc2lzdGVudF9zdG9yYWdlX2VuYWJsZWQgICAoV2ViS2l0V2Vi
Q29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtp
dF93ZWJfY29udGV4dF9zZXRfcGVyc2lzdGVudF9zdG9yYWdlX2VuYWJsZWQgICAoV2ViS2l0V2Vi
Q29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICAg
ICBlbmFibGVkKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dAppbmRleCA4MDU3NjNiMWYyNDM4MjQ0ZGQzMmIyZjBlODQ3ZjY5Mzk3NTU2MDlhLi4xYjk0
ZGVjNjQyNzMyYWZmNWYyMTliOWI4NTFkOWQ2ZGNkYzJmN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0
aW9ucy50eHQKQEAgLTQ5LDYgKzQ5LDggQEAgd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0
ZW5zaW9uc19kaXJlY3RvcnkKIHdlYmtpdF93ZWJfY29udGV4dF9wcmVmZXRjaF9kbnMKIHdlYmtp
dF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3RvcnkKIHdlYmtpdF93ZWJfY29udGV4
dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QKK3dlYmtpdF93ZWJfY29udGV4dF9nZXRf
cGVyc2lzdGVudF9zdG9yYWdlX2VuYWJsZWQKK3dlYmtpdF93ZWJfY29udGV4dF9zZXRfcGVyc2lz
dGVudF9zdG9yYWdlX2VuYWJsZWQKIAogPFNVQlNFQ1RJT04gVVJJIFNjaGVtZT4KIFdlYktpdFVS
SVNjaGVtZVJlcXVlc3RDYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDdhNTMx
MDRjMTM4YmFjZDE5MTNlNTZjYjNmYmQ4ZGRkZTViZTMyMjkuLjE5YzAyYzIzYTJjYjA1ZGM3M2Uz
YWNjNGQ0NDk2OGI5Y2U3OWU3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTE0MDIs
MTAgKzE0MDIsMTggQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblN0b3Jh
Z2UoQXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICAgICBnX2Fzc2VydCghd2Vi
a2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3Byb3Bvc2VkX2NyZWRlbnRpYWwocmVxdWVz
dCkpOwogICAgIGdfYXNzZXJ0KCF3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9jYW5fc2F2
ZV9jcmVkZW50aWFscyhyZXF1ZXN0KSk7CiAKKyAgICAvLyBUZXN0IHRoYXQgQ3JlZGVudGlhbHMg
Y2FuIGJlIHNhdmVkIHVzaW5nIHRoZSBicm93c2VyIENyZWRlbnRpYWxTdG9yYWdlCisgICAgd2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyh3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldyksIEZBTFNFKTsKKyAgICB3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X3BlcnNpc3RlbnRfc3RvcmFnZV9lbmFibGVkKHdlYmtpdF93ZWJfdmlld19nZXRf
Y29udGV4dCh0ZXN0LT5tX3dlYlZpZXcpLCBGQUxTRSk7CisgICAgdGVzdC0+bG9hZFVSSShrU2Vy
dmVyLT5nZXRVUklGb3JQYXRoKCIvYXV0aC10ZXN0Lmh0bWwiKS5kYXRhKCkpOworICAgIHJlcXVl
c3QgPSB0ZXN0LT53YWl0Rm9yQXV0aGVudGljYXRpb25SZXF1ZXN0KCk7CisgICAgZ19hc3NlcnQo
IXdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2dldF9wcm9wb3NlZF9jcmVkZW50aWFsKHJl
cXVlc3QpKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9jYW5f
c2F2ZV9jcmVkZW50aWFscyhyZXF1ZXN0KSk7CisKICAgICAvLyBJZiBXZWJLaXQgaGFzIGJlZW4g
Y29tcGlsZWQgd2l0aCBsaWJzZWNyZXQsIGFuZCBwcml2YXRlIGJyb3dzaW5nIGlzIGRpc2FibGVk
Ci0gICAgLy8gdGhlbiBjaGVjayB0aGF0IGNyZWRlbnRpYWxzIGNhbiBiZSBzYXZlZC4KKyAgICAv
LyB0aGVuIGNoZWNrIHRoYXQgY3JlZGVudGlhbHMgY2FuIGJlIHBlcnNpc3RlZCB1c2luZyBsaWJz
ZWNyZXQuCiAjaWYgRU5BQkxFKENSRURFTlRJQUxfU1RPUkFHRSkKLSAgICB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dzaW5nKHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGlu
Z3ModGVzdC0+bV93ZWJWaWV3KSwgRkFMU0UpOworICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
cGVyc2lzdGVudF9zdG9yYWdlX2VuYWJsZWQod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHRl
c3QtPm1fd2ViVmlldyksIFRSVUUpOwogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJ
Rm9yUGF0aCgiL2F1dGgtdGVzdC5odG1sIikuZGF0YSgpKTsKICAgICByZXF1ZXN0ID0gdGVzdC0+
d2FpdEZvckF1dGhlbnRpY2F0aW9uUmVxdWVzdCgpOwogICAgIGdfYXNzZXJ0KCF3ZWJraXRfYXV0
aGVudGljYXRpb25fcmVxdWVzdF9nZXRfcHJvcG9zZWRfY3JlZGVudGlhbChyZXF1ZXN0KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggMzUyZTUzMzlhMjY5MmQ5
OWFmMDk2ZjlhM2E0MDljMGFjZDA1ZTNiYy4uYzBlODQ0MzAyMDc5ZTY5ODM4MzljMjVlYjRhZGZl
Y2I4YzA1YmZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAt
MTQ4LDYgKzE0OCw3IEBAIFdlYkNvbnRleHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2Nl
c3NNb2RlbCwgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhCiAjZW5kaWYKICNpZiBVU0Uo
U09VUCkKICAgICAsIG1faWdub3JlVExTRXJyb3JzKHRydWUpCisgICAgLCBtX3VzZVBlcnNpc3Rl
bnRDcmVkZW50aWFsU3RvcmFnZSh0cnVlKQogI2VuZGlmCiB7CiAgICAgcGxhdGZvcm1Jbml0aWFs
aXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCBlNTc4YjNhMmQ2
N2M2ZmQzNmZhYzU0ZWZhYjkwNjkyNzdlMDMyNWEyLi4xMmYxNjI1MzM2NDllYmZiM2MxODMzZTFi
ZDU1YjEzODBjZTMzMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAg
LTMwMCw2ICszMDAsOCBAQCBwdWJsaWM6CiAjaWYgVVNFKFNPVVApCiAgICAgdm9pZCBzZXRJZ25v
cmVUTFNFcnJvcnMoYm9vbCk7CiAgICAgYm9vbCBpZ25vcmVUTFNFcnJvcnMoKSBjb25zdCB7IHJl
dHVybiBtX2lnbm9yZVRMU0Vycm9yczsgfQorICAgIHZvaWQgc2V0VXNlUGVyc2lzdGVudENyZWRl
bnRpYWxTdG9yYWdlKGJvb2wpOworICAgIGJvb2wgdXNlUGVyc2lzdGVudENyZWRlbnRpYWxTdG9y
YWdlKCkgY29uc3QgeyByZXR1cm4gbV91c2VQZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2U7IH0K
ICNlbmRpZgogCiAgICAgc3RhdGljIHZvaWQgc2V0SW52YWxpZE1lc3NhZ2VDYWxsYmFjayh2b2lk
ICgqKShXS1N0cmluZ1JlZikpOwpAQCAtNTA4LDYgKzUxMCw3IEBAIHByaXZhdGU6CiAKICNpZiBV
U0UoU09VUCkKICAgICBib29sIG1faWdub3JlVExTRXJyb3JzOworICAgIGJvb2wgbV91c2VQZXJz
aXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2U7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCmluZGV4IDUzMGFhMWNkYTlmY2FhZTdk
MTJkZDBhNjYxZmE0YzljOGQyYzBiMDIuLjM0MDRlMGE5YmM4NTBjZjZkNWI1OTk2OTg3YTJmNmEz
MGYxNGFjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29u
dGV4dEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0
R3RrLmNwcApAQCAtMTQxLDQgKzE0MSwxMCBAQCB2b2lkIFdlYkNvbnRleHQ6OnNldElnbm9yZVRM
U0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OlNldElnbm9yZVRMU0Vycm9ycyhtX2lnbm9yZVRMU0Vycm9ycykp
OwogfQogCit2b2lkIFdlYkNvbnRleHQ6OnNldFVzZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFn
ZShib29sIHVzZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZSkKK3sKKyAgICBtX3VzZVBlcnNp
c3RlbnRDcmVkZW50aWFsU3RvcmFnZSA9IHVzZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZTsK
KyAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFVzZVBlcnNp
c3RlbnRDcmVkZW50aWFsU3RvcmFnZShtX3VzZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZSkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKaW5kZXggOTZlNGVjOGIwZGViZTZjZGQzN2I2Zjc2OGY4ZTE1ZmY3YjUzZTkwMy4u
ZTgwNjRmMzM3NjcxNjM2ZDViZTQ0MGIyYjVlZWExZDQ2MWMyYjUyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTIzMyw2ICsyMzMsNyBAQCBwcml2YXRlOgogCiAj
aWYgVVNFKFNPVVApCiAgICAgdm9pZCBzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCk7CisgICAgdm9p
ZCBzZXRVc2VQZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2UoYm9vbCk7CiAjZW5kaWYKIAogICAg
IHZvaWQgcG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJl
bmNlJiBtZXNzYWdlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTMyYjRjMmYxNTE3YTgwODRiYTI3ZjFmMTcyNzg3MTky
YzQzOTA5Yi4uMmEzZjRmMDUyOTQ4YTBiZmY0ODk1N2Q4ZWU3OTBhZTMzZGIxNTk1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
NDksNiArNDksNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBGdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0Vu
YWJsZWQpCiAjaWYgVVNFKFNPVVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3Jl
VExTRXJyb3JzKQorICAgIFNldFVzZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZShib29sIHVz
ZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZSkKICNlbmRpZgogCiAgICAgLy8gUHJpdmF0ZSBi
cm93c2luZyBzZXNzaW9uIGlzIHBlciBwcm9jZXNzLiBJbmRpdmlkdWFsIHBhZ2VzIG9yIHBhZ2Ug
Z3JvdXBzIG1heSB1c2UgdGhlIHByaXZhdGUgc2Vzc2lvbiBvciB0aGUgZGVmYXVsdCBvbmUgYXMg
YXBwcm9wcmlhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlBy
b2Nlc3NTb3VwLmNwcAppbmRleCA3OWNmOTdkYWU5MmVmM2UyMDIxYzQ4YmYzNjcyM2RmN2E5OTVh
NTM3Li5lNzRjNDlkMGIxOWMzOTk1NGViNGY0Zjg1OWI4MzVhMGMwNGM2ZmNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKQEAgLTIw
OSw2ICsyMDksMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBp
Z25vcmVUTFNFcnJvcnMpCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNT
TEVycm9ycyhpZ25vcmVUTFNFcnJvcnMpOwogfQogCit2b2lkIFdlYlByb2Nlc3M6OnNldFVzZVBl
cnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZShib29sIHVzZVBlcnNpc3RlbnRDcmVkZW50aWFsU3Rv
cmFnZSkKK3sKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0VXNlUGVyc2lzdGVudENy
ZWRlbnRpYWxTdG9yYWdlKHVzZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZSk7Cit9CisKICNp
ZiAhRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViUHJvY2Vzczo6YWxsb3dTcGVjaWZp
Y0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiBj
ZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkKIHsK
</data>
<flag name="review"
          id="238256"
          type_id="1"
          status="-"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>