<?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>27546</bug_id>
          
          <creation_ts>2009-07-22 10:10:55 -0700</creation_ts>
          <short_desc>[GTK] context menu overriding API is very limited</short_desc>
          <delta_ts>2010-01-07 12:55:15 -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>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gustavo Noronha (kov)">gustavo</reporter>
          <assigned_to name="Christian Dywan">christian</assigned_to>
          <cc>christian</cc>
    
    <cc>eric</cc>
    
    <cc>jmalonzo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>133795</commentid>
    <comment_count>0</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-07-22 10:10:55 -0700</bug_when>
    <thetext>Currently the API that allows applications to override WebKit&apos;s context menu is a &apos;populate-popup&apos; signal that gives applications a GtkMenu. That is not nearly enough information to decide what should go in the menu, and also lacks proper ways to override only some parts of the menu.

What is needed is an API that tells the application what exactly was right-clicked, and allows the application to add/remove entries as it sees fit, in a sane way. That could be achieved by using GtkUIManager, so a good first step is to port the current context menu handling to use GtkUIManager.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133796</commentid>
    <comment_count>1</comment_count>
      <attachid>33267</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-07-22 10:12:54 -0700</bug_when>
    <thetext>Created attachment 33267
Rewrite of context menu handling using GtkUIManager

 WebCore/platform/ContextMenu.h                     |    6 +
 WebCore/platform/ContextMenuItem.h                 |    9 +-
 WebCore/platform/PlatformMenuDescription.h         |    4 +-
 WebCore/platform/gtk/ContextMenuGtk.cpp            |  142 +++++++++++-
 WebCore/platform/gtk/ContextMenuItemGtk.cpp        |  241 +++++++++++++-------
 WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp |  112 +---------
 WebKit/gtk/webkit/webkitwebview.cpp                |   83 +++++++-
 7 files changed, 385 insertions(+), 212 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133798</commentid>
    <comment_count>2</comment_count>
      <attachid>33267</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-07-22 10:16:35 -0700</bug_when>
    <thetext>Comment on attachment 33267
Rewrite of context menu handling using GtkUIManager

This is very much work in progress, but seems to already provide 99%-identical behavior. I tested Midori which does various magics with the current menu, and I get this, when I right click an image, although the menus seem to be working OK:

(midori:636): Gtk-CRITICAL **: gtk_label_set_label: assertion `GTK_IS_LABEL (label)&apos; failed

I am posting the patch to gather comments on the implementation, and would like to read opinions on what kind of API we would provide here. I guess an object which passes along information from the HitTest result object, along with the GtkUIManager, and what else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136768</commentid>
    <comment_count>3</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-08-03 13:52:09 -0700</bug_when>
    <thetext>There&apos;s a condition which triggers this warning in Midori in the current code, because it&apos;s so hard to customize the menu. You can safely ignore it.

I only had a quick look yet, but this is looking interesting. I will read the code more closely in a bit.

First thoughts: Did you consider an array of GtkActionEntry instead of the case statement? It would have the benefit that we can define labels, action names and stock ID&apos;s in the same place.

And the gtk_widget_show_all before swhowing the menu looks wrong, applications should be able to rely on the visibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142766</commentid>
    <comment_count>4</comment_count>
      <attachid>38589</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-08-25 20:07:07 -0700</bug_when>
    <thetext>Created attachment 38589
Second draft

A bit more, trying out possible APIs. A WebTargetInfo object appears =P. Epiphany patch using this incoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142767</commentid>
    <comment_count>5</comment_count>
      <attachid>38590</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-08-25 20:08:40 -0700</bug_when>
    <thetext>Created attachment 38590
Epiphany patch demonstrating API

Hrm. It half-works, even.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144545</commentid>
    <comment_count>6</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-09-03 10:51:54 -0700</bug_when>
    <thetext>Taking notes of what I notice when reading the patch:

- Can we list somewhere what  WEBKIT_WEB_TARGET_INFO_CONTEXT_MEDIA can be?

- WEBKIT_WEB_TARGET_INFO_CONTEXT_EDITABLE
We probably need to store the text in the target info?

- WEBKIT_WEB_TARGET_INFO_CONTEXT_SELECTION
We have no &quot;public&quot; way to obtain the selection. webkit_web_view_get_selected_text is there but semi-private.

- You&apos;re not freeing all strings in webkit_web_target_info_finalize

- I wonder if &quot;WebKitCopyLinkToClipboard&quot; is necessary or redundant. Can this conflict in practical use?

+    GtkAction* gtkAction = ContextMenuItem::createNativeMenuItem(platformItem);
+    if (!gtkAction) {
+        g_warning(&quot;Item not added: %s&quot;, platformItem.title.utf8().data());
+        return;
+    }

I think this should say &quot;Failed to create menu item for action: %s&quot;.

The example is nice. I should try to rewrite the menu in Midori and see how it goes, also regarding hiding and adding actions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144547</commentid>
    <comment_count>7</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-09-03 11:18:36 -0700</bug_when>
    <thetext>I wonder if we should expose the ID of the underlying element, so it could be used with javascript, or at some point GDOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147770</commentid>
    <comment_count>8</comment_count>
      <attachid>39687</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-09-17 02:54:34 -0700</bug_when>
    <thetext>Created attachment 39687
targetinfo.patch

In the spirit of doing this piece by piece, I&apos;ve split the WebKitWebTargetInfo stuff into a new patch. I&apos;ve removed the &apos;Web&apos; from its name, since I believe that&apos;s only useful when there can be confusions arising from too generic names (like &apos;View&apos;), but that should not happen here. It also comes with other random fixes/cleanups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147774</commentid>
    <comment_count>9</comment_count>
      <attachid>39689</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-09-17 02:56:22 -0700</bug_when>
    <thetext>Created attachment 39689
gettargetinfo.patch

And on top of the previous patch, a small API addition to get the target info for a point in the view. This is needed in Epiphany in multiple places where we want to decide what to do depending on whether the user clicked on an image, input, nothing, etc. I tried to do some tests for it, but it&apos;s pretty difficult to go beyond the most basic stuff (small explanation in the test code itself).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147788</commentid>
    <comment_count>10</comment_count>
      <attachid>39691</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-09-17 06:18:17 -0700</bug_when>
    <thetext>Created attachment 39691
gettargetinfo.patch

Small fix, we have to use the focused frame if there&apos;s one to do the hit test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147795</commentid>
    <comment_count>11</comment_count>
      <attachid>39691</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-09-17 07:45:20 -0700</bug_when>
    <thetext>Comment on attachment 39691
gettargetinfo.patch

&gt; +typedef struct {
&gt; +  char *data;

Misplaced *

&gt; +} TargetInfoFixture;;

Double ;

&gt; +WEBKIT_API WebKitTargetInfo*
&gt; +webkit_web_view_get_target_info                 (WebKitWebView        *webView,
&gt; +                                                 double                x,
&gt; +                                                 double                y);

I think we should use gdouble here and at the function documentation, for consistency? Other than that, you got my 1/2 r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147796</commentid>
    <comment_count>12</comment_count>
      <attachid>39687</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-09-17 07:47:12 -0700</bug_when>
    <thetext>Comment on attachment 39687
targetinfo.patch

This looks good to me. Adding more documentation regarding what a &apos;media&apos; is, as suggested by kalikiana would be good. My 1/2 r+ with that doc improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147809</commentid>
    <comment_count>13</comment_count>
      <attachid>39696</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-09-17 08:56:33 -0700</bug_when>
    <thetext>Created attachment 39696
gettargetinfo.patch

So, the previous gettargetinfo patch was also wrong, we need to be more careful with the coordinate transformations. I&apos;m now using the same code EventHandler uses, which obviously was the best idea to begin with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148043</commentid>
    <comment_count>14</comment_count>
      <attachid>39687</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-09-18 04:42:07 -0700</bug_when>
    <thetext>Comment on attachment 39687
targetinfo.patch

+1. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148044</commentid>
    <comment_count>15</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-09-18 04:49:16 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=39696) [details]
&gt; gettargetinfo.patch
&gt; 
&gt; So, the previous gettargetinfo patch was also wrong, we need to be more careful
&gt; with the coordinate transformations. I&apos;m now using the same code EventHandler
&gt; uses, which obviously was the best idea to begin with.

We have WebKitWebViewTargetInfo as well. How are we going to distinguish these two?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148045</commentid>
    <comment_count>16</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-09-18 04:52:27 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; Created an attachment (id=39696) [details] [details]
&gt; &gt; gettargetinfo.patch
&gt; &gt; 
&gt; &gt; So, the previous gettargetinfo patch was also wrong, we need to be more careful
&gt; &gt; with the coordinate transformations. I&apos;m now using the same code EventHandler
&gt; &gt; uses, which obviously was the best idea to begin with.
&gt; 
&gt; We have WebKitWebViewTargetInfo as well. How are we going to distinguish these
&gt; two?

You are right (and I blame kov for picking WebKitWebTargetInfo in the first place!). What about WebKitEventContext?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148069</commentid>
    <comment_count>17</comment_count>
      <attachid>39696</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-09-18 06:56:42 -0700</bug_when>
    <thetext>Comment on attachment 39696
gettargetinfo.patch

r=me with the naming changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148071</commentid>
    <comment_count>18</comment_count>
      <attachid>39687</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-09-18 06:57:11 -0700</bug_when>
    <thetext>Comment on attachment 39687
targetinfo.patch

I committed this in r48505 renaming the object to WebKitHitTestResult, since it&apos;s just a wrapper for the core object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148072</commentid>
    <comment_count>19</comment_count>
      <attachid>39696</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-09-18 06:57:50 -0700</bug_when>
    <thetext>Comment on attachment 39696
gettargetinfo.patch

I committed this with the renaming changes in r48506.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148487</commentid>
    <comment_count>20</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-09-19 05:17:46 -0700</bug_when>
    <thetext>I tried the new hit test result in Midori. So I can reliably identify editables, images and videos without guessing from context menu items, so I ended up replacing the stock menu except for the editable case.

The editable menu can&apos;t be replicated because there is font, spelling and input method/ unicode character items. And thus I&apos;d like to improve those a bit:
- Font is always there, disabled. I suggested it&apos;s omitted if not used.
- Spelling is always there, even if disabled. I suggest to omit it if spelling is disabled.
- Web Search is there, non-functional. Imho it looks out of place and makes the menu look cluttered. I think we should remove it there (and separately think about how to make the selection menu Web Search useful).

I am left unsure what the DOCUMENT flag is good for, it seems to be set always, from a bit of testing. I would have assumed &quot;document, as in not a link, image or anything interactive&quot; but that&apos;s not what it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148584</commentid>
    <comment_count>21</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-09-20 17:26:02 -0700</bug_when>
    <thetext>It is also impossible to replicate the Inspect page menu item. Time to resolve bug 22551.

And there is no way to replicate Open frame in new Tab/ Window. I think we need a &quot;frame&quot; property in WebKitHitTestResult so we know what frame is under the mouse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150339</commentid>
    <comment_count>22</comment_count>
      <attachid>40181</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-09-26 15:13:31 -0700</bug_when>
    <thetext>Created attachment 40181
Conditionalize font menu item, omit spell check

This patch changes the context menu in this way:

- &quot;Web Search&quot; is never shown in editables.
- &quot;Font&quot; is only shown if there is rich text editing.
- &quot;Spell checking&quot; is never shown.
I originally thought of conditionalizing it but now I think it&apos;s not useful since it basically only provides options that belong in a Preferences dialogue. At least that&apos;s what I found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150350</commentid>
    <comment_count>23</comment_count>
      <attachid>40186</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-09-26 17:07:59 -0700</bug_when>
    <thetext>Created attachment 40186
Add &quot;frame&quot; property to HitTestResult

This change adds a &quot;frame&quot; property to WebKitHitTestResult. Note that this is *not* the same as the targetFrame() of WebCore::HitTestResult.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150468</commentid>
    <comment_count>24</comment_count>
      <attachid>40186</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-09-28 01:07:15 -0700</bug_when>
    <thetext>Comment on attachment 40186
Add &quot;frame&quot; property to HitTestResult

Can you add a simple test for this to the unit testing? Also, in the doc &apos;frame&apos; should be #WebKitWebFrame I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152149</commentid>
    <comment_count>25</comment_count>
      <attachid>40181</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-10-04 03:46:35 -0700</bug_when>
    <thetext>Comment on attachment 40181
Conditionalize font menu item, omit spell check

&gt;  #endif
&gt; +#if !PLATFORM(GTK)
&gt;              appendItem(SearchWebItem);
&gt;              appendItem(*separatorItem());
&gt; -     
&gt; +#endif

I think this makes sense, since we don&apos;t have an implementation for that, and I don&apos;t see it happening in the near future.

&gt;          if (!inPasswordField) {
&gt; +#if PLATFORM(GTK)
&gt; +            if (frame-&gt;editor()-&gt;canEditRichly()) {
&gt; +                appendItem(*separatorItem());
&gt; +                ContextMenuItem  FontMenuItem(SubmenuType, ContextMenuItemTagFontMenu, 
&gt; +                    contextMenuItemTagFontMenu());
&gt; +                createAndAppendFontSubMenu(m_hitTestResult, FontMenuItem);
&gt; +                appendItem(FontMenuItem);
&gt; +            }
&gt; +#else


Conditionally displaying the font menu also sounds good, but I am not so sure about the spelling check one. What you&apos;re saying is that this UI should be the browser&apos;s responsibility, alone? I&apos;d like to hear what Xan thinks here before giving you r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152177</commentid>
    <comment_count>26</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-10-04 10:35:52 -0700</bug_when>
    <thetext>&gt; Conditionally displaying the font menu also sounds good, but I am not so
&gt; sure about the spelling check one. What you&apos;re saying is that this UI should
&gt; be the browser&apos;s responsibility, alone

Yes. I played around with the spelling items and at least to me they seemed redundant. Midori has a preference to enable or disable spell check, and a way to choose the languages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154458</commentid>
    <comment_count>27</comment_count>
      <attachid>40181</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-13 15:09:12 -0700</bug_when>
    <thetext>Comment on attachment 40181
Conditionalize font menu item, omit spell check

No ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154498</commentid>
    <comment_count>28</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-10-13 17:19:34 -0700</bug_when>
    <thetext>&quot;No ChangeLog&quot; doesn&apos;t feel like the result of a diligent review. I hope Xan reads the bug change notification in any case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173118</commentid>
    <comment_count>29</comment_count>
      <attachid>45144</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-12-18 04:39:20 -0800</bug_when>
    <thetext>Created attachment 45144
Omit the SearchWeb item in the GTK+ port

This patch only removes the Search Web item.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173119</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-18 04:42:02 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45144 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173125</commentid>
    <comment_count>31</comment_count>
      <attachid>45144</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-12-18 05:27:23 -0800</bug_when>
    <thetext>Comment on attachment 45144
Omit the SearchWeb item in the GTK+ port

It&apos;s all wrong (the bug title and URL). Otherwise fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173126</commentid>
    <comment_count>32</comment_count>
      <attachid>45145</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-12-18 05:31:26 -0800</bug_when>
    <thetext>Created attachment 45145
Omit the SearchWeb item in the GTK+ port #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173127</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-18 05:32:49 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45145 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173131</commentid>
    <comment_count>34</comment_count>
      <attachid>45146</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-12-18 05:52:20 -0800</bug_when>
    <thetext>Created attachment 45146
Omit the SearchWeb item in the GTK+ port #3

Third iteration, to actually omit both items. And I made sure the SearchWebItem is not defined for Gtk so it will fail compile if the code is changed in the future to use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173132</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-18 05:53:21 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45146 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173264</commentid>
    <comment_count>36</comment_count>
      <attachid>45146</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-12-18 12:22:01 -0800</bug_when>
    <thetext>Comment on attachment 45146
Omit the SearchWeb item in the GTK+ port #3

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173273</commentid>
    <comment_count>37</comment_count>
      <attachid>45146</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-12-18 12:43:59 -0800</bug_when>
    <thetext>Comment on attachment 45146
Omit the SearchWeb item in the GTK+ port #3

Committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173294</commentid>
    <comment_count>38</comment_count>
      <attachid>45177</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-12-18 13:17:36 -0800</bug_when>
    <thetext>Created attachment 45177
Only show the Font menu item in rich text areas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173299</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-18 13:20:11 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45177 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173310</commentid>
    <comment_count>40</comment_count>
      <attachid>45182</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-12-18 13:45:05 -0800</bug_when>
    <thetext>Created attachment 45182
Don&apos;t show spell check menu items in the GTK+ port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173315</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-18 13:46:54 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45182 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175216</commentid>
    <comment_count>42</comment_count>
      <attachid>45177</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-12-28 06:15:30 -0800</bug_when>
    <thetext>Comment on attachment 45177
Only show the Font menu item in rich text areas

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175409</commentid>
    <comment_count>43</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-28 22:38:02 -0800</bug_when>
    <thetext>Attachment 45182 was posted by a committer and has review+, assigning to Christian Dywan for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176235</commentid>
    <comment_count>44</comment_count>
      <attachid>45182</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-12-31 12:00:09 -0800</bug_when>
    <thetext>Comment on attachment 45182
Don&apos;t show spell check menu items in the GTK+ port

2009-12-31  Christian Dywan  &lt;christian@twotoasts.de&gt;

        Reviewed by Gustavo Noronha Silva.

        [GTK] context menu overriding API is very limited
        https://bugs.webkit.org/show_bug.cgi?id=27546

        Don&apos;t show spell checking menu items in text areas in the GTK+ port.

        * platform/ContextMenu.cpp:
        (WebCore::ContextMenu::populate):</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176236</commentid>
    <comment_count>45</comment_count>
      <attachid>45177</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-12-31 12:04:18 -0800</bug_when>
    <thetext>Comment on attachment 45177
Only show the Font menu item in rich text areas

2009-12-31  Christian Dywan  &lt;christian@twotoasts.de&gt;

        Reviewed by Gustavo Noronha Silva.

        [GTK] context menu overriding API is very limited
        https://bugs.webkit.org/show_bug.cgi?id=27546

        Only show font menu items in rich text areas in the GTK+ port.

        * platform/ContextMenu.cpp:
        (WebCore::ContextMenu::populate):</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178029</commentid>
    <comment_count>46</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-06 23:35:43 -0800</bug_when>
    <thetext>Should this still be open?  It looks like all the reviewed patches have been landed.

If there is more work to do here, I suggest we open a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178330</commentid>
    <comment_count>47</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-01-07 12:55:15 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; Should this still be open?  It looks like all the reviewed patches have been
&gt; landed.
&gt; 
&gt; If there is more work to do here, I suggest we open a new bug.

I think that&apos;s a good idea.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33267</attachid>
            <date>2009-07-22 10:12:54 -0700</date>
            <delta_ts>2009-07-22 10:16:35 -0700</delta_ts>
            <desc>Rewrite of context menu handling using GtkUIManager</desc>
            <filename>Rewrite-of-context-menu-handling-using-GtkUIManager.patch</filename>
            <type>text/plain</type>
            <size>31543</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZDliNDY1OWRiZjBlNTMyN2FlNDFmMjljNmUwOGYzNzdkZTk3ZGM4YwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVu
dS5oCmluZGV4IGRjNDg0YjIuLmI5OWJjMTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Q29udGV4dE1lbnUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgKQEAgLTM2
LDYgKzM2LDkgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZWxpZiBQTEFURk9STShR
VCkKICNpbmNsdWRlIDxRTWVudT4KKyNlbGlmIFBMQVRGT1JNKEdUSykKK3R5cGVkZWYgc3RydWN0
IF9HdGtVSU1hbmFnZXIgR3RrVUlNYW5hZ2VyOwordHlwZWRlZiBzdHJ1Y3QgX0d0a0FjdGlvbkdy
b3VwIEd0a0FjdGlvbkdyb3VwOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgx
LDYgKzg0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2Vsc2UKICAgICAgICAgUGxhdGZvcm1N
ZW51RGVzY3JpcHRpb24gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOwogI2VuZGlmCisjaWYgUExBVEZP
Uk0oR1RLKQorICAgICAgICBHdGtBY3Rpb25Hcm91cCogbV9hY3Rpb25Hcm91cDsKKyNlbmRpZgog
ICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVt
LmggYi9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCmluZGV4IDI5MTI1OGQuLmEx
YmNiNWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaApAQCAtNDEsNyArNDEsOCBAQCBj
bGFzcyBOU01lbnVJdGVtOwogI2VsaWYgUExBVEZPUk0oV0lOKQogdHlwZWRlZiBzdHJ1Y3QgdGFn
TUVOVUlURU1JTkZPVyogTFBNRU5VSVRFTUlORk87CiAjZWxpZiBQTEFURk9STShHVEspCi10eXBl
ZGVmIHN0cnVjdCBfR3RrTWVudUl0ZW0gR3RrTWVudUl0ZW07Cit0eXBlZGVmIHN0cnVjdCBfR3Rr
QWN0aW9uIEd0a0FjdGlvbjsKK3R5cGVkZWYgc3RydWN0IF9HdGtVSU1hbmFnZXIgR3RrVUlNYW5h
Z2VyOwogI2VsaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8UUFjdGlvbj4KICNlbGlmIFBMQVRG
T1JNKFdYKQpAQCAtMTgyLDcgKzE4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Q29udGV4dE1lbnVJdGVtVHlwZSB0eXBlOwogICAgICAgICBDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b247CiAgICAgICAgIFN0cmluZyB0aXRsZTsKLSAgICAgICAgR3RrTWVudSogc3ViTWVudTsKKyAg
ICAgICAgR3RrVUlNYW5hZ2VyKiBzdWJNZW51OwogICAgICAgICBib29sIGNoZWNrZWQ7CiAgICAg
ICAgIGJvb2wgZW5hYmxlZDsKICAgICB9OwpAQCAtMjEyLDcgKzIxMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgQ29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51KiBzdWJNZW51ID0g
MCk7CiAgICAgICAgIENvbnRleHRNZW51SXRlbShDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUsIENv
bnRleHRNZW51QWN0aW9uIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgQ29udGV4dE1lbnUq
IHN1Yk1lbnUgPSAwKTsKICNpZiBQTEFURk9STShHVEspCi0gICAgICAgIENvbnRleHRNZW51SXRl
bShHdGtNZW51SXRlbSopOworICAgICAgICBDb250ZXh0TWVudUl0ZW0oR3RrQWN0aW9uKik7CiAj
ZW5kaWYKICAgICAgICAgfkNvbnRleHRNZW51SXRlbSgpOwogCkBAIC0yMzcsNyArMjM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEga2V5
Ym9hcmQgYWNjZWxlcmF0b3IgaGVyZT8KICNpZiBQTEFURk9STShHVEspCi0gICAgICAgIHN0YXRp
YyBHdGtNZW51SXRlbSogY3JlYXRlTmF0aXZlTWVudUl0ZW0oY29uc3QgUGxhdGZvcm1NZW51SXRl
bURlc2NyaXB0aW9uJik7CisgICAgICAgIHN0YXRpYyBHdGtBY3Rpb24qIGNyZWF0ZU5hdGl2ZU1l
bnVJdGVtKGNvbnN0IFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbiYpOwogI2VuZGlmCiAKICAg
ICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNj
cmlwdGlvbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oCmlu
ZGV4IDY1NTM3ZWIuLjNmZWZjMjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1NZW51RGVzY3JpcHRpb24uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVudURl
c2NyaXB0aW9uLmgKQEAgLTM3LDcgKzM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSE1FTlVfXyogSE1F
TlU7CiAjZWxpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxxbGlzdC5oPgogI2VsaWYgUExBVEZP
Uk0oR1RLKQotdHlwZWRlZiBzdHJ1Y3QgX0d0a01lbnUgR3RrTWVudTsKK3R5cGVkZWYgc3RydWN0
IF9HdGtVSU1hbmFnZXIgR3RrVUlNYW5hZ2VyOwogI2VsaWYgUExBVEZPUk0oV1gpCiBjbGFzcyB3
eE1lbnU7CiAjZW5kaWYKQEAgLTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIENvbnRleHRNZW51SXRlbTsKICAgICB0eXBlZGVmIGNvbnN0IFFMaXN0PENvbnRleHRN
ZW51SXRlbT4qIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uOwogI2VsaWYgUExBVEZPUk0oR1RLKQot
ICAgIHR5cGVkZWYgR3RrTWVudSogUGxhdGZvcm1NZW51RGVzY3JpcHRpb247CisgICAgdHlwZWRl
ZiBHdGtVSU1hbmFnZXIqIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uOwogI2VsaWYgUExBVEZPUk0o
V1gpCiAgICAgdHlwZWRlZiB3eE1lbnUqIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uOwogI2Vsc2UK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNwcAppbmRleCAyMTBjZmE2Li43ZjZh
NmUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUd0ay5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVHdGsuY3BwCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgQ29sbGFib3JhIEx0ZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKQEAgLTIwLDMyICsyMSw4OSBAQAogI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCiAKICNp
bmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisj
aW5jbHVkZSAiR093blB0ci5oIgogCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKKyNkZWZpbmUgUEFUSF9PTl9VSV9NQU5BR0VSICIvdWkvcG9wdXAvaXRlbS1o
b2xkZXIiCisKK3N0YXRpYyBjb25zdCBjaGFyKiBtZW51VUlEZXNjcmlwdGlvbiA9CisiPHVpPlxu
IgorIiAgPHBvcHVwPlxuIgorIiAgICA8cGxhY2Vob2xkZXIgbmFtZT0naXRlbS1ob2xkZXInIC8+
XG4iCisiICA8L3BvcHVwPlxuIgorIjwvdWk+IjsKKwogLy8gVE9ETzogcmVmLWNvdW50aW5nIGNv
cnJlY3RuZXNzIGNoZWNraW5nLgogLy8gU2VlIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTE1CiAKLXN0YXRpYyB2b2lkIG1lbnVJdGVtQWN0aXZhdGVkKEd0a01lbnVJ
dGVtKiBpdGVtLCBDb250ZXh0TWVudUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgdm9p
ZCBtZW51SXRlbUFjdGl2YXRlZChHdGtBY3Rpb24qIGFjdGlvbiwgQ29udGV4dE1lbnVDb250cm9s
bGVyKiBjb250cm9sbGVyKQogewotICAgIENvbnRleHRNZW51SXRlbSBjb250ZXh0SXRlbShpdGVt
KTsKKyAgICBDb250ZXh0TWVudUl0ZW0gY29udGV4dEl0ZW0oYWN0aW9uKTsKICAgICBjb250cm9s
bGVyLT5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZCgmY29udGV4dEl0ZW0pOwogfQogCiBDb250ZXh0
TWVudTo6Q29udGV4dE1lbnUoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIDogbV9o
aXRUZXN0UmVzdWx0KHJlc3VsdCkKIHsKLSAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24gPSBHVEtf
TUVOVShndGtfbWVudV9uZXcoKSk7CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gZ3RrX3Vp
X21hbmFnZXJfbmV3KCk7CisKKyAgICBHRXJyb3IqIGVycm9yID0gMDsKKyAgICBndGtfdWlfbWFu
YWdlcl9hZGRfdWlfZnJvbV9zdHJpbmcobV9wbGF0Zm9ybURlc2NyaXB0aW9uLCBtZW51VUlEZXNj
cmlwdGlvbiwgLTEsICZlcnJvcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIGdfY3JpdGlj
YWwoIkZhaWxlZCB0byBnZW5lcmF0ZSBtZW51IGZyb20gVUkgZGVzY3JpcHRpb246ICVzIiwgZXJy
b3ItPm1lc3NhZ2UpOwogCi0gICAgZ19vYmplY3RfcmVmX3NpbmsoR19PQkpFQ1QobV9wbGF0Zm9y
bURlc2NyaXB0aW9uKSk7CisgICAgICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CisKKyAgICAgICAg
Z19vYmplY3RfdW5yZWYobV9wbGF0Zm9ybURlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9wbGF0Zm9y
bURlc2NyaXB0aW9uID0gMDsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9hY3Rp
b25Hcm91cCA9IGd0a19hY3Rpb25fZ3JvdXBfbmV3KCJ3ZWJraXQtcG9wdXAtbWVudSIpOworICAg
IGd0a191aV9tYW5hZ2VyX2luc2VydF9hY3Rpb25fZ3JvdXAobV9wbGF0Zm9ybURlc2NyaXB0aW9u
LCBtX2FjdGlvbkdyb3VwLCAwKTsKIH0KIAogQ29udGV4dE1lbnU6On5Db250ZXh0TWVudSgpCiB7
CiAgICAgaWYgKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikKICAgICAgICAgZ19vYmplY3RfdW5yZWYo
bV9wbGF0Zm9ybURlc2NyaXB0aW9uKTsKKworICAgIGlmIChtX2FjdGlvbkdyb3VwKQorICAgICAg
ICBnX29iamVjdF91bnJlZihtX2FjdGlvbkdyb3VwKTsKK30KKworc3RhdGljIGNoYXIqIGdldFN1
Yk1lbnVVSURlZmluaXRpb25Gcm9tTWFuYWdlcihHdGtVSU1hbmFnZXIqIG1hbmFnZXIsIGNvbnN0
IGNoYXIqIGFjdGlvbk5hbWUpCit7CisgICAgY2hhciogZXhpc3RpbmdVSSA9IGd0a191aV9tYW5h
Z2VyX2dldF91aShtYW5hZ2VyKTsKKworICAgIGNoYXIqIHN0YXJ0ID0gZ19zdHJzdHJfbGVuKGV4
aXN0aW5nVUksIC0xLCAiPG1lbnVpdGVtIik7CisgICAgaWYgKCFzdGFydCkKKyAgICAgICAgcmV0
dXJuIGdfc3RyZHVwKCI8dWk+PC91aT4iKTsKKworICAgIGNoYXIqIGVuZCA9IGdfc3RycnN0cihz
dGFydCwgIjwvcGxhY2Vob2xkZXI+Iik7CisgICAgaWYgKCFlbmQpCisgICAgICAgIHJldHVybiBn
X3N0cmR1cCgiPHVpPjwvdWk+Iik7CisKKyAgICBnb2Zmc2V0IGxlbmd0aCA9IGVuZCAtIHN0YXJ0
OworCisgICAgY2hhciogcmVzdWx0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGdfbWFsbG9jMChsZW5n
dGggKyAxKSk7CisgICAgbWVtY3B5KHJlc3VsdCwgc3RhcnQsIGxlbmd0aCk7CisKKyAgICBjaGFy
KiBVSURlZmluaXRpb24gPSBnX3N0cmR1cF9wcmludGYoIjx1aT5cbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxwb3B1cD5cbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIjxwbGFjZWhvbGRlciBuYW1lPSdpdGVtLWhvbGRlcic+
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bWVudSBuYW1l
PSclcycgYWN0aW9uPSclcyc+JXM8L21lbnU+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICI8L3BsYWNlaG9sZGVyPlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiPC9wb3B1cD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIjwvdWk+IiwgYWN0aW9uTmFtZSwgYWN0aW9uTmFtZSwgcmVzdWx0
KTsKKyAgICBnX2ZyZWUocmVzdWx0KTsKKworICAgIHJldHVybiBVSURlZmluaXRpb247CiB9CiAK
IHZvaWQgQ29udGV4dE1lbnU6OmFwcGVuZEl0ZW0oQ29udGV4dE1lbnVJdGVtJiBpdGVtKQpAQCAt
NTQsMTQgKzExMiw3NiBAQCB2b2lkIENvbnRleHRNZW51OjphcHBlbmRJdGVtKENvbnRleHRNZW51
SXRlbSYgaXRlbSkKICAgICBjaGVja09yRW5hYmxlSWZOZWVkZWQoaXRlbSk7CiAKICAgICBDb250
ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSBpdGVtLnR5cGUoKTsKLSAgICBHdGtNZW51SXRlbSogcGxh
dGZvcm1JdGVtID0gQ29udGV4dE1lbnVJdGVtOjpjcmVhdGVOYXRpdmVNZW51SXRlbShpdGVtLnJl
bGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9uKCkpOwotICAgIEFTU0VSVChwbGF0Zm9ybUl0ZW0pOwot
Ci0gICAgaWYgKHR5cGUgPT0gQWN0aW9uVHlwZSB8fCB0eXBlID09IENoZWNrYWJsZUFjdGlvblR5
cGUpCi0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QocGxhdGZvcm1JdGVtLCAiYWN0aXZhdGUiLCBH
X0NBTExCQUNLKG1lbnVJdGVtQWN0aXZhdGVkKSwgY29udHJvbGxlcigpKTsKIAotICAgIGd0a19t
ZW51X3NoZWxsX2FwcGVuZChHVEtfTUVOVV9TSEVMTChtX3BsYXRmb3JtRGVzY3JpcHRpb24pLCBH
VEtfV0lER0VUKHBsYXRmb3JtSXRlbSkpOwotICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VU
KHBsYXRmb3JtSXRlbSkpOworICAgIGlmICh0eXBlID09IFN1Ym1lbnVUeXBlKSB7CisgICAgICAg
IEd0a1VJTWFuYWdlciogc3ViTWVudSA9IGl0ZW0ucGxhdGZvcm1TdWJNZW51KCk7CisgICAgICAg
IGd1aW50IG1lcmdlSUQgPSBndGtfdWlfbWFuYWdlcl9uZXdfbWVyZ2VfaWQobV9wbGF0Zm9ybURl
c2NyaXB0aW9uKTsKKyAgICAgICAgY2hhciogYWN0aW9uTmFtZSA9IGdfc3RyZHVwX3ByaW50Zigi
V2ViS2l0U3ViTWVudSVkIiwgbWVyZ2VJRCk7CisKKyAgICAgICAgLy8gSWYgd2UgZG8gaGF2ZSBh
IHN1Ym1lbnUsIHdlIG5lZWQgdG8gcGFzcyBhbG9uZyB0aGUgYWN0aW9uCisgICAgICAgIC8vIGdy
b3VwcywgYnV0IHdlIGFsc28gbmVlZCB0byByZXdvcmsgdGhlIFVJIGRlZmluaXRpb24gdG8gZml0
CisgICAgICAgIC8vIHRoZSBuZWVkOyBHdGtVSU1hbmFnZXIgY291bGQgYmUgYmV0dGVyLgorICAg
ICAgICBjaGFyKiBVSURlZmluaXRpb247CisgICAgICAgIGlmIChzdWJNZW51KSB7CisgICAgICAg
ICAgICBVSURlZmluaXRpb24gPSBnZXRTdWJNZW51VUlEZWZpbml0aW9uRnJvbU1hbmFnZXIoc3Vi
TWVudSwgYWN0aW9uTmFtZSk7CisKKyAgICAgICAgICAgIC8vIFRoaXMgbG9va3MgbWVzc3ksIGJ1
dCB0aGlzIGlzIHRoZSBlYXNpZXN0IHdheSBJIGZvdW5kCisgICAgICAgICAgICAvLyBvZiBsb2Fk
aW5nIHRoZSBhY3Rpb25zIHdpdGhvdXQgdGhlIG5lZWQgdG8gZ2VuZXJhdGUKKyAgICAgICAgICAg
IC8vIG5hbWVzIGZvciBlYWNoIG9mIHRoZSBzdWIgbWVudXMgYWN0aW9uIGdyb3VwcyB1cG9uCisg
ICAgICAgICAgICAvLyBjcmVhdGlvbi4KKyAgICAgICAgICAgIEdMaXN0KiBzdWJNZW51QWN0aW9u
R3JvdXBzID0gZ3RrX3VpX21hbmFnZXJfZ2V0X2FjdGlvbl9ncm91cHMoc3ViTWVudSk7CisgICAg
ICAgICAgICBmb3IgKDsgc3ViTWVudUFjdGlvbkdyb3VwcyAhPSAwOyBzdWJNZW51QWN0aW9uR3Jv
dXBzID0gc3ViTWVudUFjdGlvbkdyb3Vwcy0+bmV4dCkgeworICAgICAgICAgICAgICAgIEd0a0Fj
dGlvbkdyb3VwKiBzdWJNZW51QWN0aW9uR3JvdXAgPSBzdGF0aWNfY2FzdDxHdGtBY3Rpb25Hcm91
cCo+KHN1Yk1lbnVBY3Rpb25Hcm91cHMtPmRhdGEpOworICAgICAgICAgICAgICAgIEdMaXN0KiBh
Y3Rpb25zID0gZ3RrX2FjdGlvbl9ncm91cF9saXN0X2FjdGlvbnMoc3ViTWVudUFjdGlvbkdyb3Vw
KTsKKworICAgICAgICAgICAgICAgIGZvciAoR0xpc3QqIG5vZGUgPSBhY3Rpb25zOyBub2RlICE9
IDA7IG5vZGUgPSBub2RlLT5uZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIEd0a0FjdGlvbiog
c3ViTWVudUFjdGlvbiA9IHN0YXRpY19jYXN0PEd0a0FjdGlvbio+KG5vZGUtPmRhdGEpOworICAg
ICAgICAgICAgICAgICAgICBndGtfYWN0aW9uX2dyb3VwX3JlbW92ZV9hY3Rpb24oc3ViTWVudUFj
dGlvbkdyb3VwLCBzdWJNZW51QWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgZ3RrX2FjdGlv
bl9ncm91cF9hZGRfYWN0aW9uKG1fYWN0aW9uR3JvdXAsIHN1Yk1lbnVBY3Rpb24pOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGdfbGlzdF9mcmVlKGFjdGlvbnMpOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFVJRGVmaW5pdGlvbiA9IGdf
c3RyZHVwX3ByaW50ZigiPHVpPjxwb3B1cD48bWVudSBuYW1lPSclcycgYWN0aW9uPSclcycvPjwv
cG9wdXA+PC91aT4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFjdGlvbk5hbWUsIGFjdGlvbk5hbWUpOworCisgICAgICAgIEd0a0FjdGlvbiogZ3RrQWN0aW9u
ID0gZ3RrX2FjdGlvbl9uZXcoYWN0aW9uTmFtZSwgaXRlbS50aXRsZSgpLnV0ZjgoKS5kYXRhKCks
IDAsIDApOworICAgICAgICBndGtfYWN0aW9uX2dyb3VwX2FkZF9hY3Rpb24obV9hY3Rpb25Hcm91
cCwgZ3RrQWN0aW9uKTsKKworICAgICAgICBHRXJyb3IqIGVycm9yID0gMDsKKyAgICAgICAgZ3Rr
X3VpX21hbmFnZXJfYWRkX3VpX2Zyb21fc3RyaW5nKG1fcGxhdGZvcm1EZXNjcmlwdGlvbiwgVUlE
ZWZpbml0aW9uLCAtMSwgJmVycm9yKTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAg
ICBnX2NyaXRpY2FsKCJFcnJvciBhZGRpbmcgVUkgZGVmaW5pdGlvbjogJXMiLCBlcnJvci0+bWVz
c2FnZSk7CisgICAgICAgICAgICBnX2Vycm9yX2ZyZWUoZXJyb3IpOworICAgICAgICB9CisKKyAg
ICAgICAgZ19mcmVlKGFjdGlvbk5hbWUpOworICAgICAgICBnX2ZyZWUoVUlEZWZpbml0aW9uKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh0eXBlID09IFNlcGFyYXRvclR5cGUp
IHsKKyAgICAgICAgZ3RrX3VpX21hbmFnZXJfYWRkX3VpKG1fcGxhdGZvcm1EZXNjcmlwdGlvbiwg
Z3RrX3VpX21hbmFnZXJfbmV3X21lcmdlX2lkKG1fcGxhdGZvcm1EZXNjcmlwdGlvbiksIFBBVEhf
T05fVUlfTUFOQUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIEdUS19V
SV9NQU5BR0VSX1NFUEFSQVRPUiwgRkFMU0UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIHBsYXRmb3JtSXRlbSA9IGl0ZW0ucmVsZWFz
ZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsKKyAgICBHdGtBY3Rpb24qIGd0a0FjdGlvbiA9IENvbnRl
eHRNZW51SXRlbTo6Y3JlYXRlTmF0aXZlTWVudUl0ZW0ocGxhdGZvcm1JdGVtKTsKKyAgICBpZiAo
IWd0a0FjdGlvbikgeworICAgICAgICBnX3dhcm5pbmcoIkl0ZW0gbm90IGFkZGVkOiAlcyIsIHBs
YXRmb3JtSXRlbS50aXRsZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGd0a19hY3Rpb25fZ3JvdXBfYWRkX2FjdGlvbihtX2FjdGlvbkdyb3VwLCBndGtBY3Rp
b24pOworCisgICAgY29uc3QgY2hhciogYWN0aW9uTmFtZSA9IGd0a19hY3Rpb25fZ2V0X25hbWUo
Z3RrQWN0aW9uKTsKKworICAgIGd0a191aV9tYW5hZ2VyX2FkZF91aShtX3BsYXRmb3JtRGVzY3Jp
cHRpb24sIGd0a191aV9tYW5hZ2VyX25ld19tZXJnZV9pZChtX3BsYXRmb3JtRGVzY3JpcHRpb24p
LCBQQVRIX09OX1VJX01BTkFHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbk5h
bWUsIGFjdGlvbk5hbWUsIEdUS19VSV9NQU5BR0VSX01FTlVJVEVNLCBGQUxTRSk7CisKKyAgICBn
X3NpZ25hbF9jb25uZWN0KGd0a0FjdGlvbiwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhtZW51SXRl
bUFjdGl2YXRlZCksIGNvbnRyb2xsZXIoKSk7CiB9CiAKIHZvaWQgQ29udGV4dE1lbnU6OnNldFBs
YXRmb3JtRGVzY3JpcHRpb24oUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gbWVudSkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRlbUd0ay5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwCmluZGV4IGFhZWMyMDYuLmEwNTlh
NDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRlbUd0ay5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcApAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVy
IEZyZXl0aGVyCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IENvbGxhYm9yYSBMdGQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0yOCwxMDEgKzI5LDE5NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBndGtTdG9ja0lERnJvbUNvbnRleHRNZW51QWN0aW9uKGNv
bnN0IENvbnRleHRNZW51QWN0aW9uJiBhY3Rpb24pCitzdGF0aWMgR3RrQWN0aW9uKiBndGtBY3Rp
b25Gcm9tUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKGNvbnN0IFBsYXRmb3JtTWVudUl0ZW1E
ZXNjcmlwdGlvbiYgbWVudSkKIHsKLSAgICBzd2l0Y2ggKGFjdGlvbikgeworICAgIGNvbnN0IGNo
YXIqIGFjdGlvbk5hbWU7CisgICAgY29uc3QgY2hhciogc3RvY2tJRDsKKworICAgIHN3aXRjaCAo
bWVudS5hY3Rpb24pIHsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlw
Ym9hcmQ6CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0Q29weUxpbmtUb0NsaXBib2FyZCI7
CisgICAgICAgIHN0b2NrSUQgPSBHVEtfU1RPQ0tfQ09QWTsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZDoKKyAgICAgICAgYWN0
aW9uTmFtZSA9ICJXZWJLaXRDb3B5SW1hZ2VUb0NsaXBib2FyZCI7CisgICAgICAgIHN0b2NrSUQg
PSBHVEtfU1RPQ0tfQ09QWTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdDb3B5OgotICAgICAgICByZXR1cm4gR1RLX1NUT0NLX0NPUFk7CisgICAgICAgIGFjdGlv
bk5hbWUgPSAiV2ViS2l0Q29weSI7CisgICAgICAgIHN0b2NrSUQgPSBHVEtfU1RPQ0tfQ09QWTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3
V2luZG93OgorICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdE9wZW5MaW5rSW5OZXdXaW5kb3ci
OworICAgICAgICBzdG9ja0lEID0gR1RLX1NUT0NLX09QRU47CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3c6CisgICAgICAgIGFj
dGlvbk5hbWUgPSAiV2ViS2l0T3BlbkltYWdlSW5OZXdXaW5kb3ciOworICAgICAgICBzdG9ja0lE
ID0gR1RLX1NUT0NLX09QRU47CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3c6Ci0gICAgICAgIHJldHVybiBHVEtfU1RPQ0tfT1BF
TjsKKyAgICAgICAgYWN0aW9uTmFtZSA9ICJXZWJLaXRPcGVuRnJhbWVJbk5ld1dpbmRvdyI7Cisg
ICAgICAgIHN0b2NrSUQgPSBHVEtfU1RPQ0tfT1BFTjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2s6CisgICAgICAgIGFjdGlvbk5h
bWUgPSAiV2ViS2l0RG93bmxvYWRMaW5rVG9EaXNrIjsKKyAgICAgICAgc3RvY2tJRCA9IEdUS19T
VE9DS19TQVZFOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0Rv
d25sb2FkSW1hZ2VUb0Rpc2s6Ci0gICAgICAgIHJldHVybiBHVEtfU1RPQ0tfU0FWRTsKKyAgICAg
ICAgYWN0aW9uTmFtZSA9ICJXZWJLaXREb3dubG9hZEltYWdlVG9EaXNrIjsKKyAgICAgICAgc3Rv
Y2tJRCA9IEdUS19TVE9DS19TQVZFOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ0dvQmFjazoKLSAgICAgICAgcmV0dXJuIEdUS19TVE9DS19HT19CQUNLOworICAg
ICAgICBhY3Rpb25OYW1lID0gIldlYktpdEdvQmFjayI7CisgICAgICAgIHN0b2NrSUQgPSBHVEtf
U1RPQ0tfR09fQkFDSzsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdHb0ZvcndhcmQ6Ci0gICAgICAgIHJldHVybiBHVEtfU1RPQ0tfR09fRk9SV0FSRDsKKyAgICAg
ICAgYWN0aW9uTmFtZSA9ICJXZWJLaXRHb0ZvcndhcmQiOworICAgICAgICBzdG9ja0lEID0gR1RL
X1NUT0NLX0dPX0ZPUldBUkQ7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnU3RvcDoKLSAgICAgICAgcmV0dXJuIEdUS19TVE9DS19TVE9QOworICAgICAgICBhY3Rp
b25OYW1lID0gIldlYktpdFN0b3AiOworICAgICAgICBzdG9ja0lEID0gR1RLX1NUT0NLX1NUT1A7
CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUmVsb2FkOgotICAg
ICAgICByZXR1cm4gR1RLX1NUT0NLX1JFRlJFU0g7CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2Vi
S2l0UmVsb2FkIjsKKyAgICAgICAgc3RvY2tJRCA9IEdUS19TVE9DS19SRUZSRVNIOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0N1dDoKLSAgICAgICAgcmV0dXJu
IEdUS19TVE9DS19DVVQ7CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0Q3V0IjsKKyAgICAg
ICAgc3RvY2tJRCA9IEdUS19TVE9DS19DVVQ7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAgICAgIHJldHVybiBHVEtfU1RPQ0tfUEFTVEU7Cisg
ICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0UGFzdGUiOworICAgICAgICBzdG9ja0lEID0gR1RL
X1NUT0NLX1BBU1RFOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0RlbGV0ZToKLSAgICAgICAgcmV0dXJuIEdUS19TVE9DS19ERUxFVEU7CisgICAgICAgIGFjdGlv
bk5hbWUgPSAiV2ViS2l0RGVsZXRlIjsKKyAgICAgICAgc3RvY2tJRCA9IEdUS19TVE9DS19ERUxF
VEU7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxs
OgotICAgICAgICByZXR1cm4gR1RLX1NUT0NLX1NFTEVDVF9BTEw7CisgICAgICAgIGFjdGlvbk5h
bWUgPSAiV2ViS2l0U2VsZWN0QWxsIjsKKyAgICAgICAgc3RvY2tJRCA9IEdUS19TVE9DS19TRUxF
Q1RfQUxMOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NwZWxs
aW5nR3Vlc3M6Ci0gICAgICAgIHJldHVybiBHVEtfU1RPQ0tfSU5GTzsKKyAgICAgICAgYWN0aW9u
TmFtZSA9ICJXZWJLaXRTcGVsbGluZ0d1ZXNzIjsKKyAgICAgICAgc3RvY2tJRCA9IEdUS19TVE9D
S19JTkZPOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0lnbm9y
ZVNwZWxsaW5nOgotICAgICAgICByZXR1cm4gR1RLX1NUT0NLX05POworICAgICAgICBhY3Rpb25O
YW1lID0gIldlYktpdElnbm9yZVNwZWxsaW5nIjsKKyAgICAgICAgc3RvY2tJRCA9IEdUS19TVE9D
S19OTzsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWFyblNw
ZWxsaW5nOgotICAgICAgICByZXR1cm4gR1RLX1NUT0NLX09LOworICAgICAgICBhY3Rpb25OYW1l
ID0gIldlYktpdExlYXJuU3BlbGxpbmciOworICAgICAgICBzdG9ja0lEID0gR1RLX1NUT0NLX1lF
UzsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdPdGhlcjoKLSAg
ICAgICAgcmV0dXJuIEdUS19TVE9DS19NSVNTSU5HX0lNQUdFOworICAgICAgICBhY3Rpb25OYW1l
ID0gIldlYktpdE90aGVyIjsKKyAgICAgICAgc3RvY2tJRCA9IEdUS19TVE9DS19NSVNTSU5HX0lN
QUdFOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NlYXJjaElu
U3BvdGxpZ2h0OgotICAgICAgICByZXR1cm4gR1RLX1NUT0NLX0ZJTkQ7CisgICAgICAgIGFjdGlv
bk5hbWUgPSAiV2ViS2l0U2VhcmNoSW5TcG90bGlnaHQiOworICAgICAgICBzdG9ja0lEID0gR1RL
X1NUT0NLX0ZJTkQ7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFn
U2VhcmNoV2ViOgotICAgICAgICByZXR1cm4gR1RLX1NUT0NLX0ZJTkQ7CisgICAgICAgIGFjdGlv
bk5hbWUgPSAiV2ViS2l0U2VhcmNoV2ViIjsKKyAgICAgICAgc3RvY2tJRCA9IEdUS19TVE9DS19G
SU5EOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5XaXRo
RGVmYXVsdEFwcGxpY2F0aW9uOgotICAgICAgICByZXR1cm4gR1RLX1NUT0NLX09QRU47CisgICAg
ICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0T3BlbldpdGhEZWZhdWx0QXBwbGljYXRpb24iOworICAg
ICAgICBzdG9ja0lEID0gR1RLX1NUT0NLX09QRU47CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtUERGWm9vbUluOgotICAgICAgICByZXR1cm4gR1RLX1NUT0NLX1pPT01f
SU47CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0UERGWm9vbUluIjsKKyAgICAgICAgc3Rv
Y2tJRCA9IEdUS19TVE9DS19aT09NX0lOOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVBERlpvb21PdXQ6Ci0gICAgICAgIHJldHVybiBHVEtfU1RPQ0tfWk9PTV9PVVQ7
CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0UERGWm9vbU91dCI7CisgICAgICAgIHN0b2Nr
SUQgPSBHVEtfU1RPQ0tfWk9PTV9PVVQ7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtUERGQXV0b1NpemU6Ci0gICAgICAgIHJldHVybiBHVEtfU1RPQ0tfWk9PTV9GSVQ7
CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0UERGQXV0b1NpemUiOworICAgICAgICBzdG9j
a0lEID0gR1RLX1NUT0NLX1pPT01fRklUOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVBERk5leHRQYWdlOgotICAgICAgICByZXR1cm4gR1RLX1NUT0NLX0dPX0ZPUldB
UkQ7CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0UERGTmV4dFBhZ2UiOworICAgICAgICBz
dG9ja0lEID0gR1RLX1NUT0NLX0dPX0ZPUldBUkQ7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtUERGUHJldmlvdXNQYWdlOgotICAgICAgICByZXR1cm4gR1RLX1NUT0NL
X0dPX0JBQ0s7Ci0gICAgLy8gTmV3IHRhZ3MsIG5vdCBwYXJ0IG9mIEFQSQorICAgICAgICBhY3Rp
b25OYW1lID0gIldlYktpdFBERlByZXZpb3VzUGFnZSI7CisgICAgICAgIHN0b2NrSUQgPSBHVEtf
U1RPQ0tfR09fQkFDSzsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdPcGVuTGluazoKLSAgICAgICAgcmV0dXJuIEdUS19TVE9DS19PUEVOOworICAgICAgICBhY3Rp
b25OYW1lID0gIldlYktpdE9wZW5MaW5rIjsKKyAgICAgICAgc3RvY2tJRCA9IEdUS19TVE9DS19P
UEVOOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3Bl
bGxpbmc6Ci0gICAgICAgIHJldHVybiBHVEtfU1RPQ0tfU1BFTExfQ0hFQ0s7CisgICAgICAgIGFj
dGlvbk5hbWUgPSAiV2ViS2l0Q2hlY2tTcGVsbGluZyI7CisgICAgICAgIHN0b2NrSUQgPSBHVEtf
U1RPQ0tfU1BFTExfQ0hFQ0s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nOgorICAgICAgICBhY3Rpb25OYW1lID0gIldl
YktpdENoZWNrU3BlbGxpbmdXaGlsZVR5cGluZyI7CisgICAgICAgIHN0b2NrSUQgPSAwOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhT
cGVsbGluZzoKKyAgICAgICAgYWN0aW9uTmFtZSA9ICJXZWJLaXRDaGVja0dyYW1tYXJXaXRoU3Bl
bGxpbmciOworICAgICAgICBzdG9ja0lEID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbDoKKyAgICAgICAgYWN0aW9uTmFtZSA9
ICJXZWJLaXRTaG93U3BlbGxpbmdQYW5lbCI7CisgICAgICAgIHN0b2NrSUQgPSAwOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51OgotICAgICAgICBy
ZXR1cm4gR1RLX1NUT0NLX1NFTEVDVF9GT05UOworICAgICAgICBhY3Rpb25OYW1lID0gIldlYktp
dEZvbnRNZW51IjsKKyAgICAgICAgc3RvY2tJRCA9IEdUS19TVE9DS19TRUxFQ1RfRk9OVDsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHM6Ci0gICAg
ICAgIHJldHVybiBHVEtfU1RPQ0tfU0VMRUNUX0ZPTlQ7CisgICAgICAgIGFjdGlvbk5hbWUgPSAi
V2ViS2l0U2hvd0ZvbnRzIjsKKyAgICAgICAgc3RvY2tJRCA9IEdUS19TVE9DS19TRUxFQ1RfRk9O
VDsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdCb2xkOgotICAg
ICAgICByZXR1cm4gR1RLX1NUT0NLX0JPTEQ7CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0
Qm9sZCI7CisgICAgICAgIHN0b2NrSUQgPSBHVEtfU1RPQ0tfQk9MRDsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6Ci0gICAgICAgIHJldHVybiBHVEtf
U1RPQ0tfSVRBTElDOworICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdEl0YWxpYyI7CisgICAg
ICAgIHN0b2NrSUQgPSBHVEtfU1RPQ0tfSVRBTElDOworICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZToKLSAgICAgICAgcmV0dXJuIEdUS19TVE9DS19V
TkRFUkxJTkU7CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0VW5kZXJsaW5lIjsKKyAgICAg
ICAgc3RvY2tJRCA9IEdUS19TVE9DS19VTkRFUkxJTkU7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnT3V0bGluZToKKyAgICAgICAgYWN0aW9uTmFtZSA9ICJXZWJL
aXRPdXRsaW5lIjsKKyAgICAgICAgc3RvY2tJRCA9IDA7CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9yczoKLSAgICAgICAgcmV0dXJuIEdUS19TVE9D
S19TRUxFQ1RfQ09MT1I7CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0U2hvd0NvbG9ycyI7
CisgICAgICAgIHN0b2NrSUQgPSBHVEtfU1RPQ0tfU0VMRUNUX0NPTE9SOworICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKKyAgICBpZiAo
bWVudS50eXBlID09IENoZWNrYWJsZUFjdGlvblR5cGUpCisgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PEd0a0FjdGlvbio+KGd0a190b2dnbGVfYWN0aW9uX25ldyhhY3Rpb25OYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVudS50aXRsZS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0b2NrSUQpKTsKKworICAgIHJldHVybiBndGtfYWN0aW9uX25ldyhhY3Rpb25OYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51LnRpdGxlLnV0ZjgoKS5kYXRhKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
b2NrSUQpOwogfQogCiAvLyBFeHRyYWN0IHRoZSBBY3Rpb25UeXBlIGZyb20gdGhlIG1lbnUgaXRl
bQotQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0oR3RrTWVudUl0ZW0qIGl0ZW0pCitD
b250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShHdGtBY3Rpb24qIGFjdGlvbikKICAgICA6
IG1fcGxhdGZvcm1EZXNjcmlwdGlvbigpCiB7Ci0gICAgaWYgKEdUS19JU19TRVBBUkFUT1JfTUVO
VV9JVEVNKGl0ZW0pKQotICAgICAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24udHlwZSA9IFNlcGFy
YXRvclR5cGU7Ci0gICAgZWxzZSBpZiAoZ3RrX21lbnVfaXRlbV9nZXRfc3VibWVudShpdGVtKSkK
LSAgICAgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLnR5cGUgPSBTdWJtZW51VHlwZTsKLSAgICBl
bHNlIGlmIChHVEtfSVNfQ0hFQ0tfTUVOVV9JVEVNKGl0ZW0pKSB7Ci0gICAgICAgIG1fcGxhdGZv
cm1EZXNjcmlwdGlvbi50eXBlID0gQ2hlY2thYmxlQWN0aW9uVHlwZTsKLSAgICAgICAgbV9wbGF0
Zm9ybURlc2NyaXB0aW9uLmNoZWNrZWQgPSBndGtfY2hlY2tfbWVudV9pdGVtX2dldF9hY3RpdmUo
R1RLX0NIRUNLX01FTlVfSVRFTShpdGVtKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fcGxhdGZv
cm1EZXNjcmlwdGlvbi50eXBlID0gQWN0aW9uVHlwZTsKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRp
b24udHlwZSA9IEFjdGlvblR5cGU7CiAKLSAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24uYWN0aW9u
ID0gKnN0YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9uKj4oZ19vYmplY3RfZ2V0X2RhdGEoR19P
QkpFQ1QoaXRlbSksIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OKSk7Ci0KLSAgICBtX3BsYXRm
b3JtRGVzY3JpcHRpb24uc3ViTWVudSA9IEdUS19NRU5VKGd0a19tZW51X2l0ZW1fZ2V0X3N1Ym1l
bnUoaXRlbSkpOwotICAgIGlmIChtX3BsYXRmb3JtRGVzY3JpcHRpb24uc3ViTWVudSkKLSAgICAg
ICAgZ19vYmplY3RfcmVmKG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5zdWJNZW51KTsKKyAgICBtX3Bs
YXRmb3JtRGVzY3JpcHRpb24uYWN0aW9uID0gKnN0YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9u
Kj4oZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QoYWN0aW9uKSwgV0VCS0lUX0NPTlRFWFRfTUVO
VV9BQ1RJT04pKTsKIH0KIAogQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0oQ29udGV4
dE1lbnUqKQpAQCAtMTQxLDM5ICsyMzYsMjEgQEAgQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVu
dUl0ZW0oQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlLCBDb250ZXh0TWVudUFjdGlvbiBhY3QKIAog
Q29udGV4dE1lbnVJdGVtOjp+Q29udGV4dE1lbnVJdGVtKCkKIHsKLSAgICBpZiAobV9wbGF0Zm9y
bURlc2NyaXB0aW9uLnN1Yk1lbnUpCi0gICAgICAgIGdfb2JqZWN0X3VucmVmKG1fcGxhdGZvcm1E
ZXNjcmlwdGlvbi5zdWJNZW51KTsKIH0KIAotR3RrTWVudUl0ZW0qIENvbnRleHRNZW51SXRlbTo6
Y3JlYXRlTmF0aXZlTWVudUl0ZW0oY29uc3QgUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uJiBt
ZW51KQorR3RrQWN0aW9uKiBDb250ZXh0TWVudUl0ZW06OmNyZWF0ZU5hdGl2ZU1lbnVJdGVtKGNv
bnN0IFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbiYgbWVudSkKIHsKLSAgICBHdGtNZW51SXRl
bSogaXRlbSA9IDA7Ci0gICAgaWYgKG1lbnUudHlwZSA9PSBTZXBhcmF0b3JUeXBlKQotICAgICAg
ICBpdGVtID0gR1RLX01FTlVfSVRFTShndGtfc2VwYXJhdG9yX21lbnVfaXRlbV9uZXcoKSk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIGlmIChtZW51LnR5cGUgPT0gQ2hlY2thYmxlQWN0aW9uVHlwZSkg
ewotICAgICAgICAgICAgaXRlbSA9IEdUS19NRU5VX0lURU0oZ3RrX2NoZWNrX21lbnVfaXRlbV9u
ZXdfd2l0aF9tbmVtb25pYyhtZW51LnRpdGxlLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICAgICAgICAg
IGd0a19jaGVja19tZW51X2l0ZW1fc2V0X2FjdGl2ZShHVEtfQ0hFQ0tfTUVOVV9JVEVNKGl0ZW0p
LCBtZW51LmNoZWNrZWQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGNvbnN0
IGdjaGFyKiBzdG9ja0lEID0gZ3RrU3RvY2tJREZyb21Db250ZXh0TWVudUFjdGlvbihtZW51LmFj
dGlvbikpIHsKLSAgICAgICAgICAgICAgICBpdGVtID0gR1RLX01FTlVfSVRFTShndGtfaW1hZ2Vf
bWVudV9pdGVtX25ld193aXRoX21uZW1vbmljKG1lbnUudGl0bGUudXRmOCgpLmRhdGEoKSkpOwot
ICAgICAgICAgICAgICAgIEd0a1dpZGdldCogaW1hZ2UgPSBndGtfaW1hZ2VfbmV3X2Zyb21fc3Rv
Y2soc3RvY2tJRCwgR1RLX0lDT05fU0laRV9NRU5VKTsKLSAgICAgICAgICAgICAgICBndGtfaW1h
Z2VfbWVudV9pdGVtX3NldF9pbWFnZShHVEtfSU1BR0VfTUVOVV9JVEVNKGl0ZW0pLCBpbWFnZSk7
Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBpdGVtID0gR1RLX01FTlVfSVRF
TShndGtfbWVudV9pdGVtX25ld193aXRoX21uZW1vbmljKG1lbnUudGl0bGUudXRmOCgpLmRhdGEo
KSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgQ29udGV4dE1lbnVBY3Rpb24qIG1lbnVBY3Rpb24g
PSBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbio+KG1hbGxvYyhzaXplb2YoQ29udGV4dE1l
bnVBY3Rpb24qKSkpOwotICAgICAgICAqbWVudUFjdGlvbiA9IG1lbnUuYWN0aW9uOwotICAgICAg
ICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChpdGVtKSwgV0VCS0lUX0NPTlRFWFRfTUVOVV9B
Q1RJT04sIG1lbnVBY3Rpb24pOworICAgIEd0a0FjdGlvbiogZ3RrQWN0aW9uID0gZ3RrQWN0aW9u
RnJvbVBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbihtZW51KTsKKyAgICBpZiAoIWd0a0FjdGlv
bikKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZl
KEdUS19XSURHRVQoaXRlbSksIG1lbnUuZW5hYmxlZCk7CisgICAgQ29udGV4dE1lbnVBY3Rpb24q
IG1lbnVBY3Rpb24gPSBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbio+KG1hbGxvYyhzaXpl
b2YoQ29udGV4dE1lbnVBY3Rpb24qKSkpOworICAgICptZW51QWN0aW9uID0gbWVudS5hY3Rpb247
CisgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoZ3RrQWN0aW9uKSwgV0VCS0lUX0NPTlRF
WFRfTUVOVV9BQ1RJT04sIG1lbnVBY3Rpb24pOwogCi0gICAgICAgIGlmIChtZW51LnN1Yk1lbnUp
Ci0gICAgICAgICAgICBndGtfbWVudV9pdGVtX3NldF9zdWJtZW51KGl0ZW0sIEdUS19XSURHRVQo
bWVudS5zdWJNZW51KSk7Ci0gICAgfQorICAgIGd0a19hY3Rpb25fc2V0X3NlbnNpdGl2ZShndGtB
Y3Rpb24sIG1lbnUuZW5hYmxlZCk7CiAKLSAgICByZXR1cm4gaXRlbTsKKyAgICByZXR1cm4gZ3Rr
QWN0aW9uOwogfQogCiBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24gQ29udGV4dE1lbnVJdGVt
OjpyZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpCkBAIC0yMDUsMTMgKzI4MiwxMiBAQCB2b2lk
IENvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKENvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKIAog
U3RyaW5nIENvbnRleHRNZW51SXRlbTo6dGl0bGUoKSBjb25zdAogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBtX3BsYXRmb3JtRGVzY3Jp
cHRpb24udGl0bGU7CiB9CiAKLXZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRUaXRsZShjb25zdCBT
dHJpbmcmKQordm9pZCBDb250ZXh0TWVudUl0ZW06OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24u
dGl0bGUgPSB0aXRsZTsKIH0KIAogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVJ
dGVtOjpwbGF0Zm9ybVN1Yk1lbnUoKSBjb25zdApAQCAtMjIxLDE2ICsyOTcsMTEgQEAgUGxhdGZv
cm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVJdGVtOjpwbGF0Zm9ybVN1Yk1lbnUoKSBjb25z
dAogCiB2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0U3ViTWVudShDb250ZXh0TWVudSogbWVudSkK
IHsKLSAgICBpZiAobV9wbGF0Zm9ybURlc2NyaXB0aW9uLnN1Yk1lbnUpCi0gICAgICAgIGdfb2Jq
ZWN0X3VucmVmKG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5zdWJNZW51KTsKLQogICAgIGlmICghbWVu
dSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLnN1Yk1lbnUg
PSBtZW51LT5yZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpOwogICAgIG1fcGxhdGZvcm1EZXNj
cmlwdGlvbi50eXBlID0gU3VibWVudVR5cGU7Ci0KLSAgICBnX29iamVjdF9yZWZfc2luayhHX09C
SkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24uc3ViTWVudSkpOwogfQogCiB2b2lkIENvbnRleHRN
ZW51SXRlbTo6c2V0Q2hlY2tlZChib29sIHNob3VsZENoZWNrKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNwcAppbmRleCBiZjQ3Y2E4Li45
NzRjNzM5IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51
Q2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51
Q2xpZW50R3RrLmNwcApAQCAtNDUsMTE3ICs0NSwxMSBAQCB2b2lkIENvbnRleHRNZW51Q2xpZW50
Ojpjb250ZXh0TWVudURlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXN0YXRpYyBH
dGtXaWRnZXQqIGlucHV0TWV0aG9kc01lbnVJdGVtIChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQot
ewotICAgIGlmIChndGtfbWFqb3JfdmVyc2lvbiA+IDIgfHwgKGd0a19tYWpvcl92ZXJzaW9uID09
IDIgJiYgZ3RrX21pbm9yX3ZlcnNpb24gPj0gMTApKSB7Ci0gICAgICAgIEd0a1NldHRpbmdzKiBz
ZXR0aW5ncyA9IHdlYlZpZXcgPyBndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhHVEtfV0lER0VUKHdl
YlZpZXcpKSA6IGd0a19zZXR0aW5nc19nZXRfZGVmYXVsdCgpOwotCi0gICAgICAgIGdib29sZWFu
IHNob3dNZW51ID0gVFJVRTsKLSAgICAgICAgaWYgKHNldHRpbmdzKQotICAgICAgICAgICAgZ19v
YmplY3RfZ2V0KHNldHRpbmdzLCAiZ3RrLXNob3ctaW5wdXQtbWV0aG9kLW1lbnUiLCAmc2hvd01l
bnUsIE5VTEwpOwotICAgICAgICBpZiAoIXNob3dNZW51KQotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotCi0gICAgR3RrV2lkZ2V0KiBtZW51aXRlbSA9IGd0a19pbWFnZV9tZW51X2l0ZW1f
bmV3X3dpdGhfbW5lbW9uaWMoCi0gICAgICAgIF8oIklucHV0IF9NZXRob2RzIikpOwotCi0gICAg
V2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUo
d2ViVmlldyk7Ci0gICAgR3RrV2lkZ2V0KiBpbUNvbnRleHRNZW51ID0gZ3RrX21lbnVfbmV3KCk7
Ci0gICAgZ3RrX2ltX211bHRpY29udGV4dF9hcHBlbmRfbWVudWl0ZW1zKEdUS19JTV9NVUxUSUNP
TlRFWFQocHJpdi0+aW1Db250ZXh0KSwgR1RLX01FTlVfU0hFTEwoaW1Db250ZXh0TWVudSkpOwot
Ci0gICAgZ3RrX21lbnVfaXRlbV9zZXRfc3VibWVudShHVEtfTUVOVV9JVEVNKG1lbnVpdGVtKSwg
aW1Db250ZXh0TWVudSk7Ci0KLSAgICByZXR1cm4gbWVudWl0ZW07Ci19Ci0KLS8vIFZhbHVlcyB0
YWtlbiBmcm9tIGd0a3RleHR1dGlsLmMKLXR5cGVkZWYgc3RydWN0IHsKLSAgY29uc3QgY2hhciAq
bGFiZWw7Ci0gIGd1bmljaGFyIGNoOwotfSBHdGtVbmljb2RlTWVudUVudHJ5Owotc3RhdGljIGNv
bnN0IEd0a1VuaWNvZGVNZW51RW50cnkgYmlkaV9tZW51X2VudHJpZXNbXSA9IHsKLSAgeyBOXygi
TFJNIF9MZWZ0LXRvLXJpZ2h0IG1hcmsiKSwgMHgyMDBFIH0sCi0gIHsgTl8oIlJMTSBfUmlnaHQt
dG8tbGVmdCBtYXJrIiksIDB4MjAwRiB9LAotICB7IE5fKCJMUkUgTGVmdC10by1yaWdodCBfZW1i
ZWRkaW5nIiksIDB4MjAyQSB9LAotICB7IE5fKCJSTEUgUmlnaHQtdG8tbGVmdCBlX21iZWRkaW5n
IiksIDB4MjAyQiB9LAotICB7IE5fKCJMUk8gTGVmdC10by1yaWdodCBfb3ZlcnJpZGUiKSwgMHgy
MDJEIH0sCi0gIHsgTl8oIlJMTyBSaWdodC10by1sZWZ0IG9fdmVycmlkZSIpLCAweDIwMkUgfSwK
LSAgeyBOXygiUERGIF9Qb3AgZGlyZWN0aW9uYWwgZm9ybWF0dGluZyIpLCAweDIwMkMgfSwKLSAg
eyBOXygiWldTIF9aZXJvIHdpZHRoIHNwYWNlIiksIDB4MjAwQiB9LAotICB7IE5fKCJaV0ogWmVy
byB3aWR0aCBfam9pbmVyIiksIDB4MjAwRCB9LAotICB7IE5fKCJaV05KIFplcm8gd2lkdGggX25v
bi1qb2luZXIiKSwgMHgyMDBDIH0KLX07Ci0KLXN0YXRpYyB2b2lkIGluc2VydENvbnRyb2xDaGFy
YWN0ZXIoR3RrV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgLy8gR3RrVW5pY29kZU1lbnVFbnRyeSog
ZW50cnkgPSAoR3RrVW5pY29kZU1lbnVFbnRyeSopZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1Qo
d2lkZ2V0KSwgImd0ay11bmljb2RlLW1lbnUtZW50cnkiKTsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi1zdGF0aWMgR3RrV2lkZ2V0KiB1bmljb2RlTWVudUl0ZW0oV2ViS2l0V2ViVmlldyog
d2ViVmlldykKLXsKLSAgICBpZiAoZ3RrX21ham9yX3ZlcnNpb24gPiAyIHx8IChndGtfbWFqb3Jf
dmVyc2lvbiA9PSAyICYmIGd0a19taW5vcl92ZXJzaW9uID49IDEwKSkgewotICAgICAgICBHdGtT
ZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJWaWV3ID8gZ3RrX3dpZGdldF9nZXRfc2V0dGluZ3MoR1RL
X1dJREdFVCh3ZWJWaWV3KSkgOiBndGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQoKTsKLQotICAgICAg
ICBnYm9vbGVhbiBzaG93TWVudSA9IFRSVUU7Ci0gICAgICAgIGlmIChzZXR0aW5ncykKLSAgICAg
ICAgICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImd0ay1zaG93LXVuaWNvZGUtbWVudSIsICZz
aG93TWVudSwgTlVMTCk7Ci0gICAgICAgIGlmICghc2hvd01lbnUpCi0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0KLSAgICBHdGtXaWRnZXQqIG1lbnVpdGVtID0gZ3RrX2ltYWdlX21lbnVf
aXRlbV9uZXdfd2l0aF9tbmVtb25pYygKLSAgICAgICAgXygiX0luc2VydCBVbmljb2RlIENvbnRy
b2wgQ2hhcmFjdGVyIikpOwotCi0gICAgR3RrV2lkZ2V0KiB1bmljb2RlQ29udGV4dE1lbnUgPSBn
dGtfbWVudV9uZXcoKTsKLSAgICB1bnNpZ25lZCBpOwotICAgIGZvciAoaSA9IDA7IGkgPCBHX05f
RUxFTUVOVFMoYmlkaV9tZW51X2VudHJpZXMpOyBpKyspIHsKLSAgICAgICAgR3RrV2lkZ2V0KiBt
ZW51aXRlbSA9IGd0a19tZW51X2l0ZW1fbmV3X3dpdGhfbW5lbW9uaWMoXyhiaWRpX21lbnVfZW50
cmllc1tpXS5sYWJlbCkpOwotICAgICAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChtZW51
aXRlbSksICJndGstdW5pY29kZS1tZW51LWVudHJ5IiwgKGdwb2ludGVyKSZiaWRpX21lbnVfZW50
cmllc1tpXSk7Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobWVudWl0ZW0sICJhY3RpdmF0ZSIs
IEdfQ0FMTEJBQ0soaW5zZXJ0Q29udHJvbENoYXJhY3RlciksIDApOwotICAgICAgICBndGtfd2lk
Z2V0X3Nob3cobWVudWl0ZW0pOwotICAgICAgICBndGtfbWVudV9zaGVsbF9hcHBlbmQoR1RLX01F
TlVfU0hFTEwodW5pY29kZUNvbnRleHRNZW51KSwgbWVudWl0ZW0pOwotICAgICAgICAvLyBGSVhN
RTogTWFrZSB0aGUgaXRlbSBzZW5zaXRpdmUgYXMgaW5zZXJ0Q29udHJvbENoYXJhY3RlcigpIGlz
IGltcGxlbWVudGVkCi0gICAgICAgIGd0a193aWRnZXRfc2V0X3NlbnNpdGl2ZShtZW51aXRlbSwg
RkFMU0UpOwotICAgIH0KLQotICAgIGd0a19tZW51X2l0ZW1fc2V0X3N1Ym1lbnUoR1RLX01FTlVf
SVRFTShtZW51aXRlbSksIHVuaWNvZGVDb250ZXh0TWVudSk7Ci0KLSAgICByZXR1cm4gbWVudWl0
ZW07Ci19Ci0KIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xpZW50OjpnZXRD
dXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhDb250ZXh0TWVudSogbWVudSkKIHsKLSAgICBHdGtN
ZW51KiBndGttZW51ID0gbWVudS0+cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsKLQotICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWVudS0+aGl0VGVzdFJlc3VsdCgpOwotICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYlZpZXc7Ci0KLSAgICBpZiAocmVzdWx0LmlzQ29udGVu
dEVkaXRhYmxlKCkpIHsKLQotICAgICAgICBHdGtXaWRnZXQqIGltQ29udGV4dE1lbnUgPSBpbnB1
dE1ldGhvZHNNZW51SXRlbSh3ZWJWaWV3KTsKLSAgICAgICAgR3RrV2lkZ2V0KiB1bmljb2RlQ29u
dGV4dE1lbnUgPSB1bmljb2RlTWVudUl0ZW0od2ViVmlldyk7Ci0KLSAgICAgICAgaWYgKGltQ29u
dGV4dE1lbnUgfHwgdW5pY29kZUNvbnRleHRNZW51KSB7Ci0gICAgICAgICAgICBHdGtXaWRnZXQq
IHNlcGFyYXRvciA9IGd0a19zZXBhcmF0b3JfbWVudV9pdGVtX25ldygpOwotICAgICAgICAgICAg
Z3RrX21lbnVfc2hlbGxfYXBwZW5kKEdUS19NRU5VX1NIRUxMKGd0a21lbnUpLCBzZXBhcmF0b3Ip
OwotICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93KHNlcGFyYXRvcik7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoaW1Db250ZXh0TWVudSkgewotICAgICAgICAgICAgZ3RrX21lbnVfc2hlbGxf
YXBwZW5kKEdUS19NRU5VX1NIRUxMKGd0a21lbnUpLCBpbUNvbnRleHRNZW51KTsKLSAgICAgICAg
ICAgIGd0a193aWRnZXRfc2hvdyhpbUNvbnRleHRNZW51KTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICh1bmljb2RlQ29udGV4dE1lbnUpIHsKLSAgICAgICAgICAgIGd0a19tZW51X3NoZWxsX2Fw
cGVuZChHVEtfTUVOVV9TSEVMTChndGttZW51KSwgdW5pY29kZUNvbnRleHRNZW51KTsKLSAgICAg
ICAgICAgIGd0a193aWRnZXRfc2hvdyh1bmljb2RlQ29udGV4dE1lbnUpOwotICAgICAgICB9Ci0K
LSAgICB9Ci0KLSAgICByZXR1cm4gZ3RrbWVudTsKKyAgICBHdGtVSU1hbmFnZXIqIG1hbmFnZXIg
PSBtZW51LT5yZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpOworICAgIGd0a191aV9tYW5hZ2Vy
X2Vuc3VyZV91cGRhdGUobWFuYWdlcik7CisgICAgcmV0dXJuIG1hbmFnZXI7CiB9CiAKIHZvaWQg
Q29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRl
bSosIGNvbnN0IENvbnRleHRNZW51KikKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5k
ZXggYThiOGFhYi4uNGFmNjk2OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAg
LTE3Miw2ICsxNzIsNTkgQEAgR19ERUZJTkVfVFlQRShXZWJLaXRXZWJWaWV3LCB3ZWJraXRfd2Vi
X3ZpZXcsIEdUS19UWVBFX0NPTlRBSU5FUikKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19z
ZXR0aW5nc19ub3RpZnkoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzLCBHUGFyYW1TcGVj
KiBwc3BlYywgV2ViS2l0V2ViVmlldyogd2ViVmlldyk7CiBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMpOwogCitzdGF0aWMgR3RrV2lkZ2V0
KiBpbnB1dE1ldGhvZHNNZW51SXRlbSAoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBp
ZiAoZ3RrX21ham9yX3ZlcnNpb24gPiAyIHx8IChndGtfbWFqb3JfdmVyc2lvbiA9PSAyICYmIGd0
a19taW5vcl92ZXJzaW9uID49IDEwKSkgeworICAgICAgICBHdGtTZXR0aW5ncyogc2V0dGluZ3Mg
PSB3ZWJWaWV3ID8gZ3RrX3dpZGdldF9nZXRfc2V0dGluZ3MoR1RLX1dJREdFVCh3ZWJWaWV3KSkg
OiBndGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQoKTsKKworICAgICAgICBnYm9vbGVhbiBzaG93TWVu
dSA9IFRSVUU7CisgICAgICAgIGlmIChzZXR0aW5ncykKKyAgICAgICAgICAgIGdfb2JqZWN0X2dl
dChzZXR0aW5ncywgImd0ay1zaG93LWlucHV0LW1ldGhvZC1tZW51IiwgJnNob3dNZW51LCBOVUxM
KTsKKyAgICAgICAgaWYgKCFzaG93TWVudSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0K
KworICAgIEd0a1dpZGdldCogbWVudWl0ZW0gPSBndGtfaW1hZ2VfbWVudV9pdGVtX25ld193aXRo
X21uZW1vbmljKAorICAgICAgICBfKCJJbnB1dCBfTWV0aG9kcyIpKTsKKworICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcp
OworICAgIEd0a1dpZGdldCogaW1Db250ZXh0TWVudSA9IGd0a19tZW51X25ldygpOworICAgIGd0
a19pbV9tdWx0aWNvbnRleHRfYXBwZW5kX21lbnVpdGVtcyhHVEtfSU1fTVVMVElDT05URVhUKHBy
aXYtPmltQ29udGV4dCksIEdUS19NRU5VX1NIRUxMKGltQ29udGV4dE1lbnUpKTsKKworICAgIGd0
a19tZW51X2l0ZW1fc2V0X3N1Ym1lbnUoR1RLX01FTlVfSVRFTShtZW51aXRlbSksIGltQ29udGV4
dE1lbnUpOworCisgICAgcmV0dXJuIG1lbnVpdGVtOworfQorCisvLyBWYWx1ZXMgdGFrZW4gZnJv
bSBndGt0ZXh0dXRpbC5jCit0eXBlZGVmIHN0cnVjdCB7CisgIGNvbnN0IGNoYXIgKmxhYmVsOwor
ICBndW5pY2hhciBjaDsKK30gR3RrVW5pY29kZU1lbnVFbnRyeTsKK3N0YXRpYyBjb25zdCBHdGtV
bmljb2RlTWVudUVudHJ5IGJpZGlfbWVudV9lbnRyaWVzW10gPSB7CisgIHsgTl8oIkxSTSBfTGVm
dC10by1yaWdodCBtYXJrIiksIDB4MjAwRSB9LAorICB7IE5fKCJSTE0gX1JpZ2h0LXRvLWxlZnQg
bWFyayIpLCAweDIwMEYgfSwKKyAgeyBOXygiTFJFIExlZnQtdG8tcmlnaHQgX2VtYmVkZGluZyIp
LCAweDIwMkEgfSwKKyAgeyBOXygiUkxFIFJpZ2h0LXRvLWxlZnQgZV9tYmVkZGluZyIpLCAweDIw
MkIgfSwKKyAgeyBOXygiTFJPIExlZnQtdG8tcmlnaHQgX292ZXJyaWRlIiksIDB4MjAyRCB9LAor
ICB7IE5fKCJSTE8gUmlnaHQtdG8tbGVmdCBvX3ZlcnJpZGUiKSwgMHgyMDJFIH0sCisgIHsgTl8o
IlBERiBfUG9wIGRpcmVjdGlvbmFsIGZvcm1hdHRpbmciKSwgMHgyMDJDIH0sCisgIHsgTl8oIlpX
UyBfWmVybyB3aWR0aCBzcGFjZSIpLCAweDIwMEIgfSwKKyAgeyBOXygiWldKIFplcm8gd2lkdGgg
X2pvaW5lciIpLCAweDIwMEQgfSwKKyAgeyBOXygiWldOSiBaZXJvIHdpZHRoIF9ub24tam9pbmVy
IiksIDB4MjAwQyB9Cit9OworCitzdGF0aWMgdm9pZCBpbnNlcnRDb250cm9sQ2hhcmFjdGVyKEd0
a1dpZGdldCogd2lkZ2V0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3N0YXRpYyBH
dGtXaWRnZXQqIHVuaWNvZGVNZW51SXRlbShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICBQYWdlKiBw
YWdlID0gY29yZSh3ZWJWaWV3KTsKQEAgLTE5MCwxMCArMjQzLDM2IEBAIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV2ViS2l0V2ViVmll
dyogd2ViVmllCiAgICAgaWYgKCFjb3JlTWVudSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0g
ICAgR3RrTWVudSogbWVudSA9IEdUS19NRU5VKGNvcmVNZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9u
KCkpOworICAgIEd0a1VJTWFuYWdlciogbWFuYWdlciA9IGNvcmVNZW51LT5wbGF0Zm9ybURlc2Ny
aXB0aW9uKCk7CisgICAgR3RrTWVudSogbWVudSA9IEdUS19NRU5VKGd0a191aV9tYW5hZ2VyX2dl
dF93aWRnZXQobWFuYWdlciwgIi91aS9wb3B1cCIpKTsKICAgICBpZiAoIW1lbnUpCiAgICAgICAg
IHJldHVybiBGQUxTRTsKIAorCisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBjb3JlTWVudS0+
aGl0VGVzdFJlc3VsdCgpOworCisgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7
CisKKyAgICAgICAgR3RrV2lkZ2V0KiBpbUNvbnRleHRNZW51ID0gaW5wdXRNZXRob2RzTWVudUl0
ZW0od2ViVmlldyk7CisgICAgICAgIEd0a1dpZGdldCogdW5pY29kZUNvbnRleHRNZW51ID0gdW5p
Y29kZU1lbnVJdGVtKHdlYlZpZXcpOworCisgICAgICAgIGlmIChpbUNvbnRleHRNZW51IHx8IHVu
aWNvZGVDb250ZXh0TWVudSkgeworICAgICAgICAgICAgR3RrV2lkZ2V0KiBzZXBhcmF0b3IgPSBn
dGtfc2VwYXJhdG9yX21lbnVfaXRlbV9uZXcoKTsKKyAgICAgICAgICAgIGd0a19tZW51X3NoZWxs
X2FwcGVuZChHVEtfTUVOVV9TSEVMTChtZW51KSwgc2VwYXJhdG9yKTsKKyAgICAgICAgICAgIGd0
a193aWRnZXRfc2hvdyhzZXBhcmF0b3IpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGltQ29u
dGV4dE1lbnUpIHsKKyAgICAgICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZChHVEtfTUVOVV9T
SEVMTChtZW51KSwgaW1Db250ZXh0TWVudSk7CisgICAgICAgICAgICBndGtfd2lkZ2V0X3Nob3co
aW1Db250ZXh0TWVudSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodW5pY29kZUNvbnRleHRN
ZW51KSB7CisgICAgICAgICAgICBndGtfbWVudV9zaGVsbF9hcHBlbmQoR1RLX01FTlVfU0hFTEwo
bWVudSksIHVuaWNvZGVDb250ZXh0TWVudSk7CisgICAgICAgICAgICBndGtfd2lkZ2V0X3Nob3co
dW5pY29kZUNvbnRleHRNZW51KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGdfc2lnbmFsX2Vt
aXQod2ViVmlldywgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbUE9QVUxBVEVfUE9QVVBdLCAwLCBt
ZW51KTsKIAogICAgIEdMaXN0KiBpdGVtcyA9IGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdU
S19DT05UQUlORVIobWVudSkpOwpAQCAtMjA1LDYgKzI4NCw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV2ViS2l0V2ViVmlldyog
d2ViVmllCiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdf
R0VUX1BSSVZBVEUod2ViVmlldyk7CiAgICAgcHJpdi0+bGFzdFBvcHVwWFBvc2l0aW9uID0gZXZl
bnQuZ2xvYmFsWCgpOwogICAgIHByaXYtPmxhc3RQb3B1cFlQb3NpdGlvbiA9IGV2ZW50Lmdsb2Jh
bFkoKTsKKworICAgIGd0a193aWRnZXRfc2hvd19hbGwoR1RLX1dJREdFVChtZW51KSk7CiAgICAg
Z3RrX21lbnVfcG9wdXAobWVudSwgTlVMTCwgTlVMTCwKICAgICAgICAgICAgICAgICAgICBOVUxM
LAogICAgICAgICAgICAgICAgICAgIHByaXYsIGV2ZW50LmJ1dHRvbigpICsgMSwgZ3RrX2dldF9j
dXJyZW50X2V2ZW50X3RpbWUoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38589</attachid>
            <date>2009-08-25 20:07:07 -0700</date>
            <delta_ts>2009-08-25 20:07:07 -0700</delta_ts>
            <desc>Second draft</desc>
            <filename>0001-Port-context-menu-handling-to-GtkUIManager.patch</filename>
            <type>text/plain</type>
            <size>50465</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSAxMGZjNGY2MjIzZDM5Mzc0OWRiOGZjZWExMzhmOTFjZGNiMzY5NjRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGd1c3Rhdm8ubm9yb25o
YUBjb2xsYWJvcmEuY28udWs+CkRhdGU6IFR1ZSwgMjUgQXVnIDIwMDkgMTc6NTI6MzQgLTAzMDAK
U3ViamVjdDogW1BBVENIXSBQb3J0IGNvbnRleHQgbWVudSBoYW5kbGluZyB0byBHdGtVSU1hbmFn
ZXIKCi0tLQogR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAyICsKIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaCAgICAgICAgICAgICAg
ICAgICAgIHwgICAgNiArCiBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oICAgICAg
ICAgICAgICAgICB8ICAgIDkgKy0KIFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1NZW51RGVzY3Jp
cHRpb24uaCAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1l
bnVHdGsuY3BwICAgICAgICAgICAgfCAgMTQyICsrKysrKysrKysrLQogV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcCAgICAgICAgfCAgMjQxICsrKysrKysrKysrKyst
LS0tLS0tCiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNw
cCB8ICAxMTIgKy0tLS0tLS0tLQogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmggICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMu
aCAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2
YXRlLmggICAgICAgICAgICAgICAgICB8ICAgIDMgKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VidGFyZ2V0aW5mby5jcHAgICAgICAgICAgfCAgMjIxICsrKysrKysrKysrKysrKysrKwogV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2VidGFyZ2V0aW5mby5oICAgICAgICAgICAgfCAgIDcxICsr
KysrKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgICAgICAgICAgICAgICAg
fCAgMTEyICsrKysrKysrKy0KIFdlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYyAgICAgICAg
ICAgICAgICAgICAgIHwgICAyMSArKwogMTQgZmlsZXMgY2hhbmdlZCwgNzM2IGluc2VydGlvbnMo
KyksIDIxMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ0YXJnZXRpbmZvLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnRhcmdldGluZm8uaAoKZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFt
IGIvR05VbWFrZWZpbGUuYW0KaW5kZXggZGMzODRkOS4uNTJkZWUyZSAxMDA2NDQKLS0tIGEvR05V
bWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTMyNyw2ICszMjcsNyBAQCB3ZWJr
aXRndGtfaF9hcGkgKz0gXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYm5hdmlnYXRpb25h
Y3Rpb24uaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaCBc
CiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaCBcCisJV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2VidGFyZ2V0aW5mby5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ3aW5kb3dmZWF0dXJlcy5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgK
IApAQCAtMzY2LDYgKzM2Nyw3IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJzZXR0aW5ncy5jcHAgXAorCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnRhcmdldGlu
Zm8uY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBcCiAJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuY3BwIFwKIAlXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3b3JrZXJzLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250
ZXh0TWVudS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCmluZGV4IGRjNDg0YjIu
LmI5OWJjMTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgKQEAgLTM2LDYgKzM2LDkgQEAKICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZWxpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRTWVu
dT4KKyNlbGlmIFBMQVRGT1JNKEdUSykKK3R5cGVkZWYgc3RydWN0IF9HdGtVSU1hbmFnZXIgR3Rr
VUlNYW5hZ2VyOwordHlwZWRlZiBzdHJ1Y3QgX0d0a0FjdGlvbkdyb3VwIEd0a0FjdGlvbkdyb3Vw
OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgxLDYgKzg0LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2Vsc2UKICAgICAgICAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gbV9w
bGF0Zm9ybURlc2NyaXB0aW9uOwogI2VuZGlmCisjaWYgUExBVEZPUk0oR1RLKQorICAgICAgICBH
dGtBY3Rpb25Hcm91cCogbV9hY3Rpb25Hcm91cDsKKyNlbmRpZgogICAgIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmggYi9XZWJDb3JlL3BsYXRm
b3JtL0NvbnRleHRNZW51SXRlbS5oCmluZGV4IDFlYzUzYjYuLjA0ODZmMzQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9Db250ZXh0TWVudUl0ZW0uaApAQCAtNDEsNyArNDEsOCBAQCBjbGFzcyBOU01lbnVJdGVtOwog
I2VsaWYgUExBVEZPUk0oV0lOKQogdHlwZWRlZiBzdHJ1Y3QgdGFnTUVOVUlURU1JTkZPVyogTFBN
RU5VSVRFTUlORk87CiAjZWxpZiBQTEFURk9STShHVEspCi10eXBlZGVmIHN0cnVjdCBfR3RrTWVu
dUl0ZW0gR3RrTWVudUl0ZW07Cit0eXBlZGVmIHN0cnVjdCBfR3RrQWN0aW9uIEd0a0FjdGlvbjsK
K3R5cGVkZWYgc3RydWN0IF9HdGtVSU1hbmFnZXIgR3RrVUlNYW5hZ2VyOwogI2VsaWYgUExBVEZP
Uk0oUVQpCiAjaW5jbHVkZSA8UUFjdGlvbj4KICNlbGlmIFBMQVRGT1JNKFdYKQpAQCAtMTg0LDcg
KzE4NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ29udGV4dE1lbnVJdGVtVHlw
ZSB0eXBlOwogICAgICAgICBDb250ZXh0TWVudUFjdGlvbiBhY3Rpb247CiAgICAgICAgIFN0cmlu
ZyB0aXRsZTsKLSAgICAgICAgR3RrTWVudSogc3ViTWVudTsKKyAgICAgICAgR3RrVUlNYW5hZ2Vy
KiBzdWJNZW51OwogICAgICAgICBib29sIGNoZWNrZWQ7CiAgICAgICAgIGJvb2wgZW5hYmxlZDsK
ICAgICB9OwpAQCAtMjE2LDcgKzIxNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Q29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51KiBzdWJNZW51ID0gMCk7CiAgICAgICAgIENvbnRl
eHRNZW51SXRlbShDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUsIENvbnRleHRNZW51QWN0aW9uIGFj
dGlvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgQ29udGV4dE1lbnUqIHN1Yk1lbnUgPSAwKTsKICNp
ZiBQTEFURk9STShHVEspCi0gICAgICAgIENvbnRleHRNZW51SXRlbShHdGtNZW51SXRlbSopOwor
ICAgICAgICBDb250ZXh0TWVudUl0ZW0oR3RrQWN0aW9uKik7CiAjZW5kaWYKICAgICAgICAgfkNv
bnRleHRNZW51SXRlbSgpOwogCkBAIC0yNDEsNyArMjQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEga2V5Ym9hcmQgYWNjZWxlcmF0b3Ig
aGVyZT8KICNpZiBQTEFURk9STShHVEspCi0gICAgICAgIHN0YXRpYyBHdGtNZW51SXRlbSogY3Jl
YXRlTmF0aXZlTWVudUl0ZW0oY29uc3QgUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uJik7Cisg
ICAgICAgIHN0YXRpYyBHdGtBY3Rpb24qIGNyZWF0ZU5hdGl2ZU1lbnVJdGVtKGNvbnN0IFBsYXRm
b3JtTWVudUl0ZW1EZXNjcmlwdGlvbiYpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oCmluZGV4IDM4MGRlZDQuLjhmYmEx
ZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1NZW51RGVzY3JpcHRpb24u
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVudURlc2NyaXB0aW9uLmgKQEAgLTM3
LDcgKzM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSE1FTlVfXyogSE1FTlU7CiAjZWxpZiBQTEFURk9S
TShRVCkKICNpbmNsdWRlIDxxbGlzdC5oPgogI2VsaWYgUExBVEZPUk0oR1RLKQotdHlwZWRlZiBz
dHJ1Y3QgX0d0a01lbnUgR3RrTWVudTsKK3R5cGVkZWYgc3RydWN0IF9HdGtVSU1hbmFnZXIgR3Rr
VUlNYW5hZ2VyOwogI2VsaWYgUExBVEZPUk0oV1gpCiBjbGFzcyB3eE1lbnU7CiAjZWxpZiBQTEFU
Rk9STShIQUlLVSkKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIENvbnRleHRNZW51SXRlbTsKICAgICB0eXBlZGVmIGNvbnN0IFFMaXN0PENvbnRleHRNZW51
SXRlbT4qIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uOwogI2VsaWYgUExBVEZPUk0oR1RLKQotICAg
IHR5cGVkZWYgR3RrTWVudSogUGxhdGZvcm1NZW51RGVzY3JpcHRpb247CisgICAgdHlwZWRlZiBH
dGtVSU1hbmFnZXIqIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uOwogI2VsaWYgUExBVEZPUk0oV1gp
CiAgICAgdHlwZWRlZiB3eE1lbnUqIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uOwogI2VsaWYgUExB
VEZPUk0oSEFJS1UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVu
dUd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUd0ay5jcHAKaW5kZXgg
MjEwY2ZhNi4uN2Y2YTZlMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4
dE1lbnVHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNw
cApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5z
IFBldGVyIEZyZXl0aGVyCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IENvbGxhYm9yYSBMdGQuCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMCwzMiArMjEsODkgQEAKICNpbmNsdWRlICJDb250ZXh0
TWVudS5oIgogCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
Q1N0cmluZy5oIgorI2luY2x1ZGUgIkdPd25QdHIuaCIKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjZGVmaW5lIFBBVEhfT05fVUlfTUFOQUdFUiAiL3Vp
L3BvcHVwL2l0ZW0taG9sZGVyIgorCitzdGF0aWMgY29uc3QgY2hhciogbWVudVVJRGVzY3JpcHRp
b24gPQorIjx1aT5cbiIKKyIgIDxwb3B1cD5cbiIKKyIgICAgPHBsYWNlaG9sZGVyIG5hbWU9J2l0
ZW0taG9sZGVyJyAvPlxuIgorIiAgPC9wb3B1cD5cbiIKKyI8L3VpPiI7CisKIC8vIFRPRE86IHJl
Zi1jb3VudGluZyBjb3JyZWN0bmVzcyBjaGVja2luZy4KIC8vIFNlZSBodHRwOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjExNQogCi1zdGF0aWMgdm9pZCBtZW51SXRlbUFjdGl2
YXRlZChHdGtNZW51SXRlbSogaXRlbSwgQ29udGV4dE1lbnVDb250cm9sbGVyKiBjb250cm9sbGVy
KQorc3RhdGljIHZvaWQgbWVudUl0ZW1BY3RpdmF0ZWQoR3RrQWN0aW9uKiBhY3Rpb24sIENvbnRl
eHRNZW51Q29udHJvbGxlciogY29udHJvbGxlcikKIHsKLSAgICBDb250ZXh0TWVudUl0ZW0gY29u
dGV4dEl0ZW0oaXRlbSk7CisgICAgQ29udGV4dE1lbnVJdGVtIGNvbnRleHRJdGVtKGFjdGlvbik7
CiAgICAgY29udHJvbGxlci0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoJmNvbnRleHRJdGVtKTsK
IH0KIAogQ29udGV4dE1lbnU6OkNvbnRleHRNZW51KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3Vs
dCkKICAgICA6IG1faGl0VGVzdFJlc3VsdChyZXN1bHQpCiB7Ci0gICAgbV9wbGF0Zm9ybURlc2Ny
aXB0aW9uID0gR1RLX01FTlUoZ3RrX21lbnVfbmV3KCkpOworICAgIG1fcGxhdGZvcm1EZXNjcmlw
dGlvbiA9IGd0a191aV9tYW5hZ2VyX25ldygpOworCisgICAgR0Vycm9yKiBlcnJvciA9IDA7Cisg
ICAgZ3RrX3VpX21hbmFnZXJfYWRkX3VpX2Zyb21fc3RyaW5nKG1fcGxhdGZvcm1EZXNjcmlwdGlv
biwgbWVudVVJRGVzY3JpcHRpb24sIC0xLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikgeworICAg
ICAgICBnX2NyaXRpY2FsKCJGYWlsZWQgdG8gZ2VuZXJhdGUgbWVudSBmcm9tIFVJIGRlc2NyaXB0
aW9uOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKIAotICAgIGdfb2JqZWN0X3JlZl9zaW5rKEdfT0JK
RUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpOworICAgICAgICBnX2Vycm9yX2ZyZWUoZXJyb3Ip
OworCisgICAgICAgIGdfb2JqZWN0X3VucmVmKG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7CisgICAg
ICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbiA9IDA7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1fYWN0aW9uR3JvdXAgPSBndGtfYWN0aW9uX2dyb3VwX25ldygid2Via2l0LXBvcHVw
LW1lbnUiKTsKKyAgICBndGtfdWlfbWFuYWdlcl9pbnNlcnRfYWN0aW9uX2dyb3VwKG1fcGxhdGZv
cm1EZXNjcmlwdGlvbiwgbV9hY3Rpb25Hcm91cCwgMCk7CiB9CiAKIENvbnRleHRNZW51Ojp+Q29u
dGV4dE1lbnUoKQogewogICAgIGlmIChtX3BsYXRmb3JtRGVzY3JpcHRpb24pCiAgICAgICAgIGdf
b2JqZWN0X3VucmVmKG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7CisKKyAgICBpZiAobV9hY3Rpb25H
cm91cCkKKyAgICAgICAgZ19vYmplY3RfdW5yZWYobV9hY3Rpb25Hcm91cCk7Cit9CisKK3N0YXRp
YyBjaGFyKiBnZXRTdWJNZW51VUlEZWZpbml0aW9uRnJvbU1hbmFnZXIoR3RrVUlNYW5hZ2VyKiBt
YW5hZ2VyLCBjb25zdCBjaGFyKiBhY3Rpb25OYW1lKQoreworICAgIGNoYXIqIGV4aXN0aW5nVUkg
PSBndGtfdWlfbWFuYWdlcl9nZXRfdWkobWFuYWdlcik7CisKKyAgICBjaGFyKiBzdGFydCA9IGdf
c3Ryc3RyX2xlbihleGlzdGluZ1VJLCAtMSwgIjxtZW51aXRlbSIpOworICAgIGlmICghc3RhcnQp
CisgICAgICAgIHJldHVybiBnX3N0cmR1cCgiPHVpPjwvdWk+Iik7CisKKyAgICBjaGFyKiBlbmQg
PSBnX3N0cnJzdHIoc3RhcnQsICI8L3BsYWNlaG9sZGVyPiIpOworICAgIGlmICghZW5kKQorICAg
ICAgICByZXR1cm4gZ19zdHJkdXAoIjx1aT48L3VpPiIpOworCisgICAgZ29mZnNldCBsZW5ndGgg
PSBlbmQgLSBzdGFydDsKKworICAgIGNoYXIqIHJlc3VsdCA9IHN0YXRpY19jYXN0PGNoYXIqPihn
X21hbGxvYzAobGVuZ3RoICsgMSkpOworICAgIG1lbWNweShyZXN1bHQsIHN0YXJ0LCBsZW5ndGgp
OworCisgICAgY2hhciogVUlEZWZpbml0aW9uID0gZ19zdHJkdXBfcHJpbnRmKCI8dWk+XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8cG9wdXA+XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8cGxhY2Vob2xkZXIgbmFtZT0n
aXRlbS1ob2xkZXInPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiPG1lbnUgbmFtZT0nJXMnIGFjdGlvbj0nJXMnPiVzPC9tZW51PlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPC9wbGFjZWhvbGRlcj5cbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvcG9wdXA+XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8L3VpPiIsIGFjdGlvbk5hbWUsIGFjdGlv
bk5hbWUsIHJlc3VsdCk7CisgICAgZ19mcmVlKHJlc3VsdCk7CisKKyAgICByZXR1cm4gVUlEZWZp
bml0aW9uOwogfQogCiB2b2lkIENvbnRleHRNZW51OjphcHBlbmRJdGVtKENvbnRleHRNZW51SXRl
bSYgaXRlbSkKQEAgLTU0LDE0ICsxMTIsNzYgQEAgdm9pZCBDb250ZXh0TWVudTo6YXBwZW5kSXRl
bShDb250ZXh0TWVudUl0ZW0mIGl0ZW0pCiAgICAgY2hlY2tPckVuYWJsZUlmTmVlZGVkKGl0ZW0p
OwogCiAgICAgQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlID0gaXRlbS50eXBlKCk7Ci0gICAgR3Rr
TWVudUl0ZW0qIHBsYXRmb3JtSXRlbSA9IENvbnRleHRNZW51SXRlbTo6Y3JlYXRlTmF0aXZlTWVu
dUl0ZW0oaXRlbS5yZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpKTsKLSAgICBBU1NFUlQocGxh
dGZvcm1JdGVtKTsKLQotICAgIGlmICh0eXBlID09IEFjdGlvblR5cGUgfHwgdHlwZSA9PSBDaGVj
a2FibGVBY3Rpb25UeXBlKQotICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHBsYXRmb3JtSXRlbSwg
ImFjdGl2YXRlIiwgR19DQUxMQkFDSyhtZW51SXRlbUFjdGl2YXRlZCksIGNvbnRyb2xsZXIoKSk7
CiAKLSAgICBndGtfbWVudV9zaGVsbF9hcHBlbmQoR1RLX01FTlVfU0hFTEwobV9wbGF0Zm9ybURl
c2NyaXB0aW9uKSwgR1RLX1dJREdFVChwbGF0Zm9ybUl0ZW0pKTsKLSAgICBndGtfd2lkZ2V0X3No
b3coR1RLX1dJREdFVChwbGF0Zm9ybUl0ZW0pKTsKKyAgICBpZiAodHlwZSA9PSBTdWJtZW51VHlw
ZSkgeworICAgICAgICBHdGtVSU1hbmFnZXIqIHN1Yk1lbnUgPSBpdGVtLnBsYXRmb3JtU3ViTWVu
dSgpOworICAgICAgICBndWludCBtZXJnZUlEID0gZ3RrX3VpX21hbmFnZXJfbmV3X21lcmdlX2lk
KG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7CisgICAgICAgIGNoYXIqIGFjdGlvbk5hbWUgPSBnX3N0
cmR1cF9wcmludGYoIldlYktpdFN1Yk1lbnUlZCIsIG1lcmdlSUQpOworCisgICAgICAgIC8vIElm
IHdlIGRvIGhhdmUgYSBzdWJtZW51LCB3ZSBuZWVkIHRvIHBhc3MgYWxvbmcgdGhlIGFjdGlvbgor
ICAgICAgICAvLyBncm91cHMsIGJ1dCB3ZSBhbHNvIG5lZWQgdG8gcmV3b3JrIHRoZSBVSSBkZWZp
bml0aW9uIHRvIGZpdAorICAgICAgICAvLyB0aGUgbmVlZDsgR3RrVUlNYW5hZ2VyIGNvdWxkIGJl
IGJldHRlci4KKyAgICAgICAgY2hhciogVUlEZWZpbml0aW9uOworICAgICAgICBpZiAoc3ViTWVu
dSkgeworICAgICAgICAgICAgVUlEZWZpbml0aW9uID0gZ2V0U3ViTWVudVVJRGVmaW5pdGlvbkZy
b21NYW5hZ2VyKHN1Yk1lbnUsIGFjdGlvbk5hbWUpOworCisgICAgICAgICAgICAvLyBUaGlzIGxv
b2tzIG1lc3N5LCBidXQgdGhpcyBpcyB0aGUgZWFzaWVzdCB3YXkgSSBmb3VuZAorICAgICAgICAg
ICAgLy8gb2YgbG9hZGluZyB0aGUgYWN0aW9ucyB3aXRob3V0IHRoZSBuZWVkIHRvIGdlbmVyYXRl
CisgICAgICAgICAgICAvLyBuYW1lcyBmb3IgZWFjaCBvZiB0aGUgc3ViIG1lbnVzIGFjdGlvbiBn
cm91cHMgdXBvbgorICAgICAgICAgICAgLy8gY3JlYXRpb24uCisgICAgICAgICAgICBHTGlzdCog
c3ViTWVudUFjdGlvbkdyb3VwcyA9IGd0a191aV9tYW5hZ2VyX2dldF9hY3Rpb25fZ3JvdXBzKHN1
Yk1lbnUpOworICAgICAgICAgICAgZm9yICg7IHN1Yk1lbnVBY3Rpb25Hcm91cHMgIT0gMDsgc3Vi
TWVudUFjdGlvbkdyb3VwcyA9IHN1Yk1lbnVBY3Rpb25Hcm91cHMtPm5leHQpIHsKKyAgICAgICAg
ICAgICAgICBHdGtBY3Rpb25Hcm91cCogc3ViTWVudUFjdGlvbkdyb3VwID0gc3RhdGljX2Nhc3Q8
R3RrQWN0aW9uR3JvdXAqPihzdWJNZW51QWN0aW9uR3JvdXBzLT5kYXRhKTsKKyAgICAgICAgICAg
ICAgICBHTGlzdCogYWN0aW9ucyA9IGd0a19hY3Rpb25fZ3JvdXBfbGlzdF9hY3Rpb25zKHN1Yk1l
bnVBY3Rpb25Hcm91cCk7CisKKyAgICAgICAgICAgICAgICBmb3IgKEdMaXN0KiBub2RlID0gYWN0
aW9uczsgbm9kZSAhPSAwOyBub2RlID0gbm9kZS0+bmV4dCkgeworICAgICAgICAgICAgICAgICAg
ICBHdGtBY3Rpb24qIHN1Yk1lbnVBY3Rpb24gPSBzdGF0aWNfY2FzdDxHdGtBY3Rpb24qPihub2Rl
LT5kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgZ3RrX2FjdGlvbl9ncm91cF9yZW1vdmVfYWN0
aW9uKHN1Yk1lbnVBY3Rpb25Hcm91cCwgc3ViTWVudUFjdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgIGd0a19hY3Rpb25fZ3JvdXBfYWRkX2FjdGlvbihtX2FjdGlvbkdyb3VwLCBzdWJNZW51QWN0
aW9uKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBnX2xpc3RfZnJlZShh
Y3Rpb25zKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBVSURl
ZmluaXRpb24gPSBnX3N0cmR1cF9wcmludGYoIjx1aT48cG9wdXA+PG1lbnUgbmFtZT0nJXMnIGFj
dGlvbj0nJXMnLz48L3BvcHVwPjwvdWk+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhY3Rpb25OYW1lLCBhY3Rpb25OYW1lKTsKKworICAgICAgICBHdGtBY3Rp
b24qIGd0a0FjdGlvbiA9IGd0a19hY3Rpb25fbmV3KGFjdGlvbk5hbWUsIGl0ZW0udGl0bGUoKS51
dGY4KCkuZGF0YSgpLCAwLCAwKTsKKyAgICAgICAgZ3RrX2FjdGlvbl9ncm91cF9hZGRfYWN0aW9u
KG1fYWN0aW9uR3JvdXAsIGd0a0FjdGlvbik7CisKKyAgICAgICAgR0Vycm9yKiBlcnJvciA9IDA7
CisgICAgICAgIGd0a191aV9tYW5hZ2VyX2FkZF91aV9mcm9tX3N0cmluZyhtX3BsYXRmb3JtRGVz
Y3JpcHRpb24sIFVJRGVmaW5pdGlvbiwgLTEsICZlcnJvcik7CisgICAgICAgIGlmIChlcnJvcikg
eworICAgICAgICAgICAgZ19jcml0aWNhbCgiRXJyb3IgYWRkaW5nIFVJIGRlZmluaXRpb246ICVz
IiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICAgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGdfZnJlZShhY3Rpb25OYW1lKTsKKyAgICAgICAgZ19mcmVlKFVJ
RGVmaW5pdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodHlwZSA9PSBT
ZXBhcmF0b3JUeXBlKSB7CisgICAgICAgIGd0a191aV9tYW5hZ2VyX2FkZF91aShtX3BsYXRmb3Jt
RGVzY3JpcHRpb24sIGd0a191aV9tYW5hZ2VyX25ld19tZXJnZV9pZChtX3BsYXRmb3JtRGVzY3Jp
cHRpb24pLCBQQVRIX09OX1VJX01BTkFHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAwLCBHVEtfVUlfTUFOQUdFUl9TRVBBUkFUT1IsIEZBTFNFKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbiBwbGF0Zm9ybUl0ZW0g
PSBpdGVtLnJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9uKCk7CisgICAgR3RrQWN0aW9uKiBndGtB
Y3Rpb24gPSBDb250ZXh0TWVudUl0ZW06OmNyZWF0ZU5hdGl2ZU1lbnVJdGVtKHBsYXRmb3JtSXRl
bSk7CisgICAgaWYgKCFndGtBY3Rpb24pIHsKKyAgICAgICAgZ193YXJuaW5nKCJJdGVtIG5vdCBh
ZGRlZDogJXMiLCBwbGF0Zm9ybUl0ZW0udGl0bGUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBndGtfYWN0aW9uX2dyb3VwX2FkZF9hY3Rpb24obV9hY3Rpb25H
cm91cCwgZ3RrQWN0aW9uKTsKKworICAgIGNvbnN0IGNoYXIqIGFjdGlvbk5hbWUgPSBndGtfYWN0
aW9uX2dldF9uYW1lKGd0a0FjdGlvbik7CisKKyAgICBndGtfdWlfbWFuYWdlcl9hZGRfdWkobV9w
bGF0Zm9ybURlc2NyaXB0aW9uLCBndGtfdWlfbWFuYWdlcl9uZXdfbWVyZ2VfaWQobV9wbGF0Zm9y
bURlc2NyaXB0aW9uKSwgUEFUSF9PTl9VSV9NQU5BR0VSLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBhY3Rpb25OYW1lLCBhY3Rpb25OYW1lLCBHVEtfVUlfTUFOQUdFUl9NRU5VSVRFTSwgRkFM
U0UpOworCisgICAgZ19zaWduYWxfY29ubmVjdChndGtBY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FM
TEJBQ0sobWVudUl0ZW1BY3RpdmF0ZWQpLCBjb250cm9sbGVyKCkpOwogfQogCiB2b2lkIENvbnRl
eHRNZW51OjpzZXRQbGF0Zm9ybURlc2NyaXB0aW9uKFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIG1l
bnUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1HdGsu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcAppbmRleCBh
YWVjMjA2Li5hMDU5YTQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0
TWVudUl0ZW1HdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRl
bUd0ay5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAwNyBIb2xn
ZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogIENvcHlyaWdodCAoQykgMjAwOSBDb2xsYWJvcmEg
THRkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjgsMTAxICsyOSwxOTUgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgY2hhciogZ3RrU3RvY2tJREZyb21Db250ZXh0
TWVudUFjdGlvbihjb25zdCBDb250ZXh0TWVudUFjdGlvbiYgYWN0aW9uKQorc3RhdGljIEd0a0Fj
dGlvbiogZ3RrQWN0aW9uRnJvbVBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbihjb25zdCBQbGF0
Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24mIG1lbnUpCiB7Ci0gICAgc3dpdGNoIChhY3Rpb24pIHsK
KyAgICBjb25zdCBjaGFyKiBhY3Rpb25OYW1lOworICAgIGNvbnN0IGNoYXIqIHN0b2NrSUQ7CisK
KyAgICBzd2l0Y2ggKG1lbnUuYWN0aW9uKSB7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdD
b3B5TGlua1RvQ2xpcGJvYXJkOgorICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdENvcHlMaW5r
VG9DbGlwYm9hcmQiOworICAgICAgICBzdG9ja0lEID0gR1RLX1NUT0NLX0NPUFk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQ6
CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0Q29weUltYWdlVG9DbGlwYm9hcmQiOworICAg
ICAgICBzdG9ja0lEID0gR1RLX1NUT0NLX0NPUFk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQ29weToKLSAgICAgICAgcmV0dXJuIEdUS19TVE9DS19DT1BZOwor
ICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdENvcHkiOworICAgICAgICBzdG9ja0lEID0gR1RL
X1NUT0NLX0NPUFk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFn
T3BlbkxpbmtJbk5ld1dpbmRvdzoKKyAgICAgICAgYWN0aW9uTmFtZSA9ICJXZWJLaXRPcGVuTGlu
a0luTmV3V2luZG93IjsKKyAgICAgICAgc3RvY2tJRCA9IEdUS19TVE9DS19PUEVOOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93
OgorICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdE9wZW5JbWFnZUluTmV3V2luZG93IjsKKyAg
ICAgICAgc3RvY2tJRCA9IEdUS19TVE9DS19PUEVOOworICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93OgotICAgICAgICByZXR1cm4g
R1RLX1NUT0NLX09QRU47CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0T3BlbkZyYW1lSW5O
ZXdXaW5kb3ciOworICAgICAgICBzdG9ja0lEID0gR1RLX1NUT0NLX09QRU47CisgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrOgorICAg
ICAgICBhY3Rpb25OYW1lID0gIldlYktpdERvd25sb2FkTGlua1RvRGlzayI7CisgICAgICAgIHN0
b2NrSUQgPSBHVEtfU1RPQ0tfU0FWRTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0
TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrOgotICAgICAgICByZXR1cm4gR1RLX1NUT0NL
X1NBVkU7CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0RG93bmxvYWRJbWFnZVRvRGlzayI7
CisgICAgICAgIHN0b2NrSUQgPSBHVEtfU1RPQ0tfU0FWRTsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdHb0JhY2s6Ci0gICAgICAgIHJldHVybiBHVEtfU1RPQ0tf
R09fQkFDSzsKKyAgICAgICAgYWN0aW9uTmFtZSA9ICJXZWJLaXRHb0JhY2siOworICAgICAgICBz
dG9ja0lEID0gR1RLX1NUT0NLX0dPX0JBQ0s7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkOgotICAgICAgICByZXR1cm4gR1RLX1NUT0NLX0dPX0ZP
UldBUkQ7CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0R29Gb3J3YXJkIjsKKyAgICAgICAg
c3RvY2tJRCA9IEdUS19TVE9DS19HT19GT1JXQVJEOworICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1N0b3A6Ci0gICAgICAgIHJldHVybiBHVEtfU1RPQ0tfU1RPUDsK
KyAgICAgICAgYWN0aW9uTmFtZSA9ICJXZWJLaXRTdG9wIjsKKyAgICAgICAgc3RvY2tJRCA9IEdU
S19TVE9DS19TVE9QOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z1JlbG9hZDoKLSAgICAgICAgcmV0dXJuIEdUS19TVE9DS19SRUZSRVNIOworICAgICAgICBhY3Rp
b25OYW1lID0gIldlYktpdFJlbG9hZCI7CisgICAgICAgIHN0b2NrSUQgPSBHVEtfU1RPQ0tfUkVG
UkVTSDsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDdXQ6Ci0g
ICAgICAgIHJldHVybiBHVEtfU1RPQ0tfQ1VUOworICAgICAgICBhY3Rpb25OYW1lID0gIldlYktp
dEN1dCI7CisgICAgICAgIHN0b2NrSUQgPSBHVEtfU1RPQ0tfQ1VUOworICAgICAgICBicmVhazsK
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Bhc3RlOgotICAgICAgICByZXR1cm4gR1RLX1NU
T0NLX1BBU1RFOworICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdFBhc3RlIjsKKyAgICAgICAg
c3RvY2tJRCA9IEdUS19TVE9DS19QQVNURTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdEZWxldGU6Ci0gICAgICAgIHJldHVybiBHVEtfU1RPQ0tfREVMRVRFOwor
ICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdERlbGV0ZSI7CisgICAgICAgIHN0b2NrSUQgPSBH
VEtfU1RPQ0tfREVMRVRFOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgcmV0dXJuIEdUS19TVE9DS19TRUxFQ1RfQUxMOworICAg
ICAgICBhY3Rpb25OYW1lID0gIldlYktpdFNlbGVjdEFsbCI7CisgICAgICAgIHN0b2NrSUQgPSBH
VEtfU1RPQ0tfU0VMRUNUX0FMTDsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdTcGVsbGluZ0d1ZXNzOgotICAgICAgICByZXR1cm4gR1RLX1NUT0NLX0lORk87Cisg
ICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0U3BlbGxpbmdHdWVzcyI7CisgICAgICAgIHN0b2Nr
SUQgPSBHVEtfU1RPQ0tfSU5GTzsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdJZ25vcmVTcGVsbGluZzoKLSAgICAgICAgcmV0dXJuIEdUS19TVE9DS19OTzsKKyAg
ICAgICAgYWN0aW9uTmFtZSA9ICJXZWJLaXRJZ25vcmVTcGVsbGluZyI7CisgICAgICAgIHN0b2Nr
SUQgPSBHVEtfU1RPQ0tfTk87CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnTGVhcm5TcGVsbGluZzoKLSAgICAgICAgcmV0dXJuIEdUS19TVE9DS19PSzsKKyAgICAg
ICAgYWN0aW9uTmFtZSA9ICJXZWJLaXRMZWFyblNwZWxsaW5nIjsKKyAgICAgICAgc3RvY2tJRCA9
IEdUS19TVE9DS19ZRVM7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnT3RoZXI6Ci0gICAgICAgIHJldHVybiBHVEtfU1RPQ0tfTUlTU0lOR19JTUFHRTsKKyAgICAg
ICAgYWN0aW9uTmFtZSA9ICJXZWJLaXRPdGhlciI7CisgICAgICAgIHN0b2NrSUQgPSBHVEtfU1RP
Q0tfTUlTU0lOR19JTUFHRTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdTZWFyY2hJblNwb3RsaWdodDoKLSAgICAgICAgcmV0dXJuIEdUS19TVE9DS19GSU5EOwor
ICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdFNlYXJjaEluU3BvdGxpZ2h0IjsKKyAgICAgICAg
c3RvY2tJRCA9IEdUS19TVE9DS19GSU5EOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1NlYXJjaFdlYjoKLSAgICAgICAgcmV0dXJuIEdUS19TVE9DS19GSU5EOwor
ICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdFNlYXJjaFdlYiI7CisgICAgICAgIHN0b2NrSUQg
PSBHVEtfU1RPQ0tfRklORDsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdPcGVuV2l0aERlZmF1bHRBcHBsaWNhdGlvbjoKLSAgICAgICAgcmV0dXJuIEdUS19TVE9D
S19PUEVOOworICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdE9wZW5XaXRoRGVmYXVsdEFwcGxp
Y2F0aW9uIjsKKyAgICAgICAgc3RvY2tJRCA9IEdUS19TVE9DS19PUEVOOworICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVBERlpvb21JbjoKLSAgICAgICAgcmV0dXJuIEdU
S19TVE9DS19aT09NX0lOOworICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdFBERlpvb21JbiI7
CisgICAgICAgIHN0b2NrSUQgPSBHVEtfU1RPQ0tfWk9PTV9JTjsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1QREZab29tT3V0OgotICAgICAgICByZXR1cm4gR1RLX1NU
T0NLX1pPT01fT1VUOworICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdFBERlpvb21PdXQiOwor
ICAgICAgICBzdG9ja0lEID0gR1RLX1NUT0NLX1pPT01fT1VUOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVBERkF1dG9TaXplOgotICAgICAgICByZXR1cm4gR1RLX1NU
T0NLX1pPT01fRklUOworICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdFBERkF1dG9TaXplIjsK
KyAgICAgICAgc3RvY2tJRCA9IEdUS19TVE9DS19aT09NX0ZJVDsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1QREZOZXh0UGFnZToKLSAgICAgICAgcmV0dXJuIEdUS19T
VE9DS19HT19GT1JXQVJEOworICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdFBERk5leHRQYWdl
IjsKKyAgICAgICAgc3RvY2tJRCA9IEdUS19TVE9DS19HT19GT1JXQVJEOworICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVBERlByZXZpb3VzUGFnZToKLSAgICAgICAgcmV0
dXJuIEdUS19TVE9DS19HT19CQUNLOwotICAgIC8vIE5ldyB0YWdzLCBub3QgcGFydCBvZiBBUEkK
KyAgICAgICAgYWN0aW9uTmFtZSA9ICJXZWJLaXRQREZQcmV2aW91c1BhZ2UiOworICAgICAgICBz
dG9ja0lEID0gR1RLX1NUT0NLX0dPX0JBQ0s7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnT3Blbkxpbms6Ci0gICAgICAgIHJldHVybiBHVEtfU1RPQ0tfT1BFTjsK
KyAgICAgICAgYWN0aW9uTmFtZSA9ICJXZWJLaXRPcGVuTGluayI7CisgICAgICAgIHN0b2NrSUQg
PSBHVEtfU1RPQ0tfT1BFTjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdDaGVja1NwZWxsaW5nOgotICAgICAgICByZXR1cm4gR1RLX1NUT0NLX1NQRUxMX0NIRUNL
OworICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdENoZWNrU3BlbGxpbmciOworICAgICAgICBz
dG9ja0lEID0gR1RLX1NUT0NLX1NQRUxMX0NIRUNLOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZzoKKyAgICAgICAgYWN0
aW9uTmFtZSA9ICJXZWJLaXRDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmciOworICAgICAgICBzdG9j
a0lEID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVj
a0dyYW1tYXJXaXRoU3BlbGxpbmc6CisgICAgICAgIGFjdGlvbk5hbWUgPSAiV2ViS2l0Q2hlY2tH
cmFtbWFyV2l0aFNwZWxsaW5nIjsKKyAgICAgICAgc3RvY2tJRCA9IDA7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWw6CisgICAgICAg
IGFjdGlvbk5hbWUgPSAiV2ViS2l0U2hvd1NwZWxsaW5nUGFuZWwiOworICAgICAgICBzdG9ja0lE
ID0gMDsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdGb250TWVu
dToKLSAgICAgICAgcmV0dXJuIEdUS19TVE9DS19TRUxFQ1RfRk9OVDsKKyAgICAgICAgYWN0aW9u
TmFtZSA9ICJXZWJLaXRGb250TWVudSI7CisgICAgICAgIHN0b2NrSUQgPSBHVEtfU1RPQ0tfU0VM
RUNUX0ZPTlQ7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU2hv
d0ZvbnRzOgotICAgICAgICByZXR1cm4gR1RLX1NUT0NLX1NFTEVDVF9GT05UOworICAgICAgICBh
Y3Rpb25OYW1lID0gIldlYktpdFNob3dGb250cyI7CisgICAgICAgIHN0b2NrSUQgPSBHVEtfU1RP
Q0tfU0VMRUNUX0ZPTlQ7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnQm9sZDoKLSAgICAgICAgcmV0dXJuIEdUS19TVE9DS19CT0xEOworICAgICAgICBhY3Rpb25O
YW1lID0gIldlYktpdEJvbGQiOworICAgICAgICBzdG9ja0lEID0gR1RLX1NUT0NLX0JPTEQ7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnSXRhbGljOgotICAgICAg
ICByZXR1cm4gR1RLX1NUT0NLX0lUQUxJQzsKKyAgICAgICAgYWN0aW9uTmFtZSA9ICJXZWJLaXRJ
dGFsaWMiOworICAgICAgICBzdG9ja0lEID0gR1RLX1NUT0NLX0lUQUxJQzsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6Ci0gICAgICAgIHJldHVy
biBHVEtfU1RPQ0tfVU5ERVJMSU5FOworICAgICAgICBhY3Rpb25OYW1lID0gIldlYktpdFVuZGVy
bGluZSI7CisgICAgICAgIHN0b2NrSUQgPSBHVEtfU1RPQ0tfVU5ERVJMSU5FOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ091dGxpbmU6CisgICAgICAgIGFjdGlv
bk5hbWUgPSAiV2ViS2l0T3V0bGluZSI7CisgICAgICAgIHN0b2NrSUQgPSAwOworICAgICAgICBi
cmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnM6Ci0gICAgICAgIHJl
dHVybiBHVEtfU1RPQ0tfU0VMRUNUX0NPTE9SOworICAgICAgICBhY3Rpb25OYW1lID0gIldlYktp
dFNob3dDb2xvcnMiOworICAgICAgICBzdG9ja0lEID0gR1RLX1NUT0NLX1NFTEVDVF9DT0xPUjsK
KyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAg
fQorCisgICAgaWYgKG1lbnUudHlwZSA9PSBDaGVja2FibGVBY3Rpb25UeXBlKQorICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHdGtBY3Rpb24qPihndGtfdG9nZ2xlX2FjdGlvbl9uZXco
YWN0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1lbnUudGl0bGUudXRmOCgpLmRhdGEoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdG9ja0lEKSk7CisKKyAgICByZXR1cm4gZ3RrX2FjdGlvbl9uZXco
YWN0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudS50aXRsZS51dGY4KCku
ZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdG9ja0lEKTsKIH0KIAogLy8gRXh0cmFjdCB0aGUgQWN0aW9uVHlwZSBmcm9t
IHRoZSBtZW51IGl0ZW0KLUNvbnRleHRNZW51SXRlbTo6Q29udGV4dE1lbnVJdGVtKEd0a01lbnVJ
dGVtKiBpdGVtKQorQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0oR3RrQWN0aW9uKiBh
Y3Rpb24pCiAgICAgOiBtX3BsYXRmb3JtRGVzY3JpcHRpb24oKQogewotICAgIGlmIChHVEtfSVNf
U0VQQVJBVE9SX01FTlVfSVRFTShpdGVtKSkKLSAgICAgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9u
LnR5cGUgPSBTZXBhcmF0b3JUeXBlOwotICAgIGVsc2UgaWYgKGd0a19tZW51X2l0ZW1fZ2V0X3N1
Ym1lbnUoaXRlbSkpCi0gICAgICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi50eXBlID0gU3VibWVu
dVR5cGU7Ci0gICAgZWxzZSBpZiAoR1RLX0lTX0NIRUNLX01FTlVfSVRFTShpdGVtKSkgewotICAg
ICAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24udHlwZSA9IENoZWNrYWJsZUFjdGlvblR5cGU7Ci0g
ICAgICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5jaGVja2VkID0gZ3RrX2NoZWNrX21lbnVfaXRl
bV9nZXRfYWN0aXZlKEdUS19DSEVDS19NRU5VX0lURU0oaXRlbSkpOwotICAgIH0gZWxzZQotICAg
ICAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24udHlwZSA9IEFjdGlvblR5cGU7CisgICAgbV9wbGF0
Zm9ybURlc2NyaXB0aW9uLnR5cGUgPSBBY3Rpb25UeXBlOwogCi0gICAgbV9wbGF0Zm9ybURlc2Ny
aXB0aW9uLmFjdGlvbiA9ICpzdGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbio+KGdfb2JqZWN0
X2dldF9kYXRhKEdfT0JKRUNUKGl0ZW0pLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTikpOwot
Ci0gICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLnN1Yk1lbnUgPSBHVEtfTUVOVShndGtfbWVudV9p
dGVtX2dldF9zdWJtZW51KGl0ZW0pKTsKLSAgICBpZiAobV9wbGF0Zm9ybURlc2NyaXB0aW9uLnN1
Yk1lbnUpCi0gICAgICAgIGdfb2JqZWN0X3JlZihtX3BsYXRmb3JtRGVzY3JpcHRpb24uc3ViTWVu
dSk7CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLmFjdGlvbiA9ICpzdGF0aWNfY2FzdDxDb250
ZXh0TWVudUFjdGlvbio+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKGFjdGlvbiksIFdFQktJ
VF9DT05URVhUX01FTlVfQUNUSU9OKSk7CiB9CiAKIENvbnRleHRNZW51SXRlbTo6Q29udGV4dE1l
bnVJdGVtKENvbnRleHRNZW51KikKQEAgLTE0MSwzOSArMjM2LDIxIEBAIENvbnRleHRNZW51SXRl
bTo6Q29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51SXRlbVR5cGUgdHlwZSwgQ29udGV4dE1lbnVB
Y3Rpb24gYWN0CiAKIENvbnRleHRNZW51SXRlbTo6fkNvbnRleHRNZW51SXRlbSgpCiB7Ci0gICAg
aWYgKG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5zdWJNZW51KQotICAgICAgICBnX29iamVjdF91bnJl
ZihtX3BsYXRmb3JtRGVzY3JpcHRpb24uc3ViTWVudSk7CiB9CiAKLUd0a01lbnVJdGVtKiBDb250
ZXh0TWVudUl0ZW06OmNyZWF0ZU5hdGl2ZU1lbnVJdGVtKGNvbnN0IFBsYXRmb3JtTWVudUl0ZW1E
ZXNjcmlwdGlvbiYgbWVudSkKK0d0a0FjdGlvbiogQ29udGV4dE1lbnVJdGVtOjpjcmVhdGVOYXRp
dmVNZW51SXRlbShjb25zdCBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24mIG1lbnUpCiB7Ci0g
ICAgR3RrTWVudUl0ZW0qIGl0ZW0gPSAwOwotICAgIGlmIChtZW51LnR5cGUgPT0gU2VwYXJhdG9y
VHlwZSkKLSAgICAgICAgaXRlbSA9IEdUS19NRU5VX0lURU0oZ3RrX3NlcGFyYXRvcl9tZW51X2l0
ZW1fbmV3KCkpOwotICAgIGVsc2UgewotICAgICAgICBpZiAobWVudS50eXBlID09IENoZWNrYWJs
ZUFjdGlvblR5cGUpIHsKLSAgICAgICAgICAgIGl0ZW0gPSBHVEtfTUVOVV9JVEVNKGd0a19jaGVj
a19tZW51X2l0ZW1fbmV3X3dpdGhfbW5lbW9uaWMobWVudS50aXRsZS51dGY4KCkuZGF0YSgpKSk7
Ci0gICAgICAgICAgICBndGtfY2hlY2tfbWVudV9pdGVtX3NldF9hY3RpdmUoR1RLX0NIRUNLX01F
TlVfSVRFTShpdGVtKSwgbWVudS5jaGVja2VkKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGlmIChjb25zdCBnY2hhciogc3RvY2tJRCA9IGd0a1N0b2NrSURGcm9tQ29udGV4dE1lbnVB
Y3Rpb24obWVudS5hY3Rpb24pKSB7Ci0gICAgICAgICAgICAgICAgaXRlbSA9IEdUS19NRU5VX0lU
RU0oZ3RrX2ltYWdlX21lbnVfaXRlbV9uZXdfd2l0aF9tbmVtb25pYyhtZW51LnRpdGxlLnV0Zjgo
KS5kYXRhKCkpKTsKLSAgICAgICAgICAgICAgICBHdGtXaWRnZXQqIGltYWdlID0gZ3RrX2ltYWdl
X25ld19mcm9tX3N0b2NrKHN0b2NrSUQsIEdUS19JQ09OX1NJWkVfTUVOVSk7Ci0gICAgICAgICAg
ICAgICAgZ3RrX2ltYWdlX21lbnVfaXRlbV9zZXRfaW1hZ2UoR1RLX0lNQUdFX01FTlVfSVRFTShp
dGVtKSwgaW1hZ2UpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgaXRlbSA9
IEdUS19NRU5VX0lURU0oZ3RrX21lbnVfaXRlbV9uZXdfd2l0aF9tbmVtb25pYyhtZW51LnRpdGxl
LnV0ZjgoKS5kYXRhKCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIENvbnRleHRNZW51QWN0aW9u
KiBtZW51QWN0aW9uID0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24qPihtYWxsb2Moc2l6
ZW9mKENvbnRleHRNZW51QWN0aW9uKikpKTsKLSAgICAgICAgKm1lbnVBY3Rpb24gPSBtZW51LmFj
dGlvbjsKLSAgICAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoaXRlbSksIFdFQktJVF9D
T05URVhUX01FTlVfQUNUSU9OLCBtZW51QWN0aW9uKTsKKyAgICBHdGtBY3Rpb24qIGd0a0FjdGlv
biA9IGd0a0FjdGlvbkZyb21QbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24obWVudSk7CisgICAg
aWYgKCFndGtBY3Rpb24pCisgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIGd0a193aWRnZXRf
c2V0X3NlbnNpdGl2ZShHVEtfV0lER0VUKGl0ZW0pLCBtZW51LmVuYWJsZWQpOworICAgIENvbnRl
eHRNZW51QWN0aW9uKiBtZW51QWN0aW9uID0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24q
PihtYWxsb2Moc2l6ZW9mKENvbnRleHRNZW51QWN0aW9uKikpKTsKKyAgICAqbWVudUFjdGlvbiA9
IG1lbnUuYWN0aW9uOworICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGd0a0FjdGlvbiks
IFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OLCBtZW51QWN0aW9uKTsKIAotICAgICAgICBpZiAo
bWVudS5zdWJNZW51KQotICAgICAgICAgICAgZ3RrX21lbnVfaXRlbV9zZXRfc3VibWVudShpdGVt
LCBHVEtfV0lER0VUKG1lbnUuc3ViTWVudSkpOwotICAgIH0KKyAgICBndGtfYWN0aW9uX3NldF9z
ZW5zaXRpdmUoZ3RrQWN0aW9uLCBtZW51LmVuYWJsZWQpOwogCi0gICAgcmV0dXJuIGl0ZW07Cisg
ICAgcmV0dXJuIGd0a0FjdGlvbjsKIH0KIAogUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIENv
bnRleHRNZW51SXRlbTo6cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKQpAQCAtMjA1LDEzICsy
ODIsMTIgQEAgdm9pZCBDb250ZXh0TWVudUl0ZW06OnNldEFjdGlvbihDb250ZXh0TWVudUFjdGlv
biBhY3Rpb24pCiAKIFN0cmluZyBDb250ZXh0TWVudUl0ZW06OnRpdGxlKCkgY29uc3QKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gbV9w
bGF0Zm9ybURlc2NyaXB0aW9uLnRpdGxlOwogfQogCi12b2lkIENvbnRleHRNZW51SXRlbTo6c2V0
VGl0bGUoY29uc3QgU3RyaW5nJikKK3ZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRUaXRsZShjb25z
dCBTdHJpbmcmIHRpdGxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9wbGF0Zm9y
bURlc2NyaXB0aW9uLnRpdGxlID0gdGl0bGU7CiB9CiAKIFBsYXRmb3JtTWVudURlc2NyaXB0aW9u
IENvbnRleHRNZW51SXRlbTo6cGxhdGZvcm1TdWJNZW51KCkgY29uc3QKQEAgLTIyMSwxNiArMjk3
LDExIEBAIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51SXRlbTo6cGxhdGZvcm1T
dWJNZW51KCkgY29uc3QKIAogdm9pZCBDb250ZXh0TWVudUl0ZW06OnNldFN1Yk1lbnUoQ29udGV4
dE1lbnUqIG1lbnUpCiB7Ci0gICAgaWYgKG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5zdWJNZW51KQot
ICAgICAgICBnX29iamVjdF91bnJlZihtX3BsYXRmb3JtRGVzY3JpcHRpb24uc3ViTWVudSk7Ci0K
ICAgICBpZiAoIW1lbnUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGxhdGZvcm1EZXNjcmlw
dGlvbi5zdWJNZW51ID0gbWVudS0+cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsKICAgICBt
X3BsYXRmb3JtRGVzY3JpcHRpb24udHlwZSA9IFN1Ym1lbnVUeXBlOwotCi0gICAgZ19vYmplY3Rf
cmVmX3NpbmsoR19PQkpFQ1QobV9wbGF0Zm9ybURlc2NyaXB0aW9uLnN1Yk1lbnUpKTsKIH0KIAog
dm9pZCBDb250ZXh0TWVudUl0ZW06OnNldENoZWNrZWQoYm9vbCBzaG91bGRDaGVjaykKZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3Bw
IGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAKaW5k
ZXggYmY0N2NhOC4uOTc0YzczOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAKQEAgLTQ1LDExNyArNDUsMTEgQEAgdm9pZCBDb250
ZXh0TWVudUNsaWVudDo6Y29udGV4dE1lbnVEZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwog
fQogCi1zdGF0aWMgR3RrV2lkZ2V0KiBpbnB1dE1ldGhvZHNNZW51SXRlbSAoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKLXsKLSAgICBpZiAoZ3RrX21ham9yX3ZlcnNpb24gPiAyIHx8IChndGtfbWFq
b3JfdmVyc2lvbiA9PSAyICYmIGd0a19taW5vcl92ZXJzaW9uID49IDEwKSkgewotICAgICAgICBH
dGtTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJWaWV3ID8gZ3RrX3dpZGdldF9nZXRfc2V0dGluZ3Mo
R1RLX1dJREdFVCh3ZWJWaWV3KSkgOiBndGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQoKTsKLQotICAg
ICAgICBnYm9vbGVhbiBzaG93TWVudSA9IFRSVUU7Ci0gICAgICAgIGlmIChzZXR0aW5ncykKLSAg
ICAgICAgICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImd0ay1zaG93LWlucHV0LW1ldGhvZC1t
ZW51IiwgJnNob3dNZW51LCBOVUxMKTsKLSAgICAgICAgaWYgKCFzaG93TWVudSkKLSAgICAgICAg
ICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEd0a1dpZGdldCogbWVudWl0ZW0gPSBndGtfaW1h
Z2VfbWVudV9pdGVtX25ld193aXRoX21uZW1vbmljKAotICAgICAgICBfKCJJbnB1dCBfTWV0aG9k
cyIpKTsKLQotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVX
X0dFVF9QUklWQVRFKHdlYlZpZXcpOwotICAgIEd0a1dpZGdldCogaW1Db250ZXh0TWVudSA9IGd0
a19tZW51X25ldygpOwotICAgIGd0a19pbV9tdWx0aWNvbnRleHRfYXBwZW5kX21lbnVpdGVtcyhH
VEtfSU1fTVVMVElDT05URVhUKHByaXYtPmltQ29udGV4dCksIEdUS19NRU5VX1NIRUxMKGltQ29u
dGV4dE1lbnUpKTsKLQotICAgIGd0a19tZW51X2l0ZW1fc2V0X3N1Ym1lbnUoR1RLX01FTlVfSVRF
TShtZW51aXRlbSksIGltQ29udGV4dE1lbnUpOwotCi0gICAgcmV0dXJuIG1lbnVpdGVtOwotfQot
Ci0vLyBWYWx1ZXMgdGFrZW4gZnJvbSBndGt0ZXh0dXRpbC5jCi10eXBlZGVmIHN0cnVjdCB7Ci0g
IGNvbnN0IGNoYXIgKmxhYmVsOwotICBndW5pY2hhciBjaDsKLX0gR3RrVW5pY29kZU1lbnVFbnRy
eTsKLXN0YXRpYyBjb25zdCBHdGtVbmljb2RlTWVudUVudHJ5IGJpZGlfbWVudV9lbnRyaWVzW10g
PSB7Ci0gIHsgTl8oIkxSTSBfTGVmdC10by1yaWdodCBtYXJrIiksIDB4MjAwRSB9LAotICB7IE5f
KCJSTE0gX1JpZ2h0LXRvLWxlZnQgbWFyayIpLCAweDIwMEYgfSwKLSAgeyBOXygiTFJFIExlZnQt
dG8tcmlnaHQgX2VtYmVkZGluZyIpLCAweDIwMkEgfSwKLSAgeyBOXygiUkxFIFJpZ2h0LXRvLWxl
ZnQgZV9tYmVkZGluZyIpLCAweDIwMkIgfSwKLSAgeyBOXygiTFJPIExlZnQtdG8tcmlnaHQgX292
ZXJyaWRlIiksIDB4MjAyRCB9LAotICB7IE5fKCJSTE8gUmlnaHQtdG8tbGVmdCBvX3ZlcnJpZGUi
KSwgMHgyMDJFIH0sCi0gIHsgTl8oIlBERiBfUG9wIGRpcmVjdGlvbmFsIGZvcm1hdHRpbmciKSwg
MHgyMDJDIH0sCi0gIHsgTl8oIlpXUyBfWmVybyB3aWR0aCBzcGFjZSIpLCAweDIwMEIgfSwKLSAg
eyBOXygiWldKIFplcm8gd2lkdGggX2pvaW5lciIpLCAweDIwMEQgfSwKLSAgeyBOXygiWldOSiBa
ZXJvIHdpZHRoIF9ub24tam9pbmVyIiksIDB4MjAwQyB9Ci19OwotCi1zdGF0aWMgdm9pZCBpbnNl
cnRDb250cm9sQ2hhcmFjdGVyKEd0a1dpZGdldCogd2lkZ2V0KQotewotICAgIC8vIEd0a1VuaWNv
ZGVNZW51RW50cnkqIGVudHJ5ID0gKEd0a1VuaWNvZGVNZW51RW50cnkqKWdfb2JqZWN0X2dldF9k
YXRhKEdfT0JKRUNUKHdpZGdldCksICJndGstdW5pY29kZS1tZW51LWVudHJ5Iik7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotc3RhdGljIEd0a1dpZGdldCogdW5pY29kZU1lbnVJdGVtKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCi17Ci0gICAgaWYgKGd0a19tYWpvcl92ZXJzaW9uID4gMiB8
fCAoZ3RrX21ham9yX3ZlcnNpb24gPT0gMiAmJiBndGtfbWlub3JfdmVyc2lvbiA+PSAxMCkpIHsK
LSAgICAgICAgR3RrU2V0dGluZ3MqIHNldHRpbmdzID0gd2ViVmlldyA/IGd0a193aWRnZXRfZ2V0
X3NldHRpbmdzKEdUS19XSURHRVQod2ViVmlldykpIDogZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0
KCk7Ci0KLSAgICAgICAgZ2Jvb2xlYW4gc2hvd01lbnUgPSBUUlVFOwotICAgICAgICBpZiAoc2V0
dGluZ3MpCi0gICAgICAgICAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJndGstc2hvdy11bmlj
b2RlLW1lbnUiLCAmc2hvd01lbnUsIE5VTEwpOwotICAgICAgICBpZiAoIXNob3dNZW51KQotICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgR3RrV2lkZ2V0KiBtZW51aXRlbSA9IGd0
a19pbWFnZV9tZW51X2l0ZW1fbmV3X3dpdGhfbW5lbW9uaWMoCi0gICAgICAgIF8oIl9JbnNlcnQg
VW5pY29kZSBDb250cm9sIENoYXJhY3RlciIpKTsKLQotICAgIEd0a1dpZGdldCogdW5pY29kZUNv
bnRleHRNZW51ID0gZ3RrX21lbnVfbmV3KCk7Ci0gICAgdW5zaWduZWQgaTsKLSAgICBmb3IgKGkg
PSAwOyBpIDwgR19OX0VMRU1FTlRTKGJpZGlfbWVudV9lbnRyaWVzKTsgaSsrKSB7Ci0gICAgICAg
IEd0a1dpZGdldCogbWVudWl0ZW0gPSBndGtfbWVudV9pdGVtX25ld193aXRoX21uZW1vbmljKF8o
YmlkaV9tZW51X2VudHJpZXNbaV0ubGFiZWwpKTsKLSAgICAgICAgZ19vYmplY3Rfc2V0X2RhdGEo
R19PQkpFQ1QobWVudWl0ZW0pLCAiZ3RrLXVuaWNvZGUtbWVudS1lbnRyeSIsIChncG9pbnRlcikm
YmlkaV9tZW51X2VudHJpZXNbaV0pOwotICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1lbnVpdGVt
LCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKGluc2VydENvbnRyb2xDaGFyYWN0ZXIpLCAwKTsKLSAg
ICAgICAgZ3RrX3dpZGdldF9zaG93KG1lbnVpdGVtKTsKLSAgICAgICAgZ3RrX21lbnVfc2hlbGxf
YXBwZW5kKEdUS19NRU5VX1NIRUxMKHVuaWNvZGVDb250ZXh0TWVudSksIG1lbnVpdGVtKTsKLSAg
ICAgICAgLy8gRklYTUU6IE1ha2UgdGhlIGl0ZW0gc2Vuc2l0aXZlIGFzIGluc2VydENvbnRyb2xD
aGFyYWN0ZXIoKSBpcyBpbXBsZW1lbnRlZAotICAgICAgICBndGtfd2lkZ2V0X3NldF9zZW5zaXRp
dmUobWVudWl0ZW0sIEZBTFNFKTsKLSAgICB9Ci0KLSAgICBndGtfbWVudV9pdGVtX3NldF9zdWJt
ZW51KEdUS19NRU5VX0lURU0obWVudWl0ZW0pLCB1bmljb2RlQ29udGV4dE1lbnUpOwotCi0gICAg
cmV0dXJuIG1lbnVpdGVtOwotfQotCiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVu
dUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoQ29udGV4dE1lbnUqIG1lbnUp
CiB7Ci0gICAgR3RrTWVudSogZ3RrbWVudSA9IG1lbnUtPnJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0
aW9uKCk7Ci0KLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1lbnUtPmhpdFRlc3RSZXN1bHQo
KTsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJWaWV3OwotCi0gICAgaWYgKHJl
c3VsdC5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7Ci0KLSAgICAgICAgR3RrV2lkZ2V0KiBpbUNvbnRl
eHRNZW51ID0gaW5wdXRNZXRob2RzTWVudUl0ZW0od2ViVmlldyk7Ci0gICAgICAgIEd0a1dpZGdl
dCogdW5pY29kZUNvbnRleHRNZW51ID0gdW5pY29kZU1lbnVJdGVtKHdlYlZpZXcpOwotCi0gICAg
ICAgIGlmIChpbUNvbnRleHRNZW51IHx8IHVuaWNvZGVDb250ZXh0TWVudSkgewotICAgICAgICAg
ICAgR3RrV2lkZ2V0KiBzZXBhcmF0b3IgPSBndGtfc2VwYXJhdG9yX21lbnVfaXRlbV9uZXcoKTsK
LSAgICAgICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZChHVEtfTUVOVV9TSEVMTChndGttZW51
KSwgc2VwYXJhdG9yKTsKLSAgICAgICAgICAgIGd0a193aWRnZXRfc2hvdyhzZXBhcmF0b3IpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGltQ29udGV4dE1lbnUpIHsKLSAgICAgICAgICAgIGd0
a19tZW51X3NoZWxsX2FwcGVuZChHVEtfTUVOVV9TSEVMTChndGttZW51KSwgaW1Db250ZXh0TWVu
dSk7Ci0gICAgICAgICAgICBndGtfd2lkZ2V0X3Nob3coaW1Db250ZXh0TWVudSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAodW5pY29kZUNvbnRleHRNZW51KSB7Ci0gICAgICAgICAgICBndGtf
bWVudV9zaGVsbF9hcHBlbmQoR1RLX01FTlVfU0hFTEwoZ3RrbWVudSksIHVuaWNvZGVDb250ZXh0
TWVudSk7Ci0gICAgICAgICAgICBndGtfd2lkZ2V0X3Nob3codW5pY29kZUNvbnRleHRNZW51KTsK
LSAgICAgICAgfQotCi0gICAgfQotCi0gICAgcmV0dXJuIGd0a21lbnU7CisgICAgR3RrVUlNYW5h
Z2VyKiBtYW5hZ2VyID0gbWVudS0+cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsKKyAgICBn
dGtfdWlfbWFuYWdlcl9lbnN1cmVfdXBkYXRlKG1hbmFnZXIpOworICAgIHJldHVybiBtYW5hZ2Vy
OwogfQogCiB2b2lkIENvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChD
b250ZXh0TWVudUl0ZW0qLCBjb25zdCBDb250ZXh0TWVudSopCmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXQuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCmluZGV4IGMy
MjE2NWUuLmI1MDc4NzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCisr
KyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViYmFj
a2ZvcndhcmRsaXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmg+
CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnRhcmdldGluZm8uaD4KICNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vi
bmF2aWdhdGlvbmFjdGlvbi5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRlbnVtdHlwZXMuaD4K
ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaCBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaAppbmRleCBiMGFiNWU5Li5kZTY2OTEwIDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKKysrIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0ZGVmaW5lcy5oCkBAIC01OSw2ICs1OSw5IEBAIHR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzIFdlYktpdFdlYlBvbGljeURlY2lzaW9uQ2xhc3M7
CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3MgV2ViS2l0V2ViU2V0dGluZ3M7CiB0
eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyBXZWJLaXRXZWJTZXR0aW5nc0Ns
YXNzOwogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVGFyZ2V0SW5mbyBXZWJLaXRXZWJUYXJn
ZXRJbmZvOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlRhcmdldEluZm9DbGFzcyBXZWJLaXRX
ZWJUYXJnZXRJbmZvQ2xhc3M7CisKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJJbnNwZWN0b3Ig
V2ViS2l0V2ViSW5zcGVjdG9yOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkluc3BlY3RvckNs
YXNzIFdlYktpdFdlYkluc3BlY3RvckNsYXNzOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgK
aW5kZXggM2RjODdlNC4uMjNiNjkyZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAt
MTg5LDYgKzE4OSw5IEBAIGV4dGVybiAiQyIgewogICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0Kgog
ICAgIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3X3dpdGhfY29yZV9yZXF1ZXN0KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KTsKIAorICAgIFdlYktpdFdl
YlRhcmdldEluZm8qCisgICAgd2Via2l0X3dlYl90YXJnZXRfaW5mb19uZXdfZnJvbV9jb3JlX2hp
dF90ZXN0X3Jlc3VsdChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiByZXN1bHQpOworCiAg
ICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byB3ZWJraXRuZXR3b3JrcmVxdWVzdC5oIG9uY2UgdGhl
IEFQSSBpcyBhZ3JlZWQgdXBvbi4KICAgICBXRUJLSVRfQVBJIFNvdXBNZXNzYWdlKgogICAgIHdl
YmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X21lc3NhZ2UoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJl
cXVlc3QpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidGFyZ2V0aW5m
by5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ0YXJnZXRpbmZvLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmQyMzdmCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidGFyZ2V0aW5mby5jcHAKQEAgLTAsMCArMSwyMjEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29sbGFib3JhIEx0ZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnRhcmdldGluZm8uaCIKKworI2luY2x1ZGUgIkNT
dHJpbmcuaCIKKyNpbmNsdWRlICJHT3duUHRyLmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5o
IgorI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKKworI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+CisKKy8qKgorICogU0VDVElPTjp3ZWJraXR3ZWJ0YXJnZXRpbmZvCisgKiBAc2hvcnRfZGVz
Y3JpcHRpb246IFRoZSB0YXJnZXQgb2YgYSBtb3VzZSBvciBrZXlib2FyZCBldmVudAorICovCisK
K0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViVGFyZ2V0SW5mbywgd2Via2l0X3dlYl90YXJnZXRfaW5m
bywgR19UWVBFX09CSkVDVCk7CisKK3N0cnVjdCBfV2ViS2l0V2ViVGFyZ2V0SW5mb1ByaXZhdGUg
eworICAgIGd1aW50IGNvbnRleHQ7CisgICAgY2hhciogbGlua1VSSTsKKyAgICBjaGFyKiBpbWFn
ZVVSSTsKKyAgICBjaGFyKiBtZWRpYVVSSTsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dFQl9UQVJH
RVRfSU5GT19HRVRfUFJJVkFURShvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9i
aiksIFdFQktJVF9UWVBFX1dFQl9UQVJHRVRfSU5GTywgV2ViS2l0V2ViVGFyZ2V0SW5mb1ByaXZh
dGUpKQorCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX0NPTlRFWFQsCisgICAgUFJP
UF9MSU5LX1VSSSwKKyAgICBQUk9QX0lNQUdFX1VSSSwKKyAgICBQUk9QX01FRElBX1VSSSwKK307
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdGFyZ2V0X2luZm9fZmluYWxpemUoR09iamVjdCog
b2JqZWN0KQoreworICAgIFdlYktpdFdlYlRhcmdldEluZm8qIHdlYl90YXJnZXRfaW5mbyA9IFdF
QktJVF9XRUJfVEFSR0VUX0lORk8ob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJUYXJnZXRJbmZvUHJp
dmF0ZSogcHJpdiA9IHdlYl90YXJnZXRfaW5mby0+cHJpdjsKKworICAgIGdfZnJlZShwcml2LT5s
aW5rVVJJKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdGFyZ2V0X2luZm9fcGFy
ZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl90YXJnZXRfaW5mb19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0
eUlELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJU
YXJnZXRJbmZvKiB3ZWJfdGFyZ2V0X2luZm8gPSBXRUJLSVRfV0VCX1RBUkdFVF9JTkZPKG9iamVj
dCk7CisgICAgV2ViS2l0V2ViVGFyZ2V0SW5mb1ByaXZhdGUqIHByaXYgPSB3ZWJfdGFyZ2V0X2lu
Zm8tPnByaXY7CisKKyAgICBzd2l0Y2gocHJvcGVydHlJRCkgeworICAgIGNhc2UgUFJPUF9DT05U
RVhUOgorICAgICAgICBnX3ZhbHVlX3NldF91aW50KHZhbHVlLCBwcml2LT5jb250ZXh0KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xJTktfVVJJOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9zdHJpbmcodmFsdWUsIHByaXYtPmxpbmtVUkkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfSU1BR0VfVVJJOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYt
PmltYWdlVVJJKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX01FRElBX1VSSToKKyAg
ICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBwcml2LT5tZWRpYVVSSSk7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9Q
RVJUWV9JRChvYmplY3QsIHByb3BlcnR5SUQsIHBzcGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdGFyZ2V0X2luZm9fc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcGVydHlJRCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMp
Cit7CisgICAgV2ViS2l0V2ViVGFyZ2V0SW5mbyogd2ViX3RhcmdldF9pbmZvID0gV0VCS0lUX1dF
Ql9UQVJHRVRfSU5GTyhvYmplY3QpOworICAgIFdlYktpdFdlYlRhcmdldEluZm9Qcml2YXRlKiBw
cml2ID0gd2ViX3RhcmdldF9pbmZvLT5wcml2OworCisgICAgc3dpdGNoKHByb3BlcnR5SUQpIHsK
KyAgICBjYXNlIFBST1BfQ09OVEVYVDoKKyAgICAgICAgcHJpdi0+Y29udGV4dCA9IGdfdmFsdWVf
Z2V0X3VpbnQodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTElOS19VUkk6
CisgICAgICAgIGdfZnJlZSAocHJpdi0+bGlua1VSSSk7CisgICAgICAgIHByaXYtPmxpbmtVUkkg
PSBnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfSU1BR0VfVVJJOgorICAgICAgICBnX2ZyZWUgKHByaXYtPmltYWdlVVJJKTsKKyAgICAgICAg
cHJpdi0+aW1hZ2VVUkkgPSBnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfTUVESUFfVVJJOgorICAgICAgICBnX2ZyZWUgKHByaXYtPm1lZGlh
VVJJKTsKKyAgICAgICAgcHJpdi0+bWVkaWFVUkkgPSBnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lO
VkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlELCBwc3BlYyk7CisgICAgfQorfQor
CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3RhcmdldF9pbmZvX2NsYXNzX2luaXQoV2ViS2l0V2Vi
VGFyZ2V0SW5mb0NsYXNzKiB3ZWJUYXJnZXRJbmZvQ2xhc3MpCit7CisgICAgR09iamVjdENsYXNz
KiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHdlYlRhcmdldEluZm9DbGFzcyk7CisKKyAg
ICBvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfd2ViX3RhcmdldF9pbmZvX2ZpbmFsaXpl
OworICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX3RhcmdldF9pbmZv
X2dldF9wcm9wZXJ0eTsKKyAgICBvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dl
Yl90YXJnZXRfaW5mb19zZXRfcHJvcGVydHk7CisKKyAgICB3ZWJraXRfaW5pdCgpOworCisgICAg
LyoqCisgICAgICogV2ViS2l0V2ViVGFyZ2V0SW5mbzpjb250ZXh0OgorICAgICAqCisgICAgICog
RmxhZ3MgaW5kaWNhdGluZyB0aGUga2luZCBvZiB0YXJnZXQgdGhhdCByZWNlaXZlZCB0aGUgZXZl
bnQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMS4xLjE0CisgICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9DT05URVhULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQoImNvbnRleHQi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiQ29udGV4dCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXygiRmxhZ3MgaW5kaWNhdGluZyB0aGUga2luZCBvZiB0YXJnZXQgdGhhdCBy
ZWNlaXZlZCB0aGUgZXZlbnQuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR19NQVhVSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1dFQl9UQVJHRVRfSU5GT19DT05U
RVhUX0RPQ1VNRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKEdQYXJhbUZsYWdzKShXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSkpOworCisg
ICAgLyoqCisgICAgICogV2ViS2l0V2ViVGFyZ2V0SW5mbzpsaW5rLXVyaToKKyAgICAgKgorICAg
ICAqIFRoZSBVUkkgdG8gd2hpY2ggdGhlIHRhcmdldCB0aGF0IHJlY2VpdmVkIHRoZSBldmVudCBw
b2ludHMsIGlmIGFueS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjEuMTQKKyAgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9QX0xJTktf
VVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0
cmluZygibGluay11cmkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfKCJMaW5rIFVSSSIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgVVJJIHRvIHdoaWNoIHRoZSB0
YXJnZXQgdGhhdCByZWNlaXZlZCB0aGUgZXZlbnQgcG9pbnRzLCBpZiBhbnkuIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChH
UGFyYW1GbGFncykoV0VCS0lUX1BBUkFNX1JFQURXUklURSkpKTsKKworICAgIC8qKgorICAgICAq
IFdlYktpdFdlYlRhcmdldEluZm86aW1hZ2UtdXJpOgorICAgICAqCisgICAgICogVGhlIFVSSSBv
ZiB0aGUgaW1hZ2UgdGhhdCBpcyBwYXJ0IG9mIHRoZSB0YXJnZXQgdGhhdCByZWNlaXZlZCB0aGUg
ZXZlbnQsIGlmIGFueS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjEuMTQKKyAgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9QX0lNQUdF
X1VSSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19z
dHJpbmcoImltYWdlLXVyaSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIkltYWdlIFVSSSIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgVVJJIG9mIHRoZSBpbWFn
ZSB0aGF0IGlzIHBhcnQgb2YgdGhlIHRhcmdldCB0aGF0IHJlY2VpdmVkIHRoZSBldmVudCwgaWYg
YW55LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoR1BhcmFtRmxhZ3MpKFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKSk7CisK
KyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJUYXJnZXRJbmZvOm1lZGlhLXVyaToKKyAgICAgKgor
ICAgICAqIFRoZSBVUkkgb2YgdGhlIG1lZGlhIHRoYXQgaXMgcGFydCBvZiB0aGUgdGFyZ2V0IHRo
YXQgcmVjZWl2ZWQgdGhlIGV2ZW50LCBpZiBhbnkuCisgICAgICoKKyAgICAgKiBTaW5jZTogMS4x
LjE0CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RD
bGFzcywgUFJPUF9NRURJQV9VUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJtZWRpYS11cmkiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJNZWRpYSBVUkkiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhl
IFVSSSBvZiB0aGUgbWVkaWEgdGhhdCBpcyBwYXJ0IG9mIHRoZSB0YXJnZXQgdGhhdCByZWNlaXZl
ZCB0aGUgZXZlbnQsIGlmIGFueS4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdQYXJhbUZsYWdzKShXRUJLSVRfUEFSQU1f
UkVBRFdSSVRFKSkpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHdlYlRhcmdldElu
Zm9DbGFzcywgc2l6ZW9mKFdlYktpdFdlYlRhcmdldEluZm9Qcml2YXRlKSk7Cit9CisKK3N0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdGFyZ2V0X2luZm9faW5pdChXZWJLaXRXZWJUYXJnZXRJbmZvKiB3
ZWJfdGFyZ2V0X2luZm8pCit7CisgICAgV2ViS2l0V2ViVGFyZ2V0SW5mb1ByaXZhdGUqIHByaXYg
PSBXRUJLSVRfV0VCX1RBUkdFVF9JTkZPX0dFVF9QUklWQVRFKHdlYl90YXJnZXRfaW5mbyk7Cisg
ICAgd2ViX3RhcmdldF9pbmZvLT5wcml2ID0gcHJpdjsKK30KKworV2ViS2l0V2ViVGFyZ2V0SW5m
byogd2Via2l0X3dlYl90YXJnZXRfaW5mb19uZXdfZnJvbV9jb3JlX2hpdF90ZXN0X3Jlc3VsdChj
b25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiByZXN1bHQpCit7CisgICAgZ3VpbnQgdGFyZ2V0
SW5mb0NvbnRleHQgPSBXRUJLSVRfV0VCX1RBUkdFVF9JTkZPX0NPTlRFWFRfRE9DVU1FTlQ7CisK
KyAgICBXZWJLaXRXZWJUYXJnZXRJbmZvKiB0YXJnZXRJbmZvID0gV0VCS0lUX1dFQl9UQVJHRVRf
SU5GTyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1RBUkdFVF9JTkZPLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwKSk7CisgICAgaWYgKCFyZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkuaXNFbXB0eSgp
KSB7CisgICAgICAgIHRhcmdldEluZm9Db250ZXh0IHw9IFdFQktJVF9XRUJfVEFSR0VUX0lORk9f
Q09OVEVYVF9MSU5LOworICAgICAgICBnX29iamVjdF9zZXQodGFyZ2V0SW5mbywgImxpbmstdXJp
IiwgcmVzdWx0LmFic29sdXRlTGlua1VSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIE5VTEwp
OworICAgIH0KKworICAgIGlmICghcmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgdGFyZ2V0SW5mb0NvbnRleHQgfD0gV0VCS0lUX1dFQl9UQVJHRVRfSU5GT19D
T05URVhUX0lNQUdFOworICAgICAgICBnX29iamVjdF9zZXQodGFyZ2V0SW5mbywgImltYWdlLXVy
aSIsIHJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgTlVM
TCk7CisgICAgfQorCisgICAgaWYgKCFyZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLmlzRW1wdHko
KSkgeworICAgICAgICB0YXJnZXRJbmZvQ29udGV4dCB8PSBXRUJLSVRfV0VCX1RBUkdFVF9JTkZP
X0NPTlRFWFRfTUVESUE7CisgICAgICAgIGdfb2JqZWN0X3NldCh0YXJnZXRJbmZvLCAibWVkaWEt
dXJpIiwgcmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBO
VUxMKTsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0LmlzU2VsZWN0ZWQoKSkKKyAgICAgICAgdGFy
Z2V0SW5mb0NvbnRleHQgfD0gV0VCS0lUX1dFQl9UQVJHRVRfSU5GT19DT05URVhUX1NFTEVDVElP
TjsKKworICAgIGlmIChyZXN1bHQuaXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAgdGFyZ2V0
SW5mb0NvbnRleHQgfD0gV0VCS0lUX1dFQl9UQVJHRVRfSU5GT19DT05URVhUX0VESVRBQkxFOwor
CisgICAgZ19vYmplY3Rfc2V0KHRhcmdldEluZm8sICJjb250ZXh0IiwgdGFyZ2V0SW5mb0NvbnRl
eHQsIE5VTEwpOworCisgICAgcmV0dXJuIHRhcmdldEluZm87Cit9CmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ0YXJnZXRpbmZvLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ0YXJnZXRpbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ODJhYjEyYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnRh
cmdldGluZm8uaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IENv
bGxhYm9yYSBMdGQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZm5kZWYgV0VCS0lUX1dFQl9UQVJHRVRfSU5GT19ICisjZGVmaW5lIFdF
QktJVF9XRUJfVEFSR0VUX0lORk9fSAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+
CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfVEFSR0VUX0lORk8g
ICAgICAgICAgICAod2Via2l0X3dlYl90YXJnZXRfaW5mb19nZXRfdHlwZSgpKQorI2RlZmluZSBX
RUJLSVRfV0VCX1RBUkdFVF9JTkZPKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9UQVJHRVRfSU5GTywgV2ViS2l0V2ViVGFy
Z2V0SW5mbykpCisjZGVmaW5lIFdFQktJVF9XRUJfVEFSR0VUX0lORk9fQ0xBU1Moa2xhc3MpICAg
IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1RBUkdF
VF9JTkZPLCBXZWJLaXRXZWJUYXJnZXRJbmZvQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VC
X1RBUkdFVF9JTkZPKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9i
aiksIFdFQktJVF9UWVBFX1dFQl9UQVJHRVRfSU5GTykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJf
VEFSR0VUX0lORk9fQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3Mp
LCAgV0VCS0lUX1RZUEVfV0VCX1RBUkdFVF9JTkZPKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9UQVJH
RVRfSU5GT19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiks
ICBXRUJLSVRfVFlQRV9XRUJfVEFSR0VUX0lORk8sIFdlYktpdFdlYlRhcmdldEluZm9DbGFzcykp
CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJUYXJnZXRJbmZvUHJpdmF0ZSBXZWJLaXRXZWJU
YXJnZXRJbmZvUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJUYXJnZXRJbmZvIHsKKyAgICBH
T2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKworICAgIC8qPCBwcml2YXRlID4qLworICAgIFdlYktp
dFdlYlRhcmdldEluZm9Qcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJUYXJn
ZXRJbmZvQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQ
YWRkaW5nIGZvciBmdXR1cmUgZXhwYW5zaW9uICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2
ZWQwKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAg
dm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQzKSAodm9pZCk7Cit9OworCit0eXBlZGVmIGVudW0KK3sKKyAgICBXRUJLSVRfV0VCX1RB
UkdFVF9JTkZPX0NPTlRFWFRfRE9DVU1FTlQJICA9IDAsCisgICAgV0VCS0lUX1dFQl9UQVJHRVRf
SU5GT19DT05URVhUX0xJTksgICAgICAgPSAxIDw8IDEsCisgICAgV0VCS0lUX1dFQl9UQVJHRVRf
SU5GT19DT05URVhUX0lNQUdFICAgICAgPSAxIDw8IDIsCisgICAgV0VCS0lUX1dFQl9UQVJHRVRf
SU5GT19DT05URVhUX01FRElBICAgICAgPSAxIDw8IDMsCisgICAgV0VCS0lUX1dFQl9UQVJHRVRf
SU5GT19DT05URVhUX1NFTEVDVElPTiAgPSAxIDw8IDQsCisgICAgV0VCS0lUX1dFQl9UQVJHRVRf
SU5GT19DT05URVhUX0VESVRBQkxFICAgPSAxIDw8IDUsCit9IFdlYktpdFdlYlRhcmdldEluZm9D
b250ZXh0OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX3RhcmdldF9pbmZvX2dldF90
eXBlICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCmluZGV4IGQ4N2NjNWIuLjU1YTUxOGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9y
LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmgiCiAjaW5jbHVkZSAid2Vi
a2l0d2ViaGlzdG9yeWl0ZW0uaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ0YXJnZXRpbmZvLmgiCiAK
ICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
QEAgLTEyNSw2ICsxMjYsNyBAQCBlbnVtIHsKICAgICBMT0FEX0ZJTklTSEVELAogICAgIFRJVExF
X0NIQU5HRUQsCiAgICAgSE9WRVJJTkdfT1ZFUl9MSU5LLAorICAgIFBPUFVMQVRFX0NPTlRFWFRf
TUVOVSwKICAgICBQT1BVTEFURV9QT1BVUCwKICAgICBTVEFUVVNfQkFSX1RFWFRfQ0hBTkdFRCwK
ICAgICBJQ09ORF9MT0FERUQsCkBAIC0xNzIsNiArMTc0LDU5IEBAIEdfREVGSU5FX1RZUEUoV2Vi
S2l0V2ViVmlldywgd2Via2l0X3dlYl92aWV3LCBHVEtfVFlQRV9DT05UQUlORVIpCiBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KFdlYktpdFdlYlNldHRpbmdzKiB3
ZWJTZXR0aW5ncywgR1BhcmFtU3BlYyogcHNwZWMsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpOwog
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVz
KTsKIAorc3RhdGljIEd0a1dpZGdldCogaW5wdXRNZXRob2RzTWVudUl0ZW0gKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCit7CisgICAgaWYgKGd0a19tYWpvcl92ZXJzaW9uID4gMiB8fCAoZ3RrX21h
am9yX3ZlcnNpb24gPT0gMiAmJiBndGtfbWlub3JfdmVyc2lvbiA+PSAxMCkpIHsKKyAgICAgICAg
R3RrU2V0dGluZ3MqIHNldHRpbmdzID0gd2ViVmlldyA/IGd0a193aWRnZXRfZ2V0X3NldHRpbmdz
KEdUS19XSURHRVQod2ViVmlldykpIDogZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCk7CisKKyAg
ICAgICAgZ2Jvb2xlYW4gc2hvd01lbnUgPSBUUlVFOworICAgICAgICBpZiAoc2V0dGluZ3MpCisg
ICAgICAgICAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJndGstc2hvdy1pbnB1dC1tZXRob2Qt
bWVudSIsICZzaG93TWVudSwgTlVMTCk7CisgICAgICAgIGlmICghc2hvd01lbnUpCisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBHdGtXaWRnZXQqIG1lbnVpdGVtID0gZ3RrX2lt
YWdlX21lbnVfaXRlbV9uZXdfd2l0aF9tbmVtb25pYygKKyAgICAgICAgXygiSW5wdXQgX01ldGhv
ZHMiKSk7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklF
V19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKKyAgICBHdGtXaWRnZXQqIGltQ29udGV4dE1lbnUgPSBn
dGtfbWVudV9uZXcoKTsKKyAgICBndGtfaW1fbXVsdGljb250ZXh0X2FwcGVuZF9tZW51aXRlbXMo
R1RLX0lNX01VTFRJQ09OVEVYVChwcml2LT5pbUNvbnRleHQpLCBHVEtfTUVOVV9TSEVMTChpbUNv
bnRleHRNZW51KSk7CisKKyAgICBndGtfbWVudV9pdGVtX3NldF9zdWJtZW51KEdUS19NRU5VX0lU
RU0obWVudWl0ZW0pLCBpbUNvbnRleHRNZW51KTsKKworICAgIHJldHVybiBtZW51aXRlbTsKK30K
KworLy8gVmFsdWVzIHRha2VuIGZyb20gZ3RrdGV4dHV0aWwuYwordHlwZWRlZiBzdHJ1Y3Qgewor
ICBjb25zdCBjaGFyICpsYWJlbDsKKyAgZ3VuaWNoYXIgY2g7Cit9IEd0a1VuaWNvZGVNZW51RW50
cnk7CitzdGF0aWMgY29uc3QgR3RrVW5pY29kZU1lbnVFbnRyeSBiaWRpX21lbnVfZW50cmllc1td
ID0geworICB7IE5fKCJMUk0gX0xlZnQtdG8tcmlnaHQgbWFyayIpLCAweDIwMEUgfSwKKyAgeyBO
XygiUkxNIF9SaWdodC10by1sZWZ0IG1hcmsiKSwgMHgyMDBGIH0sCisgIHsgTl8oIkxSRSBMZWZ0
LXRvLXJpZ2h0IF9lbWJlZGRpbmciKSwgMHgyMDJBIH0sCisgIHsgTl8oIlJMRSBSaWdodC10by1s
ZWZ0IGVfbWJlZGRpbmciKSwgMHgyMDJCIH0sCisgIHsgTl8oIkxSTyBMZWZ0LXRvLXJpZ2h0IF9v
dmVycmlkZSIpLCAweDIwMkQgfSwKKyAgeyBOXygiUkxPIFJpZ2h0LXRvLWxlZnQgb192ZXJyaWRl
IiksIDB4MjAyRSB9LAorICB7IE5fKCJQREYgX1BvcCBkaXJlY3Rpb25hbCBmb3JtYXR0aW5nIiks
IDB4MjAyQyB9LAorICB7IE5fKCJaV1MgX1plcm8gd2lkdGggc3BhY2UiKSwgMHgyMDBCIH0sCisg
IHsgTl8oIlpXSiBaZXJvIHdpZHRoIF9qb2luZXIiKSwgMHgyMDBEIH0sCisgIHsgTl8oIlpXTkog
WmVybyB3aWR0aCBfbm9uLWpvaW5lciIpLCAweDIwMEMgfQorfTsKKworc3RhdGljIHZvaWQgaW5z
ZXJ0Q29udHJvbENoYXJhY3RlcihHdGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitzdGF0aWMgR3RrV2lkZ2V0KiB1bmljb2RlTWVudUl0ZW0oV2ViS2l0V2Vi
Vmlldyogd2ViVmlldykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOwor
fQorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51
X2V2ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZlbnQpCiB7CiAgICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7CkBAIC0xOTAsMTAgKzI0
NSw0NCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9t
ZW51X2V2ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZQogICAgIGlmICghY29yZU1lbnUpCiAgICAg
ICAgIHJldHVybiBGQUxTRTsKIAotICAgIEd0a01lbnUqIG1lbnUgPSBHVEtfTUVOVShjb3JlTWVu
dS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpKTsKKyAgICBHdGtVSU1hbmFnZXIqIG1hbmFnZXIgPSBj
b3JlTWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpOworCisgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBjb3JlTWVudS0+aGl0VGVzdFJlc3VsdCgpOworICAgIFdlYktpdFdlYlRhcmdldEluZm8q
IHRhcmdldF9pbmZvID0gd2Via2l0X3dlYl90YXJnZXRfaW5mb19uZXdfZnJvbV9jb3JlX2hpdF90
ZXN0X3Jlc3VsdChyZXN1bHQpOworCisgICAgZ2Jvb2xlYW4gc2hvdWxkQ29udGludWU7CisgICAg
Z19zaWduYWxfZW1pdCh3ZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tQT1BVTEFURV9D
T05URVhUX01FTlVdLCAwLCBtYW5hZ2VyLCB0YXJnZXRfaW5mbywgJnNob3VsZENvbnRpbnVlKTsK
KyAgICBnX29iamVjdF91bnJlZih0YXJnZXRfaW5mbyk7CisKKyAgICBpZiAoIXNob3VsZENvbnRp
bnVlKQorICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgR3RrTWVudSogbWVudSA9IEdUS19NRU5V
KGd0a191aV9tYW5hZ2VyX2dldF93aWRnZXQobWFuYWdlciwgIi91aS9wb3B1cCIpKTsKICAgICBp
ZiAoIW1lbnUpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAorICAgIGlmIChyZXN1bHQuaXNDb250
ZW50RWRpdGFibGUoKSkgeworCisgICAgICAgIEd0a1dpZGdldCogaW1Db250ZXh0TWVudSA9IGlu
cHV0TWV0aG9kc01lbnVJdGVtKHdlYlZpZXcpOworICAgICAgICBHdGtXaWRnZXQqIHVuaWNvZGVD
b250ZXh0TWVudSA9IHVuaWNvZGVNZW51SXRlbSh3ZWJWaWV3KTsKKworICAgICAgICBpZiAoaW1D
b250ZXh0TWVudSB8fCB1bmljb2RlQ29udGV4dE1lbnUpIHsKKyAgICAgICAgICAgIEd0a1dpZGdl
dCogc2VwYXJhdG9yID0gZ3RrX3NlcGFyYXRvcl9tZW51X2l0ZW1fbmV3KCk7CisgICAgICAgICAg
ICBndGtfbWVudV9zaGVsbF9hcHBlbmQoR1RLX01FTlVfU0hFTEwobWVudSksIHNlcGFyYXRvcik7
CisgICAgICAgICAgICBndGtfd2lkZ2V0X3Nob3coc2VwYXJhdG9yKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChpbUNvbnRleHRNZW51KSB7CisgICAgICAgICAgICBndGtfbWVudV9zaGVsbF9h
cHBlbmQoR1RLX01FTlVfU0hFTEwobWVudSksIGltQ29udGV4dE1lbnUpOworICAgICAgICAgICAg
Z3RrX3dpZGdldF9zaG93KGltQ29udGV4dE1lbnUpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHVuaWNvZGVDb250ZXh0TWVudSkgeworICAgICAgICAgICAgZ3RrX21lbnVfc2hlbGxfYXBwZW5k
KEdUS19NRU5VX1NIRUxMKG1lbnUpLCB1bmljb2RlQ29udGV4dE1lbnUpOworICAgICAgICAgICAg
Z3RrX3dpZGdldF9zaG93KHVuaWNvZGVDb250ZXh0TWVudSk7CisgICAgICAgIH0KKyAgICB9CisK
ICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW1BPUFVM
QVRFX1BPUFVQXSwgMCwgbWVudSk7CiAKICAgICBHTGlzdCogaXRlbXMgPSBndGtfY29udGFpbmVy
X2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1lbnUpKTsKQEAgLTIwNSw2ICsyOTQsOCBAQCBz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50
KFdlYktpdFdlYlZpZXcqIHdlYlZpZQogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0g
V0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwogICAgIHByaXYtPmxhc3RQb3B1
cFhQb3NpdGlvbiA9IGV2ZW50Lmdsb2JhbFgoKTsKICAgICBwcml2LT5sYXN0UG9wdXBZUG9zaXRp
b24gPSBldmVudC5nbG9iYWxZKCk7CisKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKEdUS19XSURH
RVQobWVudSkpOwogICAgIGd0a19tZW51X3BvcHVwKG1lbnUsIE5VTEwsIE5VTEwsCiAgICAgICAg
ICAgICAgICAgICAgTlVMTCwKICAgICAgICAgICAgICAgICAgICBwcml2LCBldmVudC5idXR0b24o
KSArIDEsIGd0a19nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOwpAQCAtMTY0OCw2ICsxNzM5LDI1
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdD
bGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgR1RLX1RZUEVfTUVOVSk7CiAKICAgICAv
KioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojpwb3B1bGF0ZS1jb250ZXh0LW1lbnU6CisgICAgICog
QHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAg
ICAqIEBtYW5hZ2VyOiB0aGUgI0d0a1VJTWFuYWdlciByZXByZXNlbnRpbmcgdGhlIG1lbnUKKyAg
ICAgKiBAd2ViX3RhcmdldF9pbmZvOiBhICNXZWJLaXRXZWJUYXJnZXRJbmZvIG9iamVjdAorICAg
ICAqCisgICAgICogV2hlbiBhIGNvbnRleHQgbWVudSBpcyBhYm91dCB0byBiZSBkaXNwbGF5ZWQg
dGhpcyBzaWduYWwgaXMgZW1pdHRlZC4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2ln
bmFsc1tQT1BVTEFURV9DT05URVhUX01FTlVdID0gZ19zaWduYWxfbmV3KCJwb3B1bGF0ZS1jb250
ZXh0LW1lbnUiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwK
KyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAg
ICAwLAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAg
ICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX1ZPSURfX09CSkVDVF9P
QkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMiwKKyAgICAgICAgICAgIEdUS19U
WVBFX1VJX01BTkFHRVIsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVEFSR0VUX0lORk8p
OworCisgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6cHJpbnQtcmVxdWVzdGVkCiAgICAg
ICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IGluIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAog
ICAgICAqIEB3ZWJfZnJhbWU6IHRoZSBmcmFtZSB0aGF0IGlzIHJlcXVlc3RpbmcgdG8gYmUgcHJp
bnRlZApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jIGIvV2ViS2l0
VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCmluZGV4IDY5OTQ2NzQuLjFlZWE3MWQgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYworKysgYi9XZWJLaXRUb29scy9HdGtM
YXVuY2hlci9tYWluLmMKQEAgLTEwOSw2ICsxMDksMjYgQEAgZ29fZm9yd2FyZF9jYiAoR3RrV2lk
Z2V0KiB3aWRnZXQsIGdwb2ludGVyIGRhdGEpCiAgICAgd2Via2l0X3dlYl92aWV3X2dvX2Zvcndh
cmQgKHdlYl92aWV3KTsKIH0KIAorc3RhdGljIGdib29sZWFuCitwb3B1bGF0ZV9jb250ZXh0X21l
bnVfY2IgKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a1VJTWFuYWdlciogbWFuYWdlciwgV2Vi
S2l0V2ViVGFyZ2V0SW5mbyogdGFyZ2V0X2luZm8sIGdwb2ludGVyIGRhdGEpCit7CisgICAgZ3Vp
bnQgY29udGV4dDsKKyAgICBjaGFyKiBsaW5rVVJJOworICAgIGNoYXIqIGltYWdlVVJJOworICAg
IGNoYXIqIG1lZGlhVVJJOworCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHRhcmdldF9pbmZv
KSwKKyAgICAgICAgICAgICAgICAgImNvbnRleHQiLCAmY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgImxpbmstdXJpIiwgJmxpbmtVUkksCisgICAgICAgICAgICAgICAgICJpbWFnZS11cmkiLCAm
aW1hZ2VVUkksCisgICAgICAgICAgICAgICAgICJtZWRpYS11cmkiLCAmbWVkaWFVUkksCisgICAg
ICAgICAgICAgICAgIE5VTEwpOworCisgICAgZ19kZWJ1ZygiTGluayBVUkk6ICVzIFslZF1cbklt
YWdlIFVSSTogJXNbJWRdXG5TZWxlY3RlZDogJWQgfCBFZGl0YWJsZTogJWQiLCBsaW5rVVJJLCBj
b250ZXh0ICYgV0VCS0lUX1dFQl9UQVJHRVRfSU5GT19DT05URVhUX0xJTkssIGltYWdlVVJJLCBj
b250ZXh0ICYgV0VCS0lUX1dFQl9UQVJHRVRfSU5GT19DT05URVhUX0lNQUdFLCBjb250ZXh0ICYg
V0VCS0lUX1dFQl9UQVJHRVRfSU5GT19DT05URVhUX1NFTEVDVElPTiwgY29udGV4dCAmIFdFQktJ
VF9XRUJfVEFSR0VUX0lORk9fQ09OVEVYVF9FRElUQUJMRSk7CisKKyAgICByZXR1cm4gVFJVRTsK
K30KKwogc3RhdGljIEd0a1dpZGdldCoKIGNyZWF0ZV9icm93c2VyICgpCiB7CkBAIC0xMjIsNiAr
MTQyLDcgQEAgY3JlYXRlX2Jyb3dzZXIgKCkKICAgICBnX3NpZ25hbF9jb25uZWN0ICh3ZWJfdmll
dywgIm5vdGlmeTo6bG9hZC1zdGF0dXMiLCBHX0NBTExCQUNLIChub3RpZnlfbG9hZF9zdGF0dXNf
Y2IpLCB3ZWJfdmlldyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCAod2ViX3ZpZXcsICJub3RpZnk6
OnByb2dyZXNzIiwgR19DQUxMQkFDSyAobm90aWZ5X3Byb2dyZXNzX2NiKSwgd2ViX3ZpZXcpOwog
ICAgIGdfc2lnbmFsX2Nvbm5lY3QgKHdlYl92aWV3LCAiaG92ZXJpbmctb3Zlci1saW5rIiwgR19D
QUxMQkFDSyAobGlua19ob3Zlcl9jYiksIHdlYl92aWV3KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
ICh3ZWJfdmlldywgInBvcHVsYXRlLWNvbnRleHQtbWVudSIsIEdfQ0FMTEJBQ0sgKHBvcHVsYXRl
X2NvbnRleHRfbWVudV9jYiksIHdlYl92aWV3KTsKIAogICAgIHJldHVybiBzY3JvbGxlZF93aW5k
b3c7CiB9Ci0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38590</attachid>
            <date>2009-08-25 20:08:40 -0700</date>
            <delta_ts>2009-08-25 20:08:40 -0700</delta_ts>
            <desc>Epiphany patch demonstrating API</desc>
            <filename>0001-use-new-draft-webkit-API-to-reimplement-context-menu.patch</filename>
            <type>text/plain</type>
            <size>24077</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSBiZWU2ZDA2N2IwNTNkYTBlNDIyNDc2ZmNhZDdiNzhmYWZmN2IwNDNkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+
CkRhdGU6IFdlZCwgMjYgQXVnIDIwMDkgMDA6MDg6MDMgLTAzMDAKU3ViamVjdDogW1BBVENIXSB1
c2UgbmV3IGRyYWZ0IHdlYmtpdCBBUEkgdG8gcmVpbXBsZW1lbnQgY29udGV4dCBtZW51CgotLS0K
IGVtYmVkL2VwaHktZW1iZWQuYyAgICB8ICAgMTIgKysrKwogZW1iZWQvZXBoeS13ZWItdmlldy5j
IHwgICAgMiArLQogc3JjL2VwaHktd2luZG93LmMgICAgIHwgIDE3MiArKysrKysrKysrKysrKysr
KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9lcGh5LXdpbmRvdy5oICAgICB8
ICAgNDIgKysrKysrLS0tLS0tCiBzcmMvcG9wdXAtY29tbWFuZHMuYyAgfCAgMTI3ICsrKysrKysr
KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAxNzcgaW5zZXJ0
aW9ucygrKSwgMTc4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2VtYmVkL2VwaHktZW1iZWQu
YyBiL2VtYmVkL2VwaHktZW1iZWQuYwppbmRleCAyYTc4NmUzLi4xMjMxYTEzIDEwMDY0NAotLS0g
YS9lbWJlZC9lcGh5LWVtYmVkLmMKKysrIGIvZW1iZWQvZXBoeS1lbWJlZC5jCkBAIC0xODYsNiAr
MTg2LDE3IEBAIHJlc3RvcmVfem9vbV9sZXZlbCAoRXBoeUVtYmVkICplbWJlZCwKICAgfQogfQog
CitzdGF0aWMgZ2Jvb2xlYW4KK3BvcHVsYXRlX2NvbnRleHRfbWVudV9jYiAoV2ViS2l0V2ViVmll
dyAqdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrVUlNYW5hZ2VyICptYW5hZ2Vy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJUYXJnZXRJbmZvICp0YXJnZXRf
aW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgZ2Jv
b2xlYW4gaGFuZGxlZDsKKyAgZ19zaWduYWxfZW1pdF9ieV9uYW1lIChFUEhZX1dFQl9WSUVXICh2
aWV3KSwgImdlLWNvbnRleHQtbWVudSIsIHRhcmdldF9pbmZvLCAmaGFuZGxlZCk7CisgIHJldHVy
biBGQUxTRTsKK30KKwogc3RhdGljIHZvaWQKIGxvYWRfc3RhdHVzX2NoYW5nZWRfY2IgKFdlYktp
dFdlYlZpZXcgKnZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVjICpzcGVj
LApAQCAtNjk3LDYgKzcwOCw3IEBAIGVwaHlfZW1iZWRfY29uc3RydWN0ZWQgKEdPYmplY3QgKm9i
amVjdCkKICAgZ3RrX3dpZGdldF9zaG93IChHVEtfV0lER0VUICh3ZWJfdmlldykpOwogCiAgIGdf
b2JqZWN0X2Nvbm5lY3QgKHdlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAic2lnbmFsOjpw
b3B1bGF0ZS1jb250ZXh0LW1lbnUiLCBHX0NBTExCQUNLIChwb3B1bGF0ZV9jb250ZXh0X21lbnVf
Y2IpLCBlbWJlZCwKICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDo6bm90aWZ5Ojpsb2FkLXN0
YXR1cyIsIEdfQ0FMTEJBQ0sgKGxvYWRfc3RhdHVzX2NoYW5nZWRfY2IpLCBlbWJlZCwKICAgICAg
ICAgICAgICAgICAgICAgInNpZ25hbDo6aG92ZXJpbmctb3Zlci1saW5rIiwgR19DQUxMQkFDSyAo
aG92ZXJpbmdfb3Zlcl9saW5rX2NiKSwgZW1iZWQsCiAgICAgICAgICAgICAgICAgICAgICJzaWdu
YWw6Om1pbWUtdHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkIiwgR19DQUxMQkFDSyAobWlt
ZV90eXBlX3BvbGljeV9kZWNpc2lvbl9yZXF1ZXN0ZWRfY2IpLCBlbWJlZCwKZGlmZiAtLWdpdCBh
L2VtYmVkL2VwaHktd2ViLXZpZXcuYyBiL2VtYmVkL2VwaHktd2ViLXZpZXcuYwppbmRleCA2YmQw
MTk2Li4zZDIzZjUxIDEwMDY0NAotLS0gYS9lbWJlZC9lcGh5LXdlYi12aWV3LmMKKysrIGIvZW1i
ZWQvZXBoeS13ZWItdmlldy5jCkBAIC02NjcsNyArNjY3LDcgQEAgZXBoeV93ZWJfdmlld19jbGFz
c19pbml0IChFcGh5V2ViVmlld0NsYXNzICprbGFzcykKIC8qKgogICogRXBoeVdlYlZpZXc6Omdl
LWNvbnRleHQtbWVudToKICAqIEBlbWJlZDoKLSAqIEBldmVudDogdGhlICNFcGh5RW1iZWRFdmVu
dCB3aGljaCB0cmlnZ2VyZWQgdGhpcyBzaWduYWwKKyAqIEBldmVudDogdGhlICNXZWJLaXRXZWJU
YXJnZXRJbmZvIHRoYXQgdHJpZ2dlcmVkIHRoaXMgc2lnbmFsCiAgKgogICogVGhlIDo6Z2VfY29u
dGV4dF9tZW51IHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gYSBjb250ZXh0IG1lbnUgaXMgdG8gYmUK
ICAqIGRpc3BsYXllZC4gVGhpcyB3aWxsIHVzdWFsbHkgaGFwcGVuIHdoZW4gdGhlIHVzZXIgcmln
aHQtY2xpY2tzIG9uIGEgcGFydCBvZgpkaWZmIC0tZ2l0IGEvc3JjL2VwaHktd2luZG93LmMgYi9z
cmMvZXBoeS13aW5kb3cuYwppbmRleCA4NDA3MTA0Li4wMWMyNDkxIDEwMDY0NAotLS0gYS9zcmMv
ZXBoeS13aW5kb3cuYworKysgYi9zcmMvZXBoeS13aW5kb3cuYwpAQCAtNDM5LDcgKzQzOSw3IEBA
IHN0cnVjdCBfRXBoeVdpbmRvd1ByaXZhdGUKIAlFcGh5V2ViVmlld0Nocm9tZSBjaHJvbWU7CiAJ
Z3VpbnQgaWRsZV9yZXNpemVfaGFuZGxlcjsKIAlHSGFzaFRhYmxlICp0YWJzX3RvX3JlbW92ZTsK
LQlFcGh5RW1iZWRFdmVudCAqY29udGV4dF9ldmVudDsKKwlXZWJLaXRXZWJUYXJnZXRJbmZvICpj
b250ZXh0X2V2ZW50OwogCWd1aW50IGlkbGVfd29ya2VyOwogCUd0a1dpZGdldCAqZW50cnk7CiAK
QEAgLTIwMDQsNyArMjAwNCw3IEBAIGlkbGVfdW5yZWZfY29udGV4dF9ldmVudCAoRXBoeVdpbmRv
dyAqd2luZG93KQogCiB2b2lkCiBfZXBoeV93aW5kb3dfc2V0X2NvbnRleHRfZXZlbnQgKEVwaHlX
aW5kb3cgKndpbmRvdywKLQkJCQlFcGh5RW1iZWRFdmVudCAqZXZlbnQpCisJCQkJV2ViS2l0V2Vi
VGFyZ2V0SW5mbyAqdGFyZ2V0X2luZm8pCiB7CiAJRXBoeVdpbmRvd1ByaXZhdGUgKnByaXYgPSB3
aW5kb3ctPnByaXY7CiAKQEAgLTIwMTksNyArMjAxOSw3IEBAIF9lcGh5X3dpbmRvd19zZXRfY29u
dGV4dF9ldmVudCAoRXBoeVdpbmRvdyAqd2luZG93LAogCQlnX29iamVjdF91bnJlZiAocHJpdi0+
Y29udGV4dF9ldmVudCk7CiAJfQogCi0JcHJpdi0+Y29udGV4dF9ldmVudCA9IGV2ZW50ICE9IE5V
TEwgPyBnX29iamVjdF9yZWYgKGV2ZW50KSA6IE5VTEw7CisJcHJpdi0+Y29udGV4dF9ldmVudCA9
IHRhcmdldF9pbmZvICE9IE5VTEwgPyBnX29iamVjdF9yZWYgKHRhcmdldF9pbmZvKSA6IE5VTEw7
CiB9CiAKIHZvaWQKQEAgLTIwNTEsMzEgKzIwNTEsMjAgQEAgZW1iZWRfcG9wdXBfZGVhY3RpdmF0
ZV9jYiAoR3RrV2lkZ2V0ICpwb3B1cCwKIAlfZXBoeV93aW5kb3dfdW5zZXRfY29udGV4dF9ldmVu
dCAod2luZG93KTsKIH0KIAotc3RhdGljIGNoYXIgKgotZ2V0X25hbWVfZnJvbV9hZGRyZXNzX3Zh
bHVlIChjb25zdCBHVmFsdWUgKnZhbHVlKQotewotCWNoYXIgKm5hbWU7Ci0KLQluYW1lID0gZ19w
YXRoX2dldF9iYXNlbmFtZSAoZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSkpOwotCi0JcmV0dXJu
IG5hbWUgIT0gTlVMTCA/IG5hbWUgOiBnX3N0cmR1cCAoIiIpOwotfQotCiBzdGF0aWMgdm9pZAot
dXBkYXRlX3BvcHVwc190b29sdGlwcyAoRXBoeVdpbmRvdyAqd2luZG93LCBFcGh5RW1iZWRFdmVu
dCAqZXZlbnQpCit1cGRhdGVfcG9wdXBzX3Rvb2x0aXBzIChFcGh5V2luZG93ICp3aW5kb3csIFdl
YktpdFdlYlRhcmdldEluZm8gKnRhcmdldF9pbmZvKQogewotCUVwaHlFbWJlZEV2ZW50Q29udGV4
dCBjb250ZXh0OworCVdlYktpdFdlYlRhcmdldEluZm9Db250ZXh0IGNvbnRleHQ7CiAJR3RrQWN0
aW9uR3JvdXAgKmdyb3VwID0gd2luZG93LT5wcml2LT5wb3B1cHNfYWN0aW9uX2dyb3VwOwotCWNv
bnN0IEdWYWx1ZSAqdmFsdWU7CiAJR3RrQWN0aW9uICphY3Rpb247Ci0JY2hhciAqdG9vbHRpcCwg
Km5hbWU7CisJY2hhciAqdXJpLCAqdG9vbHRpcCwgKm5hbWU7CiAKLQljb250ZXh0ID0gZXBoeV9l
bWJlZF9ldmVudF9nZXRfY29udGV4dCAoZXZlbnQpOworCWdfb2JqZWN0X2dldCAodGFyZ2V0X2lu
Zm8sICJjb250ZXh0IiwgJmNvbnRleHQsIE5VTEwpOwogCi0JaWYgKGNvbnRleHQgJiBFUEhZX0VN
QkVEX0NPTlRFWFRfSU1BR0UpCisJaWYgKGNvbnRleHQgJiBXRUJLSVRfV0VCX1RBUkdFVF9JTkZP
X0NPTlRFWFRfSU1BR0UpCiAJewotCQl2YWx1ZSA9IGVwaHlfZW1iZWRfZXZlbnRfZ2V0X3Byb3Bl
cnR5IChldmVudCwgImltYWdlIik7Ci0JCW5hbWUgPSBnZXRfbmFtZV9mcm9tX2FkZHJlc3NfdmFs
dWUgKHZhbHVlKTsKKwkJZ19vYmplY3RfZ2V0ICh0YXJnZXRfaW5mbywgImltYWdlLXVyaSIsICZ1
cmksIE5VTEwpOworCQluYW1lID0gZ19wYXRoX2dldF9iYXNlbmFtZSAodXJpKTsKIAogCQlhY3Rp
b24gPSBndGtfYWN0aW9uX2dyb3VwX2dldF9hY3Rpb24gKGdyb3VwLCAiT3BlbkltYWdlIik7CiAJ
CXRvb2x0aXAgPSBnX3N0cmR1cF9wcmludGYgKF8oIk9wZW4gaW1hZ2Ug4oCcJXPigJ0iKSwgbmFt
ZSk7CkBAIC0yMDk0LDM2ICsyMDgzLDQwIEBAIHVwZGF0ZV9wb3B1cHNfdG9vbHRpcHMgKEVwaHlX
aW5kb3cgKndpbmRvdywgRXBoeUVtYmVkRXZlbnQgKmV2ZW50KQogCiAJCWFjdGlvbiA9IGd0a19h
Y3Rpb25fZ3JvdXBfZ2V0X2FjdGlvbiAoZ3JvdXAsICJDb3B5SW1hZ2VMb2NhdGlvbiIpOwogCQl0
b29sdGlwID0gZ19zdHJkdXBfcHJpbnRmIChfKCJDb3B5IGltYWdlIGFkZHJlc3Mg4oCcJXPigJ0i
KSwKLQkJCQkJICAgZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSkpOworCQkJCQkgICB1cmkpOwog
CQlnX29iamVjdF9zZXQgKGFjdGlvbiwgInRvb2x0aXAiLCB0b29sdGlwLCBOVUxMKTsKIAkJZ19m
cmVlICh0b29sdGlwKTsJCQogCiAJCWdfZnJlZSAobmFtZSk7CiAJfQogCi0JaWYgKGNvbnRleHQg
JiBFUEhZX0VNQkVEX0NPTlRFWFRfRU1BSUxfTElOSykKLQl7Ci0JCXZhbHVlID0gZXBoeV9lbWJl
ZF9ldmVudF9nZXRfcHJvcGVydHkgKGV2ZW50LCAibGluayIpOwotCi0JCWFjdGlvbiA9IGd0a19h
Y3Rpb25fZ3JvdXBfZ2V0X2FjdGlvbiAoZ3JvdXAsICJTZW5kRW1haWwiKTsKLQkJdG9vbHRpcCA9
IGdfc3RyZHVwX3ByaW50ZiAoXygiU2VuZCBlbWFpbCB0byBhZGRyZXNzIOKAnCVz4oCdIiksCi0J
CQkJCSAgIGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKLQkJZ19vYmplY3Rfc2V0IChhY3Rp
b24sICJ0b29sdGlwIiwgdG9vbHRpcCwgTlVMTCk7Ci0JCWdfZnJlZSAodG9vbHRpcCk7Ci0KLQkJ
YWN0aW9uID0gZ3RrX2FjdGlvbl9ncm91cF9nZXRfYWN0aW9uIChncm91cCwgIkNvcHlFbWFpbEFk
ZHJlc3MiKTsKLQkJdG9vbHRpcCA9IGdfc3RyZHVwX3ByaW50ZiAoXygiQ29weSBlbWFpbCBhZGRy
ZXNzIOKAnCVz4oCdIiksCi0JCQkJCSAgIGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKLQkJ
Z19vYmplY3Rfc2V0IChhY3Rpb24sICJ0b29sdGlwIiwgdG9vbHRpcCwgTlVMTCk7Ci0JCWdfZnJl
ZSAodG9vbHRpcCk7Ci0JfQorCS8qIEZJWE1FOyBuZWVkcyB0byBiZSByZWltcGxlbWVudGVkICov
CisJLyoKKwkgKiAgaWYgKGNvbnRleHQgJiBXRUJLSVRfV0VCX1RBUkdFVF9JTkZPX0NPTlRFWFRf
RU1BSUxfTElOSykKKwkgKiAgeworCSAqICAJZ19vYmplY3RfZ2V0ICh0YXJnZXRfaW5mbywgImxp
bmstdXJpIiwgJnVyaSwgTlVMTCk7CisJICogIAluYW1lID0gZ19wYXRoX2dldF9iYXNlbmFtZSAo
dXJpKTsKKwkgKgorCSAqICAJYWN0aW9uID0gZ3RrX2FjdGlvbl9ncm91cF9nZXRfYWN0aW9uIChn
cm91cCwgIlNlbmRFbWFpbCIpOworCSAqICAJdG9vbHRpcCA9IGdfc3RyZHVwX3ByaW50ZiAoXygi
U2VuZCBlbWFpbCB0byBhZGRyZXNzIOKAnCVz4oCdIiksCisJICogIAkJCQkgICBnX3ZhbHVlX2dl
dF9zdHJpbmcgKHZhbHVlKSk7CisJICogIAlnX29iamVjdF9zZXQgKGFjdGlvbiwgInRvb2x0aXAi
LCB0b29sdGlwLCBOVUxMKTsKKwkgKiAgCWdfZnJlZSAodG9vbHRpcCk7CisJICoKKwkgKiAgCWFj
dGlvbiA9IGd0a19hY3Rpb25fZ3JvdXBfZ2V0X2FjdGlvbiAoZ3JvdXAsICJDb3B5RW1haWxBZGRy
ZXNzIik7CisJICogIAl0b29sdGlwID0gZ19zdHJkdXBfcHJpbnRmIChfKCJDb3B5IGVtYWlsIGFk
ZHJlc3Mg4oCcJXPigJ0iKSwKKwkgKiAgCQkJCSAgIGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUp
KTsKKwkgKiAgCWdfb2JqZWN0X3NldCAoYWN0aW9uLCAidG9vbHRpcCIsIHRvb2x0aXAsIE5VTEwp
OworCSAqICAJZ19mcmVlICh0b29sdGlwKTsKKwkgKiAgfQorCSAqLwogCi0JaWYgKGNvbnRleHQg
JiBFUEhZX0VNQkVEX0NPTlRFWFRfTElOSykKKwlpZiAoY29udGV4dCAmIFdFQktJVF9XRUJfVEFS
R0VUX0lORk9fQ09OVEVYVF9MSU5LKQogCXsKLQkJdmFsdWUgPSBlcGh5X2VtYmVkX2V2ZW50X2dl
dF9wcm9wZXJ0eSAoZXZlbnQsICJsaW5rIik7CisJCWdfb2JqZWN0X2dldCAodGFyZ2V0X2luZm8s
ICJsaW5rLXVyaSIsICZ1cmksIE5VTEwpOwogCiAJCWFjdGlvbiA9IGd0a19hY3Rpb25fZ3JvdXBf
Z2V0X2FjdGlvbiAoZ3JvdXAsICJEb3dubG9hZExpbmsiKTsKLQkJbmFtZSA9IGdldF9uYW1lX2Zy
b21fYWRkcmVzc192YWx1ZSAodmFsdWUpOworCQluYW1lID0gZ19wYXRoX2dldF9iYXNlbmFtZSAo
dXJpKTsKIAkJdG9vbHRpcCA9IGdfc3RyZHVwX3ByaW50ZiAoXygiU2F2ZSBsaW5rIOKAnCVz4oCd
IiksIG5hbWUpOwogCQlnX29iamVjdF9zZXQgKGFjdGlvbiwgInRvb2x0aXAiLCB0b29sdGlwLCBO
VUxMKTsKIAkJZ19mcmVlIChuYW1lKTsKQEAgLTIxMzEsMTMgKzIxMjQsMTMgQEAgdXBkYXRlX3Bv
cHVwc190b29sdGlwcyAoRXBoeVdpbmRvdyAqd2luZG93LCBFcGh5RW1iZWRFdmVudCAqZXZlbnQp
CiAKIAkJYWN0aW9uID0gZ3RrX2FjdGlvbl9ncm91cF9nZXRfYWN0aW9uIChncm91cCwgIkJvb2tt
YXJrTGluayIpOwogCQl0b29sdGlwID0gZ19zdHJkdXBfcHJpbnRmIChfKCJCb29rbWFyayBsaW5r
IOKAnCVz4oCdIiksCi0JCQkJCSAgIGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKKwkJCQkJ
ICAgdXJpKTsKIAkJZ19vYmplY3Rfc2V0IChhY3Rpb24sICJ0b29sdGlwIiwgdG9vbHRpcCwgTlVM
TCk7CiAJCWdfZnJlZSAodG9vbHRpcCk7CiAKIAkJYWN0aW9uID0gZ3RrX2FjdGlvbl9ncm91cF9n
ZXRfYWN0aW9uIChncm91cCwgIkNvcHlMaW5rQWRkcmVzcyIpOwogCQl0b29sdGlwID0gZ19zdHJk
dXBfcHJpbnRmIChfKCJDb3B5IGxpbmsncyBhZGRyZXNzIOKAnCVz4oCdIiksCi0JCQkJCSAgIGdf
dmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKKwkJCQkJICAgdXJpKTsKIAkJZ19vYmplY3Rfc2V0
IChhY3Rpb24sICJ0b29sdGlwIiwgdG9vbHRpcCwgTlVMTCk7CiAJCWdfZnJlZSAodG9vbHRpcCk7
CiAJfQpAQCAtMjE0NiwxNyArMjEzOSwxNyBAQCB1cGRhdGVfcG9wdXBzX3Rvb2x0aXBzIChFcGh5
V2luZG93ICp3aW5kb3csIEVwaHlFbWJlZEV2ZW50ICpldmVudCkKIHN0YXRpYyB2b2lkCiBzaG93
X2VtYmVkX3BvcHVwIChFcGh5V2luZG93ICp3aW5kb3csCiAJCSAgRXBoeUVtYmVkICplbWJlZCwK
LQkJICBFcGh5RW1iZWRFdmVudCAqZXZlbnQpCisJCSAgV2ViS2l0V2ViVGFyZ2V0SW5mbyAqdGFy
Z2V0X2luZm8pCiB7CiAJRXBoeVdpbmRvd1ByaXZhdGUgKnByaXYgPSB3aW5kb3ctPnByaXY7CiAJ
R3RrQWN0aW9uR3JvdXAgKmFjdGlvbl9ncm91cDsKIAlHdGtBY3Rpb24gKmFjdGlvbjsKLQlFcGh5
RW1iZWRFdmVudENvbnRleHQgY29udGV4dDsKKwlXZWJLaXRXZWJUYXJnZXRJbmZvQ29udGV4dCBj
b250ZXh0OwogCWNvbnN0IGNoYXIgKnBvcHVwOwotCWNvbnN0IEdWYWx1ZSAqdmFsdWU7CisJY2hh
ciAqdXJpOwogCWdib29sZWFuIGZyYW1lZCwgY2FuX29wZW5faW5fbmV3OwogCUd0a1dpZGdldCAq
d2lkZ2V0OwotCWd1aW50IGJ1dHRvbjsKKwlndWludCBidXR0b24gPSAwOwogCiAJLyogRG8gbm90
IHNob3cgdGhlIG1lbnUgaW4gcHJpbnQgcHJldmlldyBtb2RlICovCiAJaWYgKHByaXYtPnBwdl9t
b2RlKQpAQCAtMjE2NCwyNiArMjE1NywzMyBAQCBzaG93X2VtYmVkX3BvcHVwIChFcGh5V2luZG93
ICp3aW5kb3csCiAJCXJldHVybjsKIAl9CiAKLQl2YWx1ZSA9IGVwaHlfZW1iZWRfZXZlbnRfZ2V0
X3Byb3BlcnR5IChldmVudCwgImZyYW1lZF9wYWdlIik7Ci0JZnJhbWVkID0gZ192YWx1ZV9nZXRf
aW50ICh2YWx1ZSk7CisJLyogIEZJWE1FOiByZWltcGxlbWVudAorCSAqICB2YWx1ZSA9IGVwaHlf
ZW1iZWRfZXZlbnRfZ2V0X3Byb3BlcnR5IChldmVudCwgImZyYW1lZF9wYWdlIik7CisJICogIGZy
YW1lZCA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOworCSAqLworCWZyYW1lZCA9IEZBTFNFOwog
Ci0JY2FuX29wZW5faW5fbmV3ID0gZXBoeV9lbWJlZF9ldmVudF9oYXNfcHJvcGVydHkgKGV2ZW50
LCAibGluay1oYXMtd2ViLXNjaGVtZSIpOworCWdfb2JqZWN0X2dldCAodGFyZ2V0X2luZm8sICJj
b250ZXh0IiwgJmNvbnRleHQsICJsaW5rLXVyaSIsICZ1cmksIE5VTEwpOwogCi0JY29udGV4dCA9
IGVwaHlfZW1iZWRfZXZlbnRfZ2V0X2NvbnRleHQgKGV2ZW50KTsKKwljYW5fb3Blbl9pbl9uZXcg
PSBjb250ZXh0ICYgV0VCS0lUX1dFQl9UQVJHRVRfSU5GT19DT05URVhUX0xJTksgJiYKKwkJKGdf
c3RyX2hhc19wcmVmaXggKHVyaSwgImh0dHAiKSB8fCBnX3N0cl9oYXNfcHJlZml4ICh1cmksICJo
dHRwcyIpKTsKIAogCUxPRyAoInNob3dfZW1iZWRfcG9wdXAgY29udGV4dCAleCIsIGNvbnRleHQp
OwogCi0JaWYgKGNvbnRleHQgJiBFUEhZX0VNQkVEX0NPTlRFWFRfRU1BSUxfTElOSykKLQl7Ci0J
CXBvcHVwID0gIi9FcGh5RW1haWxMaW5rUG9wdXAiOwotCQl1cGRhdGVfZWRpdF9hY3Rpb25zX3Nl
bnNpdGl2aXR5ICh3aW5kb3csIFRSVUUpOwotCX0KLQllbHNlIGlmIChjb250ZXh0ICYgRVBIWV9F
TUJFRF9DT05URVhUX0xJTkspCisJLyogRklYTUU6IHJlaW1wbGVtZW50ICovCisJLyogIGlmIChj
b250ZXh0ICYgV0VCS0lUX1dFQl9UQVJHRVRfSU5GT19DT05URVhUX0VNQUlMX0xJTkspCisJICog
IHsKKwkgKiAgCXBvcHVwID0gIi9FcGh5RW1haWxMaW5rUG9wdXAiOworCSAqICAJdXBkYXRlX2Vk
aXRfYWN0aW9uc19zZW5zaXRpdml0eSAod2luZG93LCBUUlVFKTsKKwkgKiAgfQorCSAqLworCisJ
aWYgKGNvbnRleHQgJiBXRUJLSVRfV0VCX1RBUkdFVF9JTkZPX0NPTlRFWFRfTElOSykKIAl7CiAJ
CXBvcHVwID0gIi9FcGh5TGlua1BvcHVwIjsKIAkJdXBkYXRlX2VkaXRfYWN0aW9uc19zZW5zaXRp
dml0eSAod2luZG93LCBUUlVFKTsKIAl9Ci0JZWxzZSBpZiAoY29udGV4dCAmIEVQSFlfRU1CRURf
Q09OVEVYVF9JTlBVVCkKKwllbHNlIGlmIChjb250ZXh0ICYgV0VCS0lUX1dFQl9UQVJHRVRfSU5G
T19DT05URVhUX0VESVRBQkxFKQogCXsKIAkJcG9wdXAgPSAiL0VwaHlJbnB1dFBvcHVwIjsKIAkJ
dXBkYXRlX2VkaXRfYWN0aW9uc19zZW5zaXRpdml0eSAod2luZG93LCBGQUxTRSk7CkBAIC0yMTk0
LDcgKzIxOTQsNyBAQCBzaG93X2VtYmVkX3BvcHVwIChFcGh5V2luZG93ICp3aW5kb3csCiAJCXVw
ZGF0ZV9lZGl0X2FjdGlvbnNfc2Vuc2l0aXZpdHkgKHdpbmRvdywgVFJVRSk7CiAJfQogCi0JdXBk
YXRlX3BvcHVwc190b29sdGlwcyAod2luZG93LCBldmVudCk7CisJdXBkYXRlX3BvcHVwc190b29s
dGlwcyAod2luZG93LCB0YXJnZXRfaW5mbyk7CiAKIAl3aWRnZXQgPSBndGtfdWlfbWFuYWdlcl9n
ZXRfd2lkZ2V0IChwcml2LT5tYW5hZ2VyLCBwb3B1cCk7CiAJZ19yZXR1cm5faWZfZmFpbCAod2lk
Z2V0ICE9IE5VTEwpOwpAQCAtMjIwNywzNiArMjIwNyw0MSBAQCBzaG93X2VtYmVkX3BvcHVwIChF
cGh5V2luZG93ICp3aW5kb3csCiAJYWN0aW9uID0gZ3RrX2FjdGlvbl9ncm91cF9nZXRfYWN0aW9u
IChhY3Rpb25fZ3JvdXAsICJPcGVuTGlua0luTmV3VGFiIik7CiAJZXBoeV9hY3Rpb25fY2hhbmdl
X3NlbnNpdGl2aXR5X2ZsYWdzIChhY3Rpb24sIFNFTlNfRkxBR19DT05URVhULCAhY2FuX29wZW5f
aW5fbmV3KTsKIAotCQogCXVwZGF0ZV9wb3B1cF9hY3Rpb25zX3Zpc2liaWxpdHkgKHdpbmRvdywK
LQkJCQkJIGNvbnRleHQgJiBFUEhZX0VNQkVEX0NPTlRFWFRfSU1BR0UsCisJCQkJCSBjb250ZXh0
ICYgV0VCS0lUX1dFQl9UQVJHRVRfSU5GT19DT05URVhUX0lNQUdFLAogCQkJCQkgZnJhbWVkKTsK
IAotCV9lcGh5X3dpbmRvd19zZXRfY29udGV4dF9ldmVudCAod2luZG93LCBldmVudCk7CisJX2Vw
aHlfd2luZG93X3NldF9jb250ZXh0X2V2ZW50ICh3aW5kb3csIHRhcmdldF9pbmZvKTsKIAogCWdf
c2lnbmFsX2Nvbm5lY3QgKHdpZGdldCwgImRlYWN0aXZhdGUiLAogCQkJICBHX0NBTExCQUNLIChl
bWJlZF9wb3B1cF9kZWFjdGl2YXRlX2NiKSwgd2luZG93KTsKIAotCWJ1dHRvbiA9IGVwaHlfZW1i
ZWRfZXZlbnRfZ2V0X2J1dHRvbiAoZXZlbnQpOworCS8qIEZJWE1FOiByZWltcGxlbWVudCAqLwor
CS8qIAlidXR0b24gPSBlcGh5X2VtYmVkX2V2ZW50X2dldF9idXR0b24gKGV2ZW50KTsKKwkgKgor
CSAqICBpZiAoYnV0dG9uID09IDApCisJICogIHsKKwkgKiAgCWd0a19tZW51X3BvcHVwIChHVEtf
TUVOVSAod2lkZ2V0KSwgTlVMTCwgTlVMTCwKKwkgKiAgCQkJcG9wdXBfbWVudV9hdF9jb29yZHMs
IHdpbmRvdywgMCwKKwkgKiAgCQkJZ3RrX2dldF9jdXJyZW50X2V2ZW50X3RpbWUgKCkpOworCSAq
ICAJZ3RrX21lbnVfc2hlbGxfc2VsZWN0X2ZpcnN0IChHVEtfTUVOVV9TSEVMTCAod2lkZ2V0KSwg
RkFMU0UpOworCSAqICB9CisJICogIGVsc2UKKwkgKiAgeworCSAqICAJZ3RrX21lbnVfcG9wdXAg
KEdUS19NRU5VICh3aWRnZXQpLCBOVUxMLCBOVUxMLAorCSAqICAJCQlOVUxMLCBOVUxMLCBidXR0
b24sCisJICogIAkJCWd0a19nZXRfY3VycmVudF9ldmVudF90aW1lICgpKTsKKwkgKiAgfQorCSAq
LwogCi0JaWYgKGJ1dHRvbiA9PSAwKQotCXsKLQkJZ3RrX21lbnVfcG9wdXAgKEdUS19NRU5VICh3
aWRnZXQpLCBOVUxMLCBOVUxMLAotCQkJCXBvcHVwX21lbnVfYXRfY29vcmRzLCB3aW5kb3csIDAs
Ci0JCQkJZ3RrX2dldF9jdXJyZW50X2V2ZW50X3RpbWUgKCkpOwotCQlndGtfbWVudV9zaGVsbF9z
ZWxlY3RfZmlyc3QgKEdUS19NRU5VX1NIRUxMICh3aWRnZXQpLCBGQUxTRSk7Ci0JfQotCWVsc2UK
LQl7Ci0JCWd0a19tZW51X3BvcHVwIChHVEtfTUVOVSAod2lkZ2V0KSwgTlVMTCwgTlVMTCwKLQkJ
CQlOVUxMLCBOVUxMLCBidXR0b24sCi0JCQkJZ3RrX2dldF9jdXJyZW50X2V2ZW50X3RpbWUgKCkp
OwotCX0KKwlndGtfbWVudV9wb3B1cCAoR1RLX01FTlUgKHdpZGdldCksIE5VTEwsIE5VTEwsCisJ
CQlOVUxMLCBOVUxMLCBidXR0b24sCisJCQlndGtfZ2V0X2N1cnJlbnRfZXZlbnRfdGltZSAoKSk7
CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgogdGFiX2NvbnRleHRfbWVudV9jYiAoRXBoeVdlYlZpZXcg
KnZpZXcsCi0JCSAgICAgRXBoeUVtYmVkRXZlbnQgKmV2ZW50LAorCQkgICAgIFdlYktpdFdlYlRh
cmdldEluZm8gKnRhcmdldF9pbmZvLAogCQkgICAgIEVwaHlXaW5kb3cgKndpbmRvdykKIHsKIAlF
cGh5RW1iZWQgKmVtYmVkOwpAQCAtMjI0NSw3ICsyMjUwLDcgQEAgdGFiX2NvbnRleHRfbWVudV9j
YiAoRXBoeVdlYlZpZXcgKnZpZXcsCiAJZW1iZWQgPSBFUEhZX0dFVF9FTUJFRF9GUk9NX0VQSFlf
V0VCX1ZJRVcgKHZpZXcpOwogCWdfcmV0dXJuX3ZhbF9pZl9mYWlsICh3aW5kb3ctPnByaXYtPmFj
dGl2ZV9lbWJlZCA9PSBlbWJlZCwgRkFMU0UpOwogCi0Jc2hvd19lbWJlZF9wb3B1cCAod2luZG93
LCBlbWJlZCwgZXZlbnQpOworCXNob3dfZW1iZWRfcG9wdXAgKHdpbmRvdywgZW1iZWQsIHRhcmdl
dF9pbmZvKTsKIAogCXJldHVybiBUUlVFOwogfQpAQCAtMzAwMSw2ICszMDA2LDggQEAgc2hvd19u
b3RlYm9va19wb3B1cF9tZW51IChHdGtOb3RlYm9vayAqbm90ZWJvb2ssCiAJR3RrV2lkZ2V0ICpt
ZW51LCAqdGFiLCAqdGFiX2xhYmVsOwogCUd0a0FjdGlvbiAqYWN0aW9uOwogCisJZ19kZWJ1ZyAo
InNob3dfbm90ZWJvb2tfcG9wdXBfbWVudSIpOworCiAJbWVudSA9IGd0a191aV9tYW5hZ2VyX2dl
dF93aWRnZXQgKHdpbmRvdy0+cHJpdi0+bWFuYWdlciwgIi9FcGh5Tm90ZWJvb2tQb3B1cCIpOwog
CWdfcmV0dXJuX3ZhbF9pZl9mYWlsIChtZW51ICE9IE5VTEwsIEZBTFNFKTsKIApAQCAtMzAzNSw3
ICszMDQyLDggQEAgbm90ZWJvb2tfYnV0dG9uX3ByZXNzX2NiIChHdGtOb3RlYm9vayAqbm90ZWJv
b2ssCiAJCQkgIEdka0V2ZW50QnV0dG9uICpldmVudCwKIAkJCSAgRXBoeVdpbmRvdyAqd2luZG93
KQogewotCWlmIChHREtfQlVUVE9OX1BSRVNTID09IGV2ZW50LT50eXBlICYmIDMgPT0gZXZlbnQt
PmJ1dHRvbikKKwlpZiAoR0RLX0JVVFRPTl9QUkVTUyA9PSBldmVudC0+dHlwZSAmJiAzID09IGV2
ZW50LT5idXR0b24gJiYKKwkgICAgRVBIWV9JU19OT1RFQk9PSyAoZ3RrX3dpbmRvd19nZXRfZm9j
dXMgKEdUS19XSU5ET1cgKHdpbmRvdykpKSkKIAl7CiAJCXJldHVybiBzaG93X25vdGVib29rX3Bv
cHVwX21lbnUgKG5vdGVib29rLCB3aW5kb3csIGV2ZW50KTsKIAl9CkBAIC00MTk4LDEyICs0MjA2
LDEyIEBAIGVwaHlfd2luZG93X2dldF9pc19wcmludF9wcmV2aWV3IChFcGh5V2luZG93ICp3aW5k
b3cpCiAgKiBlcGh5X3dpbmRvd19nZXRfY29udGV4dF9ldmVudDoKICAqIEB3aW5kb3c6IGFuICNF
cGh5V2luZG93CiAgKgotICogUmV0dXJucyB0aGUgI0VwaHlFbWJlZEV2ZW50IGZvciB0aGUgY3Vy
cmVudCBjb250ZXh0IG1lbnUuCisgKiBSZXR1cm5zIHRoZSAjV2ViS2l0V2ViVGFyZ2V0SW5mbyBm
b3IgdGhlIGN1cnJlbnQgY29udGV4dCBtZW51LgogICogVXNlIHRoaXMgdG8gZ2V0IHRoZSBldmVu
dCBmcm9tIHRoZSBhY3Rpb24gY2FsbGJhY2suCiAgKgotICogUmV0dXJuIHZhbHVlOiBhbiAjRXBo
eUVtYmVkRXZlbnQsIG9yICVOVUxMCisgKiBSZXR1cm4gdmFsdWU6IGFuICNXZWJLaXRXZWJUYXJn
ZXRJbmZvLCBvciAlTlVMTAogICoqLwotRXBoeUVtYmVkRXZlbnQgKgorV2ViS2l0V2ViVGFyZ2V0
SW5mbyAqCiBlcGh5X3dpbmRvd19nZXRfY29udGV4dF9ldmVudCAoRXBoeVdpbmRvdyAqd2luZG93
KQogewogCWdfcmV0dXJuX3ZhbF9pZl9mYWlsIChFUEhZX0lTX1dJTkRPVyAod2luZG93KSwgTlVM
TCk7CmRpZmYgLS1naXQgYS9zcmMvZXBoeS13aW5kb3cuaCBiL3NyYy9lcGh5LXdpbmRvdy5oCmlu
ZGV4IGRlN2YyMWEuLjkzYTJhMDQgMTAwNjQ0Ci0tLSBhL3NyYy9lcGh5LXdpbmRvdy5oCisrKyBi
L3NyYy9lcGh5LXdpbmRvdy5oCkBAIC01Niw0MiArNTYsNDIgQEAgc3RydWN0IF9FcGh5V2luZG93
Q2xhc3MKIAlHdGtXaW5kb3dDbGFzcyBwYXJlbnRfY2xhc3M7CiB9OwogCi1HVHlwZQkJICBlcGh5
X3dpbmRvd19nZXRfdHlwZQkJICAodm9pZCk7CitHVHlwZQkJICAgICBlcGh5X3dpbmRvd19nZXRf
dHlwZQkJICAodm9pZCk7CiAKLUVwaHlXaW5kb3cJICplcGh5X3dpbmRvd19uZXcJCSAgKHZvaWQp
OworRXBoeVdpbmRvdwkgICAgKmVwaHlfd2luZG93X25ldwkJICAgICAgICAgICh2b2lkKTsKIAot
RXBoeVdpbmRvdwkgKmVwaHlfd2luZG93X25ld193aXRoX2Nocm9tZQkgIChFcGh5V2ViVmlld0No
cm9tZSBjaHJvbWUsCi0JCQkJCQkgICBnYm9vbGVhbiBpc19wb3B1cCk7CitFcGh5V2luZG93CSAg
ICAqZXBoeV93aW5kb3dfbmV3X3dpdGhfY2hyb21lCSAgKEVwaHlXZWJWaWV3Q2hyb21lIGNocm9t
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2Jvb2xlYW4gaXNfcG9wdXApOwogCi12b2lkCQkgX2VwaHlfd2luZG93X3NldF9wcmlu
dF9wcmV2aWV3CSAgKEVwaHlXaW5kb3cgKndpbmRvdywKLQkJCQkJCSAgIGdib29sZWFuIGVuYWJs
ZWQpOwordm9pZAkJICAgIF9lcGh5X3dpbmRvd19zZXRfcHJpbnRfcHJldmlldwkgIChFcGh5V2lu
ZG93ICp3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOwogCi1HT2JqZWN0CQkgKmVwaHlfd2lu
ZG93X2dldF91aV9tYW5hZ2VyCSAgKEVwaHlXaW5kb3cgKndpbmRvdyk7CitHT2JqZWN0CQkgICAg
KmVwaHlfd2luZG93X2dldF91aV9tYW5hZ2VyCSAgICAgICAgICAoRXBoeVdpbmRvdyAqd2luZG93
KTsKIAotR3RrV2lkZ2V0CSAqZXBoeV93aW5kb3dfZ2V0X3Rvb2xiYXIJICAoRXBoeVdpbmRvdyAq
d2luZG93KTsKK0d0a1dpZGdldAkgICAgKmVwaHlfd2luZG93X2dldF90b29sYmFyCSAgICAgICAg
ICAoRXBoeVdpbmRvdyAqd2luZG93KTsKIAotR3RrV2lkZ2V0CSAqZXBoeV93aW5kb3dfZ2V0X25v
dGVib29rCSAgKEVwaHlXaW5kb3cgKndpbmRvdyk7CitHdGtXaWRnZXQJICAgICplcGh5X3dpbmRv
d19nZXRfbm90ZWJvb2sJICAgICAgICAgIChFcGh5V2luZG93ICp3aW5kb3cpOwogCi1HdGtXaWRn
ZXQgICAgICAgICplcGh5X3dpbmRvd19nZXRfZmluZF90b29sYmFyICAgIChFcGh5V2luZG93ICp3
aW5kb3cpOworR3RrV2lkZ2V0ICAgICAgICAgICAqZXBoeV93aW5kb3dfZ2V0X2ZpbmRfdG9vbGJh
ciAgICAgICAgIChFcGh5V2luZG93ICp3aW5kb3cpOwogCi1HdGtXaWRnZXQJICplcGh5X3dpbmRv
d19nZXRfc3RhdHVzYmFyCSAgKEVwaHlXaW5kb3cgKndpbmRvdyk7CitHdGtXaWRnZXQJICAgICpl
cGh5X3dpbmRvd19nZXRfc3RhdHVzYmFyCSAgICAgICAgICAoRXBoeVdpbmRvdyAqd2luZG93KTsK
IAotdm9pZAkJICBlcGh5X3dpbmRvd19sb2FkX3VybAkJICAoRXBoeVdpbmRvdyAqd2luZG93LAot
CQkJCQkJICAgY29uc3QgY2hhciAqdXJsKTsKK3ZvaWQJCSAgICAgZXBoeV93aW5kb3dfbG9hZF91
cmwJCSAgKEVwaHlXaW5kb3cgKndpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXJsKTsKIAotdm9pZAkJ
ICBlcGh5X3dpbmRvd19zZXRfem9vbQkJICAoRXBoeVdpbmRvdyAqd2luZG93LAotCQkJCQkJICAg
ZmxvYXQgem9vbSk7Cit2b2lkCQkgICAgIGVwaHlfd2luZG93X3NldF96b29tCQkgIChFcGh5V2lu
ZG93ICp3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IHpvb20pOwogCi12b2lkCQkgIGVwaHlfd2luZG93X2FjdGl2
YXRlX2xvY2F0aW9uCSAgKEVwaHlXaW5kb3cgKndpbmRvdyk7Cit2b2lkCQkgICAgIGVwaHlfd2lu
ZG93X2FjdGl2YXRlX2xvY2F0aW9uCSAgKEVwaHlXaW5kb3cgKndpbmRvdyk7CiAKLWdib29sZWFu
CSAgZXBoeV93aW5kb3dfZ2V0X2lzX3ByaW50X3ByZXZpZXcoRXBoeVdpbmRvdyAqd2luZG93KTsK
K2dib29sZWFuCSAgICAgZXBoeV93aW5kb3dfZ2V0X2lzX3ByaW50X3ByZXZpZXcgICAgIChFcGh5
V2luZG93ICp3aW5kb3cpOwogCi1FcGh5RW1iZWRFdmVudAkgKmVwaHlfd2luZG93X2dldF9jb250
ZXh0X2V2ZW50CSAgKEVwaHlXaW5kb3cgKndpbmRvdyk7CitXZWJLaXRXZWJUYXJnZXRJbmZvICpl
cGh5X3dpbmRvd19nZXRfY29udGV4dF9ldmVudAkgIChFcGh5V2luZG93ICp3aW5kb3cpOwogCi12
b2lkCQkgX2VwaHlfd2luZG93X3NldF9jb250ZXh0X2V2ZW50CSAgKEVwaHlXaW5kb3cgKndpbmRv
dywKLQkJCQkJCSAgIEVwaHlFbWJlZEV2ZW50ICpldmVudCk7Cit2b2lkCQkgICAgX2VwaHlfd2lu
ZG93X3NldF9jb250ZXh0X2V2ZW50CSAgKEVwaHlXaW5kb3cgKndpbmRvdywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2Vi
VGFyZ2V0SW5mbyAqdGFyZ2V0X2luZm8pOwogCi12b2lkCQkgX2VwaHlfd2luZG93X3Vuc2V0X2Nv
bnRleHRfZXZlbnQgKEVwaHlXaW5kb3cgKndpbmRvdyk7Cit2b2lkCQkgICAgX2VwaHlfd2luZG93
X3Vuc2V0X2NvbnRleHRfZXZlbnQgICAgICAoRXBoeVdpbmRvdyAqd2luZG93KTsKIAogR19FTkRf
REVDTFMKIApkaWZmIC0tZ2l0IGEvc3JjL3BvcHVwLWNvbW1hbmRzLmMgYi9zcmMvcG9wdXAtY29t
bWFuZHMuYwppbmRleCAyODIwMjA4Li5kMDE5M2ZmIDEwMDY0NAotLS0gYS9zcmMvcG9wdXAtY29t
bWFuZHMuYworKysgYi9zcmMvcG9wdXAtY29tbWFuZHMuYwpAQCAtMzksMjAgKzM5LDIwIEBAIHZv
aWQKIHBvcHVwX2NtZF9saW5rX2luX25ld193aW5kb3cgKEd0a0FjdGlvbiAqYWN0aW9uLAogCQkg
ICAgICAgICAgICAgIEVwaHlXaW5kb3cgKndpbmRvdykKIHsKLQlFcGh5RW1iZWRFdmVudCAqZXZl
bnQ7CisJV2ViS2l0V2ViVGFyZ2V0SW5mbyAqdGFyZ2V0X2luZm87CiAJRXBoeUVtYmVkICplbWJl
ZDsKLQljb25zdCBHVmFsdWUgKnZhbHVlOworCWNoYXIgKnVyaTsKIAogCWVtYmVkID0gZXBoeV9l
bWJlZF9jb250YWluZXJfZ2V0X2FjdGl2ZV9jaGlsZCAKIAkJKEVQSFlfRU1CRURfQ09OVEFJTkVS
ICh3aW5kb3cpKTsKIAotCWV2ZW50ID0gZXBoeV93aW5kb3dfZ2V0X2NvbnRleHRfZXZlbnQgKHdp
bmRvdyk7Ci0JZ19yZXR1cm5faWZfZmFpbCAoZXZlbnQgIT0gTlVMTCk7CisJdGFyZ2V0X2luZm8g
PSBlcGh5X3dpbmRvd19nZXRfY29udGV4dF9ldmVudCAod2luZG93KTsKKwlnX3JldHVybl9pZl9m
YWlsICh0YXJnZXRfaW5mbyAhPSBOVUxMKTsKIAotCXZhbHVlID0gZXBoeV9lbWJlZF9ldmVudF9n
ZXRfcHJvcGVydHkgKGV2ZW50LCAibGluayIpOworCWdfb2JqZWN0X2dldCAodGFyZ2V0X2luZm8s
ICJsaW5rLXVyaSIsICZ1cmksIE5VTEwpOwogCiAJZXBoeV9zaGVsbF9uZXdfdGFiIChlcGh5X3No
ZWxsLCBOVUxMLCBlbWJlZCwKLQkJCSAgICBnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKSwKKwkJ
CSAgICB1cmksCiAJCQkgICAgRVBIWV9ORVdfVEFCX09QRU5fUEFHRSB8CiAJCQkgICAgRVBIWV9O
RVdfVEFCX0lOX05FV19XSU5ET1cpOwogfQpAQCAtNjEsMjAgKzYxLDIwIEBAIHZvaWQKIHBvcHVw
X2NtZF9saW5rX2luX25ld190YWIgKEd0a0FjdGlvbiAqYWN0aW9uLAogCQkgICAgICAgICAgIEVw
aHlXaW5kb3cgKndpbmRvdykKIHsKLQlFcGh5RW1iZWRFdmVudCAqZXZlbnQ7CisJV2ViS2l0V2Vi
VGFyZ2V0SW5mbyAqdGFyZ2V0X2luZm87CiAJRXBoeUVtYmVkICplbWJlZDsKLQljb25zdCBHVmFs
dWUgKnZhbHVlOworCWNoYXIgKnVyaTsKIAogCWVtYmVkID0gZXBoeV9lbWJlZF9jb250YWluZXJf
Z2V0X2FjdGl2ZV9jaGlsZAogCQkoRVBIWV9FTUJFRF9DT05UQUlORVIgKHdpbmRvdykpOwogCi0J
ZXZlbnQgPSBlcGh5X3dpbmRvd19nZXRfY29udGV4dF9ldmVudCAod2luZG93KTsKLQlnX3JldHVy
bl9pZl9mYWlsIChldmVudCAhPSBOVUxMKTsKKwl0YXJnZXRfaW5mbyA9IGVwaHlfd2luZG93X2dl
dF9jb250ZXh0X2V2ZW50ICh3aW5kb3cpOworCWdfcmV0dXJuX2lmX2ZhaWwgKHRhcmdldF9pbmZv
ICE9IE5VTEwpOwogCi0JdmFsdWUgPSBlcGh5X2VtYmVkX2V2ZW50X2dldF9wcm9wZXJ0eSAoZXZl
bnQsICJsaW5rIik7CisJZ19vYmplY3RfZ2V0ICh0YXJnZXRfaW5mbywgImxpbmstdXJpIiwgJnVy
aSwgTlVMTCk7CiAKIAllcGh5X3NoZWxsX25ld190YWIgKGVwaHlfc2hlbGwsIHdpbmRvdywgZW1i
ZWQsCi0JCQkgICAgZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSksCisJCQkgICAgdXJpLAogCQkJ
ICAgIEVQSFlfTkVXX1RBQl9PUEVOX1BBR0UgfAogCQkJICAgIEVQSFlfTkVXX1RBQl9JTl9FWElT
VElOR19XSU5ET1cpOwogfQpAQCAtODMsMzcgKzgzLDI2IEBAIHZvaWQKIHBvcHVwX2NtZF9ib29r
bWFya19saW5rIChHdGtBY3Rpb24gKmFjdGlvbiwKIAkJCSBFcGh5V2luZG93ICp3aW5kb3cpCiB7
Ci0JRXBoeUVtYmVkRXZlbnQgKmV2ZW50OwotCWNvbnN0IEdWYWx1ZSAqbGlua190aXRsZTsKLQlj
b25zdCBHVmFsdWUgKmxpbmtfcmVsOwotCWNvbnN0IEdWYWx1ZSAqbGluazsKLQljb25zdCBHVmFs
dWUgKmxpbmtfaXNfc21hcnQ7Ci0JY29uc3QgR1ZhbHVlICpsaW5rdGV4dDsKKwlXZWJLaXRXZWJU
YXJnZXRJbmZvICp0YXJnZXRfaW5mbzsKIAljb25zdCBjaGFyICp0aXRsZTsKIAljb25zdCBjaGFy
ICpsb2NhdGlvbjsKIAljb25zdCBjaGFyICpyZWw7CiAJZ2Jvb2xlYW4gaXNfc21hcnQ7CiAKLQll
dmVudCA9IGVwaHlfd2luZG93X2dldF9jb250ZXh0X2V2ZW50ICh3aW5kb3cpOwotCWdfcmV0dXJu
X2lmX2ZhaWwgKGV2ZW50ICE9IE5VTEwpOworCXRhcmdldF9pbmZvID0gZXBoeV93aW5kb3dfZ2V0
X2NvbnRleHRfZXZlbnQgKHdpbmRvdyk7CisJZ19yZXR1cm5faWZfZmFpbCAodGFyZ2V0X2luZm8g
IT0gTlVMTCk7CiAKLQlsaW5rX2lzX3NtYXJ0ID0gZXBoeV9lbWJlZF9ldmVudF9nZXRfcHJvcGVy
dHkgKGV2ZW50LCAibGlua19pc19zbWFydCIpOwotCWxpbmsgPSBlcGh5X2VtYmVkX2V2ZW50X2dl
dF9wcm9wZXJ0eSAoZXZlbnQsICJsaW5rIik7Ci0JbGlua190aXRsZSA9IGVwaHlfZW1iZWRfZXZl
bnRfZ2V0X3Byb3BlcnR5IChldmVudCwgImxpbmtfdGl0bGUiKTsKLQlsaW5rX3JlbCA9IGVwaHlf
ZW1iZWRfZXZlbnRfZ2V0X3Byb3BlcnR5IChldmVudCwgImxpbmtfcmVsIik7Ci0JbGlua3RleHQg
PSBlcGh5X2VtYmVkX2V2ZW50X2dldF9wcm9wZXJ0eSAoZXZlbnQsICJsaW5rdGV4dCIpOwotCi0J
bG9jYXRpb24gPSBnX3ZhbHVlX2dldF9zdHJpbmcgKGxpbmspOworCWdfb2JqZWN0X2dldCAodGFy
Z2V0X2luZm8sICJsaW5rLXVyaSIsICZsb2NhdGlvbiwgTlVMTCk7CiAJZ19yZXR1cm5faWZfZmFp
bCAobG9jYXRpb24pOwogCi0JcmVsID0gZ192YWx1ZV9nZXRfc3RyaW5nIChsaW5rX3JlbCk7Ci0J
aXNfc21hcnQgPSBnX3ZhbHVlX2dldF9pbnQgKGxpbmtfaXNfc21hcnQpOworCXJlbCA9IE5VTEw7
CisJaXNfc21hcnQgPSBGQUxTRTsKIAotCXRpdGxlID0gZ192YWx1ZV9nZXRfc3RyaW5nIChsaW5r
X3RpdGxlKTsKKwl0aXRsZSA9IE5VTEw7CiAKIAlpZiAodGl0bGUgPT0gTlVMTCB8fCB0aXRsZVsw
XSA9PSAnXDAnKQogCXsKLQkJdGl0bGUgPSBnX3ZhbHVlX2dldF9zdHJpbmcgKGxpbmt0ZXh0KTsK
KwkJdGl0bGUgPSBOVUxMOwogCX0KIAogCWlmICh0aXRsZSA9PSBOVUxMIHx8IHRpdGxlWzBdID09
ICdcMCcpCkBAIC0xNDIsMjYgKzEzMSwyNiBAQCB2b2lkCiBwb3B1cF9jbWRfY29weV9saW5rX2Fk
ZHJlc3MgKEd0a0FjdGlvbiAqYWN0aW9uLAogCQkJICAgICBFcGh5V2luZG93ICp3aW5kb3cpCiB7
Ci0JRXBoeUVtYmVkRXZlbnQgKmV2ZW50OwotCUVwaHlFbWJlZEV2ZW50Q29udGV4dCBjb250ZXh0
OworCVdlYktpdFdlYlRhcmdldEluZm8gKnRhcmdldF9pbmZvOworCVdlYktpdFdlYlRhcmdldElu
Zm9Db250ZXh0IGNvbnRleHQ7CiAJY29uc3QgY2hhciAqYWRkcmVzczsKLQljb25zdCBHVmFsdWUg
KnZhbHVlOwogCi0JZXZlbnQgPSBlcGh5X3dpbmRvd19nZXRfY29udGV4dF9ldmVudCAod2luZG93
KTsKLQlnX3JldHVybl9pZl9mYWlsIChldmVudCAhPSBOVUxMKTsKKwl0YXJnZXRfaW5mbyA9IGVw
aHlfd2luZG93X2dldF9jb250ZXh0X2V2ZW50ICh3aW5kb3cpOworCWdfcmV0dXJuX2lmX2ZhaWwg
KHRhcmdldF9pbmZvICE9IE5VTEwpOwogCi0JY29udGV4dCA9IGVwaHlfZW1iZWRfZXZlbnRfZ2V0
X2NvbnRleHQgKGV2ZW50KTsKKwlnX29iamVjdF9nZXQgKHRhcmdldF9pbmZvLCAiY29udGV4dCIs
ICZjb250ZXh0LCBOVUxMKTsKIAotCWlmIChjb250ZXh0ICYgRVBIWV9FTUJFRF9DT05URVhUX0VN
QUlMX0xJTkspCi0JewotCQl2YWx1ZSA9IGVwaHlfZW1iZWRfZXZlbnRfZ2V0X3Byb3BlcnR5IChl
dmVudCwgImVtYWlsIik7Ci0JCWFkZHJlc3MgPSBnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKTsK
LQkJcG9wdXBfY21kX2NvcHlfdG9fY2xpcGJvYXJkICh3aW5kb3csIGFkZHJlc3MpOwotCX0KLQll
bHNlIGlmIChjb250ZXh0ICYgRVBIWV9FTUJFRF9DT05URVhUX0xJTkspCisJLyogRklYTUU6IHJl
aW1wbGVtZW50ICovCisJLyoJaWYgKGNvbnRleHQgJiBFUEhZX0VNQkVEX0NPTlRFWFRfRU1BSUxf
TElOSykKKwkgKgl7CisJICoJCXZhbHVlID0gZXBoeV9lbWJlZF9ldmVudF9nZXRfcHJvcGVydHkg
KGV2ZW50LCAiZW1haWwiKTsKKwkgKgkJYWRkcmVzcyA9IGdfdmFsdWVfZ2V0X3N0cmluZyAodmFs
dWUpOworCSAqCQlwb3B1cF9jbWRfY29weV90b19jbGlwYm9hcmQgKHdpbmRvdywgYWRkcmVzcyk7
CisJICoJfQorCSAqLworCWlmIChjb250ZXh0ICYgRVBIWV9FTUJFRF9DT05URVhUX0xJTkspCiAJ
ewotCQl2YWx1ZSA9IGVwaHlfZW1iZWRfZXZlbnRfZ2V0X3Byb3BlcnR5IChldmVudCwgImxpbmsi
KTsKLQkJYWRkcmVzcyA9IGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpOworCQlnX29iamVjdF9n
ZXQgKHRhcmdldF9pbmZvLCAibGluay11cmkiLCAmYWRkcmVzcywgTlVMTCk7CiAJCXBvcHVwX2Nt
ZF9jb3B5X3RvX2NsaXBib2FyZCAod2luZG93LCBhZGRyZXNzKTsKIAl9CiB9CkBAIC0xOTgsMjAg
KzE4NywxOCBAQCBzYXZlX3Byb3BlcnR5X3VybCAoR3RrQWN0aW9uICphY3Rpb24sCiAJCSAgIGdi
b29sZWFuIGFza19kZXN0LAogCQkgICBjb25zdCBjaGFyICpwcm9wZXJ0eSkKIHsKLQlFcGh5RW1i
ZWRFdmVudCAqZXZlbnQ7CisJV2ViS2l0V2ViVGFyZ2V0SW5mbyAqdGFyZ2V0X2luZm87CiAJY29u
c3QgY2hhciAqbG9jYXRpb247Ci0JY29uc3QgR1ZhbHVlICp2YWx1ZTsKIAlFcGh5RW1iZWRQZXJz
aXN0ICpwZXJzaXN0OwogCUVwaHlFbWJlZCAqZW1iZWQ7CiAKLQlldmVudCA9IGVwaHlfd2luZG93
X2dldF9jb250ZXh0X2V2ZW50ICh3aW5kb3cpOwotCWdfcmV0dXJuX2lmX2ZhaWwgKGV2ZW50ICE9
IE5VTEwpOworCXRhcmdldF9pbmZvID0gZXBoeV93aW5kb3dfZ2V0X2NvbnRleHRfZXZlbnQgKHdp
bmRvdyk7CisJZ19yZXR1cm5faWZfZmFpbCAodGFyZ2V0X2luZm8gIT0gTlVMTCk7CiAKIAllbWJl
ZCA9IGVwaHlfZW1iZWRfY29udGFpbmVyX2dldF9hY3RpdmVfY2hpbGQgKEVQSFlfRU1CRURfQ09O
VEFJTkVSICh3aW5kb3cpKTsKIAlnX3JldHVybl9pZl9mYWlsIChlbWJlZCAhPSBOVUxMKTsKIAot
CXZhbHVlID0gZXBoeV9lbWJlZF9ldmVudF9nZXRfcHJvcGVydHkgKGV2ZW50LCBwcm9wZXJ0eSk7
Ci0JbG9jYXRpb24gPSBnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKTsKKwlnX29iamVjdF9nZXQg
KHRhcmdldF9pbmZvLCAibGluay11cmkiLCAmbG9jYXRpb24sIE5VTEwpOwogCiAJcGVyc2lzdCA9
IEVQSFlfRU1CRURfUEVSU0lTVAogCQkoZ19vYmplY3RfbmV3IChFUEhZX1RZUEVfRU1CRURfUEVS
U0lTVCwgTlVMTCkpOwpAQCAtMjM3LDE4ICsyMjQsMTYgQEAgdm9pZAogcG9wdXBfY21kX29wZW5f
bGluayAoR3RrQWN0aW9uICphY3Rpb24sCiAJCSAgICAgRXBoeVdpbmRvdyAqd2luZG93KQogewot
CUVwaHlFbWJlZEV2ZW50ICpldmVudDsKKwlXZWJLaXRXZWJUYXJnZXRJbmZvICp0YXJnZXRfaW5m
bzsKIAljb25zdCBjaGFyICpsb2NhdGlvbjsKLQljb25zdCBHVmFsdWUgKnZhbHVlOwogCUVwaHlF
bWJlZCAqZW1iZWQ7CiAKIAllbWJlZCA9IGVwaHlfZW1iZWRfY29udGFpbmVyX2dldF9hY3RpdmVf
Y2hpbGQgCiAJCShFUEhZX0VNQkVEX0NPTlRBSU5FUiAod2luZG93KSk7CiAJZ19yZXR1cm5faWZf
ZmFpbCAoZW1iZWQgIT0gTlVMTCk7CiAKLQlldmVudCA9IGVwaHlfd2luZG93X2dldF9jb250ZXh0
X2V2ZW50ICh3aW5kb3cpOwotCXZhbHVlID0gZXBoeV9lbWJlZF9ldmVudF9nZXRfcHJvcGVydHkg
KGV2ZW50LCAibGluayIpOwotCWxvY2F0aW9uID0gZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSk7
CisJdGFyZ2V0X2luZm8gPSBlcGh5X3dpbmRvd19nZXRfY29udGV4dF9ldmVudCAod2luZG93KTsK
KwlnX29iamVjdF9nZXQgKHRhcmdldF9pbmZvLCAibGluay11cmkiLCAmbG9jYXRpb24sIE5VTEwp
OwogCWVwaHlfd2ViX3ZpZXdfbG9hZF91cmwgKEVQSFlfV0VCX1ZJRVcgKEVQSFlfR0VUX1dFQktJ
VF9XRUJfVklFV19GUk9NX0VNQkVEIChlbWJlZCkpLCBsb2NhdGlvbik7CiB9CiAKQEAgLTMwOCwy
MSArMjkzLDE5IEBAIHZvaWQKIHBvcHVwX2NtZF9zZXRfaW1hZ2VfYXNfYmFja2dyb3VuZCAoR3Rr
QWN0aW9uICphY3Rpb24sCiAJCQkJICAgRXBoeVdpbmRvdyAqd2luZG93KQogewotCUVwaHlFbWJl
ZEV2ZW50ICpldmVudDsKKwlXZWJLaXRXZWJUYXJnZXRJbmZvICp0YXJnZXRfaW5mbzsKIAljb25z
dCBjaGFyICpsb2NhdGlvbjsKIAljaGFyICpkZXN0LCAqYmFzZSwgKmJhc2VfY29udmVydGVkOwot
CWNvbnN0IEdWYWx1ZSAqdmFsdWU7CiAJRXBoeUVtYmVkUGVyc2lzdCAqcGVyc2lzdDsKIAlFcGh5
RW1iZWQgKmVtYmVkOwogCi0JZXZlbnQgPSBlcGh5X3dpbmRvd19nZXRfY29udGV4dF9ldmVudCAo
d2luZG93KTsKLQlnX3JldHVybl9pZl9mYWlsIChldmVudCAhPSBOVUxMKTsKKwl0YXJnZXRfaW5m
byA9IGVwaHlfd2luZG93X2dldF9jb250ZXh0X2V2ZW50ICh3aW5kb3cpOworCWdfcmV0dXJuX2lm
X2ZhaWwgKHRhcmdldF9pbmZvICE9IE5VTEwpOwogCiAJZW1iZWQgPSBlcGh5X2VtYmVkX2NvbnRh
aW5lcl9nZXRfYWN0aXZlX2NoaWxkIChFUEhZX0VNQkVEX0NPTlRBSU5FUiAod2luZG93KSk7CiAJ
Z19yZXR1cm5faWZfZmFpbCAoZW1iZWQgIT0gTlVMTCk7CiAKLQl2YWx1ZSA9IGVwaHlfZW1iZWRf
ZXZlbnRfZ2V0X3Byb3BlcnR5IChldmVudCwgImltYWdlIik7Ci0JbG9jYXRpb24gPSBnX3ZhbHVl
X2dldF9zdHJpbmcgKHZhbHVlKTsKKwlnX29iamVjdF9nZXQgKHRhcmdldF9pbmZvLCAiaW1hZ2Ut
dXJpIiwgJmxvY2F0aW9uLCBOVUxMKTsKIAogCXBlcnNpc3QgPSBFUEhZX0VNQkVEX1BFUlNJU1QK
IAkJKGdfb2JqZWN0X25ldyAoRVBIWV9UWVBFX0VNQkVEX1BFUlNJU1QsIE5VTEwpKTsKQEAgLTM1
MSwxMyArMzM0LDExIEBAIHZvaWQKIHBvcHVwX2NtZF9jb3B5X2ltYWdlX2xvY2F0aW9uIChHdGtB
Y3Rpb24gKmFjdGlvbiwKIAkJCSAgICAgICBFcGh5V2luZG93ICp3aW5kb3cpCiB7Ci0JRXBoeUVt
YmVkRXZlbnQgKmV2ZW50OworCVdlYktpdFdlYlRhcmdldEluZm8gKnRhcmdldF9pbmZvOwogCWNv
bnN0IGNoYXIgKmxvY2F0aW9uOwotCWNvbnN0IEdWYWx1ZSAqdmFsdWU7CiAKLQlldmVudCA9IGVw
aHlfd2luZG93X2dldF9jb250ZXh0X2V2ZW50ICh3aW5kb3cpOwotCXZhbHVlID0gZXBoeV9lbWJl
ZF9ldmVudF9nZXRfcHJvcGVydHkgKGV2ZW50LCAiaW1hZ2UiKTsKLQlsb2NhdGlvbiA9IGdfdmFs
dWVfZ2V0X3N0cmluZyAodmFsdWUpOworCXRhcmdldF9pbmZvID0gZXBoeV93aW5kb3dfZ2V0X2Nv
bnRleHRfZXZlbnQgKHdpbmRvdyk7CisJZ19vYmplY3RfZ2V0ICh0YXJnZXRfaW5mbywgImltYWdl
LXVyaSIsICZsb2NhdGlvbiwgTlVMTCk7CiAJcG9wdXBfY21kX2NvcHlfdG9fY2xpcGJvYXJkICh3
aW5kb3csIGxvY2F0aW9uKTsKIH0KIApAQCAtNDY3LDIxICs0NDgsMTkgQEAgdm9pZAogcG9wdXBf
Y21kX29wZW5faW1hZ2UgKEd0a0FjdGlvbiAqYWN0aW9uLAogCQkgICAgICBFcGh5V2luZG93ICp3
aW5kb3cpCiB7Ci0JRXBoeUVtYmVkRXZlbnQgKmV2ZW50OworCVdlYktpdFdlYlRhcmdldEluZm8g
KnRhcmdldF9pbmZvOwogCWNvbnN0IGNoYXIgKmFkZHJlc3M7CiAJY2hhciAqc2NoZW1lOwotCWNv
bnN0IEdWYWx1ZSAqdmFsdWU7CiAJRXBoeUVtYmVkICplbWJlZDsKIAotCWV2ZW50ID0gZXBoeV93
aW5kb3dfZ2V0X2NvbnRleHRfZXZlbnQgKHdpbmRvdyk7Ci0JZ19yZXR1cm5faWZfZmFpbCAoZXZl
bnQgIT0gTlVMTCk7CisJdGFyZ2V0X2luZm8gPSBlcGh5X3dpbmRvd19nZXRfY29udGV4dF9ldmVu
dCAod2luZG93KTsKKwlnX3JldHVybl9pZl9mYWlsICh0YXJnZXRfaW5mbyAhPSBOVUxMKTsKIAog
CWVtYmVkID0gZXBoeV9lbWJlZF9jb250YWluZXJfZ2V0X2FjdGl2ZV9jaGlsZCAKIAkJKEVQSFlf
RU1CRURfQ09OVEFJTkVSICh3aW5kb3cpKTsKIAlnX3JldHVybl9pZl9mYWlsIChlbWJlZCAhPSBO
VUxMKTsKIAotCXZhbHVlID0gZXBoeV9lbWJlZF9ldmVudF9nZXRfcHJvcGVydHkgKGV2ZW50LCAi
aW1hZ2UiKTsKLQlhZGRyZXNzID0gZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSk7CisJZ19vYmpl
Y3RfZ2V0ICh0YXJnZXRfaW5mbywgImltYWdlLXVyaSIsICZhZGRyZXNzLCBOVUxMKTsKIAogCXNj
aGVtZSA9IGdfdXJpX3BhcnNlX3NjaGVtZSAoYWRkcmVzcyk7CiAJaWYgKHNjaGVtZSA9PSBOVUxM
KSByZXR1cm47Ci0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39687</attachid>
            <date>2009-09-17 02:54:34 -0700</date>
            <delta_ts>2009-09-18 06:57:10 -0700</delta_ts>
            <desc>targetinfo.patch</desc>
            <filename>targetinfo.patch</filename>
            <type>text/plain</type>
            <size>17612</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAyODA3Y2YxMzFkMzE2OGQyNjlkMjA5M2Q0OTM3MmE3NmZiZmZhODEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
aHUsIDE3IFNlcCAyMDA5IDEyOjM4OjAwICswMzAwClN1YmplY3Q6IFtQQVRDSF0gMjAwOS0wOS0x
NCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBjb250ZXh0IG1lbnUgb3ZlcnJpZGluZyBBUEkg
aXMgdmVyeSBsaW1pdGVkCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3NTQ2CgogICAgICAgIEFkZCBXZWJLaXRUYXJnZXRJbmZvIHRvIHRoZSBidWlsZC4K
CiAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKCldlYktpdC9ndGs6CgoyMDA5LTA5LTE3ICBYYW4g
TG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgogICAgICAgIFtHVEtdIGNvbnRleHQgbWVudSBvdmVycmlkaW5nIEFQSSBpcyB2ZXJ5
IGxpbWl0ZWQKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mjc1NDYKCiAgICAgICAgQWRkIFdlYktpdFRhcmdldEluZm8sIGFuIG9iamVjdCB0byBob2xkIGNv
bnRleHQgaW5mb3JtYXRpb24gZnJvbSBhCiAgICAgICAgcG9pbnQgaW4gdGhlIHBhZ2UuCgogICAg
ICAgICogd2Via2l0L3dlYmtpdC5oOgogICAgICAgICogd2Via2l0L3dlYmtpdGRlZmluZXMuaDoK
ICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CiAgICAgICAgKiB3ZWJraXQvd2Via2l0
dGFyZ2V0aW5mby5jcHA6IEFkZGVkLgogICAgICAgICh3ZWJraXRfdGFyZ2V0X2luZm9fZmluYWxp
emUpOgogICAgICAgICh3ZWJraXRfdGFyZ2V0X2luZm9fZ2V0X3Byb3BlcnR5KToKICAgICAgICAo
d2Via2l0X3RhcmdldF9pbmZvX3NldF9wcm9wZXJ0eSk6CiAgICAgICAgKHdlYmtpdF90YXJnZXRf
aW5mb19jbGFzc19pbml0KToKICAgICAgICAod2Via2l0X3RhcmdldF9pbmZvX2luaXQpOgogICAg
ICAgICh3ZWJraXRfdGFyZ2V0X2luZm9fbmV3X2Zyb21fY29yZV9oaXRfdGVzdF9yZXN1bHQpOgog
ICAgICAgICogd2Via2l0L3dlYmtpdHRhcmdldGluZm8uaDogQWRkZWQuCi0tLQogQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICsrCiBHTlVtYWtlZmlsZS5hbSAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgfCAgIDIyICsrKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmggICAg
ICAgICAgICAgfCAgICAxICsKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaCAgICAg
IHwgICAgMyArCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggICAgICB8ICAgIDMg
KwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dGFyZ2V0aW5mby5jcHAgfCAgMjI5ICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR0YXJnZXRp
bmZvLmggICB8ICAgNzIgKysrKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCAzNDMgaW5zZXJ0aW9u
cygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR0YXJnZXRpbmZvLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHRhcmdldGluZm8uaAoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxv
ZwppbmRleCA0YTA4MzQ3Li44YjY3YzRhIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDktMTQgIFhhbiBMb3BleiAgPHhsb3BlekBp
Z2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtHVEtdIGNvbnRleHQgbWVudSBvdmVycmlkaW5nIEFQSSBpcyB2ZXJ5IGxpbWl0ZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTQ2CisKKyAg
ICAgICAgQWRkIFdlYktpdFRhcmdldEluZm8gdG8gdGhlIGJ1aWxkLgorCisgICAgICAgICogR05V
bWFrZWZpbGUuYW06CisKIDIwMDktMDktMTAgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21i
b3NAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQuCmRpZmYg
LS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IGM1M2ZiMWEuLmNl
OTZmMDcgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBA
IC0zMjEsNiArMzIxLDcgQEAgd2Via2l0Z3RrX2hfYXBpICs9IFwKIAkkKHNyY2RpcikvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuaCBcCiAJJChzcmNkaXIpL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXNwb25zZS5oIFwKIAkkKHNyY2RpcikvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0c291cGF1dGhkaWFsb2cuaCBcCisJJChzcmNkaXIpL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHRhcmdldGluZm8uaCBcCiAJJChzcmNkaXIpL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oIFwKIAkkKHNyY2RpcikvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2ViZGF0YXNvdXJjZS5oIFwKIAkkKHNyY2RpcikvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2ViZnJhbWUuaCBcCkBAIC0zNjcsNiArMzY4LDcgQEAgd2Via2l0Z3RrX3NvdXJjZXMg
Kz0gXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwIFwKIAlXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRwcml2YXRlLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHNvdXBh
dXRoZGlhbG9nLmMgXAorCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHRhcmdldGluZm8uY3BwIFwK
IAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR2ZXJzaW9uLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2ViZGF0YXNvdXJjZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
Yi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBlYTNjMGMyLi5hNzVhMWJlIDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDA5LTA5LTE3ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBjb250
ZXh0IG1lbnUgb3ZlcnJpZGluZyBBUEkgaXMgdmVyeSBsaW1pdGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU0NgorCisgICAgICAgIEFkZCBXZWJL
aXRUYXJnZXRJbmZvLCBhbiBvYmplY3QgdG8gaG9sZCBjb250ZXh0IGluZm9ybWF0aW9uIGZyb20g
YQorICAgICAgICBwb2ludCBpbiB0aGUgcGFnZS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXQu
aDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0ZGVmaW5lcy5oOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXRwcml2YXRlLmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHRhcmdldGluZm8uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKHdlYmtpdF90YXJnZXRfaW5mb19maW5hbGl6ZSk6CisgICAgICAgICh3
ZWJraXRfdGFyZ2V0X2luZm9fZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF90YXJnZXRf
aW5mb19zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3RhcmdldF9pbmZvX2NsYXNzX2lu
aXQpOgorICAgICAgICAod2Via2l0X3RhcmdldF9pbmZvX2luaXQpOgorICAgICAgICAod2Via2l0
X3RhcmdldF9pbmZvX25ld19mcm9tX2NvcmVfaGl0X3Rlc3RfcmVzdWx0KToKKyAgICAgICAgKiB3
ZWJraXQvd2Via2l0dGFyZ2V0aW5mby5oOiBBZGRlZC4KKwogMjAwOS0wOS0xNCAgR3VzdGF2byBO
b3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBYYW4gTG9wZXogYW5kIEphbiBBbG9uem8uCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXQuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCmluZGV4
IDI5NDc2MmQuLjYzZWI2ZDUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5o
CisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSA8d2Via2l0L3dlYmtpdHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vi
YmFja2ZvcndhcmRsaXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVt
Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHRhcmdldGluZm8uaD4KICNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vi
bmF2aWdhdGlvbmFjdGlvbi5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5o
PgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIGIvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCmluZGV4IGFhZGY4NmUuLmIyZjVmNjkgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaAorKysgYi9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKQEAgLTg2LDYgKzg2LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFdlYkRhdGFiYXNlQ2xhc3MgV2ViS2l0V2ViRGF0YWJhc2VDbGFzczsKIHR5cGVkZWYg
c3RydWN0IF9XZWJLaXRTZWN1cml0eU9yaWdpbiBXZWJLaXRTZWN1cml0eU9yaWdpbjsKIHR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRTZWN1cml0eU9yaWdpbkNsYXNzIFdlYktpdFNlY3VyaXR5T3JpZ2lu
Q2xhc3M7CiAKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRUYXJnZXRJbmZvIFdlYktpdFRhcmdldElu
Zm87Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VGFyZ2V0SW5mb0NsYXNzIFdlYktpdFRhcmdldElu
Zm9DbGFzczsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRl
LmgKaW5kZXggZTc5ZGY4Zi4uYTM2YjI1MSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApA
QCAtMjYyLDYgKzI2Miw5IEBAIGV4dGVybiAiQyIgewogICAgIFdlYktpdE5ldHdvcmtSZXNwb25z
ZSoKICAgICB3ZWJraXRfbmV0d29ya19yZXNwb25zZV9uZXdfd2l0aF9jb3JlX3Jlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpOwogCisgICAg
V2ViS2l0VGFyZ2V0SW5mbyoKKyAgICB3ZWJraXRfdGFyZ2V0X2luZm9fbmV3X2Zyb21fY29yZV9o
aXRfdGVzdF9yZXN1bHQoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgcmVzdWx0KTsKKwog
ICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gd2Via2l0bmV0d29ya3JlcXVlc3QuaCBvbmNlIHRo
ZSBBUEkgaXMgYWdyZWVkIHVwb24uCiAgICAgV0VCS0lUX0FQSSBTb3VwTWVzc2FnZSoKICAgICB3
ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF9tZXNzYWdlKFdlYktpdE5ldHdvcmtSZXF1ZXN0KiBy
ZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHRhcmdldGluZm8u
Y3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dGFyZ2V0aW5mby5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I3MjY3NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHRhcmdldGluZm8uY3BwCkBAIC0wLDAgKzEsMjI5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIndlYmtpdHRhcmdl
dGluZm8uaCIKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJHT3duUHRyLmgiCisj
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIndlYmtpdGVudW10eXBlcy5oIgor
I2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKKworI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+
CisKKy8qKgorICogU0VDVElPTjp3ZWJraXR3ZWJ0YXJnZXRpbmZvCisgKiBAc2hvcnRfZGVzY3Jp
cHRpb246IFRoZSB0YXJnZXQgb2YgYSBtb3VzZSBvciBrZXlib2FyZCBldmVudAorICoKKyAqICNX
ZWJLaXRUYXJnZXRJbmZvIAorICovCisKK0dfREVGSU5FX1RZUEUoV2ViS2l0VGFyZ2V0SW5mbywg
d2Via2l0X3RhcmdldF9pbmZvLCBHX1RZUEVfT0JKRUNUKQorCitzdHJ1Y3QgX1dlYktpdFRhcmdl
dEluZm9Qcml2YXRlIHsKKyAgICBndWludCBjb250ZXh0OworICAgIGNoYXIqIGxpbmtVUkk7Cisg
ICAgY2hhciogaW1hZ2VVUkk7CisgICAgY2hhciogbWVkaWFVUkk7Cit9OworCisjZGVmaW5lIFdF
QktJVF9UQVJHRVRfSU5GT19HRVRfUFJJVkFURShvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BS
SVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1RBUkdFVF9JTkZPLCBXZWJLaXRUYXJnZXRJbmZvUHJp
dmF0ZSkpCisKK2VudW0geworICAgIFBST1BfMCwKKworICAgIFBST1BfQ09OVEVYVCwKKyAgICBQ
Uk9QX0xJTktfVVJJLAorICAgIFBST1BfSU1BR0VfVVJJLAorICAgIFBST1BfTUVESUFfVVJJCit9
OworCitzdGF0aWMgdm9pZCB3ZWJraXRfdGFyZ2V0X2luZm9fZmluYWxpemUoR09iamVjdCogb2Jq
ZWN0KQoreworICAgIFdlYktpdFRhcmdldEluZm8qIHdlYl90YXJnZXRfaW5mbyA9IFdFQktJVF9U
QVJHRVRfSU5GTyhvYmplY3QpOworICAgIFdlYktpdFRhcmdldEluZm9Qcml2YXRlKiBwcml2ID0g
d2ViX3RhcmdldF9pbmZvLT5wcml2OworCisgICAgZ19mcmVlKHByaXYtPmxpbmtVUkkpOworICAg
IGdfZnJlZShwcml2LT5pbWFnZVVSSSk7CisgICAgZ19mcmVlKHByaXYtPm1lZGlhVVJJKTsKKwor
ICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF90YXJnZXRfaW5mb19wYXJlbnRfY2xhc3MpLT5maW5h
bGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfdGFyZ2V0X2luZm9fZ2V0X3By
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJRCwgR1ZhbHVlKiB2YWx1ZSwg
R1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0VGFyZ2V0SW5mbyogd2ViX3RhcmdldF9p
bmZvID0gV0VCS0lUX1RBUkdFVF9JTkZPKG9iamVjdCk7CisgICAgV2ViS2l0VGFyZ2V0SW5mb1By
aXZhdGUqIHByaXYgPSB3ZWJfdGFyZ2V0X2luZm8tPnByaXY7CisKKyAgICBzd2l0Y2gocHJvcGVy
dHlJRCkgeworICAgIGNhc2UgUFJPUF9DT05URVhUOgorICAgICAgICBnX3ZhbHVlX3NldF9mbGFn
cyh2YWx1ZSwgcHJpdi0+Y29udGV4dCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9M
SU5LX1VSSToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBwcml2LT5saW5rVVJJ
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0lNQUdFX1VSSToKKyAgICAgICAgZ192
YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBwcml2LT5pbWFnZVVSSSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9NRURJQV9VUkk6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1
ZSwgcHJpdi0+bWVkaWFVUkkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlELCBw
c3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfdGFyZ2V0X2luZm9fc2V0X3By
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJRCwgY29uc3QgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0VGFyZ2V0SW5mbyogd2ViX3Rh
cmdldF9pbmZvID0gV0VCS0lUX1RBUkdFVF9JTkZPKG9iamVjdCk7CisgICAgV2ViS2l0VGFyZ2V0
SW5mb1ByaXZhdGUqIHByaXYgPSB3ZWJfdGFyZ2V0X2luZm8tPnByaXY7CisKKyAgICBzd2l0Y2go
cHJvcGVydHlJRCkgeworICAgIGNhc2UgUFJPUF9DT05URVhUOgorICAgICAgICBwcml2LT5jb250
ZXh0ID0gZ192YWx1ZV9nZXRfZmxhZ3ModmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfTElOS19VUkk6CisgICAgICAgIGdfZnJlZSAocHJpdi0+bGlua1VSSSk7CisgICAgICAg
IHByaXYtPmxpbmtVUkkgPSBnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfSU1BR0VfVVJJOgorICAgICAgICBnX2ZyZWUgKHByaXYtPmltYWdl
VVJJKTsKKyAgICAgICAgcHJpdi0+aW1hZ2VVUkkgPSBnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTUVESUFfVVJJOgorICAgICAgICBnX2Zy
ZWUgKHByaXYtPm1lZGlhVVJJKTsKKyAgICAgICAgcHJpdi0+bWVkaWFVUkkgPSBnX3ZhbHVlX2R1
cF9zdHJpbmcodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBH
X09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlELCBwc3Bl
Yyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfdGFyZ2V0X2luZm9fY2xhc3NfaW5p
dChXZWJLaXRUYXJnZXRJbmZvQ2xhc3MqIHdlYlRhcmdldEluZm9DbGFzcykKK3sKKyAgICBHT2Jq
ZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Mod2ViVGFyZ2V0SW5mb0NsYXNz
KTsKKworICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF90YXJnZXRfaW5mb19maW5h
bGl6ZTsKKyAgICBvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X3RhcmdldF9pbmZv
X2dldF9wcm9wZXJ0eTsKKyAgICBvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X3Rh
cmdldF9pbmZvX3NldF9wcm9wZXJ0eTsKKworICAgIHdlYmtpdF9pbml0KCk7CisKKyAgICAvKioK
KyAgICAgKiBXZWJLaXRUYXJnZXRJbmZvOmNvbnRleHQ6CisgICAgICoKKyAgICAgKiBGbGFncyBp
bmRpY2F0aW5nIHRoZSBraW5kIG9mIHRhcmdldCB0aGF0IHJlY2VpdmVkIHRoZSBldmVudC4KKyAg
ICAgKgorICAgICAqIFNpbmNlOiAxLjEuMTUKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9QX0NPTlRFWFQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfZmxhZ3MoImNvbnRleHQiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkNv
bnRleHQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfKCJGbGFncyBpbmRpY2F0aW5nIHRoZSBraW5kIG9mIHRhcmdldCB0aGF0IHJlY2Vp
dmVkIHRoZSBldmVudC4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9UQVJHRVRfSU5GT19DT05URVhULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9U
QVJHRVRfSU5GT19DT05URVhUX0RPQ1VNRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPigoV0VC
S0lUX1BBUkFNX1JFQURXUklURXxHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpKTsKKworICAgIC8q
KgorICAgICAqIFdlYktpdFRhcmdldEluZm86bGluay11cmk6CisgICAgICoKKyAgICAgKiBUaGUg
VVJJIHRvIHdoaWNoIHRoZSB0YXJnZXQgdGhhdCByZWNlaXZlZCB0aGUgZXZlbnQgcG9pbnRzLCBp
ZiBhbnkuCisgICAgICoKKyAgICAgKiBTaW5jZTogMS4xLjE1CisgICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9MSU5LX1VSSSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoImxp
bmstdXJpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXygiTGluayBVUkkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhlIFVSSSB0byB3aGljaCB0aGUgdGFyZ2V0IHRo
YXQgcmVjZWl2ZWQgdGhlIGV2ZW50IHBvaW50cywgaWYgYW55LiIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURXxHX1BBUkFNX0NPTlNUUlVDVF9P
TkxZKSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0VGFyZ2V0SW5mbzppbWFnZS11cmk6Cisg
ICAgICoKKyAgICAgKiBUaGUgVVJJIG9mIHRoZSBpbWFnZSB0aGF0IGlzIHBhcnQgb2YgdGhlIHRh
cmdldCB0aGF0IHJlY2VpdmVkIHRoZSBldmVudCwgaWYgYW55LgorICAgICAqCisgICAgICogU2lu
Y2U6IDEuMS4xNQorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
b2JqZWN0Q2xhc3MsIFBST1BfSU1BR0VfVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygiaW1hZ2UtdXJpIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiSW1hZ2UgVVJJIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIlRoZSBVUkkgb2YgdGhlIGltYWdlIHRoYXQgaXMgcGFydCBvZiB0aGUgdGFyZ2V0IHRoYXQg
cmVjZWl2ZWQgdGhlIGV2ZW50LCBpZiBhbnkuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZs
YWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFfEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisK
KyAgICAvKioKKyAgICAgKiBXZWJLaXRUYXJnZXRJbmZvOm1lZGlhLXVyaToKKyAgICAgKgorICAg
ICAqIFRoZSBVUkkgb2YgdGhlIG1lZGlhIHRoYXQgaXMgcGFydCBvZiB0aGUgdGFyZ2V0IHRoYXQg
cmVjZWl2ZWQgdGhlIGV2ZW50LCBpZiBhbnkuCisgICAgICoKKyAgICAgKiBTaW5jZTogMS4xLjE1
CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFz
cywgUFJPUF9NRURJQV9VUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfc3RyaW5nKCJtZWRpYS11cmkiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJNZWRpYSBVUkkiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhlIFVS
SSBvZiB0aGUgbWVkaWEgdGhhdCBpcyBwYXJ0IG9mIHRoZSB0YXJnZXQgdGhhdCByZWNlaXZlZCB0
aGUgZXZlbnQsIGlmIGFueS4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJ
VF9QQVJBTV9SRUFEV1JJVEV8R19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIGdfdHlw
ZV9jbGFzc19hZGRfcHJpdmF0ZSh3ZWJUYXJnZXRJbmZvQ2xhc3MsIHNpemVvZihXZWJLaXRUYXJn
ZXRJbmZvUHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfdGFyZ2V0X2luZm9faW5p
dChXZWJLaXRUYXJnZXRJbmZvKiB3ZWJfdGFyZ2V0X2luZm8pCit7CisgICAgd2ViX3RhcmdldF9p
bmZvLT5wcml2ID0gV0VCS0lUX1RBUkdFVF9JTkZPX0dFVF9QUklWQVRFKHdlYl90YXJnZXRfaW5m
byk7Cit9CisKK1dlYktpdFRhcmdldEluZm8qIHdlYmtpdF90YXJnZXRfaW5mb19uZXdfZnJvbV9j
b3JlX2hpdF90ZXN0X3Jlc3VsdChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiByZXN1bHQp
Cit7CisgICAgZ3VpbnQgdGFyZ2V0SW5mb0NvbnRleHQgPSBXRUJLSVRfVEFSR0VUX0lORk9fQ09O
VEVYVF9ET0NVTUVOVDsKKyAgICBHT3duUHRyPGNoYXI+IGxpbmtVUkkoMCk7CisgICAgR093blB0
cjxjaGFyPiBpbWFnZVVSSSgwKTsKKyAgICBHT3duUHRyPGNoYXI+IG1lZGlhVVJJKDApOworCisg
ICAgaWYgKCFyZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHRh
cmdldEluZm9Db250ZXh0IHw9IFdFQktJVF9UQVJHRVRfSU5GT19DT05URVhUX0xJTks7CisgICAg
ICAgIGxpbmtVUkkuc2V0KGdfc3RyZHVwKHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKSk7CisgICAgfQorCisgICAgaWYgKCFyZXN1bHQuYWJzb2x1dGVJbWFn
ZVVSTCgpLmlzRW1wdHkoKSkgeworICAgICAgICB0YXJnZXRJbmZvQ29udGV4dCB8PSBXRUJLSVRf
VEFSR0VUX0lORk9fQ09OVEVYVF9JTUFHRTsKKyAgICAgICAgaW1hZ2VVUkkuc2V0KGdfc3RyZHVw
KHJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAg
IH0KKworICAgIGlmICghcmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgdGFyZ2V0SW5mb0NvbnRleHQgfD0gV0VCS0lUX1RBUkdFVF9JTkZPX0NPTlRFWFRfTUVE
SUE7CisgICAgICAgIG1lZGlhVVJJLnNldChnX3N0cmR1cChyZXN1bHQuYWJzb2x1dGVNZWRpYVVS
TCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0Lmlz
U2VsZWN0ZWQoKSkKKyAgICAgICAgdGFyZ2V0SW5mb0NvbnRleHQgfD0gV0VCS0lUX1RBUkdFVF9J
TkZPX0NPTlRFWFRfU0VMRUNUSU9OOworCisgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJs
ZSgpKQorICAgICAgICB0YXJnZXRJbmZvQ29udGV4dCB8PSBXRUJLSVRfVEFSR0VUX0lORk9fQ09O
VEVYVF9FRElUQUJMRTsKKworICAgIHJldHVybiBXRUJLSVRfVEFSR0VUX0lORk8oZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1RBUkdFVF9JTkZPLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJsaW5rLXVyaSIsIGxpbmtVUkkuZ2V0KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltYWdlLXVyaSIsIGltYWdlVVJJLmdldCgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZWRpYS11cmki
LCBtZWRpYVVSSS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiY29udGV4dCIsIHRhcmdldEluZm9Db250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHRhcmdldGluZm8uaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHRhcmdl
dGluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDc2YWE0Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dGFyZ2V0aW5mby5oCkBAIC0w
LDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29sbGFib3JhIEx0ZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdFQktJVF9UQVJHRVRfSU5G
T19ICisjZGVmaW5lIFdFQktJVF9UQVJHRVRfSU5GT19ICisKKyNpbmNsdWRlIDxnbGliLW9iamVj
dC5oPgorCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKworR19CRUdJTl9ERUNM
UworCisjZGVmaW5lIFdFQktJVF9UWVBFX1RBUkdFVF9JTkZPICAgICAgICAgICAgKHdlYmtpdF90
YXJnZXRfaW5mb19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfVEFSR0VUX0lORk8ob2JqKSAg
ICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVf
VEFSR0VUX0lORk8sIFdlYktpdFRhcmdldEluZm8pKQorI2RlZmluZSBXRUJLSVRfVEFSR0VUX0lO
Rk9fQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VC
S0lUX1RZUEVfVEFSR0VUX0lORk8sIFdlYktpdFRhcmdldEluZm9DbGFzcykpCisjZGVmaW5lIFdF
QktJVF9JU19UQVJHRVRfSU5GTyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9U
WVBFKChvYmopLCBXRUJLSVRfVFlQRV9UQVJHRVRfSU5GTykpCisjZGVmaW5lIFdFQktJVF9JU19U
QVJHRVRfSU5GT19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyks
ICBXRUJLSVRfVFlQRV9UQVJHRVRfSU5GTykpCisjZGVmaW5lIFdFQktJVF9UQVJHRVRfSU5GT19H
RVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRf
VFlQRV9XRUJfVEFSR0VUX0lORk8sIFdlYktpdFRhcmdldEluZm9DbGFzcykpCisKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRUYXJnZXRJbmZvUHJpdmF0ZSBXZWJLaXRUYXJnZXRJbmZvUHJpdmF0ZTsK
Kworc3RydWN0IF9XZWJLaXRUYXJnZXRJbmZvIHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5j
ZTsKKworICAgIC8qPCBwcml2YXRlID4qLworICAgIFdlYktpdFRhcmdldEluZm9Qcml2YXRlICpw
cml2OworfTsKKworc3RydWN0IF9XZWJLaXRUYXJnZXRJbmZvQ2xhc3MgeworICAgIEdPYmplY3RD
bGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5zaW9u
ICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7CisgICAgdm9pZCAoKl93
ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAo
dm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7Cit9OworCit0eXBl
ZGVmIGVudW0KK3sKKyAgICBXRUJLSVRfVEFSR0VUX0lORk9fQ09OVEVYVF9ET0NVTUVOVCAgID0g
MSA8PCAxLAorICAgIFdFQktJVF9UQVJHRVRfSU5GT19DT05URVhUX0xJTksgICAgICAgPSAxIDw8
IDIsCisgICAgV0VCS0lUX1RBUkdFVF9JTkZPX0NPTlRFWFRfSU1BR0UgICAgICA9IDEgPDwgMywK
KyAgICBXRUJLSVRfVEFSR0VUX0lORk9fQ09OVEVYVF9NRURJQSAgICAgID0gMSA8PCA0LAorICAg
IFdFQktJVF9UQVJHRVRfSU5GT19DT05URVhUX1NFTEVDVElPTiAgPSAxIDw8IDUsCisgICAgV0VC
S0lUX1RBUkdFVF9JTkZPX0NPTlRFWFRfRURJVEFCTEUgICA9IDEgPDwgNiwKK30gV2ViS2l0VGFy
Z2V0SW5mb0NvbnRleHQ7CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF90YXJnZXRfaW5mb19n
ZXRfdHlwZSAodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgorCi0tIAoxLjYuNC4yCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39689</attachid>
            <date>2009-09-17 02:56:22 -0700</date>
            <delta_ts>2009-09-17 06:18:17 -0700</delta_ts>
            <desc>gettargetinfo.patch</desc>
            <filename>gettargetinfo.patch</filename>
            <type>text/plain</type>
            <size>12009</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAxYzQ5NjhhNDM2ZGRlYWUyNmQxYTA0ZTE4ODAwMGNjMTU5Y2MxZjgzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
aHUsIDE3IFNlcCAyMDA5IDEyOjQzOjIzICswMzAwClN1YmplY3Q6IFtQQVRDSF0gMjAwOS0wOS0x
NyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBjb250ZXh0IG1lbnUgb3ZlcnJpZGluZyBBUEkg
aXMgdmVyeSBsaW1pdGVkCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3NTQ2CgogICAgICAgIEFkZCBuZXcgdGVzdHMgdG8gdGhlIGJ1aWxkLgoKICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOgoKV2ViS2l0L2d0azoKCjIwMDktMDktMTcgIFhhbiBMb3BleiAg
PHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CiAgICAgICAgW0dUS10gY29udGV4dCBtZW51IG92ZXJyaWRpbmcgQVBJIGlzIHZlcnkgbGltaXRl
ZAogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU0NgoK
ICAgICAgICBBZGQgYSBmdW5jdGlvbiB0byBnZXQgdGhlIFdlYktpdFRhcmdldEluZm8gb2YgYSBj
b3VwbGUgb2YKICAgICAgICBjb29yZGluYXRlcyBpbiBhIFdlYktpdFdlYlZpZXcsIHBsdXMgdGVz
dHMgZm9yIGl0LgoKICAgICAgICAqIHRlc3RzL3Rlc3R0YXJnZXRpbmZvLmM6IEFkZGVkLgogICAg
ICAgICh0ZXN0X2luZm9fbmV3KToKICAgICAgICAodGVzdF9pbmZvX2Rlc3Ryb3kpOgogICAgICAg
ICh0YXJnZXRfaW5mb19maXh0dXJlX3NldHVwKToKICAgICAgICAodGFyZ2V0X2luZm9fZml4dHVy
ZV90ZWFyZG93bik6CiAgICAgICAgKGxvYWRfc3RhdHVzX2NiKToKICAgICAgICAodGVzdF93ZWJr
aXRfdGFyZ2V0X2luZm8pOgogICAgICAgIChtYWluKToKICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcDoKICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF90YXJnZXRfaW5mbyk6CiAg
ICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgotLS0KIENoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMSArKysKIEdOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgNSArCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICB8ICAg
MjIgKysrKysKIFdlYktpdC9ndGsvdGVzdHMvdGVzdHRhcmdldGluZm8uYyAgIHwgIDE1MyArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAgfCAgIDM4ICsrKysrKysrKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5oICAgfCAgICA0ICsKIDYgZmlsZXMgY2hhbmdlZCwgMjMzIGluc2VydGlvbnMoKyksIDAg
ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L2d0ay90ZXN0cy90ZXN0dGFy
Z2V0aW5mby5jCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDhiNjdj
NGEuLjM1ODYyZTggMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAwOS0wOS0xNyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gY29u
dGV4dCBtZW51IG92ZXJyaWRpbmcgQVBJIGlzIHZlcnkgbGltaXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NDYKKworICAgICAgICBBZGQgbmV3
IHRlc3RzIHRvIHRoZSBidWlsZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorCiAyMDA5
LTA5LTE0ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFr
ZWZpbGUuYW0KaW5kZXggY2U5NmYwNy4uMmEwZDg1NiAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUu
YW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTU0Miw2ICs1NDIsNyBAQCBURVNUX1BST0dTICs9
IFByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0aHR0cGJhY2tlbmQgXAogCVByb2dyYW1zL3VuaXR0ZXN0
cy90ZXN0d2luZG93IFwKIAlQcm9ncmFtcy91bml0dGVzdHMvdGVzdGRvd25sb2FkIFwKIAlQcm9n
cmFtcy91bml0dGVzdHMvdGVzdGF0ayBcCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3R0YXJnZXRp
bmZvIFwKIAlQcm9ncmFtcy91bml0dGVzdHMvdGVzdHdlYnNldHRpbmdzIFwKIAlQcm9ncmFtcy91
bml0dGVzdHMvdGVzdHdlYnJlc291cmNlIFwKIAlQcm9ncmFtcy91bml0dGVzdHMvdGVzdHdlYmRh
dGFzb3VyY2UKQEAgLTYxMCw2ICs2MTEsMTAgQEAgUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJk
YXRhc291cmNlX1NPVVJDRVMgPSBXZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJkYXRhc291cmMKIFBy
b2dyYW1zX3VuaXR0ZXN0c190ZXN0d2ViZGF0YXNvdXJjZV9DRkxBR1MgPSAkKHdlYmtpdF90ZXN0
c19jZmxhZ3MpCiBQcm9ncmFtc191bml0dGVzdHNfdGVzdHdlYmRhdGFzb3VyY2VfTERBREQgPSAk
KHdlYmtpdF90ZXN0c19sZGFkZCkKIAorUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R0YXJnZXRpbmZv
X1NPVVJDRVMgPSBXZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R0YXJnZXRpbmZvLmMKK1Byb2dyYW1zX3Vu
aXR0ZXN0c190ZXN0dGFyZ2V0aW5mb19DRkxBR1MgPSAkKHdlYmtpdF90ZXN0c19jZmxhZ3MpCitQ
cm9ncmFtc191bml0dGVzdHNfdGVzdHRhcmdldGluZm9fTERBREQgPSAkKHdlYmtpdF90ZXN0c19s
ZGFkZCkKKwogIyBBdXRvZ2VuZXJhdGVkIHNvdXJjZXMKIEJVSUxUX1NPVVJDRVMgOj0gXAogCSQo
amF2YXNjcmlwdGNvcmVfYnVpbHRfc291cmNlcykgXApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBhNzVhMWJlLi5iNGQ0ZjFjIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtNSw2ICs1LDI4IEBACiAgICAgICAgIFtHVEtdIGNvbnRleHQgbWVudSBvdmVycmlkaW5n
IEFQSSBpcyB2ZXJ5IGxpbWl0ZWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3NTQ2CiAKKyAgICAgICAgQWRkIGEgZnVuY3Rpb24gdG8gZ2V0IHRoZSBX
ZWJLaXRUYXJnZXRJbmZvIG9mIGEgY291cGxlIG9mCisgICAgICAgIGNvb3JkaW5hdGVzIGluIGEg
V2ViS2l0V2ViVmlldywgcGx1cyB0ZXN0cyBmb3IgaXQuCisKKyAgICAgICAgKiB0ZXN0cy90ZXN0
dGFyZ2V0aW5mby5jOiBBZGRlZC4KKyAgICAgICAgKHRlc3RfaW5mb19uZXcpOgorICAgICAgICAo
dGVzdF9pbmZvX2Rlc3Ryb3kpOgorICAgICAgICAodGFyZ2V0X2luZm9fZml4dHVyZV9zZXR1cCk6
CisgICAgICAgICh0YXJnZXRfaW5mb19maXh0dXJlX3RlYXJkb3duKToKKyAgICAgICAgKGxvYWRf
c3RhdHVzX2NiKToKKyAgICAgICAgKHRlc3Rfd2Via2l0X3RhcmdldF9pbmZvKToKKyAgICAgICAg
KG1haW4pOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19nZXRfdGFyZ2V0X2luZm8pOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ2aWV3Lmg6CisKKzIwMDktMDktMTcgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIGNv
bnRleHQgbWVudSBvdmVycmlkaW5nIEFQSSBpcyB2ZXJ5IGxpbWl0ZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTQ2CisKICAgICAgICAgQWRkIFdl
YktpdFRhcmdldEluZm8sIGFuIG9iamVjdCB0byBob2xkIGNvbnRleHQgaW5mb3JtYXRpb24gZnJv
bSBhCiAgICAgICAgIHBvaW50IGluIHRoZSBwYWdlLgogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L3Rlc3RzL3Rlc3R0YXJnZXRpbmZvLmMgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R0YXJnZXRpbmZv
LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTllZThlMQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdHRhcmdldGluZm8uYwpAQCAtMCwwICsxLDE1
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGVy
cm5vLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KKyNp
bmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+CisKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwg
MCkKKwordHlwZWRlZiBzdHJ1Y3QgeworICBjaGFyICpkYXRhOworICBndWludCBmbGFnOworfSBU
ZXN0SW5mbzsKKworc3RhdGljIEdNYWluTG9vcCogbG9vcDsKKwordHlwZWRlZiBzdHJ1Y3Qgewor
ICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CisgICAgVGVzdEluZm8qIGluZm87Cit9IFRhcmdl
dEluZm9GaXh0dXJlOzsKKworVGVzdEluZm8qCit0ZXN0X2luZm9fbmV3KGNvbnN0IGNoYXIqIGRh
dGEsIGd1aW50IGZsYWcpCit7CisgICAgVGVzdEluZm8qIGluZm87CisKKyAgICBpbmZvID0gZ19z
bGljZV9uZXcoVGVzdEluZm8pOworICAgIGluZm8tPmRhdGEgPSBnX3N0cmR1cChkYXRhKTsKKyAg
ICBpbmZvLT5mbGFnID0gZmxhZzsKKworICAgIHJldHVybiBpbmZvOworfQorCit2b2lkCit0ZXN0
X2luZm9fZGVzdHJveShUZXN0SW5mbyogaW5mbykKK3sKKyAgICBnX2ZyZWUoaW5mby0+ZGF0YSk7
CisgICAgZ19zbGljZV9mcmVlKFRlc3RJbmZvLCBpbmZvKTsKK30KKworc3RhdGljIHZvaWQgdGFy
Z2V0X2luZm9fZml4dHVyZV9zZXR1cChUYXJnZXRJbmZvRml4dHVyZSogZml4dHVyZSwgZ2NvbnN0
cG9pbnRlciBkYXRhKQoreworICAgIGZpeHR1cmUtPndlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVco
d2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBnX29iamVjdF9yZWZfc2luayhmaXh0dXJlLT53
ZWJWaWV3KTsKKyAgICBsb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIFRSVUUpOworICAgIGZp
eHR1cmUtPmluZm8gPSAoVGVzdEluZm8qKWRhdGE7Cit9CisKK3N0YXRpYyB2b2lkIHRhcmdldF9p
bmZvX2ZpeHR1cmVfdGVhcmRvd24oVGFyZ2V0SW5mb0ZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBv
aW50ZXIgZGF0YSkKK3sKKyAgICBnX29iamVjdF91bnJlZihmaXh0dXJlLT53ZWJWaWV3KTsKKyAg
ICBnX21haW5fbG9vcF91bnJlZihsb29wKTsKKyAgICB0ZXN0X2luZm9fZGVzdHJveShmaXh0dXJl
LT5pbmZvKTsKK30KKworc3RhdGljIHZvaWQKK2xvYWRfc3RhdHVzX2NiKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsCisgICAgICAgICAgICAgICBHUGFyYW1TcGVjKiBzcGVjLAorICAgICAgICAgICAg
ICAgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBXZWJLaXRMb2FkU3RhdHVzIHN0YXR1cyA9IHdlYmtp
dF93ZWJfdmlld19nZXRfbG9hZF9zdGF0dXMod2ViVmlldyk7CisgICAgVGVzdEluZm8qIGluZm8g
PSAoVGVzdEluZm8qKWRhdGE7CisKKyAgICBpZiAoc3RhdHVzID09IFdFQktJVF9MT0FEX0ZJTklT
SEVEKSB7CisgICAgICAgIFdlYktpdFRhcmdldEluZm8qIHRhcmdldDsKKyAgICAgICAgZ3VpbnQg
Y29udGV4dDsKKworICAgICAgICB0YXJnZXQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RhcmdldF9p
bmZvKHdlYlZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR1RLX1dJREdFVCh3ZWJWaWV3KS0+YWxsb2NhdGlvbi53aWR0aC8yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19XSURHRVQod2ViVmll
dyktPmFsbG9jYXRpb24uaGVpZ2h0LzIpOworICAgICAgICBnX2Fzc2VydCh0YXJnZXQpOworICAg
ICAgICBnX29iamVjdF9nZXQodGFyZ2V0LCAiY29udGV4dCIsICZjb250ZXh0LCBOVUxMKTsKKyAg
ICAgICAgZ19hc3NlcnQoY29udGV4dCAmIGluZm8tPmZsYWcpOworICAgICAgICBnX29iamVjdF91
bnJlZih0YXJnZXQpOworICAgICAgICBnX21haW5fbG9vcF9xdWl0KGxvb3ApOworICAgIH0KK30K
Kworc3RhdGljIHZvaWQKK3Rlc3Rfd2Via2l0X3RhcmdldF9pbmZvKFRhcmdldEluZm9GaXh0dXJl
KiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEpCit7CisgICAgVGVzdEluZm8qIGluZm8gPSAo
VGVzdEluZm8qKWRhdGE7CisgICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCAy
LCAyIH07CisKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcoZml4dHVyZS0+d2ViVmll
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+ZGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInRleHQvaHRtbCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ1dGYtOCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm
aWxlOi8vIik7CisgICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQoZml4dHVy
ZS0+d2ViVmlldyksICZhbGxvY2F0aW9uKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGZpeHR1cmUt
PndlYlZpZXcsICJub3RpZnk6OmxvYWQtc3RhdHVzIiwgR19DQUxMQkFDSyhsb2FkX3N0YXR1c19j
YiksIGluZm8pOworICAgIGdfbWFpbl9sb29wX3J1bihsb29wKTsKK30KKworaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7CisgICAgZ3Rr
X3Rlc3RfaW5pdCgmYXJnYywgJmFyZ3YsIE5VTEwpOworCisgICAgZ190ZXN0X2J1Z19iYXNlKCJo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKKworICAgIGdfdGVzdF9hZGQoIi93ZWJraXQvdGFy
Z2V0aW5mby9kb2N1bWVudCIsIFRhcmdldEluZm9GaXh0dXJlLCAKKyAgICAgICAgICAgICAgIHRl
c3RfaW5mb19uZXcoIjxodG1sPjxib2R5PjxoMT5XZWJLaXRHVEsrITwvaDE+PC9ib2R5PjwvaHRt
bD4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVEFSR0VUX0lORk9fQ09O
VEVYVF9ET0NVTUVOVCksCisgICAgICAgICAgICAgICB0YXJnZXRfaW5mb19maXh0dXJlX3NldHVw
LCB0ZXN0X3dlYmtpdF90YXJnZXRfaW5mbywgdGFyZ2V0X2luZm9fZml4dHVyZV90ZWFyZG93bik7
CisKKy8qIFdlIHNob3VsZCByZWFsbHkgdGVzdCB0aGlzLCBidXQgaXQncyBjb21wbGljYXRlZCB0
byBrbm93IHdoZXJlIHRvCisgICBhc2sgZm9yIHRoZSBjb29yZGluYXRlcyBpbiBnZW5lcmFsIHdp
dGhvdXQgZWl0aGVyIERPTSBiaW5kaW5ncyBvcgorICAgdXNpbmcgSlNDIEFQSXMgKi8KKyNpZiAw
CisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC90YXJnZXRpbmZvL2ltYWdlIiwgVGFyZ2V0SW5mb0Zp
eHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KCI8aHRtbD48Ym9keT48aW1nIHNy
Yz0nMHhkZWFkYmVlZicgd2lkdGg9NTAgaGVpZ2h0PTUwPjwvaW1nPjwvYm9keT48L2h0bWw+IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RBUkdFVF9JTkZPX0NPTlRFWFRf
SU1BR0UpLAorICAgICAgICAgICAgICAgdGFyZ2V0X2luZm9fZml4dHVyZV9zZXR1cCwgdGVzdF93
ZWJraXRfdGFyZ2V0X2luZm8sIHRhcmdldF9pbmZvX2ZpeHR1cmVfdGVhcmRvd24pOworICAgIGdf
dGVzdF9hZGQoIi93ZWJraXQvdGFyZ2V0aW5mby9lZGl0YWJsZSIsIFRhcmdldEluZm9GaXh0dXJl
LAorICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldygiPGh0bWw+PGJvZHk+PGlucHV0IHR5cGU9
J3N1Ym1pdCc+PC9pbnB1dD4+PC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXRUJLSVRfVEFSR0VUX0lORk9fQ09OVEVYVF9FRElUQUJMRSksCisgICAgICAgICAg
ICAgICB0YXJnZXRfaW5mb19maXh0dXJlX3NldHVwLCB0ZXN0X3dlYmtpdF90YXJnZXRfaW5mbywg
dGFyZ2V0X2luZm9fZml4dHVyZV90ZWFyZG93bik7CisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC90
YXJnZXRpbmZvL2xpbmsiLCBUYXJnZXRJbmZvRml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3Rf
aW5mb19uZXcoIjxodG1sPjxib2R5PjxhIGhyZWY9J2h0dHA6Ly93d3cuZXhhbXBsZS5jb20nPkhF
TExPIFdPUkxEPC9hPjwvYm9keT48L2h0bWw+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV0VCS0lUX1RBUkdFVF9JTkZPX0NPTlRFWFRfTElOSyksCisgICAgICAgICAgICAgICB0YXJn
ZXRfaW5mb19maXh0dXJlX3NldHVwLCB0ZXN0X3dlYmtpdF90YXJnZXRfaW5mbywgdGFyZ2V0X2lu
Zm9fZml4dHVyZV90ZWFyZG93bik7CisjZW5kaWYKKyAgICAgICAgICAgICAgIAorICAgIHJldHVy
biBnX3Rlc3RfcnVuICgpOworfQorCisjZWxzZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCit7CisgICAgZ19jcml0aWNhbCgiWW91IHdpbGwgbmVlZCBhdCBsZWFzdCBHVEsrIDIu
MTQuMCB0byBydW4gdGhlIHVuaXQgdGVzdHMuIik7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA1MTczNjgyLi5mN2U2MDk1IDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1
ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSA8
d3RmL0dPd25QdHIuaD4KQEAgLTM5MTEsMyArMzkxMiw0MCBAQCBHTGlzdCogd2Via2l0X3dlYl92
aWV3X2dldF9zdWJyZXNvdXJjZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBHTGlzdCog
c3ViUmVzb3VyY2VzID0gZ19oYXNoX3RhYmxlX2dldF92YWx1ZXMocHJpdi0+c3ViUmVzb3VyY2Vz
KTsKICAgICByZXR1cm4gZ19saXN0X3JlbW92ZShzdWJSZXNvdXJjZXMsIHByaXYtPm1haW5SZXNv
dXJjZSk7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF90YXJnZXRfaW5mbzoKKyAq
IEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAeDogdGhlIHggY29vcmRpbmF0ZQorICog
QHk6IHRoZSB5IGNvb3JkaW5hdGUKKyAqIAorICogRG9lcyBhICdoaXQgdGVzdCcgaW4gdGhlIHNw
ZWNpZmllZCBAeCBhbmQgQHkgY29vcmRpbmF0ZXMgdG8gZmlndXJlCisgKiBvdXQgY29udGV4dCBp
bmZvcm1hdGlvbiBhYm91dCB0aGF0IHBvc2l0aW9uIGluIHRoZSBAd2ViVmlldy4KKyAqIAorICog
UmV0dXJuczogYSBuZXdseSBjcmVhdGVkICNXZWJLaXRUYXJnZXRJbmZvIHdpdGggdGhlIGNvbnRl
eHQgb2YgdGhlCisgKiBzcGVjaWZpZWQgY29vcmRpbmF0ZXMuCisgKgorICogU2luY2U6IDEuMS4x
NQorICoqLworV2ViS2l0VGFyZ2V0SW5mbyogd2Via2l0X3dlYl92aWV3X2dldF90YXJnZXRfaW5m
byhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBkb3VibGUgeCwgZG91YmxlIHkpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKKwor
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKTsKKyAgICBp
ZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAg
IHJldHVybiBOVUxMOworICAgIFJlbmRlclZpZXcgKnZpZXcgPSBkb2N1bWVudC0+dG9wRG9jdW1l
bnQoKS0+cmVuZGVyVmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIE5VTEw7
CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAg
ICAvLyBXZSB0cnVuY2F0ZSB0aGUgZG91YmxlIGNvb3JkaW5hdGVzIGhlcmUsIGJ1dCBpdCdzIHdo
YXQgaGFwcGVucworICAgIC8vIGFueXdheSBpbiBKUyBBUElzIGxpa2UgZWxlbWVudEZyb21Qb2lu
dC4KKyAgICBJbnRQb2ludCBwb2ludCgoaW50KXgsIChpbnQpeSk7CisgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQocG9pbnQpOworICAgIHZpZXctPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVz
dWx0KTsKKworICAgIHJldHVybiB3ZWJraXRfdGFyZ2V0X2luZm9fbmV3X2Zyb21fY29yZV9oaXRf
dGVzdF9yZXN1bHQocmVzdWx0KTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCA5
NjhiNzRlLi45YTk1ZjA5IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC0zNjMsNiAr
MzYzLDEwIEBAIHdlYmtpdF93ZWJfdmlld19zZXRfdmlld19zb3VyY2VfbW9kZSAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcsCiBXRUJLSVRfQVBJIGdib29sZWFuCiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3ZpZXdfc291cmNlX21vZGUgICAgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSBXZWJLaXRUYXJnZXRJbmZvKgor
d2Via2l0X3dlYl92aWV3X2dldF90YXJnZXRfaW5mbyAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICp3ZWJWaWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSAgICAgICAgICAgICAgICB4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAgICAgICAgICAgICAgICB5
KTsKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgotLSAKMS42LjQuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39691</attachid>
            <date>2009-09-17 06:18:17 -0700</date>
            <delta_ts>2009-09-17 08:56:33 -0700</delta_ts>
            <desc>gettargetinfo.patch</desc>
            <filename>gettargetinfo.patch</filename>
            <type>text/plain</type>
            <size>12037</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBmZjQwN2U3ZWU1OGQyNDJjM2M2OTUwNmQ4ZjNmZDUyMTBiYjdkODVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
aHUsIDE3IFNlcCAyMDA5IDEyOjQzOjIzICswMzAwClN1YmplY3Q6IFtQQVRDSF0gMjAwOS0wOS0x
NyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBjb250ZXh0IG1lbnUgb3ZlcnJpZGluZyBBUEkg
aXMgdmVyeSBsaW1pdGVkCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3NTQ2CgogICAgICAgIEFkZCBuZXcgdGVzdHMgdG8gdGhlIGJ1aWxkLgoKICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOgoKV2ViS2l0L2d0azoKCjIwMDktMDktMTcgIFhhbiBMb3BleiAg
PHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CiAgICAgICAgW0dUS10gY29udGV4dCBtZW51IG92ZXJyaWRpbmcgQVBJIGlzIHZlcnkgbGltaXRl
ZAogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU0NgoK
ICAgICAgICBBZGQgYSBmdW5jdGlvbiB0byBnZXQgdGhlIFdlYktpdFRhcmdldEluZm8gb2YgYSBj
b3VwbGUgb2YKICAgICAgICBjb29yZGluYXRlcyBpbiBhIFdlYktpdFdlYlZpZXcsIHBsdXMgdGVz
dHMgZm9yIGl0LgoKICAgICAgICAqIHRlc3RzL3Rlc3R0YXJnZXRpbmZvLmM6IEFkZGVkLgogICAg
ICAgICh0ZXN0X2luZm9fbmV3KToKICAgICAgICAodGVzdF9pbmZvX2Rlc3Ryb3kpOgogICAgICAg
ICh0YXJnZXRfaW5mb19maXh0dXJlX3NldHVwKToKICAgICAgICAodGFyZ2V0X2luZm9fZml4dHVy
ZV90ZWFyZG93bik6CiAgICAgICAgKGxvYWRfc3RhdHVzX2NiKToKICAgICAgICAodGVzdF93ZWJr
aXRfdGFyZ2V0X2luZm8pOgogICAgICAgIChtYWluKToKICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcDoKICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF90YXJnZXRfaW5mbyk6CiAg
ICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgotLS0KIENoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMSArKysKIEdOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgNSArCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICB8ICAg
MjIgKysrKysKIFdlYktpdC9ndGsvdGVzdHMvdGVzdHRhcmdldGluZm8uYyAgIHwgIDE1MyArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAgfCAgIDM4ICsrKysrKysrKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5oICAgfCAgICA0ICsKIDYgZmlsZXMgY2hhbmdlZCwgMjMzIGluc2VydGlvbnMoKyksIDAg
ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L2d0ay90ZXN0cy90ZXN0dGFy
Z2V0aW5mby5jCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDhiNjdj
NGEuLjM1ODYyZTggMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAwOS0wOS0xNyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gY29u
dGV4dCBtZW51IG92ZXJyaWRpbmcgQVBJIGlzIHZlcnkgbGltaXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NDYKKworICAgICAgICBBZGQgbmV3
IHRlc3RzIHRvIHRoZSBidWlsZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorCiAyMDA5
LTA5LTE0ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFr
ZWZpbGUuYW0KaW5kZXggY2U5NmYwNy4uMmEwZDg1NiAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUu
YW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTU0Miw2ICs1NDIsNyBAQCBURVNUX1BST0dTICs9
IFByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0aHR0cGJhY2tlbmQgXAogCVByb2dyYW1zL3VuaXR0ZXN0
cy90ZXN0d2luZG93IFwKIAlQcm9ncmFtcy91bml0dGVzdHMvdGVzdGRvd25sb2FkIFwKIAlQcm9n
cmFtcy91bml0dGVzdHMvdGVzdGF0ayBcCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3R0YXJnZXRp
bmZvIFwKIAlQcm9ncmFtcy91bml0dGVzdHMvdGVzdHdlYnNldHRpbmdzIFwKIAlQcm9ncmFtcy91
bml0dGVzdHMvdGVzdHdlYnJlc291cmNlIFwKIAlQcm9ncmFtcy91bml0dGVzdHMvdGVzdHdlYmRh
dGFzb3VyY2UKQEAgLTYxMCw2ICs2MTEsMTAgQEAgUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJk
YXRhc291cmNlX1NPVVJDRVMgPSBXZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJkYXRhc291cmMKIFBy
b2dyYW1zX3VuaXR0ZXN0c190ZXN0d2ViZGF0YXNvdXJjZV9DRkxBR1MgPSAkKHdlYmtpdF90ZXN0
c19jZmxhZ3MpCiBQcm9ncmFtc191bml0dGVzdHNfdGVzdHdlYmRhdGFzb3VyY2VfTERBREQgPSAk
KHdlYmtpdF90ZXN0c19sZGFkZCkKIAorUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R0YXJnZXRpbmZv
X1NPVVJDRVMgPSBXZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R0YXJnZXRpbmZvLmMKK1Byb2dyYW1zX3Vu
aXR0ZXN0c190ZXN0dGFyZ2V0aW5mb19DRkxBR1MgPSAkKHdlYmtpdF90ZXN0c19jZmxhZ3MpCitQ
cm9ncmFtc191bml0dGVzdHNfdGVzdHRhcmdldGluZm9fTERBREQgPSAkKHdlYmtpdF90ZXN0c19s
ZGFkZCkKKwogIyBBdXRvZ2VuZXJhdGVkIHNvdXJjZXMKIEJVSUxUX1NPVVJDRVMgOj0gXAogCSQo
amF2YXNjcmlwdGNvcmVfYnVpbHRfc291cmNlcykgXApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBhNzVhMWJlLi5iNGQ0ZjFjIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtNSw2ICs1LDI4IEBACiAgICAgICAgIFtHVEtdIGNvbnRleHQgbWVudSBvdmVycmlkaW5n
IEFQSSBpcyB2ZXJ5IGxpbWl0ZWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3NTQ2CiAKKyAgICAgICAgQWRkIGEgZnVuY3Rpb24gdG8gZ2V0IHRoZSBX
ZWJLaXRUYXJnZXRJbmZvIG9mIGEgY291cGxlIG9mCisgICAgICAgIGNvb3JkaW5hdGVzIGluIGEg
V2ViS2l0V2ViVmlldywgcGx1cyB0ZXN0cyBmb3IgaXQuCisKKyAgICAgICAgKiB0ZXN0cy90ZXN0
dGFyZ2V0aW5mby5jOiBBZGRlZC4KKyAgICAgICAgKHRlc3RfaW5mb19uZXcpOgorICAgICAgICAo
dGVzdF9pbmZvX2Rlc3Ryb3kpOgorICAgICAgICAodGFyZ2V0X2luZm9fZml4dHVyZV9zZXR1cCk6
CisgICAgICAgICh0YXJnZXRfaW5mb19maXh0dXJlX3RlYXJkb3duKToKKyAgICAgICAgKGxvYWRf
c3RhdHVzX2NiKToKKyAgICAgICAgKHRlc3Rfd2Via2l0X3RhcmdldF9pbmZvKToKKyAgICAgICAg
KG1haW4pOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19nZXRfdGFyZ2V0X2luZm8pOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ2aWV3Lmg6CisKKzIwMDktMDktMTcgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIGNv
bnRleHQgbWVudSBvdmVycmlkaW5nIEFQSSBpcyB2ZXJ5IGxpbWl0ZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTQ2CisKICAgICAgICAgQWRkIFdl
YktpdFRhcmdldEluZm8sIGFuIG9iamVjdCB0byBob2xkIGNvbnRleHQgaW5mb3JtYXRpb24gZnJv
bSBhCiAgICAgICAgIHBvaW50IGluIHRoZSBwYWdlLgogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L3Rlc3RzL3Rlc3R0YXJnZXRpbmZvLmMgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R0YXJnZXRpbmZv
LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTllZThlMQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdHRhcmdldGluZm8uYwpAQCAtMCwwICsxLDE1
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGVy
cm5vLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KKyNp
bmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+CisKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwg
MCkKKwordHlwZWRlZiBzdHJ1Y3QgeworICBjaGFyICpkYXRhOworICBndWludCBmbGFnOworfSBU
ZXN0SW5mbzsKKworc3RhdGljIEdNYWluTG9vcCogbG9vcDsKKwordHlwZWRlZiBzdHJ1Y3Qgewor
ICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CisgICAgVGVzdEluZm8qIGluZm87Cit9IFRhcmdl
dEluZm9GaXh0dXJlOzsKKworVGVzdEluZm8qCit0ZXN0X2luZm9fbmV3KGNvbnN0IGNoYXIqIGRh
dGEsIGd1aW50IGZsYWcpCit7CisgICAgVGVzdEluZm8qIGluZm87CisKKyAgICBpbmZvID0gZ19z
bGljZV9uZXcoVGVzdEluZm8pOworICAgIGluZm8tPmRhdGEgPSBnX3N0cmR1cChkYXRhKTsKKyAg
ICBpbmZvLT5mbGFnID0gZmxhZzsKKworICAgIHJldHVybiBpbmZvOworfQorCit2b2lkCit0ZXN0
X2luZm9fZGVzdHJveShUZXN0SW5mbyogaW5mbykKK3sKKyAgICBnX2ZyZWUoaW5mby0+ZGF0YSk7
CisgICAgZ19zbGljZV9mcmVlKFRlc3RJbmZvLCBpbmZvKTsKK30KKworc3RhdGljIHZvaWQgdGFy
Z2V0X2luZm9fZml4dHVyZV9zZXR1cChUYXJnZXRJbmZvRml4dHVyZSogZml4dHVyZSwgZ2NvbnN0
cG9pbnRlciBkYXRhKQoreworICAgIGZpeHR1cmUtPndlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVco
d2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBnX29iamVjdF9yZWZfc2luayhmaXh0dXJlLT53
ZWJWaWV3KTsKKyAgICBsb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIFRSVUUpOworICAgIGZp
eHR1cmUtPmluZm8gPSAoVGVzdEluZm8qKWRhdGE7Cit9CisKK3N0YXRpYyB2b2lkIHRhcmdldF9p
bmZvX2ZpeHR1cmVfdGVhcmRvd24oVGFyZ2V0SW5mb0ZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBv
aW50ZXIgZGF0YSkKK3sKKyAgICBnX29iamVjdF91bnJlZihmaXh0dXJlLT53ZWJWaWV3KTsKKyAg
ICBnX21haW5fbG9vcF91bnJlZihsb29wKTsKKyAgICB0ZXN0X2luZm9fZGVzdHJveShmaXh0dXJl
LT5pbmZvKTsKK30KKworc3RhdGljIHZvaWQKK2xvYWRfc3RhdHVzX2NiKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsCisgICAgICAgICAgICAgICBHUGFyYW1TcGVjKiBzcGVjLAorICAgICAgICAgICAg
ICAgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBXZWJLaXRMb2FkU3RhdHVzIHN0YXR1cyA9IHdlYmtp
dF93ZWJfdmlld19nZXRfbG9hZF9zdGF0dXMod2ViVmlldyk7CisgICAgVGVzdEluZm8qIGluZm8g
PSAoVGVzdEluZm8qKWRhdGE7CisKKyAgICBpZiAoc3RhdHVzID09IFdFQktJVF9MT0FEX0ZJTklT
SEVEKSB7CisgICAgICAgIFdlYktpdFRhcmdldEluZm8qIHRhcmdldDsKKyAgICAgICAgZ3VpbnQg
Y29udGV4dDsKKworICAgICAgICB0YXJnZXQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RhcmdldF9p
bmZvKHdlYlZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR1RLX1dJREdFVCh3ZWJWaWV3KS0+YWxsb2NhdGlvbi53aWR0aC8yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19XSURHRVQod2ViVmll
dyktPmFsbG9jYXRpb24uaGVpZ2h0LzIpOworICAgICAgICBnX2Fzc2VydCh0YXJnZXQpOworICAg
ICAgICBnX29iamVjdF9nZXQodGFyZ2V0LCAiY29udGV4dCIsICZjb250ZXh0LCBOVUxMKTsKKyAg
ICAgICAgZ19hc3NlcnQoY29udGV4dCAmIGluZm8tPmZsYWcpOworICAgICAgICBnX29iamVjdF91
bnJlZih0YXJnZXQpOworICAgICAgICBnX21haW5fbG9vcF9xdWl0KGxvb3ApOworICAgIH0KK30K
Kworc3RhdGljIHZvaWQKK3Rlc3Rfd2Via2l0X3RhcmdldF9pbmZvKFRhcmdldEluZm9GaXh0dXJl
KiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEpCit7CisgICAgVGVzdEluZm8qIGluZm8gPSAo
VGVzdEluZm8qKWRhdGE7CisgICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCAy
LCAyIH07CisKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcoZml4dHVyZS0+d2ViVmll
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+ZGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInRleHQvaHRtbCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ1dGYtOCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm
aWxlOi8vIik7CisgICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQoZml4dHVy
ZS0+d2ViVmlldyksICZhbGxvY2F0aW9uKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGZpeHR1cmUt
PndlYlZpZXcsICJub3RpZnk6OmxvYWQtc3RhdHVzIiwgR19DQUxMQkFDSyhsb2FkX3N0YXR1c19j
YiksIGluZm8pOworICAgIGdfbWFpbl9sb29wX3J1bihsb29wKTsKK30KKworaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7CisgICAgZ3Rr
X3Rlc3RfaW5pdCgmYXJnYywgJmFyZ3YsIE5VTEwpOworCisgICAgZ190ZXN0X2J1Z19iYXNlKCJo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKKworICAgIGdfdGVzdF9hZGQoIi93ZWJraXQvdGFy
Z2V0aW5mby9kb2N1bWVudCIsIFRhcmdldEluZm9GaXh0dXJlLCAKKyAgICAgICAgICAgICAgIHRl
c3RfaW5mb19uZXcoIjxodG1sPjxib2R5PjxoMT5XZWJLaXRHVEsrITwvaDE+PC9ib2R5PjwvaHRt
bD4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVEFSR0VUX0lORk9fQ09O
VEVYVF9ET0NVTUVOVCksCisgICAgICAgICAgICAgICB0YXJnZXRfaW5mb19maXh0dXJlX3NldHVw
LCB0ZXN0X3dlYmtpdF90YXJnZXRfaW5mbywgdGFyZ2V0X2luZm9fZml4dHVyZV90ZWFyZG93bik7
CisKKy8qIFdlIHNob3VsZCByZWFsbHkgdGVzdCB0aGlzLCBidXQgaXQncyBjb21wbGljYXRlZCB0
byBrbm93IHdoZXJlIHRvCisgICBhc2sgZm9yIHRoZSBjb29yZGluYXRlcyBpbiBnZW5lcmFsIHdp
dGhvdXQgZWl0aGVyIERPTSBiaW5kaW5ncyBvcgorICAgdXNpbmcgSlNDIEFQSXMgKi8KKyNpZiAw
CisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC90YXJnZXRpbmZvL2ltYWdlIiwgVGFyZ2V0SW5mb0Zp
eHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KCI8aHRtbD48Ym9keT48aW1nIHNy
Yz0nMHhkZWFkYmVlZicgd2lkdGg9NTAgaGVpZ2h0PTUwPjwvaW1nPjwvYm9keT48L2h0bWw+IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RBUkdFVF9JTkZPX0NPTlRFWFRf
SU1BR0UpLAorICAgICAgICAgICAgICAgdGFyZ2V0X2luZm9fZml4dHVyZV9zZXR1cCwgdGVzdF93
ZWJraXRfdGFyZ2V0X2luZm8sIHRhcmdldF9pbmZvX2ZpeHR1cmVfdGVhcmRvd24pOworICAgIGdf
dGVzdF9hZGQoIi93ZWJraXQvdGFyZ2V0aW5mby9lZGl0YWJsZSIsIFRhcmdldEluZm9GaXh0dXJl
LAorICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldygiPGh0bWw+PGJvZHk+PGlucHV0IHR5cGU9
J3N1Ym1pdCc+PC9pbnB1dD4+PC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXRUJLSVRfVEFSR0VUX0lORk9fQ09OVEVYVF9FRElUQUJMRSksCisgICAgICAgICAg
ICAgICB0YXJnZXRfaW5mb19maXh0dXJlX3NldHVwLCB0ZXN0X3dlYmtpdF90YXJnZXRfaW5mbywg
dGFyZ2V0X2luZm9fZml4dHVyZV90ZWFyZG93bik7CisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC90
YXJnZXRpbmZvL2xpbmsiLCBUYXJnZXRJbmZvRml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3Rf
aW5mb19uZXcoIjxodG1sPjxib2R5PjxhIGhyZWY9J2h0dHA6Ly93d3cuZXhhbXBsZS5jb20nPkhF
TExPIFdPUkxEPC9hPjwvYm9keT48L2h0bWw+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV0VCS0lUX1RBUkdFVF9JTkZPX0NPTlRFWFRfTElOSyksCisgICAgICAgICAgICAgICB0YXJn
ZXRfaW5mb19maXh0dXJlX3NldHVwLCB0ZXN0X3dlYmtpdF90YXJnZXRfaW5mbywgdGFyZ2V0X2lu
Zm9fZml4dHVyZV90ZWFyZG93bik7CisjZW5kaWYKKyAgICAgICAgICAgICAgIAorICAgIHJldHVy
biBnX3Rlc3RfcnVuICgpOworfQorCisjZWxzZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCit7CisgICAgZ19jcml0aWNhbCgiWW91IHdpbGwgbmVlZCBhdCBsZWFzdCBHVEsrIDIu
MTQuMCB0byBydW4gdGhlIHVuaXQgdGVzdHMuIik7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA1MTczNjgyLi4yNzEwNmJlIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1
ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSA8
d3RmL0dPd25QdHIuaD4KQEAgLTM5MTEsMyArMzkxMiw0MCBAQCBHTGlzdCogd2Via2l0X3dlYl92
aWV3X2dldF9zdWJyZXNvdXJjZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBHTGlzdCog
c3ViUmVzb3VyY2VzID0gZ19oYXNoX3RhYmxlX2dldF92YWx1ZXMocHJpdi0+c3ViUmVzb3VyY2Vz
KTsKICAgICByZXR1cm4gZ19saXN0X3JlbW92ZShzdWJSZXNvdXJjZXMsIHByaXYtPm1haW5SZXNv
dXJjZSk7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF90YXJnZXRfaW5mbzoKKyAq
IEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAeDogdGhlIHggY29vcmRpbmF0ZQorICog
QHk6IHRoZSB5IGNvb3JkaW5hdGUKKyAqIAorICogRG9lcyBhICdoaXQgdGVzdCcgaW4gdGhlIHNw
ZWNpZmllZCBAeCBhbmQgQHkgY29vcmRpbmF0ZXMgdG8gZmlndXJlCisgKiBvdXQgY29udGV4dCBp
bmZvcm1hdGlvbiBhYm91dCB0aGF0IHBvc2l0aW9uIGluIHRoZSBAd2ViVmlldy4KKyAqIAorICog
UmV0dXJuczogYSBuZXdseSBjcmVhdGVkICNXZWJLaXRUYXJnZXRJbmZvIHdpdGggdGhlIGNvbnRl
eHQgb2YgdGhlCisgKiBzcGVjaWZpZWQgY29vcmRpbmF0ZXMuCisgKgorICogU2luY2U6IDEuMS4x
NQorICoqLworV2ViS2l0VGFyZ2V0SW5mbyogd2Via2l0X3dlYl92aWV3X2dldF90YXJnZXRfaW5m
byhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBkb3VibGUgeCwgZG91YmxlIHkpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKKwor
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVy
biBOVUxMOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsK
KyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBSZW5kZXJWaWV3
ICp2aWV3ID0gZG9jdW1lbnQtPnRvcERvY3VtZW50KCktPnJlbmRlclZpZXcoKTsKKyAgICBpZiAo
IXZpZXcpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3Qo
SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CisgICAgLy8gV2UgdHJ1bmNhdGUgdGhlIGRvdWJsZSBj
b29yZGluYXRlcyBoZXJlLCBidXQgaXQncyB3aGF0IGhhcHBlbnMKKyAgICAvLyBhbnl3YXkgaW4g
SlMgQVBJcyBsaWtlIGVsZW1lbnRGcm9tUG9pbnQuCisgICAgSW50UG9pbnQgcG9pbnQoKGludCl4
LCAoaW50KXkpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKKyAgICB2aWV3LT5s
YXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisKKyAgICByZXR1cm4gd2Via2l0X3Rh
cmdldF9pbmZvX25ld19mcm9tX2NvcmVfaGl0X3Rlc3RfcmVzdWx0KHJlc3VsdCk7Cit9CmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmggYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggOTY4Yjc0ZS4uOWE5NWYwOSAxMDA2NDQKLS0tIGEv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuaApAQCAtMzYzLDYgKzM2MywxMCBAQCB3ZWJraXRfd2ViX3ZpZXdfc2V0
X3ZpZXdfc291cmNlX21vZGUgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92
aWV3LAogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dlYl92aWV3X2dldF92aWV3X3NvdXJj
ZV9tb2RlICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAKK1dF
QktJVF9BUEkgV2ViS2l0VGFyZ2V0SW5mbyoKK3dlYmtpdF93ZWJfdmlld19nZXRfdGFyZ2V0X2lu
Zm8gICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViVmlldywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgICAgICAg
ICAgICAgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgICAgICAgICAgICAgICAgeSk7CiBHX0VORF9ERUNMUwogCiAjZW5kaWYKLS0g
CjEuNi40LjIKCg==
</data>
<flag name="commit-queue"
          id="20820"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39696</attachid>
            <date>2009-09-17 08:56:33 -0700</date>
            <delta_ts>2009-09-18 06:57:50 -0700</delta_ts>
            <desc>gettargetinfo.patch</desc>
            <filename>gettargetinfo.patch</filename>
            <type>text/plain</type>
            <size>12329</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAzMjQxNjExNWRjNGU2MWRmY2Y2MzY4N2E0NzJjY2VmYmYxNjA2NTVhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
aHUsIDE3IFNlcCAyMDA5IDEyOjQzOjIzICswMzAwClN1YmplY3Q6IFtQQVRDSF0gMjAwOS0wOS0x
NyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBjb250ZXh0IG1lbnUgb3ZlcnJpZGluZyBBUEkg
aXMgdmVyeSBsaW1pdGVkCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3NTQ2CgogICAgICAgIEFkZCBuZXcgdGVzdHMgdG8gdGhlIGJ1aWxkLgoKICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOgoKV2ViS2l0L2d0azoKCjIwMDktMDktMTcgIFhhbiBMb3BleiAg
PHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CiAgICAgICAgW0dUS10gY29udGV4dCBtZW51IG92ZXJyaWRpbmcgQVBJIGlzIHZlcnkgbGltaXRl
ZAogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU0NgoK
ICAgICAgICBBZGQgYSBmdW5jdGlvbiB0byBnZXQgdGhlIFdlYktpdFRhcmdldEluZm8gb2YgYSBj
b3VwbGUgb2YKICAgICAgICBjb29yZGluYXRlcyBpbiBhIFdlYktpdFdlYlZpZXcsIHBsdXMgdGVz
dHMgZm9yIGl0LgoKICAgICAgICAqIHRlc3RzL3Rlc3R0YXJnZXRpbmZvLmM6IEFkZGVkLgogICAg
ICAgICh0ZXN0X2luZm9fbmV3KToKICAgICAgICAodGVzdF9pbmZvX2Rlc3Ryb3kpOgogICAgICAg
ICh0YXJnZXRfaW5mb19maXh0dXJlX3NldHVwKToKICAgICAgICAodGFyZ2V0X2luZm9fZml4dHVy
ZV90ZWFyZG93bik6CiAgICAgICAgKGxvYWRfc3RhdHVzX2NiKToKICAgICAgICAodGVzdF93ZWJr
aXRfdGFyZ2V0X2luZm8pOgogICAgICAgIChtYWluKToKICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcDoKICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF90YXJnZXRfaW5mbyk6CiAg
ICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgotLS0KIENoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMSArKysKIEdOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgNSArCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICB8ICAg
MjIgKysrKysKIFdlYktpdC9ndGsvdGVzdHMvdGVzdHRhcmdldGluZm8uYyAgIHwgIDE1NCArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAgfCAgIDM4ICsrKysrKysrKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5oICAgfCAgICAzICsKIDYgZmlsZXMgY2hhbmdlZCwgMjMzIGluc2VydGlvbnMoKyksIDAg
ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L2d0ay90ZXN0cy90ZXN0dGFy
Z2V0aW5mby5jCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDhiNjdj
NGEuLjM1ODYyZTggMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAwOS0wOS0xNyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gY29u
dGV4dCBtZW51IG92ZXJyaWRpbmcgQVBJIGlzIHZlcnkgbGltaXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NDYKKworICAgICAgICBBZGQgbmV3
IHRlc3RzIHRvIHRoZSBidWlsZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorCiAyMDA5
LTA5LTE0ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFr
ZWZpbGUuYW0KaW5kZXggY2U5NmYwNy4uMmEwZDg1NiAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUu
YW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTU0Miw2ICs1NDIsNyBAQCBURVNUX1BST0dTICs9
IFByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0aHR0cGJhY2tlbmQgXAogCVByb2dyYW1zL3VuaXR0ZXN0
cy90ZXN0d2luZG93IFwKIAlQcm9ncmFtcy91bml0dGVzdHMvdGVzdGRvd25sb2FkIFwKIAlQcm9n
cmFtcy91bml0dGVzdHMvdGVzdGF0ayBcCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3R0YXJnZXRp
bmZvIFwKIAlQcm9ncmFtcy91bml0dGVzdHMvdGVzdHdlYnNldHRpbmdzIFwKIAlQcm9ncmFtcy91
bml0dGVzdHMvdGVzdHdlYnJlc291cmNlIFwKIAlQcm9ncmFtcy91bml0dGVzdHMvdGVzdHdlYmRh
dGFzb3VyY2UKQEAgLTYxMCw2ICs2MTEsMTAgQEAgUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJk
YXRhc291cmNlX1NPVVJDRVMgPSBXZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJkYXRhc291cmMKIFBy
b2dyYW1zX3VuaXR0ZXN0c190ZXN0d2ViZGF0YXNvdXJjZV9DRkxBR1MgPSAkKHdlYmtpdF90ZXN0
c19jZmxhZ3MpCiBQcm9ncmFtc191bml0dGVzdHNfdGVzdHdlYmRhdGFzb3VyY2VfTERBREQgPSAk
KHdlYmtpdF90ZXN0c19sZGFkZCkKIAorUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R0YXJnZXRpbmZv
X1NPVVJDRVMgPSBXZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R0YXJnZXRpbmZvLmMKK1Byb2dyYW1zX3Vu
aXR0ZXN0c190ZXN0dGFyZ2V0aW5mb19DRkxBR1MgPSAkKHdlYmtpdF90ZXN0c19jZmxhZ3MpCitQ
cm9ncmFtc191bml0dGVzdHNfdGVzdHRhcmdldGluZm9fTERBREQgPSAkKHdlYmtpdF90ZXN0c19s
ZGFkZCkKKwogIyBBdXRvZ2VuZXJhdGVkIHNvdXJjZXMKIEJVSUxUX1NPVVJDRVMgOj0gXAogCSQo
amF2YXNjcmlwdGNvcmVfYnVpbHRfc291cmNlcykgXApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBhNzVhMWJlLi5iNGQ0ZjFjIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtNSw2ICs1LDI4IEBACiAgICAgICAgIFtHVEtdIGNvbnRleHQgbWVudSBvdmVycmlkaW5n
IEFQSSBpcyB2ZXJ5IGxpbWl0ZWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3NTQ2CiAKKyAgICAgICAgQWRkIGEgZnVuY3Rpb24gdG8gZ2V0IHRoZSBX
ZWJLaXRUYXJnZXRJbmZvIG9mIGEgY291cGxlIG9mCisgICAgICAgIGNvb3JkaW5hdGVzIGluIGEg
V2ViS2l0V2ViVmlldywgcGx1cyB0ZXN0cyBmb3IgaXQuCisKKyAgICAgICAgKiB0ZXN0cy90ZXN0
dGFyZ2V0aW5mby5jOiBBZGRlZC4KKyAgICAgICAgKHRlc3RfaW5mb19uZXcpOgorICAgICAgICAo
dGVzdF9pbmZvX2Rlc3Ryb3kpOgorICAgICAgICAodGFyZ2V0X2luZm9fZml4dHVyZV9zZXR1cCk6
CisgICAgICAgICh0YXJnZXRfaW5mb19maXh0dXJlX3RlYXJkb3duKToKKyAgICAgICAgKGxvYWRf
c3RhdHVzX2NiKToKKyAgICAgICAgKHRlc3Rfd2Via2l0X3RhcmdldF9pbmZvKToKKyAgICAgICAg
KG1haW4pOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19nZXRfdGFyZ2V0X2luZm8pOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ2aWV3Lmg6CisKKzIwMDktMDktMTcgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIGNv
bnRleHQgbWVudSBvdmVycmlkaW5nIEFQSSBpcyB2ZXJ5IGxpbWl0ZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTQ2CisKICAgICAgICAgQWRkIFdl
YktpdFRhcmdldEluZm8sIGFuIG9iamVjdCB0byBob2xkIGNvbnRleHQgaW5mb3JtYXRpb24gZnJv
bSBhCiAgICAgICAgIHBvaW50IGluIHRoZSBwYWdlLgogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L3Rlc3RzL3Rlc3R0YXJnZXRpbmZvLmMgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R0YXJnZXRpbmZv
LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1YTdkZgotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdHRhcmdldGluZm8uYwpAQCAtMCwwICsxLDE1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGVy
cm5vLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KKyNp
bmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+CisKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwg
MCkKKwordHlwZWRlZiBzdHJ1Y3QgeworICBjaGFyKiBkYXRhOworICBndWludCBmbGFnOworfSBU
ZXN0SW5mbzsKKworc3RhdGljIEdNYWluTG9vcCogbG9vcDsKKwordHlwZWRlZiBzdHJ1Y3Qgewor
ICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CisgICAgVGVzdEluZm8qIGluZm87Cit9IFRhcmdl
dEluZm9GaXh0dXJlOworCitUZXN0SW5mbyoKK3Rlc3RfaW5mb19uZXcoY29uc3QgY2hhciogZGF0
YSwgZ3VpbnQgZmxhZykKK3sKKyAgICBUZXN0SW5mbyogaW5mbzsKKworICAgIGluZm8gPSBnX3Ns
aWNlX25ldyhUZXN0SW5mbyk7CisgICAgaW5mby0+ZGF0YSA9IGdfc3RyZHVwKGRhdGEpOworICAg
IGluZm8tPmZsYWcgPSBmbGFnOworCisgICAgcmV0dXJuIGluZm87Cit9CisKK3ZvaWQKK3Rlc3Rf
aW5mb19kZXN0cm95KFRlc3RJbmZvKiBpbmZvKQoreworICAgIGdfZnJlZShpbmZvLT5kYXRhKTsK
KyAgICBnX3NsaWNlX2ZyZWUoVGVzdEluZm8sIGluZm8pOworfQorCitzdGF0aWMgdm9pZCB0YXJn
ZXRfaW5mb19maXh0dXJlX3NldHVwKFRhcmdldEluZm9GaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rw
b2ludGVyIGRhdGEpCit7CisgICAgZml4dHVyZS0+d2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3
ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIGdfb2JqZWN0X3JlZl9zaW5rKGZpeHR1cmUtPndl
YlZpZXcpOworICAgIGxvb3AgPSBnX21haW5fbG9vcF9uZXcoTlVMTCwgVFJVRSk7CisgICAgZml4
dHVyZS0+aW5mbyA9IChUZXN0SW5mbyopZGF0YTsKK30KKworc3RhdGljIHZvaWQgdGFyZ2V0X2lu
Zm9fZml4dHVyZV90ZWFyZG93bihUYXJnZXRJbmZvRml4dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9p
bnRlciBkYXRhKQoreworICAgIGdfb2JqZWN0X3VucmVmKGZpeHR1cmUtPndlYlZpZXcpOworICAg
IGdfbWFpbl9sb29wX3VucmVmKGxvb3ApOworICAgIHRlc3RfaW5mb19kZXN0cm95KGZpeHR1cmUt
PmluZm8pOworfQorCitzdGF0aWMgdm9pZAorbG9hZF9zdGF0dXNfY2IoV2ViS2l0V2ViVmlldyog
d2ViVmlldywKKyAgICAgICAgICAgICAgIEdQYXJhbVNwZWMqIHNwZWMsCisgICAgICAgICAgICAg
ICBncG9pbnRlciBkYXRhKQoreworICAgIFdlYktpdExvYWRTdGF0dXMgc3RhdHVzID0gd2Via2l0
X3dlYl92aWV3X2dldF9sb2FkX3N0YXR1cyh3ZWJWaWV3KTsKKyAgICBUZXN0SW5mbyogaW5mbyA9
IChUZXN0SW5mbyopZGF0YTsKKworICAgIGlmIChzdGF0dXMgPT0gV0VCS0lUX0xPQURfRklOSVNI
RUQpIHsKKyAgICAgICAgV2ViS2l0VGFyZ2V0SW5mbyogdGFyZ2V0OworICAgICAgICBndWludCBj
b250ZXh0OworICAgICAgICBHZGtFdmVudEJ1dHRvbiBldmVudDsKKyAgICAgICAgZXZlbnQueCA9
IEdUS19XSURHRVQod2ViVmlldyktPmFsbG9jYXRpb24ud2lkdGggLyAyOworICAgICAgICBldmVu
dC55ID0gR1RLX1dJREdFVCh3ZWJWaWV3KS0+YWxsb2NhdGlvbi5oZWlnaHQgLyAyOworCisgICAg
ICAgIHRhcmdldCA9IHdlYmtpdF93ZWJfdmlld19nZXRfdGFyZ2V0X2luZm8od2ViVmlldywgJmV2
ZW50KTsKKyAgICAgICAgZ19hc3NlcnQodGFyZ2V0KTsKKyAgICAgICAgZ19vYmplY3RfZ2V0KHRh
cmdldCwgImNvbnRleHQiLCAmY29udGV4dCwgTlVMTCk7CisgICAgICAgIGdfYXNzZXJ0KGNvbnRl
eHQgJiBpbmZvLT5mbGFnKTsKKyAgICAgICAgZ19vYmplY3RfdW5yZWYodGFyZ2V0KTsKKyAgICAg
ICAgZ19tYWluX2xvb3BfcXVpdChsb29wKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0
X3dlYmtpdF90YXJnZXRfaW5mbyhUYXJnZXRJbmZvRml4dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9p
bnRlciBkYXRhKQoreworICAgIFRlc3RJbmZvKiBpbmZvID0gKFRlc3RJbmZvKilkYXRhOworICAg
IEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwgMiwgMiB9OworCisgICAgd2Via2l0
X3dlYl92aWV3X2xvYWRfc3RyaW5nKGZpeHR1cmUtPndlYlZpZXcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm8tPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXRmLTgi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZTovLyIpOworICAgIGd0a193
aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLCAmYWxsb2Nh
dGlvbik7CisgICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3LCAibm90aWZ5Ojps
b2FkLXN0YXR1cyIsIEdfQ0FMTEJBQ0sobG9hZF9zdGF0dXNfY2IpLCBpbmZvKTsKKyAgICBnX21h
aW5fbG9vcF9ydW4obG9vcCk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikK
K3sKKyAgICBnX3RocmVhZF9pbml0KE5VTEwpOworICAgIGd0a190ZXN0X2luaXQoJmFyZ2MsICZh
cmd2LCBOVUxMKTsKKworICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvIik7CisKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L3RhcmdldGluZm8vZG9jdW1lbnQiLCBU
YXJnZXRJbmZvRml4dHVyZSwgCisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KCI8aHRtbD48
Ym9keT48aDE+V2ViS2l0R1RLKyE8L2gxPjwvYm9keT48L2h0bWw+IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV0VCS0lUX1RBUkdFVF9JTkZPX0NPTlRFWFRfRE9DVU1FTlQpLAorICAg
ICAgICAgICAgICAgdGFyZ2V0X2luZm9fZml4dHVyZV9zZXR1cCwgdGVzdF93ZWJraXRfdGFyZ2V0
X2luZm8sIHRhcmdldF9pbmZvX2ZpeHR1cmVfdGVhcmRvd24pOworCisvKiBXZSBzaG91bGQgcmVh
bGx5IHRlc3QgdGhpcywgYnV0IGl0J3MgY29tcGxpY2F0ZWQgdG8ga25vdyB3aGVyZSB0bworICAg
YXNrIGZvciB0aGUgY29vcmRpbmF0ZXMgaW4gZ2VuZXJhbCB3aXRob3V0IGVpdGhlciBET00gYmlu
ZGluZ3Mgb3IKKyAgIHVzaW5nIEpTQyBBUElzICovCisjaWYgMAorICAgIGdfdGVzdF9hZGQoIi93
ZWJraXQvdGFyZ2V0aW5mby9pbWFnZSIsIFRhcmdldEluZm9GaXh0dXJlLAorICAgICAgICAgICAg
ICAgdGVzdF9pbmZvX25ldygiPGh0bWw+PGJvZHk+PGltZyBzcmM9JzB4ZGVhZGJlZWYnIHdpZHRo
PTUwIGhlaWdodD01MD48L2ltZz48L2JvZHk+PC9odG1sPiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdFQktJVF9UQVJHRVRfSU5GT19DT05URVhUX0lNQUdFKSwKKyAgICAgICAgICAg
ICAgIHRhcmdldF9pbmZvX2ZpeHR1cmVfc2V0dXAsIHRlc3Rfd2Via2l0X3RhcmdldF9pbmZvLCB0
YXJnZXRfaW5mb19maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L3Rh
cmdldGluZm8vZWRpdGFibGUiLCBUYXJnZXRJbmZvRml4dHVyZSwKKyAgICAgICAgICAgICAgIHRl
c3RfaW5mb19uZXcoIjxodG1sPjxib2R5PjxpbnB1dCB0eXBlPSdzdWJtaXQnPjwvaW5wdXQ+Pjwv
Ym9keT48L2h0bWw+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RBUkdF
VF9JTkZPX0NPTlRFWFRfRURJVEFCTEUpLAorICAgICAgICAgICAgICAgdGFyZ2V0X2luZm9fZml4
dHVyZV9zZXR1cCwgdGVzdF93ZWJraXRfdGFyZ2V0X2luZm8sIHRhcmdldF9pbmZvX2ZpeHR1cmVf
dGVhcmRvd24pOworICAgIGdfdGVzdF9hZGQoIi93ZWJraXQvdGFyZ2V0aW5mby9saW5rIiwgVGFy
Z2V0SW5mb0ZpeHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KCI8aHRtbD48Ym9k
eT48YSBocmVmPSdodHRwOi8vd3d3LmV4YW1wbGUuY29tJz5IRUxMTyBXT1JMRDwvYT48L2JvZHk+
PC9odG1sPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UQVJHRVRfSU5G
T19DT05URVhUX0xJTkspLAorICAgICAgICAgICAgICAgdGFyZ2V0X2luZm9fZml4dHVyZV9zZXR1
cCwgdGVzdF93ZWJraXRfdGFyZ2V0X2luZm8sIHRhcmdldF9pbmZvX2ZpeHR1cmVfdGVhcmRvd24p
OworI2VuZGlmCisgICAgICAgICAgICAgICAKKyAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKK30K
KworI2Vsc2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIGdfY3Jp
dGljYWwoIllvdSB3aWxsIG5lZWQgYXQgbGVhc3QgR1RLKyAyLjE0LjAgdG8gcnVuIHRoZSB1bml0
IHRlc3RzLiIpOworICAgIHJldHVybiAwOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKaW5kZXggNTE3MzY4Mi4uMDM4YjU0NSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKQEAgLTYyLDExICs2MiwxMyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVu
dEd0ay5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIlBh
c3RlYm9hcmRIZWxwZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIK
ICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1
ZGUgPHd0Zi9HT3duUHRyLmg+CkBAIC0zOTExLDMgKzM5MTMsMzkgQEAgR0xpc3QqIHdlYmtpdF93
ZWJfdmlld19nZXRfc3VicmVzb3VyY2VzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgR0xp
c3QqIHN1YlJlc291cmNlcyA9IGdfaGFzaF90YWJsZV9nZXRfdmFsdWVzKHByaXYtPnN1YlJlc291
cmNlcyk7CiAgICAgcmV0dXJuIGdfbGlzdF9yZW1vdmUoc3ViUmVzb3VyY2VzLCBwcml2LT5tYWlu
UmVzb3VyY2UpOwogfQorCisvKiBGcm9tIEV2ZW50SGFuZGxlci5jcHAgKi8KK3N0YXRpYyBJbnRQ
b2ludCBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBJbnRQ
b2ludCYgd2luZG93UG9pbnQpCit7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXco
KTsKKyAgICAvLyBGSVhNRTogSXMgaXQgcmVhbGx5IE9LIHRvIHVzZSB0aGUgd3JvbmcgY29vcmRp
bmF0ZXMgaGVyZSB3aGVuIHZpZXcgaXMgMD8KKyAgICAvLyBIaXN0b3JpY2FsbHkgdGhlIGNvZGUg
d291bGQganVzdCBjcmFzaDsgdGhpcyBpcyBjbGVhcmx5IG5vIHdvcnNlIHRoYW4gdGhhdC4KKyAg
ICByZXR1cm4gdmlldyA/IHZpZXctPndpbmRvd1RvQ29udGVudHMod2luZG93UG9pbnQpIDogd2lu
ZG93UG9pbnQ7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF90YXJnZXRfaW5mbzoK
KyAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAZXZlbnQ6IGEgI0dka0V2ZW50QnV0
dG9uCisgKiAKKyAqIERvZXMgYSAnaGl0IHRlc3QnIGluIHRoZSBjb29yZGluYXRlcyBzcGVjaWZp
ZWQgYnkgQGV2ZW50IHRvIGZpZ3VyZQorICogb3V0IGNvbnRleHQgaW5mb3JtYXRpb24gYWJvdXQg
dGhhdCBwb3NpdGlvbiBpbiB0aGUgQHdlYlZpZXcuCisgKiAKKyAqIFJldHVybnM6IGEgbmV3bHkg
Y3JlYXRlZCAjV2ViS2l0VGFyZ2V0SW5mbyB3aXRoIHRoZSBjb250ZXh0IG9mIHRoZQorICogc3Bl
Y2lmaWVkIHBvc2l0aW9uLgorICoKKyAqIFNpbmNlOiAxLjEuMTUKKyAqKi8KK1dlYktpdFRhcmdl
dEluZm8qIHdlYmtpdF93ZWJfdmlld19nZXRfdGFyZ2V0X2luZm8oV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgR2RrRXZlbnRCdXR0b24qIGV2ZW50KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgTlVMTCk7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoZXZlbnQsIE5VTEwpOworCisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQg
PSBQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQpOworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Vi
VmlldyktPm1haW5GcmFtZSgpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJl
cXVlc3Q6OkFjdGl2ZSk7CisgICAgSW50UG9pbnQgZG9jdW1lbnRQb2ludCA9IGRvY3VtZW50UG9p
bnRGb3JXaW5kb3dQb2ludChmcmFtZSwgbW91c2VFdmVudC5wb3MoKSk7CisgICAgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNl
RXZlbnQocmVxdWVzdCwgZG9jdW1lbnRQb2ludCwgbW91c2VFdmVudCk7CisKKyAgICByZXR1cm4g
d2Via2l0X3RhcmdldF9pbmZvX25ld19mcm9tX2NvcmVfaGl0X3Rlc3RfcmVzdWx0KG1ldi5oaXRU
ZXN0UmVzdWx0KCkpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCmluZGV4IDk2OGI3NGUu
LjNjYmJiNTIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAor
KysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKQEAgLTM2Myw2ICszNjMsOSBA
QCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3ZpZXdfc291cmNlX21vZGUgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgKndlYl92aWV3LAogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dl
Yl92aWV3X2dldF92aWV3X3NvdXJjZV9tb2RlICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgV2ViS2l0VGFyZ2V0SW5mbyoKK3dlYmtpdF93
ZWJfdmlld19nZXRfdGFyZ2V0X2luZm8gICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAqd2ViVmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZGtFdmVudEJ1dHRvbiAgICAgICAqZXZlbnQpOwogR19FTkRfREVDTFMKIAogI2Vu
ZGlmCi0tIAoxLjYuNC4yCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40181</attachid>
            <date>2009-09-26 15:13:31 -0700</date>
            <delta_ts>2009-12-18 13:45:05 -0800</delta_ts>
            <desc>Conditionalize font menu item, omit spell check</desc>
            <filename>context.diff</filename>
            <type>text/plain</type>
            <size>1636</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKaW5kZXggMjFmYTdkZi4uY2ExOTliYiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9Db250ZXh0TWVudS5jcHAKQEAgLTQ0NCw5ICs0NDQsMTAgQEAgdm9pZCBDb250ZXh0TWVudTo6
cG9wdWxhdGUoKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU2Vh
cmNoU3BvdGxpZ2h0SXRlbSk7CiAjZW5kaWYKKyNpZiAhUExBVEZPUk0oR1RLKQogICAgICAgICAg
ICAgYXBwZW5kSXRlbShTZWFyY2hXZWJJdGVtKTsKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNl
cGFyYXRvckl0ZW0oKSk7Ci0gICAgIAorI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAg
ICAgICAgYXBwZW5kSXRlbShMb29rSW5EaWN0aW9uYXJ5SXRlbSk7CiAgICAgICAgICAgICBhcHBl
bmRJdGVtKCpzZXBhcmF0b3JJdGVtKCkpOwpAQCAtNDYzLDYgKzQ2NCwxNSBAQCB2b2lkIENvbnRl
eHRNZW51Ojpwb3B1bGF0ZSgpCiAjZW5kaWYKIAogICAgICAgICBpZiAoIWluUGFzc3dvcmRGaWVs
ZCkgeworI2lmIFBMQVRGT1JNKEdUSykKKyAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkt
PmNhbkVkaXRSaWNobHkoKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRv
ckl0ZW0oKSk7CisgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtICBGb250TWVudUl0ZW0o
U3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51LCAKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKSk7CisgICAgICAgICAgICAgICAgY3Jl
YXRlQW5kQXBwZW5kRm9udFN1Yk1lbnUobV9oaXRUZXN0UmVzdWx0LCBGb250TWVudUl0ZW0pOwor
ICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oRm9udE1lbnVJdGVtKTsKKyAgICAgICAgICAgIH0K
KyNlbHNlCiAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCkpOwogI2lmbmRl
ZiBCVUlMRElOR19PTl9USUdFUgogICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIFNwZWxsaW5n
QW5kR3JhbW1hck1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGlu
Z01lbnUsIApAQCAtNDg5LDYgKzQ5OSw3IEBAIHZvaWQgQ29udGV4dE1lbnU6OnBvcHVsYXRlKCkK
ICAgICAgICAgICAgICAgICBjb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpKTsKICAgICAgICAg
ICAgIGNyZWF0ZUFuZEFwcGVuZEZvbnRTdWJNZW51KG1faGl0VGVzdFJlc3VsdCwgRm9udE1lbnVJ
dGVtKTsKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oRm9udE1lbnVJdGVtKTsKKyNlbmRpZgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBTcGVlY2hNZW51SXRl
bShTdWJtZW51VHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVudSwgY29udGV4dE1lbnVJ
dGVtVGFnU3BlZWNoTWVudSgpKTsKICAgICAgICAgICAgIGNyZWF0ZUFuZEFwcGVuZFNwZWVjaFN1
Yk1lbnUobV9oaXRUZXN0UmVzdWx0LCBTcGVlY2hNZW51SXRlbSk7Cg==
</data>
<flag name="review"
          id="21368"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40186</attachid>
            <date>2009-09-26 17:07:59 -0700</date>
            <delta_ts>2009-09-28 01:07:15 -0700</delta_ts>
            <desc>Add &quot;frame&quot; property to HitTestResult</desc>
            <filename>hitresult-frame.diff</filename>
            <type>text/plain</type>
            <size>3819</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwIGIv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKaW5kZXggYmU5NzkzMy4u
YWVmMDdiNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3Vs
dC5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKQEAg
LTQwLDYgKzQwLDcgQEAgR19ERUZJTkVfVFlQRShXZWJLaXRIaXRUZXN0UmVzdWx0LCB3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0LCBHX1RZUEVfT0JKRUNUKQogCiBzdHJ1Y3QgX1dlYktpdEhpdFRlc3RS
ZXN1bHRQcml2YXRlIHsKICAgICBndWludCBjb250ZXh0OworICAgIFdlYktpdFdlYkZyYW1lKiBm
cmFtZTsKICAgICBjaGFyKiBsaW5rVVJJOwogICAgIGNoYXIqIGltYWdlVVJJOwogICAgIGNoYXIq
IG1lZGlhVVJJOwpAQCAtNTEsNiArNTIsNyBAQCBlbnVtIHsKICAgICBQUk9QXzAsCiAKICAgICBQ
Uk9QX0NPTlRFWFQsCisgICAgUFJPUF9GUkFNRSwKICAgICBQUk9QX0xJTktfVVJJLAogICAgIFBS
T1BfSU1BR0VfVVJJLAogICAgIFBST1BfTUVESUFfVVJJCkBAIC02MSw2ICs2Myw3IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQog
ICAgIFdlYktpdEhpdFRlc3RSZXN1bHQqIHdlYl9oaXRfdGVzdF9yZXN1bHQgPSBXRUJLSVRfSElU
X1RFU1RfUkVTVUxUKG9iamVjdCk7CiAgICAgV2ViS2l0SGl0VGVzdFJlc3VsdFByaXZhdGUqIHBy
aXYgPSB3ZWJfaGl0X3Rlc3RfcmVzdWx0LT5wcml2OwogCisgICAgZ19vYmplY3RfdW5yZWYocHJp
di0+ZnJhbWUpOwogICAgIGdfZnJlZShwcml2LT5saW5rVVJJKTsKICAgICBnX2ZyZWUocHJpdi0+
aW1hZ2VVUkkpOwogICAgIGdfZnJlZShwcml2LT5tZWRpYVVSSSk7CkBAIC03Nyw2ICs4MCw5IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X3Byb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJCiAgICAgY2FzZSBQUk9QX0NPTlRFWFQ6CiAgICAgICAg
IGdfdmFsdWVfc2V0X2ZsYWdzKHZhbHVlLCBwcml2LT5jb250ZXh0KTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0ZSQU1FOgorICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUs
IHByaXYtPmZyYW1lKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0xJTktfVVJJOgog
ICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPmxpbmtVUkkpOwogICAgICAg
ICBicmVhazsKQEAgLTEwMCw2ICsxMDYsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SQogICAg
IGNhc2UgUFJPUF9DT05URVhUOgogICAgICAgICBwcml2LT5jb250ZXh0ID0gZ192YWx1ZV9nZXRf
ZmxhZ3ModmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRlJBTUU6CisgICAg
ICAgIHByaXYtPmZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2ViRnJhbWUqPihnX3ZhbHVlX2R1
cF9vYmplY3QodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0xJTktfVVJJ
OgogICAgICAgICBnX2ZyZWUgKHByaXYtPmxpbmtVUkkpOwogICAgICAgICBwcml2LT5saW5rVVJJ
ID0gZ192YWx1ZV9kdXBfc3RyaW5nKHZhbHVlKTsKQEAgLTE0Myw2ICsxNTIsMjAgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jbGFzc19pbml0KFdlYktpdEhpdFRlc3RSZXN1
bHRDbGFzcyogd2ViSGl0VGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oKFdFQktJVF9QQVJBTV9S
RUFEV1JJVEV8R19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKSk7CiAKICAgICAvKioKKyAgICAgKiBX
ZWJLaXRIaXRUZXN0UmVzdWx0OmZyYW1lOgorICAgICAqCisgICAgICogVGhlIGZyYW1lIGF0IHRo
ZSBwb3NpdGlvbiBvZiB0aGUgdGFyZ2V0LgorICAgICAqCisgICAgICogU2luY2U6IDEuMS4xNgor
ICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3Ms
IFBST1BfQ09OVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19vYmplY3QoImZyYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJGcmFtZSIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlRoZSBmcmFtZSBhdCB0aGUgcG9z
aXRpb24gb2YgdGhlIHRhcmdldCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9GUkFNRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxH
UGFyYW1GbGFncz4oKFdFQktJVF9QQVJBTV9SRUFEV1JJVEV8R19QQVJBTV9DT05TVFJVQ1RfT05M
WSkpKSk7CisKKyAgICAvKioKICAgICAgKiBXZWJLaXRIaXRUZXN0UmVzdWx0OmxpbmstdXJpOgog
ICAgICAqCiAgICAgICogVGhlIFVSSSB0byB3aGljaCB0aGUgdGFyZ2V0IHRoYXQgcmVjZWl2ZWQg
dGhlIGV2ZW50IHBvaW50cywgaWYgYW55LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0cHJpdmF0ZS5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcApp
bmRleCA0NDI1ZGNkLi5iNmIyODgxIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcApA
QCAtMTIwLDYgKzEyMCw3IEBAIFdlYkNvcmU6OkVkaXRpbmdCZWhhdmlvciBjb3JlKFdlYktpdEVk
aXRpbmdCZWhhdmlvciB0eXBlKQogV2ViS2l0SGl0VGVzdFJlc3VsdCoga2l0KGNvbnN0IFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKIHsKICAgICBndWludCBjb250ZXh0ID0gV0VCS0lU
X0hJVF9URVNUX1JFU1VMVF9DT05URVhUX0RPQ1VNRU5UOworICAgIFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSA9IHJlc3VsdC5pbm5lck5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICBHT3du
UHRyPGNoYXI+IGxpbmtVUkkoMCk7CiAgICAgR093blB0cjxjaGFyPiBpbWFnZVVSSSgwKTsKICAg
ICBHT3duUHRyPGNoYXI+IG1lZGlhVVJJKDApOwpAQCAtMTQ5LDYgKzE1MCw3IEBAIFdlYktpdEhp
dFRlc3RSZXN1bHQqIGtpdChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmstdXJpIiwgbGlu
a1VSSS5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aW1hZ2UtdXJpIiwgaW1hZ2VVUkkuZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIm1lZGlhLXVyaSIsIG1lZGlhVVJJLmdldCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZSIsIGtpdChmcmFtZSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRleHQiLCBjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKTsKIH0K
</data>
<flag name="review"
          id="21371"
          type_id="1"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45144</attachid>
            <date>2009-12-18 04:39:20 -0800</date>
            <delta_ts>2009-12-18 05:31:26 -0800</delta_ts>
            <desc>Omit the SearchWeb item in the GTK+ port</desc>
            <filename>omitsearchweb.diff</filename>
            <type>text/plain</type>
            <size>1070</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzIwZjMzYy4uZjJmNTRkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0xMi0xOCAgQ2hyaXN0aWFuIER5
d2FuICA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBFZGl0aW5nIGNhcGFiaWxpdGllcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTYKKworICAgICAg
ICBPbWl0IFNlYXJjaFdlYiBmcm9tIHRoZSBjb250ZXh0IG1lbnUgaW4gdGhlIEdUSysgcG9ydC4K
KworICAgICAgICAqIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRNZW51Ojpwb3B1bGF0ZSk6CisKIDIwMDktMTItMTggIEJlbmphbWluIE90dGUgIDxv
dHRlQGdub21lLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2ls
dmEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCmluZGV4IDc3MTc5OGEuLmUyYmVmNzEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vQ29udGV4dE1lbnUuY3BwCkBAIC00NDUsOCArNDQ1LDEwIEBAIHZvaWQgQ29udGV4dE1l
bnU6OnBvcHVsYXRlKCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgICAgICBhcHBlbmRJdGVt
KFNlYXJjaFNwb3RsaWdodEl0ZW0pOwogI2VuZGlmCisjaWYgIVBMQVRGT1JNKEdUSykKICAgICAg
ICAgICAgIGFwcGVuZEl0ZW0oU2VhcmNoV2ViSXRlbSk7CiAgICAgICAgICAgICBhcHBlbmRJdGVt
KCpzZXBhcmF0b3JJdGVtKCkpOworI2VuZGlmCiAgICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICAgICAgICAgIGFwcGVuZEl0ZW0oTG9va0luRGljdGlvbmFyeUl0ZW0pOwo=
</data>
<flag name="review"
          id="27123"
          type_id="1"
          status="+"
          setter="gustavo"
    />
    <flag name="commit-queue"
          id="27124"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45145</attachid>
            <date>2009-12-18 05:31:26 -0800</date>
            <delta_ts>2009-12-18 05:52:20 -0800</delta_ts>
            <desc>Omit the SearchWeb item in the GTK+ port #2</desc>
            <filename>omitsearchweb.diff</filename>
            <type>text/plain</type>
            <size>1093</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzIwZjMzYy4uYzJiZDAyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0xMi0xOCAgQ2hyaXN0aWFuIER5
d2FuICA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBjb250ZXh0IG1lbnUgb3ZlcnJpZGluZyBBUEkg
aXMgdmVyeSBsaW1pdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzU0NgorCisgICAgICAgIE9taXQgU2VhcmNoV2ViIGZyb20gdGhlIGNvbnRleHQg
bWVudSBpbiB0aGUgR1RLKyBwb3J0LgorCisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6OnBvcHVsYXRlKToKKwogMjAwOS0x
Mi0xOCAgQmVuamFtaW4gT3R0ZSAgPG90dGVAZ25vbWUub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Q29udGV4dE1lbnUuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKaW5kZXgg
NzcxNzk4YS4uZTJiZWY3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVu
dS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKQEAgLTQ0NSw4ICs0
NDUsMTAgQEAgdm9pZCBDb250ZXh0TWVudTo6cG9wdWxhdGUoKQogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU2VhcmNoU3BvdGxpZ2h0SXRlbSk7CiAjZW5kaWYKKyNp
ZiAhUExBVEZPUk0oR1RLKQogICAgICAgICAgICAgYXBwZW5kSXRlbShTZWFyY2hXZWJJdGVtKTsK
ICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSk7CisjZW5kaWYKICAgICAg
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAgICAgYXBwZW5kSXRlbShMb29rSW5EaWN0aW9u
YXJ5SXRlbSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45146</attachid>
            <date>2009-12-18 05:52:20 -0800</date>
            <delta_ts>2009-12-18 12:43:59 -0800</delta_ts>
            <desc>Omit the SearchWeb item in the GTK+ port #3</desc>
            <filename>omitsearchweb.diff</filename>
            <type>text/plain</type>
            <size>2109</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzIwZjMzYy4uYzJiZDAyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0xMi0xOCAgQ2hyaXN0aWFuIER5
d2FuICA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBjb250ZXh0IG1lbnUgb3ZlcnJpZGluZyBBUEkg
aXMgdmVyeSBsaW1pdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzU0NgorCisgICAgICAgIE9taXQgU2VhcmNoV2ViIGZyb20gdGhlIGNvbnRleHQg
bWVudSBpbiB0aGUgR1RLKyBwb3J0LgorCisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6OnBvcHVsYXRlKToKKwogMjAwOS0x
Mi0xOCAgQmVuamFtaW4gT3R0ZSAgPG90dGVAZ25vbWUub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Q29udGV4dE1lbnUuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKaW5kZXgg
NzcxNzk4YS4uMjAwNTYwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVu
dS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKQEAgLTI3Niw3ICsy
NzYsOSBAQCB2b2lkIENvbnRleHRNZW51Ojpwb3B1bGF0ZSgpCiAgICAgQ29udGV4dE1lbnVJdGVt
IExvb2tJbkRpY3Rpb25hcnlJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0xvb2tV
cEluRGljdGlvbmFyeSwgCiAgICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlv
bmFyeSgpKTsKICNlbmRpZgorI2lmICFQTEFURk9STShHVEspCiAgICAgQ29udGV4dE1lbnVJdGVt
IFNlYXJjaFdlYkl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViLCBj
b250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIoKSk7CisjZW5kaWYKICAgICBDb250ZXh0TWVudUl0
ZW0gQ29weUl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnQ29weSwgY29udGV4dE1l
bnVJdGVtVGFnQ29weSgpKTsKICAgICBDb250ZXh0TWVudUl0ZW0gQmFja0l0ZW0oQWN0aW9uVHlw
ZSwgQ29udGV4dE1lbnVJdGVtVGFnR29CYWNrLCBjb250ZXh0TWVudUl0ZW1UYWdHb0JhY2soKSk7
CiAgICAgQ29udGV4dE1lbnVJdGVtIEZvcndhcmRJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ0dvRm9yd2FyZCwgIGNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpKTsKQEAgLTM0
MSw4ICszNDMsMTAgQEAgdm9pZCBDb250ZXh0TWVudTo6cG9wdWxhdGUoKQogI2lmIFBMQVRGT1JN
KE1BQykKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShTZWFyY2hTcG90bGlnaHRJdGVt
KTsKICNlbmRpZgorI2lmICFQTEFURk9STShHVEspCiAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZEl0ZW0oU2VhcmNoV2ViSXRlbSk7CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNl
cGFyYXRvckl0ZW0oKSk7CisjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZEl0ZW0oTG9va0luRGljdGlvbmFyeUl0ZW0pOwogICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCkpOwpAQCAtNDQ1LDggKzQ0OSwxMCBAQCB2
b2lkIENvbnRleHRNZW51Ojpwb3B1bGF0ZSgpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAg
ICAgYXBwZW5kSXRlbShTZWFyY2hTcG90bGlnaHRJdGVtKTsKICNlbmRpZgorI2lmICFQTEFURk9S
TShHVEspCiAgICAgICAgICAgICBhcHBlbmRJdGVtKFNlYXJjaFdlYkl0ZW0pOwogICAgICAgICAg
ICAgYXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRlbSgpKTsKKyNlbmRpZgogICAgICAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgICAgICAgICBhcHBlbmRJdGVtKExvb2tJbkRpY3Rpb25hcnlJdGVtKTsK
</data>
<flag name="review"
          id="27127"
          type_id="1"
          status="+"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45177</attachid>
            <date>2009-12-18 13:17:36 -0800</date>
            <delta_ts>2009-12-31 12:04:18 -0800</delta_ts>
            <desc>Only show the Font menu item in rich text areas</desc>
            <filename>condfont.diff</filename>
            <type>text/plain</type>
            <size>1980</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjgxZjBiYi4uZDAzMzlmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAwOS0xMi0xOCAgQ2hyaXN0aWFuIER5
d2FuICA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBjb250ZXh0IG1lbnUgb3ZlcnJpZGluZyBBUEkg
aXMgdmVyeSBsaW1pdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzU0NgorCisgICAgICAgIE9ubHkgc2hvdyBmb250IG1lbnUgaXRlbXMgaW4gcmlj
aCB0ZXh0IGFyZWFzIGluIHRoZSBHVEsrIHBvcnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250
ZXh0TWVudS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudTo6cG9wdWxhdGUpOgor
CisyMDA5LTEyLTE4ICBDaHJpc3RpYW4gRHl3YW4gIDxjaHJpc3RpYW5AdHdvdG9hc3RzLmRlPgor
CiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KIAogICAgICAgICBbR1RLXSBjb250ZXh0
IG1lbnUgb3ZlcnJpZGluZyBBUEkgaXMgdmVyeSBsaW1pdGVkCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUu
Y3BwCmluZGV4IDIwMDU2MGUuLmM2ZTRhNmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Q29udGV4dE1lbnUuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCkBA
IC00OTIsMTAgKzQ5MiwxNyBAQCB2b2lkIENvbnRleHRNZW51Ojpwb3B1bGF0ZSgpCiAgICAgICAg
ICAgICBjcmVhdGVBbmRBcHBlbmRUcmFuc2Zvcm1hdGlvbnNTdWJNZW51KG1faGl0VGVzdFJlc3Vs
dCwgdHJhbnNmb3JtYXRpb25zTWVudUl0ZW0pOwogICAgICAgICAgICAgYXBwZW5kSXRlbSh0cmFu
c2Zvcm1hdGlvbnNNZW51SXRlbSk7CiAjZW5kaWYKLSAgICAgICAgICAgIENvbnRleHRNZW51SXRl
bSAgRm9udE1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSwg
Ci0gICAgICAgICAgICAgICAgY29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKSk7Ci0gICAgICAg
ICAgICBjcmVhdGVBbmRBcHBlbmRGb250U3ViTWVudShtX2hpdFRlc3RSZXN1bHQsIEZvbnRNZW51
SXRlbSk7Ci0gICAgICAgICAgICBhcHBlbmRJdGVtKEZvbnRNZW51SXRlbSk7CisjaWYgUExBVEZP
Uk0oR1RLKQorICAgICAgICAgICAgYm9vbCBzaG91bGRTaG93Rm9udE1lbnUgPSBmcmFtZS0+ZWRp
dG9yKCktPmNhbkVkaXRSaWNobHkoKTsKKyNlbHNlCisgICAgICAgICAgICBib29sIHNob3VsZFNo
b3dGb250TWVudSA9IHRydWU7CisjZW5kaWYKKyAgICAgICAgICAgIGlmIChzaG91bGRTaG93Rm9u
dE1lbnUpIHsKKyAgICAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gRm9udE1lbnVJdGVtKFN1
Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSwgCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51KCkpOworICAgICAgICAgICAgICAgIGNyZWF0
ZUFuZEFwcGVuZEZvbnRTdWJNZW51KG1faGl0VGVzdFJlc3VsdCwgRm9udE1lbnVJdGVtKTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmRJdGVtKEZvbnRNZW51SXRlbSk7CisgICAgICAgICAgICB9CiAj
aWYgUExBVEZPUk0oTUFDKQogICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIFNwZWVjaE1lbnVJ
dGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51LCBjb250ZXh0TWVu
dUl0ZW1UYWdTcGVlY2hNZW51KCkpOwogICAgICAgICAgICAgY3JlYXRlQW5kQXBwZW5kU3BlZWNo
U3ViTWVudShtX2hpdFRlc3RSZXN1bHQsIFNwZWVjaE1lbnVJdGVtKTsK
</data>
<flag name="review"
          id="27159"
          type_id="1"
          status="+"
          setter="gustavo"
    />
    <flag name="commit-queue"
          id="27607"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45182</attachid>
            <date>2009-12-18 13:45:05 -0800</date>
            <delta_ts>2009-12-31 12:00:09 -0800</delta_ts>
            <desc>Don&apos;t show spell check menu items in the GTK+ port</desc>
            <filename>dontshowspell.diff</filename>
            <type>text/plain</type>
            <size>1428</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGFmY2U2NS4uMzk3NjhlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0xMi0xOCAgQ2hyaXN0aWFuIER5
d2FuICA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBjb250ZXh0IG1lbnUgb3ZlcnJpZGluZyBBUEkg
aXMgdmVyeSBsaW1pdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzU0NgorCisgICAgICAgIERvbid0IHNob3cgc3BlbGwgY2hlY2tpbmcgbWVudSBp
dGVtcyBpbiB0ZXh0IGFyZWFzIGluIHRoZSBHVEsrIHBvcnQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9Db250ZXh0TWVudS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudTo6cG9wdWxh
dGUpOgorCiAyMDA5LTEyLTE4ICBCZW5qYW1pbiBPdHRlICA8b3R0ZUBnbm9tZS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9Db250ZXh0TWVudS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcAppbmRl
eCAyMDA1NjBlLi5kYmEyODI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRN
ZW51LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcApAQCAtNDcyLDEw
ICs0NzIsMTIgQEAgdm9pZCBDb250ZXh0TWVudTo6cG9wdWxhdGUoKQogICAgICAgICBpZiAoIWlu
UGFzc3dvcmRGaWVsZCkgewogICAgICAgICAgICAgYXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRlbSgp
KTsKICNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKKyNpZiAhUExBVEZPUk0oR1RLKQogICAgICAg
ICAgICAgQ29udGV4dE1lbnVJdGVtIFNwZWxsaW5nQW5kR3JhbW1hck1lbnVJdGVtKFN1Ym1lbnVU
eXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUsIAogICAgICAgICAgICAgICAgIGNv
bnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSgpKTsKICAgICAgICAgICAgIGNyZWF0ZUFuZEFw
cGVuZFNwZWxsaW5nQW5kR3JhbW1hclN1Yk1lbnUobV9oaXRUZXN0UmVzdWx0LCBTcGVsbGluZ0Fu
ZEdyYW1tYXJNZW51SXRlbSk7CiAgICAgICAgICAgICBhcHBlbmRJdGVtKFNwZWxsaW5nQW5kR3Jh
bW1hck1lbnVJdGVtKTsKKyNlbmRpZgogI2Vsc2UKICAgICAgICAgICAgIENvbnRleHRNZW51SXRl
bSBTcGVsbGluZ01lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGlu
Z01lbnUsIAogICAgICAgICAgICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSgp
KTsK
</data>
<flag name="review"
          id="27164"
          type_id="1"
          status="+"
          setter="gustavo"
    />
    <flag name="commit-queue"
          id="27608"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>