<?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>76181</bug_id>
          
          <creation_ts>2012-01-12 08:13:59 -0800</creation_ts>
          <short_desc>[GTK] FullScreen signals</short_desc>
          <delta_ts>2012-02-23 00:46:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          <dependson>76911</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alex</cc>
    
    <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>534850</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-12 08:13:59 -0800</bug_when>
    <thetext>WebKit1 pendant of bug 76166</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534856</commentid>
    <comment_count>1</comment_count>
      <attachid>122246</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-12 08:17:51 -0800</bug_when>
    <thetext>Created attachment 122246
WebKit1 Fullscreen signals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534859</commentid>
    <comment_count>2</comment_count>
      <attachid>122247</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-12 08:24:59 -0800</bug_when>
    <thetext>Created attachment 122247
WebKit1 Fullscreen signals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534860</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-12 08:25:06 -0800</bug_when>
    <thetext>Attachment 122246 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1

Tools/GtkLauncher/main.c:129:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/GtkLauncher/main.c:139:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/GtkLauncher/main.c:144:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/GtkLauncher/main.c:145:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/GtkLauncher/main.c:146:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/GtkLauncher/main.c:151:  hide_widget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Tools/GtkLauncher/main.c:154:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/GtkLauncher/main.c:157:  show_widget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Tools/GtkLauncher/main.c:160:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/GtkLauncher/main.c:167:  Declaration has space between * and variable name in GtkWidget* topLevelWindow  [whitespace/declaration] [3]
Tools/GtkLauncher/main.c:169:  Declaration has space between * and variable name in GtkWidget* dialog  [whitespace/declaration] [3]
Tools/GtkLauncher/main.c:169:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/GtkLauncher/main.c:174:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/GtkLauncher/main.c:177:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/GtkLauncher/main.c:178:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/GtkLauncher/main.c:181:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/GtkLauncher/main.c:187:  Declaration has space between * and variable name in GtkWidget* topLevelWindow  [whitespace/declaration] [3]
Tools/GtkLauncher/main.c:189:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/gtk/tests/testwebview.c&quot;
Total errors found: 18 in 8 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>537907</commentid>
    <comment_count>4</comment_count>
      <attachid>122247</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-01-18 09:09:15 -0800</bug_when>
    <thetext>Comment on attachment 122247
WebKit1 Fullscreen signals

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

An overall comment, I think it would fit using the policy action mechanism here.

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:932
&gt; +        return;

Shouldn&apos;t this be if (returnValue) ? Otherwise you are doing nothing if the signal is not handled? Maybe I&apos;m on crack.

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:951
&gt; +    g_signal_emit_by_name(m_webView, &quot;leaving-fullscreen&quot;, &amp;returnValue);

Shouldn&apos;t this also allow to cancel the action?

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2622
&gt; +    /**

Missing Since: in the signals?

&gt; Source/WebKit/gtk/webkit/webkitwebview.h:180
&gt; +    gboolean                   (* leaving_fullscreen) (WebKitWebView   *web_view);

You need to remove padding from the class, otherwise you break the ABI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538616</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-19 04:18:05 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 122247 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122247&amp;action=review
&gt; 
&gt; An overall comment, I think it would fit using the policy action mechanism here.
&gt; 
&gt; &gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:932
&gt; &gt; +        return;
&gt; 
&gt; Shouldn&apos;t this be if (returnValue) ? Otherwise you are doing nothing if the signal is not handled? Maybe I&apos;m on crack.
&gt; 

I don&apos;t think so. returnValue would be FALSE here if the signal wasn&apos;t handled properly.

&gt; &gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:951
&gt; &gt; +    g_signal_emit_by_name(m_webView, &quot;leaving-fullscreen&quot;, &amp;returnValue);
&gt; 
&gt; Shouldn&apos;t this also allow to cancel the action?
&gt; 

I haven&apos;t found a use-case for this but yeah, I&apos;d be Ok with allowing to cancel the action.

&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2622
&gt; &gt; +    /**
&gt; 
&gt; Missing Since: in the signals?
&gt; 
&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.h:180
&gt; &gt; +    gboolean                   (* leaving_fullscreen) (WebKitWebView   *web_view);
&gt; 
&gt; You need to remove padding from the class, otherwise you break the ABI.

Ok!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538659</commentid>
    <comment_count>6</comment_count>
      <attachid>123118</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-19 05:46:17 -0800</bug_when>
    <thetext>Created attachment 123118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547737</commentid>
    <comment_count>7</comment_count>
      <attachid>123118</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-02-02 01:49:49 -0800</bug_when>
    <thetext>Comment on attachment 123118
Patch

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

r- at least for the accumulators used.

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:932
&gt; +        return;

If the handler handled the signal it will return TRUE, so I still think if you need to flip the boolean here. Perhaps this is not working correctly because you are using the wrong accumulator.

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:951
&gt; +    g_signal_emit_by_name(m_webView, &quot;leaving-fullscreen&quot;, &amp;returnValue);

You need to check the return value and do nothing if it&apos;s TRUE, per what the documentation says.

&gt; Source/WebKit/gtk/tests/testwebview.c:478
&gt; +    g_test_add_data_func(&quot;/webkit/webview/fullscreen&quot;, (gconstpointer) TRUE, test_webkit_web_view_fullscreen);

No spaces before the cast?

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2638
&gt; +     *

FALSE to block the event? Usually TRUE = hanlded (&quot;block the event&quot;), FALSE = continue emission. So I think you are saying the same thing twice basically.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2646
&gt; +                         g_signal_accumulator_first_wins, 0,

I think you want true_handled, not first_wins.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2670
&gt; +                         g_signal_accumulator_first_wins, 0,

Same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547745</commentid>
    <comment_count>8</comment_count>
      <attachid>123118</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-02-02 02:15:47 -0800</bug_when>
    <thetext>Comment on attachment 123118
Patch

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

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:943
&gt; +    GtkWidget* topLevelWindow = gtk_widget_get_toplevel(GTK_WIDGET(m_webView));
&gt; +    if (gtk_widget_is_toplevel(topLevelWindow))
&gt; +        g_signal_connect(topLevelWindow, &quot;key-press-event&quot;, G_CALLBACK(onFullscreenGtkKeyPressEvent), this);
&gt; +
&gt; +    gtk_window_fullscreen(GTK_WINDOW(topLevelWindow));

You should check topLevelWindow is actually a GTK_WINDOW (and not a GtkOffscreenWindow, see bug #76911)

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:952
&gt; +    gboolean returnValue;
&gt; +    g_signal_emit_by_name(m_webView, &quot;leaving-fullscreen&quot;, &amp;returnValue);
&gt; +

You should return here if returnValue is TRUE.

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:955
&gt; +    GtkWidget* topLevelWindow = gtk_widget_get_toplevel(GTK_WIDGET(m_webView));
&gt; +    if (gtk_widget_is_toplevel(topLevelWindow))
&gt; +        g_signal_handlers_disconnect_by_func(topLevelWindow, reinterpret_cast&lt;void*&gt;(onFullscreenGtkKeyPressEvent), this);

You should check topLevelWindow is actually a GTK_WINDOW (and not a GtkOffscreenWindow, see bug #76911)

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:959
&gt; +    if (gtk_widget_is_toplevel(topLevelWindow))
&gt; +        gtk_window_unfullscreen(GTK_WINDOW(topLevelWindow));

if topLevelWindow is not a topLevel you shouldn&apos;t get here, I guess.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1266
&gt; +static gboolean webkit_web_view_real_entering_fullscreen(WebKitWebView* webView)
&gt; +{
&gt; +    return TRUE;
&gt; +}
&gt; +
&gt; +static gboolean webkit_web_view_real_leaving_fullscreen(WebKitWebView* webView)
&gt; +{
&gt; +    return TRUE;
&gt; +}

Default implementation of these happen after emitting the signal, so they should return FALSE or just don&apos;t add them, since FALSE is returned by default.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2634
&gt; +     * its top level window. This signal can be used by client code to
&gt; +     * request permission to the user prior doing the full screen
&gt; +     * transition and eventually prepare the top-level window
&gt; +     * (e.g. hide some widgets that would otherwise be part of the
&gt; +     * full screen window).

It can be used to handle the fullscreen yourself, I guess. You know what your toplevel window is, so you can do gtk_window_fullscreen by yourself, or even for preventing that window is fullscreened. I would simply say that the default implementation of the signals is not handled is to full screen the current toplevel window of web_view.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2644
&gt; +                         (GSignalFlags) G_SIGNAL_RUN_LAST,

I don&apos;t think you need the cast

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2646
&gt; +                         g_signal_accumulator_first_wins, 0,

Why first_wins instead of true_handled?

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2658
&gt; +     * Emitted when the WebView is about to restore its top level
&gt; +     * window out of its full screen state. This signal can be used by
&gt; +     * client code to restore widgets hidden during the
&gt; +     * entering-fullscreen stage for instance.

or to handling the unfullscreen by yourself, I guess again.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2660
&gt; +
&gt; +     * Returns: %TRUE to stop other handlers from being invoked for the event.

There&apos;s an * missing there

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2668
&gt; +                         (GSignalFlags) G_SIGNAL_RUN_LAST,

I don&apos;t think you need the cast

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2670
&gt; +                         g_signal_accumulator_first_wins, 0,

Why first_wins instead of true_handled?

&gt; Tools/GtkLauncher/main.c:130
&gt; +    if (GTK_IS_WIDGET(dialog))
&gt; +        g_signal_emit_by_name(GTK_DIALOG(dialog), &quot;close&quot;);
&gt; +    return FALSE;

why not just destroy the dialog?

&gt; Tools/GtkLauncher/main.c:138
&gt; +        GtkWidget *topLevelWindow = gtk_widget_get_toplevel(GTK_WIDGET(webView));

You should check topLevelWindow is actually a GTK_WINDOW (and not a GtkOffscreenWindow, see bug #76911)

&gt; Tools/GtkLauncher/main.c:139
&gt; +        GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(topLevelWindow),

topLevelWindow might be null, use topLevelWindow ? GTK_WINDOW(topLevelWindow) : NULL

&gt; Tools/GtkLauncher/main.c:146
&gt; +        g_signal_connect_swapped(dialog, &quot;response&quot;, G_CALLBACK(gtk_widget_destroy), dialog);
&gt; +        g_timeout_add(1500, (GSourceFunc) webViewFullscreenMessageWindowClose, dialog);
&gt; +        gtk_dialog_run(GTK_DIALOG(dialog));

This is blocking and dialog is modal, so you don&apos;t need to connect to response nor to add the timeout, just destroy the dialog after dialog_run()

&gt; Tools/GtkLauncher/main.c:148
&gt; +    return TRUE;

You are only handling the signal when GDK_WINDOW_STATE_FULLSCREEN is fullscreen, so you should return FALSE here.

&gt; Tools/GtkLauncher/main.c:160
&gt; +        gtk_widget_show_all(widget);

Why show_all? you are iterating all widgets, I think you should use show() instead of show_all()

&gt; Tools/GtkLauncher/main.c:176
&gt; +        g_signal_connect(topLevelWindow, &quot;window-state-event&quot;, G_CALLBACK(webViewWindowStateEvent), webView);

I wonder whether the default impl for entering/leaving fullscreen should happen in the object method handler instead of after emitting the signal. That way, you could connect to entering-fullscreen with g_signal_connect to show the confirm dialog, and g_signal_connect_after to show the information dialog.

&gt; Tools/GtkLauncher/main.c:178
&gt; +        gtk_widget_destroy(GTK_WIDGET(dialog));

No need to cast, dialog is a GtkWidget

&gt; Tools/GtkLauncher/main.c:179
&gt; +        return TRUE;

I think you actually want to return FALSE to allow the default impl to fullscreen the window

&gt; Tools/GtkLauncher/main.c:181
&gt; +    gtk_widget_destroy(GTK_WIDGET(dialog));

Ditto

&gt; Tools/GtkLauncher/main.c:190
&gt; +    return TRUE;

This should be FALSE too, I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547747</commentid>
    <comment_count>9</comment_count>
      <attachid>123118</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-02 02:19:55 -0800</bug_when>
    <thetext>Comment on attachment 123118
Patch

Needs work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547761</commentid>
    <comment_count>10</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-02 03:40:13 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Tools/GtkLauncher/main.c:146
&gt; &gt; +        g_signal_connect_swapped(dialog, &quot;response&quot;, G_CALLBACK(gtk_widget_destroy), dialog);
&gt; &gt; +        g_timeout_add(1500, (GSourceFunc) webViewFullscreenMessageWindowClose, dialog);
&gt; &gt; +        gtk_dialog_run(GTK_DIALOG(dialog));
&gt; 
&gt; This is blocking and dialog is modal, so you don&apos;t need to connect to response nor to add the timeout, just destroy the dialog after dialog_run()
&gt; 

I need that code to close the popup even if the user doesn&apos;t explicit close it.

&gt; 
&gt; &gt; Tools/GtkLauncher/main.c:176
&gt; &gt; +        g_signal_connect(topLevelWindow, &quot;window-state-event&quot;, G_CALLBACK(webViewWindowStateEvent), webView);
&gt; 
&gt; I wonder whether the default impl for entering/leaving fullscreen should happen in the object method handler instead of after emitting the signal. That way, you could connect to entering-fullscreen with g_signal_connect to show the confirm dialog, and g_signal_connect_after to show the information dialog.
&gt; 

Hum, I&apos;ll experiment with that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547767</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-02 04:07:38 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; 
&gt; &gt; &gt; Tools/GtkLauncher/main.c:176
&gt; &gt; &gt; +        g_signal_connect(topLevelWindow, &quot;window-state-event&quot;, G_CALLBACK(webViewWindowStateEvent), webView);
&gt; &gt; 
&gt; &gt; I wonder whether the default impl for entering/leaving fullscreen should happen in the object method handler instead of after emitting the signal. That way, you could connect to entering-fullscreen with g_signal_connect to show the confirm dialog, and g_signal_connect_after to show the information dialog.
&gt; &gt; 
&gt; 
&gt; Hum, I&apos;ll experiment with that!

So you meant doing gtk_window_fullscreen() in webkit_web_view_real_entering_fullscreen() and the opposite in webkit_web_view_real_leaving_fullscreen()?

If so, that doesn&apos;t work and looks awkward, actually. Also if the UA blocks the entering-fullscreen signal the element remains zoomed-out in the un-fullscreened window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547774</commentid>
    <comment_count>12</comment_count>
      <attachid>125110</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-02 04:16:49 -0800</bug_when>
    <thetext>Created attachment 125110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547778</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 04:21:50 -0800</bug_when>
    <thetext>Attachment 125110 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1

Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:935:  Missing space before ( in if(  [whitespace/parens] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/gtk/tests/testwebview.c&quot;
Total errors found: 1 in 8 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>556239</commentid>
    <comment_count>14</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-14 05:13:31 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Attachment 125110 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1
&gt; 
&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:935:  Missing space before ( in if(  [whitespace/parens] [5]
&gt; WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/gtk/tests/testwebview.c&quot;
&gt; Total errors found: 1 in 8 files
&gt; 

Carlos and Martin, can you please review this patch when you find some time? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558246</commentid>
    <comment_count>15</comment_count>
      <attachid>125110</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-16 09:00:38 -0800</bug_when>
    <thetext>Comment on attachment 125110
Patch

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

Looks good to me, but you need to find one more reviewer to approve the API.

&gt;&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:935
&gt;&gt; +    if(!widgetIsOnscreenToplevelWindow(window))
&gt; 
&gt; Missing space before ( in if(  [whitespace/parens] [5]

Please fix this before landing.

&gt; Source/WebKit/gtk/tests/testwebview.c:368
&gt; +    // create and send the event

You can just omit this comment or, if not, be sure to use a capital letter and a period.

&gt; Source/WebKit/gtk/tests/testwebview.c:476
&gt; +    g_test_add_data_func(&quot;/webkit/webview/fullscreen&quot;, (gconstpointer)FALSE, test_webkit_web_view_fullscreen);
&gt; +    g_test_add_data_func(&quot;/webkit/webview/fullscreen-blocked&quot;, (gconstpointer)TRUE, test_webkit_web_view_fullscreen);

You should use GINT_TO_POINTER here instead of casting yourself, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558256</commentid>
    <comment_count>16</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-16 09:10:34 -0800</bug_when>
    <thetext>Adding more reviewers then :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558276</commentid>
    <comment_count>17</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-16 09:43:39 -0800</bug_when>
    <thetext>I&apos;ll update the patch soon but it&apos;d be nice to have feedback about the API nonetheless. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559038</commentid>
    <comment_count>18</comment_count>
      <attachid>127550</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-17 01:44:43 -0800</bug_when>
    <thetext>Created attachment 127550
Rebased Patch

Also addressing review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560202</commentid>
    <comment_count>19</comment_count>
      <attachid>127550</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-20 05:58:44 -0800</bug_when>
    <thetext>Comment on attachment 127550
Rebased Patch

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

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:970
&gt; +    g_signal_emit_by_name(m_webView, &quot;entering-fullscreen&quot;, &amp;returnValue);

The signal seems sensible to me, but I think we should take advantage of the DOM bindings and also provide the element that is being fullscreened.

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:984
&gt; +    gtk_window_fullscreen(GTK_WINDOW(window));

I&apos;m not sure about this. I guess it makes sense to fullscreen by default, but I wonder if it may be problematic for non-browser use cases, to do it by default if the page requests. hmm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560209</commentid>
    <comment_count>20</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-20 06:16:56 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 127550 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127550&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:970
&gt; &gt; +    g_signal_emit_by_name(m_webView, &quot;entering-fullscreen&quot;, &amp;returnValue);
&gt; 
&gt; The signal seems sensible to me, but I think we should take advantage of the DOM bindings and also provide the element that is being fullscreened.
&gt; 

Embedded in the signal data? Hum I guess that&apos;d be doable.

&gt; &gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:984
&gt; &gt; +    gtk_window_fullscreen(GTK_WINDOW(window));
&gt; 
&gt; I&apos;m not sure about this. I guess it makes sense to fullscreen by default, but I wonder if it may be problematic for non-browser use cases, to do it by default if the page requests. hmm

Well, this whole feature is protected by a web-setting which defaults to FALSE, IIRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560210</commentid>
    <comment_count>21</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-20 06:18:25 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; &gt; &gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:970
&gt; &gt; &gt; +    g_signal_emit_by_name(m_webView, &quot;entering-fullscreen&quot;, &amp;returnValue);
&gt; &gt; 
&gt; &gt; The signal seems sensible to me, but I think we should take advantage of the DOM bindings and also provide the element that is being fullscreened.
&gt; &gt; 
&gt; 
&gt; Embedded in the signal data? Hum I guess that&apos;d be doable.

As a signal parameter, yeah =)

&gt; &gt; I&apos;m not sure about this. I guess it makes sense to fullscreen by default, but I wonder if it may be problematic for non-browser use cases, to do it by default if the page requests. hmm
&gt; 
&gt; Well, this whole feature is protected by a web-setting which defaults to FALSE, IIRC.

OK, +1 from me on this then =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560213</commentid>
    <comment_count>22</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-20 06:37:20 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; &gt; &gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:970
&gt; &gt; &gt; &gt; +    g_signal_emit_by_name(m_webView, &quot;entering-fullscreen&quot;, &amp;returnValue);
&gt; &gt; &gt; 
&gt; &gt; &gt; The signal seems sensible to me, but I think we should take advantage of the DOM bindings and also provide the element that is being fullscreened.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; Embedded in the signal data? Hum I guess that&apos;d be doable.
&gt; 
&gt; As a signal parameter, yeah =)
&gt; 

Alright, I&apos;ll send a new patch soon then, if I manage to get that working :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560260</commentid>
    <comment_count>23</comment_count>
      <attachid>127827</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-20 09:29:36 -0800</bug_when>
    <thetext>Created attachment 127827
Patch

Now with DOM bindings support!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561964</commentid>
    <comment_count>24</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-22 07:20:12 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; Created an attachment (id=127827) [details]
&gt; Patch
&gt; 
&gt; Now with DOM bindings support!

Can we get this reviewed please? Gustavo and Martin approved the API, we only need a formal r+ now :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562028</commentid>
    <comment_count>25</comment_count>
      <attachid>127827</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-22 09:15:00 -0800</bug_when>
    <thetext>Comment on attachment 127827
Patch

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

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2688
&gt; +     * Since: 1.7.6

This should probably be 1.9.0 now, unless you want to merge this into stable then it should be 1.8.0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562147</commentid>
    <comment_count>26</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-22 10:56:34 -0800</bug_when>
    <thetext>Committed r108522: &lt;http://trac.webkit.org/changeset/108522&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562177</commentid>
    <comment_count>27</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-22 11:20:28 -0800</bug_when>
    <thetext>Reverted r108522 for reason:

Broke 4 fullscreen tests on GTK.

Committed r108527: &lt;http://trac.webkit.org/changeset/108527&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562931</commentid>
    <comment_count>28</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-23 00:45:56 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; Reverted r108522 for reason:
&gt; 
&gt; Broke 4 fullscreen tests on GTK.
&gt; 
&gt; Committed r108527: &lt;http://trac.webkit.org/changeset/108527&gt;

The issue was that ChromeClient::enterFullScreenForElement was stealing the Element reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562932</commentid>
    <comment_count>29</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-23 00:46:40 -0800</bug_when>
    <thetext>Committed r108620: &lt;http://trac.webkit.org/changeset/108620&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122246</attachid>
            <date>2012-01-12 08:17:51 -0800</date>
            <delta_ts>2012-01-12 08:24:59 -0800</delta_ts>
            <desc>WebKit1 Fullscreen signals</desc>
            <filename>WebKit1-Fullscreen-signals.patch</filename>
            <type>text/plain</type>
            <size>20695</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAxMGZkMDMwZTQxMDJlMDZmMTExNjZjNWE4N2M5ODQ0MzQ2MjViYmQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDEyIEphbiAyMDEyIDE3OjE3OjMwICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
V2ViS2l0MSBGdWxsc2NyZWVuIHNpZ25hbHMKCi0tLQogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI2ICsrKysrKwogLi4uL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCAgfCAgIDU3ICsrKysrKysrKysrLS0K
IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIHwgICAg
NCArCiBTb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jICAgICAgICAgICAgICB8
ICAgODcgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCAgICAgICAgIHwgICA2MiArKysrKysrKysrKysrKwogU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCAgICAgICAgICAgfCAgICAyICsKIFRvb2xzL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMSArKysrKwog
VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcz
ICsrKysrKysrKysrKysrKystCiA4IGZpbGVzIGNoYW5nZWQsIDMyMSBpbnNlcnRpb25zKCspLCAx
MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMmM1MGExYi4uMjMzYjE2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAxLTEyICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBGdWxsU2NyZWVuIHNp
Z25hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
MTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgZW50ZXJpbmctZnVsbHNjcmVlbiBhbmQgbGVhdmluZy1mdWxsc2NyZWVuIHNpZ25hbHMsIG1l
YW50IHRvCisgICAgICAgIGJlIHVzZWQgYnkgdGhlIHVzZXIgYWdlbnQgdG8gYmUgbm90aWZpZWQg
d2hlbiBhbiBlbGVtZW50IHJlcXVlc3RzCisgICAgICAgIGZ1bGwgc2NyZWVuIGRpc3BsYXkgYW5k
IHdoZW4gdGhlIGZ1bGwgc2NyZWVuIGRpc3BsYXkgaXMgdG8gYmUKKyAgICAgICAgZGlzYWJsZWQu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50OjpjYW5jZWxGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6Q2hyb21lQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAqIHRlc3RzL3Rlc3R3
ZWJ2aWV3LmM6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3JlYWxfZW50ZXJpbmdfZnVsbHNjcmVlbik6CisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfcmVhbF9sZWF2aW5nX2Z1bGxzY3JlZW4pOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg6CisK
IDIwMTItMDEtMTAgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgog
CiAgICAgICAgIEFYOiBzdXBwb3J0IGhlbHBUZXh0KCkgaW4gRHVtcFJlbmRlclRyZWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
CmluZGV4IDI5YTg0YTYuLmZiYzU5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtNjAsNiArNjAsOCBAQAogI2lu
Y2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5o
IgogI2luY2x1ZGUgIndlYmtpdHdlYndpbmRvd2ZlYXR1cmVzcHJpdmF0ZS5oIgorI2luY2x1ZGUg
PGdkay9nZGsuaD4KKyNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2luY2x1ZGUgPGdsaWIu
aD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KQEAg
LTg5OCwyOSArOTAwLDY2IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpleGl0RnVsbHNjcmVlbkZvck5v
ZGUoTm9kZSogbm9kZSkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiBib29sIENocm9tZUNs
aWVudDo6c3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50
KiBlbGVtZW50LCBib29sIHdpdGhLZXlib2FyZCkKIHsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBy
ZXR1cm4gIXdpdGhLZXlib2FyZDsKK30KKworc3RhdGljIGdib29sZWFuIG9uRnVsbHNjcmVlbkd0
a0tleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50S2V5KiBldmVudCwgQ2hy
b21lQ2xpZW50KiBjaHJvbWVDbGllbnQpCit7CisgICAgc3dpdGNoIChldmVudC0+a2V5dmFsKSB7
CisgICAgY2FzZSBHREtfS0VZX0VzY2FwZToKKyAgICBjYXNlIEdES19LRVlfZjoKKyAgICBjYXNl
IEdES19LRVlfRjoKKyAgICAgICAgY2hyb21lQ2xpZW50LT5jYW5jZWxGdWxsU2NyZWVuKCk7Cisg
ICAgICAgIHJldHVybiBUUlVFOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIHJldHVybiBGQUxTRTsKK30KKwordm9pZCBDaHJvbWVDbGllbnQ6OmNhbmNlbEZ1bGxT
Y3JlZW4oKQoreworICAgIEFTU0VSVChtX2Z1bGxTY3JlZW5FbGVtZW50KTsKKyAgICBtX2Z1bGxT
Y3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CiB9CiAK
IHZvaWQgQ2hyb21lQ2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVs
ZW1lbnQqIGVsZW1lbnQpCiB7CisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgZ19zaWdu
YWxfZW1pdF9ieV9uYW1lKG1fd2ViVmlldywgImVudGVyaW5nLWZ1bGxzY3JlZW4iLCAmcmV0dXJu
VmFsdWUpOworICAgIGlmICghcmV0dXJuVmFsdWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
ZnVsbFNjcmVlbkVsZW1lbnQgPSBhZG9wdFJlZihlbGVtZW50KTsKKwogICAgIGVsZW1lbnQtPmRv
Y3VtZW50KCktPndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwog
ICAgIG1fYWRqdXN0bWVudFdhdGNoZXIuZGlzYWJsZUFsbFNjcm9sbGJhcnMoKTsKLSNpZiBFTkFC
TEUoVklERU8pCi0gICAgaWYgKGVsZW1lbnQtPnRhZ05hbWUoKSA9PSAiVklERU8iKQotICAgICAg
ICBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKHN0YXRpY19jYXN0PE5vZGUqPihlbGVtZW50KSk7Ci0j
ZW5kaWYKKworICAgIEd0a1dpZGdldCogdG9wTGV2ZWxXaW5kb3cgPSBndGtfd2lkZ2V0X2dldF90
b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlldykpOworICAgIGlmIChndGtfd2lkZ2V0X2lzX3Rv
cGxldmVsKHRvcExldmVsV2luZG93KSkKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdCh0b3BMZXZl
bFdpbmRvdywgImtleS1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrS2V5
UHJlc3NFdmVudCksIHRoaXMpOworCisgICAgZ3RrX3dpbmRvd19mdWxsc2NyZWVuKEdUS19XSU5E
T1codG9wTGV2ZWxXaW5kb3cpKTsKKwogICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdERp
ZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xp
ZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkK
IHsKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUo
bV93ZWJWaWV3LCAibGVhdmluZy1mdWxsc2NyZWVuIiwgJnJldHVyblZhbHVlKTsKKworICAgIEd0
a1dpZGdldCogdG9wTGV2ZWxXaW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lE
R0VUKG1fd2ViVmlldykpOworICAgIGlmIChndGtfd2lkZ2V0X2lzX3RvcGxldmVsKHRvcExldmVs
V2luZG93KSkKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHRv
cExldmVsV2luZG93LCByZWludGVycHJldF9jYXN0PHZvaWQqPihvbkZ1bGxzY3JlZW5HdGtLZXlQ
cmVzc0V2ZW50KSwgdGhpcyk7CisKICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxs
RXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworICAgIGlmIChndGtfd2lkZ2V0X2lz
X3RvcGxldmVsKHRvcExldmVsV2luZG93KSkKKyAgICAgICAgZ3RrX3dpbmRvd191bmZ1bGxzY3Jl
ZW4oR1RLX1dJTkRPVyh0b3BMZXZlbFdpbmRvdykpOwogICAgIG1fYWRqdXN0bWVudFdhdGNoZXIu
ZW5hYmxlQWxsU2Nyb2xsYmFycygpOwotI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAoZWxlbWVu
dC0+dGFnTmFtZSgpID09ICJWSURFTyIpCi0gICAgICAgIHdlYlZpZXdFeGl0RnVsbHNjcmVlbiht
X3dlYlZpZXcpOwotI2VuZGlmCiAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0RGlkRXhp
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQu
Y2xlYXIoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IDkzMjIyNGYuLmRmMDk4YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBA
IC0xNTUsNiArMTU1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqLCBib29sIHdpdGhL
ZXlib2FyZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50
KEVsZW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVu
dChFbGVtZW50Kik7CisgICAgICAgIHZvaWQgY2FuY2VsRnVsbFNjcmVlbigpOwogI2VuZGlmCiAK
ICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxE
aXJlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTE4Myw2ICsxODQsOSBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKICAgICAgICAgVmVjdG9yPEludFNpemU+IG1fc2Nyb2xsT2Zmc2V0czsK
ICAgICAgICAgZG91YmxlIG1fbGFzdERpc3BsYXlUaW1lOwogICAgICAgICB1aW50IG1fcmVwYWlu
dFNvb25Tb3VyY2VJZDsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIFJlZlB0
cjxFbGVtZW50PiBtX2Z1bGxTY3JlZW5FbGVtZW50OworI2VuZGlmCiAgICAgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMKaW5kZXggMzM1ZmZkZC4uOWI0NGYwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jCkBAIC0zNjMsNiArMzYzLDkxIEBAIHN0
YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl92aWV3X3dpbmRvd19mZWF0dXJlcygpCiAgICAgZ3Rr
X3dpZGdldF9kZXN0cm95KHdpbmRvdyk7CiB9ICAgIAogCitzdGF0aWMgZ2Jvb2xlYW4gZW1pdEtl
eVN0cm9rZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIC8vIGNyZWF0ZSBhbmQgc2Vu
ZCB0aGUgZXZlbnQKKyAgICBHZGtFdmVudCogcHJlc3NFdmVudCA9IGdka19ldmVudF9uZXcoR0RL
X0tFWV9QUkVTUyk7CisgICAgcHJlc3NFdmVudC0+a2V5LmtleXZhbCA9IEdES19LRVlfZjsKKyAg
ICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VUKHdl
YlZpZXcpKTsKKyAgICBwcmVzc0V2ZW50LT5rZXkud2luZG93ID0gd2luZG93OworICAgIGdfb2Jq
ZWN0X3JlZihwcmVzc0V2ZW50LT5rZXkud2luZG93KTsKKworICAgIEdka0RldmljZU1hbmFnZXIq
IG1hbmFnZXIgPSBnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ2RrX3dpbmRvd19nZXRf
ZGlzcGxheSh3aW5kb3cpKTsKKyAgICBnZGtfZXZlbnRfc2V0X2RldmljZShwcmVzc0V2ZW50LCBn
ZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKG1hbmFnZXIpKTsKKworICAgIC8v
IFdoZW4gc3ludGhlc2l6aW5nIGFuIGV2ZW50LCBhbiBpbnZhbGlkIGhhcmR3YXJlX2tleWNvZGUg
dmFsdWUKKyAgICAvLyBjYW4gY2F1c2UgaXQgdG8gYmUgYmFkbHkgcHJvY2Vzc2VkIGJ5IEd0aysu
CisgICAgR2RrS2V5bWFwS2V5KiBrZXlzOworICAgIGdpbnQgbl9rZXlzOworICAgIGlmIChnZGtf
a2V5bWFwX2dldF9lbnRyaWVzX2Zvcl9rZXl2YWwoZ2RrX2tleW1hcF9nZXRfZGVmYXVsdCgpLCBH
REtfS0VZX2YsICZrZXlzLCAmbl9rZXlzKSkgeworICAgICAgICBwcmVzc0V2ZW50LT5rZXkuaGFy
ZHdhcmVfa2V5Y29kZSA9IGtleXNbMF0ua2V5Y29kZTsKKyAgICAgICAgZ19mcmVlKGtleXMpOwor
ICAgIH0KKworICAgIEdka0V2ZW50KiByZWxlYXNlRXZlbnQgPSBnZGtfZXZlbnRfY29weShwcmVz
c0V2ZW50KTsKKyAgICBndGtfbWFpbl9kb19ldmVudChwcmVzc0V2ZW50KTsKKyAgICBnZGtfZXZl
bnRfZnJlZShwcmVzc0V2ZW50KTsKKyAgICByZWxlYXNlRXZlbnQtPmtleS50eXBlID0gR0RLX0tF
WV9SRUxFQVNFOworICAgIGd0a19tYWluX2RvX2V2ZW50KHJlbGVhc2VFdmVudCk7CisgICAgZ2Rr
X2V2ZW50X2ZyZWUocmVsZWFzZUV2ZW50KTsKKworICAgIHJldHVybiBGQUxTRTsKK30KKworc3Rh
dGljIGdib29sZWFuIGVudGVyaW5nX2Z1bGxzY3JlZW5fY2IoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgZ2Jvb2xlYW4gZnVsbFNjcmVlbkFsbG93ZWQpCit7CisgICAgaWYgKGZ1bGxTY3JlZW5BbGxv
d2VkKSB7CisgICAgICAgIGdfdGltZW91dF9hZGQoMjAwLCAoR1NvdXJjZUZ1bmMpIGVtaXRLZXlT
dHJva2UsIHdlYlZpZXcpOworICAgIH0gZWxzZSB7CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQo
bG9vcCk7CisgICAgfQorICAgIHJldHVybiBmdWxsU2NyZWVuQWxsb3dlZDsKK30KKworc3RhdGlj
IGdib29sZWFuIGxlYXZpbmdfZnVsbHNjcmVlbl9jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBn
cG9pbnRlciBkYXRhKQoreworICAgIGdfbWFpbl9sb29wX3F1aXQobG9vcCk7CisgICAgcmV0dXJu
IFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl92aWV3X2Z1bGxzY3JlZW4o
Z2NvbnN0cG9pbnRlciBhbGxvd2VkKQoreworICAgIEd0a1dpZGdldCogd2luZG93OworICAgIEd0
a1dpZGdldCogd2ViX3ZpZXc7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzOworCisg
ICAgd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisgICAgd2Vi
X3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3KCk7CisKKyAgICBzZXR0aW5ncyA9IHdlYmtpdF93
ZWJfdmlld19nZXRfc2V0dGluZ3MoV0VCS0lUX1dFQl9WSUVXKHdlYl92aWV3KSk7CisgICAgZ19v
YmplY3Rfc2V0KHNldHRpbmdzLCAiZW5hYmxlLWZ1bGxzY3JlZW4iLCBUUlVFLCBOVUxMKTsKKyAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJfdmlldyks
IHNldHRpbmdzKTsKKworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93
KSwgd2ViX3ZpZXcpOworCisgICAgZ3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpOworCisgICAg
bG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBUUlVFKTsKKworICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qod2ViX3ZpZXcsICJlbnRlcmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyhlbnRlcmluZ19m
dWxsc2NyZWVuX2NiKSwgKGdwb2ludGVyKSBhbGxvd2VkKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYl92aWV3LCAibGVhdmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyhsZWF2aW5nX2Z1bGxz
Y3JlZW5fY2IpLCBOVUxMKTsKKworICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyhXRUJL
SVRfV0VCX1ZJRVcod2ViX3ZpZXcpLCAiPGh0bWw+PGJvZHk+IgorICAgICAgICAgICAgICAgICAg
ICI8c2NyaXB0PiIKKyAgICAgICAgICAgICAgICAgICAidmFyIGV2ZW50TmFtZSA9ICdrZXlwcmVz
cyc7IgorICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiB0aHVuaygpIHsiCisgICAgICAgICAg
ICAgICAgICAgIiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGh1
bmssIGZhbHNlKTsiCisgICAgICAgICAgICAgICAgICAgIiAgICBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsiCisgICAgICAgICAgICAgICAgICAgIn0i
CisgICAgICAgICAgICAgICAgICAgImRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
LCB0aHVuaywgZmFsc2UpOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvc2Ny
aXB0PjwvYm9keT48L2h0bWw+IiwgTlVMTCwgTlVMTCwgTlVMTCk7CisKKyAgICBnX3RpbWVvdXRf
YWRkKDEwMCwgKEdTb3VyY2VGdW5jKSBlbWl0S2V5U3Ryb2tlLCBXRUJLSVRfV0VCX1ZJRVcod2Vi
X3ZpZXcpKTsKKyAgICBnX21haW5fbG9vcF9ydW4obG9vcCk7CisKKyAgICBndGtfd2lkZ2V0X2Rl
c3Ryb3kod2luZG93KTsKK30KKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewog
ICAgIFNvdXBTZXJ2ZXIqIHNlcnZlcjsKQEAgLTM5MCw2ICs0NzUsOCBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnZpZXcv
ZGVzdHJveSIsIHRlc3Rfd2Via2l0X3dlYl92aWV3X2Rlc3Ryb3kpOwogICAgIGdfdGVzdF9hZGRf
ZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2dyYWJfZm9jdXMiLCB0ZXN0X3dlYmtpdF93ZWJfdmlld19n
cmFiX2ZvY3VzKTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy93aW5kb3ct
ZmVhdHVyZXMiLCB0ZXN0X3dlYmtpdF93ZWJfdmlld193aW5kb3dfZmVhdHVyZXMpOworICAgIGdf
dGVzdF9hZGRfZGF0YV9mdW5jKCIvd2Via2l0L3dlYnZpZXcvZnVsbHNjcmVlbiIsIChnY29uc3Rw
b2ludGVyKSBUUlVFLCB0ZXN0X3dlYmtpdF93ZWJfdmlld19mdWxsc2NyZWVuKTsKKyAgICBnX3Rl
c3RfYWRkX2RhdGFfZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2Z1bGxzY3JlZW4tYmxvY2tlZCIsIChn
Y29uc3Rwb2ludGVyKSBGQUxTRSwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfZnVsbHNjcmVlbik7CiAK
ICAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCAwODY4YTRhLi5lMjRiZWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0yMDgsNiArMjA4LDggQEAgZW51bSB7
CiAgICAgRURJVElOR19FTkRFRCwKICAgICBWSUVXUE9SVF9BVFRSSUJVVEVTX1JFQ09NUFVURV9S
RVFVRVNURUQsCiAgICAgVklFV1BPUlRfQVRUUklCVVRFU19DSEFOR0VELAorICAgIEVOVEVSSU5H
X0ZVTExTQ1JFRU4sCisgICAgTEVBVklOR19GVUxMU0NSRUVOLAogCiAgICAgTEFTVF9TSUdOQUwK
IH07CkBAIC0xMjUxLDYgKzEyNTMsMTcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmll
d19yZWFsX3Nob3VsZF9hbGxvd19lZGl0aW5nX2FjdGlvbihXZWJLaXRXZWJWaWV3KikKICAgICBy
ZXR1cm4gVFJVRTsKIH0KIAorCitnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9lbnRlcmlu
Z19mdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgcmV0dXJuIFRSVUU7
Cit9CisKK2dib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX2xlYXZpbmdfZnVsbHNjcmVlbihX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfZGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgV2Vi
S2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhvYmplY3QpOwpAQCAtMjYwNiw2
ICsyNjE5LDUzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktp
dFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgR19UWVBFX05PTkUsIDEs
CiAgICAgICAgICAgICBXRUJLSVRfVFlQRV9WSUVXUE9SVF9BVFRSSUJVVEVTKTsKIAorICAgIC8q
KgorICAgICAqIFdlYktpdFdlYlZpZXc6OmVudGVyaW5nLWZ1bGxzY3JlZW46CisgICAgICogQHdl
Yl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
CisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gSmF2YVNjcmlwdCBjb2RlIGNhbGxzCisgICAg
ICogPGZ1bmN0aW9uPmVsZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW48L2Z1bmN0aW9uPi4g
SWYgdGhlCisgICAgICogc2lnbmFsIGlzIG5vdCBoYW5kbGVkIHRoZSBXZWJWaWV3IHdpbGwgcHJv
Y2VlZCB0byBmdWxsIHNjcmVlbgorICAgICAqIGl0cyB0b3AgbGV2ZWwgd2luZG93LiBUaGlzIHNp
Z25hbCBjYW4gYmUgdXNlZCBieSBjbGllbnQgY29kZSB0bworICAgICAqIHJlcXVlc3QgcGVybWlz
c2lvbiB0byB0aGUgdXNlciBwcmlvciBkb2luZyB0aGUgZnVsbCBzY3JlZW4KKyAgICAgKiB0cmFu
c2l0aW9uIGFuZCBldmVudHVhbGx5IHByZXBhcmUgdGhlIHRvcC1sZXZlbCB3aW5kb3cKKyAgICAg
KiAoZS5nLiBoaWRlIHNvbWUgd2lkZ2V0cyB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBwYXJ0IG9m
IHRoZQorICAgICAqIGZ1bGwgc2NyZWVuIHdpbmRvdykuCisKKyAgICAgKiBSZXR1cm5zOiAlVFJV
RSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50
LgorICAgICAqICAgICVGQUxTRSB0byBibG9jayB0aGUgZXZlbnQuCisgICAgICovCisgICAgd2Vi
a2l0X3dlYl92aWV3X3NpZ25hbHNbRU5URVJJTkdfRlVMTFNDUkVFTl0gPQorICAgICAgICAgICAg
Z19zaWduYWxfbmV3KCJlbnRlcmluZy1mdWxsc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIChHU2lnbmFsRmxhZ3MpIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgICAg
ICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGVudGVyaW5nX2Z1
bGxzY3JlZW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9y
X2ZpcnN0X3dpbnMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxf
Qk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwg
MCk7CisKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmxlYXZpbmctZnVsbHNjcmVl
bjoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2ln
bmFsIGlzIGVtaXR0ZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgV2ViVmlldyBp
cyBhYm91dCB0byByZXN0b3JlIGl0cyB0b3AgbGV2ZWwKKyAgICAgKiB3aW5kb3cgb3V0IG9mIGl0
cyBmdWxsIHNjcmVlbiBzdGF0ZS4gVGhpcyBzaWduYWwgY2FuIGJlIHVzZWQgYnkKKyAgICAgKiBj
bGllbnQgY29kZSB0byByZXN0b3JlIHdpZGdldHMgaGlkZGVuIGR1cmluZyB0aGUKKyAgICAgKiBl
bnRlcmluZy1mdWxsc2NyZWVuIHN0YWdlIGZvciBpbnN0YW5jZS4KKworICAgICAqIFJldHVybnM6
ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUg
ZXZlbnQuCisgICAgICogICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4K
KyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tMRUFWSU5HX0ZVTExTQ1JFRU5d
ID0KKyAgICAgICAgICAgIGdfc2lnbmFsX25ldygibGVhdmluZy1mdWxsc2NyZWVuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpIEdfU0lHTkFMX1JVTl9MQVNULAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xh
c3MsIGxlYXZpbmdfZnVsbHNjcmVlbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgZ19zaWdu
YWxfYWNjdW11bGF0b3JfZmlyc3Rfd2lucywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB3
ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAorICAgICAgICAgICAgICAgICAgICAgICAgIEdf
VFlQRV9CT09MRUFOLCAwKTsKKwogICAgIC8qCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZp
cnR1YWwgbWV0aG9kcwogICAgICAqLwpAQCAtMjYyNyw2ICsyNjg3LDggQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xh
c3MpCiAgICAgd2ViVmlld0NsYXNzLT5yZWRvID0gd2Via2l0X3dlYl92aWV3X3JlYWxfcmVkbzsK
ICAgICB3ZWJWaWV3Q2xhc3MtPm1vdmVfY3Vyc29yID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbW92
ZV9jdXJzb3I7CiAgICAgd2ViVmlld0NsYXNzLT5zaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rpb24g
PSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rpb247CisgICAg
d2ViVmlld0NsYXNzLT5lbnRlcmluZ19mdWxsc2NyZWVuID0gd2Via2l0X3dlYl92aWV3X3JlYWxf
ZW50ZXJpbmdfZnVsbHNjcmVlbjsKKyAgICB3ZWJWaWV3Q2xhc3MtPmxlYXZpbmdfZnVsbHNjcmVl
biA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2xlYXZpbmdfZnVsbHNjcmVlbjsKIAogICAgIEdPYmpl
Y3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyh3ZWJWaWV3Q2xhc3MpOwogICAg
IG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0X3dlYl92aWV3X2Rpc3Bvc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCA2NzhlMzI5Li5kNzIyOWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKQEAgLTE3Niw2ICsxNzYs
OCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgKCogdW5kbykgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICp3ZWJfdmlldyk7CiAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgKCogcmVkbykgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAgICAgZ2Jv
b2xlYW4gICAgICAgICAgICAgICAgICAgKCogc2hvdWxkX2FsbG93X2VkaXRpbmdfYWN0aW9uKSAo
V2ViS2l0V2ViVmlldyAgICp3ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAg
ICAgKCogZW50ZXJpbmdfZnVsbHNjcmVlbikgKFdlYktpdFdlYlZpZXcgICAqd2ViX3ZpZXcpOwor
ICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICgqIGxlYXZpbmdfZnVsbHNjcmVlbikgKFdl
YktpdFdlYlZpZXcgICAqd2ViX3ZpZXcpOwogCiAgICAgLyogUGFkZGluZyBmb3IgZnV0dXJlIGV4
cGFuc2lvbiAqLwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJjMWJhY2EuLjUw
YWZhNDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwyNiBAQAogMjAxMi0wMS0xMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dUS10gRnVsbFNjcmVlbiBzaWduYWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE4MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgdHdvIG5ldyBl
bnRlcmluZy9sZWF2aW5nIGZ1bGxzY3JlZW4gc2lnbmFscyB0byBoaWRlL3Nob3cKKyAgICAgICAg
dGhlIHRvb2wgYmFyLCB0aGUgc3RhdHVzIGJhciBhbmQgYXNrIHRoZSB1c2VyJ3MgcGVybWlzc2lv
biBiZWZvcmUKKyAgICAgICAgZW50ZXJpbmcgZnVsbHNjcmVlbi4KKworICAgICAgICAqIEd0a0xh
dW5jaGVyL21haW4uYzoKKyAgICAgICAgKHdlYlZpZXdGdWxsc2NyZWVuTWVzc2FnZVdpbmRvd0Ns
b3NlKToKKyAgICAgICAgKHdlYlZpZXdXaW5kb3dTdGF0ZUV2ZW50KToKKyAgICAgICAgKGhpZGVf
d2lkZ2V0KToKKyAgICAgICAgKHNob3dfd2lkZ2V0KToKKyAgICAgICAgKHdlYlZpZXdFbnRlcmlu
Z0Z1bGxTY3JlZW4pOgorICAgICAgICAod2ViVmlld0xlYXZpbmdGdWxsU2NyZWVuKToKKyAgICAg
ICAgKGNyZWF0ZUJyb3dzZXIpOgorICAgICAgICAoY3JlYXRlV2luZG93KToKKworMjAxMi0wMS0x
MiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKICAgICAgICAgW1dL
Ml1bR1RLXSBGdWxsU2NyZWVuIHNpZ25hbHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2MTY2CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0d0a0xhdW5jaGVy
L21haW4uYyBiL1Rvb2xzL0d0a0xhdW5jaGVyL21haW4uYwppbmRleCBlM2E2NmIwLi5jMDhiZmM4
IDEwMDY0NAotLS0gYS9Ub29scy9HdGtMYXVuY2hlci9tYWluLmMKKysrIGIvVG9vbHMvR3RrTGF1
bmNoZXIvbWFpbi5jCkBAIC0xMjMsNyArMTIzLDc0IEBAIHN0YXRpYyBnYm9vbGVhbiBjbG9zZVdl
YlZpZXdDYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHdGtXaWRnZXQqIHdpbmRvdykKICAgICBy
ZXR1cm4gVFJVRTsKIH0KIAotc3RhdGljIEd0a1dpZGdldCogY3JlYXRlQnJvd3NlcihHdGtXaWRn
ZXQqIHdpbmRvdywgR3RrV2lkZ2V0KiB1cmlFbnRyeSwgR3RrV2lkZ2V0KiBzdGF0dXNiYXIsIFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0Z1bGxzY3JlZW5N
ZXNzYWdlV2luZG93Q2xvc2UoR3RrV2lkZ2V0ICpkaWFsb2cpCit7CisgICAgaWYgKEdUS19JU19X
SURHRVQgKGRpYWxvZykpCisgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSAoR1RLX0RJQUxP
RyAoZGlhbG9nKSwgImNsb3NlIik7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jv
b2xlYW4gd2ViVmlld1dpbmRvd1N0YXRlRXZlbnQoR3RrV2lkZ2V0ICp3aWRnZXQsIEdka0V2ZW50
V2luZG93U3RhdGUgKmV2ZW50LCBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3KQoreworICAgIGlmIChl
dmVudC0+bmV3X3dpbmRvd19zdGF0ZSAmIEdES19XSU5ET1dfU1RBVEVfRlVMTFNDUkVFTikgewor
ICAgICAgICBXZWJLaXRXZWJGcmFtZSAqZnJhbWUgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5f
ZnJhbWUod2ViVmlldyk7CisgICAgICAgIGNvbnN0IGdjaGFyICp1cmkgPSB3ZWJraXRfd2ViX2Zy
YW1lX2dldF91cmkoZnJhbWUpOworICAgICAgICBHdGtXaWRnZXQgKnRvcExldmVsV2luZG93ID0g
Z3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisgICAgICAgIEd0
a1dpZGdldCAqZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyAoR1RLX1dJTkRPVyAodG9w
TGV2ZWxXaW5kb3cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdUS19ESUFMT0dfTU9EQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR1RLX01FU1NBR0VfSU5GTywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9OU19DTE9TRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMg
aXMgbm93IGZ1bGwgc2NyZWVuLiBQcmVzcyBFU0Mgb3IgZiB0byBleGl0LiIsIHVyaSk7CisgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZCAoZGlhbG9nLCAicmVzcG9uc2UiLCBHX0NBTExC
QUNLIChndGtfd2lkZ2V0X2Rlc3Ryb3kpLCBkaWFsb2cpOworICAgICAgICBnX3RpbWVvdXRfYWRk
ICgxNTAwLCAoR1NvdXJjZUZ1bmMpIHdlYlZpZXdGdWxsc2NyZWVuTWVzc2FnZVdpbmRvd0Nsb3Nl
LCBkaWFsb2cpOworICAgICAgICBndGtfZGlhbG9nX3J1biAoR1RLX0RJQUxPRyAoZGlhbG9nKSk7
CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZCBoaWRlX3dpZGdldChH
dGtXaWRnZXQqIHdpZGdldCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBpZiAoIUdUS19JU19TQ1JP
TExFRF9XSU5ET1cgKHdpZGdldCkpCisgICAgICAgIGd0a193aWRnZXRfaGlkZSAod2lkZ2V0KTsK
K30KKworc3RhdGljIHZvaWQgc2hvd193aWRnZXQoR3RrV2lkZ2V0KiB3aWRnZXQsIGdwb2ludGVy
IGRhdGEpCit7CisgICAgaWYgKCFHVEtfSVNfU0NST0xMRURfV0lORE9XICh3aWRnZXQpKQorICAg
ICAgICBndGtfd2lkZ2V0X3Nob3dfYWxsICh3aWRnZXQpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4g
d2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBHdGtXaWRn
ZXQqIHZib3gpCit7CisgICAgV2ViS2l0V2ViRnJhbWUgKmZyYW1lID0gd2Via2l0X3dlYl92aWV3
X2dldF9tYWluX2ZyYW1lKHdlYlZpZXcpOworICAgIGNvbnN0IGdjaGFyICp1cmkgPSB3ZWJraXRf
d2ViX2ZyYW1lX2dldF91cmkoZnJhbWUpOworICAgIEd0a1dpZGdldCogdG9wTGV2ZWxXaW5kb3cg
PSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKworICAgIEd0
a1dpZGdldCogZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyAoR1RLX1dJTkRPVyAodG9w
TGV2ZWxXaW5kb3cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR1RLX0RJQUxPR19NT0RBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdUS19NRVNTQUdFX0lORk8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9OU19ZRVNfTk8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWxsb3cgZnVsbCBzY3JlZW4g
ZGlzcGxheSBvZiAlcyA/IiwgdXJpKTsKKyAgICBnaW50IHJlc3VsdCA9IGd0a19kaWFsb2dfcnVu
IChHVEtfRElBTE9HIChkaWFsb2cpKTsKKyAgICBpZiAocmVzdWx0ID09IEdUS19SRVNQT05TRV9Z
RVMpIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdCh0b3BMZXZlbFdpbmRvdywgIndpbmRvdy1z
dGF0ZS1ldmVudCIsIEdfQ0FMTEJBQ0sod2ViVmlld1dpbmRvd1N0YXRlRXZlbnQpLCB3ZWJWaWV3
KTsKKyAgICAgICAgZ3RrX2NvbnRhaW5lcl9mb3JlYWNoIChHVEtfQ09OVEFJTkVSICh2Ym94KSwg
KEd0a0NhbGxiYWNrKSBoaWRlX3dpZGdldCwgTlVMTCk7CisgICAgICAgIGd0a193aWRnZXRfZGVz
dHJveShHVEtfV0lER0VUIChkaWFsb2cpKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQor
ICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUIChkaWFsb2cpKTsKKyAgICByZXR1cm4g
RkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4oV2Vi
S2l0V2ViVmlldyAqd2ViVmlldywgR3RrV2lkZ2V0KiB2Ym94KQoreworICAgIEd0a1dpZGdldCog
dG9wTGV2ZWxXaW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZp
ZXcpKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmModG9wTGV2ZWxX
aW5kb3csIEdfQ0FMTEJBQ0sod2ViVmlld1dpbmRvd1N0YXRlRXZlbnQpLCB3ZWJWaWV3KTsKKyAg
ICBndGtfY29udGFpbmVyX2ZvcmVhY2ggKEdUS19DT05UQUlORVIgKHZib3gpLCAoR3RrQ2FsbGJh
Y2spIHNob3dfd2lkZ2V0LCBOVUxMKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIEd0
a1dpZGdldCogY3JlYXRlQnJvd3NlcihHdGtXaWRnZXQqIHdpbmRvdywgR3RrV2lkZ2V0KiB1cmlF
bnRyeSwgR3RrV2lkZ2V0KiBzdGF0dXNiYXIsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a1dp
ZGdldCogdmJveCkKIHsKICAgICBHdGtXaWRnZXQgKnNjcm9sbGVkV2luZG93ID0gZ3RrX3Njcm9s
bGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7CiAgICAgZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRf
cG9saWN5KEdUS19TQ1JPTExFRF9XSU5ET1coc2Nyb2xsZWRXaW5kb3cpLCBHVEtfUE9MSUNZX0FV
VE9NQVRJQywgR1RLX1BPTElDWV9BVVRPTUFUSUMpOwpAQCAtMTM3LDYgKzIwNCw4IEBAIHN0YXRp
YyBHdGtXaWRnZXQqIGNyZWF0ZUJyb3dzZXIoR3RrV2lkZ2V0KiB3aW5kb3csIEd0a1dpZGdldCog
dXJpRW50cnksIEd0a1dpZGdlCiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAiY3JlYXRl
LXdlYi12aWV3IiwgR19DQUxMQkFDSyhjcmVhdGVXZWJWaWV3Q2IpLCB3aW5kb3cpOwogICAgIGdf
c2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgIndlYi12aWV3LXJlYWR5IiwgR19DQUxMQkFDSyh3ZWJW
aWV3UmVhZHlDYiksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAiY2xv
c2Utd2ViLXZpZXciLCBHX0NBTExCQUNLKGNsb3NlV2ViVmlld0NiKSwgd2luZG93KTsKKyAgICBn
X3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJlbnRlcmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFD
Syh3ZWJWaWV3RW50ZXJpbmdGdWxsU2NyZWVuKSwgdmJveCk7CisgICAgZ19zaWduYWxfY29ubmVj
dCh3ZWJWaWV3LCAibGVhdmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyh3ZWJWaWV3TGVhdmlu
Z0Z1bGxTY3JlZW4pLCB2Ym94KTsKIAogICAgIHJldHVybiBzY3JvbGxlZFdpbmRvdzsKIH0KQEAg
LTIxNCw3ICsyODMsNyBAQCBzdGF0aWMgR3RrV2lkZ2V0KiBjcmVhdGVXaW5kb3coV2ViS2l0V2Vi
VmlldyoqIG91dFdlYlZpZXcpCiAjZW5kaWYKICAgICBzdGF0dXNiYXIgPSBjcmVhdGVTdGF0dXNi
YXIod2ViVmlldyk7CiAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGNyZWF0
ZVRvb2xiYXIodXJpRW50cnksIHdlYlZpZXcpLCBGQUxTRSwgRkFMU0UsIDApOwotICAgIGd0a19i
b3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBjcmVhdGVCcm93c2VyKHdpbmRvdywgdXJpRW50
cnksIHN0YXR1c2Jhciwgd2ViVmlldyksIFRSVUUsIFRSVUUsIDApOworICAgIGd0a19ib3hfcGFj
a19zdGFydChHVEtfQk9YKHZib3gpLCBjcmVhdGVCcm93c2VyKHdpbmRvdywgdXJpRW50cnksIHN0
YXR1c2Jhciwgd2ViVmlldywgdmJveCksIFRSVUUsIFRSVUUsIDApOwogICAgIGd0a19ib3hfcGFj
a19zdGFydChHVEtfQk9YKHZib3gpLCBzdGF0dXNiYXIsIEZBTFNFLCBGQUxTRSwgMCk7CiAKICAg
ICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZib3gpOwotLSAKMS43
LjguMw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122247</attachid>
            <date>2012-01-12 08:24:59 -0800</date>
            <delta_ts>2012-01-19 05:46:17 -0800</delta_ts>
            <desc>WebKit1 Fullscreen signals</desc>
            <filename>WebKit1-Fullscreen-signals.patch</filename>
            <type>text/plain</type>
            <size>20663</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA5ZDYxMjUyZjUyNjg1ZGIxYzI4MWRjYmI5Nzc5MTM5NzFkOGI5M2JhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDEyIEphbiAyMDEyIDE3OjE3OjMwICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
V2ViS2l0MSBGdWxsc2NyZWVuIHNpZ25hbHMKCi0tLQogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI2ICsrKysrKwogLi4uL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCAgfCAgIDU3ICsrKysrKysrKysrLS0K
IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIHwgICAg
NCArCiBTb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jICAgICAgICAgICAgICB8
ICAgODcgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCAgICAgICAgIHwgICA2MiArKysrKysrKysrKysrKwogU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCAgICAgICAgICAgfCAgICAyICsKIFRvb2xzL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMSArKysrKwog
VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcz
ICsrKysrKysrKysrKysrKystCiA4IGZpbGVzIGNoYW5nZWQsIDMyMSBpbnNlcnRpb25zKCspLCAx
MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMmM1MGExYi4uMjMzYjE2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAxLTEyICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBGdWxsU2NyZWVuIHNp
Z25hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
MTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgZW50ZXJpbmctZnVsbHNjcmVlbiBhbmQgbGVhdmluZy1mdWxsc2NyZWVuIHNpZ25hbHMsIG1l
YW50IHRvCisgICAgICAgIGJlIHVzZWQgYnkgdGhlIHVzZXIgYWdlbnQgdG8gYmUgbm90aWZpZWQg
d2hlbiBhbiBlbGVtZW50IHJlcXVlc3RzCisgICAgICAgIGZ1bGwgc2NyZWVuIGRpc3BsYXkgYW5k
IHdoZW4gdGhlIGZ1bGwgc2NyZWVuIGRpc3BsYXkgaXMgdG8gYmUKKyAgICAgICAgZGlzYWJsZWQu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50OjpjYW5jZWxGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6Q2hyb21lQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAqIHRlc3RzL3Rlc3R3
ZWJ2aWV3LmM6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3JlYWxfZW50ZXJpbmdfZnVsbHNjcmVlbik6CisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfcmVhbF9sZWF2aW5nX2Z1bGxzY3JlZW4pOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg6CisK
IDIwMTItMDEtMTAgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgog
CiAgICAgICAgIEFYOiBzdXBwb3J0IGhlbHBUZXh0KCkgaW4gRHVtcFJlbmRlclRyZWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
CmluZGV4IDI5YTg0YTYuLmZiYzU5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtNjAsNiArNjAsOCBAQAogI2lu
Y2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5o
IgogI2luY2x1ZGUgIndlYmtpdHdlYndpbmRvd2ZlYXR1cmVzcHJpdmF0ZS5oIgorI2luY2x1ZGUg
PGdkay9nZGsuaD4KKyNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2luY2x1ZGUgPGdsaWIu
aD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KQEAg
LTg5OCwyOSArOTAwLDY2IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpleGl0RnVsbHNjcmVlbkZvck5v
ZGUoTm9kZSogbm9kZSkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiBib29sIENocm9tZUNs
aWVudDo6c3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50
KiBlbGVtZW50LCBib29sIHdpdGhLZXlib2FyZCkKIHsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBy
ZXR1cm4gIXdpdGhLZXlib2FyZDsKK30KKworc3RhdGljIGdib29sZWFuIG9uRnVsbHNjcmVlbkd0
a0tleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50S2V5KiBldmVudCwgQ2hy
b21lQ2xpZW50KiBjaHJvbWVDbGllbnQpCit7CisgICAgc3dpdGNoIChldmVudC0+a2V5dmFsKSB7
CisgICAgY2FzZSBHREtfS0VZX0VzY2FwZToKKyAgICBjYXNlIEdES19LRVlfZjoKKyAgICBjYXNl
IEdES19LRVlfRjoKKyAgICAgICAgY2hyb21lQ2xpZW50LT5jYW5jZWxGdWxsU2NyZWVuKCk7Cisg
ICAgICAgIHJldHVybiBUUlVFOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIHJldHVybiBGQUxTRTsKK30KKwordm9pZCBDaHJvbWVDbGllbnQ6OmNhbmNlbEZ1bGxT
Y3JlZW4oKQoreworICAgIEFTU0VSVChtX2Z1bGxTY3JlZW5FbGVtZW50KTsKKyAgICBtX2Z1bGxT
Y3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CiB9CiAK
IHZvaWQgQ2hyb21lQ2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVs
ZW1lbnQqIGVsZW1lbnQpCiB7CisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgZ19zaWdu
YWxfZW1pdF9ieV9uYW1lKG1fd2ViVmlldywgImVudGVyaW5nLWZ1bGxzY3JlZW4iLCAmcmV0dXJu
VmFsdWUpOworICAgIGlmICghcmV0dXJuVmFsdWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
ZnVsbFNjcmVlbkVsZW1lbnQgPSBhZG9wdFJlZihlbGVtZW50KTsKKwogICAgIGVsZW1lbnQtPmRv
Y3VtZW50KCktPndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwog
ICAgIG1fYWRqdXN0bWVudFdhdGNoZXIuZGlzYWJsZUFsbFNjcm9sbGJhcnMoKTsKLSNpZiBFTkFC
TEUoVklERU8pCi0gICAgaWYgKGVsZW1lbnQtPnRhZ05hbWUoKSA9PSAiVklERU8iKQotICAgICAg
ICBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKHN0YXRpY19jYXN0PE5vZGUqPihlbGVtZW50KSk7Ci0j
ZW5kaWYKKworICAgIEd0a1dpZGdldCogdG9wTGV2ZWxXaW5kb3cgPSBndGtfd2lkZ2V0X2dldF90
b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlldykpOworICAgIGlmIChndGtfd2lkZ2V0X2lzX3Rv
cGxldmVsKHRvcExldmVsV2luZG93KSkKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdCh0b3BMZXZl
bFdpbmRvdywgImtleS1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrS2V5
UHJlc3NFdmVudCksIHRoaXMpOworCisgICAgZ3RrX3dpbmRvd19mdWxsc2NyZWVuKEdUS19XSU5E
T1codG9wTGV2ZWxXaW5kb3cpKTsKKwogICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdERp
ZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xp
ZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkK
IHsKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUo
bV93ZWJWaWV3LCAibGVhdmluZy1mdWxsc2NyZWVuIiwgJnJldHVyblZhbHVlKTsKKworICAgIEd0
a1dpZGdldCogdG9wTGV2ZWxXaW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lE
R0VUKG1fd2ViVmlldykpOworICAgIGlmIChndGtfd2lkZ2V0X2lzX3RvcGxldmVsKHRvcExldmVs
V2luZG93KSkKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHRv
cExldmVsV2luZG93LCByZWludGVycHJldF9jYXN0PHZvaWQqPihvbkZ1bGxzY3JlZW5HdGtLZXlQ
cmVzc0V2ZW50KSwgdGhpcyk7CisKICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxs
RXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworICAgIGlmIChndGtfd2lkZ2V0X2lz
X3RvcGxldmVsKHRvcExldmVsV2luZG93KSkKKyAgICAgICAgZ3RrX3dpbmRvd191bmZ1bGxzY3Jl
ZW4oR1RLX1dJTkRPVyh0b3BMZXZlbFdpbmRvdykpOwogICAgIG1fYWRqdXN0bWVudFdhdGNoZXIu
ZW5hYmxlQWxsU2Nyb2xsYmFycygpOwotI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAoZWxlbWVu
dC0+dGFnTmFtZSgpID09ICJWSURFTyIpCi0gICAgICAgIHdlYlZpZXdFeGl0RnVsbHNjcmVlbiht
X3dlYlZpZXcpOwotI2VuZGlmCiAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0RGlkRXhp
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQu
Y2xlYXIoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IDkzMjIyNGYuLmRmMDk4YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBA
IC0xNTUsNiArMTU1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqLCBib29sIHdpdGhL
ZXlib2FyZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50
KEVsZW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVu
dChFbGVtZW50Kik7CisgICAgICAgIHZvaWQgY2FuY2VsRnVsbFNjcmVlbigpOwogI2VuZGlmCiAK
ICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxE
aXJlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTE4Myw2ICsxODQsOSBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKICAgICAgICAgVmVjdG9yPEludFNpemU+IG1fc2Nyb2xsT2Zmc2V0czsK
ICAgICAgICAgZG91YmxlIG1fbGFzdERpc3BsYXlUaW1lOwogICAgICAgICB1aW50IG1fcmVwYWlu
dFNvb25Tb3VyY2VJZDsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIFJlZlB0
cjxFbGVtZW50PiBtX2Z1bGxTY3JlZW5FbGVtZW50OworI2VuZGlmCiAgICAgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMKaW5kZXggMzM1ZmZkZC4uOWI0NGYwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jCkBAIC0zNjMsNiArMzYzLDkxIEBAIHN0
YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl92aWV3X3dpbmRvd19mZWF0dXJlcygpCiAgICAgZ3Rr
X3dpZGdldF9kZXN0cm95KHdpbmRvdyk7CiB9ICAgIAogCitzdGF0aWMgZ2Jvb2xlYW4gZW1pdEtl
eVN0cm9rZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIC8vIGNyZWF0ZSBhbmQgc2Vu
ZCB0aGUgZXZlbnQKKyAgICBHZGtFdmVudCogcHJlc3NFdmVudCA9IGdka19ldmVudF9uZXcoR0RL
X0tFWV9QUkVTUyk7CisgICAgcHJlc3NFdmVudC0+a2V5LmtleXZhbCA9IEdES19LRVlfZjsKKyAg
ICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VUKHdl
YlZpZXcpKTsKKyAgICBwcmVzc0V2ZW50LT5rZXkud2luZG93ID0gd2luZG93OworICAgIGdfb2Jq
ZWN0X3JlZihwcmVzc0V2ZW50LT5rZXkud2luZG93KTsKKworICAgIEdka0RldmljZU1hbmFnZXIq
IG1hbmFnZXIgPSBnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ2RrX3dpbmRvd19nZXRf
ZGlzcGxheSh3aW5kb3cpKTsKKyAgICBnZGtfZXZlbnRfc2V0X2RldmljZShwcmVzc0V2ZW50LCBn
ZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKG1hbmFnZXIpKTsKKworICAgIC8v
IFdoZW4gc3ludGhlc2l6aW5nIGFuIGV2ZW50LCBhbiBpbnZhbGlkIGhhcmR3YXJlX2tleWNvZGUg
dmFsdWUKKyAgICAvLyBjYW4gY2F1c2UgaXQgdG8gYmUgYmFkbHkgcHJvY2Vzc2VkIGJ5IEd0aysu
CisgICAgR2RrS2V5bWFwS2V5KiBrZXlzOworICAgIGdpbnQgbl9rZXlzOworICAgIGlmIChnZGtf
a2V5bWFwX2dldF9lbnRyaWVzX2Zvcl9rZXl2YWwoZ2RrX2tleW1hcF9nZXRfZGVmYXVsdCgpLCBH
REtfS0VZX2YsICZrZXlzLCAmbl9rZXlzKSkgeworICAgICAgICBwcmVzc0V2ZW50LT5rZXkuaGFy
ZHdhcmVfa2V5Y29kZSA9IGtleXNbMF0ua2V5Y29kZTsKKyAgICAgICAgZ19mcmVlKGtleXMpOwor
ICAgIH0KKworICAgIEdka0V2ZW50KiByZWxlYXNlRXZlbnQgPSBnZGtfZXZlbnRfY29weShwcmVz
c0V2ZW50KTsKKyAgICBndGtfbWFpbl9kb19ldmVudChwcmVzc0V2ZW50KTsKKyAgICBnZGtfZXZl
bnRfZnJlZShwcmVzc0V2ZW50KTsKKyAgICByZWxlYXNlRXZlbnQtPmtleS50eXBlID0gR0RLX0tF
WV9SRUxFQVNFOworICAgIGd0a19tYWluX2RvX2V2ZW50KHJlbGVhc2VFdmVudCk7CisgICAgZ2Rr
X2V2ZW50X2ZyZWUocmVsZWFzZUV2ZW50KTsKKworICAgIHJldHVybiBGQUxTRTsKK30KKworc3Rh
dGljIGdib29sZWFuIGVudGVyaW5nX2Z1bGxzY3JlZW5fY2IoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgZ2Jvb2xlYW4gZnVsbFNjcmVlbkFsbG93ZWQpCit7CisgICAgaWYgKGZ1bGxTY3JlZW5BbGxv
d2VkKSB7CisgICAgICAgIGdfdGltZW91dF9hZGQoMjAwLCAoR1NvdXJjZUZ1bmMpIGVtaXRLZXlT
dHJva2UsIHdlYlZpZXcpOworICAgIH0gZWxzZSB7CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQo
bG9vcCk7CisgICAgfQorICAgIHJldHVybiBmdWxsU2NyZWVuQWxsb3dlZDsKK30KKworc3RhdGlj
IGdib29sZWFuIGxlYXZpbmdfZnVsbHNjcmVlbl9jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBn
cG9pbnRlciBkYXRhKQoreworICAgIGdfbWFpbl9sb29wX3F1aXQobG9vcCk7CisgICAgcmV0dXJu
IFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl92aWV3X2Z1bGxzY3JlZW4o
Z2NvbnN0cG9pbnRlciBhbGxvd2VkKQoreworICAgIEd0a1dpZGdldCogd2luZG93OworICAgIEd0
a1dpZGdldCogd2ViX3ZpZXc7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzOworCisg
ICAgd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisgICAgd2Vi
X3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3KCk7CisKKyAgICBzZXR0aW5ncyA9IHdlYmtpdF93
ZWJfdmlld19nZXRfc2V0dGluZ3MoV0VCS0lUX1dFQl9WSUVXKHdlYl92aWV3KSk7CisgICAgZ19v
YmplY3Rfc2V0KHNldHRpbmdzLCAiZW5hYmxlLWZ1bGxzY3JlZW4iLCBUUlVFLCBOVUxMKTsKKyAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJfdmlldyks
IHNldHRpbmdzKTsKKworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93
KSwgd2ViX3ZpZXcpOworCisgICAgZ3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpOworCisgICAg
bG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBUUlVFKTsKKworICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qod2ViX3ZpZXcsICJlbnRlcmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyhlbnRlcmluZ19m
dWxsc2NyZWVuX2NiKSwgKGdwb2ludGVyKSBhbGxvd2VkKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYl92aWV3LCAibGVhdmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyhsZWF2aW5nX2Z1bGxz
Y3JlZW5fY2IpLCBOVUxMKTsKKworICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyhXRUJL
SVRfV0VCX1ZJRVcod2ViX3ZpZXcpLCAiPGh0bWw+PGJvZHk+IgorICAgICAgICAgICAgICAgICAg
ICI8c2NyaXB0PiIKKyAgICAgICAgICAgICAgICAgICAidmFyIGV2ZW50TmFtZSA9ICdrZXlwcmVz
cyc7IgorICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiB0aHVuaygpIHsiCisgICAgICAgICAg
ICAgICAgICAgIiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGh1
bmssIGZhbHNlKTsiCisgICAgICAgICAgICAgICAgICAgIiAgICBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsiCisgICAgICAgICAgICAgICAgICAgIn0i
CisgICAgICAgICAgICAgICAgICAgImRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
LCB0aHVuaywgZmFsc2UpOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvc2Ny
aXB0PjwvYm9keT48L2h0bWw+IiwgTlVMTCwgTlVMTCwgTlVMTCk7CisKKyAgICBnX3RpbWVvdXRf
YWRkKDEwMCwgKEdTb3VyY2VGdW5jKSBlbWl0S2V5U3Ryb2tlLCBXRUJLSVRfV0VCX1ZJRVcod2Vi
X3ZpZXcpKTsKKyAgICBnX21haW5fbG9vcF9ydW4obG9vcCk7CisKKyAgICBndGtfd2lkZ2V0X2Rl
c3Ryb3kod2luZG93KTsKK30KKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewog
ICAgIFNvdXBTZXJ2ZXIqIHNlcnZlcjsKQEAgLTM5MCw2ICs0NzUsOCBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnZpZXcv
ZGVzdHJveSIsIHRlc3Rfd2Via2l0X3dlYl92aWV3X2Rlc3Ryb3kpOwogICAgIGdfdGVzdF9hZGRf
ZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2dyYWJfZm9jdXMiLCB0ZXN0X3dlYmtpdF93ZWJfdmlld19n
cmFiX2ZvY3VzKTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy93aW5kb3ct
ZmVhdHVyZXMiLCB0ZXN0X3dlYmtpdF93ZWJfdmlld193aW5kb3dfZmVhdHVyZXMpOworICAgIGdf
dGVzdF9hZGRfZGF0YV9mdW5jKCIvd2Via2l0L3dlYnZpZXcvZnVsbHNjcmVlbiIsIChnY29uc3Rw
b2ludGVyKSBUUlVFLCB0ZXN0X3dlYmtpdF93ZWJfdmlld19mdWxsc2NyZWVuKTsKKyAgICBnX3Rl
c3RfYWRkX2RhdGFfZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2Z1bGxzY3JlZW4tYmxvY2tlZCIsIChn
Y29uc3Rwb2ludGVyKSBGQUxTRSwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfZnVsbHNjcmVlbik7CiAK
ICAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCAwODY4YTRhLi5lMjRiZWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0yMDgsNiArMjA4LDggQEAgZW51bSB7
CiAgICAgRURJVElOR19FTkRFRCwKICAgICBWSUVXUE9SVF9BVFRSSUJVVEVTX1JFQ09NUFVURV9S
RVFVRVNURUQsCiAgICAgVklFV1BPUlRfQVRUUklCVVRFU19DSEFOR0VELAorICAgIEVOVEVSSU5H
X0ZVTExTQ1JFRU4sCisgICAgTEVBVklOR19GVUxMU0NSRUVOLAogCiAgICAgTEFTVF9TSUdOQUwK
IH07CkBAIC0xMjUxLDYgKzEyNTMsMTcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmll
d19yZWFsX3Nob3VsZF9hbGxvd19lZGl0aW5nX2FjdGlvbihXZWJLaXRXZWJWaWV3KikKICAgICBy
ZXR1cm4gVFJVRTsKIH0KIAorCitnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9lbnRlcmlu
Z19mdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgcmV0dXJuIFRSVUU7
Cit9CisKK2dib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX2xlYXZpbmdfZnVsbHNjcmVlbihX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfZGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgV2Vi
S2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhvYmplY3QpOwpAQCAtMjYwNiw2
ICsyNjE5LDUzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktp
dFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgR19UWVBFX05PTkUsIDEs
CiAgICAgICAgICAgICBXRUJLSVRfVFlQRV9WSUVXUE9SVF9BVFRSSUJVVEVTKTsKIAorICAgIC8q
KgorICAgICAqIFdlYktpdFdlYlZpZXc6OmVudGVyaW5nLWZ1bGxzY3JlZW46CisgICAgICogQHdl
Yl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
CisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gSmF2YVNjcmlwdCBjb2RlIGNhbGxzCisgICAg
ICogPGZ1bmN0aW9uPmVsZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW48L2Z1bmN0aW9uPi4g
SWYgdGhlCisgICAgICogc2lnbmFsIGlzIG5vdCBoYW5kbGVkIHRoZSBXZWJWaWV3IHdpbGwgcHJv
Y2VlZCB0byBmdWxsIHNjcmVlbgorICAgICAqIGl0cyB0b3AgbGV2ZWwgd2luZG93LiBUaGlzIHNp
Z25hbCBjYW4gYmUgdXNlZCBieSBjbGllbnQgY29kZSB0bworICAgICAqIHJlcXVlc3QgcGVybWlz
c2lvbiB0byB0aGUgdXNlciBwcmlvciBkb2luZyB0aGUgZnVsbCBzY3JlZW4KKyAgICAgKiB0cmFu
c2l0aW9uIGFuZCBldmVudHVhbGx5IHByZXBhcmUgdGhlIHRvcC1sZXZlbCB3aW5kb3cKKyAgICAg
KiAoZS5nLiBoaWRlIHNvbWUgd2lkZ2V0cyB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBwYXJ0IG9m
IHRoZQorICAgICAqIGZ1bGwgc2NyZWVuIHdpbmRvdykuCisKKyAgICAgKiBSZXR1cm5zOiAlVFJV
RSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50
LgorICAgICAqICAgICVGQUxTRSB0byBibG9jayB0aGUgZXZlbnQuCisgICAgICovCisgICAgd2Vi
a2l0X3dlYl92aWV3X3NpZ25hbHNbRU5URVJJTkdfRlVMTFNDUkVFTl0gPQorICAgICAgICAgICAg
Z19zaWduYWxfbmV3KCJlbnRlcmluZy1mdWxsc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIChHU2lnbmFsRmxhZ3MpIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgICAg
ICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGVudGVyaW5nX2Z1
bGxzY3JlZW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9y
X2ZpcnN0X3dpbnMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxf
Qk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwg
MCk7CisKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmxlYXZpbmctZnVsbHNjcmVl
bjoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2ln
bmFsIGlzIGVtaXR0ZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgV2ViVmlldyBp
cyBhYm91dCB0byByZXN0b3JlIGl0cyB0b3AgbGV2ZWwKKyAgICAgKiB3aW5kb3cgb3V0IG9mIGl0
cyBmdWxsIHNjcmVlbiBzdGF0ZS4gVGhpcyBzaWduYWwgY2FuIGJlIHVzZWQgYnkKKyAgICAgKiBj
bGllbnQgY29kZSB0byByZXN0b3JlIHdpZGdldHMgaGlkZGVuIGR1cmluZyB0aGUKKyAgICAgKiBl
bnRlcmluZy1mdWxsc2NyZWVuIHN0YWdlIGZvciBpbnN0YW5jZS4KKworICAgICAqIFJldHVybnM6
ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUg
ZXZlbnQuCisgICAgICogICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4K
KyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tMRUFWSU5HX0ZVTExTQ1JFRU5d
ID0KKyAgICAgICAgICAgIGdfc2lnbmFsX25ldygibGVhdmluZy1mdWxsc2NyZWVuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpIEdfU0lHTkFMX1JVTl9MQVNULAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xh
c3MsIGxlYXZpbmdfZnVsbHNjcmVlbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgZ19zaWdu
YWxfYWNjdW11bGF0b3JfZmlyc3Rfd2lucywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB3
ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAorICAgICAgICAgICAgICAgICAgICAgICAgIEdf
VFlQRV9CT09MRUFOLCAwKTsKKwogICAgIC8qCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZp
cnR1YWwgbWV0aG9kcwogICAgICAqLwpAQCAtMjYyNyw2ICsyNjg3LDggQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xh
c3MpCiAgICAgd2ViVmlld0NsYXNzLT5yZWRvID0gd2Via2l0X3dlYl92aWV3X3JlYWxfcmVkbzsK
ICAgICB3ZWJWaWV3Q2xhc3MtPm1vdmVfY3Vyc29yID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbW92
ZV9jdXJzb3I7CiAgICAgd2ViVmlld0NsYXNzLT5zaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rpb24g
PSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rpb247CisgICAg
d2ViVmlld0NsYXNzLT5lbnRlcmluZ19mdWxsc2NyZWVuID0gd2Via2l0X3dlYl92aWV3X3JlYWxf
ZW50ZXJpbmdfZnVsbHNjcmVlbjsKKyAgICB3ZWJWaWV3Q2xhc3MtPmxlYXZpbmdfZnVsbHNjcmVl
biA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2xlYXZpbmdfZnVsbHNjcmVlbjsKIAogICAgIEdPYmpl
Y3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyh3ZWJWaWV3Q2xhc3MpOwogICAg
IG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0X3dlYl92aWV3X2Rpc3Bvc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCA2NzhlMzI5Li5kNzIyOWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKQEAgLTE3Niw2ICsxNzYs
OCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgKCogdW5kbykgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICp3ZWJfdmlldyk7CiAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgKCogcmVkbykgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAgICAgZ2Jv
b2xlYW4gICAgICAgICAgICAgICAgICAgKCogc2hvdWxkX2FsbG93X2VkaXRpbmdfYWN0aW9uKSAo
V2ViS2l0V2ViVmlldyAgICp3ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAg
ICAgKCogZW50ZXJpbmdfZnVsbHNjcmVlbikgKFdlYktpdFdlYlZpZXcgICAqd2ViX3ZpZXcpOwor
ICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICgqIGxlYXZpbmdfZnVsbHNjcmVlbikgKFdl
YktpdFdlYlZpZXcgICAqd2ViX3ZpZXcpOwogCiAgICAgLyogUGFkZGluZyBmb3IgZnV0dXJlIGV4
cGFuc2lvbiAqLwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJjMWJhY2EuLjUw
YWZhNDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwyNiBAQAogMjAxMi0wMS0xMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dUS10gRnVsbFNjcmVlbiBzaWduYWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE4MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgdHdvIG5ldyBl
bnRlcmluZy9sZWF2aW5nIGZ1bGxzY3JlZW4gc2lnbmFscyB0byBoaWRlL3Nob3cKKyAgICAgICAg
dGhlIHRvb2wgYmFyLCB0aGUgc3RhdHVzIGJhciBhbmQgYXNrIHRoZSB1c2VyJ3MgcGVybWlzc2lv
biBiZWZvcmUKKyAgICAgICAgZW50ZXJpbmcgZnVsbHNjcmVlbi4KKworICAgICAgICAqIEd0a0xh
dW5jaGVyL21haW4uYzoKKyAgICAgICAgKHdlYlZpZXdGdWxsc2NyZWVuTWVzc2FnZVdpbmRvd0Ns
b3NlKToKKyAgICAgICAgKHdlYlZpZXdXaW5kb3dTdGF0ZUV2ZW50KToKKyAgICAgICAgKGhpZGVf
d2lkZ2V0KToKKyAgICAgICAgKHNob3dfd2lkZ2V0KToKKyAgICAgICAgKHdlYlZpZXdFbnRlcmlu
Z0Z1bGxTY3JlZW4pOgorICAgICAgICAod2ViVmlld0xlYXZpbmdGdWxsU2NyZWVuKToKKyAgICAg
ICAgKGNyZWF0ZUJyb3dzZXIpOgorICAgICAgICAoY3JlYXRlV2luZG93KToKKworMjAxMi0wMS0x
MiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKICAgICAgICAgW1dL
Ml1bR1RLXSBGdWxsU2NyZWVuIHNpZ25hbHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2MTY2CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0d0a0xhdW5jaGVy
L21haW4uYyBiL1Rvb2xzL0d0a0xhdW5jaGVyL21haW4uYwppbmRleCBlM2E2NmIwLi4yYjJhMGZh
IDEwMDY0NAotLS0gYS9Ub29scy9HdGtMYXVuY2hlci9tYWluLmMKKysrIGIvVG9vbHMvR3RrTGF1
bmNoZXIvbWFpbi5jCkBAIC0xMjMsNyArMTIzLDc0IEBAIHN0YXRpYyBnYm9vbGVhbiBjbG9zZVdl
YlZpZXdDYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHdGtXaWRnZXQqIHdpbmRvdykKICAgICBy
ZXR1cm4gVFJVRTsKIH0KIAotc3RhdGljIEd0a1dpZGdldCogY3JlYXRlQnJvd3NlcihHdGtXaWRn
ZXQqIHdpbmRvdywgR3RrV2lkZ2V0KiB1cmlFbnRyeSwgR3RrV2lkZ2V0KiBzdGF0dXNiYXIsIFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0Z1bGxzY3JlZW5N
ZXNzYWdlV2luZG93Q2xvc2UoR3RrV2lkZ2V0ICpkaWFsb2cpCit7CisgICAgaWYgKEdUS19JU19X
SURHRVQoZGlhbG9nKSkKKyAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKEdUS19ESUFMT0co
ZGlhbG9nKSwgImNsb3NlIik7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xl
YW4gd2ViVmlld1dpbmRvd1N0YXRlRXZlbnQoR3RrV2lkZ2V0ICp3aWRnZXQsIEdka0V2ZW50V2lu
ZG93U3RhdGUgKmV2ZW50LCBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3KQoreworICAgIGlmIChldmVu
dC0+bmV3X3dpbmRvd19zdGF0ZSAmIEdES19XSU5ET1dfU1RBVEVfRlVMTFNDUkVFTikgeworICAg
ICAgICBXZWJLaXRXZWJGcmFtZSAqZnJhbWUgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJh
bWUod2ViVmlldyk7CisgICAgICAgIGNvbnN0IGdjaGFyICp1cmkgPSB3ZWJraXRfd2ViX2ZyYW1l
X2dldF91cmkoZnJhbWUpOworICAgICAgICBHdGtXaWRnZXQgKnRvcExldmVsV2luZG93ID0gZ3Rr
X3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisgICAgICAgIEd0a1dp
ZGdldCAqZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyhHVEtfV0lORE9XKHRvcExldmVs
V2luZG93KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVEtfRElBTE9HX01PREFMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdUS19NRVNTQUdFX0lORk8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0JVVFRPTlNfQ0xPU0UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIGlzIG5v
dyBmdWxsIHNjcmVlbi4gUHJlc3MgRVNDIG9yIGYgdG8gZXhpdC4iLCB1cmkpOworICAgICAgICBn
X3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoZGlhbG9nLCAicmVzcG9uc2UiLCBHX0NBTExCQUNLKGd0
a193aWRnZXRfZGVzdHJveSksIGRpYWxvZyk7CisgICAgICAgIGdfdGltZW91dF9hZGQoMTUwMCwg
KEdTb3VyY2VGdW5jKSB3ZWJWaWV3RnVsbHNjcmVlbk1lc3NhZ2VXaW5kb3dDbG9zZSwgZGlhbG9n
KTsKKyAgICAgICAgZ3RrX2RpYWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKTsKKyAgICB9Cisg
ICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkIGhpZGVXaWRnZXQoR3RrV2lkZ2V0KiB3
aWRnZXQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgaWYgKCFHVEtfSVNfU0NST0xMRURfV0lORE9X
KHdpZGdldCkpCisgICAgICAgIGd0a193aWRnZXRfaGlkZSh3aWRnZXQpOworfQorCitzdGF0aWMg
dm9pZCBzaG93V2lkZ2V0KEd0a1dpZGdldCogd2lkZ2V0LCBncG9pbnRlciBkYXRhKQoreworICAg
IGlmICghR1RLX0lTX1NDUk9MTEVEX1dJTkRPVyh3aWRnZXQpKQorICAgICAgICBndGtfd2lkZ2V0
X3Nob3dfYWxsKHdpZGdldCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RW50ZXJpbmdG
dWxsU2NyZWVuKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEd0a1dpZGdldCogdmJveCkKK3sKKyAg
ICBXZWJLaXRXZWJGcmFtZSAqZnJhbWUgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUo
d2ViVmlldyk7CisgICAgY29uc3QgZ2NoYXIgKnVyaSA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3Vy
aShmcmFtZSk7CisgICAgR3RrV2lkZ2V0ICp0b3BMZXZlbFdpbmRvdyA9IGd0a193aWRnZXRfZ2V0
X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlldykpOworCisgICAgR3RrV2lkZ2V0ICpkaWFsb2cg
PSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3KEdUS19XSU5ET1codG9wTGV2ZWxXaW5kb3cpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfRElBTE9HX01P
REFMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtf
TUVTU0FHRV9JTkZPLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVEtfQlVUVE9OU19ZRVNfTk8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJBbGxvdyBmdWxsIHNjcmVlbiBkaXNwbGF5IG9mICVzID8iLCB1cmkp
OworICAgIGdpbnQgcmVzdWx0ID0gZ3RrX2RpYWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKTsK
KyAgICBpZiAocmVzdWx0ID09IEdUS19SRVNQT05TRV9ZRVMpIHsKKyAgICAgICAgZ19zaWduYWxf
Y29ubmVjdCh0b3BMZXZlbFdpbmRvdywgIndpbmRvdy1zdGF0ZS1ldmVudCIsIEdfQ0FMTEJBQ0so
d2ViVmlld1dpbmRvd1N0YXRlRXZlbnQpLCB3ZWJWaWV3KTsKKyAgICAgICAgZ3RrX2NvbnRhaW5l
cl9mb3JlYWNoKEdUS19DT05UQUlORVIodmJveCksIChHdGtDYWxsYmFjaykgaGlkZVdpZGdldCwg
TlVMTCk7CisgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKGRpYWxvZykpOwor
ICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19X
SURHRVQoZGlhbG9nKSk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4g
d2ViVmlld0xlYXZpbmdGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEd0a1dpZGdl
dCogdmJveCkKK3sKKyAgICBHdGtXaWRnZXQgKnRvcExldmVsV2luZG93ID0gZ3RrX3dpZGdldF9n
ZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNf
ZGlzY29ubmVjdF9ieV9mdW5jKHRvcExldmVsV2luZG93LCBHX0NBTExCQUNLKHdlYlZpZXdXaW5k
b3dTdGF0ZUV2ZW50KSwgd2ViVmlldyk7CisgICAgZ3RrX2NvbnRhaW5lcl9mb3JlYWNoKEdUS19D
T05UQUlORVIodmJveCksIChHdGtDYWxsYmFjaykgc2hvd1dpZGdldCwgTlVMTCk7CisgICAgcmV0
dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBHdGtXaWRnZXQqIGNyZWF0ZUJyb3dzZXIoR3RrV2lkZ2V0
KiB3aW5kb3csIEd0a1dpZGdldCogdXJpRW50cnksIEd0a1dpZGdldCogc3RhdHVzYmFyLCBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBHdGtXaWRnZXQqIHZib3gpCiB7CiAgICAgR3RrV2lkZ2V0ICpz
Y3JvbGxlZFdpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpOwogICAg
IGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9s
bGVkV2luZG93KSwgR1RLX1BPTElDWV9BVVRPTUFUSUMsIEdUS19QT0xJQ1lfQVVUT01BVElDKTsK
QEAgLTEzNyw2ICsyMDQsOCBAQCBzdGF0aWMgR3RrV2lkZ2V0KiBjcmVhdGVCcm93c2VyKEd0a1dp
ZGdldCogd2luZG93LCBHdGtXaWRnZXQqIHVyaUVudHJ5LCBHdGtXaWRnZQogICAgIGdfc2lnbmFs
X2Nvbm5lY3Qod2ViVmlldywgImNyZWF0ZS13ZWItdmlldyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2Vi
Vmlld0NiKSwgd2luZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJ3ZWItdmll
dy1yZWFkeSIsIEdfQ0FMTEJBQ0sod2ViVmlld1JlYWR5Q2IpLCB3aW5kb3cpOwogICAgIGdfc2ln
bmFsX2Nvbm5lY3Qod2ViVmlldywgImNsb3NlLXdlYi12aWV3IiwgR19DQUxMQkFDSyhjbG9zZVdl
YlZpZXdDYiksIHdpbmRvdyk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAiZW50ZXJp
bmctZnVsbHNjcmVlbiIsIEdfQ0FMTEJBQ0sod2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbiksIHZi
b3gpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgImxlYXZpbmctZnVsbHNjcmVlbiIs
IEdfQ0FMTEJBQ0sod2ViVmlld0xlYXZpbmdGdWxsU2NyZWVuKSwgdmJveCk7CiAKICAgICByZXR1
cm4gc2Nyb2xsZWRXaW5kb3c7CiB9CkBAIC0yMTQsNyArMjgzLDcgQEAgc3RhdGljIEd0a1dpZGdl
dCogY3JlYXRlV2luZG93KFdlYktpdFdlYlZpZXcqKiBvdXRXZWJWaWV3KQogI2VuZGlmCiAgICAg
c3RhdHVzYmFyID0gY3JlYXRlU3RhdHVzYmFyKHdlYlZpZXcpOwogICAgIGd0a19ib3hfcGFja19z
dGFydChHVEtfQk9YKHZib3gpLCBjcmVhdGVUb29sYmFyKHVyaUVudHJ5LCB3ZWJWaWV3KSwgRkFM
U0UsIEZBTFNFLCAwKTsKLSAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgY3Jl
YXRlQnJvd3Nlcih3aW5kb3csIHVyaUVudHJ5LCBzdGF0dXNiYXIsIHdlYlZpZXcpLCBUUlVFLCBU
UlVFLCAwKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgY3JlYXRlQnJv
d3Nlcih3aW5kb3csIHVyaUVudHJ5LCBzdGF0dXNiYXIsIHdlYlZpZXcsIHZib3gpLCBUUlVFLCBU
UlVFLCAwKTsKICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdHVzYmFy
LCBGQUxTRSwgRkFMU0UsIDApOwogCiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5F
Uih3aW5kb3cpLCB2Ym94KTsKLS0gCjEuNy44LjM=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123118</attachid>
            <date>2012-01-19 05:46:17 -0800</date>
            <delta_ts>2012-02-02 04:16:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>20842</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBlYjYyMWNjMWRkMDY1NjM0Mjk4MWE0YmUyZDBlODc0MDgzYzViNjM2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDE5IEphbiAyMDEyIDE0OjQ2OjE5ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDI2ICsrKysrKwogLi4uL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmNwcCAgfCAgIDU3ICsrKysrKysrKysrLS0KIFNvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIHwgICAgNCArCiBTb3VyY2UvV2ViS2l0L2d0
ay90ZXN0cy90ZXN0d2Vidmlldy5jICAgICAgICAgICAgICB8ICAgODcgKysrKysrKysrKysrKysr
KysrKysKIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCAgICAgICAg
IHwgICA2NiArKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmggICAgICAgICAgIHwgICAgNCArLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIxICsrKysrCiBUb29scy9HdGtMYXVuY2hlci9t
YWluLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzMgKysrKysrKysrKysrKysrKy0K
IDggZmlsZXMgY2hhbmdlZCwgMzI1IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwppbmRleCAwOGJiODQ5Li41MTE2MjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjkgQEAKKzIwMTItMDEtMTkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdIEZ1bGxTY3JlZW4gc2lnbmFscworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBlbnRlcmluZy1mdWxsc2Ny
ZWVuIGFuZCBsZWF2aW5nLWZ1bGxzY3JlZW4gc2lnbmFscywgbWVhbnQgdG8KKyAgICAgICAgYmUg
dXNlZCBieSB0aGUgdXNlciBhZ2VudCB0byBiZSBub3RpZmllZCB3aGVuIGFuIGVsZW1lbnQgcmVx
dWVzdHMKKyAgICAgICAgZnVsbCBzY3JlZW4gZGlzcGxheSBhbmQgd2hlbiB0aGUgZnVsbCBzY3Jl
ZW4gZGlzcGxheSBpcyB0byBiZQorICAgICAgICBkaXNhYmxlZC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6c3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6Om9u
RnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGll
bnQ6OmNhbmNlbEZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmVu
dGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6
OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmg6CisgICAgICAgICogdGVzdHMvdGVzdHdlYnZpZXcuYzoKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVh
bF9lbnRlcmluZ19mdWxsc2NyZWVuKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX2xl
YXZpbmdfZnVsbHNjcmVlbik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6
CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuaDoKKwogMjAxMi0wMS0xOCAgRXZhbiBO
ZW1lcnNvbiAgPGV2YW5AY29ldXMtZ3JvdXAuY29tPgogCiAgICAgICAgIFtHVEtdIFdlYktpdC0z
LjAuZ2lyIGRvZXMgbm90IGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgQyBpbmNsdWRlcyBvciBl
eHBvcnRlZCBwYWNrYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggYjQ1NGFmNC4uZDZlZmNmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
CkBAIC02MCw2ICs2MCw4IEBACiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYnZpZXdwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVy
ZXNwcml2YXRlLmgiCisjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPGdkay9nZGtrZXlz
eW1zLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAj
aW5jbHVkZSA8Z3RrL2d0ay5oPgpAQCAtODk4LDI5ICs5MDAsNjYgQEAgdm9pZCBDaHJvbWVDbGll
bnQ6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKIGJvb2wgQ2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50
KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgd2l0aEtleWJvYXJkKQogewot
ICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiAhd2l0aEtleWJvYXJkOworfQorCitzdGF0aWMg
Z2Jvb2xlYW4gb25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVudChHdGtXaWRnZXQqIHdpZGdldCwg
R2RrRXZlbnRLZXkqIGV2ZW50LCBDaHJvbWVDbGllbnQqIGNocm9tZUNsaWVudCkKK3sKKyAgICBz
d2l0Y2ggKGV2ZW50LT5rZXl2YWwpIHsKKyAgICBjYXNlIEdES19LRVlfRXNjYXBlOgorICAgIGNh
c2UgR0RLX0tFWV9mOgorICAgIGNhc2UgR0RLX0tFWV9GOgorICAgICAgICBjaHJvbWVDbGllbnQt
PmNhbmNlbEZ1bGxTY3JlZW4oKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIEZBTFNFOworfQorCit2b2lkIENo
cm9tZUNsaWVudDo6Y2FuY2VsRnVsbFNjcmVlbigpCit7CisgICAgQVNTRVJUKG1fZnVsbFNjcmVl
bkVsZW1lbnQpOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdENh
bmNlbEZ1bGxTY3JlZW4oKTsKIH0KIAogdm9pZCBDaHJvbWVDbGllbnQ6OmVudGVyRnVsbFNjcmVl
bkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKIHsKKyAgICBnYm9vbGVhbiBy
ZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJWaWV3LCAiZW50ZXJp
bmctZnVsbHNjcmVlbiIsICZyZXR1cm5WYWx1ZSk7CisgICAgaWYgKCFyZXR1cm5WYWx1ZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IGFkb3B0UmVmKGVsZW1l
bnQpOworCiAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEVudGVyRnVsbFNjcmVl
bkZvckVsZW1lbnQoZWxlbWVudCk7CiAgICAgbV9hZGp1c3RtZW50V2F0Y2hlci5kaXNhYmxlQWxs
U2Nyb2xsYmFycygpOwotI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAoZWxlbWVudC0+dGFnTmFt
ZSgpID09ICJWSURFTyIpCi0gICAgICAgIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoc3RhdGljX2Nh
c3Q8Tm9kZSo+KGVsZW1lbnQpKTsKLSNlbmRpZgorCisgICAgR3RrV2lkZ2V0KiB0b3BMZXZlbFdp
bmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7Cisg
ICAgaWYgKGd0a193aWRnZXRfaXNfdG9wbGV2ZWwodG9wTGV2ZWxXaW5kb3cpKQorICAgICAgICBn
X3NpZ25hbF9jb25uZWN0KHRvcExldmVsV2luZG93LCAia2V5LXByZXNzLWV2ZW50IiwgR19DQUxM
QkFDSyhvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KSwgdGhpcyk7CisKKyAgICBndGtfd2lu
ZG93X2Z1bGxzY3JlZW4oR1RLX1dJTkRPVyh0b3BMZXZlbFdpbmRvdykpOworCiAgICAgZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50
KTsKIH0KIAogdm9pZCBDaHJvbWVDbGllbnQ6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJD
b3JlOjpFbGVtZW50KiBlbGVtZW50KQogeworICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJsZWF2aW5nLWZ1bGxzY3JlZW4iLCAm
cmV0dXJuVmFsdWUpOworCisgICAgR3RrV2lkZ2V0KiB0b3BMZXZlbFdpbmRvdyA9IGd0a193aWRn
ZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisgICAgaWYgKGd0a193aWRn
ZXRfaXNfdG9wbGV2ZWwodG9wTGV2ZWxXaW5kb3cpKQorICAgICAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X2J5X2Z1bmModG9wTGV2ZWxXaW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQpLCB0aGlzKTsKKwogICAgIGVsZW1lbnQt
PmRvY3VtZW50KCktPndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7
CisgICAgaWYgKGd0a193aWRnZXRfaXNfdG9wbGV2ZWwodG9wTGV2ZWxXaW5kb3cpKQorICAgICAg
ICBndGtfd2luZG93X3VuZnVsbHNjcmVlbihHVEtfV0lORE9XKHRvcExldmVsV2luZG93KSk7CiAg
ICAgbV9hZGp1c3RtZW50V2F0Y2hlci5lbmFibGVBbGxTY3JvbGxiYXJzKCk7Ci0jaWYgRU5BQkxF
KFZJREVPKQotICAgIGlmIChlbGVtZW50LT50YWdOYW1lKCkgPT0gIlZJREVPIikKLSAgICAgICAg
d2ViVmlld0V4aXRGdWxsc2NyZWVuKG1fd2ViVmlldyk7Ci0jZW5kaWYKICAgICBlbGVtZW50LT5k
b2N1bWVudCgpLT53ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7Cisg
ICAgbV9mdWxsU2NyZWVuRWxlbWVudC5jbGVhcigpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggOTMy
MjI0Zi4uZGYwOThjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTE1NSw2ICsxNTUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKICAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQoY29u
c3QgRWxlbWVudCosIGJvb2wgd2l0aEtleWJvYXJkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGVu
dGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKKyAgICAgICAgdm9pZCBjYW5jZWxG
dWxsU2NyZWVuKCk7CiAjZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVy
QmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtMTgzLDYgKzE4NCw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICBWZWN0b3I8SW50
U2l6ZT4gbV9zY3JvbGxPZmZzZXRzOwogICAgICAgICBkb3VibGUgbV9sYXN0RGlzcGxheVRpbWU7
CiAgICAgICAgIHVpbnQgbV9yZXBhaW50U29vblNvdXJjZUlkOworI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fZnVsbFNjcmVlbkVsZW1lbnQ7Cisj
ZW5kaWYKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90
ZXN0d2Vidmlldy5jIGIvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYwppbmRl
eCAzMzVmZmRkLi45YjQ0ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90
ZXN0d2Vidmlldy5jCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMK
QEAgLTM2Myw2ICszNjMsOTEgQEAgc3RhdGljIHZvaWQgdGVzdF93ZWJraXRfd2ViX3ZpZXdfd2lu
ZG93X2ZlYXR1cmVzKCkKICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kod2luZG93KTsKIH0gICAgCiAK
K3N0YXRpYyBnYm9vbGVhbiBlbWl0S2V5U3Ryb2tlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7
CisgICAgLy8gY3JlYXRlIGFuZCBzZW5kIHRoZSBldmVudAorICAgIEdka0V2ZW50KiBwcmVzc0V2
ZW50ID0gZ2RrX2V2ZW50X25ldyhHREtfS0VZX1BSRVNTKTsKKyAgICBwcmVzc0V2ZW50LT5rZXku
a2V5dmFsID0gR0RLX0tFWV9mOworICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9n
ZXRfd2luZG93KEdUS19XSURHRVQod2ViVmlldykpOworICAgIHByZXNzRXZlbnQtPmtleS53aW5k
b3cgPSB3aW5kb3c7CisgICAgZ19vYmplY3RfcmVmKHByZXNzRXZlbnQtPmtleS53aW5kb3cpOwor
CisgICAgR2RrRGV2aWNlTWFuYWdlciogbWFuYWdlciA9IGdka19kaXNwbGF5X2dldF9kZXZpY2Vf
bWFuYWdlcihnZGtfd2luZG93X2dldF9kaXNwbGF5KHdpbmRvdykpOworICAgIGdka19ldmVudF9z
ZXRfZGV2aWNlKHByZXNzRXZlbnQsIGdka19kZXZpY2VfbWFuYWdlcl9nZXRfY2xpZW50X3BvaW50
ZXIobWFuYWdlcikpOworCisgICAgLy8gV2hlbiBzeW50aGVzaXppbmcgYW4gZXZlbnQsIGFuIGlu
dmFsaWQgaGFyZHdhcmVfa2V5Y29kZSB2YWx1ZQorICAgIC8vIGNhbiBjYXVzZSBpdCB0byBiZSBi
YWRseSBwcm9jZXNzZWQgYnkgR3RrKy4KKyAgICBHZGtLZXltYXBLZXkqIGtleXM7CisgICAgZ2lu
dCBuX2tleXM7CisgICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtf
a2V5bWFwX2dldF9kZWZhdWx0KCksIEdES19LRVlfZiwgJmtleXMsICZuX2tleXMpKSB7CisgICAg
ICAgIHByZXNzRXZlbnQtPmtleS5oYXJkd2FyZV9rZXljb2RlID0ga2V5c1swXS5rZXljb2RlOwor
ICAgICAgICBnX2ZyZWUoa2V5cyk7CisgICAgfQorCisgICAgR2RrRXZlbnQqIHJlbGVhc2VFdmVu
dCA9IGdka19ldmVudF9jb3B5KHByZXNzRXZlbnQpOworICAgIGd0a19tYWluX2RvX2V2ZW50KHBy
ZXNzRXZlbnQpOworICAgIGdka19ldmVudF9mcmVlKHByZXNzRXZlbnQpOworICAgIHJlbGVhc2VF
dmVudC0+a2V5LnR5cGUgPSBHREtfS0VZX1JFTEVBU0U7CisgICAgZ3RrX21haW5fZG9fZXZlbnQo
cmVsZWFzZUV2ZW50KTsKKyAgICBnZGtfZXZlbnRfZnJlZShyZWxlYXNlRXZlbnQpOworCisgICAg
cmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gZW50ZXJpbmdfZnVsbHNjcmVlbl9j
YihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBnYm9vbGVhbiBmdWxsU2NyZWVuQWxsb3dlZCkKK3sK
KyAgICBpZiAoZnVsbFNjcmVlbkFsbG93ZWQpIHsKKyAgICAgICAgZ190aW1lb3V0X2FkZCgyMDAs
IChHU291cmNlRnVuYykgZW1pdEtleVN0cm9rZSwgd2ViVmlldyk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgZ19tYWluX2xvb3BfcXVpdChsb29wKTsKKyAgICB9CisgICAgcmV0dXJuIGZ1bGxTY3Jl
ZW5BbGxvd2VkOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gbGVhdmluZ19mdWxsc2NyZWVuX2NiKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGdwb2ludGVyIGRhdGEpCit7CisgICAgZ19tYWluX2xvb3Bf
cXVpdChsb29wKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQgdGVzdF93ZWJr
aXRfd2ViX3ZpZXdfZnVsbHNjcmVlbihnY29uc3Rwb2ludGVyIGFsbG93ZWQpCit7CisgICAgR3Rr
V2lkZ2V0KiB3aW5kb3c7CisgICAgR3RrV2lkZ2V0KiB3ZWJfdmlldzsKKyAgICBXZWJLaXRXZWJT
ZXR0aW5ncyAqc2V0dGluZ3M7CisKKyAgICB3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lO
RE9XX1RPUExFVkVMKTsKKyAgICB3ZWJfdmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXcoKTsKKwor
ICAgIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhXRUJLSVRfV0VCX1ZJ
RVcod2ViX3ZpZXcpKTsKKyAgICBnX29iamVjdF9zZXQoc2V0dGluZ3MsICJlbmFibGUtZnVsbHNj
cmVlbiIsIFRSVUUsIE5VTEwpOworICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MoV0VC
S0lUX1dFQl9WSUVXKHdlYl92aWV3KSwgc2V0dGluZ3MpOworCisgICAgZ3RrX2NvbnRhaW5lcl9h
ZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB3ZWJfdmlldyk7CisKKyAgICBndGtfd2lkZ2V0X3No
b3dfYWxsKHdpbmRvdyk7CisKKyAgICBsb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIFRSVUUp
OworCisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJfdmlldywgImVudGVyaW5nLWZ1bGxzY3JlZW4i
LCBHX0NBTExCQUNLKGVudGVyaW5nX2Z1bGxzY3JlZW5fY2IpLCAoZ3BvaW50ZXIpIGFsbG93ZWQp
OworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViX3ZpZXcsICJsZWF2aW5nLWZ1bGxzY3JlZW4iLCBH
X0NBTExCQUNLKGxlYXZpbmdfZnVsbHNjcmVlbl9jYiksIE5VTEwpOworCisgICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfc3RyaW5nKFdFQktJVF9XRUJfVklFVyh3ZWJfdmlldyksICI8aHRtbD48Ym9k
eT4iCisgICAgICAgICAgICAgICAgICAgIjxzY3JpcHQ+IgorICAgICAgICAgICAgICAgICAgICJ2
YXIgZXZlbnROYW1lID0gJ2tleXByZXNzJzsiCisgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9u
IHRodW5rKCkgeyIKKyAgICAgICAgICAgICAgICAgICAiICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lLCB0aHVuaywgZmFsc2UpOyIKKyAgICAgICAgICAgICAgICAgICAi
ICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOyIK
KyAgICAgICAgICAgICAgICAgICAifSIKKyAgICAgICAgICAgICAgICAgICAiZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRodW5rLCBmYWxzZSk7IgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iLCBOVUxMLCBOVUxMLCBO
VUxMKTsKKworICAgIGdfdGltZW91dF9hZGQoMTAwLCAoR1NvdXJjZUZ1bmMpIGVtaXRLZXlTdHJv
a2UsIFdFQktJVF9XRUJfVklFVyh3ZWJfdmlldykpOworICAgIGdfbWFpbl9sb29wX3J1bihsb29w
KTsKKworICAgIGd0a193aWRnZXRfZGVzdHJveSh3aW5kb3cpOworfQorCiBpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCiB7CiAgICAgU291cFNlcnZlciogc2VydmVyOwpAQCAtMzkwLDYg
KzQ3NSw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBnX3Rlc3RfYWRk
X2Z1bmMoIi93ZWJraXQvd2Vidmlldy9kZXN0cm95IiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfZGVz
dHJveSk7CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnZpZXcvZ3JhYl9mb2N1cyIs
IHRlc3Rfd2Via2l0X3dlYl92aWV3X2dyYWJfZm9jdXMpOwogICAgIGdfdGVzdF9hZGRfZnVuYygi
L3dlYmtpdC93ZWJ2aWV3L3dpbmRvdy1mZWF0dXJlcyIsIHRlc3Rfd2Via2l0X3dlYl92aWV3X3dp
bmRvd19mZWF0dXJlcyk7CisgICAgZ190ZXN0X2FkZF9kYXRhX2Z1bmMoIi93ZWJraXQvd2Vidmll
dy9mdWxsc2NyZWVuIiwgKGdjb25zdHBvaW50ZXIpIFRSVUUsIHRlc3Rfd2Via2l0X3dlYl92aWV3
X2Z1bGxzY3JlZW4pOworICAgIGdfdGVzdF9hZGRfZGF0YV9mdW5jKCIvd2Via2l0L3dlYnZpZXcv
ZnVsbHNjcmVlbi1ibG9ja2VkIiwgKGdjb25zdHBvaW50ZXIpIEZBTFNFLCB0ZXN0X3dlYmtpdF93
ZWJfdmlld19mdWxsc2NyZWVuKTsKIAogICAgIHJldHVybiBnX3Rlc3RfcnVuICgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IGFhNDMyYzUuLjA1
NzJkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAg
LTIwOCw2ICsyMDgsOCBAQCBlbnVtIHsKICAgICBFRElUSU5HX0VOREVELAogICAgIFZJRVdQT1JU
X0FUVFJJQlVURVNfUkVDT01QVVRFX1JFUVVFU1RFRCwKICAgICBWSUVXUE9SVF9BVFRSSUJVVEVT
X0NIQU5HRUQsCisgICAgRU5URVJJTkdfRlVMTFNDUkVFTiwKKyAgICBMRUFWSU5HX0ZVTExTQ1JF
RU4sCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTEyNTIsNiArMTI1NCwxNyBAQCBzdGF0aWMg
Z2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfc2hvdWxkX2FsbG93X2VkaXRpbmdfYWN0aW9u
KFdlYktpdFdlYlZpZXcqKQogICAgIHJldHVybiBUUlVFOwogfQogCisKK3N0YXRpYyBnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9lbnRlcmluZ19mdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCit7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRfd2ViX3ZpZXdfcmVhbF9sZWF2aW5nX2Z1bGxzY3JlZW4oV2ViS2l0V2ViVmlldyogd2ViVmll
dykKK3sKKyAgICByZXR1cm4gVFJVRTsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X2Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KTsKQEAgLTI2MDcsNiArMjYyMCw1NyBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZp
ZXdDbGFzcykKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAogICAgICAgICAgICAgV0VCS0lU
X1RZUEVfVklFV1BPUlRfQVRUUklCVVRFUyk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJW
aWV3OjplbnRlcmluZy1mdWxsc2NyZWVuOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRX
ZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqCisgICAgICogRW1p
dHRlZCB3aGVuIEphdmFTY3JpcHQgY29kZSBjYWxscworICAgICAqIDxmdW5jdGlvbj5lbGVtZW50
LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuPC9mdW5jdGlvbj4uIElmIHRoZQorICAgICAqIHNpZ25h
bCBpcyBub3QgaGFuZGxlZCB0aGUgV2ViVmlldyB3aWxsIHByb2NlZWQgdG8gZnVsbCBzY3JlZW4K
KyAgICAgKiBpdHMgdG9wIGxldmVsIHdpbmRvdy4gVGhpcyBzaWduYWwgY2FuIGJlIHVzZWQgYnkg
Y2xpZW50IGNvZGUgdG8KKyAgICAgKiByZXF1ZXN0IHBlcm1pc3Npb24gdG8gdGhlIHVzZXIgcHJp
b3IgZG9pbmcgdGhlIGZ1bGwgc2NyZWVuCisgICAgICogdHJhbnNpdGlvbiBhbmQgZXZlbnR1YWxs
eSBwcmVwYXJlIHRoZSB0b3AtbGV2ZWwgd2luZG93CisgICAgICogKGUuZy4gaGlkZSBzb21lIHdp
ZGdldHMgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgcGFydCBvZiB0aGUKKyAgICAgKiBmdWxsIHNj
cmVlbiB3aW5kb3cpLgorCisgICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5k
bGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAgICAgKiAgICAlRkFMU0Ug
dG8gYmxvY2sgdGhlIGV2ZW50LgorICAgICAqCisgICAgICogU2luY2U6IDEuNy41CisgICAgICov
CisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbRU5URVJJTkdfRlVMTFNDUkVFTl0gPQorICAg
ICAgICAgICAgZ19zaWduYWxfbmV3KCJlbnRlcmluZy1mdWxsc2NyZWVuIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGVu
dGVyaW5nX2Z1bGxzY3JlZW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdfc2lnbmFsX2Fj
Y3VtdWxhdG9yX2ZpcnN0X3dpbnMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgd2Via2l0
X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVf
Qk9PTEVBTiwgMCk7CisKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmxlYXZpbmct
ZnVsbHNjcmVlbjoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGlj
aCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUg
V2ViVmlldyBpcyBhYm91dCB0byByZXN0b3JlIGl0cyB0b3AgbGV2ZWwKKyAgICAgKiB3aW5kb3cg
b3V0IG9mIGl0cyBmdWxsIHNjcmVlbiBzdGF0ZS4gVGhpcyBzaWduYWwgY2FuIGJlIHVzZWQgYnkK
KyAgICAgKiBjbGllbnQgY29kZSB0byByZXN0b3JlIHdpZGdldHMgaGlkZGVuIGR1cmluZyB0aGUK
KyAgICAgKiBlbnRlcmluZy1mdWxsc2NyZWVuIHN0YWdlIGZvciBpbnN0YW5jZS4KKworICAgICAq
IFJldHVybnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2Vk
IGZvciB0aGUgZXZlbnQuCisgICAgICogICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQg
ZnVydGhlci4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjcuNQorICAgICAqLworICAgIHdlYmtp
dF93ZWJfdmlld19zaWduYWxzW0xFQVZJTkdfRlVMTFNDUkVFTl0gPQorICAgICAgICAgICAgZ19z
aWduYWxfbmV3KCJsZWF2aW5nLWZ1bGxzY3JlZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAg
IEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgKEdTaWduYWxGbGFncykgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgbGVhdmluZ19mdWxsc2Ny
ZWVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl9maXJz
dF93aW5zLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xF
QU5fX1ZPSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDApOwor
CiAgICAgLyoKICAgICAgKiBpbXBsZW1lbnRhdGlvbnMgb2YgdmlydHVhbCBtZXRob2RzCiAgICAg
ICovCkBAIC0yNjI4LDYgKzI2OTIsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xh
c3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJWaWV3Q2xh
c3MtPnJlZG8gPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9yZWRvOwogICAgIHdlYlZpZXdDbGFzcy0+
bW92ZV9jdXJzb3IgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9tb3ZlX2N1cnNvcjsKICAgICB3ZWJW
aWV3Q2xhc3MtPnNob3VsZF9hbGxvd19lZGl0aW5nX2FjdGlvbiA9IHdlYmtpdF93ZWJfdmlld19y
ZWFsX3Nob3VsZF9hbGxvd19lZGl0aW5nX2FjdGlvbjsKKyAgICB3ZWJWaWV3Q2xhc3MtPmVudGVy
aW5nX2Z1bGxzY3JlZW4gPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9lbnRlcmluZ19mdWxsc2NyZWVu
OworICAgIHdlYlZpZXdDbGFzcy0+bGVhdmluZ19mdWxsc2NyZWVuID0gd2Via2l0X3dlYl92aWV3
X3JlYWxfbGVhdmluZ19mdWxsc2NyZWVuOwogCiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFz
cyA9IEdfT0JKRUNUX0NMQVNTKHdlYlZpZXdDbGFzcyk7CiAgICAgb2JqZWN0Q2xhc3MtPmRpc3Bv
c2UgPSB3ZWJraXRfd2ViX3ZpZXdfZGlzcG9zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5oCmluZGV4IDY3OGUzMjkuLjJhMTViNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAtMTc2LDExICsxNzYsMTEgQEAgc3RydWN0IF9XZWJL
aXRXZWJWaWV3Q2xhc3MgewogICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICgqIHVuZG8p
ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOwogICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICgqIHJlZG8pICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOwogICAgIGdib29sZWFuICAgICAgICAgICAg
ICAgICAgICgqIHNob3VsZF9hbGxvd19lZGl0aW5nX2FjdGlvbikgKFdlYktpdFdlYlZpZXcgICAq
d2ViX3ZpZXcpOworICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICgqIGVudGVyaW5nX2Z1
bGxzY3JlZW4pIChXZWJLaXRXZWJWaWV3ICAgKndlYl92aWV3KTsKKyAgICBnYm9vbGVhbiAgICAg
ICAgICAgICAgICAgICAoKiBsZWF2aW5nX2Z1bGxzY3JlZW4pIChXZWJLaXRXZWJWaWV3ICAgKndl
Yl92aWV3KTsKIAogICAgIC8qIFBhZGRpbmcgZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KICAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDEpICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKIH07
CiAKIFdFQktJVF9BUEkgR1R5cGUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA3OThjNjdmLi42OGJmODllIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDEtMTkg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEZ1bGxTY3JlZW4gc2lnbmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzYxODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVc2UgdGhlIHR3byBuZXcgZW50ZXJpbmcvbGVhdmluZyBmdWxsc2NyZWVuIHNp
Z25hbHMgdG8gaGlkZS9zaG93CisgICAgICAgIHRoZSB0b29sIGJhciwgdGhlIHN0YXR1cyBiYXIg
YW5kIGFzayB0aGUgdXNlcidzIHBlcm1pc3Npb24gYmVmb3JlCisgICAgICAgIGVudGVyaW5nIGZ1
bGxzY3JlZW4uCisKKyAgICAgICAgKiBHdGtMYXVuY2hlci9tYWluLmM6CisgICAgICAgICh3ZWJW
aWV3RnVsbHNjcmVlbk1lc3NhZ2VXaW5kb3dDbG9zZSk6CisgICAgICAgICh3ZWJWaWV3V2luZG93
U3RhdGVFdmVudCk6CisgICAgICAgIChoaWRlX3dpZGdldCk6CisgICAgICAgIChzaG93X3dpZGdl
dCk6CisgICAgICAgICh3ZWJWaWV3RW50ZXJpbmdGdWxsU2NyZWVuKToKKyAgICAgICAgKHdlYlZp
ZXdMZWF2aW5nRnVsbFNjcmVlbik6CisgICAgICAgIChjcmVhdGVCcm93c2VyKToKKyAgICAgICAg
KGNyZWF0ZVdpbmRvdyk6CisKIDIwMTItMDEtMTkgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJu
ZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gRG8gZnVsbCBpbmNyZW1lbnRhbCBi
dWlsZHMgdW50aWwgYm90cyB1c2UgdXBkYXRlLXdlYmtpdApkaWZmIC0tZ2l0IGEvVG9vbHMvR3Rr
TGF1bmNoZXIvbWFpbi5jIGIvVG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCmluZGV4IGUzYTY2YjAu
LjJiMmEwZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0d0a0xhdW5jaGVyL21haW4uYworKysgYi9Ub29s
cy9HdGtMYXVuY2hlci9tYWluLmMKQEAgLTEyMyw3ICsxMjMsNzQgQEAgc3RhdGljIGdib29sZWFu
IGNsb3NlV2ViVmlld0NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a1dpZGdldCogd2luZG93
KQogICAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgR3RrV2lkZ2V0KiBjcmVhdGVCcm93c2Vy
KEd0a1dpZGdldCogd2luZG93LCBHdGtXaWRnZXQqIHVyaUVudHJ5LCBHdGtXaWRnZXQqIHN0YXR1
c2JhciwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3N0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RnVs
bHNjcmVlbk1lc3NhZ2VXaW5kb3dDbG9zZShHdGtXaWRnZXQgKmRpYWxvZykKK3sKKyAgICBpZiAo
R1RLX0lTX1dJREdFVChkaWFsb2cpKQorICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoR1RL
X0RJQUxPRyhkaWFsb2cpLCAiY2xvc2UiKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRp
YyBnYm9vbGVhbiB3ZWJWaWV3V2luZG93U3RhdGVFdmVudChHdGtXaWRnZXQgKndpZGdldCwgR2Rr
RXZlbnRXaW5kb3dTdGF0ZSAqZXZlbnQsIFdlYktpdFdlYlZpZXcgKndlYlZpZXcpCit7CisgICAg
aWYgKGV2ZW50LT5uZXdfd2luZG93X3N0YXRlICYgR0RLX1dJTkRPV19TVEFURV9GVUxMU0NSRUVO
KSB7CisgICAgICAgIFdlYktpdFdlYkZyYW1lICpmcmFtZSA9IHdlYmtpdF93ZWJfdmlld19nZXRf
bWFpbl9mcmFtZSh3ZWJWaWV3KTsKKyAgICAgICAgY29uc3QgZ2NoYXIgKnVyaSA9IHdlYmtpdF93
ZWJfZnJhbWVfZ2V0X3VyaShmcmFtZSk7CisgICAgICAgIEd0a1dpZGdldCAqdG9wTGV2ZWxXaW5k
b3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICAg
ICAgR3RrV2lkZ2V0ICpkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3KEdUS19XSU5ET1co
dG9wTGV2ZWxXaW5kb3cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdUS19ESUFMT0dfTU9EQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX01FU1NBR0VfSU5GTywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9OU19DTE9T
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
JXMgaXMgbm93IGZ1bGwgc2NyZWVuLiBQcmVzcyBFU0Mgb3IgZiB0byBleGl0LiIsIHVyaSk7Cisg
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChkaWFsb2csICJyZXNwb25zZSIsIEdfQ0FM
TEJBQ0soZ3RrX3dpZGdldF9kZXN0cm95KSwgZGlhbG9nKTsKKyAgICAgICAgZ190aW1lb3V0X2Fk
ZCgxNTAwLCAoR1NvdXJjZUZ1bmMpIHdlYlZpZXdGdWxsc2NyZWVuTWVzc2FnZVdpbmRvd0Nsb3Nl
LCBkaWFsb2cpOworICAgICAgICBndGtfZGlhbG9nX3J1bihHVEtfRElBTE9HKGRpYWxvZykpOwor
ICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQgaGlkZVdpZGdldChHdGtX
aWRnZXQqIHdpZGdldCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBpZiAoIUdUS19JU19TQ1JPTExF
RF9XSU5ET1cod2lkZ2V0KSkKKyAgICAgICAgZ3RrX3dpZGdldF9oaWRlKHdpZGdldCk7Cit9CisK
K3N0YXRpYyB2b2lkIHNob3dXaWRnZXQoR3RrV2lkZ2V0KiB3aWRnZXQsIGdwb2ludGVyIGRhdGEp
Cit7CisgICAgaWYgKCFHVEtfSVNfU0NST0xMRURfV0lORE9XKHdpZGdldCkpCisgICAgICAgIGd0
a193aWRnZXRfc2hvd19hbGwod2lkZ2V0KTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYlZpZXdF
bnRlcmluZ0Z1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyAqd2ViVmlldywgR3RrV2lkZ2V0KiB2Ym94
KQoreworICAgIFdlYktpdFdlYkZyYW1lICpmcmFtZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFp
bl9mcmFtZSh3ZWJWaWV3KTsKKyAgICBjb25zdCBnY2hhciAqdXJpID0gd2Via2l0X3dlYl9mcmFt
ZV9nZXRfdXJpKGZyYW1lKTsKKyAgICBHdGtXaWRnZXQgKnRvcExldmVsV2luZG93ID0gZ3RrX3dp
ZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisKKyAgICBHdGtXaWRnZXQg
KmRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXcoR1RLX1dJTkRPVyh0b3BMZXZlbFdpbmRv
dyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19E
SUFMT0dfTU9EQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdUS19NRVNTQUdFX0lORk8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdUS19CVVRUT05TX1lFU19OTywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkFsbG93IGZ1bGwgc2NyZWVuIGRpc3BsYXkgb2YgJXMg
PyIsIHVyaSk7CisgICAgZ2ludCByZXN1bHQgPSBndGtfZGlhbG9nX3J1bihHVEtfRElBTE9HKGRp
YWxvZykpOworICAgIGlmIChyZXN1bHQgPT0gR1RLX1JFU1BPTlNFX1lFUykgeworICAgICAgICBn
X3NpZ25hbF9jb25uZWN0KHRvcExldmVsV2luZG93LCAid2luZG93LXN0YXRlLWV2ZW50IiwgR19D
QUxMQkFDSyh3ZWJWaWV3V2luZG93U3RhdGVFdmVudCksIHdlYlZpZXcpOworICAgICAgICBndGtf
Y29udGFpbmVyX2ZvcmVhY2goR1RLX0NPTlRBSU5FUih2Ym94KSwgKEd0a0NhbGxiYWNrKSBoaWRl
V2lkZ2V0LCBOVUxMKTsKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQoZGlh
bG9nKSk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKyAgICBndGtfd2lkZ2V0X2Rlc3Ry
b3koR1RLX1dJREdFVChkaWFsb2cpKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBn
Ym9vbGVhbiB3ZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyAqd2ViVmlldywg
R3RrV2lkZ2V0KiB2Ym94KQoreworICAgIEd0a1dpZGdldCAqdG9wTGV2ZWxXaW5kb3cgPSBndGtf
d2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBnX3NpZ25hbF9o
YW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmModG9wTGV2ZWxXaW5kb3csIEdfQ0FMTEJBQ0sod2Vi
Vmlld1dpbmRvd1N0YXRlRXZlbnQpLCB3ZWJWaWV3KTsKKyAgICBndGtfY29udGFpbmVyX2ZvcmVh
Y2goR1RLX0NPTlRBSU5FUih2Ym94KSwgKEd0a0NhbGxiYWNrKSBzaG93V2lkZ2V0LCBOVUxMKTsK
KyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIEd0a1dpZGdldCogY3JlYXRlQnJvd3NlcihH
dGtXaWRnZXQqIHdpbmRvdywgR3RrV2lkZ2V0KiB1cmlFbnRyeSwgR3RrV2lkZ2V0KiBzdGF0dXNi
YXIsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a1dpZGdldCogdmJveCkKIHsKICAgICBHdGtX
aWRnZXQgKnNjcm9sbGVkV2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVM
TCk7CiAgICAgZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5KEdUS19TQ1JPTExFRF9XSU5E
T1coc2Nyb2xsZWRXaW5kb3cpLCBHVEtfUE9MSUNZX0FVVE9NQVRJQywgR1RLX1BPTElDWV9BVVRP
TUFUSUMpOwpAQCAtMTM3LDYgKzIwNCw4IEBAIHN0YXRpYyBHdGtXaWRnZXQqIGNyZWF0ZUJyb3dz
ZXIoR3RrV2lkZ2V0KiB3aW5kb3csIEd0a1dpZGdldCogdXJpRW50cnksIEd0a1dpZGdlCiAgICAg
Z19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAiY3JlYXRlLXdlYi12aWV3IiwgR19DQUxMQkFDSyhj
cmVhdGVXZWJWaWV3Q2IpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywg
IndlYi12aWV3LXJlYWR5IiwgR19DQUxMQkFDSyh3ZWJWaWV3UmVhZHlDYiksIHdpbmRvdyk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAiY2xvc2Utd2ViLXZpZXciLCBHX0NBTExCQUNL
KGNsb3NlV2ViVmlld0NiKSwgd2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcs
ICJlbnRlcmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyh3ZWJWaWV3RW50ZXJpbmdGdWxsU2Ny
ZWVuKSwgdmJveCk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAibGVhdmluZy1mdWxs
c2NyZWVuIiwgR19DQUxMQkFDSyh3ZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4pLCB2Ym94KTsKIAog
ICAgIHJldHVybiBzY3JvbGxlZFdpbmRvdzsKIH0KQEAgLTIxNCw3ICsyODMsNyBAQCBzdGF0aWMg
R3RrV2lkZ2V0KiBjcmVhdGVXaW5kb3coV2ViS2l0V2ViVmlldyoqIG91dFdlYlZpZXcpCiAjZW5k
aWYKICAgICBzdGF0dXNiYXIgPSBjcmVhdGVTdGF0dXNiYXIod2ViVmlldyk7CiAgICAgZ3RrX2Jv
eF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGNyZWF0ZVRvb2xiYXIodXJpRW50cnksIHdlYlZp
ZXcpLCBGQUxTRSwgRkFMU0UsIDApOwotICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZi
b3gpLCBjcmVhdGVCcm93c2VyKHdpbmRvdywgdXJpRW50cnksIHN0YXR1c2Jhciwgd2ViVmlldyks
IFRSVUUsIFRSVUUsIDApOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBj
cmVhdGVCcm93c2VyKHdpbmRvdywgdXJpRW50cnksIHN0YXR1c2Jhciwgd2ViVmlldywgdmJveCks
IFRSVUUsIFRSVUUsIDApOwogICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBz
dGF0dXNiYXIsIEZBTFNFLCBGQUxTRSwgMCk7CiAKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtf
Q09OVEFJTkVSKHdpbmRvdyksIHZib3gpOwotLSAKMS43LjguMw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125110</attachid>
            <date>2012-02-02 04:16:49 -0800</date>
            <delta_ts>2012-02-17 01:44:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>20849</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBjNTI1ZjNkZGNmMWNkMGM1OTUxZGZkODQ0ODU1NmFlNzdlYjk4OWM5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDIgRmViIDIwMTIgMTM6MTY6MjAgKzAxMDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMjYgKysrKysrCiAuLi4vV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwICB8ICAgNTggKysrKysrKysrKystLQogU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggfCAgICA0ICsKIFNvdXJjZS9XZWJLaXQvZ3Rr
L3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMgICAgICAgICAgICAgIHwgICA4NCArKysrKysrKysrKysrKysr
KysrKwogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwICAgICAgICAg
fCAgIDY1ICsrKysrKysrKysrKysrKwogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuaCAgICAgICAgICAgfCAgICA0ICstCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKysrKysKIFRvb2xzL0d0a0xhdW5jaGVyL21h
aW4uYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3OCArKysrKysrKysrKysrKysrKyst
CiA4IGZpbGVzIGNoYW5nZWQsIDMyNyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKaW5kZXggZmM4OGU5YS4uNWExMmZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI5IEBACisyMDEyLTAyLTAyICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1RLXSBGdWxsU2NyZWVuIHNpZ25hbHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgZW50ZXJpbmctZnVsbHNj
cmVlbiBhbmQgbGVhdmluZy1mdWxsc2NyZWVuIHNpZ25hbHMsIG1lYW50IHRvCisgICAgICAgIGJl
IHVzZWQgYnkgdGhlIHVzZXIgYWdlbnQgdG8gYmUgbm90aWZpZWQgd2hlbiBhbiBlbGVtZW50IHJl
cXVlc3RzCisgICAgICAgIGZ1bGwgc2NyZWVuIGRpc3BsYXkgYW5kIHdoZW4gdGhlIGZ1bGwgc2Ny
ZWVuIGRpc3BsYXkgaXMgdG8gYmUKKyAgICAgICAgZGlzYWJsZWQuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVD
bGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0Ojpv
bkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50OjpjYW5jZWxGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojpl
bnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50
OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5oOgorICAgICAgICAqIHRlc3RzL3Rlc3R3ZWJ2aWV3LmM6CisgICAgICAg
ICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3Jl
YWxfZW50ZXJpbmdfZnVsbHNjcmVlbik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVhbF9s
ZWF2aW5nX2Z1bGxzY3JlZW4pOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQp
OgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg6CisKIDIwMTItMDItMDEgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJd
IEZGVEZyYW1lIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCBiNDU0YWY0Li42MjE0MWE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5jcHAKQEAgLTYwLDYgKzYwLDggQEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAj
aW5jbHVkZSAid2Via2l0d2Vidmlld3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ3aW5k
b3dmZWF0dXJlc3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxnZGsvZ2RrLmg+CisjaW5jbHVkZSA8Z2Rr
L2dka2tleXN5bXMuaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1s
aWIuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CkBAIC04OTgsMjkgKzkwMCw2NyBAQCB2b2lkIENo
cm9tZUNsaWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQogYm9vbCBDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVlbkZv
ckVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCwgYm9vbCB3aXRoS2V5Ym9h
cmQpCiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuICF3aXRoS2V5Ym9hcmQ7Cit9CisK
K3N0YXRpYyBnYm9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KEd0a1dpZGdldCog
d2lkZ2V0LCBHZGtFdmVudEtleSogZXZlbnQsIENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50KQor
eworICAgIHN3aXRjaCAoZXZlbnQtPmtleXZhbCkgeworICAgIGNhc2UgR0RLX0tFWV9Fc2NhcGU6
CisgICAgY2FzZSBHREtfS0VZX2Y6CisgICAgY2FzZSBHREtfS0VZX0Y6CisgICAgICAgIGNocm9t
ZUNsaWVudC0+Y2FuY2VsRnVsbFNjcmVlbigpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gRkFMU0U7Cit9CisK
K3ZvaWQgQ2hyb21lQ2xpZW50OjpjYW5jZWxGdWxsU2NyZWVuKCkKK3sKKyAgICBBU1NFUlQobV9m
dWxsU2NyZWVuRWxlbWVudCk7CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZG9jdW1lbnQoKS0+
d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOwogfQogCiB2b2lkIENocm9tZUNsaWVudDo6ZW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogeworICAgIGdi
b29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcs
ICJlbnRlcmluZy1mdWxsc2NyZWVuIiwgJnJldHVyblZhbHVlKTsKKyAgICBpZiAocmV0dXJuVmFs
dWUpCisgICAgICAgIHJldHVybjsKKworICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdl
dF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAgICBpZighd2lkZ2V0SXNP
bnNjcmVlblRvcGxldmVsV2luZG93KHdpbmRvdykpCisgICAgICAgIHJldHVybjsKKworICAgIGdf
c2lnbmFsX2Nvbm5lY3Qod2luZG93LCAia2V5LXByZXNzLWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1
bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KSwgdGhpcyk7CisKKyAgICBtX2Z1bGxTY3JlZW5FbGVt
ZW50ID0gYWRvcHRSZWYoZWxlbWVudCk7CisKICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJr
aXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKICAgICBtX2FkanVzdG1l
bnRXYXRjaGVyLmRpc2FibGVBbGxTY3JvbGxiYXJzKCk7Ci0jaWYgRU5BQkxFKFZJREVPKQotICAg
IGlmIChlbGVtZW50LT50YWdOYW1lKCkgPT0gIlZJREVPIikKLSAgICAgICAgZW50ZXJGdWxsc2Ny
ZWVuRm9yTm9kZShzdGF0aWNfY2FzdDxOb2RlKj4oZWxlbWVudCkpOwotI2VuZGlmCisgICAgZ3Rr
X3dpbmRvd19mdWxsc2NyZWVuKEdUS19XSU5ET1cod2luZG93KSk7CiAgICAgZWxlbWVudC0+ZG9j
dW1lbnQoKS0+d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKIH0K
IAogdm9pZCBDaHJvbWVDbGllbnQ6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpF
bGVtZW50KiBlbGVtZW50KQogeworICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2ln
bmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJsZWF2aW5nLWZ1bGxzY3JlZW4iLCAmcmV0dXJu
VmFsdWUpOworICAgIGlmIChyZXR1cm5WYWx1ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3Rr
V2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKG1fd2Vi
VmlldykpOworICAgIEFTU0VSVCh3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3cod2luZG93
KSk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdpbmRvdywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVudCksIHRoaXMp
OworCiAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudChlbGVtZW50KTsKKyAgICBndGtfd2luZG93X3VuZnVsbHNjcmVlbihHVEtfV0lORE9X
KHdpbmRvdykpOwogICAgIG1fYWRqdXN0bWVudFdhdGNoZXIuZW5hYmxlQWxsU2Nyb2xsYmFycygp
OwotI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAoZWxlbWVudC0+dGFnTmFtZSgpID09ICJWSURF
TyIpCi0gICAgICAgIHdlYlZpZXdFeGl0RnVsbHNjcmVlbihtX3dlYlZpZXcpOwotI2VuZGlmCiAg
ICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KGVsZW1lbnQpOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQuY2xlYXIoKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5oCmluZGV4IDkzMjIyNGYuLmRmMDk4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0xNTUsNiArMTU1LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxTY3JlZW5G
b3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqLCBib29sIHdpdGhLZXlib2FyZCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CisgICAgICAg
IHZvaWQgY2FuY2VsRnVsbFNjcmVlbigpOwogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCBib29s
IHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24pIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KQEAgLTE4Myw2ICsxODQsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAg
ICAgVmVjdG9yPEludFNpemU+IG1fc2Nyb2xsT2Zmc2V0czsKICAgICAgICAgZG91YmxlIG1fbGFz
dERpc3BsYXlUaW1lOwogICAgICAgICB1aW50IG1fcmVwYWludFNvb25Tb3VyY2VJZDsKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBtX2Z1bGxTY3Jl
ZW5FbGVtZW50OworI2VuZGlmCiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3
ZWJ2aWV3LmMKaW5kZXggMzM1ZmZkZC4uZTllMGUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90
ZXN0d2Vidmlldy5jCkBAIC0zNjMsNiArMzYzLDg4IEBAIHN0YXRpYyB2b2lkIHRlc3Rfd2Via2l0
X3dlYl92aWV3X3dpbmRvd19mZWF0dXJlcygpCiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KHdpbmRv
dyk7CiB9ICAgIAogCitzdGF0aWMgZ2Jvb2xlYW4gZW1pdEtleVN0cm9rZShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQoreworICAgIC8vIGNyZWF0ZSBhbmQgc2VuZCB0aGUgZXZlbnQKKyAgICBHZGtF
dmVudCogcHJlc3NFdmVudCA9IGdka19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUyk7CisgICAgcHJl
c3NFdmVudC0+a2V5LmtleXZhbCA9IEdES19LRVlfZjsKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9
IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBwcmVzc0V2
ZW50LT5rZXkud2luZG93ID0gd2luZG93OworICAgIGdfb2JqZWN0X3JlZihwcmVzc0V2ZW50LT5r
ZXkud2luZG93KTsKKworICAgIEdka0RldmljZU1hbmFnZXIqIG1hbmFnZXIgPSBnZGtfZGlzcGxh
eV9nZXRfZGV2aWNlX21hbmFnZXIoZ2RrX3dpbmRvd19nZXRfZGlzcGxheSh3aW5kb3cpKTsKKyAg
ICBnZGtfZXZlbnRfc2V0X2RldmljZShwcmVzc0V2ZW50LCBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0
X2NsaWVudF9wb2ludGVyKG1hbmFnZXIpKTsKKworICAgIC8vIFdoZW4gc3ludGhlc2l6aW5nIGFu
IGV2ZW50LCBhbiBpbnZhbGlkIGhhcmR3YXJlX2tleWNvZGUgdmFsdWUKKyAgICAvLyBjYW4gY2F1
c2UgaXQgdG8gYmUgYmFkbHkgcHJvY2Vzc2VkIGJ5IEd0aysuCisgICAgR2RrS2V5bWFwS2V5KiBr
ZXlzOworICAgIGdpbnQgbl9rZXlzOworICAgIGlmIChnZGtfa2V5bWFwX2dldF9lbnRyaWVzX2Zv
cl9rZXl2YWwoZ2RrX2tleW1hcF9nZXRfZGVmYXVsdCgpLCBHREtfS0VZX2YsICZrZXlzLCAmbl9r
ZXlzKSkgeworICAgICAgICBwcmVzc0V2ZW50LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXNb
MF0ua2V5Y29kZTsKKyAgICAgICAgZ19mcmVlKGtleXMpOworICAgIH0KKworICAgIEdka0V2ZW50
KiByZWxlYXNlRXZlbnQgPSBnZGtfZXZlbnRfY29weShwcmVzc0V2ZW50KTsKKyAgICBndGtfbWFp
bl9kb19ldmVudChwcmVzc0V2ZW50KTsKKyAgICBnZGtfZXZlbnRfZnJlZShwcmVzc0V2ZW50KTsK
KyAgICByZWxlYXNlRXZlbnQtPmtleS50eXBlID0gR0RLX0tFWV9SRUxFQVNFOworICAgIGd0a19t
YWluX2RvX2V2ZW50KHJlbGVhc2VFdmVudCk7CisgICAgZ2RrX2V2ZW50X2ZyZWUocmVsZWFzZUV2
ZW50KTsKKworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIGVudGVyaW5n
X2Z1bGxzY3JlZW5fY2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgZ2Jvb2xlYW4gYmxvY2tlZCkK
K3sKKyAgICBpZiAoYmxvY2tlZCkKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdChsb29wKTsKKyAg
ICBlbHNlCisgICAgICAgIGdfdGltZW91dF9hZGQoMjAwLCAoR1NvdXJjZUZ1bmMpIGVtaXRLZXlT
dHJva2UsIHdlYlZpZXcpOworICAgIHJldHVybiBibG9ja2VkOworfQorCitzdGF0aWMgZ2Jvb2xl
YW4gbGVhdmluZ19mdWxsc2NyZWVuX2NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGdwb2ludGVy
IGRhdGEpCit7CisgICAgZ19tYWluX2xvb3BfcXVpdChsb29wKTsKKyAgICByZXR1cm4gRkFMU0U7
Cit9CisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl92aWV3X2Z1bGxzY3JlZW4oZ2NvbnN0
cG9pbnRlciBibG9ja2VkKQoreworICAgIEd0a1dpZGdldCogd2luZG93OworICAgIEd0a1dpZGdl
dCogd2ViX3ZpZXc7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzOworCisgICAgd2lu
ZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisgICAgd2ViX3ZpZXcg
PSB3ZWJraXRfd2ViX3ZpZXdfbmV3KCk7CisKKyAgICBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmll
d19nZXRfc2V0dGluZ3MoV0VCS0lUX1dFQl9WSUVXKHdlYl92aWV3KSk7CisgICAgZ19vYmplY3Rf
c2V0KHNldHRpbmdzLCAiZW5hYmxlLWZ1bGxzY3JlZW4iLCBUUlVFLCBOVUxMKTsKKyAgICB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJfdmlldyksIHNldHRp
bmdzKTsKKworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgd2Vi
X3ZpZXcpOworCisgICAgZ3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpOworCisgICAgbG9vcCA9
IGdfbWFpbl9sb29wX25ldyhOVUxMLCBUUlVFKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2Vi
X3ZpZXcsICJlbnRlcmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyhlbnRlcmluZ19mdWxsc2Ny
ZWVuX2NiKSwgKGdwb2ludGVyKSBibG9ja2VkKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYl92
aWV3LCAibGVhdmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyhsZWF2aW5nX2Z1bGxzY3JlZW5f
Y2IpLCBOVUxMKTsKKworICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyhXRUJLSVRfV0VC
X1ZJRVcod2ViX3ZpZXcpLCAiPGh0bWw+PGJvZHk+IgorICAgICAgICAgICAgICAgICAgICI8c2Ny
aXB0PiIKKyAgICAgICAgICAgICAgICAgICAidmFyIGV2ZW50TmFtZSA9ICdrZXlwcmVzcyc7Igor
ICAgICAgICAgICAgICAgICAgICJkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwg
ZnVuY3Rpb24gKCkgeyIKKyAgICAgICAgICAgICAgICAgICAiICAgIGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOyIKKyAgICAgICAgICAgICAgICAgICAi
fSwgZmFsc2UpOyIKKyAgICAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4i
LCBOVUxMLCBOVUxMLCBOVUxMKTsKKworICAgIGdfdGltZW91dF9hZGQoMTAwLCAoR1NvdXJjZUZ1
bmMpIGVtaXRLZXlTdHJva2UsIFdFQktJVF9XRUJfVklFVyh3ZWJfdmlldykpOworICAgIGdfbWFp
bl9sb29wX3J1bihsb29wKTsKKworICAgIGd0a193aWRnZXRfZGVzdHJveSh3aW5kb3cpOworfQor
CiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CiAgICAgU291cFNlcnZlciogc2Vy
dmVyOwpAQCAtMzkwLDYgKzQ3Miw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikK
ICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy9kZXN0cm95IiwgdGVzdF93ZWJr
aXRfd2ViX3ZpZXdfZGVzdHJveSk7CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnZp
ZXcvZ3JhYl9mb2N1cyIsIHRlc3Rfd2Via2l0X3dlYl92aWV3X2dyYWJfZm9jdXMpOwogICAgIGdf
dGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJ2aWV3L3dpbmRvdy1mZWF0dXJlcyIsIHRlc3Rfd2Vi
a2l0X3dlYl92aWV3X3dpbmRvd19mZWF0dXJlcyk7CisgICAgZ190ZXN0X2FkZF9kYXRhX2Z1bmMo
Ii93ZWJraXQvd2Vidmlldy9mdWxsc2NyZWVuIiwgKGdjb25zdHBvaW50ZXIpRkFMU0UsIHRlc3Rf
d2Via2l0X3dlYl92aWV3X2Z1bGxzY3JlZW4pOworICAgIGdfdGVzdF9hZGRfZGF0YV9mdW5jKCIv
d2Via2l0L3dlYnZpZXcvZnVsbHNjcmVlbi1ibG9ja2VkIiwgKGdjb25zdHBvaW50ZXIpVFJVRSwg
dGVzdF93ZWJraXRfd2ViX3ZpZXdfZnVsbHNjcmVlbik7CiAKICAgICByZXR1cm4gZ190ZXN0X3J1
biAoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRl
eCA5NjA1ZDUyLi43NjMzNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCkBAIC0yMTIsNiArMjEyLDggQEAgZW51bSB7CiAgICAgUkVTT1VSQ0VfTE9BRF9G
SU5JU0hFRCwKICAgICBSRVNPVVJDRV9DT05URU5UX0xFTkdUSF9SRUNFSVZFRCwKICAgICBSRVNP
VVJDRV9MT0FEX0ZBSUxFRCwKKyAgICBFTlRFUklOR19GVUxMU0NSRUVOLAorICAgIExFQVZJTkdf
RlVMTFNDUkVFTiwKIAogICAgIExBU1RfU0lHTkFMCiB9OwpAQCAtMTI1Niw2ICsxMjU4LDE2IEBA
IHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG91bGRfYWxsb3dfZWRpdGlu
Z19hY3Rpb24oV2ViS2l0V2ViVmlldyopCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKK3N0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9lbnRlcmluZ19mdWxsc2NyZWVuKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCit7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0X3dlYl92aWV3X3JlYWxfbGVhdmluZ19mdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCit7CisgICAgcmV0dXJuIEZBTFNFOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfZGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgV2ViS2l0V2ViVmlldyog
d2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhvYmplY3QpOwpAQCAtMjYxMSw2ICsyNjIzLDU3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFz
cyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCiAgICAgICAgICAg
ICBXRUJLSVRfVFlQRV9WSUVXUE9SVF9BVFRSSUJVVEVTKTsKIAorICAgIC8qKgorICAgICAqIFdl
YktpdFdlYlZpZXc6OmVudGVyaW5nLWZ1bGxzY3JlZW46CisgICAgICogQHdlYl92aWV3OiB0aGUg
I1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICoKKyAg
ICAgKiBFbWl0dGVkIHdoZW4gSmF2YVNjcmlwdCBjb2RlIGNhbGxzCisgICAgICogPGZ1bmN0aW9u
PmVsZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW48L2Z1bmN0aW9uPi4gSWYgdGhlCisgICAg
ICogc2lnbmFsIGlzIG5vdCBoYW5kbGVkIHRoZSBXZWJWaWV3IHdpbGwgcHJvY2VlZCB0byBmdWxs
IHNjcmVlbgorICAgICAqIGl0cyB0b3AgbGV2ZWwgd2luZG93LiBUaGlzIHNpZ25hbCBjYW4gYmUg
dXNlZCBieSBjbGllbnQgY29kZSB0bworICAgICAqIHJlcXVlc3QgcGVybWlzc2lvbiB0byB0aGUg
dXNlciBwcmlvciBkb2luZyB0aGUgZnVsbCBzY3JlZW4KKyAgICAgKiB0cmFuc2l0aW9uIGFuZCBl
dmVudHVhbGx5IHByZXBhcmUgdGhlIHRvcC1sZXZlbCB3aW5kb3cKKyAgICAgKiAoZS5nLiBoaWRl
IHNvbWUgd2lkZ2V0cyB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBwYXJ0IG9mIHRoZQorICAgICAq
IGZ1bGwgc2NyZWVuIHdpbmRvdykuCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBz
dG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAg
ICAqICAgICVGQUxTRSB0byBjb250aW51ZSBlbWlzc2lvbiBvZiB0aGUgZXZlbnQuCisgICAgICoK
KyAgICAgKiBTaW5jZTogMS43LjUKKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFs
c1tFTlRFUklOR19GVUxMU0NSRUVOXSA9CisgICAgICAgICAgICBnX3NpZ25hbF9uZXcoImVudGVy
aW5nLWZ1bGxzY3JlZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NM
QVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVO
X0xBU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdl
YlZpZXdDbGFzcywgZW50ZXJpbmdfZnVsbHNjcmVlbiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDApOworCisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRX
ZWJWaWV3OjpsZWF2aW5nLWZ1bGxzY3JlZW46CisgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktp
dFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICoKKyAgICAgKiBF
bWl0dGVkIHdoZW4gdGhlIFdlYlZpZXcgaXMgYWJvdXQgdG8gcmVzdG9yZSBpdHMgdG9wIGxldmVs
CisgICAgICogd2luZG93IG91dCBvZiBpdHMgZnVsbCBzY3JlZW4gc3RhdGUuIFRoaXMgc2lnbmFs
IGNhbiBiZSB1c2VkIGJ5CisgICAgICogY2xpZW50IGNvZGUgdG8gcmVzdG9yZSB3aWRnZXRzIGhp
ZGRlbiBkdXJpbmcgdGhlCisgICAgICogZW50ZXJpbmctZnVsbHNjcmVlbiBzdGFnZSBmb3IgaW5z
dGFuY2UuCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRs
ZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAgICAqICAgICVGQUxTRSB0
byBjb250aW51ZSBlbWlzc2lvbiBvZiB0aGUgZXZlbnQuCisgICAgICoKKyAgICAgKiBTaW5jZTog
MS43LjUKKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tMRUFWSU5HX0ZVTExT
Q1JFRU5dID0KKyAgICAgICAgICAgIGdfc2lnbmFsX25ldygibGVhdmluZy1mdWxsc2NyZWVuIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3Mp
LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAg
ICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGxlYXZp
bmdfZnVsbHNjcmVlbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11
bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9t
YXJzaGFsX0JPT0xFQU5fX1ZPSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JP
T0xFQU4sIDApOworCiAgICAgLyoKICAgICAgKiBXZWJLaXRXZWJWaWV3OjpyZXNvdXJjZS1yZXNw
b25zZS1yZWNlaXZlZAogICAgICAqIEB3ZWJWaWV3OiB0aGUgb2JqZWN0IHdoaWNoIHJlY2VpdmVk
IHRoZSBzaWduYWwKQEAgLTI3MTksNiArMjc4Miw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgIHdl
YlZpZXdDbGFzcy0+cmVkbyA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3JlZG87CiAgICAgd2ViVmll
d0NsYXNzLT5tb3ZlX2N1cnNvciA9IHdlYmtpdF93ZWJfdmlld19yZWFsX21vdmVfY3Vyc29yOwog
ICAgIHdlYlZpZXdDbGFzcy0+c2hvdWxkX2FsbG93X2VkaXRpbmdfYWN0aW9uID0gd2Via2l0X3dl
Yl92aWV3X3JlYWxfc2hvdWxkX2FsbG93X2VkaXRpbmdfYWN0aW9uOworICAgIHdlYlZpZXdDbGFz
cy0+ZW50ZXJpbmdfZnVsbHNjcmVlbiA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2VudGVyaW5nX2Z1
bGxzY3JlZW47CisgICAgd2ViVmlld0NsYXNzLT5sZWF2aW5nX2Z1bGxzY3JlZW4gPSB3ZWJraXRf
d2ViX3ZpZXdfcmVhbF9sZWF2aW5nX2Z1bGxzY3JlZW47CiAKICAgICBHT2JqZWN0Q2xhc3MqIG9i
amVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Mod2ViVmlld0NsYXNzKTsKICAgICBvYmplY3RDbGFz
cy0+ZGlzcG9zZSA9IHdlYmtpdF93ZWJfdmlld19kaXNwb3NlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggNjc4ZTMyOS4uMmExNWI1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
KCogdW5kbykgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmll
dyk7CiAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgKCogcmVkbykgICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAgICAgZ2Jvb2xlYW4gICAg
ICAgICAgICAgICAgICAgKCogc2hvdWxkX2FsbG93X2VkaXRpbmdfYWN0aW9uKSAoV2ViS2l0V2Vi
VmlldyAgICp3ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgKCogZW50
ZXJpbmdfZnVsbHNjcmVlbikgKFdlYktpdFdlYlZpZXcgICAqd2ViX3ZpZXcpOworICAgIGdib29s
ZWFuICAgICAgICAgICAgICAgICAgICgqIGxlYXZpbmdfZnVsbHNjcmVlbikgKFdlYktpdFdlYlZp
ZXcgICAqd2ViX3ZpZXcpOwogCiAgICAgLyogUGFkZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAq
LwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOwotICAgIHZvaWQgKCpfd2Vi
a2l0X3Jlc2VydmVkMSkgKHZvaWQpOwotICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZv
aWQpOwogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIwMGJmMWQuLjE5MGY4ZmQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAx
Mi0wMi0wMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0dUS10gRnVsbFNjcmVlbiBzaWduYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NjE4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgdHdvIG5ldyBlbnRlcmluZy9sZWF2aW5nIGZ1bGxz
Y3JlZW4gc2lnbmFscyB0byBoaWRlL3Nob3cKKyAgICAgICAgdGhlIHRvb2wgYmFyLCB0aGUgc3Rh
dHVzIGJhciBhbmQgYXNrIHRoZSB1c2VyJ3MgcGVybWlzc2lvbiBiZWZvcmUKKyAgICAgICAgZW50
ZXJpbmcgZnVsbHNjcmVlbi4KKworICAgICAgICAqIEd0a0xhdW5jaGVyL21haW4uYzoKKyAgICAg
ICAgKHdlYlZpZXdGdWxsc2NyZWVuTWVzc2FnZVdpbmRvd0Nsb3NlKToKKyAgICAgICAgKHdlYlZp
ZXdXaW5kb3dTdGF0ZUV2ZW50KToKKyAgICAgICAgKGhpZGVfd2lkZ2V0KToKKyAgICAgICAgKHNo
b3dfd2lkZ2V0KToKKyAgICAgICAgKHdlYlZpZXdFbnRlcmluZ0Z1bGxTY3JlZW4pOgorICAgICAg
ICAod2ViVmlld0xlYXZpbmdGdWxsU2NyZWVuKToKKyAgICAgICAgKGNyZWF0ZUJyb3dzZXIpOgor
ICAgICAgICAoY3JlYXRlV2luZG93KToKKwogMjAxMi0wMi0wMiAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZS1sYW5kIHIxMDY0NDIgcGVyIEFkYW0ncyBzdWdn
ZXN0aW9uLiBXZSdsbCBkbyBib3RoIHJlc3RhcnRpbmcgRFJUIGFuZCBsb2FkaW5nIGEgZmFrZSB0
ZXN0IGZpcnN0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jIGIvVG9vbHMv
R3RrTGF1bmNoZXIvbWFpbi5jCmluZGV4IGUzYTY2YjAuLjE1ZjhjYTMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0d0a0xhdW5jaGVyL21haW4uYworKysgYi9Ub29scy9HdGtMYXVuY2hlci9tYWluLmMKQEAg
LTEyMyw3ICsxMjMsNzkgQEAgc3RhdGljIGdib29sZWFuIGNsb3NlV2ViVmlld0NiKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIEd0a1dpZGdldCogd2luZG93KQogICAgIHJldHVybiBUUlVFOwogfQog
Ci1zdGF0aWMgR3RrV2lkZ2V0KiBjcmVhdGVCcm93c2VyKEd0a1dpZGdldCogd2luZG93LCBHdGtX
aWRnZXQqIHVyaUVudHJ5LCBHdGtXaWRnZXQqIHN0YXR1c2JhciwgV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKK3N0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RnVsbHNjcmVlbk1lc3NhZ2VXaW5kb3dDbG9z
ZShHdGtXaWRnZXQgKmRpYWxvZykKK3sKKyAgICBpZiAoR1RLX0lTX1dJREdFVChkaWFsb2cpKQor
ICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9
CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3V2luZG93U3RhdGVFdmVudChHdGtXaWRnZXQgKndp
ZGdldCwgR2RrRXZlbnRXaW5kb3dTdGF0ZSAqZXZlbnQsIFdlYktpdFdlYlZpZXcgKndlYlZpZXcp
Cit7CisgICAgaWYgKGV2ZW50LT5uZXdfd2luZG93X3N0YXRlICYgR0RLX1dJTkRPV19TVEFURV9G
VUxMU0NSRUVOKSB7CisgICAgICAgIFdlYktpdFdlYkZyYW1lICpmcmFtZSA9IHdlYmtpdF93ZWJf
dmlld19nZXRfbWFpbl9mcmFtZSh3ZWJWaWV3KTsKKyAgICAgICAgY29uc3QgZ2NoYXIgKnVyaSA9
IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3VyaShmcmFtZSk7CisgICAgICAgIEd0a1dpZGdldCAqd2lu
ZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisgICAg
ICAgIGlmICghZ3RrX3dpZGdldF9pc190b3BsZXZlbCh3aW5kb3cpIHx8ICFHVEtfSVNfV0lORE9X
KHdpbmRvdykgfHwgR1RLX0lTX09GRlNDUkVFTl9XSU5ET1cod2luZG93KSkKKyAgICAgICAgICAg
IHdpbmRvdyA9IDA7CisKKyAgICAgICAgR3RrV2lkZ2V0ICpkaWFsb2cgPSBndGtfbWVzc2FnZV9k
aWFsb2dfbmV3KHdpbmRvdyA/IEdUS19XSU5ET1cod2luZG93KSA6IDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0RJQUxPR19NT0RBTCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtf
TUVTU0FHRV9JTkZPLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdUS19CVVRUT05TX0NMT1NFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBpcyBub3cgZnVsbCBzY3JlZW4uIFByZXNzIEVT
QyBvciBmIHRvIGV4aXQuIiwgdXJpKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVk
KGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhndGtfd2lkZ2V0X2Rlc3Ryb3kpLCBkaWFs
b2cpOworICAgICAgICBnX3RpbWVvdXRfYWRkKDE1MDAsIChHU291cmNlRnVuYykgd2ViVmlld0Z1
bGxzY3JlZW5NZXNzYWdlV2luZG93Q2xvc2UsIGRpYWxvZyk7CisgICAgICAgIGd0a19kaWFsb2df
cnVuKEdUS19ESUFMT0coZGlhbG9nKSk7CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCitz
dGF0aWMgdm9pZCBoaWRlV2lkZ2V0KEd0a1dpZGdldCogd2lkZ2V0LCBncG9pbnRlciBkYXRhKQor
eworICAgIGlmICghR1RLX0lTX1NDUk9MTEVEX1dJTkRPVyh3aWRnZXQpKQorICAgICAgICBndGtf
d2lkZ2V0X2hpZGUod2lkZ2V0KTsKK30KKworc3RhdGljIHZvaWQgc2hvd1dpZGdldChHdGtXaWRn
ZXQqIHdpZGdldCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBpZiAoIUdUS19JU19TQ1JPTExFRF9X
SU5ET1cod2lkZ2V0KSkKKyAgICAgICAgZ3RrX3dpZGdldF9zaG93KHdpZGdldCk7Cit9CisKK3N0
YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RW50ZXJpbmdGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcgKndl
YlZpZXcsIEd0a1dpZGdldCogdmJveCkKK3sKKyAgICBXZWJLaXRXZWJGcmFtZSAqZnJhbWUgPSB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldyk7CisgICAgY29uc3QgZ2NoYXIg
KnVyaSA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3VyaShmcmFtZSk7CisgICAgR3RrV2lkZ2V0ICp3
aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAg
ICBpZiAoIWd0a193aWRnZXRfaXNfdG9wbGV2ZWwod2luZG93KSB8fCAhR1RLX0lTX1dJTkRPVyh3
aW5kb3cpIHx8IEdUS19JU19PRkZTQ1JFRU5fV0lORE9XKHdpbmRvdykpCisgICAgICAgIHdpbmRv
dyA9IDA7CisKKyAgICBHdGtXaWRnZXQgKmRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXco
d2luZG93ID8gR1RLX1dJTkRPVyh3aW5kb3cpIDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0RJQUxPR19NT0RBTCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX01FU1NBR0VfSU5GTywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0JVVFRPTlNfWUVT
X05PLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWxs
b3cgZnVsbCBzY3JlZW4gZGlzcGxheSBvZiAlcyA/IiwgdXJpKTsKKyAgICBnaW50IHJlc3VsdCA9
IGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSk7CisgICAgaWYgKHJlc3VsdCA9PSBH
VEtfUkVTUE9OU0VfWUVTKSB7CisgICAgICAgIGd0a19jb250YWluZXJfZm9yZWFjaChHVEtfQ09O
VEFJTkVSKHZib3gpLCAoR3RrQ2FsbGJhY2spIGhpZGVXaWRnZXQsIE5VTEwpOworICAgICAgICBn
dGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChkaWFsb2cpKTsKKyAgICAgICAgcmV0dXJuIEZB
TFNFOworICAgIH0KKyAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChkaWFsb2cpKTsK
KyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYlZpZXdMZWF2aW5nRnVs
bFNjcmVlbihXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBHdGtXaWRnZXQqIHZib3gpCit7CisgICAg
R3RrV2lkZ2V0ICp3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdl
YlZpZXcpKTsKKyAgICBpZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh3aW5kb3cpICYmIEdUS19J
U19XSU5ET1cod2luZG93KSAmJiAhR1RLX0lTX09GRlNDUkVFTl9XSU5ET1cod2luZG93KSkKKyAg
ICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdpbmRvdywgR19DQUxM
QkFDSyh3ZWJWaWV3V2luZG93U3RhdGVFdmVudCksIHdlYlZpZXcpOworICAgIGd0a19jb250YWlu
ZXJfZm9yZWFjaChHVEtfQ09OVEFJTkVSKHZib3gpLCAoR3RrQ2FsbGJhY2spIHNob3dXaWRnZXQs
IE5VTEwpOworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIEd0a1dpZGdldCogY3JlYXRl
QnJvd3NlcihHdGtXaWRnZXQqIHdpbmRvdywgR3RrV2lkZ2V0KiB1cmlFbnRyeSwgR3RrV2lkZ2V0
KiBzdGF0dXNiYXIsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a1dpZGdldCogdmJveCkKIHsK
ICAgICBHdGtXaWRnZXQgKnNjcm9sbGVkV2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXco
TlVMTCwgTlVMTCk7CiAgICAgZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5KEdUS19TQ1JP
TExFRF9XSU5ET1coc2Nyb2xsZWRXaW5kb3cpLCBHVEtfUE9MSUNZX0FVVE9NQVRJQywgR1RLX1BP
TElDWV9BVVRPTUFUSUMpOwpAQCAtMTM3LDYgKzIwOSw4IEBAIHN0YXRpYyBHdGtXaWRnZXQqIGNy
ZWF0ZUJyb3dzZXIoR3RrV2lkZ2V0KiB3aW5kb3csIEd0a1dpZGdldCogdXJpRW50cnksIEd0a1dp
ZGdlCiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAiY3JlYXRlLXdlYi12aWV3IiwgR19D
QUxMQkFDSyhjcmVhdGVXZWJWaWV3Q2IpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
d2ViVmlldywgIndlYi12aWV3LXJlYWR5IiwgR19DQUxMQkFDSyh3ZWJWaWV3UmVhZHlDYiksIHdp
bmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAiY2xvc2Utd2ViLXZpZXciLCBH
X0NBTExCQUNLKGNsb3NlV2ViVmlld0NiKSwgd2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYlZpZXcsICJlbnRlcmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyh3ZWJWaWV3RW50ZXJp
bmdGdWxsU2NyZWVuKSwgdmJveCk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAibGVh
dmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyh3ZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4pLCB2
Ym94KTsKIAogICAgIHJldHVybiBzY3JvbGxlZFdpbmRvdzsKIH0KQEAgLTIxNCw3ICsyODgsNyBA
QCBzdGF0aWMgR3RrV2lkZ2V0KiBjcmVhdGVXaW5kb3coV2ViS2l0V2ViVmlldyoqIG91dFdlYlZp
ZXcpCiAjZW5kaWYKICAgICBzdGF0dXNiYXIgPSBjcmVhdGVTdGF0dXNiYXIod2ViVmlldyk7CiAg
ICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGNyZWF0ZVRvb2xiYXIodXJpRW50
cnksIHdlYlZpZXcpLCBGQUxTRSwgRkFMU0UsIDApOwotICAgIGd0a19ib3hfcGFja19zdGFydChH
VEtfQk9YKHZib3gpLCBjcmVhdGVCcm93c2VyKHdpbmRvdywgdXJpRW50cnksIHN0YXR1c2Jhciwg
d2ViVmlldyksIFRSVUUsIFRSVUUsIDApOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9Y
KHZib3gpLCBjcmVhdGVCcm93c2VyKHdpbmRvdywgdXJpRW50cnksIHN0YXR1c2Jhciwgd2ViVmll
dywgdmJveCksIFRSVUUsIFRSVUUsIDApOwogICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9Y
KHZib3gpLCBzdGF0dXNiYXIsIEZBTFNFLCBGQUxTRSwgMCk7CiAKICAgICBndGtfY29udGFpbmVy
X2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZib3gpOwotLSAKMS43Ljk=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127550</attachid>
            <date>2012-02-17 01:44:43 -0800</date>
            <delta_ts>2012-02-20 09:29:36 -0800</delta_ts>
            <desc>Rebased Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>20954</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBmOGY2MDFkNTcwOTcxMGEyNDdlZTg3YTRiZDNiMmNiZTIwMzRmMDdhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDIgRmViIDIwMTIgMTM6MTY6MjAgKzAxMDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMjYgKysrKysrCiAuLi4vV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwICB8ICAgNTggKysrKysrKysrKysrLS0KIFNvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIHwgICAgNCArCiBTb3VyY2UvV2ViS2l0L2d0
ay90ZXN0cy90ZXN0d2Vidmlldy5jICAgICAgICAgICAgICB8ICAgODMgKysrKysrKysrKysrKysr
KysrKysKIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCAgICAgICAg
IHwgICA2NSArKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmggICAgICAgICAgIHwgICAgNCArLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIxICsrKysrCiBUb29scy9HdGtMYXVuY2hlci9t
YWluLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzggKysrKysrKysrKysrKysrKysr
LQogOCBmaWxlcyBjaGFuZ2VkLCAzMjYgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCmluZGV4IGMyOWJkYzYuLmYxMDJlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOSBAQAorMjAxMi0wMi0wMiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRnVsbFNjcmVlbiBzaWduYWxzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE4MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGVudGVyaW5nLWZ1bGxz
Y3JlZW4gYW5kIGxlYXZpbmctZnVsbHNjcmVlbiBzaWduYWxzLCBtZWFudCB0bworICAgICAgICBi
ZSB1c2VkIGJ5IHRoZSB1c2VyIGFnZW50IHRvIGJlIG5vdGlmaWVkIHdoZW4gYW4gZWxlbWVudCBy
ZXF1ZXN0cworICAgICAgICBmdWxsIHNjcmVlbiBkaXNwbGF5IGFuZCB3aGVuIHRoZSBmdWxsIHNj
cmVlbiBkaXNwbGF5IGlzIHRvIGJlCisgICAgICAgIGRpc2FibGVkLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21l
Q2xpZW50OjpzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6
b25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6Y2FuY2VsRnVsbFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6
ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAgKiB0ZXN0cy90ZXN0d2Vidmlldy5jOgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19y
ZWFsX2VudGVyaW5nX2Z1bGxzY3JlZW4pOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlYWxf
bGVhdmluZ19mdWxsc2NyZWVuKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0
KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorCiAyMDEyLTAyLTE2ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggdGhl
IEdUSyBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IDg5NDI3YWUuLjg4ODM4NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAt
NjEsNiArNjEsOCBAQAogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJr
aXR3ZWJ2aWV3cHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYndpbmRvd2ZlYXR1cmVzcHJp
dmF0ZS5oIgorI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5o
PgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1
ZGUgPGd0ay9ndGsuaD4KQEAgLTkzOCwyOSArOTQwLDY3IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojpl
eGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCiBib29sIENocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudChjb25z
dCBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50LCBib29sIHdpdGhLZXlib2FyZCkKIHsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gIXdpdGhLZXlib2FyZDsKK30KKworc3RhdGljIGdib29s
ZWFuIG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2
ZW50S2V5KiBldmVudCwgQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQpCit7CisgICAgc3dpdGNo
IChldmVudC0+a2V5dmFsKSB7CisgICAgY2FzZSBHREtfS0VZX0VzY2FwZToKKyAgICBjYXNlIEdE
S19LRVlfZjoKKyAgICBjYXNlIEdES19LRVlfRjoKKyAgICAgICAgY2hyb21lQ2xpZW50LT5jYW5j
ZWxGdWxsU2NyZWVuKCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBGQUxTRTsKK30KKwordm9pZCBDaHJvbWVD
bGllbnQ6OmNhbmNlbEZ1bGxTY3JlZW4oKQoreworICAgIEFTU0VSVChtX2Z1bGxTY3JlZW5FbGVt
ZW50KTsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRDYW5jZWxG
dWxsU2NyZWVuKCk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3JF
bGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiB7CisgICAgZ2Jvb2xlYW4gcmV0dXJu
VmFsdWU7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViVmlldywgImVudGVyaW5nLWZ1
bGxzY3JlZW4iLCAmcmV0dXJuVmFsdWUpOworICAgIGlmIChyZXR1cm5WYWx1ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZl
bChHVEtfV0lER0VUKG1fd2ViVmlldykpOworICAgIGlmICghd2lkZ2V0SXNPbnNjcmVlblRvcGxl
dmVsV2luZG93KHdpbmRvdykpCisgICAgICAgIHJldHVybjsKKworICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qod2luZG93LCAia2V5LXByZXNzLWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtL
ZXlQcmVzc0V2ZW50KSwgdGhpcyk7CisKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gYWRvcHRS
ZWYoZWxlbWVudCk7CisKICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxsRW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKICAgICBtX2FkanVzdG1lbnRXYXRjaGVyLmRp
c2FibGVBbGxTY3JvbGxiYXJzKCk7Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIGlmIChlbGVtZW50
LT50YWdOYW1lKCkgPT0gIlZJREVPIikKLSAgICAgICAgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShz
dGF0aWNfY2FzdDxOb2RlKj4oZWxlbWVudCkpOwotI2VuZGlmCisgICAgZ3RrX3dpbmRvd19mdWxs
c2NyZWVuKEdUS19XSU5ET1cod2luZG93KSk7CiAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Vi
a2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKIH0KIAogdm9pZCBDaHJv
bWVDbGllbnQ6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVt
ZW50KQogeworICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXRfYnlf
bmFtZShtX3dlYlZpZXcsICJsZWF2aW5nLWZ1bGxzY3JlZW4iLCAmcmV0dXJuVmFsdWUpOworICAg
IGlmIChyZXR1cm5WYWx1ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3RrV2lkZ2V0KiB3aW5k
b3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlldykpOworICAg
IEFTU0VSVCh3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3cod2luZG93KSk7CisgICAgZ19z
aWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdpbmRvdywgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4ob25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVudCksIHRoaXMpOworCiAgICAgZWxl
bWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVt
ZW50KTsKKyAgICBndGtfd2luZG93X3VuZnVsbHNjcmVlbihHVEtfV0lORE9XKHdpbmRvdykpOwog
ICAgIG1fYWRqdXN0bWVudFdhdGNoZXIuZW5hYmxlQWxsU2Nyb2xsYmFycygpOwotI2lmIEVOQUJM
RShWSURFTykKLSAgICBpZiAoZWxlbWVudC0+dGFnTmFtZSgpID09ICJWSURFTyIpCi0gICAgICAg
IHdlYlZpZXdFeGl0RnVsbHNjcmVlbihtX3dlYlZpZXcpOwotI2VuZGlmCiAgICAgZWxlbWVudC0+
ZG9jdW1lbnQoKS0+d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwor
ICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQuY2xlYXIoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IDlk
MjEwNWQuLmIwNmIxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0xNTUsNiArMTU1LDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGNv
bnN0IEVsZW1lbnQqLCBib29sIHdpdGhLZXlib2FyZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBl
bnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CisgICAgICAgIHZvaWQgY2FuY2Vs
RnVsbFNjcmVlbigpOwogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFJ1YmJl
ckJhbmRJbkRpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
QEAgLTE4Nyw2ICsxODgsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdW5zaWduZWQg
aW50IG1fcmVwYWludFNvb25Tb3VyY2VJZDsKIAogICAgICAgICB2b2lkIGludmFsaWRhdGVXaWRn
ZXRSZWN0KGNvbnN0IEludFJlY3QmKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAg
ICAgIFJlZlB0cjxFbGVtZW50PiBtX2Z1bGxTY3JlZW5FbGVtZW50OworI2VuZGlmCiAgICAgfTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMKaW5kZXggNDFjZjMwOC4uZDk0
ZjYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYwor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jCkBAIC0zODIsNiArMzgy
LDg3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl92aWV3X2luX29mZnNjcmVlbl93aW5k
b3dfZG9lc19ub3RfY3Jhc2goKQogICAgIGdfbWFpbl9sb29wX3VucmVmKGxvb3ApOwogfQogCitz
dGF0aWMgZ2Jvb2xlYW4gZW1pdEtleVN0cm9rZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorewor
ICAgIEdka0V2ZW50KiBwcmVzc0V2ZW50ID0gZ2RrX2V2ZW50X25ldyhHREtfS0VZX1BSRVNTKTsK
KyAgICBwcmVzc0V2ZW50LT5rZXkua2V5dmFsID0gR0RLX0tFWV9mOworICAgIEdka1dpbmRvdyog
d2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KEdUS19XSURHRVQod2ViVmlldykpOworICAg
IHByZXNzRXZlbnQtPmtleS53aW5kb3cgPSB3aW5kb3c7CisgICAgZ19vYmplY3RfcmVmKHByZXNz
RXZlbnQtPmtleS53aW5kb3cpOworCisgICAgR2RrRGV2aWNlTWFuYWdlciogbWFuYWdlciA9IGdk
a19kaXNwbGF5X2dldF9kZXZpY2VfbWFuYWdlcihnZGtfd2luZG93X2dldF9kaXNwbGF5KHdpbmRv
dykpOworICAgIGdka19ldmVudF9zZXRfZGV2aWNlKHByZXNzRXZlbnQsIGdka19kZXZpY2VfbWFu
YWdlcl9nZXRfY2xpZW50X3BvaW50ZXIobWFuYWdlcikpOworCisgICAgLy8gV2hlbiBzeW50aGVz
aXppbmcgYW4gZXZlbnQsIGFuIGludmFsaWQgaGFyZHdhcmVfa2V5Y29kZSB2YWx1ZQorICAgIC8v
IGNhbiBjYXVzZSBpdCB0byBiZSBiYWRseSBwcm9jZXNzZWQgYnkgR3RrKy4KKyAgICBHZGtLZXlt
YXBLZXkqIGtleXM7CisgICAgZ2ludCBuX2tleXM7CisgICAgaWYgKGdka19rZXltYXBfZ2V0X2Vu
dHJpZXNfZm9yX2tleXZhbChnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCksIEdES19LRVlfZiwgJmtl
eXMsICZuX2tleXMpKSB7CisgICAgICAgIHByZXNzRXZlbnQtPmtleS5oYXJkd2FyZV9rZXljb2Rl
ID0ga2V5c1swXS5rZXljb2RlOworICAgICAgICBnX2ZyZWUoa2V5cyk7CisgICAgfQorCisgICAg
R2RrRXZlbnQqIHJlbGVhc2VFdmVudCA9IGdka19ldmVudF9jb3B5KHByZXNzRXZlbnQpOworICAg
IGd0a19tYWluX2RvX2V2ZW50KHByZXNzRXZlbnQpOworICAgIGdka19ldmVudF9mcmVlKHByZXNz
RXZlbnQpOworICAgIHJlbGVhc2VFdmVudC0+a2V5LnR5cGUgPSBHREtfS0VZX1JFTEVBU0U7Cisg
ICAgZ3RrX21haW5fZG9fZXZlbnQocmVsZWFzZUV2ZW50KTsKKyAgICBnZGtfZXZlbnRfZnJlZShy
ZWxlYXNlRXZlbnQpOworCisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4g
ZW50ZXJpbmdfZnVsbHNjcmVlbl9jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBnYm9vbGVhbiBi
bG9ja2VkKQoreworICAgIGlmIChibG9ja2VkKQorICAgICAgICBnX21haW5fbG9vcF9xdWl0KGxv
b3ApOworICAgIGVsc2UKKyAgICAgICAgZ190aW1lb3V0X2FkZCgyMDAsIChHU291cmNlRnVuYykg
ZW1pdEtleVN0cm9rZSwgd2ViVmlldyk7CisgICAgcmV0dXJuIGJsb2NrZWQ7Cit9CisKK3N0YXRp
YyBnYm9vbGVhbiBsZWF2aW5nX2Z1bGxzY3JlZW5fY2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
Z3BvaW50ZXIgZGF0YSkKK3sKKyAgICBnX21haW5fbG9vcF9xdWl0KGxvb3ApOworICAgIHJldHVy
biBGQUxTRTsKK30KKworc3RhdGljIHZvaWQgdGVzdF93ZWJraXRfd2ViX3ZpZXdfZnVsbHNjcmVl
bihnY29uc3Rwb2ludGVyIGJsb2NrZWQpCit7CisgICAgR3RrV2lkZ2V0KiB3aW5kb3c7CisgICAg
R3RrV2lkZ2V0KiB3ZWJfdmlldzsKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3M7CisK
KyAgICB3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKKyAgICB3
ZWJfdmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXcoKTsKKworICAgIHNldHRpbmdzID0gd2Via2l0
X3dlYl92aWV3X2dldF9zZXR0aW5ncyhXRUJLSVRfV0VCX1ZJRVcod2ViX3ZpZXcpKTsKKyAgICBn
X29iamVjdF9zZXQoc2V0dGluZ3MsICJlbmFibGUtZnVsbHNjcmVlbiIsIFRSVUUsIE5VTEwpOwor
ICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MoV0VCS0lUX1dFQl9WSUVXKHdlYl92aWV3
KSwgc2V0dGluZ3MpOworCisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5k
b3cpLCB3ZWJfdmlldyk7CisKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRvdyk7CisKKyAg
ICBsb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIFRSVUUpOworCisgICAgZ19zaWduYWxfY29u
bmVjdCh3ZWJfdmlldywgImVudGVyaW5nLWZ1bGxzY3JlZW4iLCBHX0NBTExCQUNLKGVudGVyaW5n
X2Z1bGxzY3JlZW5fY2IpLCAoZ3BvaW50ZXIpIGJsb2NrZWQpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qod2ViX3ZpZXcsICJsZWF2aW5nLWZ1bGxzY3JlZW4iLCBHX0NBTExCQUNLKGxlYXZpbmdfZnVs
bHNjcmVlbl9jYiksIE5VTEwpOworCisgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKFdF
QktJVF9XRUJfVklFVyh3ZWJfdmlldyksICI8aHRtbD48Ym9keT4iCisgICAgICAgICAgICAgICAg
ICAgIjxzY3JpcHQ+IgorICAgICAgICAgICAgICAgICAgICJ2YXIgZXZlbnROYW1lID0gJ2tleXBy
ZXNzJzsiCisgICAgICAgICAgICAgICAgICAgImRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lLCBmdW5jdGlvbiAoKSB7IgorICAgICAgICAgICAgICAgICAgICIgICAgZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7IgorICAgICAgICAgICAg
ICAgICAgICJ9LCBmYWxzZSk7IgorICAgICAgICAgICAgICAgICAgICI8L3NjcmlwdD48L2JvZHk+
PC9odG1sPiIsIE5VTEwsIE5VTEwsIE5VTEwpOworCisgICAgZ190aW1lb3V0X2FkZCgxMDAsIChH
U291cmNlRnVuYykgZW1pdEtleVN0cm9rZSwgV0VCS0lUX1dFQl9WSUVXKHdlYl92aWV3KSk7Cisg
ICAgZ19tYWluX2xvb3BfcnVuKGxvb3ApOworCisgICAgZ3RrX3dpZGdldF9kZXN0cm95KHdpbmRv
dyk7Cit9CisKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKICAgICBTb3VwU2Vy
dmVyKiBzZXJ2ZXI7CkBAIC00MTAsNiArNDkxLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2dyYWJfZm9jdXMi
LCB0ZXN0X3dlYmtpdF93ZWJfdmlld19ncmFiX2ZvY3VzKTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMo
Ii93ZWJraXQvd2Vidmlldy93aW5kb3ctZmVhdHVyZXMiLCB0ZXN0X3dlYmtpdF93ZWJfdmlld193
aW5kb3dfZmVhdHVyZXMpOwogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJ2aWV3L3dl
YnZpZXctaW4tb2Zmc2NyZWVuLXdpbmRvdy1kb2VzLW5vdC1jcmFzaCIsIHRlc3Rfd2Via2l0X3dl
Yl92aWV3X2luX29mZnNjcmVlbl93aW5kb3dfZG9lc19ub3RfY3Jhc2gpOworICAgIGdfdGVzdF9h
ZGRfZGF0YV9mdW5jKCIvd2Via2l0L3dlYnZpZXcvZnVsbHNjcmVlbiIsIEdJTlRfVE9fUE9JTlRF
UihGQUxTRSksIHRlc3Rfd2Via2l0X3dlYl92aWV3X2Z1bGxzY3JlZW4pOworICAgIGdfdGVzdF9h
ZGRfZGF0YV9mdW5jKCIvd2Via2l0L3dlYnZpZXcvZnVsbHNjcmVlbi1ibG9ja2VkIiwgR0lOVF9U
T19QT0lOVEVSKFRSVUUpLCB0ZXN0X3dlYmtpdF93ZWJfdmlld19mdWxsc2NyZWVuKTsKIAogICAg
IHJldHVybiBnX3Rlc3RfcnVuICgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCmluZGV4IDM4ZDk0MDEuLmE1Mjk3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTIxMyw2ICsyMTMsOCBAQCBlbnVtIHsKICAg
ICBSRVNPVVJDRV9DT05URU5UX0xFTkdUSF9SRUNFSVZFRCwKICAgICBSRVNPVVJDRV9MT0FEX0ZB
SUxFRCwKICAgICBSVU5fTU9EQUxfRElBTE9HLAorICAgIEVOVEVSSU5HX0ZVTExTQ1JFRU4sCisg
ICAgTEVBVklOR19GVUxMU0NSRUVOLAogCiAgICAgTEFTVF9TSUdOQUwKIH07CkBAIC0xMzAxLDYg
KzEzMDMsMTYgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX3Nob3VsZF9h
bGxvd19lZGl0aW5nX2FjdGlvbihXZWJLaXRXZWJWaWV3KikKICAgICByZXR1cm4gVFJVRTsKIH0K
IAorc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX2VudGVyaW5nX2Z1bGxzY3Jl
ZW4oV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0
YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9sZWF2aW5nX2Z1bGxzY3JlZW4oV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld19kaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKG9iamVjdCk7CkBAIC0yNjU2LDYg
KzI2NjgsNTcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0
V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwK
ICAgICAgICAgICAgIFdFQktJVF9UWVBFX1ZJRVdQT1JUX0FUVFJJQlVURVMpOwogCisgICAgLyoq
CisgICAgICogV2ViS2l0V2ViVmlldzo6ZW50ZXJpbmctZnVsbHNjcmVlbjoKKyAgICAgKiBAd2Vi
X3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQK
KyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBKYXZhU2NyaXB0IGNvZGUgY2FsbHMKKyAgICAg
KiA8ZnVuY3Rpb24+ZWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbjwvZnVuY3Rpb24+LiBJ
ZiB0aGUKKyAgICAgKiBzaWduYWwgaXMgbm90IGhhbmRsZWQgdGhlIFdlYlZpZXcgd2lsbCBwcm9j
ZWVkIHRvIGZ1bGwgc2NyZWVuCisgICAgICogaXRzIHRvcCBsZXZlbCB3aW5kb3cuIFRoaXMgc2ln
bmFsIGNhbiBiZSB1c2VkIGJ5IGNsaWVudCBjb2RlIHRvCisgICAgICogcmVxdWVzdCBwZXJtaXNz
aW9uIHRvIHRoZSB1c2VyIHByaW9yIGRvaW5nIHRoZSBmdWxsIHNjcmVlbgorICAgICAqIHRyYW5z
aXRpb24gYW5kIGV2ZW50dWFsbHkgcHJlcGFyZSB0aGUgdG9wLWxldmVsIHdpbmRvdworICAgICAq
IChlLmcuIGhpZGUgc29tZSB3aWRnZXRzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHBhcnQgb2Yg
dGhlCisgICAgICogZnVsbCBzY3JlZW4gd2luZG93KS4KKyAgICAgKgorICAgICAqIFJldHVybnM6
ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUg
ZXZlbnQuCisgICAgICogICAgJUZBTFNFIHRvIGNvbnRpbnVlIGVtaXNzaW9uIG9mIHRoZSBldmVu
dC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjcuNQorICAgICAqLworICAgIHdlYmtpdF93ZWJf
dmlld19zaWduYWxzW0VOVEVSSU5HX0ZVTExTQ1JFRU5dID0KKyAgICAgICAgICAgIGdfc2lnbmFs
X25ldygiZW50ZXJpbmctZnVsbHNjcmVlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19U
WVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBH
X1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZT
RVQoV2ViS2l0V2ViVmlld0NsYXNzLCBlbnRlcmluZ19mdWxsc2NyZWVuKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMCk7CisKKworICAgIC8qKgorICAg
ICAqIFdlYktpdFdlYlZpZXc6OmxlYXZpbmctZnVsbHNjcmVlbjoKKyAgICAgKiBAd2ViX3ZpZXc6
IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAg
KgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgV2ViVmlldyBpcyBhYm91dCB0byByZXN0b3JlIGl0
cyB0b3AgbGV2ZWwKKyAgICAgKiB3aW5kb3cgb3V0IG9mIGl0cyBmdWxsIHNjcmVlbiBzdGF0ZS4g
VGhpcyBzaWduYWwgY2FuIGJlIHVzZWQgYnkKKyAgICAgKiBjbGllbnQgY29kZSB0byByZXN0b3Jl
IHdpZGdldHMgaGlkZGVuIGR1cmluZyB0aGUKKyAgICAgKiBlbnRlcmluZy1mdWxsc2NyZWVuIHN0
YWdlIGZvciBpbnN0YW5jZS4KKyAgICAgKgorICAgICAqIFJldHVybnM6ICVUUlVFIHRvIHN0b3Ag
b3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQuCisgICAgICog
ICAgJUZBTFNFIHRvIGNvbnRpbnVlIGVtaXNzaW9uIG9mIHRoZSBldmVudC4KKyAgICAgKgorICAg
ICAqIFNpbmNlOiAxLjcuNQorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW0xF
QVZJTkdfRlVMTFNDUkVFTl0gPQorICAgICAgICAgICAgZ19zaWduYWxfbmV3KCJsZWF2aW5nLWZ1
bGxzY3JlZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdl
YlZpZXdDbGFzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdD
bGFzcywgbGVhdmluZ19mdWxsc2NyZWVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnX3Np
Z25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBHX1RZUEVfQk9PTEVBTiwgMCk7CisKICAgICAvKgogICAgICAqIFdlYktpdFdlYlZpZXc6OnJl
c291cmNlLXJlc3BvbnNlLXJlY2VpdmVkCiAgICAgICogQHdlYlZpZXc6IHRoZSBvYmplY3Qgd2hp
Y2ggcmVjZWl2ZWQgdGhlIHNpZ25hbApAQCAtMjc4NSw2ICsyODQ4LDggQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xh
c3MpCiAgICAgd2ViVmlld0NsYXNzLT5yZWRvID0gd2Via2l0X3dlYl92aWV3X3JlYWxfcmVkbzsK
ICAgICB3ZWJWaWV3Q2xhc3MtPm1vdmVfY3Vyc29yID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbW92
ZV9jdXJzb3I7CiAgICAgd2ViVmlld0NsYXNzLT5zaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rpb24g
PSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rpb247CisgICAg
d2ViVmlld0NsYXNzLT5lbnRlcmluZ19mdWxsc2NyZWVuID0gd2Via2l0X3dlYl92aWV3X3JlYWxf
ZW50ZXJpbmdfZnVsbHNjcmVlbjsKKyAgICB3ZWJWaWV3Q2xhc3MtPmxlYXZpbmdfZnVsbHNjcmVl
biA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2xlYXZpbmdfZnVsbHNjcmVlbjsKIAogICAgIEdPYmpl
Y3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyh3ZWJWaWV3Q2xhc3MpOwogICAg
IG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0X3dlYl92aWV3X2Rpc3Bvc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCA2NzhlMzI5Li4yYTE1YjUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKQEAgLTE3NiwxMSArMTc2
LDExIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAoKiB1bmRvKSAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgKndlYl92aWV3KTsKICAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAoKiByZWRvKSAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3KTsKICAgICBn
Ym9vbGVhbiAgICAgICAgICAgICAgICAgICAoKiBzaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rpb24p
IChXZWJLaXRXZWJWaWV3ICAgKndlYl92aWV3KTsKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAg
ICAgICAoKiBlbnRlcmluZ19mdWxsc2NyZWVuKSAoV2ViS2l0V2ViVmlldyAgICp3ZWJfdmlldyk7
CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgKCogbGVhdmluZ19mdWxsc2NyZWVuKSAo
V2ViS2l0V2ViVmlldyAgICp3ZWJfdmlldyk7CiAKICAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUg
ZXhwYW5zaW9uICovCiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7Ci0gICAg
dm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7Ci0gICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQyKSAodm9pZCk7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWExZDA3NC4uMjc4YWFjYiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI0IEBACisyMDEyLTAyLTAyICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBGdWxsU2NyZWVuIHNpZ25hbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTgxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSB0d28gbmV3IGVudGVyaW5nL2xl
YXZpbmcgZnVsbHNjcmVlbiBzaWduYWxzIHRvIGhpZGUvc2hvdworICAgICAgICB0aGUgdG9vbCBi
YXIsIHRoZSBzdGF0dXMgYmFyIGFuZCBhc2sgdGhlIHVzZXIncyBwZXJtaXNzaW9uIGJlZm9yZQor
ICAgICAgICBlbnRlcmluZyBmdWxsc2NyZWVuLgorCisgICAgICAgICogR3RrTGF1bmNoZXIvbWFp
bi5jOgorICAgICAgICAod2ViVmlld0Z1bGxzY3JlZW5NZXNzYWdlV2luZG93Q2xvc2UpOgorICAg
ICAgICAod2ViVmlld1dpbmRvd1N0YXRlRXZlbnQpOgorICAgICAgICAoaGlkZV93aWRnZXQpOgor
ICAgICAgICAoc2hvd193aWRnZXQpOgorICAgICAgICAod2ViVmlld0VudGVyaW5nRnVsbFNjcmVl
bik6CisgICAgICAgICh3ZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4pOgorICAgICAgICAoY3JlYXRl
QnJvd3Nlcik6CisgICAgICAgIChjcmVhdGVXaW5kb3cpOgorCiAyMDEyLTAyLTE2ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBNYWtl
IGluc3RhbGwgaXMgYnJva2VuIHdoZW4gYnVpbGRpbmcgd2l0aG91dCAtLWVuYWJsZS1ndGstZG9j
CmRpZmYgLS1naXQgYS9Ub29scy9HdGtMYXVuY2hlci9tYWluLmMgYi9Ub29scy9HdGtMYXVuY2hl
ci9tYWluLmMKaW5kZXggZmJlODMzMS4uNGRjNDQ2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvR3RrTGF1
bmNoZXIvbWFpbi5jCisrKyBiL1Rvb2xzL0d0a0xhdW5jaGVyL21haW4uYwpAQCAtMTM0LDcgKzEz
NCw3OSBAQCBzdGF0aWMgZ2Jvb2xlYW4gcnVuTW9kYWxEaWFsb2dDYihXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBHdGtXaWRnZXQqIG9wZW5lcldpbmRvdwogICAgIHJldHVybiBUUlVFOwogfQogCi1z
dGF0aWMgR3RrV2lkZ2V0KiBjcmVhdGVCcm93c2VyKEd0a1dpZGdldCogd2luZG93LCBHdGtXaWRn
ZXQqIHVyaUVudHJ5LCBHdGtXaWRnZXQqIHN0YXR1c2JhciwgV2ViS2l0V2ViVmlldyogd2ViVmll
dywgR3RrV2lkZ2V0KiBvcGVuZXJXaW5kb3cpCitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0Z1bGxz
Y3JlZW5NZXNzYWdlV2luZG93Q2xvc2UoR3RrV2lkZ2V0ICpkaWFsb2cpCit7CisgICAgaWYgKEdU
S19JU19XSURHRVQoZGlhbG9nKSkKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7
CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld1dpbmRvd1N0
YXRlRXZlbnQoR3RrV2lkZ2V0ICp3aWRnZXQsIEdka0V2ZW50V2luZG93U3RhdGUgKmV2ZW50LCBX
ZWJLaXRXZWJWaWV3ICp3ZWJWaWV3KQoreworICAgIGlmIChldmVudC0+bmV3X3dpbmRvd19zdGF0
ZSAmIEdES19XSU5ET1dfU1RBVEVfRlVMTFNDUkVFTikgeworICAgICAgICBXZWJLaXRXZWJGcmFt
ZSAqZnJhbWUgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldyk7CisgICAg
ICAgIGNvbnN0IGdjaGFyICp1cmkgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF91cmkoZnJhbWUpOwor
ICAgICAgICBHdGtXaWRnZXQgKndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19X
SURHRVQod2ViVmlldykpOworICAgICAgICBpZiAoIWd0a193aWRnZXRfaXNfdG9wbGV2ZWwod2lu
ZG93KSB8fCAhR1RLX0lTX1dJTkRPVyh3aW5kb3cpIHx8IEdUS19JU19PRkZTQ1JFRU5fV0lORE9X
KHdpbmRvdykpCisgICAgICAgICAgICB3aW5kb3cgPSAwOworCisgICAgICAgIEd0a1dpZGdldCAq
ZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyh3aW5kb3cgPyBHVEtfV0lORE9XKHdpbmRv
dykgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdUS19ESUFMT0dfTU9EQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR1RLX01FU1NBR0VfSU5GTywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9OU19DTE9TRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgaXMgbm93
IGZ1bGwgc2NyZWVuLiBQcmVzcyBFU0Mgb3IgZiB0byBleGl0LiIsIHVyaSk7CisgICAgICAgIGdf
c2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChkaWFsb2csICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0soZ3Rr
X3dpZGdldF9kZXN0cm95KSwgZGlhbG9nKTsKKyAgICAgICAgZ190aW1lb3V0X2FkZCgxNTAwLCAo
R1NvdXJjZUZ1bmMpIHdlYlZpZXdGdWxsc2NyZWVuTWVzc2FnZVdpbmRvd0Nsb3NlLCBkaWFsb2cp
OworICAgICAgICBndGtfZGlhbG9nX3J1bihHVEtfRElBTE9HKGRpYWxvZykpOworICAgIH0KKyAg
ICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQgaGlkZVdpZGdldChHdGtXaWRnZXQqIHdp
ZGdldCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBpZiAoIUdUS19JU19TQ1JPTExFRF9XSU5ET1co
d2lkZ2V0KSkKKyAgICAgICAgZ3RrX3dpZGdldF9oaWRlKHdpZGdldCk7Cit9CisKK3N0YXRpYyB2
b2lkIHNob3dXaWRnZXQoR3RrV2lkZ2V0KiB3aWRnZXQsIGdwb2ludGVyIGRhdGEpCit7CisgICAg
aWYgKCFHVEtfSVNfU0NST0xMRURfV0lORE9XKHdpZGdldCkpCisgICAgICAgIGd0a193aWRnZXRf
c2hvdyh3aWRnZXQpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0VudGVyaW5nRnVsbFNj
cmVlbihXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBHdGtXaWRnZXQqIHZib3gpCit7CisgICAgV2Vi
S2l0V2ViRnJhbWUgKmZyYW1lID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1lKHdlYlZp
ZXcpOworICAgIGNvbnN0IGdjaGFyICp1cmkgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF91cmkoZnJh
bWUpOworICAgIEd0a1dpZGdldCAqd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RL
X1dJREdFVCh3ZWJWaWV3KSk7CisgICAgaWYgKCFndGtfd2lkZ2V0X2lzX3RvcGxldmVsKHdpbmRv
dykgfHwgIUdUS19JU19XSU5ET1cod2luZG93KSB8fCBHVEtfSVNfT0ZGU0NSRUVOX1dJTkRPVyh3
aW5kb3cpKQorICAgICAgICB3aW5kb3cgPSAwOworCisgICAgR3RrV2lkZ2V0ICpkaWFsb2cgPSBn
dGtfbWVzc2FnZV9kaWFsb2dfbmV3KHdpbmRvdyA/IEdUS19XSU5ET1cod2luZG93KSA6IDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19ESUFMT0df
TU9EQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdU
S19NRVNTQUdFX0lORk8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdUS19CVVRUT05TX1lFU19OTywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkFsbG93IGZ1bGwgc2NyZWVuIGRpc3BsYXkgb2YgJXMgPyIsIHVy
aSk7CisgICAgZ2ludCByZXN1bHQgPSBndGtfZGlhbG9nX3J1bihHVEtfRElBTE9HKGRpYWxvZykp
OworICAgIGlmIChyZXN1bHQgPT0gR1RLX1JFU1BPTlNFX1lFUykgeworICAgICAgICBndGtfY29u
dGFpbmVyX2ZvcmVhY2goR1RLX0NPTlRBSU5FUih2Ym94KSwgKEd0a0NhbGxiYWNrKSBoaWRlV2lk
Z2V0LCBOVUxMKTsKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQoZGlhbG9n
KSk7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgZ3RrX3dpZGdldF9kZXN0cm95
KEdUS19XSURHRVQoZGlhbG9nKSk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9v
bGVhbiB3ZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyAqd2ViVmlldywgR3Rr
V2lkZ2V0KiB2Ym94KQoreworICAgIEd0a1dpZGdldCAqd2luZG93ID0gZ3RrX3dpZGdldF9nZXRf
dG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisgICAgaWYgKGd0a193aWRnZXRfaXNfdG9w
bGV2ZWwod2luZG93KSAmJiBHVEtfSVNfV0lORE9XKHdpbmRvdykgJiYgIUdUS19JU19PRkZTQ1JF
RU5fV0lORE9XKHdpbmRvdykpCisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
YnlfZnVuYyh3aW5kb3csIEdfQ0FMTEJBQ0sod2ViVmlld1dpbmRvd1N0YXRlRXZlbnQpLCB3ZWJW
aWV3KTsKKyAgICBndGtfY29udGFpbmVyX2ZvcmVhY2goR1RLX0NPTlRBSU5FUih2Ym94KSwgKEd0
a0NhbGxiYWNrKSBzaG93V2lkZ2V0LCBOVUxMKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0
YXRpYyBHdGtXaWRnZXQqIGNyZWF0ZUJyb3dzZXIoR3RrV2lkZ2V0KiB3aW5kb3csIEd0a1dpZGdl
dCogdXJpRW50cnksIEd0a1dpZGdldCogc3RhdHVzYmFyLCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBHdGtXaWRnZXQqIG9wZW5lcldpbmRvdywgR3RrV2lkZ2V0KiB2Ym94KQogewogICAgIEd0a1dp
ZGdldCAqc2Nyb2xsZWRXaW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxMLCBOVUxM
KTsKICAgICBndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRP
VyhzY3JvbGxlZFdpbmRvdyksIEdUS19QT0xJQ1lfQVVUT01BVElDLCBHVEtfUE9MSUNZX0FVVE9N
QVRJQyk7CkBAIC0xNDksNiArMjIxLDggQEAgc3RhdGljIEd0a1dpZGdldCogY3JlYXRlQnJvd3Nl
cihHdGtXaWRnZXQqIHdpbmRvdywgR3RrV2lkZ2V0KiB1cmlFbnRyeSwgR3RrV2lkZ2UKICAgICBn
X3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJ3ZWItdmlldy1yZWFkeSIsIEdfQ0FMTEJBQ0sod2Vi
Vmlld1JlYWR5Q2IpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgImNs
b3NlLXdlYi12aWV3IiwgR19DQUxMQkFDSyhjbG9zZVdlYlZpZXdDYiksIHdpbmRvdyk7CiAgICAg
Z19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAicnVuLW1vZGFsLWRpYWxvZyIsIEdfQ0FMTEJBQ0so
cnVuTW9kYWxEaWFsb2dDYiksIG9wZW5lcldpbmRvdyk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3
ZWJWaWV3LCAiZW50ZXJpbmctZnVsbHNjcmVlbiIsIEdfQ0FMTEJBQ0sod2ViVmlld0VudGVyaW5n
RnVsbFNjcmVlbiksIHZib3gpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgImxlYXZp
bmctZnVsbHNjcmVlbiIsIEdfQ0FMTEJBQ0sod2ViVmlld0xlYXZpbmdGdWxsU2NyZWVuKSwgdmJv
eCk7CiAKICAgICByZXR1cm4gc2Nyb2xsZWRXaW5kb3c7CiB9CkBAIC0yMjYsNyArMzAwLDcgQEAg
c3RhdGljIEd0a1dpZGdldCogY3JlYXRlV2luZG93KFdlYktpdFdlYlZpZXcqKiBvdXRXZWJWaWV3
LCBHdGtXaWRnZXQqIG9wZW5lcldpbmQKICNlbmRpZgogICAgIHN0YXR1c2JhciA9IGNyZWF0ZVN0
YXR1c2Jhcih3ZWJWaWV3KTsKICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwg
Y3JlYXRlVG9vbGJhcih1cmlFbnRyeSwgd2ViVmlldyksIEZBTFNFLCBGQUxTRSwgMCk7Ci0gICAg
Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGNyZWF0ZUJyb3dzZXIod2luZG93LCB1
cmlFbnRyeSwgc3RhdHVzYmFyLCB3ZWJWaWV3LCBvcGVuZXJXaW5kb3cpLCBUUlVFLCBUUlVFLCAw
KTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgY3JlYXRlQnJvd3Nlcih3
aW5kb3csIHVyaUVudHJ5LCBzdGF0dXNiYXIsIHdlYlZpZXcsIG9wZW5lcldpbmRvdywgdmJveCks
IFRSVUUsIFRSVUUsIDApOwogICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBz
dGF0dXNiYXIsIEZBTFNFLCBGQUxTRSwgMCk7CiAKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtf
Q09OVEFJTkVSKHdpbmRvdyksIHZib3gpOwotLSAKMS43Ljk=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127827</attachid>
            <date>2012-02-20 09:29:36 -0800</date>
            <delta_ts>2012-02-22 09:15:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>21855</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBlNTUzODY3Mjk4ZjBkODk3YTI5MWYwYjBlZDE2NzFmYTA0NmIyNDQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBNb24sIDIwIEZlYiAyMDEyIDE4OjI4OjQ4ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDI2ICsrKysrKwogLi4uL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmNwcCAgfCAgIDYyICsrKysrKysrKysrKystLQogU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggfCAgICA0ICsKIFNvdXJjZS9XZWJLaXQv
Z3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMgICAgICAgICAgICAgIHwgICA4MyArKysrKysrKysrKysr
KysrKysrKwogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwICAgICAg
ICAgfCAgIDY3ICsrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmggICAgICAgICAgIHwgICAgNCArLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIxICsrKysrCiBUb29scy9HdGtMYXVuY2hl
ci9tYWluLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzggKysrKysrKysrKysrKysr
KysrLQogOCBmaWxlcyBjaGFuZ2VkLCAzMzIgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCmluZGV4IGY0NmNjNDcuLjIyYjJkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyOSBAQAorMjAxMi0wMi0yMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRnVsbFNjcmVlbiBzaWduYWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE4MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGVudGVyaW5nLWZ1
bGxzY3JlZW4gYW5kIGxlYXZpbmctZnVsbHNjcmVlbiBzaWduYWxzLCBtZWFudCB0bworICAgICAg
ICBiZSB1c2VkIGJ5IHRoZSB1c2VyIGFnZW50IHRvIGJlIG5vdGlmaWVkIHdoZW4gYW4gZWxlbWVu
dCByZXF1ZXN0cworICAgICAgICBmdWxsIHNjcmVlbiBkaXNwbGF5IGFuZCB3aGVuIHRoZSBmdWxs
IHNjcmVlbiBkaXNwbGF5IGlzIHRvIGJlCisgICAgICAgIGRpc2FibGVkLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hy
b21lQ2xpZW50OjpzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYktp
dDo6b25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9t
ZUNsaWVudDo6Y2FuY2VsRnVsbFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAgKiB0ZXN0cy90ZXN0d2Vidmlldy5jOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19yZWFsX2VudGVyaW5nX2Z1bGxzY3JlZW4pOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3Jl
YWxfbGVhdmluZ19mdWxsc2NyZWVuKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19p
bml0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorCiAyMDEyLTAyLTE5ICBQ
YXdlxYIgRm9yeXNpdWsgIDx0dXhhdG9yQG8yLnBsPgogICAgICAgICBbR1RLXSBDYW4ndCBmaW5k
IHdlYmluc3BlY3RvciBhbmQgZXJyb3IgcGFnZSByZWRpcmVjdGlvbiBvbiBXaW5kb3dzCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTYxNgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAK
aW5kZXggODk0MjdhZS4uOTg4N2ZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC01MSw2ICs1MSw4IEBACiAjaW5j
bHVkZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnVHdGsuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldlYktpdERPTUJpbmRpbmcuaCIK
KyNpbmNsdWRlICJXZWJLaXRET01IVE1MRWxlbWVudFByaXZhdGUuaCIKICNpbmNsdWRlICJXaW5k
b3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIndlYmtpdGdlb2xvY2F0aW9ucG9saWN5ZGVjaXNpb24u
aCIKICNpbmNsdWRlICJ3ZWJraXRnZW9sb2NhdGlvbnBvbGljeWRlY2lzaW9ucHJpdmF0ZS5oIgpA
QCAtNjEsNiArNjMsOCBAQAogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3
ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYndpbmRvd2ZlYXR1cmVz
cHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpbmNsdWRlIDxnZGsvZ2Rra2V5c3lt
cy5oPgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2lu
Y2x1ZGUgPGd0ay9ndGsuaD4KQEAgLTkzOCwyOSArOTQyLDY5IEBAIHZvaWQgQ2hyb21lQ2xpZW50
OjpleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKICNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCiBib29sIENocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudChj
b25zdCBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50LCBib29sIHdpdGhLZXlib2FyZCkKIHsKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gIXdpdGhLZXlib2FyZDsKK30KKworc3RhdGljIGdi
b29sZWFuIG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdk
a0V2ZW50S2V5KiBldmVudCwgQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQpCit7CisgICAgc3dp
dGNoIChldmVudC0+a2V5dmFsKSB7CisgICAgY2FzZSBHREtfS0VZX0VzY2FwZToKKyAgICBjYXNl
IEdES19LRVlfZjoKKyAgICBjYXNlIEdES19LRVlfRjoKKyAgICAgICAgY2hyb21lQ2xpZW50LT5j
YW5jZWxGdWxsU2NyZWVuKCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBGQUxTRTsKK30KKwordm9pZCBDaHJv
bWVDbGllbnQ6OmNhbmNlbEZ1bGxTY3JlZW4oKQoreworICAgIEFTU0VSVChtX2Z1bGxTY3JlZW5F
bGVtZW50KTsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRDYW5j
ZWxGdWxsU2NyZWVuKCk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50OjplbnRlckZ1bGxTY3JlZW5G
b3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiB7CisgICAgZ2Jvb2xlYW4gcmV0
dXJuVmFsdWU7CisgICAgR1JlZlB0cjxXZWJLaXRET01IVE1MRWxlbWVudD4ga2l0RWxlbWVudChh
ZG9wdEdSZWYoa2l0KHJlaW50ZXJwcmV0X2Nhc3Q8SFRNTEVsZW1lbnQqPihlbGVtZW50KSkpKTsK
KyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJWaWV3LCAiZW50ZXJpbmctZnVsbHNjcmVl
biIsIGtpdEVsZW1lbnQuZ2V0KCksICZyZXR1cm5WYWx1ZSk7CisgICAgaWYgKHJldHVyblZhbHVl
KQorICAgICAgICByZXR1cm47CisKKyAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aWRnZXRf
Z2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisgICAgaWYgKCF3aWRnZXRJc09u
c2NyZWVuVG9wbGV2ZWxXaW5kb3cod2luZG93KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ19z
aWduYWxfY29ubmVjdCh3aW5kb3csICJrZXktcHJlc3MtZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVs
bHNjcmVlbkd0a0tleVByZXNzRXZlbnQpLCB0aGlzKTsKKworICAgIG1fZnVsbFNjcmVlbkVsZW1l
bnQgPSBhZG9wdFJlZihlbGVtZW50KTsKKwogICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtp
dFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwogICAgIG1fYWRqdXN0bWVu
dFdhdGNoZXIuZGlzYWJsZUFsbFNjcm9sbGJhcnMoKTsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAg
aWYgKGVsZW1lbnQtPnRhZ05hbWUoKSA9PSAiVklERU8iKQotICAgICAgICBlbnRlckZ1bGxzY3Jl
ZW5Gb3JOb2RlKHN0YXRpY19jYXN0PE5vZGUqPihlbGVtZW50KSk7Ci0jZW5kaWYKKyAgICBndGtf
d2luZG93X2Z1bGxzY3JlZW4oR1RLX1dJTkRPVyh3aW5kb3cpKTsKICAgICBlbGVtZW50LT5kb2N1
bWVudCgpLT53ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwogfQog
CiB2b2lkIENocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVs
ZW1lbnQqIGVsZW1lbnQpCiB7CisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgR1JlZlB0
cjxXZWJLaXRET01IVE1MRWxlbWVudD4ga2l0RWxlbWVudChhZG9wdEdSZWYoa2l0KHJlaW50ZXJw
cmV0X2Nhc3Q8SFRNTEVsZW1lbnQqPihlbGVtZW50KSkpKTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5
X25hbWUobV93ZWJWaWV3LCAibGVhdmluZy1mdWxsc2NyZWVuIiwga2l0RWxlbWVudC5nZXQoKSwg
JnJldHVyblZhbHVlKTsKKyAgICBpZiAocmV0dXJuVmFsdWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdF
VChtX3dlYlZpZXcpKTsKKyAgICBBU1NFUlQod2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93
KHdpbmRvdykpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3aW5k
b3csIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQp
LCB0aGlzKTsKKwogICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdFdpbGxFeGl0RnVsbFNj
cmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgZ3RrX3dpbmRvd191bmZ1bGxzY3JlZW4oR1RL
X1dJTkRPVyh3aW5kb3cpKTsKICAgICBtX2FkanVzdG1lbnRXYXRjaGVyLmVuYWJsZUFsbFNjcm9s
bGJhcnMoKTsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgaWYgKGVsZW1lbnQtPnRhZ05hbWUoKSA9
PSAiVklERU8iKQotICAgICAgICB3ZWJWaWV3RXhpdEZ1bGxzY3JlZW4obV93ZWJWaWV3KTsKLSNl
bmRpZgogICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudChlbGVtZW50KTsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LmNsZWFyKCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuaAppbmRleCA5ZDIxMDVkLi5iMDZiMWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTU1LDYgKzE1NSw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxs
U2NyZWVuRm9yRWxlbWVudChjb25zdCBFbGVtZW50KiwgYm9vbCB3aXRoS2V5Ym9hcmQpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOwor
ICAgICAgICB2b2lkIGNhbmNlbEZ1bGxTY3JlZW4oKTsKICNlbmRpZgogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CkBAIC0xODcsNiArMTg4LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAgICAgICAgIHVuc2lnbmVkIGludCBtX3JlcGFpbnRTb29uU291cmNlSWQ7CiAKICAgICAgICAg
dm9pZCBpbnZhbGlkYXRlV2lkZ2V0UmVjdChjb25zdCBJbnRSZWN0Jik7CisjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQorICAgICAgICBSZWZQdHI8RWxlbWVudD4gbV9mdWxsU2NyZWVuRWxlbWVu
dDsKKyNlbmRpZgogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3Rl
c3RzL3Rlc3R3ZWJ2aWV3LmMgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5j
CmluZGV4IDQxY2YzMDguLjZjNmQ2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3Rl
c3RzL3Rlc3R3ZWJ2aWV3LmMKKysrIGIvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZp
ZXcuYwpAQCAtMzgyLDYgKzM4Miw4NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF93ZWJfdmll
d19pbl9vZmZzY3JlZW5fd2luZG93X2RvZXNfbm90X2NyYXNoKCkKICAgICBnX21haW5fbG9vcF91
bnJlZihsb29wKTsKIH0KIAorc3RhdGljIGdib29sZWFuIGVtaXRLZXlTdHJva2UoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldykKK3sKKyAgICBHZGtFdmVudCogcHJlc3NFdmVudCA9IGdka19ldmVudF9u
ZXcoR0RLX0tFWV9QUkVTUyk7CisgICAgcHJlc3NFdmVudC0+a2V5LmtleXZhbCA9IEdES19LRVlf
ZjsKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lE
R0VUKHdlYlZpZXcpKTsKKyAgICBwcmVzc0V2ZW50LT5rZXkud2luZG93ID0gd2luZG93OworICAg
IGdfb2JqZWN0X3JlZihwcmVzc0V2ZW50LT5rZXkud2luZG93KTsKKworICAgIEdka0RldmljZU1h
bmFnZXIqIG1hbmFnZXIgPSBnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ2RrX3dpbmRv
d19nZXRfZGlzcGxheSh3aW5kb3cpKTsKKyAgICBnZGtfZXZlbnRfc2V0X2RldmljZShwcmVzc0V2
ZW50LCBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKG1hbmFnZXIpKTsKKwor
ICAgIC8vIFdoZW4gc3ludGhlc2l6aW5nIGFuIGV2ZW50LCBhbiBpbnZhbGlkIGhhcmR3YXJlX2tl
eWNvZGUgdmFsdWUKKyAgICAvLyBjYW4gY2F1c2UgaXQgdG8gYmUgYmFkbHkgcHJvY2Vzc2VkIGJ5
IEd0aysuCisgICAgR2RrS2V5bWFwS2V5KiBrZXlzOworICAgIGdpbnQgbl9rZXlzOworICAgIGlm
IChnZGtfa2V5bWFwX2dldF9lbnRyaWVzX2Zvcl9rZXl2YWwoZ2RrX2tleW1hcF9nZXRfZGVmYXVs
dCgpLCBHREtfS0VZX2YsICZrZXlzLCAmbl9rZXlzKSkgeworICAgICAgICBwcmVzc0V2ZW50LT5r
ZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXNbMF0ua2V5Y29kZTsKKyAgICAgICAgZ19mcmVlKGtl
eXMpOworICAgIH0KKworICAgIEdka0V2ZW50KiByZWxlYXNlRXZlbnQgPSBnZGtfZXZlbnRfY29w
eShwcmVzc0V2ZW50KTsKKyAgICBndGtfbWFpbl9kb19ldmVudChwcmVzc0V2ZW50KTsKKyAgICBn
ZGtfZXZlbnRfZnJlZShwcmVzc0V2ZW50KTsKKyAgICByZWxlYXNlRXZlbnQtPmtleS50eXBlID0g
R0RLX0tFWV9SRUxFQVNFOworICAgIGd0a19tYWluX2RvX2V2ZW50KHJlbGVhc2VFdmVudCk7Cisg
ICAgZ2RrX2V2ZW50X2ZyZWUocmVsZWFzZUV2ZW50KTsKKworICAgIHJldHVybiBGQUxTRTsKK30K
Kworc3RhdGljIGdib29sZWFuIGVudGVyaW5nX2Z1bGxzY3JlZW5fY2IoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgR09iamVjdCogZWxlbWVudCwgZ2Jvb2xlYW4gYmxvY2tlZCkKK3sKKyAgICBpZiAo
YmxvY2tlZCkKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdChsb29wKTsKKyAgICBlbHNlCisgICAg
ICAgIGdfdGltZW91dF9hZGQoMjAwLCAoR1NvdXJjZUZ1bmMpIGVtaXRLZXlTdHJva2UsIHdlYlZp
ZXcpOworICAgIHJldHVybiBibG9ja2VkOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gbGVhdmluZ19m
dWxsc2NyZWVuX2NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdPYmplY3QqIGVsZW1lbnQsIGdw
b2ludGVyIGRhdGEpCit7CisgICAgZ19tYWluX2xvb3BfcXVpdChsb29wKTsKKyAgICByZXR1cm4g
RkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl92aWV3X2Z1bGxzY3JlZW4o
Z2NvbnN0cG9pbnRlciBibG9ja2VkKQoreworICAgIEd0a1dpZGdldCogd2luZG93OworICAgIEd0
a1dpZGdldCogd2ViX3ZpZXc7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzOworCisg
ICAgd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisgICAgd2Vi
X3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3KCk7CisKKyAgICBzZXR0aW5ncyA9IHdlYmtpdF93
ZWJfdmlld19nZXRfc2V0dGluZ3MoV0VCS0lUX1dFQl9WSUVXKHdlYl92aWV3KSk7CisgICAgZ19v
YmplY3Rfc2V0KHNldHRpbmdzLCAiZW5hYmxlLWZ1bGxzY3JlZW4iLCBUUlVFLCBOVUxMKTsKKyAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJfdmlldyks
IHNldHRpbmdzKTsKKworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93
KSwgd2ViX3ZpZXcpOworCisgICAgZ3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpOworCisgICAg
bG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBUUlVFKTsKKworICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qod2ViX3ZpZXcsICJlbnRlcmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyhlbnRlcmluZ19m
dWxsc2NyZWVuX2NiKSwgKGdwb2ludGVyKSBibG9ja2VkKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYl92aWV3LCAibGVhdmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyhsZWF2aW5nX2Z1bGxz
Y3JlZW5fY2IpLCBOVUxMKTsKKworICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyhXRUJL
SVRfV0VCX1ZJRVcod2ViX3ZpZXcpLCAiPGh0bWw+PGJvZHk+IgorICAgICAgICAgICAgICAgICAg
ICI8c2NyaXB0PiIKKyAgICAgICAgICAgICAgICAgICAidmFyIGV2ZW50TmFtZSA9ICdrZXlwcmVz
cyc7IgorICAgICAgICAgICAgICAgICAgICJkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50
TmFtZSwgZnVuY3Rpb24gKCkgeyIKKyAgICAgICAgICAgICAgICAgICAiICAgIGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOyIKKyAgICAgICAgICAgICAg
ICAgICAifSwgZmFsc2UpOyIKKyAgICAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+PC9ib2R5Pjwv
aHRtbD4iLCBOVUxMLCBOVUxMLCBOVUxMKTsKKworICAgIGdfdGltZW91dF9hZGQoMTAwLCAoR1Nv
dXJjZUZ1bmMpIGVtaXRLZXlTdHJva2UsIFdFQktJVF9XRUJfVklFVyh3ZWJfdmlldykpOworICAg
IGdfbWFpbl9sb29wX3J1bihsb29wKTsKKworICAgIGd0a193aWRnZXRfZGVzdHJveSh3aW5kb3cp
OworfQorCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CiAgICAgU291cFNlcnZl
ciogc2VydmVyOwpAQCAtNDEwLDYgKzQ5MSw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy9ncmFiX2ZvY3VzIiwg
dGVzdF93ZWJraXRfd2ViX3ZpZXdfZ3JhYl9mb2N1cyk7CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIv
d2Via2l0L3dlYnZpZXcvd2luZG93LWZlYXR1cmVzIiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfd2lu
ZG93X2ZlYXR1cmVzKTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy93ZWJ2
aWV3LWluLW9mZnNjcmVlbi13aW5kb3ctZG9lcy1ub3QtY3Jhc2giLCB0ZXN0X3dlYmtpdF93ZWJf
dmlld19pbl9vZmZzY3JlZW5fd2luZG93X2RvZXNfbm90X2NyYXNoKTsKKyAgICBnX3Rlc3RfYWRk
X2RhdGFfZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2Z1bGxzY3JlZW4iLCBHSU5UX1RPX1BPSU5URVIo
RkFMU0UpLCB0ZXN0X3dlYmtpdF93ZWJfdmlld19mdWxsc2NyZWVuKTsKKyAgICBnX3Rlc3RfYWRk
X2RhdGFfZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2Z1bGxzY3JlZW4tYmxvY2tlZCIsIEdJTlRfVE9f
UE9JTlRFUihUUlVFKSwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfZnVsbHNjcmVlbik7CiAKICAgICBy
ZXR1cm4gZ190ZXN0X3J1biAoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcAppbmRleCA4OGNmNmRmLi5jYTdmMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0yMTMsNiArMjEzLDggQEAgZW51bSB7CiAgICAg
UkVTT1VSQ0VfQ09OVEVOVF9MRU5HVEhfUkVDRUlWRUQsCiAgICAgUkVTT1VSQ0VfTE9BRF9GQUlM
RUQsCiAgICAgUlVOX01PREFMX0RJQUxPRywKKyAgICBFTlRFUklOR19GVUxMU0NSRUVOLAorICAg
IExFQVZJTkdfRlVMTFNDUkVFTiwKIAogICAgIExBU1RfU0lHTkFMCiB9OwpAQCAtMTMwMSw2ICsx
MzAzLDE2IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG91bGRfYWxs
b3dfZWRpdGluZ19hY3Rpb24oV2ViS2l0V2ViVmlldyopCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAK
K3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9lbnRlcmluZ19mdWxsc2NyZWVu
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfbGVhdmluZ19mdWxsc2NyZWVuKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgcmV0dXJuIEZBTFNFOworfQorCiBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfZGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgV2ViS2l0
V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhvYmplY3QpOwpAQCAtMjY1Niw2ICsy
NjY4LDU5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdl
YlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCiAg
ICAgICAgICAgICBXRUJLSVRfVFlQRV9WSUVXUE9SVF9BVFRSSUJVVEVTKTsKIAorICAgIC8qKgor
ICAgICAqIFdlYktpdFdlYlZpZXc6OmVudGVyaW5nLWZ1bGxzY3JlZW46CisgICAgICogQHdlYl92
aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkLgor
ICAgICAqIEBlbGVtZW50OiB0aGUgI1dlYktpdERPTUhUTUxFbGVtZW50IHdoaWNoIGhhcyByZXF1
ZXN0ZWQgZnVsbCBzY3JlZW4gZGlzcGxheS4KKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBK
YXZhU2NyaXB0IGNvZGUgY2FsbHMKKyAgICAgKiA8ZnVuY3Rpb24+ZWxlbWVudC53ZWJraXRSZXF1
ZXN0RnVsbFNjcmVlbjwvZnVuY3Rpb24+LiBJZiB0aGUKKyAgICAgKiBzaWduYWwgaXMgbm90IGhh
bmRsZWQgdGhlIFdlYlZpZXcgd2lsbCBwcm9jZWVkIHRvIGZ1bGwgc2NyZWVuCisgICAgICogaXRz
IHRvcCBsZXZlbCB3aW5kb3cuIFRoaXMgc2lnbmFsIGNhbiBiZSB1c2VkIGJ5IGNsaWVudCBjb2Rl
IHRvCisgICAgICogcmVxdWVzdCBwZXJtaXNzaW9uIHRvIHRoZSB1c2VyIHByaW9yIGRvaW5nIHRo
ZSBmdWxsIHNjcmVlbgorICAgICAqIHRyYW5zaXRpb24gYW5kIGV2ZW50dWFsbHkgcHJlcGFyZSB0
aGUgdG9wLWxldmVsIHdpbmRvdworICAgICAqIChlLmcuIGhpZGUgc29tZSB3aWRnZXRzIHRoYXQg
d291bGQgb3RoZXJ3aXNlIGJlIHBhcnQgb2YgdGhlCisgICAgICogZnVsbCBzY3JlZW4gd2luZG93
KS4KKyAgICAgKgorICAgICAqIFJldHVybnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMg
ZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQuCisgICAgICogICAgJUZBTFNFIHRvIGNv
bnRpbnVlIGVtaXNzaW9uIG9mIHRoZSBldmVudC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjcu
NgorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW0VOVEVSSU5HX0ZVTExTQ1JF
RU5dID0KKyAgICAgICAgICAgIGdfc2lnbmFsX25ldygiZW50ZXJpbmctZnVsbHNjcmVlbiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBlbnRlcmlu
Z19mdWxsc2NyZWVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVs
YXRvcl90cnVlX2hhbmRsZWQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgd2Via2l0X21h
cnNoYWxfQk9PTEVBTl9fT0JKRUNULAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9C
T09MRUFOLCAxLCBXRUJLSVRfVFlQRV9ET01fSFRNTF9FTEVNRU5UKTsKKworCisgICAgLyoqCisg
ICAgICogV2ViS2l0V2ViVmlldzo6bGVhdmluZy1mdWxsc2NyZWVuOgorICAgICAqIEB3ZWJfdmll
dzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZC4KKyAg
ICAgKiBAZWxlbWVudDogdGhlICNXZWJLaXRET01IVE1MRWxlbWVudCB3aGljaCBpcyBjdXJyZW50
bHkgZGlzcGxheWVkIGZ1bGwgc2NyZWVuLgorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRo
ZSBXZWJWaWV3IGlzIGFib3V0IHRvIHJlc3RvcmUgaXRzIHRvcCBsZXZlbAorICAgICAqIHdpbmRv
dyBvdXQgb2YgaXRzIGZ1bGwgc2NyZWVuIHN0YXRlLiBUaGlzIHNpZ25hbCBjYW4gYmUgdXNlZCBi
eQorICAgICAqIGNsaWVudCBjb2RlIHRvIHJlc3RvcmUgd2lkZ2V0cyBoaWRkZW4gZHVyaW5nIHRo
ZQorICAgICAqIGVudGVyaW5nLWZ1bGxzY3JlZW4gc3RhZ2UgZm9yIGluc3RhbmNlLgorICAgICAq
CisgICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5n
IGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAgICAgKiAgICAlRkFMU0UgdG8gY29udGludWUgZW1p
c3Npb24gb2YgdGhlIGV2ZW50LgorICAgICAqCisgICAgICogU2luY2U6IDEuNy42CisgICAgICov
CisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbTEVBVklOR19GVUxMU0NSRUVOXSA9CisgICAg
ICAgICAgICBnX3NpZ25hbF9uZXcoImxlYXZpbmctZnVsbHNjcmVlbiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBsZWF2aW5nX2Z1bGxzY3JlZW4p
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFu
ZGxlZCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFO
X19PQkpFQ1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEsIFdF
QktJVF9UWVBFX0RPTV9IVE1MX0VMRU1FTlQpOworCiAgICAgLyoKICAgICAgKiBXZWJLaXRXZWJW
aWV3OjpyZXNvdXJjZS1yZXNwb25zZS1yZWNlaXZlZAogICAgICAqIEB3ZWJWaWV3OiB0aGUgb2Jq
ZWN0IHdoaWNoIHJlY2VpdmVkIHRoZSBzaWduYWwKQEAgLTI3ODUsNiArMjg1MCw4IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2Vi
Vmlld0NsYXNzKQogICAgIHdlYlZpZXdDbGFzcy0+cmVkbyA9IHdlYmtpdF93ZWJfdmlld19yZWFs
X3JlZG87CiAgICAgd2ViVmlld0NsYXNzLT5tb3ZlX2N1cnNvciA9IHdlYmtpdF93ZWJfdmlld19y
ZWFsX21vdmVfY3Vyc29yOwogICAgIHdlYlZpZXdDbGFzcy0+c2hvdWxkX2FsbG93X2VkaXRpbmdf
YWN0aW9uID0gd2Via2l0X3dlYl92aWV3X3JlYWxfc2hvdWxkX2FsbG93X2VkaXRpbmdfYWN0aW9u
OworICAgIHdlYlZpZXdDbGFzcy0+ZW50ZXJpbmdfZnVsbHNjcmVlbiA9IHdlYmtpdF93ZWJfdmll
d19yZWFsX2VudGVyaW5nX2Z1bGxzY3JlZW47CisgICAgd2ViVmlld0NsYXNzLT5sZWF2aW5nX2Z1
bGxzY3JlZW4gPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9sZWF2aW5nX2Z1bGxzY3JlZW47CiAKICAg
ICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Mod2ViVmlld0NsYXNz
KTsKICAgICBvYmplY3RDbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdF93ZWJfdmlld19kaXNwb3NlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggNjc4ZTMyOS4uMmEx
NWI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC0xNzYs
MTEgKzE3NiwxMSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgKCogdW5kbykgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICp3ZWJfdmlldyk7CiAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgKCog
cmVkbykgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7
CiAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgKCogc2hvdWxkX2FsbG93X2VkaXRpbmdf
YWN0aW9uKSAoV2ViS2l0V2ViVmlldyAgICp3ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gICAgICAg
ICAgICAgICAgICAgKCogZW50ZXJpbmdfZnVsbHNjcmVlbikgKFdlYktpdFdlYlZpZXcgICAqd2Vi
X3ZpZXcpOworICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICgqIGxlYXZpbmdfZnVsbHNj
cmVlbikgKFdlYktpdFdlYlZpZXcgICAqd2ViX3ZpZXcpOwogCiAgICAgLyogUGFkZGluZyBmb3Ig
ZnV0dXJlIGV4cGFuc2lvbiAqLwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQp
OwotICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwotICAgIHZvaWQgKCpfd2Vi
a2l0X3Jlc2VydmVkMikgKHZvaWQpOwogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4YWQ2NzcuLjhjZDdh
ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNCBAQAorMjAxMi0wMi0yMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRnVsbFNjcmVlbiBzaWduYWxzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE4MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgdHdvIG5ldyBlbnRl
cmluZy9sZWF2aW5nIGZ1bGxzY3JlZW4gc2lnbmFscyB0byBoaWRlL3Nob3cKKyAgICAgICAgdGhl
IHRvb2wgYmFyLCB0aGUgc3RhdHVzIGJhciBhbmQgYXNrIHRoZSB1c2VyJ3MgcGVybWlzc2lvbiBi
ZWZvcmUKKyAgICAgICAgZW50ZXJpbmcgZnVsbHNjcmVlbi4KKworICAgICAgICAqIEd0a0xhdW5j
aGVyL21haW4uYzoKKyAgICAgICAgKHdlYlZpZXdGdWxsc2NyZWVuTWVzc2FnZVdpbmRvd0Nsb3Nl
KToKKyAgICAgICAgKHdlYlZpZXdXaW5kb3dTdGF0ZUV2ZW50KToKKyAgICAgICAgKGhpZGVfd2lk
Z2V0KToKKyAgICAgICAgKHNob3dfd2lkZ2V0KToKKyAgICAgICAgKHdlYlZpZXdFbnRlcmluZ0Z1
bGxTY3JlZW4pOgorICAgICAgICAod2ViVmlld0xlYXZpbmdGdWxsU2NyZWVuKToKKyAgICAgICAg
KGNyZWF0ZUJyb3dzZXIpOgorICAgICAgICAoY3JlYXRlV2luZG93KToKKwogMjAxMi0wMi0yMCAg
QW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRkIHdpbmdvIGFzIGEg
Y29tbWl0dGVyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jIGIvVG9vbHMv
R3RrTGF1bmNoZXIvbWFpbi5jCmluZGV4IGZiZTgzMzEuLjhlOTc4NWQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0d0a0xhdW5jaGVyL21haW4uYworKysgYi9Ub29scy9HdGtMYXVuY2hlci9tYWluLmMKQEAg
LTEzNCw3ICsxMzQsNzkgQEAgc3RhdGljIGdib29sZWFuIHJ1bk1vZGFsRGlhbG9nQ2IoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgR3RrV2lkZ2V0KiBvcGVuZXJXaW5kb3cKICAgICByZXR1cm4gVFJV
RTsKIH0KIAotc3RhdGljIEd0a1dpZGdldCogY3JlYXRlQnJvd3NlcihHdGtXaWRnZXQqIHdpbmRv
dywgR3RrV2lkZ2V0KiB1cmlFbnRyeSwgR3RrV2lkZ2V0KiBzdGF0dXNiYXIsIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIEd0a1dpZGdldCogb3BlbmVyV2luZG93KQorc3RhdGljIGdib29sZWFuIHdl
YlZpZXdGdWxsc2NyZWVuTWVzc2FnZVdpbmRvd0Nsb3NlKEd0a1dpZGdldCAqZGlhbG9nKQorewor
ICAgIGlmIChHVEtfSVNfV0lER0VUKGRpYWxvZykpCisgICAgICAgIGd0a193aWRnZXRfZGVzdHJv
eShkaWFsb2cpOworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYlZp
ZXdXaW5kb3dTdGF0ZUV2ZW50KEd0a1dpZGdldCAqd2lkZ2V0LCBHZGtFdmVudFdpbmRvd1N0YXRl
ICpldmVudCwgV2ViS2l0V2ViVmlldyAqd2ViVmlldykKK3sKKyAgICBpZiAoZXZlbnQtPm5ld193
aW5kb3dfc3RhdGUgJiBHREtfV0lORE9XX1NUQVRFX0ZVTExTQ1JFRU4pIHsKKyAgICAgICAgV2Vi
S2l0V2ViRnJhbWUgKmZyYW1lID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1lKHdlYlZp
ZXcpOworICAgICAgICBjb25zdCBnY2hhciAqdXJpID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfdXJp
KGZyYW1lKTsKKyAgICAgICAgR3RrV2lkZ2V0ICp3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3Bs
ZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICAgICAgaWYgKCFndGtfd2lkZ2V0X2lzX3Rv
cGxldmVsKHdpbmRvdykgfHwgIUdUS19JU19XSU5ET1cod2luZG93KSB8fCBHVEtfSVNfT0ZGU0NS
RUVOX1dJTkRPVyh3aW5kb3cpKQorICAgICAgICAgICAgd2luZG93ID0gMDsKKworICAgICAgICBH
dGtXaWRnZXQgKmRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXcod2luZG93ID8gR1RLX1dJ
TkRPVyh3aW5kb3cpIDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHVEtfRElBTE9HX01PREFMLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19NRVNTQUdFX0lORk8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0JVVFRPTlNfQ0xP
U0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiVzIGlzIG5vdyBmdWxsIHNjcmVlbi4gUHJlc3MgRVNDIG9yIGYgdG8gZXhpdC4iLCB1cmkpOwor
ICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoZGlhbG9nLCAicmVzcG9uc2UiLCBHX0NB
TExCQUNLKGd0a193aWRnZXRfZGVzdHJveSksIGRpYWxvZyk7CisgICAgICAgIGdfdGltZW91dF9h
ZGQoMTUwMCwgKEdTb3VyY2VGdW5jKSB3ZWJWaWV3RnVsbHNjcmVlbk1lc3NhZ2VXaW5kb3dDbG9z
ZSwgZGlhbG9nKTsKKyAgICAgICAgZ3RrX2RpYWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKTsK
KyAgICB9CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkIGhpZGVXaWRnZXQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgaWYgKCFHVEtfSVNfU0NST0xM
RURfV0lORE9XKHdpZGdldCkpCisgICAgICAgIGd0a193aWRnZXRfaGlkZSh3aWRnZXQpOworfQor
CitzdGF0aWMgdm9pZCBzaG93V2lkZ2V0KEd0a1dpZGdldCogd2lkZ2V0LCBncG9pbnRlciBkYXRh
KQoreworICAgIGlmICghR1RLX0lTX1NDUk9MTEVEX1dJTkRPVyh3aWRnZXQpKQorICAgICAgICBn
dGtfd2lkZ2V0X3Nob3cod2lkZ2V0KTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYlZpZXdFbnRl
cmluZ0Z1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyAqd2ViVmlldywgR09iamVjdCAqZWxlbWVudCwg
R3RrV2lkZ2V0KiB2Ym94KQoreworICAgIFdlYktpdFdlYkZyYW1lICpmcmFtZSA9IHdlYmtpdF93
ZWJfdmlld19nZXRfbWFpbl9mcmFtZSh3ZWJWaWV3KTsKKyAgICBjb25zdCBnY2hhciAqdXJpID0g
d2Via2l0X3dlYl9mcmFtZV9nZXRfdXJpKGZyYW1lKTsKKyAgICBHdGtXaWRnZXQgKndpbmRvdyA9
IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlldykpOworICAgIGlmICgh
Z3RrX3dpZGdldF9pc190b3BsZXZlbCh3aW5kb3cpIHx8ICFHVEtfSVNfV0lORE9XKHdpbmRvdykg
fHwgR1RLX0lTX09GRlNDUkVFTl9XSU5ET1cod2luZG93KSkKKyAgICAgICAgd2luZG93ID0gMDsK
KworICAgIEd0a1dpZGdldCAqZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyh3aW5kb3cg
PyBHVEtfV0lORE9XKHdpbmRvdykgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHVEtfRElBTE9HX01PREFMLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfTUVTU0FHRV9JTkZPLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9OU19ZRVNfTk8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbGxvdyBmdWxs
IHNjcmVlbiBkaXNwbGF5IG9mICVzID8iLCB1cmkpOworICAgIGdpbnQgcmVzdWx0ID0gZ3RrX2Rp
YWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKTsKKyAgICBpZiAocmVzdWx0ID09IEdUS19SRVNQ
T05TRV9ZRVMpIHsKKyAgICAgICAgZ3RrX2NvbnRhaW5lcl9mb3JlYWNoKEdUS19DT05UQUlORVIo
dmJveCksIChHdGtDYWxsYmFjaykgaGlkZVdpZGdldCwgTlVMTCk7CisgICAgICAgIGd0a193aWRn
ZXRfZGVzdHJveShHVEtfV0lER0VUKGRpYWxvZykpOworICAgICAgICByZXR1cm4gRkFMU0U7Cisg
ICAgfQorICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKGRpYWxvZykpOworICAgIHJl
dHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0xlYXZpbmdGdWxsU2NyZWVu
KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEdPYmplY3QgKmVsZW1lbnQsIEd0a1dpZGdldCogdmJv
eCkKK3sKKyAgICBHdGtXaWRnZXQgKndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdU
S19XSURHRVQod2ViVmlldykpOworICAgIGlmIChndGtfd2lkZ2V0X2lzX3RvcGxldmVsKHdpbmRv
dykgJiYgR1RLX0lTX1dJTkRPVyh3aW5kb3cpICYmICFHVEtfSVNfT0ZGU0NSRUVOX1dJTkRPVyh3
aW5kb3cpKQorICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2lu
ZG93LCBHX0NBTExCQUNLKHdlYlZpZXdXaW5kb3dTdGF0ZUV2ZW50KSwgd2ViVmlldyk7CisgICAg
Z3RrX2NvbnRhaW5lcl9mb3JlYWNoKEdUS19DT05UQUlORVIodmJveCksIChHdGtDYWxsYmFjaykg
c2hvd1dpZGdldCwgTlVMTCk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgR3RrV2lk
Z2V0KiBjcmVhdGVCcm93c2VyKEd0a1dpZGdldCogd2luZG93LCBHdGtXaWRnZXQqIHVyaUVudHJ5
LCBHdGtXaWRnZXQqIHN0YXR1c2JhciwgV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrV2lkZ2V0
KiBvcGVuZXJXaW5kb3csIEd0a1dpZGdldCogdmJveCkKIHsKICAgICBHdGtXaWRnZXQgKnNjcm9s
bGVkV2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7CiAgICAgZ3Rr
X3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5KEdUS19TQ1JPTExFRF9XSU5ET1coc2Nyb2xsZWRX
aW5kb3cpLCBHVEtfUE9MSUNZX0FVVE9NQVRJQywgR1RLX1BPTElDWV9BVVRPTUFUSUMpOwpAQCAt
MTQ5LDYgKzIyMSw4IEBAIHN0YXRpYyBHdGtXaWRnZXQqIGNyZWF0ZUJyb3dzZXIoR3RrV2lkZ2V0
KiB3aW5kb3csIEd0a1dpZGdldCogdXJpRW50cnksIEd0a1dpZGdlCiAgICAgZ19zaWduYWxfY29u
bmVjdCh3ZWJWaWV3LCAid2ViLXZpZXctcmVhZHkiLCBHX0NBTExCQUNLKHdlYlZpZXdSZWFkeUNi
KSwgd2luZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJjbG9zZS13ZWItdmll
dyIsIEdfQ0FMTEJBQ0soY2xvc2VXZWJWaWV3Q2IpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3Qod2ViVmlldywgInJ1bi1tb2RhbC1kaWFsb2ciLCBHX0NBTExCQUNLKHJ1bk1vZGFsRGlh
bG9nQ2IpLCBvcGVuZXJXaW5kb3cpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgImVu
dGVyaW5nLWZ1bGxzY3JlZW4iLCBHX0NBTExCQUNLKHdlYlZpZXdFbnRlcmluZ0Z1bGxTY3JlZW4p
LCB2Ym94KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJsZWF2aW5nLWZ1bGxzY3Jl
ZW4iLCBHX0NBTExCQUNLKHdlYlZpZXdMZWF2aW5nRnVsbFNjcmVlbiksIHZib3gpOwogCiAgICAg
cmV0dXJuIHNjcm9sbGVkV2luZG93OwogfQpAQCAtMjI2LDcgKzMwMCw3IEBAIHN0YXRpYyBHdGtX
aWRnZXQqIGNyZWF0ZVdpbmRvdyhXZWJLaXRXZWJWaWV3Kiogb3V0V2ViVmlldywgR3RrV2lkZ2V0
KiBvcGVuZXJXaW5kCiAjZW5kaWYKICAgICBzdGF0dXNiYXIgPSBjcmVhdGVTdGF0dXNiYXIod2Vi
Vmlldyk7CiAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGNyZWF0ZVRvb2xi
YXIodXJpRW50cnksIHdlYlZpZXcpLCBGQUxTRSwgRkFMU0UsIDApOwotICAgIGd0a19ib3hfcGFj
a19zdGFydChHVEtfQk9YKHZib3gpLCBjcmVhdGVCcm93c2VyKHdpbmRvdywgdXJpRW50cnksIHN0
YXR1c2Jhciwgd2ViVmlldywgb3BlbmVyV2luZG93KSwgVFJVRSwgVFJVRSwgMCk7CisgICAgZ3Rr
X2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGNyZWF0ZUJyb3dzZXIod2luZG93LCB1cmlF
bnRyeSwgc3RhdHVzYmFyLCB3ZWJWaWV3LCBvcGVuZXJXaW5kb3csIHZib3gpLCBUUlVFLCBUUlVF
LCAwKTsKICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdHVzYmFyLCBG
QUxTRSwgRkFMU0UsIDApOwogCiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3
aW5kb3cpLCB2Ym94KTsKLS0gCjEuNy45
</data>
<flag name="review"
          id="130059"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>