<?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>98885</bug_id>
          
          <creation_ts>2012-10-10 04:40:34 -0700</creation_ts>
          <short_desc>[GTK] It should be possible to disable favicons in WebKit2 GTK+ API</short_desc>
          <delta_ts>2012-10-11 02:32:50 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>agomez</cc>
    
    <cc>gustavo</cc>
    
    <cc>mario</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>738839</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-10 04:40:34 -0700</bug_when>
    <thetext>The current API always uses favicons unconditionally. The thing is that in WebKit2 it&apos;s not possible to close the icon database and open it again with a different patch, so we designed the API with that approach. However, I don&apos;t why is that limitation but it might change. So the idea was that when you call webkit_web_context_get_favicon_databse(), it&apos;s created automatically and, if the favicon database path hasn&apos;t been called the default one will be used. WebKitWebView always calls webkit_web_context_get_favicon_databse() to implement the favicon property, so we always end up with a favicon database. The idea was that if apps are not interested in favicons, thay can simply ignore the favicon property of the web view, but the thing is that favicons cause an overload and other side effects (like having one subresource more loaded) that could be avoided if the app is not interested in the favicons. 

So, I think we should switch to an API were the user has to explicitly enable the favicon database, but that would allow us to implement reopne if it&apos;s eventually supported. So I think we could do something like this:

We keep the methods to set/get the favicons directory path:

void webkit_web_context_set_favicon_database_directory()

When it receives NULL the default database path will be used. This creates the favicon database if needed and sets the path. If the database is open it does nothing.

gchar *webkit_web_context_get_favicon_database_directory()

Returns NULL unless webkit_web_context_set_favicon_database_directory has been called.

WebKitFaviconDatabase *webkit_web_context_get_favicon_database()

Creates the favicon database if it doesn&apos;t exist, but it doesn&apos;t set the path.

So, to enable the favicons, the user needs to call webkit_web_context_set_favicon_database_directory(). If it hans&apos;t been called, web view will use the database, that will return WEBKIT_FAVICON_DATABASE_ERROR_NOT_INITIALIZED every time it&apos;s asked for the favicon. This way the favicon database will never emit the favicon-changed signal and web view won&apos;t emit notify::favicon. In the worst case we have a WebKitFaviconDatabase object that does nothing but we don&apos;t need special case when the database is not open, and the web view code will be the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738850</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-10 05:06:38 -0700</bug_when>
    <thetext>Btw, with this we wouldn&apos;t need a fix for https://bugs.webkit.org/show_bug.cgi?id=98185 because favicons will be disabled for all unit tests except the favicons one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738899</commentid>
    <comment_count>2</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-10-10 06:29:20 -0700</bug_when>
    <thetext>I agree with the idea, yet I have some comments about the specific implementation for it. See them below...

(In reply to comment #0)
&gt; [...]
&gt; So, to enable the favicons, the user needs to call 
&gt; webkit_web_context_set_favicon_database_directory(). If it hans&apos;t been called,
&gt; web view will use the database, that will return
&gt; WEBKIT_FAVICON_DATABASE_ERROR_NOT_INITIALIZED every time it&apos;s asked for the
&gt; favicon. 

If we are going to force that calling to this method is necessary to enable the favicon database (will be disabled by default) and this method will only do stuff make sense if called once, then I think it would make sense to rename it to something like this:

  void webkit_web_context_initialize_favicon_database(const char* path);

This would be also more consistent with the NOT_INITIALIZED error that would be issuing when trying to use the icon database before calling this method.

In case we wanted to support re-setting the path of the database later on (once it&apos;s allowed in WK2), it would be as easy as adding the method webkit_web_context_set_database_directory() again, which would do something like this:

  1. Close the current IconDatabase
  2. Set the path as the new directory to be used
  3. Open the IconDatabase again.

&gt; This way the favicon database will never emit the favicon-changed
&gt; signal and web view won&apos;t emit notify::favicon. In the worst case we have a
&gt; WebKitFaviconDatabase object that does nothing but we don&apos;t need special
&gt; case when the database is not open, and the web view code will be the same.

Yes. Makes perfect sense to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738900</commentid>
    <comment_count>3</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-10-10 06:31:03 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Btw, with this we wouldn&apos;t need a fix for https://bugs.webkit.org/show_bug.cgi?id=98185 because favicons will be disabled for all unit tests except the favicons one.

Agreed, but let&apos;s keep it open in the meanwhile. You know... just in case :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738952</commentid>
    <comment_count>4</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-10-10 08:00:17 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I agree with the idea, yet I have some comments about the specific 
&gt; implementation for it. See them below...

Forget about those comments. I realized that what you&apos;re suggesting is slightly different from what I&apos;ve understood: you&apos;re proposing to decouple the process of creating the WebKitFaviconDatabase (which would happen both in get_favicon_database() and set_favicon_database_directory(), when needed) from the process of opening the IconDatabase, which would only happen in set_favicon_database_directory().

This way, one could call get_favicon_database() as many times as needed but it would not cause any effect until a call (and only) to set_favicon_database_directory() was invoked.

I&apos;m already working on a patch for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738981</commentid>
    <comment_count>5</comment_count>
      <attachid>168005</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-10-10 08:37:47 -0700</bug_when>
    <thetext>Created attachment 168005
Patch proposal

Here comes the patch, implementing Carlos&apos;s original idea (not my rants)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738982</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 08:40:31 -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>738983</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 08:40:48 -0700</bug_when>
    <thetext>Attachment 168005 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:363:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:364:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739656</commentid>
    <comment_count>8</comment_count>
      <attachid>168005</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-11 00:14:51 -0700</bug_when>
    <thetext>Comment on attachment 168005
Patch proposal

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

Please test this new behaviour in the unit tests.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:339
&gt; + * called only once. Further calls for the same instance of
&gt; + * #WebKitWebContext after calling won&apos;t cause any effect.

after calling what?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:350
&gt; +    // Nothing to do if the database is already open.
&gt; +    WebIconDatabase* iconDatabase = priv-&gt;context-&gt;iconDatabase();
&gt; +    if (iconDatabase-&gt;isOpen())
&gt; +        return;

I think the code is explicit enough, it returns early if the database is open, so I would remove the obvious comment.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:353
&gt; +    if (!priv-&gt;faviconDatabase)
&gt; +        priv-&gt;faviconDatabase = adoptGRef(webkitFaviconDatabaseCreate(iconDatabase));

I prefer a single point where the database is created. Also I would move the setIconDatabasePath to WebKitFaviconDatabase using a private method. So you can remove this here and below call something like

webkitFaviconDatabaseSetPath(webkit_web_context_get_favicon_database(context), faviconDatabasePath.get());

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:355
&gt; +    // Use default if 0 is passed as parameter.

We can use NULL in the comments, the style bot won&apos;t complain fortunately :-)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:404
&gt; + * Get the #WebKitFaviconDatabase associated with @context, but you
&gt; + * need to call webkit_web_context_set_favicon_database_directory()
&gt; + * once, either before or after calling this function, to actually
&gt; + * enable the support for favicons.

Instead of but you . . . I would simply explain in another sentence that the database is not open/enable until a directory has been set.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitFaviconDatabase.cpp:43
&gt; -        if (!g_str_equal(webkit_web_context_get_favicon_database_directory(m_webContext), kTempDirectory))
&gt; +        if (g_strcmp0(webkit_web_context_get_favicon_database_directory(m_webContext), kTempDirectory))
&gt;              webkit_web_context_set_favicon_database_directory(m_webContext, kTempDirectory);

I think we don&apos;t need to do this here now, it can be done again in the set-directory test. I would also add a test before setting the directory that asks for an icon to check that the database is not open error is returned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739659</commentid>
    <comment_count>9</comment_count>
      <attachid>168005</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-11 00:20:24 -0700</bug_when>
    <thetext>Comment on attachment 168005
Patch proposal

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:353
&gt;&gt; +        priv-&gt;faviconDatabase = adoptGRef(webkitFaviconDatabaseCreate(iconDatabase));
&gt; 
&gt; I prefer a single point where the database is created. Also I would move the setIconDatabasePath to WebKitFaviconDatabase using a private method. So you can remove this here and below call something like
&gt; 
&gt; webkitFaviconDatabaseSetPath(webkit_web_context_get_favicon_database(context), faviconDatabasePath.get());

Oh, I see, the setIconDatabasePath is in web context, so it&apos;s better to do it here, for get this comment, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739710</commentid>
    <comment_count>10</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-10-11 01:29:56 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 168005 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=168005&amp;action=review
&gt; 
&gt; Please test this new behaviour in the unit tests.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:339
&gt; &gt; + * called only once. Further calls for the same instance of
&gt; &gt; + * #WebKitWebContext after calling won&apos;t cause any effect.
&gt; 
&gt; after calling what?

Bad wording. It should be:

 &quot;Further calls for the same instance of #WebKitWebContext after calling won&apos;t cause any effect.&quot;

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:350
&gt; &gt; +    // Nothing to do if the database is already open.
&gt; &gt; +    WebIconDatabase* iconDatabase = priv-&gt;context-&gt;iconDatabase();
&gt; &gt; +    if (iconDatabase-&gt;isOpen())
&gt; &gt; +        return;
&gt; 
&gt; I think the code is explicit enough, it returns early if the database is open, so I would remove the obvious comment.

Agreed. Removed

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:353
&gt; &gt; +    if (!priv-&gt;faviconDatabase)
&gt; &gt; +        priv-&gt;faviconDatabase = adoptGRef(webkitFaviconDatabaseCreate(iconDatabase));
&gt; 
&gt; I prefer a single point where the database is created.

Ok.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:355
&gt; &gt; +    // Use default if 0 is passed as parameter.
&gt; 
&gt; We can use NULL in the comments, the style bot won&apos;t complain fortunately :-)

Actually, it will complain:

Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:361:  Use 0 or null instead of NULL (even in *comments*).  [readability/null] [4]

We can enter the discussion on whether that makes sense or not, but it currently complains, so I would leave the 0 there.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:404
&gt; &gt; + * Get the #WebKitFaviconDatabase associated with @context, but you
&gt; &gt; + * need to call webkit_web_context_set_favicon_database_directory()
&gt; &gt; + * once, either before or after calling this function, to actually
&gt; &gt; + * enable the support for favicons.
&gt; 
&gt; Instead of but you . . . I would simply explain in another sentence that the database is not open/enable until a directory has been set.

Ok. Changed.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitFaviconDatabase.cpp:43
&gt; &gt; -        if (!g_str_equal(webkit_web_context_get_favicon_database_directory(m_webContext), kTempDirectory))
&gt; &gt; +        if (g_strcmp0(webkit_web_context_get_favicon_database_directory(m_webContext), kTempDirectory))
&gt; &gt;              webkit_web_context_set_favicon_database_directory(m_webContext, kTempDirectory);
&gt; 
&gt; I think we don&apos;t need to do this here now, it can be done again in the set-directory test. I would also add a test before setting the directory that asks for an icon to check that the database is not open error is returned.

Ok. Will do in a follow up patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739720</commentid>
    <comment_count>11</comment_count>
      <attachid>168171</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-10-11 01:54:04 -0700</bug_when>
    <thetext>Created attachment 168171
Patch proposal

New patch addressing the issues pointed out by Carlos</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739722</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-11 01:55:51 -0700</bug_when>
    <thetext>Attachment 168171 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:369:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:370:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739731</commentid>
    <comment_count>13</comment_count>
      <attachid>168171</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-11 02:05:22 -0700</bug_when>
    <thetext>Comment on attachment 168171
Patch proposal

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:407
&gt; + * Get the #WebKitFaviconDatabase associated with @context

@context.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:412
&gt; + * Notice that this method simply returns the #WebKitFaviconDatabase,
&gt; + * but doesn&apos;t enable the database. To enable it you will still need to
&gt; + * call webkit_web_context_set_favicon_database_directory() at least
&gt; + * once, either before or after calling this method.

I think I would avoid using enable/disable, because the error you get from the favicon database is NOT_INITIALIZED. I would simplify this by something like. 

&quot;To initialize the database you need to call webkit_web_context_set_favicon_database_directory().&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739746</commentid>
    <comment_count>14</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-10-11 02:32:50 -0700</bug_when>
    <thetext>Committed r131033: &lt;http://trac.webkit.org/changeset/131033&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168005</attachid>
            <date>2012-10-10 08:37:47 -0700</date>
            <delta_ts>2012-10-11 01:54:04 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2012-10-10-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>11062</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAxMzYyNDIyOWZjNDQ4Y2UyOGMxOWEyN2M2NTNmNGNhYWU3OGM5MDMyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBXZWQsIDEwIE9jdCAyMDEyIDE3OjA3OjA4ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMi0xMC0xMCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHVEtdIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBkaXNhYmxlIGZhdmljb25z
IGluIFdlYktpdDIgR1RLKyBBUEkKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTg4ODUKCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgog
ICAgICAgIE1ha2Ugc3VwcG9ydCBmb3IgZmF2aWNvbnMgaW4gV2ViS2l0MkdUSysgZGlzYWJsZWQg
YnkgZGVmYXVsdCwgYW5kCiAgICAgICAgYWxsb3cgZW5hYmxpbmcgaXQgZXZlbiBhZnRlciBjYWxs
aW5nIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZSgpLAogICAgICAgIGJ5
IGRlY291cGxpbmcgb3BlbmluZyB0aGUgSWNvbkRhdGFiYXNlLCB3aGljaCB3aWxsIGhhcHBlbiB3
aGVuCiAgICAgICAgc2V0dGluZyB0aGUgcGF0aCBmb3IgdGhlIGRhdGFiYXNlIGRpcmVjdG9yeSwg
ZnJvbSBjcmVhdGluZyB0aGUKICAgICAgICBpbnN0YW5jZSBvZiBXZWJLaXRGYXZpY29uRGF0YWJh
c2UgZnJvbSBXZWJLaXRXZWJDb250ZXh0LgoKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwOgogICAgICAgIChfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUpOiBS
ZW5hbWVkIGZhdmljb25EYXRhYmFzZVBhdGggdG8gZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5Owog
ICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5
KTogVXNlIHRoZQogICAgICAgIGRlZmF1bHQgcGF0aCBpZiBOVUxMIGlzIHBhc3NlZCwgb3IgdGhl
IHNwZWNpZmllZCBvbmUsIGNyZWF0aW5nIHRoZQogICAgICAgIGRhdGFiYXNlIGlmIG5lZWRlZCBh
bmQgb3BlbmluZyBpdCBieSBzZXR0aW5nIGl0J3MgcGF0aC4gSWYgdGhlCiAgICAgICAgZGF0YWJh
c2UgaXMgYWxyZWFkeSBvcGVuIHRoaXMgbWV0aG9kIGRvZXMgbm90aGluZy4KICAgICAgICAod2Vi
a2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeSk6IFJldHVybiB0
aGUKICAgICAgICBwYXRoIG9yIE5VTEwgaWYgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29u
X2RhdGFiYXNlX2RpcmVjdG9yeQogICAgICAgIGhhcyBub3QgYmVlbiBjYWxsZWQgeWV0LgogICAg
ICAgICh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2UpOiBSZXR1cm4gdGhl
IGluc3RhbmNlIG9mCiAgICAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlLCBvciBjcmVhdGUgaXQg
aWYgaXQgZG9lc24ndCBleGlzdCB5ZXQsIGJ1dAogICAgICAgIG5ldmVyIHNldCB0aGUgcGF0aCAo
d291bGQgY2F1c2UgdGhlIGljb24gZGF0YWJhc2UgdG8gYmUgb3BlbmVkKS4KCiAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDogVXNl
CiAgICAgICAgZ19zdHJjbXAwIGluc3RlYWQgb2YgZ19zdHJfZXF1YWwgdG8gcHJvcGVybHkgZGVh
bCB3aXRoIE5VTExzLgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgMjkgKysrKysrKysKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuY3BwIHwgODYgKysrKysrKysrKysrLS0tLS0tLS0tLQogLi4uL0FQ
SS9ndGsvdGVzdHMvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAgICAgfCAgMiArLQogMyBm
aWxlcyBjaGFuZ2VkLCA3NiBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggMDlkZTY2NC4uZTVjNzA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEy
LTEwLTEwICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1RLXSBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gZGlzYWJsZSBmYXZpY29ucyBpbiBX
ZWJLaXQyIEdUSysgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05ODg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2Ugc3VwcG9ydCBmb3IgZmF2aWNvbnMgaW4gV2ViS2l0MkdUSysgZGlzYWJsZWQg
YnkgZGVmYXVsdCwgYW5kCisgICAgICAgIGFsbG93IGVuYWJsaW5nIGl0IGV2ZW4gYWZ0ZXIgY2Fs
bGluZyB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2UoKSwKKyAgICAgICAg
YnkgZGVjb3VwbGluZyBvcGVuaW5nIHRoZSBJY29uRGF0YWJhc2UsIHdoaWNoIHdpbGwgaGFwcGVu
IHdoZW4KKyAgICAgICAgc2V0dGluZyB0aGUgcGF0aCBmb3IgdGhlIGRhdGFiYXNlIGRpcmVjdG9y
eSwgZnJvbSBjcmVhdGluZyB0aGUKKyAgICAgICAgaW5zdGFuY2Ugb2YgV2ViS2l0RmF2aWNvbkRh
dGFiYXNlIGZyb20gV2ViS2l0V2ViQ29udGV4dC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAoX1dlYktpdFdlYkNvbnRleHRQcml2
YXRlKTogUmVuYW1lZCBmYXZpY29uRGF0YWJhc2VQYXRoIHRvIGZhdmljb25EYXRhYmFzZURpcmVj
dG9yeTsKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9k
aXJlY3RvcnkpOiBVc2UgdGhlCisgICAgICAgIGRlZmF1bHQgcGF0aCBpZiBOVUxMIGlzIHBhc3Nl
ZCwgb3IgdGhlIHNwZWNpZmllZCBvbmUsIGNyZWF0aW5nIHRoZQorICAgICAgICBkYXRhYmFzZSBp
ZiBuZWVkZWQgYW5kIG9wZW5pbmcgaXQgYnkgc2V0dGluZyBpdCdzIHBhdGguIElmIHRoZQorICAg
ICAgICBkYXRhYmFzZSBpcyBhbHJlYWR5IG9wZW4gdGhpcyBtZXRob2QgZG9lcyBub3RoaW5nLgor
ICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9y
eSk6IFJldHVybiB0aGUKKyAgICAgICAgcGF0aCBvciBOVUxMIGlmIHdlYmtpdF93ZWJfY29udGV4
dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkKKyAgICAgICAgaGFzIG5vdCBiZWVuIGNh
bGxlZCB5ZXQuCisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJh
c2UpOiBSZXR1cm4gdGhlIGluc3RhbmNlIG9mCisgICAgICAgIFdlYktpdEZhdmljb25EYXRhYmFz
ZSwgb3IgY3JlYXRlIGl0IGlmIGl0IGRvZXNuJ3QgZXhpc3QgeWV0LCBidXQKKyAgICAgICAgbmV2
ZXIgc2V0IHRoZSBwYXRoICh3b3VsZCBjYXVzZSB0aGUgaWNvbiBkYXRhYmFzZSB0byBiZSBvcGVu
ZWQpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHA6IFVzZQorICAgICAgICBnX3N0cmNtcDAgaW5zdGVhZCBvZiBnX3N0cl9l
cXVhbCB0byBwcm9wZXJseSBkZWFsIHdpdGggTlVMTHMuCisKIDIwMTItMTAtMTAgIE1pa2hhaWwg
UG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgW0VG
TF1bV0syXSBBZGQgSGlzdG9yeSBjYWxsYmFja3MgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGZlN2VhODEu
LmYwYTQwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RydWN0IF9XZWJLaXRX
ZWJDb250ZXh0UHJpdmF0ZSB7CiAjaWYgRU5BQkxFKFNQRUxMQ0hFQ0spCiAgICAgT3duUHRyPFdl
YktpdFRleHRDaGVja2VyPiB0ZXh0Q2hlY2tlcjsKICNlbmRpZgotICAgIENTdHJpbmcgZmF2aWNv
bkRhdGFiYXNlUGF0aDsKKyAgICBDU3RyaW5nIGZhdmljb25EYXRhYmFzZURpcmVjdG9yeTsKIH07
CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTMzMyw2
MCArMzMzLDc1IEBAIFdlYktpdENvb2tpZU1hbmFnZXIqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
Y29va2llX21hbmFnZXIoV2ViS2l0V2ViQ29udGV4dCogY29uCiAgKiBmb3IgQGNvbnRleHQgb24g
ZGlzay4gUGFzc2luZyAlTlVMTCBhcyBAcGF0aCBtZWFucyB1c2luZyB0aGUKICAqIGRlZmF1bHQg
ZGlyZWN0b3J5IGZvciB0aGUgcGxhdGZvcm0gKHNlZSBnX2dldF91c2VyX2RhdGFfZGlyKCkpLgog
ICoKLSAqIElmIHlvdSB3YW50IHRvIHVzZSBhIGRpZmZlcmVudCBwYXRoIGZvciB0aGUgZmF2aWNv
biBkYXRhYmFzZSwgdGhpcwotICogbWV0aG9kIG11c3QgYmUgY2FsbGVkIGJlZm9yZSB0aGUgZGF0
YWJhc2UgaXMgY3JlYXRlZCBieQotICogd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2Rh
dGFiYXNlKCkuIE5vdGUgdGhhdCBhCi0gKiAjV2ViS2l0V2ViVmlldyBjb3VsZCB1c2UgdGhlIGZh
dmljb24gZGF0YWJhc2UsIHNvIHRoaXMgc2hvdWxkIGFsc28KLSAqIGJlIGNhbGxlZCBiZWZvcmUg
bG9hZGluZyBhbnkgd2ViIHBhZ2UuCi0gKgotICogVGhpcyBmdW5jdGlvbiBpcyBleHBlY3RlZCB0
byBiZSBjYWxsZWQgb25seSBvbmNlLCBmdXJ0aGVyIGNhbGxzIGZvcgotICogdGhlIHNhbWUgaW5z
dGFuY2Ugb2YgI1dlYktpdFdlYkNvbnRleHQgYWZ0ZXIgY2FsbGluZwotICogd2Via2l0X3dlYl9j
b250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlKCkgd29uJ3QgY2F1c2UgYW55IGVmZmVjdC4KKyAq
IENhbGxpbmcgdGhpcyBtZXRob2QgYWxzbyBtZWFucyBlbmFibGluZyB0aGUgZmF2aWNvbnMgZGF0
YWJhc2UgZm9yCisgKiBpdHMgdXNlIGZyb20gdGhlIGFwcGxpY2F0aW9ucywgc28gdGhhdCdzIHdo
eSBpdCdzIGV4cGVjdGVkIHRvIGJlCisgKiBjYWxsZWQgb25seSBvbmNlLiBGdXJ0aGVyIGNhbGxz
IGZvciB0aGUgc2FtZSBpbnN0YW5jZSBvZgorICogI1dlYktpdFdlYkNvbnRleHQgYWZ0ZXIgY2Fs
bGluZyB3b24ndCBjYXVzZSBhbnkgZWZmZWN0LgogICovCiB2b2lkIHdlYmtpdF93ZWJfY29udGV4
dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCwgY29uc3QgZ2NoYXIqIHBhdGgpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX0NPTlRFWFQoY29udGV4dCkpOwotICAgIC8vIENhbGxpbmcgdGhpcyBtZXRob2QgdHdpY2Ug
aXMgYSBwcm9ncmFtbWluZyBlcnJvci4KLSAgICBnX3JldHVybl9pZl9mYWlsKCFjb250ZXh0LT5w
cml2LT5mYXZpY29uRGF0YWJhc2UpOwogCi0gICAgaWYgKHBhdGgpCi0gICAgICAgIGNvbnRleHQt
PnByaXYtPmZhdmljb25EYXRhYmFzZVBhdGggPSBXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKHBh
dGgpLnV0ZjgoKTsKKyAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IGNvbnRleHQt
PnByaXY7CisKKyAgICAvLyBOb3RoaW5nIHRvIGRvIGlmIHRoZSBkYXRhYmFzZSBpcyBhbHJlYWR5
IG9wZW4uCisgICAgV2ViSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2UgPSBwcml2LT5jb250ZXh0
LT5pY29uRGF0YWJhc2UoKTsKKyAgICBpZiAoaWNvbkRhdGFiYXNlLT5pc09wZW4oKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFwcml2LT5mYXZpY29uRGF0YWJhc2UpCisgICAgICAgIHBy
aXYtPmZhdmljb25EYXRhYmFzZSA9IGFkb3B0R1JlZih3ZWJraXRGYXZpY29uRGF0YWJhc2VDcmVh
dGUoaWNvbkRhdGFiYXNlKSk7CisKKyAgICAvLyBVc2UgZGVmYXVsdCBpZiAwIGlzIHBhc3NlZCBh
cyBwYXJhbWV0ZXIuCisgICAgU3RyaW5nIGRpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpmaWxlbmFt
ZVRvU3RyaW5nKHBhdGgpOworICAgIHByaXYtPmZhdmljb25EYXRhYmFzZURpcmVjdG9yeSA9IGRp
cmVjdG9yeVBhdGguaXNFbXB0eSgpCisgICAgICAgID8gcHJpdi0+Y29udGV4dC0+aWNvbkRhdGFi
YXNlUGF0aCgpLnV0ZjgoKQorICAgICAgICA6IGRpcmVjdG9yeVBhdGgudXRmOCgpOworCisgICAg
Ly8gQnVpbGQgdGhlIGZ1bGwgcGF0aCB0byB0aGUgaWNvbiBkYXRhYmFzZSBmaWxlIG9uIGRpc2su
CisgICAgR093blB0cjxnY2hhcj4gZmF2aWNvbkRhdGFiYXNlUGF0aChnX2J1aWxkX2ZpbGVuYW1l
KHByaXYtPmZhdmljb25EYXRhYmFzZURpcmVjdG9yeS5kYXRhKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6Okljb25EYXRh
YmFzZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSk7CisK
KyAgICAvLyBDYWxsaW5nIHRoZSBzZXR0ZXIgaW4gV2ViQ29udGV4dCB3aWxsIGNhdXNlIHRoZSBp
Y29uIGRhdGFiYXNlIHRvIGJlIG9wZW5lZC4KKyAgICBwcml2LT5jb250ZXh0LT5zZXRJY29uRGF0
YWJhc2VQYXRoKFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoZmF2aWNvbkRhdGFiYXNlUGF0aC5n
ZXQoKSkpOwogfQogCiAvKioKLSAqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRh
YmFzZV9wYXRoOgorICogd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlX2Rp
cmVjdG9yeToKICAqIEBjb250ZXh0OiBhICNXZWJLaXRXZWJDb250ZXh0CiAgKgogICogR2V0IHRo
ZSBkaXJlY3RvcnkgcGF0aCBiZWluZyB1c2VkIHRvIHN0b3JlIHRoZSBmYXZpY29ucyBkYXRhYmFz
ZQotICogZm9yIEBjb250ZXh0LiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiB0aGUg
c2FtZSBwYXRoIGFmdGVyCi0gKiBoYXZpbmcgY2FsbGVkIHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
ZmF2aWNvbl9kYXRhYmFzZSgpIGZvciB0aGUKLSAqIGZpcnN0IHRpbWUuIFNlZSB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5KCkKLSAqIGZvciBtb3JlIGRl
dGFpbHMuCisgKiBmb3IgQGNvbnRleHQsIG9yICVOVUxMIGlmCisgKiB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5KCkgaGFzbid0IGJlZW4KKyAqIGNhbGxl
ZCB5ZXQuCisgKgorICogVGhpcyBmdW5jdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUg
cGF0aCBhZnRlciBoYXZpbmcgY2FsbGVkCisgKiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmlj
b25fZGF0YWJhc2VfZGlyZWN0b3J5KCkgZm9yIHRoZSBmaXJzdAorICogdGltZS4KICAqCiAgKiBS
ZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IHRoZSBwYXRoIG9mIHRoZSBkaXJlY3Rvcnkgb2YgdGhl
IGZhdmljb25zCi0gKiBkYXRhYmFzZSBhc3NvY2lhdGVkIHdpdGggQGNvbnRleHQuCisgKiBkYXRh
YmFzZSBhc3NvY2lhdGVkIHdpdGggQGNvbnRleHQsIG9yICVOVUxMLgogICovCiBjb25zdCBnY2hh
ciogd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJL
aXRXZWJDb250ZXh0ICpjb250ZXh0KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSwgMCk7CiAKICAgICBXZWJLaXRXZWJDb250ZXh0UHJp
dmF0ZSogcHJpdiA9IGNvbnRleHQtPnByaXY7Ci0gICAgLy8gVXNlIGRlZmF1bHQgaWYgYSBkaWZm
ZXJlbnQgcGF0aCBoYXMgbm90IGJlZW4gcHJldmlvdXNseSBzZXQuCi0gICAgaWYgKHByaXYtPmZh
dmljb25EYXRhYmFzZVBhdGguaXNOdWxsKCkpCi0gICAgICAgIHByaXYtPmZhdmljb25EYXRhYmFz
ZVBhdGggPSBwcml2LT5jb250ZXh0LT5pY29uRGF0YWJhc2VQYXRoKCkudXRmOCgpOworICAgIGlm
IChwcml2LT5mYXZpY29uRGF0YWJhc2VEaXJlY3RvcnkuaXNOdWxsKCkpCisgICAgICAgIHJldHVy
biAwOwogCi0gICAgcmV0dXJuIHByaXYtPmZhdmljb25EYXRhYmFzZVBhdGguZGF0YSgpOworICAg
IHJldHVybiBwcml2LT5mYXZpY29uRGF0YWJhc2VEaXJlY3RvcnkuZGF0YSgpOwogfQogCiAvKioK
ICAqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZToKICAqIEBjb250ZXh0
OiBhICNXZWJLaXRXZWJDb250ZXh0CiAgKgotICogR2V0IHRoZSAjV2ViS2l0RmF2aWNvbkRhdGFi
YXNlIGFzc29jaWF0ZWQgd2l0aCBAY29udGV4dC4gSWYgeW91Ci0gKiB3YW50IHRoZSBkYXRhYmFz
ZSB0byBiZSBzdG9yZWQgaW4gYSBkaXJlY3Rvcnkgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdAotICog
b25lLCB5b3UgbmVlZCB0byBjYWxsCi0gKiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25f
ZGF0YWJhc2VfZGlyZWN0b3J5KCkgYmVmb3JlIHRoZSBmaXJzdAotICogdGltZSB5b3UgdXNlIHRo
aXMgZnVuY3Rpb24uCisgKiBHZXQgdGhlICNXZWJLaXRGYXZpY29uRGF0YWJhc2UgYXNzb2NpYXRl
ZCB3aXRoIEBjb250ZXh0LCBidXQgeW91CisgKiBuZWVkIHRvIGNhbGwgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeSgpCisgKiBvbmNlLCBlaXRoZXIgYmVm
b3JlIG9yIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgdG8gYWN0dWFsbHkKKyAqIGVuYWJs
ZSB0aGUgc3VwcG9ydCBmb3IgZmF2aWNvbnMuCiAgKgogICogUmV0dXJuczogKHRyYW5zZmVyIG5v
bmUpOiB0aGUgI1dlYktpdEZhdmljb25EYXRhYmFzZSBvZiBAY29udGV4dC4KICAqLwpAQCAtMzk1
LDE3ICs0MTAsOCBAQCBXZWJLaXRGYXZpY29uRGF0YWJhc2UqIHdlYmtpdF93ZWJfY29udGV4dF9n
ZXRfZmF2aWNvbl9kYXRhYmFzZShXZWJLaXRXZWJDb250ZXh0KgogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSwgMCk7CiAKICAgICBXZWJLaXRX
ZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IGNvbnRleHQtPnByaXY7Ci0gICAgaWYgKHByaXYtPmZh
dmljb25EYXRhYmFzZSkKLSAgICAgICAgcmV0dXJuIHByaXYtPmZhdmljb25EYXRhYmFzZS5nZXQo
KTsKLQotICAgIC8vIEJ1aWxkIHRoZSBmdWxsIHBhdGggdG8gdGhlIGljb24gZGF0YWJhc2UgZmls
ZSBvbiBkaXNrLgotICAgIEdPd25QdHI8Z2NoYXI+IGZhdmljb25EYXRhYmFzZVBhdGgoZ19idWls
ZF9maWxlbmFtZSh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0
b3J5KGNvbnRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVu
YW1lKCkudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCkpOwotCi0gICAgLy8gQ2FsbGluZyB0aGUgc2V0dGVy
IGluIFdlYkNvbnRleHQgd2lsbCBjYXVzZSB0aGUgaWNvbiBkYXRhYmFzZSB0byBiZSBvcGVuZWQu
Ci0gICAgcHJpdi0+Y29udGV4dC0+c2V0SWNvbkRhdGFiYXNlUGF0aChXZWJDb3JlOjpmaWxlbmFt
ZVRvU3RyaW5nKGZhdmljb25EYXRhYmFzZVBhdGguZ2V0KCkpKTsKLSAgICBwcml2LT5mYXZpY29u
RGF0YWJhc2UgPSBhZG9wdEdSZWYod2Via2l0RmF2aWNvbkRhdGFiYXNlQ3JlYXRlKHByaXYtPmNv
bnRleHQtPmljb25EYXRhYmFzZSgpKSk7CisgICAgaWYgKCFwcml2LT5mYXZpY29uRGF0YWJhc2Up
CisgICAgICAgIHByaXYtPmZhdmljb25EYXRhYmFzZSA9IGFkb3B0R1JlZih3ZWJraXRGYXZpY29u
RGF0YWJhc2VDcmVhdGUocHJpdi0+Y29udGV4dC0+aWNvbkRhdGFiYXNlKCkpKTsKIAogICAgIHJl
dHVybiBwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRG
YXZpY29uRGF0YWJhc2UuY3BwCmluZGV4IDMxMzI1NGQuLjljYzNiNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRGYXZpY29uRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rl
c3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgLCBtX2ljb25SZWFkeVNpZ25hbFJlY2VpdmVkKGZhbHNlKQogICAgICAgICAsIG1fZmF2
aWNvbk5vdGlmaWNhdGlvblJlY2VpdmVkKGZhbHNlKQogICAgIHsKLSAgICAgICAgaWYgKCFnX3N0
cl9lcXVhbCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5
KG1fd2ViQ29udGV4dCksIGtUZW1wRGlyZWN0b3J5KSkKKyAgICAgICAgaWYgKGdfc3RyY21wMCh3
ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5KG1fd2ViQ29u
dGV4dCksIGtUZW1wRGlyZWN0b3J5KSkKICAgICAgICAgICAgIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkobV93ZWJDb250ZXh0LCBrVGVtcERpcmVjdG9y
eSk7CiAKICAgICAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdlYmtpdF93
ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZShtX3dlYkNvbnRleHQpOwotLSAKMS43LjEx
LjQKCg==
</data>
<flag name="review"
          id="180865"
          type_id="1"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168171</attachid>
            <date>2012-10-11 01:54:04 -0700</date>
            <delta_ts>2012-10-11 02:05:22 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2012-10-11-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>13609</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA5MzVkZWExNzc5OGU5ZGUzYjYyNGIyMmIyOGU0NDgxMzJhZWFlODIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBXZWQsIDEwIE9jdCAyMDEyIDE3OjA3OjA4ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMi0xMC0xMSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHVEtdIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBkaXNhYmxlIGZhdmljb25z
IGluIFdlYktpdDIgR1RLKyBBUEkKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTg4ODUKCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgog
ICAgICAgIE1ha2Ugc3VwcG9ydCBmb3IgZmF2aWNvbnMgaW4gV2ViS2l0MkdUSysgZGlzYWJsZWQg
YnkgZGVmYXVsdCwgYW5kCiAgICAgICAgYWxsb3cgZW5hYmxpbmcgaXQgZXZlbiBhZnRlciBjYWxs
aW5nIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZSgpLAogICAgICAgIGJ5
IGRlY291cGxpbmcgb3BlbmluZyB0aGUgSWNvbkRhdGFiYXNlLCB3aGljaCB3aWxsIGhhcHBlbiB3
aGVuCiAgICAgICAgc2V0dGluZyB0aGUgcGF0aCBmb3IgdGhlIGRhdGFiYXNlIGRpcmVjdG9yeSwg
ZnJvbSBjcmVhdGluZyB0aGUKICAgICAgICBpbnN0YW5jZSBvZiBXZWJLaXRGYXZpY29uRGF0YWJh
c2UgZnJvbSBXZWJLaXRXZWJDb250ZXh0LgoKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwOgogICAgICAgIChfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUpOiBS
ZW5hbWVkIGZhdmljb25EYXRhYmFzZVBhdGggdG8KICAgICAgICBmYXZpY29uRGF0YWJhc2VEaXJl
Y3Rvcnk7CiAgICAgICAgKGVuc3VyZUZhdmljb25EYXRhYmFzZSk6IE1ha2VzIHN1cmUgdGhlcmUn
cyBhbiBpbnN0YW5jZSBvZgogICAgICAgIFdlYktpdEZhdmljb25EYXRhYmFzZSBjcmVhdGVkIGFu
ZCBhc3NvY2lhdGVkIHRvIHRoZSBjb250ZXh0LgogICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5KTogVXNlIHRoZQogICAgICAgIGRlZmF1bHQg
cGF0aCBpZiBOVUxMIGlzIHBhc3NlZCwgb3IgdGhlIHNwZWNpZmllZCBvbmUsIGNyZWF0aW5nIHRo
ZQogICAgICAgIGRhdGFiYXNlIGlmIG5lZWRlZCBhbmQgb3BlbmluZyBpdCBieSBzZXR0aW5nIGl0
J3MgcGF0aC4gSWYgdGhlCiAgICAgICAgZGF0YWJhc2UgaXMgYWxyZWFkeSBvcGVuIHRoaXMgbWV0
aG9kIGRvZXMgbm90aGluZy4KICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29u
X2RhdGFiYXNlX2RpcmVjdG9yeSk6IFJldHVybiB0aGUKICAgICAgICBwYXRoIG9yIE5VTEwgaWYg
d2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeQogICAgICAg
IGhhcyBub3QgYmVlbiBjYWxsZWQgeWV0LgogICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0
X2Zhdmljb25fZGF0YWJhc2UpOiBSZXR1cm4gdGhlIGluc3RhbmNlIG9mCiAgICAgICAgV2ViS2l0
RmF2aWNvbkRhdGFiYXNlLCBvciBjcmVhdGUgaXQgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQsIGJ1
dAogICAgICAgIG5ldmVyIHNldCB0aGUgcGF0aCAod291bGQgY2F1c2UgdGhlIGljb24gZGF0YWJh
c2UgdG8gYmUgb3BlbmVkKS4KCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKICAgICAgICAodGVzdE5vdEluaXRpYWxpemVkKTog
TmV3IHRlc3QgdG8gY2hlY2sgdGhhdCBhIE5PVF9JTklUSUFMSVpFRAogICAgICAgIGVycm9yIGlz
IGdvdCB3aGVuIHVzaW5nIHRoZSBkYXRhYmFzZSBiZWZvcmUgc2V0dGluZyBpdHMgcGF0aC4KICAg
ICAgICAodGVzdFNldERpcmVjdG9yeSk6IENhbGwgc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0
b3J5KCkgaGVyZQogICAgICAgIGluc3RlYWQgb2YgZG9pbmcgaXQgaW4gdGhlIGNvbnN0cnVjdG9y
IG9mIEZhdmljb25EYXRhYmFzZVRlc3QuCiAgICAgICAgKGJlZm9yZUFsbCk6IEFkZCB0ZXN0Tm90
SW5pdGlhbGl6ZWQoKSB0byB0aGUgdGVzdCBzdWl0ZS4KLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM2ICsrKysrKysrCiAuLi4vV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCB8IDk3ICsrKysrKysrKysr
Ky0tLS0tLS0tLS0KIC4uLi9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2Uu
Y3BwICAgIHwgMTQgKysrLQogMyBmaWxlcyBjaGFuZ2VkLCAxMDEgaW5zZXJ0aW9ucygrKSwgNDYg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDA5ZGU2NjQuLmFiZDU3NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzOSBAQAorMjAxMi0xMC0xMSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5j
aGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRv
IGRpc2FibGUgZmF2aWNvbnMgaW4gV2ViS2l0MiBHVEsrIEFQSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg4ODUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHN1cHBvcnQgZm9yIGZhdmljb25zIGlu
IFdlYktpdDJHVEsrIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGFuZAorICAgICAgICBhbGxvdyBlbmFi
bGluZyBpdCBldmVuIGFmdGVyIGNhbGxpbmcgd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29u
X2RhdGFiYXNlKCksCisgICAgICAgIGJ5IGRlY291cGxpbmcgb3BlbmluZyB0aGUgSWNvbkRhdGFi
YXNlLCB3aGljaCB3aWxsIGhhcHBlbiB3aGVuCisgICAgICAgIHNldHRpbmcgdGhlIHBhdGggZm9y
IHRoZSBkYXRhYmFzZSBkaXJlY3RvcnksIGZyb20gY3JlYXRpbmcgdGhlCisgICAgICAgIGluc3Rh
bmNlIG9mIFdlYktpdEZhdmljb25EYXRhYmFzZSBmcm9tIFdlYktpdFdlYkNvbnRleHQuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAg
KF9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSk6IFJlbmFtZWQgZmF2aWNvbkRhdGFiYXNlUGF0aCB0
bworICAgICAgICBmYXZpY29uRGF0YWJhc2VEaXJlY3Rvcnk7CisgICAgICAgIChlbnN1cmVGYXZp
Y29uRGF0YWJhc2UpOiBNYWtlcyBzdXJlIHRoZXJlJ3MgYW4gaW5zdGFuY2Ugb2YKKyAgICAgICAg
V2ViS2l0RmF2aWNvbkRhdGFiYXNlIGNyZWF0ZWQgYW5kIGFzc29jaWF0ZWQgdG8gdGhlIGNvbnRl
eHQuCisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGly
ZWN0b3J5KTogVXNlIHRoZQorICAgICAgICBkZWZhdWx0IHBhdGggaWYgTlVMTCBpcyBwYXNzZWQs
IG9yIHRoZSBzcGVjaWZpZWQgb25lLCBjcmVhdGluZyB0aGUKKyAgICAgICAgZGF0YWJhc2UgaWYg
bmVlZGVkIGFuZCBvcGVuaW5nIGl0IGJ5IHNldHRpbmcgaXQncyBwYXRoLiBJZiB0aGUKKyAgICAg
ICAgZGF0YWJhc2UgaXMgYWxyZWFkeSBvcGVuIHRoaXMgbWV0aG9kIGRvZXMgbm90aGluZy4KKyAg
ICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3Rvcnkp
OiBSZXR1cm4gdGhlCisgICAgICAgIHBhdGggb3IgTlVMTCBpZiB3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5CisgICAgICAgIGhhcyBub3QgYmVlbiBjYWxs
ZWQgeWV0LgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNl
KTogUmV0dXJuIHRoZSBpbnN0YW5jZSBvZgorICAgICAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2Us
IG9yIGNyZWF0ZSBpdCBpZiBpdCBkb2Vzbid0IGV4aXN0IHlldCwgYnV0CisgICAgICAgIG5ldmVy
IHNldCB0aGUgcGF0aCAod291bGQgY2F1c2UgdGhlIGljb24gZGF0YWJhc2UgdG8gYmUgb3BlbmVk
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRGYXZpY29u
RGF0YWJhc2UuY3BwOgorICAgICAgICAodGVzdE5vdEluaXRpYWxpemVkKTogTmV3IHRlc3QgdG8g
Y2hlY2sgdGhhdCBhIE5PVF9JTklUSUFMSVpFRAorICAgICAgICBlcnJvciBpcyBnb3Qgd2hlbiB1
c2luZyB0aGUgZGF0YWJhc2UgYmVmb3JlIHNldHRpbmcgaXRzIHBhdGguCisgICAgICAgICh0ZXN0
U2V0RGlyZWN0b3J5KTogQ2FsbCBzZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoKSBoZXJl
CisgICAgICAgIGluc3RlYWQgb2YgZG9pbmcgaXQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIEZhdmlj
b25EYXRhYmFzZVRlc3QuCisgICAgICAgIChiZWZvcmVBbGwpOiBBZGQgdGVzdE5vdEluaXRpYWxp
emVkKCkgdG8gdGhlIHRlc3Qgc3VpdGUuCisKIDIwMTItMTAtMTAgIE1pa2hhaWwgUG96ZG55YWtv
diAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBB
ZGQgSGlzdG9yeSBjYWxsYmFja3MgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGZlN2VhODEuLmE2ZGE2YjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YkNvbnRleHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0
UHJpdmF0ZSB7CiAjaWYgRU5BQkxFKFNQRUxMQ0hFQ0spCiAgICAgT3duUHRyPFdlYktpdFRleHRD
aGVja2VyPiB0ZXh0Q2hlY2tlcjsKICNlbmRpZgotICAgIENTdHJpbmcgZmF2aWNvbkRhdGFiYXNl
UGF0aDsKKyAgICBDU3RyaW5nIGZhdmljb25EYXRhYmFzZURpcmVjdG9yeTsKIH07CiAKIHN0YXRp
YyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTMyMyw2ICszMjMsMTUg
QEAgV2ViS2l0Q29va2llTWFuYWdlciogd2Via2l0X3dlYl9jb250ZXh0X2dldF9jb29raWVfbWFu
YWdlcihXZWJLaXRXZWJDb250ZXh0KiBjb24KICAgICByZXR1cm4gcHJpdi0+Y29va2llTWFuYWdl
ci5nZXQoKTsKIH0KIAorc3RhdGljIHZvaWQgZW5zdXJlRmF2aWNvbkRhdGFiYXNlKFdlYktpdFdl
YkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYg
PSBjb250ZXh0LT5wcml2OworICAgIGlmIChwcml2LT5mYXZpY29uRGF0YWJhc2UpCisgICAgICAg
IHJldHVybjsKKworICAgIHByaXYtPmZhdmljb25EYXRhYmFzZSA9IGFkb3B0R1JlZih3ZWJraXRG
YXZpY29uRGF0YWJhc2VDcmVhdGUocHJpdi0+Y29udGV4dC0+aWNvbkRhdGFiYXNlKCkpKTsKK30K
KwogLyoqCiAgKiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0
b3J5OgogICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKQEAgLTMzMyw2MCArMzQyLDc0
IEBAIFdlYktpdENvb2tpZU1hbmFnZXIqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfY29va2llX21h
bmFnZXIoV2ViS2l0V2ViQ29udGV4dCogY29uCiAgKiBmb3IgQGNvbnRleHQgb24gZGlzay4gUGFz
c2luZyAlTlVMTCBhcyBAcGF0aCBtZWFucyB1c2luZyB0aGUKICAqIGRlZmF1bHQgZGlyZWN0b3J5
IGZvciB0aGUgcGxhdGZvcm0gKHNlZSBnX2dldF91c2VyX2RhdGFfZGlyKCkpLgogICoKLSAqIElm
IHlvdSB3YW50IHRvIHVzZSBhIGRpZmZlcmVudCBwYXRoIGZvciB0aGUgZmF2aWNvbiBkYXRhYmFz
ZSwgdGhpcwotICogbWV0aG9kIG11c3QgYmUgY2FsbGVkIGJlZm9yZSB0aGUgZGF0YWJhc2UgaXMg
Y3JlYXRlZCBieQotICogd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlKCku
IE5vdGUgdGhhdCBhCi0gKiAjV2ViS2l0V2ViVmlldyBjb3VsZCB1c2UgdGhlIGZhdmljb24gZGF0
YWJhc2UsIHNvIHRoaXMgc2hvdWxkIGFsc28KLSAqIGJlIGNhbGxlZCBiZWZvcmUgbG9hZGluZyBh
bnkgd2ViIHBhZ2UuCi0gKgotICogVGhpcyBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBiZSBjYWxs
ZWQgb25seSBvbmNlLCBmdXJ0aGVyIGNhbGxzIGZvcgotICogdGhlIHNhbWUgaW5zdGFuY2Ugb2Yg
I1dlYktpdFdlYkNvbnRleHQgYWZ0ZXIgY2FsbGluZwotICogd2Via2l0X3dlYl9jb250ZXh0X2dl
dF9mYXZpY29uX2RhdGFiYXNlKCkgd29uJ3QgY2F1c2UgYW55IGVmZmVjdC4KKyAqIENhbGxpbmcg
dGhpcyBtZXRob2QgYWxzbyBtZWFucyBlbmFibGluZyB0aGUgZmF2aWNvbnMgZGF0YWJhc2UgZm9y
CisgKiBpdHMgdXNlIGZyb20gdGhlIGFwcGxpY2F0aW9ucywgc28gdGhhdCdzIHdoeSBpdCdzIGV4
cGVjdGVkIHRvIGJlCisgKiBjYWxsZWQgb25seSBvbmNlLiBGdXJ0aGVyIGNhbGxzIGZvciB0aGUg
c2FtZSBpbnN0YW5jZSBvZgorICogI1dlYktpdFdlYkNvbnRleHQgd29uJ3QgY2F1c2UgYW55IGVm
ZmVjdC4KICAqLwogdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2Vf
ZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGdjaGFyKiBwYXRoKQog
ewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsK
LSAgICAvLyBDYWxsaW5nIHRoaXMgbWV0aG9kIHR3aWNlIGlzIGEgcHJvZ3JhbW1pbmcgZXJyb3Iu
Ci0gICAgZ19yZXR1cm5faWZfZmFpbCghY29udGV4dC0+cHJpdi0+ZmF2aWNvbkRhdGFiYXNlKTsK
IAotICAgIGlmIChwYXRoKQotICAgICAgICBjb250ZXh0LT5wcml2LT5mYXZpY29uRGF0YWJhc2VQ
YXRoID0gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhwYXRoKS51dGY4KCk7CisgICAgV2ViS2l0
V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSBjb250ZXh0LT5wcml2OworICAgIFdlYkljb25EYXRh
YmFzZSogaWNvbkRhdGFiYXNlID0gcHJpdi0+Y29udGV4dC0+aWNvbkRhdGFiYXNlKCk7CisgICAg
aWYgKGljb25EYXRhYmFzZS0+aXNPcGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGVuc3Vy
ZUZhdmljb25EYXRhYmFzZShjb250ZXh0KTsKKworICAgIC8vIFVzZSBkZWZhdWx0IGlmIDAgaXMg
cGFzc2VkIGFzIHBhcmFtZXRlci4KKyAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6
OmZpbGVuYW1lVG9TdHJpbmcocGF0aCk7CisgICAgcHJpdi0+ZmF2aWNvbkRhdGFiYXNlRGlyZWN0
b3J5ID0gZGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkKKyAgICAgICAgPyBwcml2LT5jb250ZXh0LT5p
Y29uRGF0YWJhc2VQYXRoKCkudXRmOCgpCisgICAgICAgIDogZGlyZWN0b3J5UGF0aC51dGY4KCk7
CisKKyAgICAvLyBCdWlsZCB0aGUgZnVsbCBwYXRoIHRvIHRoZSBpY29uIGRhdGFiYXNlIGZpbGUg
b24gZGlzay4KKyAgICBHT3duUHRyPGdjaGFyPiBmYXZpY29uRGF0YWJhc2VQYXRoKGdfYnVpbGRf
ZmlsZW5hbWUocHJpdi0+ZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5LmRhdGEoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6
SWNvbkRhdGFiYXNlOjpkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZSgpLnV0ZjgoKS5kYXRhKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwpKTsKKworICAgIC8vIFNldHRpbmcgdGhlIHBhdGggd2lsbCBjYXVzZSB0aGUgaWNvbiBkYXRh
YmFzZSB0byBiZSBvcGVuZWQuCisgICAgcHJpdi0+Y29udGV4dC0+c2V0SWNvbkRhdGFiYXNlUGF0
aChXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKGZhdmljb25EYXRhYmFzZVBhdGguZ2V0KCkpKTsK
IH0KIAogLyoqCi0gKiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2VfcGF0
aDoKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3Rvcnk6
CiAgKiBAY29udGV4dDogYSAjV2ViS2l0V2ViQ29udGV4dAogICoKICAqIEdldCB0aGUgZGlyZWN0
b3J5IHBhdGggYmVpbmcgdXNlZCB0byBzdG9yZSB0aGUgZmF2aWNvbnMgZGF0YWJhc2UKLSAqIGZv
ciBAY29udGV4dC4gVGhpcyBmdW5jdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcGF0
aCBhZnRlcgotICogaGF2aW5nIGNhbGxlZCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25f
ZGF0YWJhc2UoKSBmb3IgdGhlCi0gKiBmaXJzdCB0aW1lLiBTZWUgd2Via2l0X3dlYl9jb250ZXh0
X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeSgpCi0gKiBmb3IgbW9yZSBkZXRhaWxzLgor
ICogZm9yIEBjb250ZXh0LCBvciAlTlVMTCBpZgorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9m
YXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeSgpIGhhc24ndCBiZWVuCisgKiBjYWxsZWQgeWV0Lgor
ICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHBhdGggYWZ0
ZXIgaGF2aW5nIGNhbGxlZAorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2RhdGFi
YXNlX2RpcmVjdG9yeSgpIGZvciB0aGUgZmlyc3QKKyAqIHRpbWUuCiAgKgogICogUmV0dXJuczog
KHRyYW5zZmVyIG5vbmUpOiB0aGUgcGF0aCBvZiB0aGUgZGlyZWN0b3J5IG9mIHRoZSBmYXZpY29u
cwotICogZGF0YWJhc2UgYXNzb2NpYXRlZCB3aXRoIEBjb250ZXh0LgorICogZGF0YWJhc2UgYXNz
b2NpYXRlZCB3aXRoIEBjb250ZXh0LCBvciAlTlVMTC4KICAqLwogY29uc3QgZ2NoYXIqIHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29u
dGV4dCAqY29udGV4dCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X0NPTlRFWFQoY29udGV4dCksIDApOwogCiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHBy
aXYgPSBjb250ZXh0LT5wcml2OwotICAgIC8vIFVzZSBkZWZhdWx0IGlmIGEgZGlmZmVyZW50IHBh
dGggaGFzIG5vdCBiZWVuIHByZXZpb3VzbHkgc2V0LgotICAgIGlmIChwcml2LT5mYXZpY29uRGF0
YWJhc2VQYXRoLmlzTnVsbCgpKQotICAgICAgICBwcml2LT5mYXZpY29uRGF0YWJhc2VQYXRoID0g
cHJpdi0+Y29udGV4dC0+aWNvbkRhdGFiYXNlUGF0aCgpLnV0ZjgoKTsKKyAgICBpZiAocHJpdi0+
ZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gMDsKIAot
ICAgIHJldHVybiBwcml2LT5mYXZpY29uRGF0YWJhc2VQYXRoLmRhdGEoKTsKKyAgICByZXR1cm4g
cHJpdi0+ZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5LmRhdGEoKTsKIH0KIAogLyoqCiAgKiB3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2U6CiAgKiBAY29udGV4dDogYSAjV2Vi
S2l0V2ViQ29udGV4dAogICoKLSAqIEdldCB0aGUgI1dlYktpdEZhdmljb25EYXRhYmFzZSBhc3Nv
Y2lhdGVkIHdpdGggQGNvbnRleHQuIElmIHlvdQotICogd2FudCB0aGUgZGF0YWJhc2UgdG8gYmUg
c3RvcmVkIGluIGEgZGlyZWN0b3J5IG90aGVyIHRoYW4gdGhlIGRlZmF1bHQKLSAqIG9uZSwgeW91
IG5lZWQgdG8gY2FsbAotICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNl
X2RpcmVjdG9yeSgpIGJlZm9yZSB0aGUgZmlyc3QKLSAqIHRpbWUgeW91IHVzZSB0aGlzIGZ1bmN0
aW9uLgorICogR2V0IHRoZSAjV2ViS2l0RmF2aWNvbkRhdGFiYXNlIGFzc29jaWF0ZWQgd2l0aCBA
Y29udGV4dAorICoKKyAqIE5vdGljZSB0aGF0IHRoaXMgbWV0aG9kIHNpbXBseSByZXR1cm5zIHRo
ZSAjV2ViS2l0RmF2aWNvbkRhdGFiYXNlLAorICogYnV0IGRvZXNuJ3QgZW5hYmxlIHRoZSBkYXRh
YmFzZS4gVG8gZW5hYmxlIGl0IHlvdSB3aWxsIHN0aWxsIG5lZWQgdG8KKyAqIGNhbGwgd2Via2l0
X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeSgpIGF0IGxlYXN0Cisg
KiBvbmNlLCBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QuCiAgKgog
ICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dlYktpdEZhdmljb25EYXRhYmFzZSBv
ZiBAY29udGV4dC4KICAqLwpAQCAtMzk0LDIwICs0MTcsOCBAQCBXZWJLaXRGYXZpY29uRGF0YWJh
c2UqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZShXZWJLaXRXZWJDb250
ZXh0KgogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChj
b250ZXh0KSwgMCk7CiAKLSAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IGNvbnRl
eHQtPnByaXY7Ci0gICAgaWYgKHByaXYtPmZhdmljb25EYXRhYmFzZSkKLSAgICAgICAgcmV0dXJu
IHByaXYtPmZhdmljb25EYXRhYmFzZS5nZXQoKTsKLQotICAgIC8vIEJ1aWxkIHRoZSBmdWxsIHBh
dGggdG8gdGhlIGljb24gZGF0YWJhc2UgZmlsZSBvbiBkaXNrLgotICAgIEdPd25QdHI8Z2NoYXI+
IGZhdmljb25EYXRhYmFzZVBhdGgoZ19idWlsZF9maWxlbmFtZSh3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5KGNvbnRleHQpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpJY29uRGF0
YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKCkudXRmOCgpLmRhdGEoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpOwot
Ci0gICAgLy8gQ2FsbGluZyB0aGUgc2V0dGVyIGluIFdlYkNvbnRleHQgd2lsbCBjYXVzZSB0aGUg
aWNvbiBkYXRhYmFzZSB0byBiZSBvcGVuZWQuCi0gICAgcHJpdi0+Y29udGV4dC0+c2V0SWNvbkRh
dGFiYXNlUGF0aChXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKGZhdmljb25EYXRhYmFzZVBhdGgu
Z2V0KCkpKTsKLSAgICBwcml2LT5mYXZpY29uRGF0YWJhc2UgPSBhZG9wdEdSZWYod2Via2l0RmF2
aWNvbkRhdGFiYXNlQ3JlYXRlKHByaXYtPmNvbnRleHQtPmljb25EYXRhYmFzZSgpKSk7Ci0KLSAg
ICByZXR1cm4gcHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpOworICAgIGVuc3VyZUZhdmljb25E
YXRhYmFzZShjb250ZXh0KTsKKyAgICByZXR1cm4gY29udGV4dC0+cHJpdi0+ZmF2aWNvbkRhdGFi
YXNlLmdldCgpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5j
cHAKaW5kZXggMzEzMjU0ZC4uNDBmYjVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdEZhdmljb25E
YXRhYmFzZS5jcHAKQEAgLTM5LDkgKzM5LDYgQEAgcHVibGljOgogICAgICAgICAsIG1faWNvblJl
YWR5U2lnbmFsUmVjZWl2ZWQoZmFsc2UpCiAgICAgICAgICwgbV9mYXZpY29uTm90aWZpY2F0aW9u
UmVjZWl2ZWQoZmFsc2UpCiAgICAgewotICAgICAgICBpZiAoIWdfc3RyX2VxdWFsKHdlYmtpdF93
ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkobV93ZWJDb250ZXh0KSwg
a1RlbXBEaXJlY3RvcnkpKQotICAgICAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZp
Y29uX2RhdGFiYXNlX2RpcmVjdG9yeShtX3dlYkNvbnRleHQsIGtUZW1wRGlyZWN0b3J5KTsKLQog
ICAgICAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlID0gd2Via2l0X3dlYl9jb250
ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlKG1fd2ViQ29udGV4dCk7CiAgICAgICAgIGdfc2lnbmFs
X2Nvbm5lY3QoZGF0YWJhc2UsICJmYXZpY29uLXJlYWR5IiwgR19DQUxMQkFDSyhpY29uUmVhZHlD
YWxsYmFjayksIHRoaXMpOwogICAgIH0KQEAgLTEzMSw4ICsxMjgsMTggQEAgc2VydmVyQ2FsbGJh
Y2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciog
cGF0aCwgR0hhc2gKICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNw
b25zZV9ib2R5KTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdE5vdEluaXRpYWxpemVkKEZhdmljb25E
YXRhYmFzZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgLy8gVHJ5IHRvIHJldHJp
ZXZlIGEgdmFsaWQgZmF2aWNvbiBmcm9tIGEgbm90IGluaXRpYWxpemVkIGRhdGFiYXNlLgorICAg
IHRlc3QtPmdldEZhdmljb25Gb3JQYWdlVVJJQW5kV2FpdFVudGlsUmVhZHkoa1NlcnZlci0+Z2V0
VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CisgICAgZ19hc3NlcnQoIXRlc3QtPm1fZmF2aWNvbik7
CisgICAgZ19hc3NlcnQodGVzdC0+bV9lcnJvcik7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3Qt
Pm1fZXJyb3ItPmNvZGUsID09LCBXRUJLSVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJPUl9OT1RfSU5J
VElBTElaRUQpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0U2V0RGlyZWN0b3J5KEZhdmljb25EYXRh
YmFzZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CisgICAgd2Via2l0X3dlYl9jb250ZXh0
X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeSh0ZXN0LT5tX3dlYkNvbnRleHQsIGtUZW1w
RGlyZWN0b3J5KTsKICAgICBnX2Fzc2VydF9jbXBzdHIoa1RlbXBEaXJlY3RvcnksID09LCB3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5KHRlc3QtPm1fd2Vi
Q29udGV4dCkpOwogfQogCkBAIC0yMDksNiArMjE2LDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAg
IGdfYXNzZXJ0KGtUZW1wRGlyZWN0b3J5KTsKIAogICAgIC8vIEFkZCB0ZXN0cyB0byB0aGUgc3Vp
dGUuCisgICAgRmF2aWNvbkRhdGFiYXNlVGVzdDo6YWRkKCJXZWJLaXRGYXZpY29uRGF0YWJhc2Ui
LCAibm90LWluaXRpYWxpemVkIiwgdGVzdE5vdEluaXRpYWxpemVkKTsKICAgICBGYXZpY29uRGF0
YWJhc2VUZXN0OjphZGQoIldlYktpdEZhdmljb25EYXRhYmFzZSIsICJzZXQtZGlyZWN0b3J5Iiwg
dGVzdFNldERpcmVjdG9yeSk7CiAgICAgRmF2aWNvbkRhdGFiYXNlVGVzdDo6YWRkKCJXZWJLaXRG
YXZpY29uRGF0YWJhc2UiLCAiZ2V0LWZhdmljb24iLCB0ZXN0R2V0RmF2aWNvbik7CiAgICAgRmF2
aWNvbkRhdGFiYXNlVGVzdDo6YWRkKCJXZWJLaXRGYXZpY29uRGF0YWJhc2UiLCAiZ2V0LWZhdmlj
b24tdXJpIiwgdGVzdEdldEZhdmljb25VUkkpOwotLSAKMS43LjExLjQKCg==
</data>
<flag name="review"
          id="181080"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>