<?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>33180</bug_id>
          
          <creation_ts>2010-01-04 13:30:51 -0800</creation_ts>
          <short_desc>[Qt] Support private browsing mode in plugins</short_desc>
          <delta_ts>2010-03-10 12:59:36 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Hogan">robert</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>kdecker</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>176851</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-01-04 13:30:51 -0800</bug_when>
    <thetext>Add support for NPNVprivateModeBool property in plugins.

See also: https://developer.mozilla.org/En/Supporting_private_browsing_in_plugins

The NPNVprivateModeBool property is supported as scriptable property privateBrowsingEnabled in the test WebKit plugin. The Mac platform also supports a cachedPrivateBrowsingEnabled
property implemented in the test plugin. This allows the Layout test plugins/private-browsing-mode.html to retrieve the previous value of NPNVprivateModeBool in the test plugin. Due to the platform-specific overhead required to support this bespoke property it is not implemented as part of this patch, instead a new test, plugins/private-browsing-mode-2.html, is added to ensure that setting and resetting privateBrowsingEnabled works as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176865</commentid>
    <comment_count>1</comment_count>
      <attachid>45828</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-01-04 14:05:01 -0800</bug_when>
    <thetext>Created attachment 45828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176866</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-04 14:07:28 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45828 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181953</commentid>
    <comment_count>3</comment_count>
      <attachid>45828</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-18 12:32:42 -0800</bug_when>
    <thetext>Comment on attachment 45828
Patch

LGTM, but it seems that something went wrong with GTK, please have a look at that.

Also, where is that successfullyParsed = true; used?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183786</commentid>
    <comment_count>4</comment_count>
      <attachid>45828</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-22 13:46:07 -0800</bug_when>
    <thetext>Comment on attachment 45828
Patch

&gt; --- a/LayoutTests/platform/gtk/Skipped
&gt; +++ b/LayoutTests/platform/gtk/Skipped
&gt; @@ -3651,6 +3651,11 @@ plugins/plugin-javascript-access.html
&gt;  # https://bugs.webkit.org/show_bug.cgi?id=30561
&gt;  plugins/private-browsing-mode.html
&gt;  
&gt; +# https://bugs.webkit.org/show_bug.cgi?id=30561
&gt; +plugins/private-browsing-mode.html

It seems strange to see these two lines being added that exist alread three lines further up :)

&gt; +# https://bugs.webkit.org/show_bug.cgi?id=33180
&gt; +plugins/private-browsing-mode-2.html
&gt; +
&gt;  #   Tests generating new results
&gt;  plugins/embed-attributes-style.html
&gt;  plugins/netscape-dom-access.html


&gt; +Tests that NPNVprivateModeBool is supported by the WebKit plugin view. This test is for WebKit platforms that wish to support NPNVprivateModeBool but do not wish to implement the preference change listener required to support a cachedPrivateBrowsingEnabled property similar to the one provided by Safari and tested for in private-browsing-mode.html

I don&apos;t understand this part. It seems trivial to implement in DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp. Why not do it there instead of this extra test?

In fact, it seems like a bug right now that the cachedPrivateBrowsingEnabled variable isn&apos;t initialized in that file, where as it is initialized in
TestNetscapePlugIn.subproj/main.cpp. Could that be why the test was failing for you?

&gt; +
&gt; +    case NPNVprivateModeBool: {
&gt; +        Page* page = m_parentFrame-&gt;page();
&gt; +        if (!page)
&gt; +            return NPERR_GENERIC_ERROR;
&gt; +         *((NPBool*)value) = (!page-&gt;settings() || page-&gt;settings()-&gt;privateBrowsingEnabled())? true : false;
&gt; +         return NPERR_NO_ERROR;
&gt; +    }

I would leave out the ? true : false; part and the extra parentheses, it&apos;s redundant.

Otherwise the patch looks great, and certainly long-hanging fruit for the other PluginView implementations, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184118</commentid>
    <comment_count>5</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-01-24 15:12:23 -0800</bug_when>
    <thetext>&gt; 
&gt; &gt; +Tests that NPNVprivateModeBool is supported by the WebKit plugin view. This test is for WebKit platforms that wish to support NPNVprivateModeBool but do not wish to implement the preference change listener required to support a cachedPrivateBrowsingEnabled property similar to the one provided by Safari and tested for in private-browsing-mode.html
&gt; 
&gt; I don&apos;t understand this part. It seems trivial to implement in
&gt; DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp. Why not do it
&gt; there instead of this extra test?
&gt; 
&gt; In fact, it seems like a bug right now that the cachedPrivateBrowsingEnabled
&gt; variable isn&apos;t initialized in that file, where as it is initialized in
&gt; TestNetscapePlugIn.subproj/main.cpp. Could that be why the test was failing for
&gt; you?

The mac port listens for changes to the users webkit preferences and halts any netscape plugins currently running if pluginsEnabled has changed to false. Setting the &apos;cachedPrivateBrowsingMode&apos; value rides on the coat-tails of this feature - which Qt doesn&apos;t have, and possibly should. I don&apos;t think it&apos;s trivial to implement though. So will leave it out of this patch if that&apos;s ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184725</commentid>
    <comment_count>6</comment_count>
      <attachid>47448</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-01-26 14:13:38 -0800</bug_when>
    <thetext>Created attachment 47448
Updated Patch

Fixed style issues. Simon - if you agree with my response to your comments this should be ok to r+. I could look at halting plugins when pluginsEnabled gets set to false separately - or maybe address that first and make it a blocker for this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185226</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-27 14:54:40 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; 
&gt; &gt; &gt; +Tests that NPNVprivateModeBool is supported by the WebKit plugin view. This test is for WebKit platforms that wish to support NPNVprivateModeBool but do not wish to implement the preference change listener required to support a cachedPrivateBrowsingEnabled property similar to the one provided by Safari and tested for in private-browsing-mode.html
&gt; &gt; 
&gt; &gt; I don&apos;t understand this part. It seems trivial to implement in
&gt; &gt; DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp. Why not do it
&gt; &gt; there instead of this extra test?
&gt; &gt; 
&gt; &gt; In fact, it seems like a bug right now that the cachedPrivateBrowsingEnabled
&gt; &gt; variable isn&apos;t initialized in that file, where as it is initialized in
&gt; &gt; TestNetscapePlugIn.subproj/main.cpp. Could that be why the test was failing for
&gt; &gt; you?
&gt; 
&gt; The mac port listens for changes to the users webkit preferences and halts any
&gt; netscape plugins currently running if pluginsEnabled has changed to false.
&gt; Setting the &apos;cachedPrivateBrowsingMode&apos; value rides on the coat-tails of this
&gt; feature - which Qt doesn&apos;t have, and possibly should. I don&apos;t think it&apos;s
&gt; trivial to implement though. So will leave it out of this patch if that&apos;s ok?

I think I understand now, but I don&apos;t see that the mac port stops the plugin. Instead looking at - (void)privateBrowsingModeDidChange in WebNetscapePluginView.mm I can see that the private browsing mode value is _propagated_ to the plugin (setvalue), and _that_ is what the other part of the private-browsing-mode.html tests.

Your patch implements the part that allows the plugin to query the browser if private browsing is enabled or not, and your added test verifies that.

The Mac port also implements _notifying_ the plugin if the private browsing mode changes, which appears to be an important feature to have.

I agree with you that this is okay to implement in a second patch. I guess once the setting in WebCore changes, the page should iterate through its plugins and notify them via setvalue calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185227</commentid>
    <comment_count>8</comment_count>
      <attachid>47448</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-27 14:56:22 -0800</bug_when>
    <thetext>Comment on attachment 47448
Updated Patch


&gt; +    case NPNVprivateModeBool: {
&gt; +        Page* page = m_parentFrame-&gt;page();
&gt; +        if (!page)
&gt; +            return NPERR_GENERIC_ERROR;
&gt; +        *((NPBool*)value) = !page-&gt;settings() || page-&gt;settings()-&gt;privateBrowsingEnabled();
&gt; +        return NPERR_NO_ERROR;
&gt; +    }

r=me, but when landing you may want to change the above to return NPERR_GENERIC_ERROR if !page-&gt;settings() and only return the real value to the plugin if we have a settings object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191116</commentid>
    <comment_count>9</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-02-17 11:32:17 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; +Tests that NPNVprivateModeBool is supported by the WebKit plugin view. This test is for WebKit platforms that wish to support NPNVprivateModeBool but do not wish to implement the preference change listener required to support a cachedPrivateBrowsingEnabled property similar to the one provided by Safari and tested for in private-browsing-mode.html
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t understand this part. It seems trivial to implement in
&gt; &gt; &gt; DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp. Why not do it
&gt; &gt; &gt; there instead of this extra test?
&gt; &gt; &gt; 
&gt; &gt; &gt; In fact, it seems like a bug right now that the cachedPrivateBrowsingEnabled
&gt; &gt; &gt; variable isn&apos;t initialized in that file, where as it is initialized in
&gt; &gt; &gt; TestNetscapePlugIn.subproj/main.cpp. Could that be why the test was failing for
&gt; &gt; &gt; you?
&gt; &gt; 
&gt; &gt; The mac port listens for changes to the users webkit preferences and halts any
&gt; &gt; netscape plugins currently running if pluginsEnabled has changed to false.
&gt; &gt; Setting the &apos;cachedPrivateBrowsingMode&apos; value rides on the coat-tails of this
&gt; &gt; feature - which Qt doesn&apos;t have, and possibly should. I don&apos;t think it&apos;s
&gt; &gt; trivial to implement though. So will leave it out of this patch if that&apos;s ok?
&gt; 
&gt; I think I understand now, but I don&apos;t see that the mac port stops the plugin.

I came to the conclusion from reading in WebBaseNetscapePluginView.mm:

- (void)preferencesHaveChanged:(NSNotification *)notification
{
    WebPreferences *preferences = [[self webView] preferences];

    if ([notification object] != preferences)
        return;
    
    BOOL arePlugInsEnabled = [preferences arePlugInsEnabled];
    if (_isStarted != arePlugInsEnabled) {
        if (arePlugInsEnabled) {
            if ([self currentWindow]) {
                [self start];
            }
        } else {
            [self stop];
            [self invalidatePluginContentRect:[self bounds]];
        }
    }
    
    BOOL isPrivateBrowsingEnabled = [preferences privateBrowsingEnabled];
    if (isPrivateBrowsingEnabled != _isPrivateBrowsingEnabled) {
        _isPrivateBrowsingEnabled = isPrivateBrowsingEnabled;
        [self privateBrowsingModeDidChange];
    }
}


&gt; Instead looking at - (void)privateBrowsingModeDidChange in
&gt; WebNetscapePluginView.mm I can see that the private browsing mode value is
&gt; _propagated_ to the plugin (setvalue), and _that_ is what the other part of the
&gt; private-browsing-mode.html tests.
&gt; 
&gt; Your patch implements the part that allows the plugin to query the browser if
&gt; private browsing is enabled or not, and your added test verifies that.
&gt; 
&gt; The Mac port also implements _notifying_ the plugin if the private browsing
&gt; mode changes, which appears to be an important feature to have.
&gt; 

Ah OK, it actually sets the value of NPNVprivateModeBool there and then:

- (void)privateBrowsingModeDidChange
{
    if (!_isStarted)
        return;
    
    NPBool value = _isPrivateBrowsingEnabled;

    [self willCallPlugInFunction];
    {
        JSC::JSLock::DropAllLocks dropAllLocks(JSC::SilenceAssertionsOnly);
        if ([_pluginPackage.get() pluginFuncs]-&gt;setvalue)
            [_pluginPackage.get() pluginFuncs]-&gt;setvalue(plugin, NPNVprivateModeBool, &amp;value);
    }
    [self didCallPlugInFunction];
}

I was under the misapprehension that any time a plugin wants to check the value of NPNVprivateModeBool it would have to perform a getvalue() but it will actually receive the setvalue event from the browser and act appropriately. Got it now.

&gt; I agree with you that this is okay to implement in a second patch. I guess once
&gt; the setting in WebCore changes, the page should iterate through its plugins and
&gt; notify them via setvalue calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191118</commentid>
    <comment_count>10</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-02-17 11:35:09 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 47448 [details])
&gt; 
&gt; &gt; +    case NPNVprivateModeBool: {
&gt; &gt; +        Page* page = m_parentFrame-&gt;page();
&gt; &gt; +        if (!page)
&gt; &gt; +            return NPERR_GENERIC_ERROR;
&gt; &gt; +        *((NPBool*)value) = !page-&gt;settings() || page-&gt;settings()-&gt;privateBrowsingEnabled();
&gt; &gt; +        return NPERR_NO_ERROR;
&gt; &gt; +    }
&gt; 
&gt; r=me, but when landing you may want to change the above to return
&gt; NPERR_GENERIC_ERROR if !page-&gt;settings() and only return the real value to the
&gt; plugin if we have a settings object.

Elsewhere in the code the default behaviour for security-sensitive settings is to assume that if !page-&gt;settings() then the setting is true.

e.g. in WebCore/loader/DocLoader.cpp:

    Settings* settings = frame()-&gt;settings();
    if (!settings || settings-&gt;privateBrowsingEnabled())
        return;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194570</commentid>
    <comment_count>11</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-02-28 04:58:38 -0800</bug_when>
    <thetext>Manually committed r55358: http://trac.webkit.org/changeset/55358</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194582</commentid>
    <comment_count>12</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-02-28 11:08:50 -0800</bug_when>
    <thetext>If this is a Qt-specific font, maybe it should live under platform/qt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194736</commentid>
    <comment_count>13</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-01 11:06:06 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; If this is a Qt-specific font, maybe it should live under platform/qt?

Hi Dimitri,

Is this comment on the correct bug? If it&apos;s regarding the additions to the skiplists, I&apos;ve added plugins/private-browsing-mode-2.html to any platform that already skips plugins/private-browsing-mode.html since it likely as not will fail it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194737</commentid>
    <comment_count>14</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-03-01 11:08:41 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; If this is a Qt-specific font, maybe it should live under platform/qt?
&gt; 
&gt; Hi Dimitri,
&gt; 
&gt; Is this comment on the correct bug? If it&apos;s regarding the additions to the
&gt; skiplists, I&apos;ve added plugins/private-browsing-mode-2.html to any platform that
&gt; already skips plugins/private-browsing-mode.html since it likely as not will
&gt; fail it.

Sorry, comment fail on my part :)

What I meant to say is that if this is a Qt-specific test, you could&apos;ve put it in platform/qt and this way there would&apos;ve been no need to update Skipped lists for other platforms.

Just a suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195268</commentid>
    <comment_count>15</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-03-02 15:19:32 -0800</bug_when>
    <thetext>I believe the functionality that you described implementing in a second patch was what I just landed as part of bug 35576.  Qt should be able to unskip the original private browsing plug-in patch after that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198040</commentid>
    <comment_count>16</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-03-10 06:28:43 -0800</bug_when>
    <thetext>
Please follow the QtWebKit bug reporting guidelines when reporting bugs.

See http://trac.webkit.org/wiki/QtWebKitBugs

Specifically:

  - The &apos;QtWebKit&apos; component should only be used for bugs/features in the
    public QtWebKit API layer, not to signify that the bug is specific to
    the Qt port of WebKit

      http://trac.webkit.org/wiki/QtWebKitBugs#Component

  - Add the keyword &apos;Qt&apos; to signal that it&apos;s a Qt-related bug

      http://trac.webkit.org/wiki/QtWebKitBugs#Keywords</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45828</attachid>
            <date>2010-01-04 14:05:01 -0800</date>
            <delta_ts>2010-01-26 14:13:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Support-private-browsing-mode-in-plugins.patch</filename>
            <type>text/plain</type>
            <size>11129</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSAwMmE3N2MyMzE4YjE1NWY0ZjBkOGU3YjQ4MmUzZWE4YWJiZTAzY2Q2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+
CkRhdGU6IE1vbiwgNCBKYW4gMjAxMCAyMTo1ODo1MSArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIFtR
dF0gU3VwcG9ydCBwcml2YXRlIGJyb3dzaW5nIG1vZGUgaW4gcGx1Z2lucwoKQWRkIHN1cHBvcnQg
Zm9yIE5QTlZwcml2YXRlTW9kZUJvb2wgcHJvcGVydHkgaW4gcGx1Z2lucy4KClNlZSBhbHNvOiBo
dHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9Fbi9TdXBwb3J0aW5nX3ByaXZhdGVfYnJvd3Np
bmdfaW5fcGx1Z2lucwoKVGhlIE5QTlZwcml2YXRlTW9kZUJvb2wgcHJvcGVydHkgaXMgc3VwcG9y
dGVkIGFzIHNjcmlwdGFibGUgcHJvcGVydHkgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZAppbiB0aGUg
dGVzdCBXZWJLaXQgcGx1Z2luLiBUaGUgTWFjIHBsYXRmb3JtIGFsc28gc3VwcG9ydHMgYSBjYWNo
ZWRQcml2YXRlQnJvd3NpbmdFbmFibGVkCnByb3BlcnR5IGltcGxlbWVudGVkIGluIHRoZSB0ZXN0
IHBsdWdpbi4gVGhpcyBhbGxvd3MgdGhlIExheW91dCB0ZXN0IHBsdWdpbnMvcHJpdmF0ZS1icm93
c2luZy1tb2RlLmh0bWwKdG8gcmV0cmlldmUgdGhlIHByZXZpb3VzIHZhbHVlIG9mIE5QTlZwcml2
YXRlTW9kZUJvb2wgaW4gdGhlIHRlc3QgcGx1Z2luLiBEdWUgdG8gdGhlIHBsYXRmb3JtLXNwZWNp
ZmljCm92ZXJoZWFkIHJlcXVpcmVkIHRvIHN1cHBvcnQgdGhpcyBiZXNwb2tlIHByb3BlcnR5IGl0
IGlzIG5vdCBpbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIHRoaXMgcGF0Y2gsIGluc3RlYWQKYSBuZXcg
dGVzdCwgcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi5odG1sLCBpcyBhZGRlZCB0byBl
bnN1cmUgdGhhdCBzZXR0aW5nIGFuZCByZXNldHRpbmcgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCB3
b3JrcyBhcyBleHBlY3RlZC4KCmh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMzMTgwCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDI4ICsrKysrKysrKysrKysKIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkICAgICAgICAgICAgICAgICAgIHwgICAgNSArKwogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXNub3dsZW9wYXJkL1NraXBwZWQgICAgICAgfCAgICAxICsKIExheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQgICAgICAgICAgICAgICAgICAgIHwgICAgNyArKy0KIExheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9Ta2lwcGVkICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiAuLi4vcGx1Z2lu
cy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi1leHBlY3RlZC50eHQgICB8ICAgMTEgKysrKysKIExh
eW91dFRlc3RzL3BsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1tb2RlLTIuaHRtbCAgIHwgICA0MyAr
KysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDI2ICsrKysrKysrKysrKwogV2ViQ29yZS9wbHVnaW5zL3F0L1Bs
dWdpblZpZXdRdC5jcHAgICAgICAgICAgICAgICAgfCAgICA4ICsrKysKIDkgZmlsZXMgY2hhbmdl
ZCwgMTI5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi1leHBlY3RlZC50eHQK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbHVnaW5zL3ByaXZhdGUtYnJvd3Npbmct
bW9kZS0yLmh0bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWVkYjUyNi4uNmMxMzNjNSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDEwLTAxLTA0ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gU3Vw
cG9ydCBwcml2YXRlIGJyb3dzaW5nIG1vZGUgaW4gcGx1Z2lucworICAgICAgICAKKyAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIE5QTlZwcml2YXRlTW9kZUJvb2wgcHJvcGVydHkgaW4gcGx1Z2lucy4K
KyAgICAgICAgCisgICAgICAgIFNlZSBhbHNvOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9y
Zy9Fbi9TdXBwb3J0aW5nX3ByaXZhdGVfYnJvd3NpbmdfaW5fcGx1Z2lucworICAgICAgICAKKyAg
ICAgICAgVGhlIE5QTlZwcml2YXRlTW9kZUJvb2wgcHJvcGVydHkgaXMgc3VwcG9ydGVkIGFzIHNj
cmlwdGFibGUgcHJvcGVydHkgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZAorICAgICAgICBpbiB0aGUg
dGVzdCBXZWJLaXQgcGx1Z2luLiBUaGUgTWFjIHBsYXRmb3JtIGFsc28gc3VwcG9ydHMgYSBjYWNo
ZWRQcml2YXRlQnJvd3NpbmdFbmFibGVkCisgICAgICAgIHByb3BlcnR5IGltcGxlbWVudGVkIGlu
IHRoZSB0ZXN0IHBsdWdpbi4gVGhpcyBhbGxvd3MgdGhlIExheW91dCB0ZXN0CisgICAgICAgIHBs
dWdpbnMvcHJpdmF0ZS1icm93c2luZy1tb2RlLmh0bWwgdG8gcmV0cmlldmUgdGhlIHByZXZpb3Vz
IHZhbHVlIG9mIE5QTlZwcml2YXRlTW9kZUJvb2wKKyAgICAgICAgaW4gdGhlIHRlc3QgcGx1Z2lu
LiBEdWUgdG8gdGhlIHBsYXRmb3JtLXNwZWNpZmljIG92ZXJoZWFkIHJlcXVpcmVkIHRvIHN1cHBv
cnQgdGhpcyBiZXNwb2tlCisgICAgICAgIHByb3BlcnR5IGl0IGlzIG5vdCBpbXBsZW1lbnRlZCBh
cyBwYXJ0IG9mIHRoaXMgcGF0Y2gsIGluc3RlYWQgYSBuZXcgdGVzdCwKKyAgICAgICAgcGx1Z2lu
cy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi5odG1sLCBpcyBhZGRlZCB0byBlbnN1cmUgdGhhdCBz
ZXR0aW5nIGFuZCByZXNldHRpbmcKKyAgICAgICAgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCB3b3Jr
cyBhcyBleHBlY3RlZC4KKyAgICAgICAgCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzMTgwCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorICAg
ICAgICAqIHBsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1tb2RlLTItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBwbHVnaW5zL3ByaXZhdGUtYnJvd3NpbmctbW9kZS0yLmh0bWw6IEFkZGVk
LgorCiAyMDEwLTAxLTA0ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIE5vdCByZXZpZXdlZCwgcmV2ZXJ0IHI1Mjc0NSBhbmQgcjUyNzQ2IG9uIGJlaGFsZiBv
ZiBOaWtvbGFzIFppbW1lcm1hbm4sIGFzIGRpc2N1c3NlZCBvbiBJUkMuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCmluZGV4IDg2ZTIyMzEuLmUxNDdiN2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkCkBAIC0zNjUxLDYgKzM2NTEsMTEgQEAgcGx1Z2lucy9wbHVnaW4tamF2YXNjcmlwdC1hY2Nl
c3MuaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA1NjEK
IHBsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1tb2RlLmh0bWwKIAorIyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA1NjEKK3BsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1t
b2RlLmh0bWwKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTgw
CitwbHVnaW5zL3ByaXZhdGUtYnJvd3NpbmctbW9kZS0yLmh0bWwKKwogIyAgIFRlc3RzIGdlbmVy
YXRpbmcgbmV3IHJlc3VsdHMKIHBsdWdpbnMvZW1iZWQtYXR0cmlidXRlcy1zdHlsZS5odG1sCiBw
bHVnaW5zL25ldHNjYXBlLWRvbS1hY2Nlc3MuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtc25vd2xlb3BhcmQvU2tpcHBlZAppbmRleCAwZGJlZjkzLi4xMzhjNWEzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZApAQCAtMTEsNiArMTEsNyBA
QCBwbHVnaW5zL21vdXNlLWV2ZW50cy5odG1sCiAKICMgVGhpcyBuZWVkcyBhIG5ld2VyIHZlcnNp
b24gb2YgU2FmYXJpLgogcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUuaHRtbAorcGx1Z2lu
cy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi5odG1sCiAKICMgUmFkYXIgYnVncyBuZWVkZWQgZm9y
IHRoZXNlCiBmYXN0L2NhbnZhcy9zZXQtY29sb3JzLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CmluZGV4IDJlNDFmZmMuLmQwNDdjYzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMjU5
LDkgKzI1OSw2IEBAIGZhc3QvaW1hZ2VzL2Zhdmljb24tYXMtaW1hZ2UuaHRtbAogZmFzdC9pbWFn
ZXMvaWNvbi0wY29sb3JzLmh0bWwKIGZhc3QvaW1hZ2VzL2ljb24tZGVjb2RpbmcuaHRtbAogCi0j
IC0tLS0tLS0gbWlzc2luZyBwcml2YXRlIGJyb3dzaW5nIHN1cHBvcnQ/Ci1wbHVnaW5zL3ByaXZh
dGUtYnJvd3NpbmctbW9kZS5odG1sCi0KICMgLS0tLS0tLSBtaXNzaW5nIGphcGFuZXNlIGZvbnQg
c3VwcG9ydAogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvamFwYW5lc2Uta2FuYS1sZXR0ZXJzLmh0
bWwKIApAQCAtNTEwMCwzICs1MDk3LDcgQEAgc3ZnL2N1c3RvbS9nbG9iYWwtY29uc3RydWN0b3Jz
Lmh0bWwKICMgRFJUIHNpZGVlZmZlY3QgLSB0aGlzIHRlc3QgbWFrZSBodHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L251bGwtYXV0aC5waHAgZmFpbDoKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMyOTYxCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2ZhaWxlZC1h
dXRoLmh0bWwKKworIyBQZXJtYW5lbnRseSBza2lwcGVkLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTgwLgorIyBDb3JlIGZ1bmN0aW9uYWxpdHkgaXMgdGVz
dGVkIGluIHBsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1tb2RlLTIuaHRtbAorcGx1Z2lucy9wcml2
YXRlLWJyb3dzaW5nLW1vZGUuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCAzODdm
ZDIyLi5jYjI2MGU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtNjcxLDYgKzY3MSw5
IEBAIGZhc3QvZG9tL1dpbmRvdy9zbG93X3VubG9hZF9oYW5kbGVyLmh0bWwKICMgPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDM0OD4KIHBsdWdpbnMvcHJpdmF0ZS1i
cm93c2luZy1tb2RlLmh0bWwKIAorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzMxODAKK3BsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1tb2RlLTIuaHRtbAorCiAjIFNr
aXAgdGhlc2UgdHdvIGZhaWx1cmVzIEkgaW50cm9kdWNlZCB0aGlzIG1vcm5pbmcgd2hpbGUgSSBl
eHBsb3JlIHRoZW0uCiBodHRwL3Rlc3RzL2dsb2JhbGhpc3RvcnkvaGlzdG9yeS1kZWxlZ2F0ZS1i
YXNpYy12aXNpdGVkLWxpbmtzLmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lu
cy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbHVn
aW5zL3ByaXZhdGUtYnJvd3NpbmctbW9kZS0yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xODIyNjZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMSBAQAorVGVzdHMgdGhhdCBOUE5WcHJpdmF0ZU1vZGVCb29sIGlzIHN1cHBvcnRlZCBieSB0
aGUgV2ViS2l0IHBsdWdpbiB2aWV3LiBUaGlzIHRlc3QgaXMgZm9yIFdlYktpdCBwbGF0Zm9ybXMg
dGhhdCB3aXNoIHRvIHN1cHBvcnQgTlBOVnByaXZhdGVNb2RlQm9vbCBidXQgZG8gbm90IHdpc2gg
dG8gaW1wbGVtZW50IHRoZSBwcmVmZXJlbmNlIGNoYW5nZSBsaXN0ZW5lciByZXF1aXJlZCB0byBz
dXBwb3J0IGEgY2FjaGVkUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBwcm9wZXJ0eSBzaW1pbGFyIHRv
IHRoZSBvbmUgcHJvdmlkZWQgYnkgU2FmYXJpIGFuZCB0ZXN0ZWQgZm9yIGluIHByaXZhdGUtYnJv
d3NpbmctbW9kZS5odG1sCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBs
dWdpbjEucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBpcyBmYWxzZQorUEFTUyBwbHVnaW4xLnByaXZh
dGVCcm93c2luZ0VuYWJsZWQgaXMgdHJ1ZQorUEFTUyBwbHVnaW4yLnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQgaXMgdHJ1ZQorUEFTUyBwbHVnaW4xLnByaXZhdGVCcm93c2luZ0VuYWJsZWQgaXMgZmFs
c2UKK1BBU1MgcGx1Z2luMi5wcml2YXRlQnJvd3NpbmdFbmFibGVkIGlzIGZhbHNlCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1tb2RlLTIuaHRtbCBi
L0xheW91dFRlc3RzL3BsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1tb2RlLTIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjFlNjFjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi5odG1sCkBAIC0wLDAg
KzEsNDMgQEAKKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgCit7CisgICAgaWYgKCF3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCBjYW4g
b25seSBydW4gZnJvbSB3aXRoaW4gRHVtcFJlbmRlclRyZWUgYmVjYXVzZSBpdCByZXF1aXJlcyBU
ZXN0TmV0c2NhcGVQbHVnaW4uXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBwbHVnaW4xID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZW1iZWQiKTsKKyAgICBwbHVnaW4x
LnR5cGUgPSAiYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSI7CisgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChwbHVnaW4xKTsKKyAgICAKKyAgICBzaG91bGRCZSgicGx1Z2lu
MS5wcml2YXRlQnJvd3NpbmdFbmFibGVkIiwgImZhbHNlIik7CisKKyAgICAvLyBOb3cgZW5hYmxl
IHByaXZhdGUgYnJvd3NpbmcKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKHRydWUpOworCisgICAgc2hvdWxkQmUoInBsdWdpbjEucHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCIsICJ0cnVlIik7CisgICAgCisgICAgcGx1Z2luMiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImVtYmVkIik7CisgICAgcGx1Z2luMi50eXBlID0gImFwcGxpY2F0aW9uL3gtd2Vi
a2l0LXRlc3QtbmV0c2NhcGUiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGx1Z2lu
Mik7CisgICAgCisgICAgc2hvdWxkQmUoInBsdWdpbjIucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCIs
ICJ0cnVlIik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChmYWxzZSk7CisgICAgc2hvdWxkQmUoInBsdWdpbjEucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJwbHVnaW4yLnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQiLCAiZmFsc2UiKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRl
c3RzIHRoYXQgTlBOVnByaXZhdGVNb2RlQm9vbCBpcyBzdXBwb3J0ZWQgYnkgdGhlIFdlYktpdCBw
bHVnaW4gdmlldy4gXG4gVGhpcyB0ZXN0IGlzIGZvciBXZWJLaXQgcGxhdGZvcm1zIHRoYXQgd2lz
aCB0byBzdXBwb3J0IE5QTlZwcml2YXRlTW9kZUJvb2wgYnV0IGRvIG5vdCB3aXNoIHRvIGltcGxl
bWVudCB0aGUgcHJlZmVyZW5jZSBjaGFuZ2UgbGlzdGVuZXIgcmVxdWlyZWQgdG8gc3VwcG9ydCBh
IGNhY2hlZFByaXZhdGVCcm93c2luZ0VuYWJsZWQgcHJvcGVydHkgc2ltaWxhciB0byB0aGUgb25l
IHByb3ZpZGVkIGJ5IFNhZmFyaSBhbmQgdGVzdGVkIGZvciBpbiBwcml2YXRlLWJyb3dzaW5nLW1v
ZGUuaHRtbCIpOworCisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJh
ZDBmNi4uZmNjNDIwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0wMS0wNCAgUm9iZXJ0IEhvZ2FuICA8
cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbUXRdIFN1cHBvcnQgcHJpdmF0ZSBicm93c2luZyBtb2RlIGluIHBs
dWdpbnMKKyAgICAgICAgCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBOUE5WcHJpdmF0ZU1vZGVC
b29sIHByb3BlcnR5IGluIHBsdWdpbnMuCisgICAgICAgIAorICAgICAgICBTZWUgYWxzbzogaHR0
cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvRW4vU3VwcG9ydGluZ19wcml2YXRlX2Jyb3dzaW5n
X2luX3BsdWdpbnMKKyAgICAgICAgCisgICAgICAgIFRoZSBOUE5WcHJpdmF0ZU1vZGVCb29sIHBy
b3BlcnR5IGlzIHN1cHBvcnRlZCBhcyBzY3JpcHRhYmxlIHByb3BlcnR5IHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQKKyAgICAgICAgaW4gdGhlIHRlc3QgV2ViS2l0IHBsdWdpbi4gVGhlIE1hYyBwbGF0
Zm9ybSBhbHNvIHN1cHBvcnRzIGEgY2FjaGVkUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZAorICAgICAg
ICBwcm9wZXJ0eSBpbXBsZW1lbnRlZCBpbiB0aGUgdGVzdCBwbHVnaW4uIFRoaXMgYWxsb3dzIHRo
ZSBMYXlvdXQgdGVzdCAKKyAgICAgICAgcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUuaHRt
bCB0byByZXRyaWV2ZSB0aGUgcHJldmlvdXMgdmFsdWUgb2YgTlBOVnByaXZhdGVNb2RlQm9vbCAK
KyAgICAgICAgaW4gdGhlIHRlc3QgcGx1Z2luLiBEdWUgdG8gdGhlIHBsYXRmb3JtLXNwZWNpZmlj
IG92ZXJoZWFkIHJlcXVpcmVkIHRvIHN1cHBvcnQgdGhpcyBiZXNwb2tlIAorICAgICAgICBwcm9w
ZXJ0eSBpdCBpcyBub3QgaW1wbGVtZW50ZWQgYXMgcGFydCBvZiB0aGlzIHBhdGNoLCBpbnN0ZWFk
IGEgbmV3IHRlc3QsIAorICAgICAgICBwbHVnaW5zL3ByaXZhdGUtYnJvd3NpbmctbW9kZS0yLmh0
bWwsIGlzIGFkZGVkIHRvIGVuc3VyZSB0aGF0IHNldHRpbmcgYW5kIHJlc2V0dGluZyAKKyAgICAg
ICAgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCB3b3JrcyBhcyBleHBlY3RlZC4KKyAgICAgICAgCisg
ICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTgwCisKKyAg
ICAgICAgVGVzdDogcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi5odG1sCisKKyAgICAg
ICAgKiBwbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpnZXRWYWx1ZSk6CisKIDIwMTAtMDEtMDQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcCBiL1dlYkNvcmUvcGx1Z2lu
cy9xdC9QbHVnaW5WaWV3UXQuY3BwCmluZGV4IGZiOGJhMDguLmRiNzY3ODYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lu
cy9xdC9QbHVnaW5WaWV3UXQuY3BwCkBAIC02MzUsNiArNjM1LDE0IEBAIE5QRXJyb3IgUGx1Z2lu
Vmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQogICAgICAg
ICAgICAgKigodWludDMyICopdmFsdWUpID0gMjsKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9O
T19FUlJPUjsKICAgICAgICAgfQorCisgICAgY2FzZSBOUE5WcHJpdmF0ZU1vZGVCb29sOiB7Cisg
ICAgICAgIFBhZ2UqIHBhZ2UgPSBtX3BhcmVudEZyYW1lLT5wYWdlKCk7CisgICAgICAgIGlmICgh
cGFnZSkKKyAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgICAg
KigoTlBCb29sKil2YWx1ZSkgPSAoIXBhZ2UtPnNldHRpbmdzKCkgfHwgcGFnZS0+c2V0dGluZ3Mo
KS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKT8gdHJ1ZSA6IGZhbHNlOworICAgICAgICAgcmV0
dXJuIE5QRVJSX05PX0VSUk9SOworICAgIH0KICAgICAgICAgLy8gZmFsbCB0aHJvdWdoCiAgICAg
ZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGdldFZhbHVlU3RhdGljKHZhcmlhYmxlLCB2YWx1ZSk7
Ci0tIAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="27962"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47448</attachid>
            <date>2010-01-26 14:13:38 -0800</date>
            <delta_ts>2010-01-27 14:56:22 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>0001-Qt-Support-private-browsing-mode-in-plugins.patch</filename>
            <type>text/plain</type>
            <size>11000</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSA5Yjc0ZjlhZWU1ZTYxNTlhZjc1ODAwNTNhODRlNjhmM2IxNWNhYmZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+
CkRhdGU6IE1vbiwgNCBKYW4gMjAxMCAyMTo1ODo1MSArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIFtR
dF0gU3VwcG9ydCBwcml2YXRlIGJyb3dzaW5nIG1vZGUgaW4gcGx1Z2lucwoKQWRkIHN1cHBvcnQg
Zm9yIE5QTlZwcml2YXRlTW9kZUJvb2wgcHJvcGVydHkgaW4gcGx1Z2lucy4KClNlZSBhbHNvOiBo
dHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9Fbi9TdXBwb3J0aW5nX3ByaXZhdGVfYnJvd3Np
bmdfaW5fcGx1Z2lucwoKVGhlIE5QTlZwcml2YXRlTW9kZUJvb2wgcHJvcGVydHkgaXMgc3VwcG9y
dGVkIGFzIHNjcmlwdGFibGUgcHJvcGVydHkgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZAppbiB0aGUg
dGVzdCBXZWJLaXQgcGx1Z2luLiBUaGUgTWFjIHBsYXRmb3JtIGFsc28gc3VwcG9ydHMgYSBjYWNo
ZWRQcml2YXRlQnJvd3NpbmdFbmFibGVkCnByb3BlcnR5IGltcGxlbWVudGVkIGluIHRoZSB0ZXN0
IHBsdWdpbi4gVGhpcyBhbGxvd3MgdGhlIExheW91dCB0ZXN0IHBsdWdpbnMvcHJpdmF0ZS1icm93
c2luZy1tb2RlLmh0bWwKdG8gcmV0cmlldmUgdGhlIHByZXZpb3VzIHZhbHVlIG9mIE5QTlZwcml2
YXRlTW9kZUJvb2wgaW4gdGhlIHRlc3QgcGx1Z2luLiBEdWUgdG8gdGhlIHBsYXRmb3JtLXNwZWNp
ZmljCm92ZXJoZWFkIHJlcXVpcmVkIHRvIHN1cHBvcnQgdGhpcyBiZXNwb2tlIHByb3BlcnR5IGl0
IGlzIG5vdCBpbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIHRoaXMgcGF0Y2gsIGluc3RlYWQKYSBuZXcg
dGVzdCwgcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi5odG1sLCBpcyBhZGRlZCB0byBl
bnN1cmUgdGhhdCBzZXR0aW5nIGFuZCByZXNldHRpbmcgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCB3
b3JrcyBhcyBleHBlY3RlZC4KCmh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMzMTgwCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDI4ICsrKysrKysrKysrKysKIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkICAgICAgICAgICAgICAgICAgIHwgICAgNSArKwogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXNub3dsZW9wYXJkL1NraXBwZWQgICAgICAgfCAgICAxICsKIExheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQgICAgICAgICAgICAgICAgICAgIHwgICAgOCArKy0KIExheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9Ta2lwcGVkICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiAuLi4vcGx1Z2lu
cy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi1leHBlY3RlZC50eHQgICB8ICAgMTEgKysrKysKIExh
eW91dFRlc3RzL3BsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1tb2RlLTIuaHRtbCAgIHwgICA0MyAr
KysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDI2ICsrKysrKysrKysrKwogV2ViQ29yZS9wbHVnaW5zL3F0L1Bs
dWdpblZpZXdRdC5jcHAgICAgICAgICAgICAgICAgfCAgICA4ICsrKysKIDkgZmlsZXMgY2hhbmdl
ZCwgMTMwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi1leHBlY3RlZC50eHQK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbHVnaW5zL3ByaXZhdGUtYnJvd3Npbmct
bW9kZS0yLmh0bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWFlM2Y1Yy4uNjVmNDAxYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDEwLTAxLTI2ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gU3Vw
cG9ydCBwcml2YXRlIGJyb3dzaW5nIG1vZGUgaW4gcGx1Z2lucworCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBOUE5WcHJpdmF0ZU1vZGVCb29sIHByb3BlcnR5IGluIHBsdWdpbnMuCisKKyAgICAg
ICAgU2VlIGFsc286IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL0VuL1N1cHBvcnRpbmdf
cHJpdmF0ZV9icm93c2luZ19pbl9wbHVnaW5zCisKKyAgICAgICAgVGhlIE5QTlZwcml2YXRlTW9k
ZUJvb2wgcHJvcGVydHkgaXMgc3VwcG9ydGVkIGFzIHNjcmlwdGFibGUgcHJvcGVydHkgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZAorICAgICAgICBpbiB0aGUgdGVzdCBXZWJLaXQgcGx1Z2luLiBUaGUg
TWFjIHBsYXRmb3JtIGFsc28gc3VwcG9ydHMgYSBjYWNoZWRQcml2YXRlQnJvd3NpbmdFbmFibGVk
CisgICAgICAgIHByb3BlcnR5IGltcGxlbWVudGVkIGluIHRoZSB0ZXN0IHBsdWdpbi4gVGhpcyBh
bGxvd3MgdGhlIExheW91dCB0ZXN0CisgICAgICAgIHBsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1t
b2RlLmh0bWwgdG8gcmV0cmlldmUgdGhlIHByZXZpb3VzIHZhbHVlIG9mIE5QTlZwcml2YXRlTW9k
ZUJvb2wKKyAgICAgICAgaW4gdGhlIHRlc3QgcGx1Z2luLiBEdWUgdG8gdGhlIHBsYXRmb3JtLXNw
ZWNpZmljIG92ZXJoZWFkIHJlcXVpcmVkIHRvIHN1cHBvcnQgdGhpcyBiZXNwb2tlCisgICAgICAg
IHByb3BlcnR5IGl0IGlzIG5vdCBpbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIHRoaXMgcGF0Y2gsIGlu
c3RlYWQgYSBuZXcgdGVzdCwKKyAgICAgICAgcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUt
Mi5odG1sLCBpcyBhZGRlZCB0byBlbnN1cmUgdGhhdCBzZXR0aW5nIGFuZCByZXNldHRpbmcKKyAg
ICAgICAgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCB3b3JrcyBhcyBleHBlY3RlZC4KKworICAgICAg
ICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzE4MAorCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXNub3dsZW9w
YXJkL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vU2tpcHBlZDoKKyAgICAgICAgKiBwbHVnaW5zL3ByaXZhdGUtYnJvd3Npbmct
bW9kZS0yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGx1Z2lucy9wcml2YXRlLWJy
b3dzaW5nLW1vZGUtMi5odG1sOiBBZGRlZC4KKwogMjAxMC0wMS0yNiAgQ2hyaXMgRmxlaXphY2gg
IDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFub3RoZXIgYXR0ZW1wdCB0byBnZXQg
dGhpcyB0ZXN0IHRvIHBhc3MgZm9yIEdUSy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXgg
NDU1MDk2YS4uNDRlNmY1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTM2NTksNiAr
MzY1OSwxMSBAQCBwbHVnaW5zL3BsdWdpbi1qYXZhc2NyaXB0LWFjY2Vzcy5odG1sCiAjIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDU2MQogcGx1Z2lucy9wcml2YXRl
LWJyb3dzaW5nLW1vZGUuaHRtbAogCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMDU2MQorcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUuaHRtbAorIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMxODAKK3BsdWdpbnMvcHJpdmF0
ZS1icm93c2luZy1tb2RlLTIuaHRtbAorCiAjICAgVGVzdHMgZ2VuZXJhdGluZyBuZXcgcmVzdWx0
cwogcGx1Z2lucy9lbWJlZC1hdHRyaWJ1dGVzLXN0eWxlLmh0bWwKIHBsdWdpbnMvbmV0c2NhcGUt
ZG9tLWFjY2Vzcy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtc25v
d2xlb3BhcmQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVvcGFyZC9T
a2lwcGVkCmluZGV4IGEyMDA1MzAuLmZjZDI2MDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy1zbm93bGVvcGFyZC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy1zbm93bGVvcGFyZC9Ta2lwcGVkCkBAIC0xMSw2ICsxMSw3IEBAIHBsdWdpbnMvbW91c2Ut
ZXZlbnRzLmh0bWwKIAogIyBUaGlzIG5lZWRzIGEgbmV3ZXIgdmVyc2lvbiBvZiBTYWZhcmkuCiBw
bHVnaW5zL3ByaXZhdGUtYnJvd3NpbmctbW9kZS5odG1sCitwbHVnaW5zL3ByaXZhdGUtYnJvd3Np
bmctbW9kZS0yLmh0bWwKIAogIyBSYWRhciBidWdzIG5lZWRlZCBmb3IgdGhlc2UKIGZhc3QvY2Fu
dmFzL3NldC1jb2xvcnMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggMGE1ZjBmMy4u
YTFmNjFjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0yNTgsOSArMjU4LDYgQEAgZmFz
dC9pbWFnZXMvZmF2aWNvbi1hcy1pbWFnZS5odG1sCiBmYXN0L2ltYWdlcy9pY29uLTBjb2xvcnMu
aHRtbAogZmFzdC9pbWFnZXMvaWNvbi1kZWNvZGluZy5odG1sCiAKLSMgLS0tLS0tLSBtaXNzaW5n
IHByaXZhdGUgYnJvd3Npbmcgc3VwcG9ydD8KLXBsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1tb2Rl
Lmh0bWwKLQogIyAtLS0tLS0tIG1pc3NpbmcgcnVieSBhbm5vdGF0aW9uIHN1cHBvcnQgZm9yIGph
cGFuZXNlIGZvbnRzCiBmYXN0L3J1YnkvcnVieS1lbXB0eS1ydC5odG1sCiBmYXN0L3J1YnkvcnVi
eS1sZW5ndGguaHRtbApAQCAtNTExMCwzICs1MTA3LDggQEAgaHR0cC90ZXN0cy9taXNjL3Nsb3ct
bG9hZGluZy1tYXNrLmh0bWwKIAogIyBza2lwIEdlb2xvY2F0aW9uIHRlc3RzCiBmYXN0L2RvbS9X
aW5kb3cvd2luZG93LXByb3BlcnRpZXMtZ2VvbG9jYXRpb24uaHRtbAorCisjIFNraXBwZWQgcGVu
ZGluZyBzdXBwb3J0IGZvciBoYWx0aW5nIHBsdWdpbnMgd2hlbiBwbHVnaW5zRW5hYmxlZCBpcyBz
ZXQgdG8gZmFsc2UsCisjIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzMxODAuCisjIENvcmUgZnVuY3Rpb25hbGl0eSBpcyB0ZXN0ZWQgaW4gcGx1Z2lucy9wcml2
YXRlLWJyb3dzaW5nLW1vZGUtMi5odG1sCitwbHVnaW5zL3ByaXZhdGUtYnJvd3NpbmctbW9kZS5o
dG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IDM4YjM2ZGMuLjA5NjBhMGEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC02NjcsNiArNjY3LDkgQEAgZmFzdC9kb20vV2luZG93
L3Nsb3dfdW5sb2FkX2hhbmRsZXIuaHRtbAogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMwMzQ4PgogcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUuaHRtbAog
CisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzE4MAorcGx1Z2lu
cy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi5odG1sCisKICMgU2tpcCB0aGVzZSB0d28gZmFpbHVy
ZXMgSSBpbnRyb2R1Y2VkIHRoaXMgbW9ybmluZyB3aGlsZSBJIGV4cGxvcmUgdGhlbS4KIGh0dHAv
dGVzdHMvZ2xvYmFsaGlzdG9yeS9oaXN0b3J5LWRlbGVnYXRlLWJhc2ljLXZpc2l0ZWQtbGlua3Mu
aHRtbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3ByaXZhdGUtYnJvd3Npbmct
bW9kZS0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsdWdpbnMvcHJpdmF0ZS1icm93c2lu
Zy1tb2RlLTItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjE4MjI2NmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL3ByaXZhdGUt
YnJvd3NpbmctbW9kZS0yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0cyB0aGF0
IE5QTlZwcml2YXRlTW9kZUJvb2wgaXMgc3VwcG9ydGVkIGJ5IHRoZSBXZWJLaXQgcGx1Z2luIHZp
ZXcuIFRoaXMgdGVzdCBpcyBmb3IgV2ViS2l0IHBsYXRmb3JtcyB0aGF0IHdpc2ggdG8gc3VwcG9y
dCBOUE5WcHJpdmF0ZU1vZGVCb29sIGJ1dCBkbyBub3Qgd2lzaCB0byBpbXBsZW1lbnQgdGhlIHBy
ZWZlcmVuY2UgY2hhbmdlIGxpc3RlbmVyIHJlcXVpcmVkIHRvIHN1cHBvcnQgYSBjYWNoZWRQcml2
YXRlQnJvd3NpbmdFbmFibGVkIHByb3BlcnR5IHNpbWlsYXIgdG8gdGhlIG9uZSBwcm92aWRlZCBi
eSBTYWZhcmkgYW5kIHRlc3RlZCBmb3IgaW4gcHJpdmF0ZS1icm93c2luZy1tb2RlLmh0bWwKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcGx1Z2luMS5wcml2YXRlQnJvd3Np
bmdFbmFibGVkIGlzIGZhbHNlCitQQVNTIHBsdWdpbjEucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBp
cyB0cnVlCitQQVNTIHBsdWdpbjIucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBpcyB0cnVlCitQQVNT
IHBsdWdpbjEucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBpcyBmYWxzZQorUEFTUyBwbHVnaW4yLnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQgaXMgZmFsc2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi5odG1sIGIvTGF5b3V0VGVzdHMvcGx1Z2lu
cy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjJiMWU2MWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbHVnaW5z
L3ByaXZhdGUtYnJvd3NpbmctbW9kZS0yLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
K2Z1bmN0aW9uIHJ1blRlc3QoKSAKK3sKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IGNhbiBvbmx5IHJ1biBmcm9tIHdpdGhp
biBEdW1wUmVuZGVyVHJlZSBiZWNhdXNlIGl0IHJlcXVpcmVzIFRlc3ROZXRzY2FwZVBsdWdpbi5c
biIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHBsdWdpbjEgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJlbWJlZCIpOworICAgIHBsdWdpbjEudHlwZSA9ICJhcHBsaWNhdGlv
bi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHBsdWdpbjEpOworICAgIAorICAgIHNob3VsZEJlKCJwbHVnaW4xLnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQiLCAiZmFsc2UiKTsKKworICAgIC8vIE5vdyBlbmFibGUgcHJpdmF0ZSBicm93c2luZwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1ZSk7
CisKKyAgICBzaG91bGRCZSgicGx1Z2luMS5wcml2YXRlQnJvd3NpbmdFbmFibGVkIiwgInRydWUi
KTsKKyAgICAKKyAgICBwbHVnaW4yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZW1iZWQiKTsK
KyAgICBwbHVnaW4yLnR5cGUgPSAiYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSI7
CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwbHVnaW4yKTsKKyAgICAKKyAgICBzaG91
bGRCZSgicGx1Z2luMi5wcml2YXRlQnJvd3NpbmdFbmFibGVkIiwgInRydWUiKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBz
aG91bGRCZSgicGx1Z2luMS5wcml2YXRlQnJvd3NpbmdFbmFibGVkIiwgImZhbHNlIik7CisgICAg
c2hvdWxkQmUoInBsdWdpbjIucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCIsICJmYWxzZSIpOworfQor
PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBOUE5WcHJpdmF0
ZU1vZGVCb29sIGlzIHN1cHBvcnRlZCBieSB0aGUgV2ViS2l0IHBsdWdpbiB2aWV3LiBcbiBUaGlz
IHRlc3QgaXMgZm9yIFdlYktpdCBwbGF0Zm9ybXMgdGhhdCB3aXNoIHRvIHN1cHBvcnQgTlBOVnBy
aXZhdGVNb2RlQm9vbCBidXQgZG8gbm90IHdpc2ggdG8gaW1wbGVtZW50IHRoZSBwcmVmZXJlbmNl
IGNoYW5nZSBsaXN0ZW5lciByZXF1aXJlZCB0byBzdXBwb3J0IGEgY2FjaGVkUHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCBwcm9wZXJ0eSBzaW1pbGFyIHRvIHRoZSBvbmUgcHJvdmlkZWQgYnkgU2FmYXJp
IGFuZCB0ZXN0ZWQgZm9yIGluIHByaXZhdGUtYnJvd3NpbmctbW9kZS5odG1sIik7CisKKworc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NzgyOGZiLi5lOTA4Y2RlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI5IEBACisyMDEwLTAxLTI2ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAcm9iZXJ0aG9nYW4u
bmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtR
dF0gU3VwcG9ydCBwcml2YXRlIGJyb3dzaW5nIG1vZGUgaW4gcGx1Z2lucworCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBOUE5WcHJpdmF0ZU1vZGVCb29sIHByb3BlcnR5IGluIHBsdWdpbnMuCisK
KyAgICAgICAgU2VlIGFsc286IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL0VuL1N1cHBv
cnRpbmdfcHJpdmF0ZV9icm93c2luZ19pbl9wbHVnaW5zCisKKyAgICAgICAgVGhlIE5QTlZwcml2
YXRlTW9kZUJvb2wgcHJvcGVydHkgaXMgc3VwcG9ydGVkIGFzIHNjcmlwdGFibGUgcHJvcGVydHkg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZAorICAgICAgICBpbiB0aGUgdGVzdCBXZWJLaXQgcGx1Z2lu
LiBUaGUgTWFjIHBsYXRmb3JtIGFsc28gc3VwcG9ydHMgYSBjYWNoZWRQcml2YXRlQnJvd3NpbmdF
bmFibGVkCisgICAgICAgIHByb3BlcnR5IGltcGxlbWVudGVkIGluIHRoZSB0ZXN0IHBsdWdpbi4g
VGhpcyBhbGxvd3MgdGhlIExheW91dCB0ZXN0CisgICAgICAgIHBsdWdpbnMvcHJpdmF0ZS1icm93
c2luZy1tb2RlLmh0bWwgdG8gcmV0cmlldmUgdGhlIHByZXZpb3VzIHZhbHVlIG9mIE5QTlZwcml2
YXRlTW9kZUJvb2wKKyAgICAgICAgaW4gdGhlIHRlc3QgcGx1Z2luLiBEdWUgdG8gdGhlIHBsYXRm
b3JtLXNwZWNpZmljIG92ZXJoZWFkIHJlcXVpcmVkIHRvIHN1cHBvcnQgdGhpcyBiZXNwb2tlCisg
ICAgICAgIHByb3BlcnR5IGl0IGlzIG5vdCBpbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIHRoaXMgcGF0
Y2gsIGluc3RlYWQgYSBuZXcgdGVzdCwKKyAgICAgICAgcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5n
LW1vZGUtMi5odG1sLCBpcyBhZGRlZCB0byBlbnN1cmUgdGhhdCBzZXR0aW5nIGFuZCByZXNldHRp
bmcKKyAgICAgICAgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCB3b3JrcyBhcyBleHBlY3RlZC4KKwor
ICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzE4MAorCisg
ICAgICAgIFRlc3Q6IHBsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1tb2RlLTIuaHRtbAorCisgICAg
ICAgICogcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luVmlldzo6Z2V0VmFsdWUpOgorCiAyMDEwLTAxLTI2ICBTdGV2ZSBGYWxrZW5idXJnICA8c2Zh
bGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcCBiL1dlYkNvcmUvcGx1
Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCmluZGV4IDQ5YzAwMDAuLjAwYTkwNzMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCisrKyBiL1dlYkNvcmUvcGx1
Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCkBAIC02NDAsNiArNjQwLDE0IEBAIE5QRXJyb3IgUGx1
Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQogICAg
ICAgICAgICAgKigodWludDMyICopdmFsdWUpID0gMjsKICAgICAgICAgICAgIHJldHVybiBOUEVS
Ul9OT19FUlJPUjsKICAgICAgICAgfQorCisgICAgY2FzZSBOUE5WcHJpdmF0ZU1vZGVCb29sOiB7
CisgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX3BhcmVudEZyYW1lLT5wYWdlKCk7CisgICAgICAgIGlm
ICghcGFnZSkKKyAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAg
ICAqKChOUEJvb2wqKXZhbHVlKSA9ICFwYWdlLT5zZXR0aW5ncygpIHx8IHBhZ2UtPnNldHRpbmdz
KCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VS
Uk9SOworICAgIH0KICAgICAgICAgLy8gZmFsbCB0aHJvdWdoCiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIGdldFZhbHVlU3RhdGljKHZhcmlhYmxlLCB2YWx1ZSk7Ci0tIAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="29879"
          type_id="1"
          status="+"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="30029"
          type_id="3"
          status="-"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>