<?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>16562</bug_id>
          
          <creation_ts>2007-12-21 13:54:40 -0800</creation_ts>
          <short_desc>[gtk] Implement WebPolicyDelegate methods</short_desc>
          <delta_ts>2008-12-31 07:51:32 -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>Linux</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>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>17115</dependson>
    
    <dependson>19171</dependson>
          <blocked>14141</blocked>
    
    <blocked>16092</blocked>
    
    <blocked>16826</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</reporter>
          <assigned_to name="Marco Barisione">marco.barisione</assigned_to>
          <cc>alp</cc>
    
    <cc>a.renevier</cc>
    
    <cc>christian</cc>
    
    <cc>cosimoc</cc>
    
    <cc>gustavo</cc>
    
    <cc>lars</cc>
    
    <cc>lethalman88</cc>
    
    <cc>martin.sourada</cc>
    
    <cc>msrinirao</cc>
    
    <cc>naiem.shaik</cc>
    
    <cc>uws+webkit</cc>
    
    <cc>xclaesse</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>64989</commentid>
    <comment_count>0</comment_count>
    <who name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</who>
    <bug_when>2007-12-21 13:54:40 -0800</bug_when>
    <thetext>Only the NavigationAction delegate method is implemented.  MimeType and NewWindow are missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64991</commentid>
    <comment_count>1</comment_count>
      <attachid>18040</attachid>
    <who name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</who>
    <bug_when>2007-12-21 14:07:05 -0800</bug_when>
    <thetext>Created attachment 18040
Suggested implementation

Open to discussion!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66225</commentid>
    <comment_count>2</comment_count>
      <attachid>18276</attachid>
    <who name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</who>
    <bug_when>2008-01-04 14:01:17 -0800</bug_when>
    <thetext>Created attachment 18276
Applied some comments

bdash suggested, with reason, that the mime-type-requested signal name was not clear, we settled on mime-type-policy-decision-requested.  Since new-window-requested and navigation-requested are clear this way, I won&apos;t change them although we loose on consistency.

I removed the _real_mime_type function to place the default behavior in FrameLoaderClientGtk::dispatchDecidePolicyForMIMEType instead.  This is the only place the signal is emitted, it makes sens to me.  

I added WEBKIT_POLICY_RESPONSE_NULL to allow an handler to return an error or force the default behavior.  Also, when there is no handler to mime-type-policy-decision-requested, the return value defaults to WEBKIT_POLICY_RESPONSE_NULL which will trigger the default behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66443</commentid>
    <comment_count>3</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-01-07 05:32:17 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=18276) [edit]
&gt; Applied some comments

&gt; I added WEBKIT_POLICY_RESPONSE_NULL to allow an handler to return an error or
&gt; force the default behavior.  Also, when there is no handler to
&gt; mime-type-policy-decision-requested, the return value defaults to
&gt; WEBKIT_POLICY_RESPONSE_NULL which will trigger the default behavior.

This feels a bit ugly to me. For once _RESPONSE_NULL does not have any obvious meaning and your implementation allows a client to ACCEPT input that the webview can not handle.

What about using ACCEPT as the default policy, which is automatically replaced by DOWNLOAD if it cannot be displayed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66459</commentid>
    <comment_count>4</comment_count>
    <who name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</who>
    <bug_when>2008-01-07 09:03:42 -0800</bug_when>
    <thetext>For default behavior, each three delegates have their own.  Mime-type-policy-deicision-request has the most complex one of the three.  I needed a default value (ie. 0) to check if an handler has been run.  I&apos;ll see if there are other ways to do this in GObjects. 

If _ACCEPT is sent on something that webkit can&apos;t handle, the content of the file will be displayed... it is also the current behavior if I&apos;m not mistaken and it is correct IMHO.

I do have to admit _NULL doesn&apos;t state the behavior.  _RESPONSE_NONE or _RESPONSE_ERROR might be more explicit.  I think there is a need for a fallback response, may it be ERROR or NONE.  When receiving such response, the default behavior would apply as if the signal had not be handled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66699</commentid>
    <comment_count>5</comment_count>
      <attachid>18357</attachid>
    <who name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</who>
    <bug_when>2008-01-09 16:19:24 -0800</bug_when>
    <thetext>Created attachment 18357
Small improvements and a fix

I changed _NULL to _ERROR for a more explicit signification and it matches WebPolicyDecisionListener.

Also included: webkit_web_view_can_show_mime_type() which should be used by policy handle to determine what to do with a MIME type.

I removed the signal handling in main.c as it didn&apos;t make much sens in this patch.  Removing it made me discover a bug in RessourceHandleManager.  If a ressource get a PolicyIgnore, Curl would crash as the easy handle would have been cleaned up during its processing.  Using the delayed cancel for all jobs solves this issue (said fix included in this patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66780</commentid>
    <comment_count>6</comment_count>
      <attachid>18372</attachid>
    <who name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</who>
    <bug_when>2008-01-10 12:56:32 -0800</bug_when>
    <thetext>Created attachment 18372
Removed the fix 

Removed the fix since it is already fixed and corrected my Engrish.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66806</commentid>
    <comment_count>7</comment_count>
      <attachid>18372</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-01-10 14:29:05 -0800</bug_when>
    <thetext>Comment on attachment 18372
Removed the fix 

&gt;+    g_print(&quot; %d \n&quot;, response);

Better remove that.

&gt;+bool FrameLoaderClient::canShowMIMEType(const String&amp; type) const 
&gt;+{ 
&gt;+    // FIXME: add supported mimestypes of plugins

s/mimestypes/mimetypes

&gt;+    g_print(&quot;DEBUG&quot;);

Better remove that as well.

&gt;+static WebKitPolicyResponse webkit_web_view_real_new_window_requested(WebKitWebView*, WebKitWebFrame* frame, WebKitNetworkRequest*)
&gt;+{
&gt;+    notImplemented();
&gt;+    // FIXME: Change this to accept once it is implemented

I wonder how that could be implemented at all. WebKit does not normally have any idea what a &apos;window&apos; is in the context of the client application.

&gt;+     * WebKitWebView::new-window-requested:
&gt;+     * @web_view: the object on which the signal is emitted
&gt;+     * @web_frame: the frame on which the action 
&gt;+     * @return: WEBKIT_POLICY_RESPONSE_ACCEPT to allow WebKit to display a new window,
&gt;+                WEBKIT_POLICY_RESPONSE_IGNORE not to display a new window
&gt;+     *
&gt;+     * Decides whether or not to allow a targeted navigation event, such as opening a link in a new window.
&gt;+     * The default behavior is to accept.

The default behavior is to ignore the request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66918</commentid>
    <comment_count>8</comment_count>
      <attachid>18394</attachid>
    <who name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</who>
    <bug_when>2008-01-11 09:49:40 -0800</bug_when>
    <thetext>Created attachment 18394
Applied comments and more

&quot;100 fois sur le métier remettez votre travail&quot; ;)

This version is more complete.  After reviewing Christian&apos;s comments, I figured the patch was missing the action information from WebPolicyDelegates.  This times, this patch includes it and in a way that the API won&apos;t break when we fully support all other action information.  

I tested a little new-window-requested.  This event only happens on links with a target.  I set it to the default ACCEPT, but there aren&apos;t any change on the behavior.  So it is unimplemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67602</commentid>
    <comment_count>9</comment_count>
      <attachid>18394</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-01-18 11:49:04 -0800</bug_when>
    <thetext>Comment on attachment 18394
Applied comments and more

The default logic in dispatchDecidePolicyForMIMEType doesn&apos;t quite match the Mac equivalent implementation.  You can find the Mac implementation in WebKit/mac/DefaultDelegates/WebDefaultPolicyDelegate.m.  The differences are in how file:/// are treated.

There is quite a bit of code duplication between new-window-requested and navigation-requested.  It would be good to remove some of the redundancy here.

If webkit_web_view_real_new_window_requested is the default implementation, I don&apos;t think it needs to have a notImplemented().

There are some coding style issues present too.  In some places you have the { on the incorrect line, and are missing spaces between &quot;if&quot; and the &quot;(&quot;.  There are places where you have an &quot;else&quot; immediately after an &quot;if&quot; that always returns.

 703     // FIXME: add supported mimestypes of plugins

Should probably be &quot;Add mime types supported by plugins.&quot;


Alp should probably look over this from an API point of view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67865</commentid>
    <comment_count>10</comment_count>
      <attachid>18579</attachid>
    <who name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</who>
    <bug_when>2008-01-21 12:36:04 -0800</bug_when>
    <thetext>Created attachment 18579
Applied comments and more

Applied bdash&apos;s comments.  Too many parts in the API are missing right now to implement webkit_web_view_real_navigation_requested&apos;s default behavior.

I also changed webkit_navigation_request_handled so that the signal propagation stops on ACCEPT and IGNORE which can both be valid response.  If an handler wants to delegate the handling, it should return ERROR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67951</commentid>
    <comment_count>11</comment_count>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-22 09:49:55 -0800</bug_when>
    <thetext>I&apos;ve this suggestion:
1) Do not create specific responses
2) Create only one general response holding a callback, a data and an enum for different response types

WebKitPolicy object is a GClosure.
&quot;authentication-received&quot; is created with g_signal_accumulator_true_handled.

Usage in the auth:

WEBKIT_AUTHENTICATION_RESPONSE_USE,
WEBKIT_AUTHENTICATION_RESPONSE_CONTINUE_WITHOUT_CREDENTIAL,
WEBKIT_AUTHENTICATION_RESPONSE_CANCEL

static authenticationChallengeResponseCb(WebKitPolicy*, int response, gpointer data) {
...
}

FrameLoaderClient::dispatchDidReceiveAuthenticationChallenge(...)
WebKitPolicy* policy = webkit_policy_new(authenticationChallengeResponseCb, data);
signal_emit_(&quot;authentication-received&quot;, ..., policy);
}

webkit_web_view_real_authentication_received(..., WebKitPolicy* policy) {
...
webkit_policy_response(WEBKIT_AUTHENTICATION_RESPONSE_USE);
or
webkit_policy_response(WEBKIT_AUTHENTICATION_RESPONSE_CONTINUE_WITHOUT_CREDENTIAL);
or
webkit_policy_response(WEBKIT_AUTHENTICATION_RESPONSE_CANCEL);
}

If someone connected to the signal does its job just like real_authentication_received do and can return TRUE to stop other handlers (including the the _real_ which would be the default behavior) from being invoked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67974</commentid>
    <comment_count>12</comment_count>
      <attachid>18603</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-22 13:00:46 -0800</bug_when>
    <thetext>Created attachment 18603
async proof

This is a proof which shows how to handle authentication asyncronously using the ResponseListener.
Note that ResponseListener can be used by any other response type.
Conclusion: don&apos;t read the code that creates the GUI for the authentication dialog :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69614</commentid>
    <comment_count>13</comment_count>
      <attachid>18970</attachid>
    <who name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</who>
    <bug_when>2008-02-06 15:26:44 -0800</bug_when>
    <thetext>Created attachment 18970
New Async version

See Changelog for details and limitations.

Please apply and try this.  If I have no comments by Friday, I&apos;ll set it up to be reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69615</commentid>
    <comment_count>14</comment_count>
      <attachid>18971</attachid>
    <who name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</who>
    <bug_when>2008-02-06 15:28:22 -0800</bug_when>
    <thetext>Created attachment 18971
Some UI that may help testing

This patch contains some dialog window I used to test the signals.  Note that redirection navigation evens needs to be sync so you will for sure have an assertion using this patch when visiting www.google.com outside US.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69630</commentid>
    <comment_count>15</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-02-06 17:39:48 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Please apply and try this.  If I have no comments by Friday, I&apos;ll set it up to
&gt; be reviewed.

You should just mark it for review. Else nobody might think there&apos;s anything to look at.

I would like to know a) why asynch doesn&apos;t work for navigation and whether one can expect this to work in the future, and b) *if* this is not going to work anytime soon, I&apos;d think a simple callback with no PolicyDesision object is more reasonable since it&apos;s simpler and faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70406</commentid>
    <comment_count>16</comment_count>
    <who name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</who>
    <bug_when>2008-02-12 08:59:52 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; I would like to know a) why asynch doesn&apos;t work for navigation and whether one
&gt; can expect this to work in the future, and b) *if* this is not going to work
&gt; anytime soon, I&apos;d think a simple callback with no PolicyDecision object is more
&gt; reasonable since it&apos;s simpler and faster.

a) it does work, but not when the navigation request comes from a redirection.  Plus you have to return your answer before another policy started. As per WebCore limitation.
b) it does work within limited situations, the same than the mac port has AFAIK.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72744</commentid>
    <comment_count>17</comment_count>
      <attachid>19530</attachid>
    <who name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</who>
    <bug_when>2008-03-04 14:38:49 -0800</bug_when>
    <thetext>Created attachment 19530
Proposed patch

Fixes styling issues and apply suggested changes by Zecke:
- drop switch since the enums are sync;
- don&apos;t check for file existence;
- return instead of indenting lots of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77895</commentid>
    <comment_count>18</comment_count>
    <who name="Srinivas Rao M Hamse">msrinirao</who>
    <bug_when>2008-04-16 23:02:33 -0700</bug_when>
    <thetext>About the patch:
https://bugs.webkit.org/attachment.cgi?id=19530&amp;action=view

This patch file was not compatible with the latest nightlies(r31848). Hence i manually applied the those hunks that were failing to respective files. I could compile and build GtkLauncher. I was unable to open any new window/popup when i click on the following href links


&lt;html&gt;
&lt;body&gt;
HTML version

&lt;a href=&quot;a.html&quot; target=&quot;_blank&quot;&gt;Open window&lt;/a&gt;
&lt;br&gt;

Javascript version

&lt;a href=&quot;javascript:window.open(&apos;a.html&apos;, &apos;_blank&apos;)&quot;&gt;Open window&lt;/a&gt;

&lt;/body&gt;
&lt;/html&gt;

On the console i got the following error messages, This came only for the first time:

for HTML Version i got :

UNIMPLEMENTED:
(../WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp:770 virtual WebCore::Frame* WebKit::FrameLoaderClient::dispatchCreatePage())
UNIMPLEMENTED:
(../WebCore/page/gtk/EventHandlerGtk.cpp:85 bool WebCore::EventHandler::eventActivatedView(const WebCore::PlatformMouseEvent&amp;) const)


for JavaScript Version I got:

UNIMPLEMENTED:
(../WebKit/gtk/webkit/webkitwebview.cpp:488 void webkit_web_view_real_window_object_cleared(WebKitWebView*, WebKitWebFrame*, OpaqueJSContext*, OpaqueJSValue*))
UNIMPLEMENTED:
(../WebCore/platform/gtk/PlatformScreenGtk.cpp:73 WebCore::FloatRect WebCore::screenAvailableRect(WebCore::Widget*))
UNIMPLEMENTED:
(../WebKit/gtk/webkit/webkitwebview.cpp:481 WebKitWebView* webkit_web_view_real_create_web_view(WebKitWebView*))


Adding these logs as a reference to the author of this patch.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79825</commentid>
    <comment_count>19</comment_count>
      <attachid>21001</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-07 11:01:19 -0700</bug_when>
    <thetext>Created attachment 21001
Implement WebPolicyDelegate methods

Updated patch, I modified it so it can be applied and fixed a couple of problems.

How about replacing the action_information hash table with an object?

(Sorry but I cannot mark the old patch as obsolete as I didn&apos;t submit it)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81184</commentid>
    <comment_count>20</comment_count>
      <attachid>21288</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-22 04:24:06 -0700</bug_when>
    <thetext>Created attachment 21288
Implement WebPolicyDelegate methods

I removed the new-window-requested signal as it works only for links with target=_blank and doesn&apos;t seem as useful as the solution proposed in bug #19143. We can add it later if it&apos;s really needed.

The actionInformation hash table has been replaced with a WebKitWebNavigationAction class. Note that this classes as an enum property, so this patch dependes on bug #19171.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86271</commentid>
    <comment_count>21</comment_count>
    <who name="Wouter Bolsterlee">uws+webkit</who>
    <bug_when>2008-07-17 14:24:42 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; static authenticationChallengeResponseCb(WebKitPolicy*, int response, gpointer
&gt; data) {

The &apos;int response&apos; should probably something like &apos;enum WebKitResponseType&apos; from a GTK API point of view (cf. &apos;enum GtkResponseType&apos;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89541</commentid>
    <comment_count>22</comment_count>
      <attachid>21288</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-27 15:58:08 -0700</bug_when>
    <thetext>Comment on attachment 21288
Implement WebPolicyDelegate methods

Assigning to Alp for review for for re-assignment to someone who can review this.  It&apos;s silly to have this in the general queue since most of us have no clue about Gtk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92715</commentid>
    <comment_count>23</comment_count>
      <attachid>23794</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-09-25 07:31:11 -0700</bug_when>
    <thetext>Created attachment 23794
Implement WebPolicyDelegate methods

Updated patch that fix some issues find with a lot of more testing.

Note that this patch doesn&apos;t add function pointers for the new signals so we don&apos;t break ABI compatibility but they should be added when we break it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92977</commentid>
    <comment_count>24</comment_count>
      <attachid>23794</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-09-26 15:07:22 -0700</bug_when>
    <thetext>Comment on attachment 23794
Implement WebPolicyDelegate methods

Alp to review...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102132</commentid>
    <comment_count>25</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2008-12-10 12:59:17 -0800</bug_when>
    <thetext>+     * Decide whether or not to display of not the given MIME type.

lose the &apos;of not&apos;?

+     * If this signal is not handled, the default behavior is to show the
+     * content of the requested URI if WebKit can show this MIME type,
+     * else it will be ignored.

I&apos;m not a native speaker, but I think &apos;otherwise&apos; sounds better than &apos;else&apos; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102133</commentid>
    <comment_count>26</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2008-12-10 13:00:47 -0800</bug_when>
    <thetext>+typedef struct _WebKitWebPolicyDecisionPrivate WebKitWebPolicyDecisionPrivate;
+struct _WebKitWebPolicyDecision {
+    GObject parent;

parent_instance

+    WebKitWebPolicyDecisionPrivate* priv;
+};
+
+struct _WebKitWebPolicyDecisionClass {
+    GObjectClass parent;

parent_class

+};
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102134</commentid>
    <comment_count>27</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2008-12-10 13:03:57 -0800</bug_when>
    <thetext>+    g_object_class_install_property(objectClass, PROP_ORIGINAL_URI,
+                                    g_param_spec_string(&quot;original-uri&quot;,
+                                                        &quot;Original URI&quot;,
+                                                        &quot;The URI that was requested as the target for the navigation&quot;,
+                                                        &quot;&quot;,
+                                                        WEBKIT_PARAM_READWRITE));

Maybe you can make the property CONSTRUCT and save setting it in _init?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102141</commentid>
    <comment_count>28</comment_count>
      <attachid>25924</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-12-10 13:38:44 -0800</bug_when>
    <thetext>Created attachment 25924
patch reworked to apply cleanly

This is barisione&apos;s patch only with some minor &quot;editorial&quot; changes I had to do to make it apply and build in current WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102615</commentid>
    <comment_count>29</comment_count>
      <attachid>26036</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-12-15 16:37:45 -0800</bug_when>
    <thetext>Created attachment 26036
reworked patch, with changes proposed by Xan</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102659</commentid>
    <comment_count>30</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-12-16 06:55:51 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; Created an attachment (id=26036) [review]
&gt; reworked patch, with changes proposed by Xan

Can we obsolete the other patch in the review queue?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102824</commentid>
    <comment_count>31</comment_count>
      <attachid>23794</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-12-17 15:36:37 -0800</bug_when>
    <thetext>Comment on attachment 23794
Implement WebPolicyDelegate methods

This is obsoleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102833</commentid>
    <comment_count>32</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-12-17 16:22:34 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; Created an attachment (id=26036) [review]
&gt; reworked patch, with changes proposed by Xan

I will not finish a review today. So let me start with

style issues:
 -  /* and */ should be on separate lines (FrameLoaderClient::dispatchDecidePolicyForNewWindowAction). 
 - When I would do if (handled)\n return (as trained by aroben) you do it the otherway around but that is okay.

api doc comments:
 - I would be cool if you add /*&lt; private &gt;*/ in the Instance and Class of the new structs.
 - When referencing a signal you need the full path WebKitFoo:signal (and maybe even the #)


ref counting:
  - With the still open FrameLoaderClient bug we will work on the ref counting. In ~FrameLoaderClient() you might want to set the internal Frame of the WebPolicy to 0 and add null checks to the WebPolicy.


Let us accumulate the issues and then only do one final version before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103005</commentid>
    <comment_count>33</comment_count>
      <attachid>26149</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-12-19 11:33:38 -0800</bug_when>
    <thetext>Created attachment 26149
proposed patch, with comments by zecke covered</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103027</commentid>
    <comment_count>34</comment_count>
      <attachid>26157</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-12-19 13:56:32 -0800</bug_when>
    <thetext>Created attachment 26157
with since tags</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103034</commentid>
    <comment_count>35</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-12-19 14:22:24 -0800</bug_when>
    <thetext>&gt; A new object WebKitWebPolicyDecision allow the browser to delay its

&quot;allow&quot; -&gt; &quot;allows&quot;

&gt; gpointer navigationAction = g_object_new(WEBKIT_TYPE_WEB_NAVIGATION_ACTION,

Why is this a gpointer? This should be WebKitTypeWebNavigation.

&gt; + if (navigationAction-&gt;priv-&gt;originalUri &amp;&amp;
&gt; +        (!strcmp(navigationAction-&gt;priv-&gt;originalUri, originalUri)))
&gt; +        return;

You&apos;re missing the case where both is NULL.

&gt; + * modify it under the terms of the GNU Library General Public

It&apos;s *Lesser* General Public License these days :)

&gt; +     * @return: a WebKitNavigationResponse

We normally use &quot;Return value: &quot;, better keep it consistent.

&gt; +gboolean webkit_web_view_can_show_mime_type (WebKitWebView* webView, const gchar* &gt; mimeType)
&gt; +{
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);

What kind of string is expected here? It&apos;s not NULL checked - possibly intentional - and what about the encoding, is WebCore expecting UTF-8? Apologies if it&apos;s actually fine like that.

&gt; +    g_object_class_install_property(objectClass, PROP_REASON,
&gt; +                                    g_param_spec_enum(&quot;reason&quot;,
&gt; +                                                      &quot;Reason&quot;,
&gt; +                                                      &quot;The reason why this navigation is occurring&quot;,
&gt; +                                                      WEBKIT_TYPE_WEB_NAVIGATION_REASON,
&gt; +                                                      WEBKIT_WEB_NAVIGATION_REASON_OTHER,
&gt; +                                                      (GParamFlags)(WEBKIT_PARAM_READWRITE |
&gt; G_PARAM_CONSTRUCT)));
&gt; +
&gt; +    g_object_class_install_property(objectClass, PROP_ORIGINAL_URI,
&gt; +                                    g_param_spec_string(&quot;original-uri&quot;,
&gt; +                                                        &quot;Original URI&quot;,
&gt; +                                                        &quot;The URI that was requested as the target for the navigation&quot;,
&gt; +                                                        &quot;&quot;,
&gt; +                                                        (GParamFlags)(WEBKIT_PARAM_READWRITE | &gt; G_PARAM_CONSTRUCT)));

We need doc comments there, not to forget Since tags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103057</commentid>
    <comment_count>36</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-12-19 18:38:03 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; &gt; A new object WebKitWebPolicyDecision allow the browser to delay its
&gt; &quot;allow&quot; -&gt; &quot;allows&quot;

right, will fix that when landing.


 


&gt; &gt; gpointer navigationAction = g_object_new(WEBKIT_TYPE_WEB_NAVIGATION_ACTION,
&gt; Why is this a gpointer? This should be WebKitTypeWebNavigation.

this avoids a cast... but I change that when landing




&gt; 
&gt; &gt; + if (navigationAction-&gt;priv-&gt;originalUri &amp;&amp;
&gt; &gt; +        (!strcmp(navigationAction-&gt;priv-&gt;originalUri, originalUri)))
&gt; &gt; +        return;
&gt; 
&gt; You&apos;re missing the case where both is NULL.

This can not happen as the uri property is marked as construct.




&gt; 
&gt; &gt; + * modify it under the terms of the GNU Library General Public
&gt; It&apos;s *Lesser* General Public License these days :)


Yeah, I agree with you, we are just following the majority of webkit in this regard.



&gt; 
&gt; &gt; +     * @return: a WebKitNavigationResponse
&gt; 
&gt; We normally use &quot;Return value: &quot;, better keep it consistent.
_PARAM_CONSTRUCT)));
&gt; 
&gt; We need doc comments there, not to forget Since tags.
&gt; 



will try to fix both when landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103058</commentid>
    <comment_count>37</comment_count>
      <attachid>26157</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-12-19 18:40:45 -0800</bug_when>
    <thetext>Comment on attachment 26157
with since tags

Okay, let us see what this is breaking. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103912</commentid>
    <comment_count>38</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-12-31 07:51:32 -0800</bug_when>
    <thetext>Landed in r39421.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18040</attachid>
            <date>2007-12-21 14:07:05 -0800</date>
            <delta_ts>2008-01-04 14:01:17 -0800</delta_ts>
            <desc>Suggested implementation</desc>
            <filename>policy-implementation.patch</filename>
            <type>text/plain</type>
            <size>16075</size>
            <attacher name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODkzNykKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDctMTItMjEgIFBpZXJyZS1MdWMgQmVhdWRvaW4g
IDxzZXQgRU1BSUxfQUREUkVTUyBlbnZpcm9ubWVudCB2YXJpYWJsZT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGltcGxlbWVudHMgdGhlIGRl
bGVnYXRlcyBtZXRob2RzIG9mIFdlYlBvbGljeURlbGVnYXRlLgorICAgICAgICBTaW5jZSBHdGsr
L0MgZG9lc24ndCBoYXZlIGRlbGVnYXRlIG1ldGhvZHMsIEkgcmVwbGFjZWQgdGhlbSB3aXRoIHNp
Z25hbHMuICAKKyAgICAgICAgQWxzbywgc2luY2UgV2ViUG9saWN5RGVsZWdhdGUgb25seSBoYXMg
MyBkZWxlZ2F0ZSwgSSBhZGRlZCB0aGVtIHRvIFdlYlZpZXcgCisgICAgICAgIGluc3RlYWQgb2Yg
Y3JlYXRpbmcgbmV3IEdPYmplY3Qgd2l0aCBvbmx5IDMgc2lnbmFscy4KKworICAgICAgICBJIHRy
aWVkIHRvIGNvcHkgdGhlIGJlaGF2aW9yIGRlc2NyaWJlZCBpbiBodHRwOi8vZGV2ZWxvcGVyLmFw
cGxlLmNvbS9kb2N1bWVudGF0aW9uL0NvY29hL1JlZmVyZW5jZS9XZWJLaXQvUHJvdG9jb2xzL1dl
YlBvbGljeURlbGVnYXRlX1Byb3RvY29sL1JlZmVyZW5jZS9SZWZlcmVuY2UuaHRtbCMvL2FwcGxl
X3JlZi9vY2MvaW5zdG0vTlNPYmplY3Qvd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uOnJlcXVlc3Q6ZnJhbWU6ZGVjaXNpb25MaXN0ZW5lcjoKKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUpOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnQ6OmNhblNob3dNSU1FVHlwZSk6CisgICAgICAgICogV2ViVmlldy93ZWJr
aXQtbWFyc2hhbC5saXN0OgorICAgICAgICAqIFdlYlZpZXcvd2Via2l0d2Vidmlldy5jcHA6Cisg
ICAgICAgICogV2ViVmlldy93ZWJraXR3ZWJ2aWV3Lmg6CisKIDIwMDctMTItMTkgIENocmlzdGlh
biBEeXdhbiAgPGNocmlzdGlhbkB0d290b2FzdHMuZGU+IAogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFscCBUb2tlci4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAyODg5MykKKysrIFdlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
LDYgKzIsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIu
Y29tPgogICogIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgog
ICogIENvcHlyaWdodCAoQykgMjAwNyBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkB0d290b2Fz
dHMuZGU+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENvbGxhYm9yYSBMdGQuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjE3LDIyICsyMTgsNDkgQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaQogICAgIG1fcmVzcG9uc2UgPSBy
ZXNwb25zZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGlj
eUZ1bmN0aW9uLCBjb25zdCBTdHJpbmcmIG1pbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0KQogewotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGNhbGwgZGlyZWN0bHkg
aGVyZSAoY29tbWVudCBjb3BpZWQgZnJvbSBRdCB2ZXJzaW9uKQogICAgIEFTU0VSVChwb2xpY3lG
dW5jdGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKICAgICAgICAgcmV0dXJuOwotICAg
IChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOwor
CisgICAgV2ViS2l0V2ViVmlldyogcGFnZSA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7Cisg
ICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfbmV0d29ya19yZXF1ZXN0
X25ldyhyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
V2ViS2l0UG9saWN5UmVzcG9uc2UgcmVzcG9uc2U7CisKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25h
bWUocGFnZSwgIm1pbWUtdHlwZS1yZXF1ZXN0ZWQiLCBtX2ZyYW1lLCByZXF1ZXN0LCBtaW1lLnV0
ZjgoKS5kYXRhKCksICZyZXNwb25zZSk7CisKKyAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0KTsK
KworICAgIGlmIChyZXNwb25zZSA9PSBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVCkgewor
ICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5
VXNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0gZWxzZSBpZiAocmVzcG9uc2UgPT0gV0VCS0lU
X1BPTElDWV9SRVNQT05TRV9ET1dOTE9BRCkgeworICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9h
ZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5RG93bmxvYWQpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQ
b2xpY3lJZ25vcmUpOworICAgICAgICAKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBw
b2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1
bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgQVNTRVJUKHBvbGljeUZ1bmN0
aW9uKTsKICAgICBpZiAoIXBvbGljeUZ1bmN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgLy8g
RklYTUU6IEkgdGhpbmsgUXQgdmVyc2lvbiBtYXJzaGFscyB0aGlzIHRvIGFub3RoZXIgdGhyZWFk
IHNvIHdoZW4gd2UKLSAgICAvLyBoYXZlIG11bHRpLXRocmVhZGVkIGRvd25sb2FkLCB3ZSBtaWdo
dCBuZWVkIHRvIGRvIHRoZSBzYW1lCisKKyAgICBXZWJLaXRXZWJWaWV3KiBwYWdlID0gZ2V0Vmll
d0Zyb21GcmFtZShtX2ZyYW1lKTsKKyAgICBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCA9
IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3KHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBXZWJLaXRQb2xpY3lSZXNwb25zZSByZXNwb25zZTsKKwor
ICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShwYWdlLCAibmV3LXdpbmRvdy1yZXF1ZXN0ZWQiLCBt
X2ZyYW1lLCByZXF1ZXN0LCAmcmVzcG9uc2UpOworCisgICAgZ19vYmplY3RfdW5yZWYocmVxdWVz
dCk7CisKKyAgICBpZiAocmVzcG9uc2UgPT0gV0VCS0lUX1BPTElDWV9SRVNQT05TRV9BQ0NFUFQp
IHsKKyAgICAgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBv
bGljeVVzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9IAogICAgIChjb3JlKG1fZnJhbWUpLT5s
b2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lJZ25vcmUpOwogfQogCkBAIC0yNDQsMTMg
KzI3MiwxMyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvCiAKICAg
ICBXZWJLaXRXZWJWaWV3KiBwYWdlID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKICAgICBX
ZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3
KHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBXZWJL
aXROYXZpZ2F0aW9uUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgV2ViS2l0UG9saWN5UmVzcG9uc2Ug
cmVzcG9uc2U7CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUocGFnZSwgIm5hdmlnYXRpb24t
cmVxdWVzdGVkIiwgbV9mcmFtZSwgcmVxdWVzdCwgJnJlc3BvbnNlKTsKIAogICAgIGdfb2JqZWN0
X3VucmVmKHJlcXVlc3QpOwogCi0gICAgaWYgKHJlc3BvbnNlID09IFdFQktJVF9OQVZJR0FUSU9O
X1JFU1BPTlNFX0lHTk9SRSkgeworICAgIGlmIChyZXNwb25zZSA9PSBXRUJLSVRfUE9MSUNZX1JF
U1BPTlNFX0lHTk9SRSkgewogICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xp
Y3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYw
MywxMCArNjMxLDEwIEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkhhbmRsZVJlcXVlc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01J
TUVUeXBlKGNvbnN0IFN0cmluZyYpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gdHJ1ZTsKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnQ6OmNhblNob3dNSU1FVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0IAoreyAKKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnRl
ZCBtaW1lc3R5cGVzIG9mIHBsdWdpbnMKKyAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNT
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlKHR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9y
dGVkTm9uSW1hZ2VNSU1FVHlwZSh0eXBlKTsKIH0KIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6
cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3QKSW5k
ZXg6IFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXQtbWFyc2hhbC5saXN0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXQtbWFyc2hhbC5saXN0CShyZXZpc2lvbiAyODg4NikK
KysrIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXQtbWFyc2hhbC5saXN0CSh3b3JraW5nIGNvcHkp
CkBAIC0xMCwzICsxMCw0IEBAIEJPT0xFQU46T0JKRUNULFNUUklORwogQk9PTEVBTjpPQkpFQ1Qs
U1RSSU5HLEJPT0xFQU4KIEJPT0xFQU46T0JKRUNULFNUUklORyxTVFJJTkcsU1RSSU5HCiBJTlQ6
T0JKRUNULE9CSkVDVAorSU5UOk9CSkVDVCxPQkpFQ1QsU1RSSU5HCkluZGV4OiBXZWJLaXQvZ3Rr
L1dlYlZpZXcvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJW
aWV3L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAyODg4NikKKysrIFdlYktpdC9ndGsvV2Vi
Vmlldy93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAKICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2hyaXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AdHdvdG9hc3Rz
LmRlPgogICogIENvcHlyaWdodCAoQykgMjAwNyBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiAgQ29w
eXJpZ2h0IChDKSAyMDA3IENvbGxhYm9yYSBMdGQuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwpAQCAtNTQsNiArNTUsOCBAQCBleHRlcm4gIkMiIHsKIGVudW0gewog
ICAgIC8qIG5vcm1hbCBzaWduYWxzICovCiAgICAgTkFWSUdBVElPTl9SRVFVRVNURUQsCisgICAg
TUlNRV9UWVBFX1JFUVVFU1RFRCwKKyAgICBORVdfV0lORE9XX1JFUVVFU1RFRCwKICAgICBXSU5E
T1dfT0JKRUNUX0NMRUFSRUQsCiAgICAgTE9BRF9TVEFSVEVELAogICAgIExPQURfQ09NTUlUVEVE
LApAQCAtMjc1LDEwICsyNzgsMjggQEAgc3RhdGljIFdlYktpdFdlYlZpZXcqIHdlYmtpdF93ZWJf
dmlld19yZQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgV2ViS2l0TmF2aWdhdGlvblJlc3Bv
bnNlIHdlYmtpdF93ZWJfdmlld19yZWFsX25hdmlnYXRpb25fcmVxdWVzdGVkKFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KikKK3N0YXRp
YyBXZWJLaXRQb2xpY3lSZXNwb25zZSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9uX3Jl
cXVlc3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3
b3JrUmVxdWVzdCopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gV0VCS0lU
X05BVklHQVRJT05fUkVTUE9OU0VfQUNDRVBUOworICAgIHJldHVybiBXRUJLSVRfUE9MSUNZX1JF
U1BPTlNFX0FDQ0VQVDsKK30KKworc3RhdGljIFdlYktpdFBvbGljeVJlc3BvbnNlIHdlYmtpdF93
ZWJfdmlld19yZWFsX21pbWVfdHlwZV9yZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcs
IFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqLCBjb25zdCBnY2hh
ciogbWltZV90eXBlKQoreworICAgIC8vIERlZmF1bHQgYmVoYXZpb3IKKyAgICBGcmFtZSogbWFp
bl9mcmFtZSA9IGNvcmUod2Via2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1lKHdlYl92aWV3KSk7
CisKKyAgICBpZihtYWluX2ZyYW1lLT5sb2FkZXIoKS0+Y2FuU2hvd01JTUVUeXBlKG1pbWVfdHlw
ZSkpCisgICAgICAgIHJldHVybiBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVDsKKyAgICBl
bHNlCisgICAgICAgIHJldHVybiBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRTsKK30KKwor
c3RhdGljIFdlYktpdFBvbGljeVJlc3BvbnNlIHdlYmtpdF93ZWJfdmlld19yZWFsX25ld193aW5k
b3dfcmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktp
dE5ldHdvcmtSZXF1ZXN0KiwgY29uc3QgZ2NoYXIqIG1pbWVfdHlwZSkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhpcyB0byBhY2NlcHQgb25jZSBpdCBp
cyBpbXBsZW1lbnRlZAorICAgIHJldHVybiBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRTsK
IH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfd2luZG93X29iamVjdF9jbGVh
cmVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSosIEpTR2xvYmFsQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dfb2JqZWN0KQpAQCAtNDQyLDYgKzQ2MywxNSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXCiAgICAgICogU2lnbmFscwog
ICAgICAqLwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bmF2aWdhdGlvbi1yZXF1
ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwg
aXMgZW1pdHRlZAorICAgICAqIEB3ZWJfZnJhbWU6IHRoZSBmcmFtZSBvbiB3aGljaCB0aGUgYWN0
aW9uIAorICAgICAqIEByZXR1cm46IFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfQUNDRVBUIHRvIGFs
bG93IFdlYktpdCB0byBkaXNwbGF5IHRoaXMgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgV0VC
S0lUX1BPTElDWV9SRVNQT05TRV9JR05PUkUgbm90IHRvIGRpc3BsYXkgdGhpcyBsb2NhdGlvbgor
ICAgICAqCisgICAgICogUm91dGVzIGEgbmF2aWdhdGlvbiBhY3Rpb24gaW50ZXJuYWxseSBvciB0
byBhbiBleHRlcm5hbCB2aWV3ZXIuCisgICAgICovCiAgICAgd2Via2l0X3dlYl92aWV3X3NpZ25h
bHNbTkFWSUdBVElPTl9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJuYXZpZ2F0aW9uLXJlcXVl
c3RlZCIsCiAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAogICAg
ICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJ
T04pLApAQCAtNDU0LDYgKzQ4NCw1MyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xh
c3NfaW5pdChXCiAgICAgICAgICAgICBHX1RZUEVfT0JKRUNUKTsKIAogICAgIC8qKgorICAgICAq
IFdlYktpdFdlYlZpZXc6Om1pbWUtdHlwZS1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0
aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEB3ZWJfZnJh
bWU6IHRoZSBmcmFtZSBvbiB3aGljaCB0aGUgYWN0aW9uIAorICAgICAqIEBtaW1ldHlwZTogdGhl
IE1JTUUgdHlwZSBhdHRlbXB0ZWQgdG8gbG9hZAorICAgICAqIEByZXR1cm46IFdFQktJVF9QT0xJ
Q1lfUkVTUE9OU0VfQUNDRVBUIHRvIGFsbG93IFdlYktpdCB0byBkaXNwbGF5IHRoaXMgTUlNRSB0
eXBlLAorICAgICAgICAgICAgICAgIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfSUdOT1JFIHRvIG1h
a2UgV2ViS2l0IGlnbm9yZSB0aGlzIHJlc291cmNlLAorICAgICAgICAgICAgICAgIFdFQktJVF9Q
T0xJQ1lfUkVTUE9OU0VfRE9XTkxPQUQgdG8gbWFrZSBXZWJLaXQgZG93bmxvYWQgdGhpcyByZXNv
dXJjZS4KKyAgICAgKgorICAgICAqIERlY2lkZSB3ZXRoZXIgdG8gZGlzcGxheSBvZiBub3QgdGhl
IGdpdmVuIE1JTUUgdHlwZS4KKyAgICAgKiBJZiB0aGlzIHNpZ25hbCBpcyBub3QgaGFuZGxlZCwg
dGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgYXMgZm9sbG93cy4gIElmIFdlYktpdCBjYW4gCisgICAg
ICogc2hvdyB0aGlzIE1JTUUgdHlwZSwgdGhlIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfQUNDRVBU
IHdpbGwgYmUgdXNlZCwgZWxzZSAKKyAgICAgKiBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9S
RSB3aWxsIGJlIHVzZWQuCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbTUlN
RV9UWVBFX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoIm1pbWUtdHlwZS1yZXF1ZXN0ZWQiLAor
ICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAg
IChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAg
ICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIG1pbWVfdHlwZV9y
ZXF1ZXN0ZWQpLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAg
ICAgICB3ZWJraXRfbWFyc2hhbF9JTlRfX09CSkVDVF9PQkpFQ1RfU1RSSU5HLAorICAgICAgICAg
ICAgR19UWVBFX0lOVCwgMywKKyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsIAorICAgICAgICAg
ICAgR19UWVBFX09CSkVDVCwgCisgICAgICAgICAgICBHX1RZUEVfU1RSSU5HKTsKKworICAgIC8q
KgorICAgICAqIFdlYktpdFdlYlZpZXc6Om5ldy13aW5kb3ctcmVxdWVzdGVkOgorICAgICAqIEB3
ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAg
KiBAd2ViX2ZyYW1lOiB0aGUgZnJhbWUgb24gd2hpY2ggdGhlIGFjdGlvbiAKKyAgICAgKiBAcmV0
dXJuOiBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVCB0byBhbGxvdyBXZWJLaXQgdG8gZGlz
cGxheSBhIG5ldyB3aW5kb3csCisgICAgICAgICAgICAgICAgV0VCS0lUX1BPTElDWV9SRVNQT05T
RV9JR05PUkUgbm90IHRvIGRpc3BsYXkgYSBuZXcgd2luZG93CisgICAgICoKKyAgICAgKiBEZWNp
ZGVzIHdoZXRoZXIgdG8gYWxsb3cgYSB0YXJnZXRlZCBuYXZpZ2F0aW9uIGV2ZW50LCBzdWNoIGFz
IG9wZW5pbmcgYSBsaW5rIGluIGEgbmV3IHdpbmRvdy4KKyAgICAgKiBUaGUgZGVmYXVsdCBiZWhh
dmlvciBpcyB0byBhY2NlcHQuCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNb
TkVXX1dJTkRPV19SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJuZXctd2luZG93LXJlcXVlc3Rl
ZCIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAg
ICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04p
LAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgbmV3X3dp
bmRvd19yZXF1ZXN0ZWQpLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIE5VTEwsCisg
ICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9JTlRfX09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAg
ICBHX1RZUEVfSU5ULCAyLAorICAgICAgICAgICAgR19UWVBFX09CSkVDVCwgCisgICAgICAgICAg
ICBHX1RZUEVfT0JKRUNUKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6OndpbmRv
dy1vYmplY3QtY2xlYXJlZDoKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2gg
dGhlIHNpZ25hbCBpcyBlbWl0dGVkCiAgICAgICogQGZyYW1lOiB0aGUgI1dlYktpdFdlYkZyYW1l
IHRvIHdoaWNoIEB3aW5kb3dfb2JqZWN0IGJlbG9uZ3MKQEAgLTc1MSw2ICs4MjgsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXCiAgICAgICovCiAgICAgd2ViVmll
d0NsYXNzLT5jcmVhdGVfd2ViX3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVhdGVfd2Vi
X3ZpZXc7CiAgICAgd2ViVmlld0NsYXNzLT5uYXZpZ2F0aW9uX3JlcXVlc3RlZCA9IHdlYmtpdF93
ZWJfdmlld19yZWFsX25hdmlnYXRpb25fcmVxdWVzdGVkOworICAgIHdlYlZpZXdDbGFzcy0+bWlt
ZV90eXBlX3JlcXVlc3RlZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX21pbWVfdHlwZV9yZXF1ZXN0
ZWQ7CiAgICAgd2ViVmlld0NsYXNzLT53aW5kb3dfb2JqZWN0X2NsZWFyZWQgPSB3ZWJraXRfd2Vi
X3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQ7CiAgICAgd2ViVmlld0NsYXNzLT5jaG9v
c2VfZmlsZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2Nob29zZV9maWxlOwogICAgIHdlYlZpZXdD
bGFzcy0+c2NyaXB0X2FsZXJ0ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfc2NyaXB0X2FsZXJ0OwpJ
bmRleDogV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHdlYnZpZXcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2Vidmlldy5oCShyZXZpc2lvbiAyODg4NikKKysrIFdl
YktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJ2aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0
aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ29sbGFib3JhIEx0ZC4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM2LDEwICszNywxMCBAQCBHX0JFR0lOX0RF
Q0xTCiAKIAogdHlwZWRlZiBlbnVtIHsKLSAgICBXRUJLSVRfTkFWSUdBVElPTl9SRVNQT05TRV9B
Q0NFUFQsCi0gICAgV0VCS0lUX05BVklHQVRJT05fUkVTUE9OU0VfSUdOT1JFLAotICAgIFdFQktJ
VF9OQVZJR0FUSU9OX1JFU1BPTlNFX0RPV05MT0FECi19IFdlYktpdE5hdmlnYXRpb25SZXNwb25z
ZTsKKyAgICBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVCwKKyAgICBXRUJLSVRfUE9MSUNZ
X1JFU1BPTlNFX0lHTk9SRSwKKyAgICBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0RPV05MT0FECit9
IFdlYktpdFBvbGljeVJlc3BvbnNlOwogCiAKIApAQCAtNTksOSArNjAsMTEgQEAgc3RydWN0IF9X
ZWJLaXRXZWJWaWV3Q2xhc3MgewogICAgIFdlYktpdFdlYlZpZXcqICAoKmNyZWF0ZV93ZWJfdmll
dykgIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAKICAgICAvKgotICAgICAqIFRPRE86IEZJ
WE1FOiBDcmVhdGUgc29tZXRoaW5nIGxpa2UgV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lcl9Qcm90
b2NvbCBpbnN0ZWFkCisgICAgICogUG9saWN5IGhhbmRsZXJzCiAgICAgICovCi0gICAgV2ViS2l0
TmF2aWdhdGlvblJlc3BvbnNlICgqbmF2aWdhdGlvbl9yZXF1ZXN0ZWQpIChXZWJLaXRXZWJWaWV3
KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCog
cmVxdWVzdCk7CisgICAgV2ViS2l0UG9saWN5UmVzcG9uc2UgKCpuYXZpZ2F0aW9uX3JlcXVlc3Rl
ZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktp
dE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0KTsKKyAgICBXZWJLaXRQb2xpY3lSZXNwb25zZSAoKm1p
bWVfdHlwZV9yZXF1ZXN0ZWQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJh
bWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgZ2NoYXIqIG1p
bWVfdHlwZSk7CisgICAgV2ViS2l0UG9saWN5UmVzcG9uc2UgKCpuZXdfd2luZG93X3JlcXVlc3Rl
ZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktp
dE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0KTsKIAogICAgIHZvaWQgKCp3aW5kb3dfb2JqZWN0X2Ns
ZWFyZWQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgd2luZG93X29iamVjdCk7CiAg
ICAgZ2NoYXIqICAgKCpjaG9vc2VfZmlsZSkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJL
aXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBvbGRfZmlsZSk7CkluZGV4OiBXZWJLaXRU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyODkzNykKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDA3LTEyLTIxICBQaWVycmUtTHVjIEJlYXVkb2luICA8c2V0IEVNQUlM
X0FERFJFU1MgZW52aXJvbm1lbnQgdmFyaWFibGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSGFuZGxlIG1pbWUtdHlwZS1yZXF1ZXN0ZWQgdG8gdGVz
dCBpdC4KKworICAgICAgICAqIEd0a0xhdW5jaGVyL21haW4uYzoKKyAgICAgICAgKG1pbWVfdHlw
ZV9yZXF1ZXN0ZWQpOgorICAgICAgICAoY3JlYXRlX2Jyb3dzZXIpOgorCiAyMDA3LTEyLTIxICBL
ZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIEJ1aWxk
IHNjcmlwdCBmaXggZm9yIGJ1aWxkYm90LgpJbmRleDogV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIv
bWFpbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYwkocmV2
aXNpb24gMjg4ODYpCisrKyBXZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFw
cGxlIEluYy4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29t
PgorICogQ29weXJpZ2h0IChDKSAyMDA3IENvbGxhYm9yYSBMdGQuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d2Via2l0Lmg+CisjaW5jbHVkZSA8c3Ry
aW5nLmg+CiAKIHN0YXRpYyBHdGtXaWRnZXQqIG1haW5fd2luZG93Owogc3RhdGljIEd0a1dpZGdl
dCogdXJpX2VudHJ5OwpAQCAtNjQsNiArNjYsMTUgQEAgbGlua19ob3Zlcl9jYiAoV2ViS2l0V2Vi
VmlldyogcGFnZSwgY29ucwogICAgICAgICBndGtfc3RhdHVzYmFyX3B1c2ggKG1haW5fc3RhdHVz
YmFyLCBzdGF0dXNfY29udGV4dF9pZCwgbGluayk7CiB9CiAKK3N0YXRpYyBXZWJLaXRQb2xpY3lS
ZXNwb25zZSAKK21pbWVfdHlwZV9yZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyogdmlldywgV2ViS2l0
V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgZ2No
YXIqIG1pbWVfdHlwZSkKK3sKKyAgICBpZihzdHJjbXAobWltZV90eXBlLCAidGV4dC9odG1sIikg
PT0gMCkKKyAgICAgICAgcmV0dXJuIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfQUNDRVBUOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfRE9XTkxPQUQ7Cit9
CisKIHN0YXRpYyB2b2lkCiB0aXRsZV9jaGFuZ2VfY2IgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3
LCBXZWJLaXRXZWJGcmFtZSogd2ViX2ZyYW1lLCBjb25zdCBnY2hhciogdGl0bGUsIGdwb2ludGVy
IGRhdGEpCiB7CkBAIC0xMTksNiArMTMwLDcgQEAgY3JlYXRlX2Jyb3dzZXIgKCkKICAgICBnX3Np
Z25hbF9jb25uZWN0IChHX09CSkVDVCAod2ViX3ZpZXcpLCAibG9hZC1wcm9ncmVzcy1jaGFuZ2Vk
IiwgR19DQUxMQkFDSyAocHJvZ3Jlc3NfY2hhbmdlX2NiKSwgd2ViX3ZpZXcpOwogICAgIGdfc2ln
bmFsX2Nvbm5lY3QgKEdfT0JKRUNUICh3ZWJfdmlldyksICJsb2FkLWNvbW1pdHRlZCIsIEdfQ0FM
TEJBQ0sgKGxvYWRfY29tbWl0X2NiKSwgd2ViX3ZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qg
KEdfT0JKRUNUICh3ZWJfdmlldyksICJob3ZlcmluZy1vdmVyLWxpbmsiLCBHX0NBTExCQUNLIChs
aW5rX2hvdmVyX2NiKSwgd2ViX3ZpZXcpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNU
ICh3ZWJfdmlldyksICJtaW1lLXR5cGUtcmVxdWVzdGVkIiwgR19DQUxMQkFDSyAobWltZV90eXBl
X3JlcXVlc3RlZCksIHdlYl92aWV3KTsKIAogICAgIHJldHVybiBzY3JvbGxlZF93aW5kb3c7CiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18276</attachid>
            <date>2008-01-04 14:01:17 -0800</date>
            <delta_ts>2008-01-09 16:19:24 -0800</delta_ts>
            <desc>Applied some comments</desc>
            <filename>policy-implementation-2.patch</filename>
            <type>text/plain</type>
            <size>15993</size>
            <attacher name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCShyZXZpc2lvbiAyOTE2OCkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAog
ICogIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogIENv
cHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogIENvcHlyaWdo
dCAoQykgMjAwNyBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkB0d290b2FzdHMuZGU+CisgKiAg
Q29weXJpZ2h0IChDKSAyMDA3IENvbGxhYm9yYSBMdGQuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjE3LDIyICsyMTgsNTggQEAKICAgICBtX3Jlc3BvbnNl
ID0gcmVzcG9uc2U7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTUlNRVR5cGUoRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoRnJhbWVQb2xpY3lGdW5jdGlvbiBw
b2xpY3lGdW5jdGlvbiwgY29uc3QgU3RyaW5nJiBtaW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byBjYWxsIGRpcmVj
dGx5IGhlcmUgKGNvbW1lbnQgY29waWVkIGZyb20gUXQgdmVyc2lvbikKICAgICBBU1NFUlQocG9s
aWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9saWN5RnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsK
LSAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNl
KTsKKworICAgIFdlYktpdFdlYlZpZXcqIHBhZ2UgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUp
OworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVx
dWVzdF9uZXcocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIFdlYktpdFBvbGljeVJlc3BvbnNlIHJlc3BvbnNlOworCisgICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKHBhZ2UsICJtaW1lLXR5cGUtcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCIsIG1fZnJh
bWUsIHJlcXVlc3QsIG1pbWUudXRmOCgpLmRhdGEoKSwgJnJlc3BvbnNlKTsKKworICAgIGdfb2Jq
ZWN0X3VucmVmKHJlcXVlc3QpOworCisgICAgaWYgKHJlc3BvbnNlID09IFdFQktJVF9QT0xJQ1lf
UkVTUE9OU0VfTlVMTCkKKyAgICB7CisgICAgICAgIC8vIERlZmF1bHQgYmVoYXZpb3IKKyAgICAg
ICAgaWYoY2FuU2hvd01JTUVUeXBlKG1pbWUpKQorICAgICAgICAgICAgcmVzcG9uc2UgPSBXRUJL
SVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVz
cG9uc2UgPSBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRTsKKyAgICB9CisKKyAgICBpZiAo
cmVzcG9uc2UgPT0gV0VCS0lUX1BPTElDWV9SRVNQT05TRV9BQ0NFUFQpIHsKKyAgICAgICAgKGNv
cmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKHJlc3BvbnNlID09IFdFQktJVF9QT0xJQ1lfUkVT
UE9OU0VfRE9XTkxPQUQpIHsKKyAgICAgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9s
aWN5RnVuY3Rpb24pKFBvbGljeURvd25sb2FkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3Jl
KTsKKwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rpb24sIGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29u
c3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9s
aWN5RnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogSSB0aGluayBRdCB2
ZXJzaW9uIG1hcnNoYWxzIHRoaXMgdG8gYW5vdGhlciB0aHJlYWQgc28gd2hlbiB3ZQotICAgIC8v
IGhhdmUgbXVsdGktdGhyZWFkZWQgZG93bmxvYWQsIHdlIG1pZ2h0IG5lZWQgdG8gZG8gdGhlIHNh
bWUKKworICAgIFdlYktpdFdlYlZpZXcqIHBhZ2UgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUp
OworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVx
dWVzdF9uZXcocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIFdlYktpdFBvbGljeVJlc3BvbnNlIHJlc3BvbnNlOworCisgICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKHBhZ2UsICJuZXctd2luZG93LXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3QsICZy
ZXNwb25zZSk7CisKKyAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0KTsKKworICAgIGlmIChyZXNw
b25zZSA9PSBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVCkgeworICAgICAgICAoY29yZSht
X2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0gCiAgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVu
Y3Rpb24pKFBvbGljeUlnbm9yZSk7CiB9CiAKQEAgLTI0NCwxMyArMjgxLDEzIEBACiAKICAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKICAgICBX
ZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3
KHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBXZWJL
aXROYXZpZ2F0aW9uUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgV2ViS2l0UG9saWN5UmVzcG9uc2Ug
cmVzcG9uc2U7CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgIm5hdmlnYXRp
b24tcmVxdWVzdGVkIiwgbV9mcmFtZSwgcmVxdWVzdCwgJnJlc3BvbnNlKTsKIAogICAgIGdfb2Jq
ZWN0X3VucmVmKHJlcXVlc3QpOwogCi0gICAgaWYgKHJlc3BvbnNlID09IFdFQktJVF9OQVZJR0FU
SU9OX1JFU1BPTlNFX0lHTk9SRSkgeworICAgIGlmIChyZXNwb25zZSA9PSBXRUJLSVRfUE9MSUNZ
X1JFU1BPTlNFX0lHTk9SRSkgewogICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipw
b2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTYwMywxMCArNjQwLDEwIEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdAotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Citib29sIEZyYW1lTG9hZGVyQ2xpZW50
OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdCAKK3sgCisgICAgLy8g
RklYTUU6IGFkZCBzdXBwb3J0ZWQgbWltZXN0eXBlcyBvZiBwbHVnaW5zCisgICAgcmV0dXJuIE1J
TUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSh0eXBlKSB8fCBNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUodHlwZSk7CiB9CiAKIGJvb2wg
RnJhbWVMb2FkZXJDbGllbnQ6OnJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0
IFN0cmluZyYpIGNvbnN0CkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMjkxNzQpCisrKyBXZWJLaXQvZ3RrL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDA4LTAxLTA0ICBQaWVy
cmUtTHVjIEJlYXVkb2luICA8cGllcnJlLWx1Yy5iZWF1ZG9pbkBjb2xsYWJvcmEuY28udWs+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBU
aGlzIGltcGxlbWVudHMgdGhlIGRlbGVnYXRlcyBtZXRob2RzIG9mIFdlYlBvbGljeURlbGVnYXRl
LgorICAgICAgICBTaW5jZSBHdGsrL0MgZG9lc24ndCBoYXZlIGRlbGVnYXRlIG1ldGhvZHMsIEkg
cmVwbGFjZWQgdGhlbSB3aXRoIHNpZ25hbHMuICAKKyAgICAgICAgQWxzbywgc2luY2UgV2ViUG9s
aWN5RGVsZWdhdGUgb25seSBoYXMgMyBkZWxlZ2F0ZSwgSSBhZGRlZCB0aGVtIHRvIFdlYlZpZXcg
CisgICAgICAgIGluc3RlYWQgb2YgY3JlYXRpbmcgbmV3IEdPYmplY3Qgd2l0aCBvbmx5IDMgc2ln
bmFscy4KKworICAgICAgICBJIHRyaWVkIHRvIGNvcHkgdGhlIGJlaGF2aW9yIGRlc2NyaWJlZCBp
biBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL0NvY29hL1JlZmVyZW5j
ZS9XZWJLaXQvUHJvdG9jb2xzL1dlYlBvbGljeURlbGVnYXRlX1Byb3RvY29sL1JlZmVyZW5jZS9S
ZWZlcmVuY2UuaHRtbCMvL2FwcGxlX3JlZi9vY2MvaW5zdG0vTlNPYmplY3Qvd2ViVmlldzpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnJlcXVlc3Q6ZnJhbWU6ZGVjaXNpb25MaXN0ZW5l
cjoKKworICAgICAgICAqIENoYW5nZUxvZzoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
OjpjYW5TaG93TUlNRVR5cGUpOgorICAgICAgICAqIFdlYlZpZXcvd2Via2l0LW1hcnNoYWwubGlz
dDoKKyAgICAgICAgKiBXZWJWaWV3L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAqIFdlYlZp
ZXcvd2Via2l0d2Vidmlldy5oOgorCiAyMDA4LTAxLTAzICBYYW4gTG9wZXogIDx4YW5AZ25vbWUu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFscCBUb2tlci4KSW5kZXg6IFdlYktpdC9ndGsv
V2ViVmlldy93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYlZp
ZXcvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDI5MTY4KQorKysgV2ViS2l0L2d0ay9XZWJW
aWV3L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsNyBAQAogICog
IENvcHlyaWdodCAoQykgMjAwNyBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkB0d290b2FzdHMu
ZGU+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFhhbiBMb3BleiA8eGFuQGdub21lLm9yZz4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDcgQ29sbGFib3JhIEx0ZC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCkBAIC01OSw2ICs2MCw4IEBACiBlbnVtIHsKICAgICAvKiBub3JtYWwg
c2lnbmFscyAqLwogICAgIE5BVklHQVRJT05fUkVRVUVTVEVELAorICAgIE1JTUVfVFlQRV9QT0xJ
Q1lfREVDSVNJT05fUkVRVUVTVEVELAorICAgIE5FV19XSU5ET1dfUkVRVUVTVEVELAogICAgIFdJ
TkRPV19PQkpFQ1RfQ0xFQVJFRCwKICAgICBMT0FEX1NUQVJURUQsCiAgICAgTE9BRF9DT01NSVRU
RUQsCkBAIC0zOTIsMTIgKzM5NSwxOSBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgV2Vi
S2l0TmF2aWdhdGlvblJlc3BvbnNlIHdlYmtpdF93ZWJfdmlld19yZWFsX25hdmlnYXRpb25fcmVx
dWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdE5ldHdv
cmtSZXF1ZXN0KikKK3N0YXRpYyBXZWJLaXRQb2xpY3lSZXNwb25zZSB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9uYXZpZ2F0aW9uX3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUq
IGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gV0VCS0lUX05BVklHQVRJT05fUkVTUE9OU0VfQUNDRVBUOworICAgIHJldHVy
biBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVDsKIH0KIAorc3RhdGljIFdlYktpdFBvbGlj
eVJlc3BvbnNlIHdlYmtpdF93ZWJfdmlld19yZWFsX25ld193aW5kb3dfcmVxdWVzdGVkKFdlYktp
dFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhpcyB0byBh
Y2NlcHQgb25jZSBpdCBpcyBpbXBsZW1lbnRlZAorICAgIHJldHVybiBXRUJLSVRfUE9MSUNZX1JF
U1BPTlNFX0lHTk9SRTsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfd2lu
ZG93X29iamVjdF9jbGVhcmVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSosIEpTR2xv
YmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dfb2JqZWN0KQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CkBAIC01NTUsNyArNTY1LDcgQEAKICAgaW50IHNpZ25hbEhhbmRs
ZWQgPSBnX3ZhbHVlX2dldF9pbnQoaGFuZGxlclJldHVybik7CiAgIGdfdmFsdWVfc2V0X2ludChy
ZXR1cm5BY2N1LCBzaWduYWxIYW5kbGVkKTsKIAotICBpZiAoc2lnbmFsSGFuZGxlZCAhPSBXRUJL
SVRfTkFWSUdBVElPTl9SRVNQT05TRV9BQ0NFUFQpCisgIGlmIChzaWduYWxIYW5kbGVkICE9IFdF
QktJVF9QT0xJQ1lfUkVTUE9OU0VfQUNDRVBUKQogICAgICAgY29udGludWVFbWlzc2lvbiA9IEZB
TFNFOwogCiAgIHJldHVybiBjb250aW51ZUVtaXNzaW9uOwpAQCAtNTczLDYgKzU4MywxNSBAQAog
ICAgICAqIFNpZ25hbHMKICAgICAgKi8KIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6
Om5hdmlnYXRpb24tcmVxdWVzdGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3
aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAd2ViX2ZyYW1lOiB0aGUgZnJhbWUg
b24gd2hpY2ggdGhlIGFjdGlvbiAKKyAgICAgKiBAcmV0dXJuOiBXRUJLSVRfUE9MSUNZX1JFU1BP
TlNFX0FDQ0VQVCB0byBhbGxvdyBXZWJLaXQgdG8gZGlzcGxheSB0aGlzIGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfSUdOT1JFIG5vdCB0byBkaXNwbGF5
IHRoaXMgbG9jYXRpb24KKyAgICAgKgorICAgICAqIFJvdXRlcyBhIG5hdmlnYXRpb24gYWN0aW9u
IGludGVybmFsbHkgb3IgdG8gYW4gZXh0ZXJuYWwgdmlld2VyLgorICAgICAqLwogICAgIHdlYmtp
dF93ZWJfdmlld19zaWduYWxzW05BVklHQVRJT05fUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygi
bmF2aWdhdGlvbi1yZXF1ZXN0ZWQiLAogICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2Vi
Vmlld0NsYXNzKSwKICAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNU
IHwgR19TSUdOQUxfQUNUSU9OKSwKQEAgLTU4NSw2ICs2MDQsNTMgQEAKICAgICAgICAgICAgIEdf
VFlQRV9PQkpFQ1QpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bWltZS10eXBl
LXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0
IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEB3ZWJfZnJhbWU6IHRoZSBm
cmFtZSBvbiB3aGljaCB0aGUgYWN0aW9uIAorICAgICAqIEBtaW1ldHlwZTogdGhlIE1JTUUgdHlw
ZSBhdHRlbXB0ZWQgdG8gbG9hZAorICAgICAqIEByZXR1cm46IFdFQktJVF9QT0xJQ1lfUkVTUE9O
U0VfQUNDRVBUIHRvIGFsbG93IFdlYktpdCB0byBkaXNwbGF5IHRoaXMgTUlNRSB0eXBlLAorICAg
ICAgICAgICAgICAgIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfSUdOT1JFIHRvIG1ha2UgV2ViS2l0
IGlnbm9yZSB0aGlzIHJlc291cmNlLAorICAgICAgICAgICAgICAgIFdFQktJVF9QT0xJQ1lfUkVT
UE9OU0VfRE9XTkxPQUQgdG8gbWFrZSBXZWJLaXQgZG93bmxvYWQgdGhpcyByZXNvdXJjZS4KKyAg
ICAgKgorICAgICAqIERlY2lkZSB3ZXRoZXIgdG8gZGlzcGxheSBvZiBub3QgdGhlIGdpdmVuIE1J
TUUgdHlwZS4KKyAgICAgKiBJZiB0aGlzIHNpZ25hbCBpcyBub3QgaGFuZGxlZCwgdGhlIGRlZmF1
bHQgYmVoYXZpb3IgaXMgYXMgZm9sbG93cy4gIElmIFdlYktpdCBjYW4gCisgICAgICogc2hvdyB0
aGlzIE1JTUUgdHlwZSwgdGhlIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfQUNDRVBUIHdpbGwgYmUg
dXNlZCwgZWxzZSAKKyAgICAgKiBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRSB3aWxsIGJl
IHVzZWQuCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbTUlNRV9UWVBFX1BP
TElDWV9ERUNJU0lPTl9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJtaW1lLXR5cGUtcG9saWN5
LWRlY2lzaW9uLXJlcXVlc3RlZCIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJW
aWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1Qg
fCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIE5VTEwsCisg
ICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfSU5UX19PQkpFQ1Rf
T0JKRUNUX1NUUklORywKKyAgICAgICAgICAgIEdfVFlQRV9JTlQsIDMsCisgICAgICAgICAgICBH
X1RZUEVfT0JKRUNULCAKKyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsIAorICAgICAgICAgICAg
R19UWVBFX1NUUklORyk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjpuZXctd2lu
ZG93LXJlcXVlc3RlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhl
IHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHdlYl9mcmFtZTogdGhlIGZyYW1lIG9uIHdoaWNo
IHRoZSBhY3Rpb24gCisgICAgICogQHJldHVybjogV0VCS0lUX1BPTElDWV9SRVNQT05TRV9BQ0NF
UFQgdG8gYWxsb3cgV2ViS2l0IHRvIGRpc3BsYXkgYSBuZXcgd2luZG93LAorICAgICAgICAgICAg
ICAgIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfSUdOT1JFIG5vdCB0byBkaXNwbGF5IGEgbmV3IHdp
bmRvdworICAgICAqCisgICAgICogRGVjaWRlcyB3aGV0aGVyIHRvIGFsbG93IGEgdGFyZ2V0ZWQg
bmF2aWdhdGlvbiBldmVudCwgc3VjaCBhcyBvcGVuaW5nIGEgbGluayBpbiBhIG5ldyB3aW5kb3cu
CisgICAgICogVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gYWNjZXB0LgorICAgICAqLworICAg
IHdlYmtpdF93ZWJfdmlld19zaWduYWxzW05FV19XSU5ET1dfUkVRVUVTVEVEXSA9IGdfc2lnbmFs
X25ldygibmV3LXdpbmRvdy1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xB
U1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JV
Tl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChX
ZWJLaXRXZWJWaWV3Q2xhc3MsIG5ld193aW5kb3dfcmVxdWVzdGVkKSwKKyAgICAgICAgICAgIE5V
TEwsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfSU5UX19P
QkpFQ1RfT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX0lOVCwgMiwKKyAgICAgICAgICAgIEdf
VFlQRV9PQkpFQ1QsIAorICAgICAgICAgICAgR19UWVBFX09CSkVDVCk7CisKKyAgICAvKioKICAg
ICAgKiBXZWJLaXRXZWJWaWV3Ojp3aW5kb3ctb2JqZWN0LWNsZWFyZWQ6CiAgICAgICogQHdlYl92
aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAogICAgICAqIEBm
cmFtZTogdGhlICNXZWJLaXRXZWJGcmFtZSB0byB3aGljaCBAd2luZG93X29iamVjdCBiZWxvbmdz
CkBAIC04ODIsNiArOTQ4LDcgQEAKICAgICAgKi8KICAgICB3ZWJWaWV3Q2xhc3MtPmNyZWF0ZV93
ZWJfdmlldyA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2NyZWF0ZV93ZWJfdmlldzsKICAgICB3ZWJW
aWV3Q2xhc3MtPm5hdmlnYXRpb25fcmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2
aWdhdGlvbl9yZXF1ZXN0ZWQ7CisgICAgd2ViVmlld0NsYXNzLT5uZXdfd2luZG93X3JlcXVlc3Rl
ZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX25ld193aW5kb3dfcmVxdWVzdGVkOwogICAgIHdlYlZp
ZXdDbGFzcy0+d2luZG93X29iamVjdF9jbGVhcmVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfd2lu
ZG93X29iamVjdF9jbGVhcmVkOwogICAgIHdlYlZpZXdDbGFzcy0+Y2hvb3NlX2ZpbGUgPSB3ZWJr
aXRfd2ViX3ZpZXdfcmVhbF9jaG9vc2VfZmlsZTsKICAgICB3ZWJWaWV3Q2xhc3MtPnNjcmlwdF9h
bGVydCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3NjcmlwdF9hbGVydDsKSW5kZXg6IFdlYktpdC9n
dGsvV2ViVmlldy93ZWJraXQtbWFyc2hhbC5saXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsv
V2ViVmlldy93ZWJraXQtbWFyc2hhbC5saXN0CShyZXZpc2lvbiAyOTE2OCkKKysrIFdlYktpdC9n
dGsvV2ViVmlldy93ZWJraXQtbWFyc2hhbC5saXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCwzICsx
MCw0IEBACiBCT09MRUFOOk9CSkVDVCxTVFJJTkcsQk9PTEVBTgogQk9PTEVBTjpPQkpFQ1QsU1RS
SU5HLFNUUklORyxTVFJJTkcKIElOVDpPQkpFQ1QsT0JKRUNUCitJTlQ6T0JKRUNULE9CSkVDVCxT
VFJJTkcKSW5kZXg6IFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJ2aWV3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHdlYnZpZXcuaAkocmV2aXNpb24gMjkxNjgp
CisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2Vidmlldy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRl
ciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA3IENvbGxhYm9yYSBMdGQuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNiwxMCArMzcsMTEgQEAKIAog
CiB0eXBlZGVmIGVudW0gewotICAgIFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNFX0FDQ0VQVCwK
LSAgICBXRUJLSVRfTkFWSUdBVElPTl9SRVNQT05TRV9JR05PUkUsCi0gICAgV0VCS0lUX05BVklH
QVRJT05fUkVTUE9OU0VfRE9XTkxPQUQKLX0gV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlOworICAg
IFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfTlVMTCA9IDAsCisgICAgV0VCS0lUX1BPTElDWV9SRVNQ
T05TRV9BQ0NFUFQsCisgICAgV0VCS0lUX1BPTElDWV9SRVNQT05TRV9JR05PUkUsCisgICAgV0VC
S0lUX1BPTElDWV9SRVNQT05TRV9ET1dOTE9BRAorfSBXZWJLaXRQb2xpY3lSZXNwb25zZTsKIAog
dHlwZWRlZiBlbnVtCiB7CkBAIC02Myw5ICs2NSwxMSBAQAogICAgIFdlYktpdFdlYlZpZXcqICAo
KmNyZWF0ZV93ZWJfdmlldykgIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAKICAgICAvKgot
ICAgICAqIFRPRE86IEZJWE1FOiBDcmVhdGUgc29tZXRoaW5nIGxpa2UgV2ViUG9saWN5RGVjaXNp
b25MaXN0ZW5lcl9Qcm90b2NvbCBpbnN0ZWFkCisgICAgICogUG9saWN5IGhhbmRsZXJzCiAgICAg
ICovCi0gICAgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlICgqbmF2aWdhdGlvbl9yZXF1ZXN0ZWQp
IChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXRO
ZXR3b3JrUmVxdWVzdCogcmVxdWVzdCk7CisgICAgV2ViS2l0UG9saWN5UmVzcG9uc2UgKCpuYXZp
Z2F0aW9uX3JlcXVlc3RlZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFt
ZSogZnJhbWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0KTsKKyAgICBXZWJLaXRQb2xp
Y3lSZXNwb25zZSAoKm1pbWVfdHlwZV9wb2xpY3lfZGVjaXNpb25fcmVxdWVzdGVkKSAoV2ViS2l0
V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgV2ViS2l0TmV0d29ya1Jl
cXVlc3QqIHJlcXVlc3QsIGNvbnN0IGdjaGFyKiBtaW1lX3R5cGUpOworICAgIFdlYktpdFBvbGlj
eVJlc3BvbnNlICgqbmV3X3dpbmRvd19yZXF1ZXN0ZWQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmll
dywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCk7
CiAKICAgICB2b2lkICgqd2luZG93X29iamVjdF9jbGVhcmVkKSAoV2ViS2l0V2ViVmlldyogd2Vi
X3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIHdpbmRvd19vYmplY3QpOwogICAgIGdjaGFyKiAgICgqY2hvb3NlX2ZpbGUp
IChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBn
Y2hhciogb2xkX2ZpbGUpOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjkxNzQpCisrKyBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwOC0wMS0wNCAg
UGllcnJlLUx1YyBCZWF1ZG9pbiAgPHBpZXJyZS1sdWMuYmVhdWRvaW5AY29sbGFib3JhLmNvLnVr
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhbmRs
ZSBtaW1lLXR5cGUtcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCB0byB0ZXN0IGl0LgorCisgICAg
ICAgICogQ2hhbmdlTG9nOgorICAgICAgICAqIEd0a0xhdW5jaGVyL21haW4uYzoKKyAgICAgICAg
KG1pbWVfdHlwZV9wb2xpY3lfZGVjaXNpb25fcmVxdWVzdGVkKToKKyAgICAgICAgKGNyZWF0ZV9i
cm93c2VyKToKKwogMjAwOC0wMS0wNCAgTGFycyBLbm9sbCAgPGxhcnNAdHJvbGx0ZWNoLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KSW5kZXg6IFdlYktpdFRvb2xzL0d0a0xhdW5j
aGVyL21haW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMJ
KHJldmlzaW9uIDI5MTY4KQorKysgV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NyBBcHBsZSBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2Vy
LmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBDb2xsYWJvcmEgTHRkLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjcsNyBA
QAogCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHdlYmtpdC5oPgorI2luY2x1ZGUg
PHN0cmluZy5oPgogCiBzdGF0aWMgR3RrV2lkZ2V0KiBtYWluX3dpbmRvdzsKIHN0YXRpYyBHdGtX
aWRnZXQqIHVyaV9lbnRyeTsKQEAgLTY0LDYgKzY2LDE2IEBACiAgICAgICAgIGd0a19zdGF0dXNi
YXJfcHVzaCAobWFpbl9zdGF0dXNiYXIsIHN0YXR1c19jb250ZXh0X2lkLCBsaW5rKTsKIH0KIAor
c3RhdGljIFdlYktpdFBvbGljeVJlc3BvbnNlIAorbWltZV90eXBlX3BvbGljeV9kZWNpc2lvbl9y
ZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyogdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJL
aXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgZ2NoYXIqIG1pbWVfdHlwZSkKK3sKKyAg
ICBnX3ByaW50KCJNSU1FOiAlc1xuIiwgbWltZV90eXBlKTsKKyAgICBpZihzdHJjbXAobWltZV90
eXBlLCAidGV4dC9odG1sIikgPT0gMCkKKyAgICAgICAgcmV0dXJuIFdFQktJVF9QT0xJQ1lfUkVT
UE9OU0VfQUNDRVBUOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFdFQktJVF9QT0xJQ1lfUkVT
UE9OU0VfRE9XTkxPQUQ7Cit9CisKIHN0YXRpYyB2b2lkCiB0aXRsZV9jaGFuZ2VfY2IgKFdlYktp
dFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogd2ViX2ZyYW1lLCBjb25zdCBnY2hh
ciogdGl0bGUsIGdwb2ludGVyIGRhdGEpCiB7CkBAIC0xMTksNiArMTMxLDcgQEAKICAgICBnX3Np
Z25hbF9jb25uZWN0IChHX09CSkVDVCAod2ViX3ZpZXcpLCAibG9hZC1wcm9ncmVzcy1jaGFuZ2Vk
IiwgR19DQUxMQkFDSyAocHJvZ3Jlc3NfY2hhbmdlX2NiKSwgd2ViX3ZpZXcpOwogICAgIGdfc2ln
bmFsX2Nvbm5lY3QgKEdfT0JKRUNUICh3ZWJfdmlldyksICJsb2FkLWNvbW1pdHRlZCIsIEdfQ0FM
TEJBQ0sgKGxvYWRfY29tbWl0X2NiKSwgd2ViX3ZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qg
KEdfT0JKRUNUICh3ZWJfdmlldyksICJob3ZlcmluZy1vdmVyLWxpbmsiLCBHX0NBTExCQUNLIChs
aW5rX2hvdmVyX2NiKSwgd2ViX3ZpZXcpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNU
ICh3ZWJfdmlldyksICJtaW1lLXR5cGUtcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCIsIEdfQ0FM
TEJBQ0sgKG1pbWVfdHlwZV9wb2xpY3lfZGVjaXNpb25fcmVxdWVzdGVkKSwgd2ViX3ZpZXcpOwog
CiAgICAgcmV0dXJuIHNjcm9sbGVkX3dpbmRvdzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18357</attachid>
            <date>2008-01-09 16:19:24 -0800</date>
            <delta_ts>2008-01-10 12:56:32 -0800</delta_ts>
            <desc>Small improvements and a fix</desc>
            <filename>policy-implementation-3.patch</filename>
            <type>text/plain</type>
            <size>16488</size>
            <attacher name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCShyw6l2aXNpb24gMjkzNDEpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTIsNiArMiw3
IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDA3IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ29sbGFib3JhIEx0ZC4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMTcsMjIgKzIxOCw2MiBAQAogICAgIG1fcmVz
cG9uc2UgPSByZXNwb25zZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9u
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQordm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0
aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBTdHJpbmcmIG1pbWUsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGNhbGwg
ZGlyZWN0bHkgaGVyZSAoY29tbWVudCBjb3BpZWQgZnJvbSBRdCB2ZXJzaW9uKQogICAgIEFTU0VS
VChwb2xpY3lGdW5jdGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKICAgICAgICAgcmV0
dXJuOwotICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xp
Y3lVc2UpOworCisgICAgV2ViS2l0V2ViVmlldyogcGFnZSA9IGdldFZpZXdGcm9tRnJhbWUobV9m
cmFtZSk7CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfbmV0d29y
a19yZXF1ZXN0X25ldyhyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgV2ViS2l0UG9saWN5UmVzcG9uc2UgcmVzcG9uc2U7CisgICAgZ19wcmludCgiKysg
U2lnbmFsIGZvciAlcyA6IiwgcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworCisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHBhZ2UsICJtaW1lLXR5cGUtcG9s
aWN5LWRlY2lzaW9uLXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3QsIG1pbWUudXRmOCgpLmRh
dGEoKSwgJnJlc3BvbnNlKTsKKworICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOworCisgICAg
aWYgKHJlc3BvbnNlID09IFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfRVJST1IpCisgICAgeworICAg
ICAgICAvLyByZXNwb25zZSB3aWxsIGJlIHNldCBFUlJPUiBpZiB0aGUgc2lnbmFsIGhhc24ndCBi
ZWVuIGhhbmRsZWQKKyAgICAgICAgLy8gQXBwbHkgZGVmYXVsdCBiZWhhdmlvcgorICAgICAgICBp
ZihjYW5TaG93TUlNRVR5cGUobWltZSkpCisgICAgICAgICAgICByZXNwb25zZSA9IFdFQktJVF9Q
T0xJQ1lfUkVTUE9OU0VfQUNDRVBUOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXNwb25z
ZSA9IFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfSUdOT1JFOworICAgIH0KKworICAgIAorICAgIGdf
cHJpbnQoIiAlZCBcbiIsIHJlc3BvbnNlKTsKKyAgICBpZiAocmVzcG9uc2UgPT0gV0VCS0lUX1BP
TElDWV9SRVNQT05TRV9BQ0NFUFQpIHsKKyAgICAgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigp
LT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9IGVs
c2UgaWYgKHJlc3BvbnNlID09IFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfRE9XTkxPQUQpIHsKKyAg
ICAgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeURv
d25sb2FkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAoY29yZShtX2ZyYW1lKS0+bG9h
ZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKKwogfQogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFt
ZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5
RnVuY3Rpb24gcG9saWN5RnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJikKIHsKICAgICBB
U1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9saWN5RnVuY3Rpb24pCiAgICAgICAg
IHJldHVybjsKLSAgICAvLyBGSVhNRTogSSB0aGluayBRdCB2ZXJzaW9uIG1hcnNoYWxzIHRoaXMg
dG8gYW5vdGhlciB0aHJlYWQgc28gd2hlbiB3ZQotICAgIC8vIGhhdmUgbXVsdGktdGhyZWFkZWQg
ZG93bmxvYWQsIHdlIG1pZ2h0IG5lZWQgdG8gZG8gdGhlIHNhbWUKKworICAgIFdlYktpdFdlYlZp
ZXcqIHBhZ2UgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOworICAgIFdlYktpdE5ldHdvcmtS
ZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcocmVzb3VyY2VSZXF1
ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIFdlYktpdFBvbGljeVJlc3Bv
bnNlIHJlc3BvbnNlOworCisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHBhZ2UsICJuZXctd2lu
ZG93LXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3QsICZyZXNwb25zZSk7CisKKyAgICBnX29i
amVjdF91bnJlZihyZXF1ZXN0KTsKKworICAgIGlmIChyZXNwb25zZSA9PSBXRUJLSVRfUE9MSUNZ
X1JFU1BPTlNFX0FDQ0VQVCkgeworICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipw
b2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0gCiAgICAg
KGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7
CiB9CiAKQEAgLTI0NCwxMyArMjg1LDEzIEBACiAKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKICAgICBXZWJLaXROZXR3b3JrUmVxdWVzdCog
cmVxdWVzdCA9IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3KHJlc291cmNlUmVxdWVzdC51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2Ug
cmVzcG9uc2U7CisgICAgV2ViS2l0UG9saWN5UmVzcG9uc2UgcmVzcG9uc2U7CiAKICAgICBnX3Np
Z25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgIm5hdmlnYXRpb24tcmVxdWVzdGVkIiwgbV9mcmFt
ZSwgcmVxdWVzdCwgJnJlc3BvbnNlKTsKIAogICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOwog
Ci0gICAgaWYgKHJlc3BvbnNlID09IFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNFX0lHTk9SRSkg
eworICAgIGlmIChyZXNwb25zZSA9PSBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRSkgewog
ICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5
SWdub3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYwMywxMCArNjQ0LDEwIEBACiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXJDbGllbnQ6OmNhblNob3dNSU1F
VHlwZShjb25zdCBTdHJpbmcmKSBjb25zdAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIHRydWU7Citib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5cGUoY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdCAKK3sgCisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0ZWQg
bWltZXN0eXBlcyBvZiBwbHVnaW5zCisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZSh0eXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGUodHlwZSk7CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnQ6OnJl
cHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0CkBAIC02
ODUsNiArNzI2LDcgQEAKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZG93bmxvYWQoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKIHsKKyAgICBnX3ByaW50KCJERUJVRyIpOwogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyw6l2aXNpb24gMjkzNDIpCisrKyBXZWJL
aXQvZ3RrL0NoYW5nZUxvZwkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTEsMyArMSwyNCBAQAorMjAw
OC0wMS0wOSAgUGllcnJlLUx1YyBCZWF1ZG9pbiAgPHBpZXJyZS1sdWMuYmVhdWRvaW5AY29sbGFi
b3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgVGhpcyBpbXBsZW1lbnRzIHRoZSBkZWxlZ2F0ZXMgbWV0aG9kcyBvZiBXZWJQ
b2xpY3lEZWxlZ2F0ZS4KKyAgICAgICAgU2luY2UgR3RrKy9DIGRvZXNuJ3QgaGF2ZSBkZWxlZ2F0
ZSBtZXRob2RzLCBJIHJlcGxhY2VkIHRoZW0gd2l0aCBzaWduYWxzLiAgCisgICAgICAgIEFsc28s
IHNpbmNlIFdlYlBvbGljeURlbGVnYXRlIG9ubHkgaGFzIDMgZGVsZWdhdGUsIEkgYWRkZWQgdGhl
bSB0byBXZWJWaWV3IAorICAgICAgICBpbnN0ZWFkIG9mIGNyZWF0aW5nIG5ldyBHT2JqZWN0IHdp
dGggb25seSAzIHNpZ25hbHMuCisKKyAgICAgICAgSSB0cmllZCB0byBjb3B5IHRoZSBiZWhhdmlv
ciBkZXNjcmliZWQgaW4gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi9D
b2NvYS9SZWZlcmVuY2UvV2ViS2l0L1Byb3RvY29scy9XZWJQb2xpY3lEZWxlZ2F0ZV9Qcm90b2Nv
bC9SZWZlcmVuY2UvUmVmZXJlbmNlLmh0bWwjLy9hcHBsZV9yZWYvb2NjL2luc3RtL05TT2JqZWN0
L3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpyZXF1ZXN0OmZyYW1lOmRl
Y2lzaW9uTGlzdGVuZXI6CisgICAgICAgIAorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6
OmNhblNob3dNSU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojpk
b3dubG9hZCk6CisgICAgICAgICogV2ViVmlldy93ZWJraXQtbWFyc2hhbC5saXN0OgorICAgICAg
ICAqIFdlYlZpZXcvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICogV2ViVmlldy93ZWJraXR3
ZWJ2aWV3Lmg6CisKIDIwMDgtMDEtMDkgIEx1Y2EgQnJ1bm8gIDxsZXRoYWxtYW44OEBnbWFpbC5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxwIFRva2VyLgpJbmRleDogV2ViS2l0L2d0ay9X
ZWJWaWV3L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViVmll
dy93ZWJraXR3ZWJ2aWV3LmNwcAkocsOpdmlzaW9uIDI5MzQxKQorKysgV2ViS2l0L2d0ay9XZWJW
aWV3L3dlYmtpdHdlYnZpZXcuY3BwCShjb3BpZSBkZSB0cmF2YWlsKQpAQCAtMyw2ICszLDcgQEAK
ICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2hyaXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AdHdvdG9h
c3RzLmRlPgogICogIENvcHlyaWdodCAoQykgMjAwNyBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+
CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiAg
Q29weXJpZ2h0IChDKSAyMDA3IENvbGxhYm9yYSBMdGQuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNTksNiArNjAsOCBAQAogZW51bSB7CiAgICAgLyogbm9y
bWFsIHNpZ25hbHMgKi8KICAgICBOQVZJR0FUSU9OX1JFUVVFU1RFRCwKKyAgICBNSU1FX1RZUEVf
UE9MSUNZX0RFQ0lTSU9OX1JFUVVFU1RFRCwKKyAgICBORVdfV0lORE9XX1JFUVVFU1RFRCwKICAg
ICBXSU5ET1dfT0JKRUNUX0NMRUFSRUQsCiAgICAgTE9BRF9TVEFSVEVELAogICAgIExPQURfQ09N
TUlUVEVELApAQCAtNDEyLDEyICs0MTUsMTkgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGlj
IFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9u
X3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXRO
ZXR3b3JrUmVxdWVzdCopCitzdGF0aWMgV2ViS2l0UG9saWN5UmVzcG9uc2Ugd2Via2l0X3dlYl92
aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYkZy
YW1lKiBmcmFtZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNFX0FDQ0VQVDsKKyAgICBy
ZXR1cm4gV0VCS0lUX1BPTElDWV9SRVNQT05TRV9BQ0NFUFQ7CiB9CiAKK3N0YXRpYyBXZWJLaXRQ
b2xpY3lSZXNwb25zZSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uZXdfd2luZG93X3JlcXVlc3RlZChX
ZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVz
dCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAvLyBGSVhNRTogQ2hhbmdlIHRoaXMg
dG8gYWNjZXB0IG9uY2UgaXQgaXMgaW1wbGVtZW50ZWQKKyAgICByZXR1cm4gV0VCS0lUX1BPTElD
WV9SRVNQT05TRV9JR05PUkU7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFs
X3dpbmRvd19vYmplY3RfY2xlYXJlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqLCBK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgd2luZG93X29iamVjdCkKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNTc1LDcgKzU4NSw3IEBACiAgIGludCBzaWduYWxI
YW5kbGVkID0gZ192YWx1ZV9nZXRfaW50KGhhbmRsZXJSZXR1cm4pOwogICBnX3ZhbHVlX3NldF9p
bnQocmV0dXJuQWNjdSwgc2lnbmFsSGFuZGxlZCk7CiAKLSAgaWYgKHNpZ25hbEhhbmRsZWQgIT0g
V0VCS0lUX05BVklHQVRJT05fUkVTUE9OU0VfQUNDRVBUKQorICBpZiAoc2lnbmFsSGFuZGxlZCAh
PSBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVCkKICAgICAgIGNvbnRpbnVlRW1pc3Npb24g
PSBGQUxTRTsKIAogICByZXR1cm4gY29udGludWVFbWlzc2lvbjsKQEAgLTU5Myw2ICs2MDMsMTUg
QEAKICAgICAgKiBTaWduYWxzCiAgICAgICovCiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJW
aWV3OjpuYXZpZ2F0aW9uLXJlcXVlc3RlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qg
b24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHdlYl9mcmFtZTogdGhlIGZy
YW1lIG9uIHdoaWNoIHRoZSBhY3Rpb24gCisgICAgICogQHJldHVybjogV0VCS0lUX1BPTElDWV9S
RVNQT05TRV9BQ0NFUFQgdG8gYWxsb3cgV2ViS2l0IHRvIGRpc3BsYXkgdGhpcyBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRSBub3QgdG8gZGlz
cGxheSB0aGlzIGxvY2F0aW9uCisgICAgICoKKyAgICAgKiBSb3V0ZXMgYSBuYXZpZ2F0aW9uIGFj
dGlvbiBpbnRlcm5hbGx5IG9yIHRvIGFuIGV4dGVybmFsIHZpZXdlci4KKyAgICAgKi8KICAgICB3
ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tOQVZJR0FUSU9OX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9u
ZXcoIm5hdmlnYXRpb24tcmVxdWVzdGVkIiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNT
KHdlYlZpZXdDbGFzcyksCiAgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5f
TEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCkBAIC02MDUsNiArNjI0LDUzIEBACiAgICAgICAgICAg
ICBHX1RZUEVfT0JKRUNUKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Om1pbWUt
dHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9i
amVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAd2ViX2ZyYW1lOiB0
aGUgZnJhbWUgb24gd2hpY2ggdGhlIGFjdGlvbiAKKyAgICAgKiBAbWltZXR5cGU6IHRoZSBNSU1F
IHR5cGUgYXR0ZW1wdGVkIHRvIGxvYWQKKyAgICAgKiBAcmV0dXJuOiBXRUJLSVRfUE9MSUNZX1JF
U1BPTlNFX0FDQ0VQVCB0byBhbGxvdyBXZWJLaXQgdG8gZGlzcGxheSB0aGlzIE1JTUUgdHlwZSwK
KyAgICAgICAgICAgICAgICBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRSB0byBtYWtlIFdl
YktpdCBpZ25vcmUgdGhpcyByZXNvdXJjZSwKKyAgICAgICAgICAgICAgICBXRUJLSVRfUE9MSUNZ
X1JFU1BPTlNFX0RPV05MT0FEIHRvIG1ha2UgV2ViS2l0IGRvd25sb2FkIHRoaXMgcmVzb3VyY2Uu
CisgICAgICoKKyAgICAgKiBEZWNpZGUgd2V0aGVyIHRvIGRpc3BsYXkgb2Ygbm90IHRoZSBnaXZl
biBNSU1FIHR5cGUuCisgICAgICogSWYgdGhpcyBzaWduYWwgaXMgbm90IGhhbmRsZWQsIHRoZSBk
ZWZhdWx0IGJlaGF2aW9yIGlzIGFzIGZvbGxvd3MuICBJZiBXZWJLaXQgY2FuIAorICAgICAqIHNo
b3cgdGhpcyBNSU1FIHR5cGUsIHRoZSBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVCB3aWxs
IGJlIHVzZWQsIGVsc2UgCisgICAgICogV0VCS0lUX1BPTElDWV9SRVNQT05TRV9JR05PUkUgd2ls
bCBiZSB1c2VkLgorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW01JTUVfVFlQ
RV9QT0xJQ1lfREVDSVNJT05fUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygibWltZS10eXBlLXBv
bGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mo
d2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9M
QVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBOVUxM
LAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0lOVF9fT0JK
RUNUX09CSkVDVF9TVFJJTkcsCisgICAgICAgICAgICBHX1RZUEVfSU5ULCAzLAorICAgICAgICAg
ICAgR19UWVBFX09CSkVDVCwgCisgICAgICAgICAgICBHX1RZUEVfT0JKRUNULCAKKyAgICAgICAg
ICAgIEdfVFlQRV9TVFJJTkcpOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bmV3
LXdpbmRvdy1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNo
IHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEB3ZWJfZnJhbWU6IHRoZSBmcmFtZSBvbiB3
aGljaCB0aGUgYWN0aW9uIAorICAgICAqIEByZXR1cm46IFdFQktJVF9QT0xJQ1lfUkVTUE9OU0Vf
QUNDRVBUIHRvIGFsbG93IFdlYktpdCB0byBkaXNwbGF5IGEgbmV3IHdpbmRvdywKKyAgICAgICAg
ICAgICAgICBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRSBub3QgdG8gZGlzcGxheSBhIG5l
dyB3aW5kb3cKKyAgICAgKgorICAgICAqIERlY2lkZXMgd2hldGhlciB0byBhbGxvdyBhIHRhcmdl
dGVkIG5hdmlnYXRpb24gZXZlbnQsIHN1Y2ggYXMgb3BlbmluZyBhIGxpbmsgaW4gYSBuZXcgd2lu
ZG93LgorICAgICAqIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIGFjY2VwdC4KKyAgICAgKi8K
KyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tORVdfV0lORE9XX1JFUVVFU1RFRF0gPSBnX3Np
Z25hbF9uZXcoIm5ldy13aW5kb3ctcmVxdWVzdGVkIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9N
X0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05B
TF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZT
RVQoV2ViS2l0V2ViVmlld0NsYXNzLCBuZXdfd2luZG93X3JlcXVlc3RlZCksCisgICAgICAgICAg
ICBOVUxMLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0lO
VF9fT0JKRUNUX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9JTlQsIDIsCisgICAgICAgICAg
ICBHX1RZUEVfT0JKRUNULCAKKyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QpOworCisgICAgLyoq
CiAgICAgICogV2ViS2l0V2ViVmlldzo6d2luZG93LW9iamVjdC1jbGVhcmVkOgogICAgICAqIEB3
ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAgICAg
KiBAZnJhbWU6IHRoZSAjV2ViS2l0V2ViRnJhbWUgdG8gd2hpY2ggQHdpbmRvd19vYmplY3QgYmVs
b25ncwpAQCAtOTAyLDYgKzk2OCw3IEBACiAgICAgICovCiAgICAgd2ViVmlld0NsYXNzLT5jcmVh
dGVfd2ViX3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVhdGVfd2ViX3ZpZXc7CiAgICAg
d2ViVmlld0NsYXNzLT5uYXZpZ2F0aW9uX3JlcXVlc3RlZCA9IHdlYmtpdF93ZWJfdmlld19yZWFs
X25hdmlnYXRpb25fcmVxdWVzdGVkOworICAgIHdlYlZpZXdDbGFzcy0+bmV3X3dpbmRvd19yZXF1
ZXN0ZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uZXdfd2luZG93X3JlcXVlc3RlZDsKICAgICB3
ZWJWaWV3Q2xhc3MtPndpbmRvd19vYmplY3RfY2xlYXJlZCA9IHdlYmtpdF93ZWJfdmlld19yZWFs
X3dpbmRvd19vYmplY3RfY2xlYXJlZDsKICAgICB3ZWJWaWV3Q2xhc3MtPmNob29zZV9maWxlID0g
d2Via2l0X3dlYl92aWV3X3JlYWxfY2hvb3NlX2ZpbGU7CiAgICAgd2ViVmlld0NsYXNzLT5zY3Jp
cHRfYWxlcnQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zY3JpcHRfYWxlcnQ7CkBAIC0xNDk0LDQg
KzE1NjEsMTYgQEAKICAgICByZXR1cm4gd2ViVmlld0RhdGEtPnBhc3RlX3RhcmdldF9saXN0Owog
fQogCitnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlIChXZWJLaXRX
ZWJWaWV3KiB3ZWJfdmlldywgY29uc3QgZ2NoYXIqIG1pbWVfdHlwZSkKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViX3ZpZXcpLCBGQUxTRSk7CisgICAg
CisgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUo
d2ViX3ZpZXcpKTsKKyAgICBpZiAoRnJhbWVMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIo
KSkKKyAgICAgICAgcmV0dXJuIGxvYWRlci0+Y2FuU2hvd01JTUVUeXBlKG1pbWVfdHlwZSk7Cisg
ICAgZWxzZQorICAgICAgICByZXR1cm4gRkFMU0U7CiB9CisKK30KKwpJbmRleDogV2ViS2l0L2d0
ay9XZWJWaWV3L3dlYmtpdC1tYXJzaGFsLmxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9X
ZWJWaWV3L3dlYmtpdC1tYXJzaGFsLmxpc3QJKHLDqXZpc2lvbiAyOTM0MSkKKysrIFdlYktpdC9n
dGsvV2ViVmlldy93ZWJraXQtbWFyc2hhbC5saXN0CShjb3BpZSBkZSB0cmF2YWlsKQpAQCAtMTAs
MyArMTAsNCBAQAogQk9PTEVBTjpPQkpFQ1QsU1RSSU5HLEJPT0xFQU4KIEJPT0xFQU46T0JKRUNU
LFNUUklORyxTVFJJTkcsU1RSSU5HCiBJTlQ6T0JKRUNULE9CSkVDVAorSU5UOk9CSkVDVCxPQkpF
Q1QsU1RSSU5HCkluZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2Vidmlldy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJ2aWV3LmgJKHLDqXZpc2lvbiAy
OTM0MSkKKysrIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJ2aWV3LmgJKGNvcGllIGRlIHRy
YXZhaWwpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIg
SGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA3IENvbGxhYm9yYSBMdGQu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNiwxMCArMzcs
MTEgQEAKIAogCiB0eXBlZGVmIGVudW0gewotICAgIFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNF
X0FDQ0VQVCwKLSAgICBXRUJLSVRfTkFWSUdBVElPTl9SRVNQT05TRV9JR05PUkUsCi0gICAgV0VC
S0lUX05BVklHQVRJT05fUkVTUE9OU0VfRE9XTkxPQUQKLX0gV2ViS2l0TmF2aWdhdGlvblJlc3Bv
bnNlOworICAgIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfRVJST1IgPSAwLAorICAgIFdFQktJVF9Q
T0xJQ1lfUkVTUE9OU0VfQUNDRVBULAorICAgIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfSUdOT1JF
LAorICAgIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfRE9XTkxPQUQKK30gV2ViS2l0UG9saWN5UmVz
cG9uc2U7CiAKIHR5cGVkZWYgZW51bQogewpAQCAtNjMsOSArNjUsMTAgQEAKICAgICBXZWJLaXRX
ZWJWaWV3KiAgKCpjcmVhdGVfd2ViX3ZpZXcpICAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwog
CiAgICAgLyoKLSAgICAgKiBUT0RPOiBGSVhNRTogQ3JlYXRlIHNvbWV0aGluZyBsaWtlIFdlYlBv
bGljeURlY2lzaW9uTGlzdGVuZXJfUHJvdG9jb2wgaW5zdGVhZAorICAgICAqIFBvbGljeSBoYW5k
bGVycwogICAgICAqLwotICAgIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSAoKm5hdmlnYXRpb25f
cmVxdWVzdGVkKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpOworICAgIFdlYktpdFBvbGljeVJlc3Bv
bnNlICgqbmF2aWdhdGlvbl9yZXF1ZXN0ZWQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCk7CisgICAg
V2ViS2l0UG9saWN5UmVzcG9uc2UgKCpuZXdfd2luZG93X3JlcXVlc3RlZCkgKFdlYktpdFdlYlZp
ZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0
KiByZXF1ZXN0KTsKIAogICAgIHZvaWQgKCp3aW5kb3dfb2JqZWN0X2NsZWFyZWQpIChXZWJLaXRX
ZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBKU0dsb2JhbENvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgd2luZG93X29iamVjdCk7CiAgICAgZ2NoYXIqICAgKCpj
aG9vc2VfZmlsZSkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IGdjaGFyKiBvbGRfZmlsZSk7CkBAIC0xNzQsNiArMTc3LDkgQEAKIFdFQktJVF9B
UEkgR3RrVGFyZ2V0TGlzdCoKIHdlYmtpdF93ZWJfdmlld19nZXRfcGFzdGVfdGFyZ2V0X2xpc3Qg
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpOwogCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRf
d2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgY29u
c3QgZ2NoYXIqIG1pbWVfdHlwZSk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1h
bmFnZXIuY3BwCShyw6l2aXNpb24gMjkzNDEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCShjb3BpZSBkZSB0cmF2YWlsKQpAQCAtOTMs
NiArOTMsNyBAQAogICAgIC8vIG9mIGh0bWwgcGFnZSBldmVuIGlmIGl0IGlzIGEgcmVkaXJlY3Qg
dGhhdCB3YXMgaGFuZGxlZCBpbnRlcm5hbGx5CiAgICAgLy8gY2FuIGJlIG9ic2VydmVkIGUuZy4g
b24gZ21haWwuY29tCiAgICAgQ1VSTCogaCA9IGQtPm1faGFuZGxlOworICAgIEFTU0VSVChoKTsK
ICAgICBsb25nIGh0dHBDb2RlID0gMDsKICAgICBDVVJMY29kZSBlcnIgPSBjdXJsX2Vhc3lfZ2V0
aW5mbyhoLCBDVVJMSU5GT19SRVNQT05TRV9DT0RFLCAmaHR0cENvZGUpOwogICAgIGlmIChDVVJM
RV9PSyA9PSBlcnIgJiYgaHR0cENvZGUgPj0gMzAwICYmIGh0dHBDb2RlIDwgNDAwKQpAQCAtNTE1
LDExICs1MTYsOCBAQAogICAgIGlmIChyZW1vdmVTY2hlZHVsZWRKb2Ioam9iKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKG1fZG93bmxvYWRUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAg
IFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBqb2ItPmdldEludGVybmFsKCk7Ci0gICAgICAg
IGQtPm1fY2FuY2VsbGVkID0gdHJ1ZTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmVtb3ZlRnJvbUN1
cmwoam9iKTsKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5h
bCgpOworICAgIGQtPm1fY2FuY2VsbGVkID0gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFu
Z2VMb2cJKHLDqXZpc2lvbiAyOTM0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCShjb3BpZSBkZSB0
cmF2YWlsKQpAQCAtMSwzICsxLDE2IEBACisyMDA4LTAxLTA5ICBQaWVycmUtTHVjIEJlYXVkb2lu
ICA8cGllcnJlLWx1Yy5iZWF1ZG9pbkBjb2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNpbmcgUG9saWN5SWdub3JlIHdpbGwg
Y2F1c2UgY3VybCB0byBjcmFzaCBiZWNhdXNlIHRoZSBlYXN5IGhhbmRsZQorICAgICAgICBpcyBj
bGVhbmVkIHVwIGJlZm9yZSB0aGUgZW5kIGZvciB0aGUgZG93bmxvYWRUaW1lckNhbGxiYWNrKCku
ICBVc2luZworICAgICAgICBkZWxheWVkIGNhbmNlbCBmb3IgYWxsIGpvYnMgc29sdmVzIHRoZSBw
cm9ibGVtLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUNhbGxiYWNrKTogdGhlIGhhbmRs
ZSBzaG91bGQgYWx3YXlzIGJlIHZhbGlkIGF0IHRoYXQgcG9pbnQKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6Y2FuY2VsKTogZm9yY2UgZGVsYXllZCBjYW5jZWwgZm9y
IGFsbCBqb2JzCisgICAgICAgICAgICAKKwogMjAwOC0wMS0wOSAgSm9obiBTdWxsaXZhbiAgPHN1
bGxpdmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuIGFuZCBB
bmRlcnMgQ2FybHNzb24K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18372</attachid>
            <date>2008-01-10 12:56:32 -0800</date>
            <delta_ts>2008-01-11 09:49:40 -0800</delta_ts>
            <desc>Removed the fix </desc>
            <filename>policy-implementation-4.patch</filename>
            <type>text/plain</type>
            <size>14565</size>
            <attacher name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCShyw6l2aXNpb24gMjkzNDEpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTIsNiArMiw3
IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDA3IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMTcsMjIgKzIxOCw2MiBAQAogICAgIG1fcmVz
cG9uc2UgPSByZXNwb25zZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9u
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQordm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0
aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBTdHJpbmcmIG1pbWUsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGNhbGwg
ZGlyZWN0bHkgaGVyZSAoY29tbWVudCBjb3BpZWQgZnJvbSBRdCB2ZXJzaW9uKQogICAgIEFTU0VS
VChwb2xpY3lGdW5jdGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKICAgICAgICAgcmV0
dXJuOwotICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xp
Y3lVc2UpOworCisgICAgV2ViS2l0V2ViVmlldyogcGFnZSA9IGdldFZpZXdGcm9tRnJhbWUobV9m
cmFtZSk7CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfbmV0d29y
a19yZXF1ZXN0X25ldyhyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgV2ViS2l0UG9saWN5UmVzcG9uc2UgcmVzcG9uc2U7CisKKyAgICBnX3NpZ25hbF9l
bWl0X2J5X25hbWUocGFnZSwgIm1pbWUtdHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkIiwg
bV9mcmFtZSwgcmVxdWVzdCwgbWltZS51dGY4KCkuZGF0YSgpLCAmcmVzcG9uc2UpOworCisgICAg
Z19vYmplY3RfdW5yZWYocmVxdWVzdCk7CisKKyAgICBpZiAocmVzcG9uc2UgPT0gV0VCS0lUX1BP
TElDWV9SRVNQT05TRV9FUlJPUikKKyAgICB7CisgICAgICAgIC8vIHJlc3BvbnNlIHdpbGwgYmUg
c2V0IEVSUk9SIGlmIHRoZSBzaWduYWwgaGFzbid0IGJlZW4gaGFuZGxlZAorICAgICAgICAvLyBB
cHBseSBkZWZhdWx0IGJlaGF2aW9yCisgICAgICAgIGlmKGNhblNob3dNSU1FVHlwZShtaW1lKSkK
KyAgICAgICAgICAgIHJlc3BvbnNlID0gV0VCS0lUX1BPTElDWV9SRVNQT05TRV9BQ0NFUFQ7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3BvbnNlID0gV0VCS0lUX1BPTElDWV9SRVNQT05T
RV9JR05PUkU7CisgICAgfQorCisgICAgCisgICAgZ19wcmludCgiICVkIFxuIiwgcmVzcG9uc2Up
OworICAgIGlmIChyZXNwb25zZSA9PSBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVCkgewor
ICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5
VXNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0gZWxzZSBpZiAocmVzcG9uc2UgPT0gV0VCS0lU
X1BPTElDWV9SRVNQT05TRV9ET1dOTE9BRCkgeworICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9h
ZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5RG93bmxvYWQpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQ
b2xpY3lJZ25vcmUpOworCiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVu
Y3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBTdHJpbmcmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0LCBjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VSVChwb2xpY3lGdW5jdGlvbik7CiAg
ICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBJ
IHRoaW5rIFF0IHZlcnNpb24gbWFyc2hhbHMgdGhpcyB0byBhbm90aGVyIHRocmVhZCBzbyB3aGVu
IHdlCi0gICAgLy8gaGF2ZSBtdWx0aS10aHJlYWRlZCBkb3dubG9hZCwgd2UgbWlnaHQgbmVlZCB0
byBkbyB0aGUgc2FtZQorCisgICAgV2ViS2l0V2ViVmlldyogcGFnZSA9IGdldFZpZXdGcm9tRnJh
bWUobV9mcmFtZSk7CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRf
bmV0d29ya19yZXF1ZXN0X25ldyhyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgV2ViS2l0UG9saWN5UmVzcG9uc2UgcmVzcG9uc2U7CisKKyAgICBnX3Np
Z25hbF9lbWl0X2J5X25hbWUocGFnZSwgIm5ldy13aW5kb3ctcmVxdWVzdGVkIiwgbV9mcmFtZSwg
cmVxdWVzdCwgJnJlc3BvbnNlKTsKKworICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOworCisg
ICAgaWYgKHJlc3BvbnNlID09IFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfQUNDRVBUKSB7CisgICAg
ICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2Up
OworICAgICAgICByZXR1cm47CisgICAgfSAKICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCkt
Pipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKIH0KIApAQCAtMjQ0LDEzICsyODUsMTMg
QEAKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJh
bWUpOwogICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtf
cmVxdWVzdF9uZXcocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwotICAgIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSByZXNwb25zZTsKKyAgICBXZWJLaXRQb2xp
Y3lSZXNwb25zZSByZXNwb25zZTsKIAogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3
LCAibmF2aWdhdGlvbi1yZXF1ZXN0ZWQiLCBtX2ZyYW1lLCByZXF1ZXN0LCAmcmVzcG9uc2UpOwog
CiAgICAgZ19vYmplY3RfdW5yZWYocmVxdWVzdCk7CiAKLSAgICBpZiAocmVzcG9uc2UgPT0gV0VC
S0lUX05BVklHQVRJT05fUkVTUE9OU0VfSUdOT1JFKSB7CisgICAgaWYgKHJlc3BvbnNlID09IFdF
QktJVF9QT0xJQ1lfUkVTUE9OU0VfSUdOT1JFKSB7CiAgICAgICAgIChjb3JlKG1fZnJhbWUpLT5s
b2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lJZ25vcmUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtNjAzLDEwICs2NDQsMTAgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYpIGNvbnN0
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKK2Jvb2wgRnJhbWVM
b2FkZXJDbGllbnQ6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0IAor
eyAKKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnRlZCBtaW1lc3R5cGVzIG9mIHBsdWdpbnMKKyAg
ICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKHR5cGUp
IHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZSh0eXBlKTsK
IH0KIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxT
Y2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3QKQEAgLTY4NSw2ICs3MjYsNyBAQAogCiB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50Ojpkb3dubG9hZChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KQogeworICAgIGdfcHJpbnQoIkRFQlVHIik7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIApJ
bmRleDogV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9DaGFu
Z2VMb2cJKHLDqXZpc2lvbiAyOTM0MikKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShjb3BpZSBk
ZSB0cmF2YWlsKQpAQCAtMSwzICsxLDI0IEBACisyMDA4LTAxLTA5ICBQaWVycmUtTHVjIEJlYXVk
b2luICA8cGllcnJlLWx1Yy5iZWF1ZG9pbkBjb2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGltcGxlbWVu
dHMgdGhlIGRlbGVnYXRlcyBtZXRob2RzIG9mIFdlYlBvbGljeURlbGVnYXRlLgorICAgICAgICBT
aW5jZSBHdGsrL0MgZG9lc24ndCBoYXZlIGRlbGVnYXRlIG1ldGhvZHMsIEkgcmVwbGFjZWQgdGhl
bSB3aXRoIHNpZ25hbHMuICAKKyAgICAgICAgQWxzbywgc2luY2UgV2ViUG9saWN5RGVsZWdhdGUg
b25seSBoYXMgMyBkZWxlZ2F0ZSwgSSBhZGRlZCB0aGVtIHRvIFdlYlZpZXcgCisgICAgICAgIGlu
c3RlYWQgb2YgY3JlYXRpbmcgbmV3IEdPYmplY3Qgd2l0aCBvbmx5IDMgc2lnbmFscy4KKworICAg
ICAgICBJIHRyaWVkIHRvIGNvcHkgdGhlIGJlaGF2aW9yIGRlc2NyaWJlZCBpbiBodHRwOi8vZGV2
ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL0NvY29hL1JlZmVyZW5jZS9XZWJLaXQvUHJv
dG9jb2xzL1dlYlBvbGljeURlbGVnYXRlX1Byb3RvY29sL1JlZmVyZW5jZS9SZWZlcmVuY2UuaHRt
bCMvL2FwcGxlX3JlZi9vY2MvaW5zdG0vTlNPYmplY3Qvd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uOnJlcXVlc3Q6ZnJhbWU6ZGVjaXNpb25MaXN0ZW5lcjoKKyAgICAgICAg
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JN
SU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVUeXBlKToKKyAgICAg
ICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRvd25sb2FkKToKKyAgICAgICAgKiBXZWJW
aWV3L3dlYmtpdC1tYXJzaGFsLmxpc3Q6CisgICAgICAgICogV2ViVmlldy93ZWJraXR3ZWJ2aWV3
LmNwcDoKKyAgICAgICAgKiBXZWJWaWV3L3dlYmtpdHdlYnZpZXcuaDoKKwogMjAwOC0wMS0wOSAg
THVjYSBCcnVubyAgPGxldGhhbG1hbjg4QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbHAgVG9rZXIuCkluZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2Vidmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHdlYnZpZXcuY3BwCShyw6l2
aXNpb24gMjkzNDEpCisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2Vidmlldy5jcHAJKGNv
cGllIGRlIHRyYXZhaWwpCkBAIC0zLDYgKzMsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwNyBD
aHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkB0d290b2FzdHMuZGU+CiAgKiAgQ29weXJpZ2h0IChD
KSAyMDA3IFhhbiBMb3BleiA8eGFuQGdub21lLm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcg
QWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFi
b3JhIEx0ZC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01
OSw2ICs2MCw4IEBACiBlbnVtIHsKICAgICAvKiBub3JtYWwgc2lnbmFscyAqLwogICAgIE5BVklH
QVRJT05fUkVRVUVTVEVELAorICAgIE1JTUVfVFlQRV9QT0xJQ1lfREVDSVNJT05fUkVRVUVTVEVE
LAorICAgIE5FV19XSU5ET1dfUkVRVUVTVEVELAogICAgIFdJTkRPV19PQkpFQ1RfQ0xFQVJFRCwK
ICAgICBMT0FEX1NUQVJURUQsCiAgICAgTE9BRF9DT01NSVRURUQsCkBAIC00MTIsMTIgKzQxNSwx
OSBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNl
IHdlYmtpdF93ZWJfdmlld19yZWFsX25hdmlnYXRpb25fcmVxdWVzdGVkKFdlYktpdFdlYlZpZXcq
LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KikKK3N0YXRpYyBX
ZWJLaXRQb2xpY3lSZXNwb25zZSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9uX3JlcXVl
c3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3Jr
UmVxdWVzdCopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gV0VCS0lUX05B
VklHQVRJT05fUkVTUE9OU0VfQUNDRVBUOworICAgIHJldHVybiBXRUJLSVRfUE9MSUNZX1JFU1BP
TlNFX0FDQ0VQVDsKIH0KIAorc3RhdGljIFdlYktpdFBvbGljeVJlc3BvbnNlIHdlYmtpdF93ZWJf
dmlld19yZWFsX25ld193aW5kb3dfcmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJG
cmFtZSogZnJhbWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhpcyB0byBhY2NlcHQgb25jZSBpdCBpcyBpbXBs
ZW1lbnRlZAorICAgIHJldHVybiBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRTsKK30KKwog
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfd2luZG93X29iamVjdF9jbGVhcmVkKFdl
YktpdFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSosIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiB3aW5kb3dfb2JqZWN0KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBA
IC01NzUsNyArNTg1LDcgQEAKICAgaW50IHNpZ25hbEhhbmRsZWQgPSBnX3ZhbHVlX2dldF9pbnQo
aGFuZGxlclJldHVybik7CiAgIGdfdmFsdWVfc2V0X2ludChyZXR1cm5BY2N1LCBzaWduYWxIYW5k
bGVkKTsKIAotICBpZiAoc2lnbmFsSGFuZGxlZCAhPSBXRUJLSVRfTkFWSUdBVElPTl9SRVNQT05T
RV9BQ0NFUFQpCisgIGlmIChzaWduYWxIYW5kbGVkICE9IFdFQktJVF9QT0xJQ1lfUkVTUE9OU0Vf
QUNDRVBUKQogICAgICAgY29udGludWVFbWlzc2lvbiA9IEZBTFNFOwogCiAgIHJldHVybiBjb250
aW51ZUVtaXNzaW9uOwpAQCAtNTkzLDYgKzYwMywxNSBAQAogICAgICAqIFNpZ25hbHMKICAgICAg
Ki8KIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Om5hdmlnYXRpb24tcmVxdWVzdGVk
OgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVt
aXR0ZWQKKyAgICAgKiBAd2ViX2ZyYW1lOiB0aGUgZnJhbWUgb24gd2hpY2ggdGhlIGFjdGlvbiAK
KyAgICAgKiBAcmV0dXJuOiBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVCB0byBhbGxvdyBX
ZWJLaXQgdG8gZGlzcGxheSB0aGlzIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgIFdFQktJVF9Q
T0xJQ1lfUkVTUE9OU0VfSUdOT1JFIG5vdCB0byBkaXNwbGF5IHRoaXMgbG9jYXRpb24KKyAgICAg
KgorICAgICAqIFJvdXRlcyBhIG5hdmlnYXRpb24gYWN0aW9uIGludGVybmFsbHkgb3IgdG8gYW4g
ZXh0ZXJuYWwgdmlld2VyLgorICAgICAqLwogICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW05B
VklHQVRJT05fUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygibmF2aWdhdGlvbi1yZXF1ZXN0ZWQi
LAogICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKICAgICAgICAg
ICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwK
QEAgLTYwNSw2ICs2MjQsNTMgQEAKICAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QpOwogCiAgICAg
LyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bWltZS10eXBlLXBvbGljeS1kZWNpc2lvbi1yZXF1
ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwg
aXMgZW1pdHRlZAorICAgICAqIEB3ZWJfZnJhbWU6IHRoZSBmcmFtZSBvbiB3aGljaCB0aGUgYWN0
aW9uIAorICAgICAqIEBtaW1ldHlwZTogdGhlIE1JTUUgdHlwZSBhdHRlbXB0ZWQgdG8gbG9hZAor
ICAgICAqIEByZXR1cm46IFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfQUNDRVBUIHRvIGFsbG93IFdl
YktpdCB0byBkaXNwbGF5IHRoaXMgTUlNRSB0eXBlLAorICAgICAgICAgICAgICAgIFdFQktJVF9Q
T0xJQ1lfUkVTUE9OU0VfSUdOT1JFIHRvIG1ha2UgV2ViS2l0IGlnbm9yZSB0aGlzIHJlc291cmNl
LAorICAgICAgICAgICAgICAgIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfRE9XTkxPQUQgdG8gbWFr
ZSBXZWJLaXQgZG93bmxvYWQgdGhpcyByZXNvdXJjZS4KKyAgICAgKgorICAgICAqIERlY2lkZSB3
aGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IHRoZSBnaXZlbiBNSU1FIHR5cGUuCisgICAgICogSWYg
dGhpcyBzaWduYWwgaXMgbm90IGhhbmRsZWQsIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIGFzIGZv
bGxvd3MuICBJZiBXZWJLaXQgY2FuIAorICAgICAqIHNob3cgdGhpcyBNSU1FIHR5cGUsIHRoZSBX
RUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVCB3aWxsIGJlIHVzZWQsIGVsc2UgCisgICAgICog
V0VCS0lUX1BPTElDWV9SRVNQT05TRV9JR05PUkUgd2lsbCBiZSB1c2VkLgorICAgICAqLworICAg
IHdlYmtpdF93ZWJfdmlld19zaWduYWxzW01JTUVfVFlQRV9QT0xJQ1lfREVDSVNJT05fUkVRVUVT
VEVEXSA9IGdfc2lnbmFsX25ldygibWltZS10eXBlLXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQi
LAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAg
ICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwK
KyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgTlVMTCwKKyAg
ICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0lOVF9fT0JKRUNUX09CSkVDVF9TVFJJTkcsCisgICAg
ICAgICAgICBHX1RZUEVfSU5ULCAzLAorICAgICAgICAgICAgR19UWVBFX09CSkVDVCwgCisgICAg
ICAgICAgICBHX1RZUEVfT0JKRUNULCAKKyAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcpOworCisg
ICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bmV3LXdpbmRvdy1yZXF1ZXN0ZWQ6CisgICAg
ICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAor
ICAgICAqIEB3ZWJfZnJhbWU6IHRoZSBmcmFtZSBvbiB3aGljaCB0aGUgYWN0aW9uIAorICAgICAq
IEByZXR1cm46IFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfQUNDRVBUIHRvIGFsbG93IFdlYktpdCB0
byBkaXNwbGF5IGEgbmV3IHdpbmRvdywKKyAgICAgICAgICAgICAgICBXRUJLSVRfUE9MSUNZX1JF
U1BPTlNFX0lHTk9SRSBub3QgdG8gZGlzcGxheSBhIG5ldyB3aW5kb3cKKyAgICAgKgorICAgICAq
IERlY2lkZXMgd2hldGhlciBvciBub3QgdG8gYWxsb3cgYSB0YXJnZXRlZCBuYXZpZ2F0aW9uIGV2
ZW50LCBzdWNoIGFzIG9wZW5pbmcgYSBsaW5rIGluIGEgbmV3IHdpbmRvdy4KKyAgICAgKiBUaGUg
ZGVmYXVsdCBiZWhhdmlvciBpcyB0byBhY2NlcHQuCisgICAgICovCisgICAgd2Via2l0X3dlYl92
aWV3X3NpZ25hbHNbTkVXX1dJTkRPV19SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJuZXctd2lu
ZG93LXJlcXVlc3RlZCIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xh
c3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJ
R05BTF9BQ1RJT04pLAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdD
bGFzcywgbmV3X3dpbmRvd19yZXF1ZXN0ZWQpLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAg
ICAgIE5VTEwsCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9JTlRfX09CSkVDVF9PQkpFQ1Qs
CisgICAgICAgICAgICBHX1RZUEVfSU5ULCAyLAorICAgICAgICAgICAgR19UWVBFX09CSkVDVCwg
CisgICAgICAgICAgICBHX1RZUEVfT0JKRUNUKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFdl
YlZpZXc6OndpbmRvdy1vYmplY3QtY2xlYXJlZDoKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmpl
Y3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCiAgICAgICogQGZyYW1lOiB0aGUgI1dl
YktpdFdlYkZyYW1lIHRvIHdoaWNoIEB3aW5kb3dfb2JqZWN0IGJlbG9uZ3MKQEAgLTkwMiw2ICs5
NjgsNyBAQAogICAgICAqLwogICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlX3dlYl92aWV3ID0gd2Vi
a2l0X3dlYl92aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3OwogICAgIHdlYlZpZXdDbGFzcy0+bmF2
aWdhdGlvbl9yZXF1ZXN0ZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9uX3JlcXVl
c3RlZDsKKyAgICB3ZWJWaWV3Q2xhc3MtPm5ld193aW5kb3dfcmVxdWVzdGVkID0gd2Via2l0X3dl
Yl92aWV3X3JlYWxfbmV3X3dpbmRvd19yZXF1ZXN0ZWQ7CiAgICAgd2ViVmlld0NsYXNzLT53aW5k
b3dfb2JqZWN0X2NsZWFyZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0X2Ns
ZWFyZWQ7CiAgICAgd2ViVmlld0NsYXNzLT5jaG9vc2VfZmlsZSA9IHdlYmtpdF93ZWJfdmlld19y
ZWFsX2Nob29zZV9maWxlOwogICAgIHdlYlZpZXdDbGFzcy0+c2NyaXB0X2FsZXJ0ID0gd2Via2l0
X3dlYl92aWV3X3JlYWxfc2NyaXB0X2FsZXJ0OwpAQCAtMTQ5NCw0ICsxNTYxLDE2IEBACiAgICAg
cmV0dXJuIHdlYlZpZXdEYXRhLT5wYXN0ZV90YXJnZXRfbGlzdDsKIH0KIAorZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcs
IGNvbnN0IGdjaGFyKiBtaW1lX3R5cGUpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXKHdlYl92aWV3KSwgRkFMU0UpOworICAgIAorICAgIEZyYW1lKiBmcmFt
ZSA9IGNvcmUod2Via2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1lKHdlYl92aWV3KSk7CisgICAg
aWYgKEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkpCisgICAgICAgIHJldHVy
biBsb2FkZXItPmNhblNob3dNSU1FVHlwZShtaW1lX3R5cGUpOworICAgIGVsc2UKKyAgICAgICAg
cmV0dXJuIEZBTFNFOwogfQorCit9CisKSW5kZXg6IFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXQt
bWFyc2hhbC5saXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXQtbWFy
c2hhbC5saXN0CShyw6l2aXNpb24gMjkzNDEpCisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0
LW1hcnNoYWwubGlzdAkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTEwLDMgKzEwLDQgQEAKIEJPT0xF
QU46T0JKRUNULFNUUklORyxCT09MRUFOCiBCT09MRUFOOk9CSkVDVCxTVFJJTkcsU1RSSU5HLFNU
UklORwogSU5UOk9CSkVDVCxPQkpFQ1QKK0lOVDpPQkpFQ1QsT0JKRUNULFNUUklORwpJbmRleDog
V2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHdlYnZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Z3RrL1dlYlZpZXcvd2Via2l0d2Vidmlldy5oCShyw6l2aXNpb24gMjkzNDEpCisrKyBXZWJLaXQv
Z3RrL1dlYlZpZXcvd2Via2l0d2Vidmlldy5oCShjb3BpZSBkZSB0cmF2YWlsKQpAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsMTAgKzM3LDExIEBACiAKIAogdHlwZWRl
ZiBlbnVtIHsKLSAgICBXRUJLSVRfTkFWSUdBVElPTl9SRVNQT05TRV9BQ0NFUFQsCi0gICAgV0VC
S0lUX05BVklHQVRJT05fUkVTUE9OU0VfSUdOT1JFLAotICAgIFdFQktJVF9OQVZJR0FUSU9OX1JF
U1BPTlNFX0RPV05MT0FECi19IFdlYktpdE5hdmlnYXRpb25SZXNwb25zZTsKKyAgICBXRUJLSVRf
UE9MSUNZX1JFU1BPTlNFX0VSUk9SID0gMCwKKyAgICBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FD
Q0VQVCwKKyAgICBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRSwKKyAgICBXRUJLSVRfUE9M
SUNZX1JFU1BPTlNFX0RPV05MT0FECit9IFdlYktpdFBvbGljeVJlc3BvbnNlOwogCiB0eXBlZGVm
IGVudW0KIHsKQEAgLTYzLDkgKzY1LDEwIEBACiAgICAgV2ViS2l0V2ViVmlldyogICgqY3JlYXRl
X3dlYl92aWV3KSAgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKIAogICAgIC8qCi0gICAgICog
VE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhpbmcgbGlrZSBXZWJQb2xpY3lEZWNpc2lvbkxpc3Rl
bmVyX1Byb3RvY29sIGluc3RlYWQKKyAgICAgKiBQb2xpY3kgaGFuZGxlcnMKICAgICAgKi8KLSAg
ICBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2UgKCpuYXZpZ2F0aW9uX3JlcXVlc3RlZCkgKFdlYktp
dFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdE5ldHdvcmtS
ZXF1ZXN0KiByZXF1ZXN0KTsKKyAgICBXZWJLaXRQb2xpY3lSZXNwb25zZSAoKm5hdmlnYXRpb25f
cmVxdWVzdGVkKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpOworICAgIFdlYktpdFBvbGljeVJlc3Bv
bnNlICgqbmV3X3dpbmRvd19yZXF1ZXN0ZWQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCk7CiAKICAg
ICB2b2lkICgqd2luZG93X29iamVjdF9jbGVhcmVkKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcs
IFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIHdpbmRvd19vYmplY3QpOwogICAgIGdjaGFyKiAgICgqY2hvb3NlX2ZpbGUpIChXZWJL
aXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciog
b2xkX2ZpbGUpOwpAQCAtMTc0LDYgKzE3Nyw5IEBACiBXRUJLSVRfQVBJIEd0a1RhcmdldExpc3Qq
CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Bhc3RlX3RhcmdldF9saXN0IChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl92aWV3X2Nhbl9zaG93
X21pbWVfdHlwZSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIGNvbnN0IGdjaGFyKiBtaW1lX3R5
cGUpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18394</attachid>
            <date>2008-01-11 09:49:40 -0800</date>
            <delta_ts>2008-01-21 12:36:04 -0800</delta_ts>
            <desc>Applied comments and more</desc>
            <filename>policy-implementation-4.patch</filename>
            <type>text/plain</type>
            <size>18096</size>
            <attacher name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCShyw6l2aXNpb24gMjkzNDEpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTIsNiArMiw3
IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDA3IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMTcsMjIgKzIxOCw4OCBAQAogICAgIG1fcmVz
cG9uc2UgPSByZXNwb25zZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9u
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQordm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0
aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBTdHJpbmcmIG1pbWUsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGNhbGwg
ZGlyZWN0bHkgaGVyZSAoY29tbWVudCBjb3BpZWQgZnJvbSBRdCB2ZXJzaW9uKQogICAgIEFTU0VS
VChwb2xpY3lGdW5jdGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKICAgICAgICAgcmV0
dXJuOwotICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xp
Y3lVc2UpOworCisgICAgV2ViS2l0V2ViVmlldyogcGFnZSA9IGdldFZpZXdGcm9tRnJhbWUobV9m
cmFtZSk7CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfbmV0d29y
a19yZXF1ZXN0X25ldyhyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgV2ViS2l0UG9saWN5UmVzcG9uc2UgcmVzcG9uc2U7CisKKyAgICBnX3NpZ25hbF9l
bWl0X2J5X25hbWUocGFnZSwgIm1pbWUtdHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkIiwg
bV9mcmFtZSwgcmVxdWVzdCwgbWltZS51dGY4KCkuZGF0YSgpLCAmcmVzcG9uc2UpOworCisgICAg
Z19vYmplY3RfdW5yZWYocmVxdWVzdCk7CisKKyAgICBpZiAocmVzcG9uc2UgPT0gV0VCS0lUX1BP
TElDWV9SRVNQT05TRV9FUlJPUikKKyAgICB7CisgICAgICAgIC8vIHJlc3BvbnNlIHdpbGwgYmUg
c2V0IEVSUk9SIGlmIHRoZSBzaWduYWwgaGFzbid0IGJlZW4gaGFuZGxlZAorICAgICAgICAvLyBB
cHBseSBkZWZhdWx0IGJlaGF2aW9yCisgICAgICAgIGlmKGNhblNob3dNSU1FVHlwZShtaW1lKSkK
KyAgICAgICAgICAgIHJlc3BvbnNlID0gV0VCS0lUX1BPTElDWV9SRVNQT05TRV9BQ0NFUFQ7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3BvbnNlID0gV0VCS0lUX1BPTElDWV9SRVNQT05T
RV9JR05PUkU7CisgICAgfQorCisgICAgCisgICAgaWYgKHJlc3BvbnNlID09IFdFQktJVF9QT0xJ
Q1lfUkVTUE9OU0VfQUNDRVBUKSB7CisgICAgICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+
KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICByZXR1cm47CisgICAgfSBlbHNl
IGlmIChyZXNwb25zZSA9PSBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0RPV05MT0FEKSB7CisgICAg
ICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lEb3du
bG9hZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgKGNvcmUobV9mcmFtZSktPmxvYWRl
cigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7CisKIH0KIAotdm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQ
b2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1
bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmKQogewog
ICAgIEFTU0VSVChwb2xpY3lGdW5jdGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKICAg
ICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBJIHRoaW5rIFF0IHZlcnNpb24gbWFyc2hhbHMg
dGhpcyB0byBhbm90aGVyIHRocmVhZCBzbyB3aGVuIHdlCi0gICAgLy8gaGF2ZSBtdWx0aS10aHJl
YWRlZCBkb3dubG9hZCwgd2UgbWlnaHQgbmVlZCB0byBkbyB0aGUgc2FtZQorCisgICAgV2ViS2l0
V2ViVmlldyogcGFnZSA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7CisgICAgV2ViS2l0TmV0
d29ya1JlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X25ldyhyZXNvdXJj
ZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgV2ViS2l0UG9saWN5
UmVzcG9uc2UgcmVzcG9uc2U7CisgICAgR0hhc2hUYWJsZSAqIGFjdGlvbkluZm9ybWF0aW9uID0g
Z19oYXNoX3RhYmxlX25ldyhOVUxMLCBOVUxMKTsKKworICAgIFdlYktpdE5hdmlnYXRpb25UeXBl
IG5hdmlnYXRpb25UeXBlID0gV0VCS0lUX05BVklHQVRJT05fVFlQRV9PVEhFUjsKKworICAgIHN3
aXRjaCAoYWN0aW9uLnR5cGUoKSkgeworICAgIGNhc2UgTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tl
ZDoKKyAgICAgICAgbmF2aWdhdGlvblR5cGUgPSBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX0xJTktf
Q0xJQ0tFRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlwZUZvcm1TdWJt
aXR0ZWQ6CisgICAgICAgIG5hdmlnYXRpb25UeXBlID0gV0VCS0lUX05BVklHQVRJT05fVFlQRV9G
T1JNX1NVQk1JVFRFRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlwZUJh
Y2tGb3J3YXJkOgorICAgICAgICBuYXZpZ2F0aW9uVHlwZSA9IFdFQktJVF9OQVZJR0FUSU9OX1RZ
UEVfQkFDS19GT1JXQVJEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5hdmlnYXRpb25UeXBl
UmVsb2FkOgorICAgICAgICBuYXZpZ2F0aW9uVHlwZSA9IFdFQktJVF9OQVZJR0FUSU9OX1RZUEVf
UkVMT0FEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5hdmlnYXRpb25UeXBlRm9ybVJlc3Vi
bWl0dGVkOgorICAgICAgICBuYXZpZ2F0aW9uVHlwZSA9IFdFQktJVF9OQVZJR0FUSU9OX1RZUEVf
Rk9STV9SRVNVQk1JVFRFRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlw
ZU90aGVyOgorICAgIGRlZmF1bHQ6CisgICAgICAgIG5hdmlnYXRpb25UeXBlID0gV0VCS0lUX05B
VklHQVRJT05fVFlQRV9PVEhFUjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZ19oYXNo
X3RhYmxlX2luc2VydChhY3Rpb25JbmZvcm1hdGlvbiwgKHZvaWQqKVdFQktJVF9BQ1RJT05fTkFW
SUdBVElPTl9UWVBFLCAodm9pZCopbmF2aWdhdGlvblR5cGUpOworCisgICAgZ19zaWduYWxfZW1p
dF9ieV9uYW1lKHBhZ2UsICJuZXctd2luZG93LXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3Qs
IGFjdGlvbkluZm9ybWF0aW9uLCAmcmVzcG9uc2UpOworCisgICAgZ19oYXNoX3RhYmxlX2Rlc3Ry
b3koYWN0aW9uSW5mb3JtYXRpb24pOworICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOworCisg
ICAgaWYgKHJlc3BvbnNlID09IFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfQUNDRVBUKSB7CisgICAg
ICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2Up
OworICAgICAgICByZXR1cm47CisgICAgfSAKICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCkt
Pipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKIH0KIApAQCAtMjQ0LDEzICszMTEsNDEg
QEAKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJh
bWUpOwogICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtf
cmVxdWVzdF9uZXcocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwotICAgIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSByZXNwb25zZTsKKyAgICBXZWJLaXRQb2xp
Y3lSZXNwb25zZSByZXNwb25zZTsgICAgCisgICAgR0hhc2hUYWJsZSAqIGFjdGlvbkluZm9ybWF0
aW9uID0gZ19oYXNoX3RhYmxlX25ldyhOVUxMLCBOVUxMKTsKIAotICAgIGdfc2lnbmFsX2VtaXRf
YnlfbmFtZSh3ZWJWaWV3LCAibmF2aWdhdGlvbi1yZXF1ZXN0ZWQiLCBtX2ZyYW1lLCByZXF1ZXN0
LCAmcmVzcG9uc2UpOworICAgIFdlYktpdE5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlID0g
V0VCS0lUX05BVklHQVRJT05fVFlQRV9PVEhFUjsKIAorICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUo
KSkgeworICAgIGNhc2UgTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZDoKKyAgICAgICAgbmF2aWdh
dGlvblR5cGUgPSBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX0xJTktfQ0xJQ0tFRDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlwZUZvcm1TdWJtaXR0ZWQ6CisgICAgICAgIG5h
dmlnYXRpb25UeXBlID0gV0VCS0lUX05BVklHQVRJT05fVFlQRV9GT1JNX1NVQk1JVFRFRDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlwZUJhY2tGb3J3YXJkOgorICAgICAg
ICBuYXZpZ2F0aW9uVHlwZSA9IFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfQkFDS19GT1JXQVJEOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIE5hdmlnYXRpb25UeXBlUmVsb2FkOgorICAgICAgICBu
YXZpZ2F0aW9uVHlwZSA9IFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfUkVMT0FEOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkOgorICAgICAgICBu
YXZpZ2F0aW9uVHlwZSA9IFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfRk9STV9SRVNVQk1JVFRFRDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlwZU90aGVyOgorICAgIGRlZmF1
bHQ6CisgICAgICAgIG5hdmlnYXRpb25UeXBlID0gV0VCS0lUX05BVklHQVRJT05fVFlQRV9PVEhF
UjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZ19oYXNoX3RhYmxlX2luc2VydChhY3Rp
b25JbmZvcm1hdGlvbiwgKHZvaWQqKVdFQktJVF9BQ1RJT05fTkFWSUdBVElPTl9UWVBFLCAodm9p
ZCopbmF2aWdhdGlvblR5cGUpOworCisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcs
ICJuYXZpZ2F0aW9uLXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3QsIGFjdGlvbkluZm9ybWF0
aW9uLCAmcmVzcG9uc2UpOworCisgICAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3koYWN0aW9uSW5mb3Jt
YXRpb24pOwogICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOwogCi0gICAgaWYgKHJlc3BvbnNl
ID09IFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNFX0lHTk9SRSkgeworICAgIGlmIChyZXNwb25z
ZSA9PSBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRSkgewogICAgICAgICAoY29yZShtX2Zy
YW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTYwMywxMCArNjk4LDEwIEBACiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgRnJhbWVMb2FkZXJDbGllbnQ6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcm
KSBjb25zdAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Citib29s
IEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdCAKK3sgCisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0ZWQgbWltZXN0eXBlcyBvZiBwbHVn
aW5zCisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZSh0eXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUo
dHlwZSk7CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnQ6OnJlcHJlc2VudGF0aW9uRXhpc3Rz
Rm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0CkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocsOpdmlzaW9uIDI5MzQy
KQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKGNvcGllIGRlIHRyYXZhaWwpCkBAIC0xLDMgKzEs
MjQgQEAKKzIwMDgtMDEtMTEgIFBpZXJyZS1MdWMgQmVhdWRvaW4gIDxwaWVycmUtbHVjLmJlYXVk
b2luQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaW1wbGVtZW50cyB0aGUgZGVsZWdhdGVzIG1ldGhv
ZHMgb2YgV2ViUG9saWN5RGVsZWdhdGUuCisgICAgICAgIFNpbmNlIEd0aysvQyBkb2Vzbid0IGhh
dmUgZGVsZWdhdGUgbWV0aG9kcywgSSByZXBsYWNlZCB0aGVtIHdpdGggc2lnbmFscy4gIAorICAg
ICAgICBBbHNvLCBzaW5jZSBXZWJQb2xpY3lEZWxlZ2F0ZSBvbmx5IGhhcyAzIGRlbGVnYXRlLCBJ
IGFkZGVkIHRoZW0gdG8gV2ViVmlldyAKKyAgICAgICAgaW5zdGVhZCBvZiBjcmVhdGluZyBuZXcg
R09iamVjdCB3aXRoIG9ubHkgMyBzaWduYWxzLgorCisgICAgICAgIEkgdHJpZWQgdG8gY29weSB0
aGUgYmVoYXZpb3IgZGVzY3JpYmVkIGluIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3Vt
ZW50YXRpb24vQ29jb2EvUmVmZXJlbmNlL1dlYktpdC9Qcm90b2NvbHMvV2ViUG9saWN5RGVsZWdh
dGVfUHJvdG9jb2wvUmVmZXJlbmNlL1JlZmVyZW5jZS5odG1sIy8vYXBwbGVfcmVmL29jYy9pbnN0
bS9OU09iamVjdC93ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246cmVxdWVz
dDpmcmFtZTpkZWNpc2lvbkxpc3RlbmVyOgorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKToKKyAgICAgICAgKFdl
YktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5cGUpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRl
ckNsaWVudDo6ZG93bmxvYWQpOgorICAgICAgICAqIFdlYlZpZXcvd2Via2l0LW1hcnNoYWwubGlz
dDoKKyAgICAgICAgKiBXZWJWaWV3L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAqIFdlYlZp
ZXcvd2Via2l0d2Vidmlldy5oOgorCiAyMDA4LTAxLTA5ICBMdWNhIEJydW5vICA8bGV0aGFsbWFu
ODhAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFscCBUb2tlci4KSW5kZXg6IFdl
YktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Z3RrL1dlYlZpZXcvd2Via2l0d2Vidmlldy5jcHAJKHLDqXZpc2lvbiAyOTM0MSkKKysrIFdlYktp
dC9ndGsvV2ViVmlldy93ZWJraXR3ZWJ2aWV3LmNwcAkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTMs
NiArMyw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0
aWFuQHR3b3RvYXN0cy5kZT4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgWGFuIExvcGV6IDx4YW5A
Z25vbWUub3JnPgogICogIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIu
Y29tPgorICogIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTU5LDYgKzYwLDggQEAKIGVudW0gewog
ICAgIC8qIG5vcm1hbCBzaWduYWxzICovCiAgICAgTkFWSUdBVElPTl9SRVFVRVNURUQsCisgICAg
TUlNRV9UWVBFX1BPTElDWV9ERUNJU0lPTl9SRVFVRVNURUQsCisgICAgTkVXX1dJTkRPV19SRVFV
RVNURUQsCiAgICAgV0lORE9XX09CSkVDVF9DTEVBUkVELAogICAgIExPQURfU1RBUlRFRCwKICAg
ICBMT0FEX0NPTU1JVFRFRCwKQEAgLTQxMiwxMiArNDE1LDE4IEBACiAgICAgcmV0dXJuIDA7CiB9
CiAKLXN0YXRpYyBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2Ugd2Via2l0X3dlYl92aWV3X3JlYWxf
bmF2aWdhdGlvbl9yZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqKQorc3RhdGljIFdlYktpdFBvbGljeVJlc3BvbnNlIHdl
YmtpdF93ZWJfdmlld19yZWFsX25hdmlnYXRpb25fcmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqLCBX
ZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiwgR0hhc2hUYWJsZSog
YWN0aW9uX2luZm9ybWF0aW9uKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNFX0FDQ0VQVDsKKyAgICByZXR1cm4gV0VCS0lUX1BP
TElDWV9SRVNQT05TRV9BQ0NFUFQ7CiB9CiAKK3N0YXRpYyBXZWJLaXRQb2xpY3lSZXNwb25zZSB3
ZWJraXRfd2ViX3ZpZXdfcmVhbF9uZXdfd2luZG93X3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3Kiwg
V2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCosIEdIYXNoVGFibGUq
IGFjdGlvbl9pbmZvcm1hdGlvbikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVDsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X3JlYWxfd2luZG93X29iamVjdF9jbGVhcmVkKFdlYktpdFdlYlZpZXcqLCBXZWJL
aXRXZWJGcmFtZSosIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB3aW5k
b3dfb2JqZWN0KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC01NzUsNyArNTg0LDcgQEAK
ICAgaW50IHNpZ25hbEhhbmRsZWQgPSBnX3ZhbHVlX2dldF9pbnQoaGFuZGxlclJldHVybik7CiAg
IGdfdmFsdWVfc2V0X2ludChyZXR1cm5BY2N1LCBzaWduYWxIYW5kbGVkKTsKIAotICBpZiAoc2ln
bmFsSGFuZGxlZCAhPSBXRUJLSVRfTkFWSUdBVElPTl9SRVNQT05TRV9BQ0NFUFQpCisgIGlmIChz
aWduYWxIYW5kbGVkICE9IFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfQUNDRVBUKQogICAgICAgY29u
dGludWVFbWlzc2lvbiA9IEZBTFNFOwogCiAgIHJldHVybiBjb250aW51ZUVtaXNzaW9uOwpAQCAt
NTkzLDE4ICs2MDIsODEgQEAKICAgICAgKiBTaWduYWxzCiAgICAgICovCiAKKyAgICAvKioKKyAg
ICAgKiBXZWJLaXRXZWJWaWV3OjpuYXZpZ2F0aW9uLXJlcXVlc3RlZDoKKyAgICAgKiBAd2ViX3Zp
ZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHdl
Yl9mcmFtZTogdGhlIGZyYW1lIG9uIHdoaWNoIHRoZSBhY3Rpb24gCisgICAgICogQGFjdGlvbl9p
bmZvcm1hdGlvbjogZGVzY3JpYmVzIHRoZSBhY3Rpb24gdGhhdCB0cmlnZ2VyZWQgdGhpcyBuYXZp
Z2F0aW9uIHJlcXVlc3QsIHBvc3NpYmxlIGtleXMgYXJlIGRlZmluZWQgYnkgV2ViS2l0QWN0aW9u
S2V5CisgICAgICogQHJldHVybjogV0VCS0lUX1BPTElDWV9SRVNQT05TRV9BQ0NFUFQgdG8gYWxs
b3cgV2ViS2l0IHRvIGRpc3BsYXkgdGhpcyBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICBXRUJL
SVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRSBub3QgdG8gZGlzcGxheSB0aGlzIGxvY2F0aW9uCisg
ICAgICoKKyAgICAgKiBSb3V0ZXMgYSBuYXZpZ2F0aW9uIGFjdGlvbiBpbnRlcm5hbGx5IG9yIHRv
IGFuIGV4dGVybmFsIHZpZXdlci4KKyAgICAgKi8KICAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFs
c1tOQVZJR0FUSU9OX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoIm5hdmlnYXRpb24tcmVxdWVz
dGVkIiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCiAgICAg
ICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElP
TiksCiAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgbmF2
aWdhdGlvbl9yZXF1ZXN0ZWQpLAogICAgICAgICAgICAgd2Via2l0X25hdmlnYXRpb25fcmVxdWVz
dF9oYW5kbGVkLAogICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFs
X0lOVF9fT0JKRUNUX09CSkVDVCwKLSAgICAgICAgICAgIEdfVFlQRV9JTlQsIDIsCisgICAgICAg
ICAgICB3ZWJraXRfbWFyc2hhbF9JTlRfX09CSkVDVF9PQkpFQ1RfQk9YRUQsCisgICAgICAgICAg
ICBHX1RZUEVfSU5ULCAzLAogICAgICAgICAgICAgR19UWVBFX09CSkVDVCwKLSAgICAgICAgICAg
IEdfVFlQRV9PQkpFQ1QpOworICAgICAgICAgICAgR19UWVBFX09CSkVDVCwKKyAgICAgICAgICAg
IEdfVFlQRV9IQVNIX1RBQkxFKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Om1p
bWUtdHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhl
IG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAd2ViX2ZyYW1l
OiB0aGUgZnJhbWUgb24gd2hpY2ggdGhlIGFjdGlvbiAKKyAgICAgKiBAbWltZXR5cGU6IHRoZSBN
SU1FIHR5cGUgYXR0ZW1wdGVkIHRvIGxvYWQKKyAgICAgKiBAcmV0dXJuOiBXRUJLSVRfUE9MSUNZ
X1JFU1BPTlNFX0FDQ0VQVCB0byBhbGxvdyBXZWJLaXQgdG8gZGlzcGxheSB0aGlzIE1JTUUgdHlw
ZSwKKyAgICAgICAgICAgICAgICBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRSB0byBtYWtl
IFdlYktpdCBpZ25vcmUgdGhpcyByZXNvdXJjZSwKKyAgICAgICAgICAgICAgICBXRUJLSVRfUE9M
SUNZX1JFU1BPTlNFX0RPV05MT0FEIHRvIG1ha2UgV2ViS2l0IGRvd25sb2FkIHRoaXMgcmVzb3Vy
Y2UuCisgICAgICoKKyAgICAgKiBEZWNpZGUgd2hldGhlciBvciBub3QgdG8gZGlzcGxheSBvZiBu
b3QgdGhlIGdpdmVuIE1JTUUgdHlwZS4KKyAgICAgKiBJZiB0aGlzIHNpZ25hbCBpcyBub3QgaGFu
ZGxlZCwgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgYXMgZm9sbG93cy4gIElmIFdlYktpdCBjYW4g
CisgICAgICogc2hvdyB0aGlzIE1JTUUgdHlwZSwgdGhlIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0Vf
QUNDRVBUIHdpbGwgYmUgdXNlZCwgZWxzZSAKKyAgICAgKiBXRUJLSVRfUE9MSUNZX1JFU1BPTlNF
X0lHTk9SRSB3aWxsIGJlIHVzZWQuCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25h
bHNbTUlNRV9UWVBFX1BPTElDWV9ERUNJU0lPTl9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJt
aW1lLXR5cGUtcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCIsCisgICAgICAgICAgICBHX1RZUEVf
RlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19T
SUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAgMCwKKyAgICAg
ICAgICAgIE5VTEwsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNo
YWxfSU5UX19PQkpFQ1RfT0JKRUNUX1NUUklORywKKyAgICAgICAgICAgIEdfVFlQRV9JTlQsIDMs
CisgICAgICAgICAgICBHX1RZUEVfT0JKRUNULCAKKyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1Qs
IAorICAgICAgICAgICAgR19UWVBFX1NUUklORyk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRX
ZWJWaWV3OjpuZXctd2luZG93LXJlcXVlc3RlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmpl
Y3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHdlYl9mcmFtZTogdGhl
IGZyYW1lIG9uIHdoaWNoIHRoZSBhY3Rpb24gCisgICAgICogQGFjdGlvbl9pbmZvcm1hdGlvbjog
ZGVzY3JpYmVzIHRoZSBhY3Rpb24gdGhhdCB0cmlnZ2VyZWQgdGhpcyBuYXZpZ2F0aW9uIHJlcXVl
c3QsIHBvc3NpYmxlIGtleXMgYXJlIGRlZmluZWQgYnkgV2ViS2l0QWN0aW9uS2V5CisgICAgICog
QHJldHVybjogV0VCS0lUX1BPTElDWV9SRVNQT05TRV9BQ0NFUFQgdG8gYWxsb3cgV2ViS2l0IHRv
IGRpc3BsYXkgYSBuZXcgd2luZG93LAorICAgICAgICAgICAgICAgIFdFQktJVF9QT0xJQ1lfUkVT
UE9OU0VfSUdOT1JFIG5vdCB0byBkaXNwbGF5IGEgbmV3IHdpbmRvdworICAgICAqCisgICAgICog
RGVjaWRlcyB3aGV0aGVyIG9yIG5vdCB0byBhbGxvdyBhIHRhcmdldGVkIG5hdmlnYXRpb24gZXZl
bnQsIHN1Y2ggYXMgb3BlbmluZyAKKyAgICAgKiBhIGxpbmsgaW4gYSBuZXcgd2luZG93LiBJZiB0
aGlzIHNpZ25hbCByZXR1cm5zIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfQUNDRVBUIAorICAgICAq
IHRoZW4gdGhlIG5ldyB3aW5kb3cgd2lsbCBiZSBvcGVuZWQsIGFuZCBuYXZpZ2F0aW9uLXJlcXVl
c3RlZCB3aWxsIGJlIGVtaXR0ZWQgCisgICAgICogd2l0aCB2YWx1ZSBXRUJLSVRfTkFWSUdBVElP
Tl9UWVBFX09USEVSIGZvciBXRUJLSVRfQUNUSU9OX05BVklHQVRJT05fVFlQRS4KKyAgICAgKiBU
aGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBhY2NlcHQuICAKKyAgICAgKi8KKyAgICB3ZWJraXRf
d2ViX3ZpZXdfc2lnbmFsc1tORVdfV0lORE9XX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoIm5l
dy13aW5kb3ctcmVxdWVzdGVkIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZp
ZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8
IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2Vi
Vmlld0NsYXNzLCBuZXdfd2luZG93X3JlcXVlc3RlZCksCisgICAgICAgICAgICBOVUxMLAorICAg
ICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0lOVF9fT0JKRUNUX09C
SkVDVF9CT1hFRCwKKyAgICAgICAgICAgIEdfVFlQRV9JTlQsIDMsCisgICAgICAgICAgICBHX1RZ
UEVfT0JKRUNULCAKKyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZ
UEVfSEFTSF9UQUJMRSk7CisKKyAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3Ojp3aW5kb3ct
b2JqZWN0LWNsZWFyZWQ6CiAgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRo
ZSBzaWduYWwgaXMgZW1pdHRlZAogICAgICAqIEBmcmFtZTogdGhlICNXZWJLaXRXZWJGcmFtZSB0
byB3aGljaCBAd2luZG93X29iamVjdCBiZWxvbmdzCkBAIC05MDIsNiArOTc0LDcgQEAKICAgICAg
Ki8KICAgICB3ZWJWaWV3Q2xhc3MtPmNyZWF0ZV93ZWJfdmlldyA9IHdlYmtpdF93ZWJfdmlld19y
ZWFsX2NyZWF0ZV93ZWJfdmlldzsKICAgICB3ZWJWaWV3Q2xhc3MtPm5hdmlnYXRpb25fcmVxdWVz
dGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQ7CisgICAgd2Vi
Vmlld0NsYXNzLT5uZXdfd2luZG93X3JlcXVlc3RlZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX25l
d193aW5kb3dfcmVxdWVzdGVkOwogICAgIHdlYlZpZXdDbGFzcy0+d2luZG93X29iamVjdF9jbGVh
cmVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfd2luZG93X29iamVjdF9jbGVhcmVkOwogICAgIHdl
YlZpZXdDbGFzcy0+Y2hvb3NlX2ZpbGUgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jaG9vc2VfZmls
ZTsKICAgICB3ZWJWaWV3Q2xhc3MtPnNjcmlwdF9hbGVydCA9IHdlYmtpdF93ZWJfdmlld19yZWFs
X3NjcmlwdF9hbGVydDsKQEAgLTE0OTQsNCArMTU2NywxNiBAQAogICAgIHJldHVybiB3ZWJWaWV3
RGF0YS0+cGFzdGVfdGFyZ2V0X2xpc3Q7CiB9CiAKK2dib29sZWFuIHdlYmtpdF93ZWJfdmlld19j
YW5fc2hvd19taW1lX3R5cGUgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBjb25zdCBnY2hhciog
bWltZV90eXBlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJfdmlldyksIEZBTFNFKTsKKyAgICAKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYmtp
dF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZSh3ZWJfdmlldykpOworICAgIGlmIChGcmFtZUxvYWRl
ciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpKQorICAgICAgICByZXR1cm4gbG9hZGVyLT5jYW5T
aG93TUlNRVR5cGUobWltZV90eXBlKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBGQUxTRTsK
IH0KKworfQorCkluZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0LW1hcnNoYWwubGlzdAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0LW1hcnNoYWwubGlzdAkocsOp
dmlzaW9uIDI5MzQxKQorKysgV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdC1tYXJzaGFsLmxpc3QJ
KGNvcGllIGRlIHRyYXZhaWwpCkBAIC05LDQgKzksNSBAQAogQk9PTEVBTjpPQkpFQ1QsU1RSSU5H
CiBCT09MRUFOOk9CSkVDVCxTVFJJTkcsQk9PTEVBTgogQk9PTEVBTjpPQkpFQ1QsU1RSSU5HLFNU
UklORyxTVFJJTkcKLUlOVDpPQkpFQ1QsT0JKRUNUCitJTlQ6T0JKRUNULE9CSkVDVCxCT1hFRAor
SU5UOk9CSkVDVCxPQkpFQ1QsU1RSSU5HCkluZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0
d2Vidmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJ2aWV3
LmgJKHLDqXZpc2lvbiAyOTM0MSkKKysrIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJ2aWV3
LmgJKGNvcGllIGRlIHRyYXZhaWwpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxhYm9yYSBMdGQuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0zNiwxMSArMzcsMjkgQEAKIAogCiB0eXBlZGVmIGVudW0gewotICAgIFdFQktJVF9OQVZJ
R0FUSU9OX1JFU1BPTlNFX0FDQ0VQVCwKLSAgICBXRUJLSVRfTkFWSUdBVElPTl9SRVNQT05TRV9J
R05PUkUsCi0gICAgV0VCS0lUX05BVklHQVRJT05fUkVTUE9OU0VfRE9XTkxPQUQKLX0gV2ViS2l0
TmF2aWdhdGlvblJlc3BvbnNlOworICAgIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfRVJST1IgPSAw
LAorICAgIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfQUNDRVBULAorICAgIFdFQktJVF9QT0xJQ1lf
UkVTUE9OU0VfSUdOT1JFLAorICAgIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfRE9XTkxPQUQKK30g
V2ViS2l0UG9saWN5UmVzcG9uc2U7CiAKK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX0FDVElP
Tl9OQVZJR0FUSU9OX1RZUEUsCisgICAgV0VCS0lUX0FDVElPTl9FTEVNRU5ULAorICAgIFdFQktJ
VF9BQ1RJT05fQlVUVE9OLAorICAgIFdFQktJVF9BQ1RJT05fTU9ESUZJRVJfRkxBR1MsCisgICAg
V0VCS0lUX0FDVElPTl9PUklHSU5BTF9VUkwKK30gV2ViS2l0QWN0aW9uS2V5OworCit0eXBlZGVm
IGVudW0geworICAgIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfTElOS19DTElDS0VELAorICAgIFdF
QktJVF9OQVZJR0FUSU9OX1RZUEVfRk9STV9TVUJNSVRURUQsCisgICAgV0VCS0lUX05BVklHQVRJ
T05fVFlQRV9CQUNLX0ZPUldBUkQsCisgICAgV0VCS0lUX05BVklHQVRJT05fVFlQRV9SRUxPQUQs
CisgICAgV0VCS0lUX05BVklHQVRJT05fVFlQRV9GT1JNX1JFU1VCTUlUVEVELAorICAgIFdFQktJ
VF9OQVZJR0FUSU9OX1RZUEVfT1RIRVIKK30gV2ViS2l0TmF2aWdhdGlvblR5cGU7CisKIHR5cGVk
ZWYgZW51bQogewogICAgIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MID0gLSAxLApA
QCAtNjMsOSArODIsMTAgQEAKICAgICBXZWJLaXRXZWJWaWV3KiAgKCpjcmVhdGVfd2ViX3ZpZXcp
ICAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwogCiAgICAgLyoKLSAgICAgKiBUT0RPOiBGSVhN
RTogQ3JlYXRlIHNvbWV0aGluZyBsaWtlIFdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXJfUHJvdG9j
b2wgaW5zdGVhZAorICAgICAqIFBvbGljeSBoYW5kbGVycwogICAgICAqLwotICAgIFdlYktpdE5h
dmlnYXRpb25SZXNwb25zZSAoKm5hdmlnYXRpb25fcmVxdWVzdGVkKSAoV2ViS2l0V2ViVmlldyog
d2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJl
cXVlc3QpOworICAgIFdlYktpdFBvbGljeVJlc3BvbnNlICgqbmF2aWdhdGlvbl9yZXF1ZXN0ZWQp
IChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXRO
ZXR3b3JrUmVxdWVzdCogcmVxdWVzdCwgR0hhc2hUYWJsZSogYWN0aW9uX2luZm9ybWF0aW9uKTsK
KyAgICBXZWJLaXRQb2xpY3lSZXNwb25zZSAoKm5ld193aW5kb3dfcmVxdWVzdGVkKSAoV2ViS2l0
V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgV2ViS2l0TmV0d29ya1Jl
cXVlc3QqIHJlcXVlc3QsIEdIYXNoVGFibGUqIGFjdGlvbl9pbmZvcm1hdGlvbik7CiAKICAgICB2
b2lkICgqd2luZG93X29iamVjdF9jbGVhcmVkKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIFdl
YktpdFdlYkZyYW1lKiBmcmFtZSwgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIHdpbmRvd19vYmplY3QpOwogICAgIGdjaGFyKiAgICgqY2hvb3NlX2ZpbGUpIChXZWJLaXRX
ZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogb2xk
X2ZpbGUpOwpAQCAtMTc0LDYgKzE5NCw5IEBACiBXRUJLSVRfQVBJIEd0a1RhcmdldExpc3QqCiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3Bhc3RlX3RhcmdldF9saXN0IChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21p
bWVfdHlwZSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIGNvbnN0IGdjaGFyKiBtaW1lX3R5cGUp
OworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYK
</data>
<flag name="review"
          id="8032"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18579</attachid>
            <date>2008-01-21 12:36:04 -0800</date>
            <delta_ts>2008-02-06 15:26:44 -0800</delta_ts>
            <desc>Applied comments and more</desc>
            <filename>policy-implementation-5.patch</filename>
            <type>text/plain</type>
            <size>20831</size>
            <attacher name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCShyw6l2aXNpb24gMjk2OTMpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTIsNiArMiw3
IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDA3IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMTcsMjIgKzIxOCw3MyBAQAogICAgIG1fcmVz
cG9uc2UgPSByZXNwb25zZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9u
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQordm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0
aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBTdHJpbmcmIG1pbWUsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGNhbGwg
ZGlyZWN0bHkgaGVyZSAoY29tbWVudCBjb3BpZWQgZnJvbSBRdCB2ZXJzaW9uKQogICAgIEFTU0VS
VChwb2xpY3lGdW5jdGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKICAgICAgICAgcmV0
dXJuOwotICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xp
Y3lVc2UpOworCisgICAgV2ViS2l0V2ViVmlldyogcGFnZSA9IGdldFZpZXdGcm9tRnJhbWUobV9m
cmFtZSk7CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfbmV0d29y
a19yZXF1ZXN0X25ldyhyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgV2ViS2l0UG9saWN5UmVzcG9uc2UgcmVzcG9uc2U7CisKKyAgICBnX3NpZ25hbF9l
bWl0X2J5X25hbWUocGFnZSwgIm1pbWUtdHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkIiwg
bV9mcmFtZSwgcmVxdWVzdCwgbWltZS51dGY4KCkuZGF0YSgpLCAmcmVzcG9uc2UpOworCisgICAg
Z19vYmplY3RfdW5yZWYocmVxdWVzdCk7CisKKyAgICBpZiAocmVzcG9uc2UgPT0gV0VCS0lUX1BP
TElDWV9SRVNQT05TRV9FUlJPUikgeworICAgICAgICAvLyByZXNwb25zZSB3aWxsIGJlIHNldCBF
UlJPUiBpZiB0aGUgc2lnbmFsIGhhc24ndCBiZWVuIGhhbmRsZWQKKyAgICAgICAgLy8gQXBwbHkg
ZGVmYXVsdCBiZWhhdmlvcgorICAgICAgICBLVVJMIHVybCA9IHJlc291cmNlUmVxdWVzdC51cmwo
KTsKKyAgICAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKSB7CisgICAgICAgICAgICBjb25zdCBn
Y2hhciAqIGZpbGVuYW1lID0gdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCk7CisKKyAgICAgICAg
ICAgIGlmIChnX2ZpbGVfdGVzdChmaWxlbmFtZSwgR19GSUxFX1RFU1RfRVhJU1RTKSAmJiAhZ19m
aWxlX3Rlc3QoZmlsZW5hbWUsIEdfRklMRV9URVNUX0lTX0RJUikgJiYgY2FuU2hvd01JTUVUeXBl
KG1pbWUpKQorICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gV0VCS0lUX1BPTElDWV9SRVNQT05T
RV9BQ0NFUFQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBX
RUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRTsKKyAgICAgICAgfSBlbHNlIGlmIChjYW5TaG93
TUlNRVR5cGUobWltZSkpCisgICAgICAgICAgICByZXNwb25zZSA9IFdFQktJVF9QT0xJQ1lfUkVT
UE9OU0VfQUNDRVBUOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXNwb25zZSA9IFdFQktJ
VF9QT0xJQ1lfUkVTUE9OU0VfSUdOT1JFOworICAgIH0KKworICAgIAorICAgIGlmIChyZXNwb25z
ZSA9PSBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVCkgeworICAgICAgICAoY29yZShtX2Zy
YW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0gZWxzZSBpZiAocmVzcG9uc2UgPT0gV0VCS0lUX1BPTElDWV9SRVNQT05TRV9E
T1dOTE9BRCkgeworICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5j
dGlvbikoUG9saWN5RG93bmxvYWQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIChjb3Jl
KG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lJZ25vcmUpOworCiB9
CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rpb24sIGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmKQordm9p
ZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29u
c3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9s
aWN5RnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogSSB0aGluayBRdCB2
ZXJzaW9uIG1hcnNoYWxzIHRoaXMgdG8gYW5vdGhlciB0aHJlYWQgc28gd2hlbiB3ZQotICAgIC8v
IGhhdmUgbXVsdGktdGhyZWFkZWQgZG93bmxvYWQsIHdlIG1pZ2h0IG5lZWQgdG8gZG8gdGhlIHNh
bWUKKworICAgIFdlYktpdFdlYlZpZXcqIHBhZ2UgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUp
OworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVx
dWVzdF9uZXcocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIFdlYktpdFBvbGljeVJlc3BvbnNlIHJlc3BvbnNlOworCisgICAgV2ViS2l0TmF2aWdhdGlv
blR5cGUgbmF2aWdhdGlvblR5cGUgPSBraXQoYWN0aW9uLnR5cGUoKSk7CisKKyAgICBHSGFzaFRh
YmxlICogYWN0aW9uSW5mb3JtYXRpb24gPSBnX2hhc2hfdGFibGVfbmV3KE5VTEwsIE5VTEwpOwor
ICAgIGdfaGFzaF90YWJsZV9pbnNlcnQoYWN0aW9uSW5mb3JtYXRpb24sICh2b2lkKilXRUJLSVRf
QUNUSU9OX05BVklHQVRJT05fVFlQRSwgKHZvaWQqKW5hdmlnYXRpb25UeXBlKTsKKworICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZShwYWdlLCAibmV3LXdpbmRvdy1yZXF1ZXN0ZWQiLCBtX2ZyYW1l
LCByZXF1ZXN0LCBhY3Rpb25JbmZvcm1hdGlvbiwgJnJlc3BvbnNlKTsKKworICAgIGdfaGFzaF90
YWJsZV9kZXN0cm95KGFjdGlvbkluZm9ybWF0aW9uKTsKKyAgICBnX29iamVjdF91bnJlZihyZXF1
ZXN0KTsKKworICAgIGlmIChyZXNwb25zZSA9PSBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQ
VCkgeworICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbiko
UG9saWN5VXNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0gCiAgICAgKGNvcmUobV9mcmFtZSkt
PmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7CiB9CiAKQEAgLTI0NCwx
MyArMjk2LDE5IEBACiAKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21G
cmFtZShtX2ZyYW1lKTsKICAgICBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtp
dF9uZXR3b3JrX3JlcXVlc3RfbmV3KHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2UgcmVzcG9uc2U7CisgICAg
V2ViS2l0UG9saWN5UmVzcG9uc2UgcmVzcG9uc2U7ICAgIAogCi0gICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKHdlYlZpZXcsICJuYXZpZ2F0aW9uLXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3Qs
ICZyZXNwb25zZSk7CisgICAgV2ViS2l0TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUgPSBr
aXQoYWN0aW9uLnR5cGUoKSk7CiAKKyAgICBHSGFzaFRhYmxlICogYWN0aW9uSW5mb3JtYXRpb24g
PSBnX2hhc2hfdGFibGVfbmV3KE5VTEwsIE5VTEwpOworICAgIGdfaGFzaF90YWJsZV9pbnNlcnQo
YWN0aW9uSW5mb3JtYXRpb24sICh2b2lkKilXRUJLSVRfQUNUSU9OX05BVklHQVRJT05fVFlQRSwg
KHZvaWQqKW5hdmlnYXRpb25UeXBlKTsKKworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJW
aWV3LCAibmF2aWdhdGlvbi1yZXF1ZXN0ZWQiLCBtX2ZyYW1lLCByZXF1ZXN0LCBhY3Rpb25JbmZv
cm1hdGlvbiwgJnJlc3BvbnNlKTsKKworICAgIGdfaGFzaF90YWJsZV9kZXN0cm95KGFjdGlvbklu
Zm9ybWF0aW9uKTsKICAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0KTsKIAotICAgIGlmIChyZXNw
b25zZSA9PSBXRUJLSVRfTkFWSUdBVElPTl9SRVNQT05TRV9JR05PUkUpIHsKKyAgICBpZiAocmVz
cG9uc2UgPT0gV0VCS0lUX1BPTElDWV9SRVNQT05TRV9JR05PUkUpIHsKICAgICAgICAgKGNvcmUo
bV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC02MDMsMTAgKzY2MSwxMCBAQAogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3Ry
aW5nJikgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0cnVlOwor
Ym9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkgY29uc3QgCit7IAorICAgIC8vIEZJWE1FOiBBZGQgbWltZSB0eXBlcyBzdXBwb3J0ZWQgYnkg
cGx1Z2lucy4KKyAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlKHR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1F
VHlwZSh0eXBlKTsKIH0KIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6cmVwcmVzZW50YXRpb25F
eGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3QKSW5kZXg6IFdlYktpdC9ndGsv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyw6l2aXNpb24g
Mjk2OTUpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTEs
MyArMSwyOSBAQAorMjAwOC0wMS0yMSAgUGllcnJlLUx1YyBCZWF1ZG9pbiAgPHNldCBFTUFJTF9B
RERSRVNTIGVudmlyb25tZW50IHZhcmlhYmxlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwcm92aWRlIGFuIEFQSSBmb3IgdGhl
IGRlbGVnYXRlcyBtZXRob2RzIG9mIFdlYlBvbGljeURlbGVnYXRlLgorCisgICAgICAgIFNpbmNl
IEd0aysvQyBkb2Vzbid0IGhhdmUgZGVsZWdhdGUgbWV0aG9kcywgSSByZXBsYWNlZCB0aGVtIHdp
dGggc2lnbmFscy4gIAorICAgICAgICBBbHNvLCBzaW5jZSBXZWJQb2xpY3lEZWxlZ2F0ZSBvbmx5
IGhhcyAzIGRlbGVnYXRlLCBJIGFkZGVkIHRoZW0gdG8gV2ViVmlldyAKKyAgICAgICAgaW5zdGVh
ZCBvZiBjcmVhdGluZyBuZXcgR09iamVjdCB3aXRoIG9ubHkgMyBzaWduYWxzLgorCisgICAgICAg
IEkgdHJpZWQgdG8gY29weSB0aGUgYmVoYXZpb3IgZGVzY3JpYmVkIGluIGh0dHA6Ly9kZXZlbG9w
ZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vQ29jb2EvUmVmZXJlbmNlL1dlYktpdC9Qcm90b2Nv
bHMvV2ViUG9saWN5RGVsZWdhdGVfUHJvdG9jb2wvUmVmZXJlbmNlL1JlZmVyZW5jZS5odG1sIy8v
YXBwbGVfcmVmL29jYy9pbnN0bS9OU09iamVjdC93ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb246cmVxdWVzdDpmcmFtZTpkZWNpc2lvbkxpc3RlbmVyOgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVUeXBlKToKKyAgICAgICAgKiBXZWJWaWV3
L3dlYmtpdC1tYXJzaGFsLmxpc3Q6CisgICAgICAgICogV2ViVmlldy93ZWJraXRwcml2YXRlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6a2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAg
ICAgICAgICBDb252ZXJ0IFdlYktpdE5hdml0YWdpb25UeXBlIHRvIE5hdmlnYXRpb25UeXBlIGVu
dW0gYmFjayBhbmQgZm9ydGgKKyAgICAgICAgKiBXZWJWaWV3L3dlYmtpdHByaXZhdGUuaDoKKyAg
ICAgICAgKiBXZWJWaWV3L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAqIFdlYlZpZXcvd2Vi
a2l0d2Vidmlldy5oOgorCiAyMDA4LTAxLTIwICBBbHAgVG9rZXIgIDxhbHBAYXRva2VyLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCkluZGV4OiBXZWJLaXQvZ3RrL1dlYlZp
ZXcvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJWaWV3L3dl
YmtpdHdlYnZpZXcuY3BwCShyw6l2aXNpb24gMjk2OTMpCisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcv
d2Via2l0d2Vidmlldy5jcHAJKGNvcGllIGRlIHRyYXZhaWwpCkBAIC0zLDYgKzMsNyBAQAogICog
IENvcHlyaWdodCAoQykgMjAwNyBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkB0d290b2FzdHMu
ZGU+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFhhbiBMb3BleiA8eGFuQGdub21lLm9yZz4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCkBAIC01OSw2ICs2MCw4IEBACiBlbnVtIHsKICAgICAvKiBub3JtYWwg
c2lnbmFscyAqLwogICAgIE5BVklHQVRJT05fUkVRVUVTVEVELAorICAgIE1JTUVfVFlQRV9QT0xJ
Q1lfREVDSVNJT05fUkVRVUVTVEVELAorICAgIE5FV19XSU5ET1dfUkVRVUVTVEVELAogICAgIFdJ
TkRPV19PQkpFQ1RfQ0xFQVJFRCwKICAgICBMT0FEX1NUQVJURUQsCiAgICAgTE9BRF9DT01NSVRU
RUQsCkBAIC00MjgsMTIgKzQzMSwxNyBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgV2Vi
S2l0TmF2aWdhdGlvblJlc3BvbnNlIHdlYmtpdF93ZWJfdmlld19yZWFsX25hdmlnYXRpb25fcmVx
dWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdE5ldHdv
cmtSZXF1ZXN0KikKK3N0YXRpYyBXZWJLaXRQb2xpY3lSZXNwb25zZSB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9uYXZpZ2F0aW9uX3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUq
IGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCosIEdIYXNoVGFibGUqIGFjdGlvbl9pbmZvcm1h
dGlvbikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBXRUJLSVRfTkFWSUdB
VElPTl9SRVNQT05TRV9BQ0NFUFQ7CisgICAgcmV0dXJuIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0Vf
QUNDRVBUOwogfQogCitzdGF0aWMgV2ViS2l0UG9saWN5UmVzcG9uc2Ugd2Via2l0X3dlYl92aWV3
X3JlYWxfbmV3X3dpbmRvd19yZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYkZyYW1l
KiBmcmFtZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqLCBHSGFzaFRhYmxlKiBhY3Rpb25faW5mb3Jt
YXRpb24pCit7CisgICAgcmV0dXJuIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfQUNDRVBUOworfQor
CiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQo
V2ViS2l0V2ViVmlldyosIFdlYktpdFdlYkZyYW1lKiwgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIHdpbmRvd19vYmplY3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
QEAgLTU4NywxMiArNTk1LDEyIEBACiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfbmF2aWdhdGlv
bl9yZXF1ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBpaGludCwgR1ZhbHVlKiBy
ZXR1cm5BY2N1LCBjb25zdCBHVmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGR1bW15KQog
ewotICBnYm9vbGVhbiBjb250aW51ZUVtaXNzaW9uID0gVFJVRTsKKyAgZ2Jvb2xlYW4gY29udGlu
dWVFbWlzc2lvbiA9IEZBTFNFOwogICBpbnQgc2lnbmFsSGFuZGxlZCA9IGdfdmFsdWVfZ2V0X2lu
dChoYW5kbGVyUmV0dXJuKTsKICAgZ192YWx1ZV9zZXRfaW50KHJldHVybkFjY3UsIHNpZ25hbEhh
bmRsZWQpOwogCi0gIGlmIChzaWduYWxIYW5kbGVkICE9IFdFQktJVF9OQVZJR0FUSU9OX1JFU1BP
TlNFX0FDQ0VQVCkKLSAgICAgIGNvbnRpbnVlRW1pc3Npb24gPSBGQUxTRTsKKyAgaWYgKHNpZ25h
bEhhbmRsZWQgIT0gV0VCS0lUX1BPTElDWV9SRVNQT05TRV9FUlJPUikKKyAgICAgIGNvbnRpbnVl
RW1pc3Npb24gPSBUUlVFOwogCiAgIHJldHVybiBjb250aW51ZUVtaXNzaW9uOwogfQpAQCAtNjA5
LDE4ICs2MTcsODEgQEAKICAgICAgKiBTaWduYWxzCiAgICAgICovCiAKKyAgICAvKioKKyAgICAg
KiBXZWJLaXRXZWJWaWV3OjpuYXZpZ2F0aW9uLXJlcXVlc3RlZDoKKyAgICAgKiBAd2ViX3ZpZXc6
IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHdlYl9m
cmFtZTogdGhlIGZyYW1lIG9uIHdoaWNoIHRoZSBhY3Rpb24gCisgICAgICogQGFjdGlvbl9pbmZv
cm1hdGlvbjogZGVzY3JpYmVzIHRoZSBhY3Rpb24gdGhhdCB0cmlnZ2VyZWQgdGhpcyBuYXZpZ2F0
aW9uIHJlcXVlc3QsIHBvc3NpYmxlIGtleXMgYXJlIGRlZmluZWQgYnkgV2ViS2l0QWN0aW9uS2V5
CisgICAgICogQHJldHVybjogV0VCS0lUX1BPTElDWV9SRVNQT05TRV9BQ0NFUFQgdG8gYWxsb3cg
V2ViS2l0IHRvIGRpc3BsYXkgdGhpcyBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICBXRUJLSVRf
UE9MSUNZX1JFU1BPTlNFX0lHTk9SRSBub3QgdG8gZGlzcGxheSB0aGlzIGxvY2F0aW9uCisgICAg
ICoKKyAgICAgKiBSb3V0ZXMgYSBuYXZpZ2F0aW9uIGFjdGlvbiBpbnRlcm5hbGx5IG9yIHRvIGFu
IGV4dGVybmFsIHZpZXdlci4KKyAgICAgKi8KICAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tO
QVZJR0FUSU9OX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoIm5hdmlnYXRpb24tcmVxdWVzdGVk
IiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCiAgICAgICAg
ICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiks
CiAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgbmF2aWdh
dGlvbl9yZXF1ZXN0ZWQpLAogICAgICAgICAgICAgd2Via2l0X25hdmlnYXRpb25fcmVxdWVzdF9o
YW5kbGVkLAogICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0lO
VF9fT0JKRUNUX09CSkVDVCwKLSAgICAgICAgICAgIEdfVFlQRV9JTlQsIDIsCisgICAgICAgICAg
ICB3ZWJraXRfbWFyc2hhbF9JTlRfX09CSkVDVF9PQkpFQ1RfQk9YRUQsCisgICAgICAgICAgICBH
X1RZUEVfSU5ULCAzLAogICAgICAgICAgICAgR19UWVBFX09CSkVDVCwKLSAgICAgICAgICAgIEdf
VFlQRV9PQkpFQ1QpOworICAgICAgICAgICAgR19UWVBFX09CSkVDVCwKKyAgICAgICAgICAgIEdf
VFlQRV9IQVNIX1RBQkxFKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Om1pbWUt
dHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9i
amVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAd2ViX2ZyYW1lOiB0
aGUgZnJhbWUgb24gd2hpY2ggdGhlIGFjdGlvbiAKKyAgICAgKiBAbWltZXR5cGU6IHRoZSBNSU1F
IHR5cGUgYXR0ZW1wdGVkIHRvIGxvYWQKKyAgICAgKiBAcmV0dXJuOiBXRUJLSVRfUE9MSUNZX1JF
U1BPTlNFX0FDQ0VQVCB0byBhbGxvdyBXZWJLaXQgdG8gZGlzcGxheSB0aGlzIE1JTUUgdHlwZSwK
KyAgICAgICAgICAgICAgICBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRSB0byBtYWtlIFdl
YktpdCBpZ25vcmUgdGhpcyByZXNvdXJjZSwKKyAgICAgICAgICAgICAgICBXRUJLSVRfUE9MSUNZ
X1JFU1BPTlNFX0RPV05MT0FEIHRvIG1ha2UgV2ViS2l0IGRvd25sb2FkIHRoaXMgcmVzb3VyY2Uu
CisgICAgICoKKyAgICAgKiBEZWNpZGUgd2hldGhlciBvciBub3QgdG8gZGlzcGxheSBvZiBub3Qg
dGhlIGdpdmVuIE1JTUUgdHlwZS4KKyAgICAgKiBJZiB0aGlzIHNpZ25hbCBpcyBub3QgaGFuZGxl
ZCwgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgYXMgZm9sbG93cy4gIElmIFdlYktpdCBjYW4gCisg
ICAgICogc2hvdyB0aGlzIE1JTUUgdHlwZSwgdGhlIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfQUND
RVBUIHdpbGwgYmUgdXNlZCwgZWxzZSAKKyAgICAgKiBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lH
Tk9SRSB3aWxsIGJlIHVzZWQuCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNb
TUlNRV9UWVBFX1BPTElDWV9ERUNJU0lPTl9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJtaW1l
LXR5cGUtcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCIsCisgICAgICAgICAgICBHX1RZUEVfRlJP
TV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdO
QUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAgMCwKKyAgICAgICAg
ICAgIE5VTEwsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxf
SU5UX19PQkpFQ1RfT0JKRUNUX1NUUklORywKKyAgICAgICAgICAgIEdfVFlQRV9JTlQsIDMsCisg
ICAgICAgICAgICBHX1RZUEVfT0JKRUNULCAKKyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsIAor
ICAgICAgICAgICAgR19UWVBFX1NUUklORyk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJW
aWV3OjpuZXctd2luZG93LXJlcXVlc3RlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qg
b24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHdlYl9mcmFtZTogdGhlIGZy
YW1lIG9uIHdoaWNoIHRoZSBhY3Rpb24gCisgICAgICogQGFjdGlvbl9pbmZvcm1hdGlvbjogZGVz
Y3JpYmVzIHRoZSBhY3Rpb24gdGhhdCB0cmlnZ2VyZWQgdGhpcyBuYXZpZ2F0aW9uIHJlcXVlc3Qs
IHBvc3NpYmxlIGtleXMgYXJlIGRlZmluZWQgYnkgV2ViS2l0QWN0aW9uS2V5CisgICAgICogQHJl
dHVybjogV0VCS0lUX1BPTElDWV9SRVNQT05TRV9BQ0NFUFQgdG8gYWxsb3cgV2ViS2l0IHRvIGRp
c3BsYXkgYSBuZXcgd2luZG93LAorICAgICAgICAgICAgICAgIFdFQktJVF9QT0xJQ1lfUkVTUE9O
U0VfSUdOT1JFIG5vdCB0byBkaXNwbGF5IGEgbmV3IHdpbmRvdworICAgICAqCisgICAgICogRGVj
aWRlcyB3aGV0aGVyIG9yIG5vdCB0byBhbGxvdyBhIHRhcmdldGVkIG5hdmlnYXRpb24gZXZlbnQs
IHN1Y2ggYXMgb3BlbmluZyAKKyAgICAgKiBhIGxpbmsgaW4gYSBuZXcgd2luZG93LiBJZiB0aGlz
IHNpZ25hbCByZXR1cm5zIFdFQktJVF9QT0xJQ1lfUkVTUE9OU0VfQUNDRVBUIAorICAgICAqIHRo
ZW4gdGhlIG5ldyB3aW5kb3cgd2lsbCBiZSBvcGVuZWQsIGFuZCBuYXZpZ2F0aW9uLXJlcXVlc3Rl
ZCB3aWxsIGJlIGVtaXR0ZWQgCisgICAgICogd2l0aCB2YWx1ZSBXRUJLSVRfTkFWSUdBVElPTl9U
WVBFX09USEVSIGZvciBXRUJLSVRfQUNUSU9OX05BVklHQVRJT05fVFlQRS4KKyAgICAgKiBUaGUg
ZGVmYXVsdCBiZWhhdmlvciBpcyB0byBhY2NlcHQuICAKKyAgICAgKi8KKyAgICB3ZWJraXRfd2Vi
X3ZpZXdfc2lnbmFsc1tORVdfV0lORE9XX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoIm5ldy13
aW5kb3ctcmVxdWVzdGVkIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdD
bGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdf
U0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmll
d0NsYXNzLCBuZXdfd2luZG93X3JlcXVlc3RlZCksCisgICAgICAgICAgICBOVUxMLAorICAgICAg
ICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0lOVF9fT0JKRUNUX09CSkVD
VF9CT1hFRCwKKyAgICAgICAgICAgIEdfVFlQRV9JTlQsIDMsCisgICAgICAgICAgICBHX1RZUEVf
T0JKRUNULCAKKyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVf
SEFTSF9UQUJMRSk7CisKKyAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3Ojp3aW5kb3ctb2Jq
ZWN0LWNsZWFyZWQ6CiAgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBz
aWduYWwgaXMgZW1pdHRlZAogICAgICAqIEBmcmFtZTogdGhlICNXZWJLaXRXZWJGcmFtZSB0byB3
aGljaCBAd2luZG93X29iamVjdCBiZWxvbmdzCkBAIC05MTgsNiArOTg5LDcgQEAKICAgICAgKi8K
ICAgICB3ZWJWaWV3Q2xhc3MtPmNyZWF0ZV93ZWJfdmlldyA9IHdlYmtpdF93ZWJfdmlld19yZWFs
X2NyZWF0ZV93ZWJfdmlldzsKICAgICB3ZWJWaWV3Q2xhc3MtPm5hdmlnYXRpb25fcmVxdWVzdGVk
ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQ7CisgICAgd2ViVmll
d0NsYXNzLT5uZXdfd2luZG93X3JlcXVlc3RlZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX25ld193
aW5kb3dfcmVxdWVzdGVkOwogICAgIHdlYlZpZXdDbGFzcy0+d2luZG93X29iamVjdF9jbGVhcmVk
ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfd2luZG93X29iamVjdF9jbGVhcmVkOwogICAgIHdlYlZp
ZXdDbGFzcy0+Y2hvb3NlX2ZpbGUgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jaG9vc2VfZmlsZTsK
ICAgICB3ZWJWaWV3Q2xhc3MtPnNjcmlwdF9hbGVydCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3Nj
cmlwdF9hbGVydDsKQEAgLTE1ODcsNCArMTY1OSwyNiBAQAogICAgIHJldHVybiB3ZWJWaWV3RGF0
YS0+cGFzdGVfdGFyZ2V0X2xpc3Q7CiB9CiAKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2Nhbl9z
aG93X21pbWVfdHlwZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQG1pbWVf
dHlwZTogYSBNSU1FIHR5cGUKKyAqCisgKiBUaGlzIGZ1bmN0aW9ucyByZXR1cm5zIHdoZXRoZXIg
b3Igbm90IGEgTUlNRSB0eXBlIGNhbiBiZSBkaXNwbGF5ZWQgdXNpbmcgdGhpcyB2aWV3LgorICoK
KyAqIFJldHVybiB2YWx1ZTogYSAjZ2Jvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgTUlNRSB0eXBl
IGNhbiBiZSBkaXNwbGF5ZWQKKyAqKi8KKworZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9z
aG93X21pbWVfdHlwZSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIGNvbnN0IGdjaGFyKiBtaW1l
X3R5cGUpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdl
Yl92aWV3KSwgRkFMU0UpOworICAgIAorICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Via2l0X3dl
Yl92aWV3X2dldF9tYWluX2ZyYW1lKHdlYl92aWV3KSk7CisgICAgaWYgKEZyYW1lTG9hZGVyKiBs
b2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkpCisgICAgICAgIHJldHVybiBsb2FkZXItPmNhblNob3dN
SU1FVHlwZShtaW1lX3R5cGUpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEZBTFNFOwogfQor
Cit9CisKSW5kZXg6IFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXRwcml2YXRlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0cHJpdmF0ZS5jcHAJKHLDqXZpc2lvbiAy
OTY5MykKKysrIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXRwcml2YXRlLmNwcAkoY29waWUgZGUg
dHJhdmFpbCkKQEAgLTkwLDggKzkwLDYyIEBACiAgICAgcmV0dXJuIGNsaWVudCA/IGNsaWVudC0+
d2ViVmlldygpIDogMDsKIH0KIAorV2ViS2l0TmF2aWdhdGlvblR5cGUga2l0KFdlYkNvcmU6Ok5h
dmlnYXRpb25UeXBlIHR5cGUpCit7CisgICAgV2ViS2l0TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlv
blR5cGUgPSBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX09USEVSOworICAgIHN3aXRjaCAodHlwZSkg
eworICAgIGNhc2UgTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZDoKKyAgICAgICAgbmF2aWdhdGlv
blR5cGUgPSBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX0xJTktfQ0xJQ0tFRDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlwZUZvcm1TdWJtaXR0ZWQ6CisgICAgICAgIG5hdmln
YXRpb25UeXBlID0gV0VCS0lUX05BVklHQVRJT05fVFlQRV9GT1JNX1NVQk1JVFRFRDsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlwZUJhY2tGb3J3YXJkOgorICAgICAgICBu
YXZpZ2F0aW9uVHlwZSA9IFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfQkFDS19GT1JXQVJEOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIE5hdmlnYXRpb25UeXBlUmVsb2FkOgorICAgICAgICBuYXZp
Z2F0aW9uVHlwZSA9IFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfUkVMT0FEOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIE5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkOgorICAgICAgICBuYXZp
Z2F0aW9uVHlwZSA9IFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfRk9STV9SRVNVQk1JVFRFRDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlwZU90aGVyOgorICAgIGRlZmF1bHQ6
CisgICAgICAgIG5hdmlnYXRpb25UeXBlID0gV0VCS0lUX05BVklHQVRJT05fVFlQRV9PVEhFUjsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBuYXZpZ2F0aW9uVHlwZTsKIH0KIAor
V2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgY29yZShXZWJLaXROYXZpZ2F0aW9uVHlwZSB0eXBlKQor
eworICAgIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlID0gTmF2aWdhdGlv
blR5cGVPdGhlcjsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFdFQktJVF9OQVZJR0FU
SU9OX1RZUEVfTElOS19DTElDS0VEOgorICAgICAgICBuYXZpZ2F0aW9uVHlwZSA9IE5hdmlnYXRp
b25UeXBlTGlua0NsaWNrZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX05BVklH
QVRJT05fVFlQRV9GT1JNX1NVQk1JVFRFRDoKKyAgICAgICAgbmF2aWdhdGlvblR5cGUgPSBOYXZp
Z2F0aW9uVHlwZUZvcm1TdWJtaXR0ZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lU
X05BVklHQVRJT05fVFlQRV9CQUNLX0ZPUldBUkQ6CisgICAgICAgIG5hdmlnYXRpb25UeXBlID0g
TmF2aWdhdGlvblR5cGVCYWNrRm9yd2FyZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJL
SVRfTkFWSUdBVElPTl9UWVBFX1JFTE9BRDoKKyAgICAgICAgbmF2aWdhdGlvblR5cGUgPSBOYXZp
Z2F0aW9uVHlwZVJlbG9hZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfTkFWSUdB
VElPTl9UWVBFX0ZPUk1fUkVTVUJNSVRURUQ6CisgICAgICAgIG5hdmlnYXRpb25UeXBlID0gTmF2
aWdhdGlvblR5cGVGb3JtUmVzdWJtaXR0ZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VC
S0lUX05BVklHQVRJT05fVFlQRV9PVEhFUjoKKyAgICBkZWZhdWx0OgorICAgICAgICBuYXZpZ2F0
aW9uVHlwZSA9IE5hdmlnYXRpb25UeXBlT3RoZXI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICByZXR1cm4gbmF2aWdhdGlvblR5cGU7Cit9CisKK30KKwogdm9pZCB3ZWJraXRfaW5pdCgpCiB7
CiAgICAgc3RhdGljIGJvb2wgaXNJbml0aWFsaXplZCA9IGZhbHNlOwpAQCAtMTExLDMgKzE2NSw0
IEBACiAKICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRIZWxwZXIobmV3
IFdlYktpdDo6UGFzdGVib2FyZEhlbHBlckd0aygpKTsKIH0KKwpJbmRleDogV2ViS2l0L2d0ay9X
ZWJWaWV3L3dlYmtpdC1tYXJzaGFsLmxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJW
aWV3L3dlYmtpdC1tYXJzaGFsLmxpc3QJKHLDqXZpc2lvbiAyOTY5MykKKysrIFdlYktpdC9ndGsv
V2ViVmlldy93ZWJraXQtbWFyc2hhbC5saXN0CShjb3BpZSBkZSB0cmF2YWlsKQpAQCAtOSw0ICs5
LDUgQEAKIEJPT0xFQU46T0JKRUNULFNUUklORwogQk9PTEVBTjpPQkpFQ1QsU1RSSU5HLEJPT0xF
QU4KIEJPT0xFQU46T0JKRUNULFNUUklORyxTVFJJTkcsU1RSSU5HCi1JTlQ6T0JKRUNULE9CSkVD
VAorSU5UOk9CSkVDVCxPQkpFQ1QsQk9YRUQKK0lOVDpPQkpFQ1QsT0JKRUNULFNUUklORwpJbmRl
eDogV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHdlYnZpZXcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvZ3RrL1dlYlZpZXcvd2Via2l0d2Vidmlldy5oCShyw6l2aXNpb24gMjk2OTMpCisrKyBXZWJL
aXQvZ3RrL1dlYlZpZXcvd2Via2l0d2Vidmlldy5oCShjb3BpZSBkZSB0cmF2YWlsKQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJl
eXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsMTEgKzM3LDMwIEBACiAKIAogdHlw
ZWRlZiBlbnVtIHsKLSAgICBXRUJLSVRfTkFWSUdBVElPTl9SRVNQT05TRV9BQ0NFUFQsCi0gICAg
V0VCS0lUX05BVklHQVRJT05fUkVTUE9OU0VfSUdOT1JFLAotICAgIFdFQktJVF9OQVZJR0FUSU9O
X1JFU1BPTlNFX0RPV05MT0FECi19IFdlYktpdE5hdmlnYXRpb25SZXNwb25zZTsKKyAgICBXRUJL
SVRfUE9MSUNZX1JFU1BPTlNFX0VSUk9SID0gMCwKKyAgICBXRUJLSVRfUE9MSUNZX1JFU1BPTlNF
X0FDQ0VQVCwKKyAgICBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0lHTk9SRSwKKyAgICBXRUJLSVRf
UE9MSUNZX1JFU1BPTlNFX0RPV05MT0FECit9IFdlYktpdFBvbGljeVJlc3BvbnNlOwogCit0eXBl
ZGVmIGVudW0geworICAgIFdFQktJVF9BQ1RJT05fTkFWSUdBVElPTl9UWVBFLAorICAgIFdFQktJ
VF9BQ1RJT05fRUxFTUVOVCwKKyAgICBXRUJLSVRfQUNUSU9OX0JVVFRPTiwKKyAgICBXRUJLSVRf
QUNUSU9OX01PRElGSUVSX0ZMQUdTLAorICAgIFdFQktJVF9BQ1RJT05fT1JJR0lOQUxfVVJMCit9
IFdlYktpdEFjdGlvbktleTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfTkFWSUdBVElP
Tl9UWVBFX0xJTktfQ0xJQ0tFRCwKKyAgICBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX0ZPUk1fU1VC
TUlUVEVELAorICAgIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfQkFDS19GT1JXQVJELAorICAgIFdF
QktJVF9OQVZJR0FUSU9OX1RZUEVfUkVMT0FELAorICAgIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVf
Rk9STV9SRVNVQk1JVFRFRCwKKyAgICBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX1BMVUdfSU5fUkVR
VUVTVCwKKyAgICBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX09USEVSCit9IFdlYktpdE5hdmlnYXRp
b25UeXBlOworCiB0eXBlZGVmIGVudW0KIHsKICAgICBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lO
Rk9fSFRNTCA9IC0gMSwKQEAgLTYzLDkgKzgzLDEwIEBACiAgICAgV2ViS2l0V2ViVmlldyogICgq
Y3JlYXRlX3dlYl92aWV3KSAgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKIAogICAgIC8qCi0g
ICAgICogVE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhpbmcgbGlrZSBXZWJQb2xpY3lEZWNpc2lv
bkxpc3RlbmVyX1Byb3RvY29sIGluc3RlYWQKKyAgICAgKiBQb2xpY3kgaGFuZGxlcnMKICAgICAg
Ki8KLSAgICBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2UgKCpuYXZpZ2F0aW9uX3JlcXVlc3RlZCkg
KFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdE5l
dHdvcmtSZXF1ZXN0KiByZXF1ZXN0KTsKKyAgICBXZWJLaXRQb2xpY3lSZXNwb25zZSAoKm5hdmln
YXRpb25fcmVxdWVzdGVkKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1l
KiBmcmFtZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QsIEdIYXNoVGFibGUqIGFjdGlv
bl9pbmZvcm1hdGlvbik7CisgICAgV2ViS2l0UG9saWN5UmVzcG9uc2UgKCpuZXdfd2luZG93X3Jl
cXVlc3RlZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUs
IFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0LCBHSGFzaFRhYmxlKiBhY3Rpb25faW5mb3Jt
YXRpb24pOwogCiAgICAgdm9pZCAoKndpbmRvd19vYmplY3RfY2xlYXJlZCkgKFdlYktpdFdlYlZp
ZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIEpTR2xvYmFsQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dfb2JqZWN0KTsKICAgICBnY2hhciogICAoKmNob29z
ZV9maWxlKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgZ2NoYXIqIG9sZF9maWxlKTsKQEAgLTE4Niw2ICsyMDcsOSBAQAogV0VCS0lUX0FQSSBH
dGtUYXJnZXRMaXN0Kgogd2Via2l0X3dlYl92aWV3X2dldF9wYXN0ZV90YXJnZXRfbGlzdCAoV2Vi
S2l0V2ViVmlldyogd2ViVmlldyk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJf
dmlld19jYW5fc2hvd19taW1lX3R5cGUgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBjb25zdCBn
Y2hhciogbWltZV90eXBlKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCkluZGV4OiBXZWJLaXQv
Z3RrL1dlYlZpZXcvd2Via2l0cHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2Vi
Vmlldy93ZWJraXRwcml2YXRlLmgJKHLDqXZpc2lvbiAyOTY5MykKKysrIFdlYktpdC9ndGsvV2Vi
Vmlldy93ZWJraXRwcml2YXRlLmgJKGNvcGllIGRlIHRyYXZhaWwpCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogICAgIHZvaWQgYXBwbHkoV2ViS2l0U2V0dGluZ3MqLFdlYkNvcmU6OlNldHRp
bmdzKik7CkBAIC00Niw2ICs0Nyw5IEBACiAgICAgV2ViS2l0V2ViRnJhbWUqIGtpdChXZWJDb3Jl
OjpGcmFtZSopOwogICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmUoV2ViS2l0V2ViVmlldyopOwogICAg
IFdlYktpdFdlYlZpZXcqIGtpdChXZWJDb3JlOjpQYWdlKik7CisKKyAgICBXZWJLaXROYXZpZ2F0
aW9uVHlwZSBraXQoV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgdHlwZSk7CisgICAgV2ViQ29yZTo6
TmF2aWdhdGlvblR5cGUgY29yZShXZWJLaXROYXZpZ2F0aW9uVHlwZSB0eXBlKTsKIH0KIAogZXh0
ZXJuICJDIiB7CkBAIC0xMDksNiArMTEzLDcgQEAKIAogICAgIFdFQktJVF9BUEkgZ2NoYXIqCiAg
ICAgd2Via2l0X3dlYl92aWV3X2dldF9zZWxlY3RlZF90ZXh0IChXZWJLaXRXZWJWaWV3KiB3ZWJf
dmlldyk7CisgICAgCiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18603</attachid>
            <date>2008-01-22 13:00:46 -0800</date>
            <delta_ts>2008-05-08 11:05:13 -0700</delta_ts>
            <desc>async proof</desc>
            <filename>auth.patch</filename>
            <type>text/plain</type>
            <size>34637</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCShyZXZpc2lvbiAyOTY3NikKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNyArMzAsMjEg
QEAKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgorI2luY2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRl
ci5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDU3RyaW5n
LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAia2pzX2JpbmRpbmcu
aCIKICNpbmNsdWRlICJranNfcHJveHkuaCIKICNpbmNsdWRlICJranNfd2luZG93LmgiCisjaW5j
bHVkZSAid2Via2l0YXV0aGVudGljYXRpb25jaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJ3ZWJraXR3
ZWJ2aWV3LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIKKyNpbmNsdWRlICJ3ZWJraXRy
ZXNwb25zZWxpc3RlbmVyLmgiCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpAQCAtMTM0LDYgKzEzOCwzNiBAQAogICAgIHJl
dHVybiB1YTsKIH0KIAorc3RhdGljIHZvaWQgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXNwb25z
ZUNiKFdlYktpdFJlc3BvbnNlTGlzdGVuZXIqIGxpc3RlbmVyLCBXZWJLaXRSZXNwb25zZSByZXNw
b25zZSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgaWYgKCFkYXRh
KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSog
Y2hhbGxlbmdlID0gcmVpbnRlcnByZXRfY2FzdDxXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSo+KGRhdGEpOworICAgIFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJpdmF0ZSogY2hh
bGxlbmdlUHJpdmF0ZSA9IFdFQktJVF9BVVRIRU5USUNBVElPTl9DSEFMTEVOR0VfR0VUX1BSSVZB
VEUoY2hhbGxlbmdlKTsKKyAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKHdl
YmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2VfZ2V0X3VzZXIoY2hhbGxlbmdlKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9j
aGFsbGVuZ2VfZ2V0X3Bhc3N3b3JkKGNoYWxsZW5nZSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKKworICAg
IHN3aXRjaCAocmVzcG9uc2UpIHsKKyAgICBjYXNlIFdFQktJVF9BVVRIRU5USUNBVElPTl9SRVNQ
T05TRV9VU0U6CisgICAgICAgIGNoYWxsZW5nZVByaXZhdGUtPndlYkhhbmRsZS0+cmVjZWl2ZWRD
cmVkZW50aWFsKCpjaGFsbGVuZ2VQcml2YXRlLT53ZWJDaGFsbGVuZ2UsIGNyZWRlbnRpYWwpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9BVVRIRU5USUNBVElPTl9SRVNQT05TRV9D
T05USU5VRV9XSVRIT1VUX0NSRURFTlRJQUw6CisgICAgICAgIGNoYWxsZW5nZVByaXZhdGUtPndl
YkhhbmRsZS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKCpjaGFs
bGVuZ2VQcml2YXRlLT53ZWJDaGFsbGVuZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdF
QktJVF9BVVRIRU5USUNBVElPTl9SRVNQT05TRV9DQU5DRUw6CisgICAgICAgIGNoYWxsZW5nZVBy
aXZhdGUtPndlYkhhbmRsZS0+cmVjZWl2ZWRDYW5jZWxsYXRpb24oKmNoYWxsZW5nZVByaXZhdGUt
PndlYkNoYWxsZW5nZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGdf
YXNzZXJ0X25vdF9yZWFjaGVkICgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBnX29i
amVjdF91bnJlZihjaGFsbGVuZ2UpOworfQorCiBTdHJpbmcgRnJhbWVMb2FkZXJDbGllbnQ6OnVz
ZXJBZ2VudChjb25zdCBLVVJMJikKIHsKICAgICBpZiAobV91c2VyQWdlbnQuaXNFbXB0eSgpKQpA
QCAtMTY1LDkgKzE5OSwyNiBAQAogICAgIGZsLT5hZGREYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllciwgY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqIGRv
Y3VtZW50TG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiB3ZWJDaGFsbGVuZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxv
YWRlcigpLT5oYW5kbGUoKTsKKyAgICBBU1NFUlQoaGFuZGxlKTsKKyAgICBpZiAoIWhhbmRsZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNo
YWxsZW5nZSA9IHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2VfbmV3KCk7CisgICAgV2Vi
S2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcml2YXRlKiBjaGFsbGVuZ2VQcml2YXRlID0gV0VC
S0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRV9HRVRfUFJJVkFURShjaGFsbGVuZ2UpOworICAg
ICpjaGFsbGVuZ2VQcml2YXRlLT53ZWJDaGFsbGVuZ2UgPSB3ZWJDaGFsbGVuZ2U7CisgICAgY2hh
bGxlbmdlUHJpdmF0ZS0+d2ViSGFuZGxlID0gaGFuZGxlOworCisgICAgQ3JlZGVudGlhbCBjcmVk
ZW50aWFsID0gd2ViQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpOworICAgIHdlYmtpdF9h
dXRoZW50aWNhdGlvbl9jaGFsbGVuZ2Vfc2V0X3VzZXIoY2hhbGxlbmdlLCBjcmVkZW50aWFsLnVz
ZXIoKS51dGY4KCkuZGF0YSgpKTsKKyAgICB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdl
X3NldF9wYXNzd29yZChjaGFsbGVuZ2UsIGNyZWRlbnRpYWwucGFzc3dvcmQoKS51dGY4KCkuZGF0
YSgpKTsKKworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1f
ZnJhbWUpOworICAgIFdlYktpdFJlc3BvbnNlTGlzdGVuZXIqIGxpc3RlbmVyID0gd2Via2l0X3Jl
c3BvbnNlX2xpc3RlbmVyX25ldyhhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlc3BvbnNlQ2IsIGNo
YWxsZW5nZSwgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX1JFU1BPTlNFX1VTRSk7CisgICAgZ2Jvb2xl
YW4gcmV0OworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAiYXV0aGVudGljYXRp
b24tcmVxdWVzdGVkIiwgbV9mcmFtZSwgY2hhbGxlbmdlLCBsaXN0ZW5lciwgJnJldCk7OwogfQog
CiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllciwgY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQpJbmRleDogV2ViS2l0L2d0ay9XZWJWaWV3L3dl
YmtpdC1tYXJzaGFsLmxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtp
dC1tYXJzaGFsLmxpc3QJKHJldmlzaW9uIDI5Njc2KQorKysgV2ViS2l0L2d0ay9XZWJWaWV3L3dl
YmtpdC1tYXJzaGFsLmxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTksNCArOSw1IEBACiBCT09MRUFO
Ok9CSkVDVCxTVFJJTkcKIEJPT0xFQU46T0JKRUNULFNUUklORyxCT09MRUFOCiBCT09MRUFOOk9C
SkVDVCxTVFJJTkcsU1RSSU5HLFNUUklORworQk9PTEVBTjpPQkpFQ1QsT0JKRUNULE9CSkVDVAog
SU5UOk9CSkVDVCxPQkpFQ1QKSW5kZXg6IFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXRyZXNwb25z
ZWxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0cmVz
cG9uc2VsaXN0ZW5lci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Vi
a2l0cmVzcG9uc2VsaXN0ZW5lci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgTHVjYSBCcnVubworICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJ3ZWJraXRyZXNwb25zZWxpc3RlbmVyLmgiCisjaW5jbHVkZSAid2Via2l0cHJp
dmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK2V4dGVybiAiQyIgeworCitHX0RFRklORV9UWVBFKFdlYktpdFJlc3BvbnNlTGlzdGVu
ZXIsIHdlYmtpdF9yZXNwb25zZV9saXN0ZW5lciwgR19UWVBFX09CSkVDVCk7CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF9yZXNwb25zZV9saXN0ZW5lcl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7
CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3Jlc3BvbnNlX2xpc3RlbmVyX3BhcmVudF9jbGFz
cyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9yZXNwb25zZV9s
aXN0ZW5lcl9jbGFzc19pbml0KFdlYktpdFJlc3BvbnNlTGlzdGVuZXJDbGFzcyogbGlzdGVuZXJD
bGFzcykKK3sKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUobGlzdGVuZXJDbGFzcywgc2l6
ZW9mKFdlYktpdFJlc3BvbnNlTGlzdGVuZXJQcml2YXRlKSk7CisKKyAgICBHX09CSkVDVF9DTEFT
UyhsaXN0ZW5lckNsYXNzKS0+ZmluYWxpemUgPSB3ZWJraXRfcmVzcG9uc2VfbGlzdGVuZXJfZmlu
YWxpemU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9yZXNwb25zZV9saXN0ZW5lcl9pbml0KFdl
YktpdFJlc3BvbnNlTGlzdGVuZXIqIGxpc3RlbmVyKQoreworfQorCitXZWJLaXRSZXNwb25zZUxp
c3RlbmVyKiB3ZWJraXRfcmVzcG9uc2VfbGlzdGVuZXJfbmV3KFdlYktpdFJlc3BvbnNlQ2FsbGJh
Y2sgY2FsbGJhY2tfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRSZXNwb25zZSBkZWZhdWx0X3Jl
c3BvbnNlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNhbGxiYWNrX2Z1bmMsIE5VTEwp
OworCisgICAgV2ViS2l0UmVzcG9uc2VMaXN0ZW5lciogbGlzdGVuZXIgPSBXRUJLSVRfUkVTUE9O
U0VfTElTVEVORVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1JFU1BPTlNFX0xJU1RFTkVSLCBO
VUxMKSk7CisgICAgV2ViS2l0UmVzcG9uc2VMaXN0ZW5lclByaXZhdGUqIGxpc3RlbmVyUHJpdmF0
ZSA9IFdFQktJVF9SRVNQT05TRV9MSVNURU5FUl9HRVRfUFJJVkFURShsaXN0ZW5lcik7CisKKyAg
ICBsaXN0ZW5lclByaXZhdGUtPmNhbGxiYWNrX2Z1bmMgPSBjYWxsYmFja19mdW5jOworICAgIGxp
c3RlbmVyUHJpdmF0ZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOworICAgIGxpc3RlbmVyUHJpdmF0
ZS0+ZGVmYXVsdF9yZXNwb25zZSA9IGRlZmF1bHRfcmVzcG9uc2U7CisKKyAgICByZXR1cm4gbGlz
dGVuZXI7Cit9CisKK3ZvaWQgd2Via2l0X3Jlc3BvbnNlX2xpc3RlbmVyX3JlcGx5KFdlYktpdFJl
c3BvbnNlTGlzdGVuZXIqIGxpc3RlbmVyLCBXZWJLaXRSZXNwb25zZSByZXNwb25zZSkKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19SRVNQT05TRV9MSVNURU5FUihsaXN0ZW5lcikp
OworCisgICAgV2ViS2l0UmVzcG9uc2VMaXN0ZW5lclByaXZhdGUqIGxpc3RlbmVyUHJpdmF0ZSA9
IFdFQktJVF9SRVNQT05TRV9MSVNURU5FUl9HRVRfUFJJVkFURShsaXN0ZW5lcik7CisgICAgCisg
ICAgbGlzdGVuZXJQcml2YXRlLT5jYWxsYmFja19mdW5jKGxpc3RlbmVyLCByZXNwb25zZSwgbGlz
dGVuZXJQcml2YXRlLT51c2VyX2RhdGEpOworfQorCit2b2lkIHdlYmtpdF9yZXNwb25zZV9saXN0
ZW5lcl9yZXBseV9kZWZhdWx0KFdlYktpdFJlc3BvbnNlTGlzdGVuZXIqIGxpc3RlbmVyKQorewor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1JFU1BPTlNFX0xJU1RFTkVSKGxpc3RlbmVy
KSk7CisKKyAgICBXZWJLaXRSZXNwb25zZUxpc3RlbmVyUHJpdmF0ZSogbGlzdGVuZXJQcml2YXRl
ID0gV0VCS0lUX1JFU1BPTlNFX0xJU1RFTkVSX0dFVF9QUklWQVRFKGxpc3RlbmVyKTsKKworICAg
IHdlYmtpdF9yZXNwb25zZV9saXN0ZW5lcl9yZXBseShsaXN0ZW5lciwgbGlzdGVuZXJQcml2YXRl
LT5kZWZhdWx0X3Jlc3BvbnNlKTsKK30KKworfQpJbmRleDogV2ViS2l0L2d0ay9XZWJWaWV3L3dl
YmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3
ZWJ2aWV3LmNwcAkocmV2aXNpb24gMjk2NzYpCisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0
d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAKICAgICBDT1BZX0NM
SVBCT0FSRCwKICAgICBQQVNURV9DTElQQk9BUkQsCiAgICAgQ1VUX0NMSVBCT0FSRCwKKyAgICBB
VVRIRU5USUNBVElPTl9SRVFVRVNURUQsCiAgICAgTEFTVF9TSUdOQUwKIH07CiAKQEAgLTQzMSw2
ICs0MzIsODIgQEAKICAgICByZXR1cm4gV0VCS0lUX05BVklHQVRJT05fUkVTUE9OU0VfQUNDRVBU
OwogfQogCisvLyBGSVhNRTogVkVFRUVFUlkgQkFEIEpVU1QgRk9SIEEgUFJPT0YKK3N0YXRpYyBH
dGtXaWRnZXQqIGRpYWxvZzsKK3N0YXRpYyBHdGtXaWRnZXQqIHVzZXJfZW50cnk7CitzdGF0aWMg
R3RrV2lkZ2V0KiBwYXNzd29yZF9lbnRyeTsKK3N0YXRpYyBXZWJLaXRBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSogYXV0aF9jaGFsbGVuZ2U7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19h
dXRoZW50aWNhdGlvbl9kaWFsb2dfZGVmYXVsdF9jYihHdGtXaWRnZXQqLCBncG9pbnRlciBkYXRh
KQoreworICAgIFdlYktpdFJlc3BvbnNlTGlzdGVuZXIqIGxpc3RlbmVyID0gcmVpbnRlcnByZXRf
Y2FzdDxXZWJLaXRSZXNwb25zZUxpc3RlbmVyKj4oZGF0YSk7CisgICAgd2Via2l0X2F1dGhlbnRp
Y2F0aW9uX2NoYWxsZW5nZV9zZXRfdXNlcihhdXRoX2NoYWxsZW5nZSwgZ3RrX2VudHJ5X2dldF90
ZXh0KEdUS19FTlRSWSh1c2VyX2VudHJ5KSkpOworICAgIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9j
aGFsbGVuZ2Vfc2V0X3Bhc3N3b3JkKGF1dGhfY2hhbGxlbmdlLCBndGtfZW50cnlfZ2V0X3RleHQo
R1RLX0VOVFJZKHBhc3N3b3JkX2VudHJ5KSkpOworICAgIGd0a193aWRnZXRfZGVzdHJveShkaWFs
b2cpOworICAgIHdlYmtpdF9yZXNwb25zZV9saXN0ZW5lcl9yZXBseV9kZWZhdWx0KGxpc3RlbmVy
KTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19hdXRoZW50aWNhdGlvbl9k
aWFsb2dfY2FuY2VsX2NiKGdwb2ludGVyIGRhdGEsIEd0a1dpZGdldCopCit7CisgICAgV2ViS2l0
UmVzcG9uc2VMaXN0ZW5lciogbGlzdGVuZXIgPSByZWludGVycHJldF9jYXN0PFdlYktpdFJlc3Bv
bnNlTGlzdGVuZXIqPihkYXRhKTsKKyAgICB3ZWJraXRfcmVzcG9uc2VfbGlzdGVuZXJfcmVwbHko
bGlzdGVuZXIsIFdFQktJVF9BVVRIRU5USUNBVElPTl9SRVNQT05TRV9DT05USU5VRV9XSVRIT1VU
X0NSRURFTlRJQUwpOworICAgIGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOworICAgIHJldHVy
biBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX2F1dGhl
bnRpY2F0aW9uX3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJGcmFt
ZSogZnJhbWUsIFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UsIFdlYktp
dFJlc3BvbnNlTGlzdGVuZXIqIGxpc3RlbmVyKQoreworICAgIEd0a1dpZGdldCogd2luZG93Owor
ICAgIEd0a1dpZGdldCogdmJveDsKKyAgICBHdGtXaWRnZXQqIHRhYmxlOworICAgIEd0a1dpZGdl
dCogYnV0dG9uOworCisgICAgYXV0aF9jaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7CisKKyAgICBkaWFs
b2cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKKyAgICB3aW5kb3cgPSBn
dGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBndGtfd2lu
ZG93X3NldF90cmFuc2llbnRfZm9yKEdUS19XSU5ET1coZGlhbG9nKSwgR1RLX1dJTkRPVyh3aW5k
b3cpKTsKKyAgICBnY2hhciogdGl0bGUgPSBnX3N0cmNvbmNhdCgiQXV0aGVudGljYXRpb24gLSAi
LCB3ZWJraXRfd2ViX2ZyYW1lX2dldF91cmkoZnJhbWUpLCBOVUxMKTsKKyAgICBndGtfd2luZG93
X3NldF90aXRsZShHVEtfV0lORE9XKGRpYWxvZyksIHRpdGxlKTsKKyAgICBnX2ZyZWUodGl0bGUp
OworCisgICAgdmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMyk7CisKKyAgICB0YWJsZSA9IGd0
a190YWJsZV9uZXcoMiwgMiwgRkFMU0UpOworICAgIGd0a190YWJsZV9zZXRfcm93X3NwYWNpbmdz
KEdUS19UQUJMRSh0YWJsZSksIDMpOworICAgIGd0a190YWJsZV9zZXRfY29sX3NwYWNpbmdzKEdU
S19UQUJMRSh0YWJsZSksIDMpOworCisgICAgZ3RrX3RhYmxlX2F0dGFjaF9kZWZhdWx0cyhHVEtf
VEFCTEUodGFibGUpLCBndGtfbGFiZWxfbmV3KCJVc2VybmFtZToiKSwgMCwgMSwgMCwgMSk7Cisg
ICAgdXNlcl9lbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKKyAgICBndGtfZW50cnlfc2V0X3RleHQo
R1RLX0VOVFJZKHVzZXJfZW50cnkpLCB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX2dl
dF91c2VyKGNoYWxsZW5nZSkpOworICAgIGd0a19lbnRyeV9zZXRfYWN0aXZhdGVzX2RlZmF1bHQo
R1RLX0VOVFJZKHVzZXJfZW50cnkpLCBUUlVFKTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1
bHRzKEdUS19UQUJMRSh0YWJsZSksIHVzZXJfZW50cnksIDEsIDIsIDAsIDEpOworCisgICAgZ3Rr
X3RhYmxlX2F0dGFjaF9kZWZhdWx0cyhHVEtfVEFCTEUodGFibGUpLCBndGtfbGFiZWxfbmV3KCJQ
YXNzd29yZDoiKSwgMCwgMSwgMSwgMik7CisgICAgcGFzc3dvcmRfZW50cnkgPSBndGtfZW50cnlf
bmV3KCk7CisgICAgZ3RrX2VudHJ5X3NldF90ZXh0KEdUS19FTlRSWShwYXNzd29yZF9lbnRyeSks
IHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2VfZ2V0X3Bhc3N3b3JkKGNoYWxsZW5nZSkp
OworICAgIGd0a190YWJsZV9hdHRhY2hfZGVmYXVsdHMoR1RLX1RBQkxFKHRhYmxlKSwgcGFzc3dv
cmRfZW50cnksIDEsIDIsIDEsIDIpOworCisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0X2RlZmF1bHRz
KEdUS19CT1godmJveCksIHRhYmxlKTsKKworICAgIGJ1dHRvbiA9IGd0a19idXR0b25fbmV3X2Zy
b21fc3RvY2soR1RLX1NUT0NLX0NBTkNFTCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVk
IChHX09CSkVDVChidXR0b24pLCAiY2xpY2tlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHX0NBTExCQUNLKHdlYmtpdF93ZWJfdmlld19hdXRoZW50aWNhdGlvbl9kaWFsb2dfY2Fu
Y2VsX2NiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyKTsKKyAgICBn
dGtfYm94X3BhY2tfc3RhcnRfZGVmYXVsdHMoR1RLX0JPWCh2Ym94KSwgYnV0dG9uKTsKKyAgICBi
dXR0b24gPSBndGtfYnV0dG9uX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19PSyk7CisgICAgZ19z
aWduYWxfY29ubmVjdCAoR19PQkpFQ1QoYnV0dG9uKSwgImNsaWNrZWQiLAorICAgICAgICAgICAg
ICAgICAgICAgIEdfQ0FMTEJBQ0sod2Via2l0X3dlYl92aWV3X2F1dGhlbnRpY2F0aW9uX2RpYWxv
Z19kZWZhdWx0X2NiKSwKKyAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcik7CisgICAgZ3Rr
X2JveF9wYWNrX3N0YXJ0X2RlZmF1bHRzKEdUS19CT1godmJveCksIGJ1dHRvbik7CisKKyAgICBn
dGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGRpYWxvZyksIHZib3gpOworCisgICAgZ3Rr
X3dpZGdldF9zaG93X2FsbChkaWFsb2cpOworCisgICAgcmV0dXJuIEZBTFNFOworfQorCiBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQoV2ViS2l0
V2ViVmlldyosIFdlYktpdFdlYkZyYW1lKiwgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIHdpbmRvd19vYmplY3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTkx
MCw2ICs5ODcsMjYgQEAKICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19WT0lE
LAogICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOwogCisgICAgLyoqCisgICAgICogV2ViS2l0
V2ViVmlldzo6YXV0aGVudGljYXRpb24tcmVxdWVzdGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhl
IG9iamVjdCB3aGljaCByZWNlaXZlZCB0aGUgc2lnbmFsCisgICAgICoKKyAgICAgKiBUaGUgOjph
dXRoZW50aWNhdGlvbi1yZXF1ZXN0ZWQgc2lnbmFsIGlzIGEgZW1pdHRlZCB3aGVuIGFuIGF1dGhl
bnRpY2F0aW9uIGlzCisgICAgICogcmVxdWVzdGVkIGZyb20gdGhlIHNlcnZlciB0byBhY2Nlc3Mg
YSByZXNvdXJjZS4KKyAgICAgKgorICAgICAqIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciB0aGlz
IHNpZ25hbCBpcyBjcmVhdGluZyBhbiBpbnB1dCBkaWFsb2cgdG8gZ2V0IGEgc3VpdGFibGUgY3Jl
ZGVudGlhbC4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tQQVNURV9DTElQ
Qk9BUkRdID0gZ19zaWduYWxfbmV3KCJhdXRoZW50aWNhdGlvbi1yZXF1ZXN0ZWQiLAorICAgICAg
ICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2ln
bmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAg
ICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGF1dGhlbnRpY2F0aW9uX3Jl
cXVlc3RlZCksCisgICAgICAgICAgICBOVUxMLCBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21h
cnNoYWxfQk9PTEVBTl9fT0JKRUNUX09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVf
Qk9PTEVBTiwgMywKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9GUkFNRSwKKyAgICAgICAg
ICAgIFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRSwKKyAgICAgICAgICAgIFdF
QktJVF9UWVBFX1JFU1BPTlNFX0xJU1RFTkVSKTsKKwogICAgIC8qCiAgICAgICogaW1wbGVtZW50
YXRpb25zIG9mIHZpcnR1YWwgbWV0aG9kcwogICAgICAqLwpAQCAtOTI1LDYgKzEwMjIsNyBAQAog
ICAgIHdlYlZpZXdDbGFzcy0+Y3V0X2NsaXBib2FyZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2N1
dF9jbGlwYm9hcmQ7CiAgICAgd2ViVmlld0NsYXNzLT5jb3B5X2NsaXBib2FyZCA9IHdlYmtpdF93
ZWJfdmlld19yZWFsX2NvcHlfY2xpcGJvYXJkOwogICAgIHdlYlZpZXdDbGFzcy0+cGFzdGVfY2xp
cGJvYXJkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfcGFzdGVfY2xpcGJvYXJkOworICAgIHdlYlZp
ZXdDbGFzcy0+YXV0aGVudGljYXRpb25fcmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxf
YXV0aGVudGljYXRpb25fcmVxdWVzdGVkOwogCiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFz
cyA9IEdfT0JKRUNUX0NMQVNTKHdlYlZpZXdDbGFzcyk7CiAgICAgb2JqZWN0Q2xhc3MtPmZpbmFs
aXplID0gd2Via2l0X3dlYl92aWV3X2ZpbmFsaXplOwpJbmRleDogV2ViS2l0L2d0ay9XZWJWaWV3
L3dlYmtpdHJlc3BvbnNlbGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYlZp
ZXcvd2Via2l0cmVzcG9uc2VsaXN0ZW5lci5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2d0ay9X
ZWJWaWV3L3dlYmtpdHJlc3BvbnNlbGlzdGVuZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBMdWNhIEJydW5vCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV0VCS0lU
X1JFU1BPTlNFX0xJU1RFTkVSX0gKKyNkZWZpbmUgV0VCS0lUX1JFU1BPTlNFX0xJU1RFTkVSX0gK
KworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisKKyNpbmNsdWRlICJ3ZWJraXRkZWZpbmVzLmgi
CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9SRVNQT05TRV9MSVNURU5F
UiAgICAgICAgICAgICh3ZWJraXRfcmVzcG9uc2VfbGlzdGVuZXJfZ2V0X3R5cGUoKSkKKyNkZWZp
bmUgV0VCS0lUX1JFU1BPTlNFX0xJU1RFTkVSKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1JFU1BPTlNFX0xJU1RFTkVSLCBXZWJL
aXRSZXNwb25zZUxpc3RlbmVyKSkKKyNkZWZpbmUgV0VCS0lUX1JFU1BPTlNFX0xJU1RFTkVSX0NM
QVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9U
WVBFX1JFU1BPTlNFX0xJU1RFTkVSLCBXZWJLaXRSZXNwb25zZUxpc3RlbmVyQ2xhc3MpKQorI2Rl
ZmluZSBXRUJLSVRfSVNfUkVTUE9OU0VfTElTVEVORVIob2JqKSAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfUkVTUE9OU0VfTElTVEVORVIpKQor
I2RlZmluZSBXRUJLSVRfSVNfUkVTUE9OU0VfTElTVEVORVJfQ0xBU1Moa2xhc3MpIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfUkVTUE9OU0VfTElTVEVORVIp
KQorI2RlZmluZSBXRUJLSVRfUkVTUE9OU0VfTElTVEVORVJfR0VUX0NMQVNTKG9iaikgIChHX1RZ
UEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfUkVTUE9OU0VfTElTVEVO
RVIsIFdlYktpdFJlc3BvbnNlTGlzdGVuZXJDbGFzcykpCisKK3R5cGVkZWYgZW51bSB7CisgICAg
V0VCS0lUX0FVVEhFTlRJQ0FUSU9OX1JFU1BPTlNFX1VTRSwKKyAgICBXRUJLSVRfQVVUSEVOVElD
QVRJT05fUkVTUE9OU0VfQ09OVElOVUVfV0lUSE9VVF9DUkVERU5USUFMLAorICAgIFdFQktJVF9B
VVRIRU5USUNBVElPTl9SRVNQT05TRV9DQU5DRUwKK30gV2ViS2l0UmVzcG9uc2U7CisKK3R5cGVk
ZWYgdm9pZCAoKldlYktpdFJlc3BvbnNlQ2FsbGJhY2spIChXZWJLaXRSZXNwb25zZUxpc3RlbmVy
KiwgV2ViS2l0UmVzcG9uc2UsIGdwb2ludGVyKTsKKworc3RydWN0IF9XZWJLaXRSZXNwb25zZUxp
c3RlbmVyIHsKKyAgICBHT2JqZWN0IHBhcmVudDsKK307CisKK3N0cnVjdCBfV2ViS2l0UmVzcG9u
c2VMaXN0ZW5lckNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OworfTsKKworV0VCS0lU
X0FQSSBHVHlwZQord2Via2l0X3Jlc3BvbnNlX2xpc3RlbmVyX2dldF90eXBlICh2b2lkKTsKKwor
V0VCS0lUX0FQSSBXZWJLaXRSZXNwb25zZUxpc3RlbmVyKgord2Via2l0X3Jlc3BvbnNlX2xpc3Rl
bmVyX25ldyAoV2ViS2l0UmVzcG9uc2VDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgZGF0YSwg
V2ViS2l0UmVzcG9uc2UgZGVmYXVsdF9yZXNwb25zZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3Jlc3BvbnNlX2xpc3RlbmVyX3JlcGx5IChXZWJLaXRSZXNwb25zZUxpc3RlbmVyKiBsaXN0
ZW5lciwgV2ViS2l0UmVzcG9uc2UgcmVzcG9uc2UpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtp
dF9yZXNwb25zZV9saXN0ZW5lcl9yZXBseV9kZWZhdWx0IChXZWJLaXRSZXNwb25zZUxpc3RlbmVy
KiBsaXN0ZW5lcik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2d0ay9X
ZWJWaWV3L3dlYmtpdHdlYnZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYlZpZXcv
d2Via2l0d2Vidmlldy5oCShyZXZpc2lvbiAyOTY3NikKKysrIFdlYktpdC9ndGsvV2ViVmlldy93
ZWJraXR3ZWJ2aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAKICAgICB2b2lk
ICgqY3V0X2NsaXBib2FyZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKICAgICB2b2lkICgq
Y29weV9jbGlwYm9hcmQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAgICAgdm9pZCAoKnBh
c3RlX2NsaXBib2FyZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKKyAgICBnYm9vbGVhbiAo
KmF1dGhlbnRpY2F0aW9uX3JlcXVlc3RlZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJL
aXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVu
Z2UsIFdlYktpdFJlc3BvbnNlTGlzdGVuZXIqIGxpc3RlbmVyKTsKIAogICAgIC8qCiAgICAgICog
aW50ZXJuYWwKSW5kZXg6IFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXRwcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHByaXZhdGUuaAkocmV2aXNpb24gMjk2
NzYpCisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0cHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSwxMCBAQAogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRl
ICJ3ZWJraXR3ZWJmcmFtZS5oIgogI2luY2x1ZGUgIndlYmtpdG5ldHdvcmtyZXF1ZXN0LmgiCisj
aW5jbHVkZSAid2Via2l0YXV0aGVudGljYXRpb25jaGFsbGVuZ2UuaCIKKyNpbmNsdWRlICJ3ZWJr
aXRyZXNwb25zZWxpc3RlbmVyLmgiCiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC05Miw2ICs5NSwyMyBAQAogICAgIHN0cnVjdCBfV2ViS2l0TmV0d29ya1Jl
cXVlc3RQcml2YXRlIHsKICAgICAgICAgZ2NoYXIqIHVyaTsKICAgICB9OworICAgIAorICAgICNk
ZWZpbmUgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRV9HRVRfUFJJVkFURShvYmopICAg
IChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX0FVVEhFTlRJ
Q0FUSU9OX0NIQUxMRU5HRSwgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcml2YXRlKSkK
KyAgICB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcml2YXRl
IFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJpdmF0ZTsKKyAgICBzdHJ1Y3QgX1dlYktp
dEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJpdmF0ZSB7CisgICAgICAgIFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKiB3ZWJDaGFsbGVuZ2U7CisgICAgICAgIFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlKiB3ZWJIYW5kbGU7CisgICAgICAgIGdjaGFyKiB1c2VyOworICAgICAgICBnY2hh
ciogcGFzc3dvcmQ7CisgICAgfTsKKyAgCisgICAgI2RlZmluZSBXRUJLSVRfUkVTUE9OU0VfTElT
VEVORVJfR0VUX1BSSVZBVEUob2JqKSAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChv
YmopLCBXRUJLSVRfVFlQRV9SRVNQT05TRV9MSVNURU5FUiwgV2ViS2l0UmVzcG9uc2VMaXN0ZW5l
clByaXZhdGUpKQorICAgIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRSZXNwb25zZUxpc3RlbmVyUHJp
dmF0ZSBXZWJLaXRSZXNwb25zZUxpc3RlbmVyUHJpdmF0ZTsKKyAgICBzdHJ1Y3QgX1dlYktpdFJl
c3BvbnNlTGlzdGVuZXJQcml2YXRlIHsKKyAgICAgICAgV2ViS2l0UmVzcG9uc2VDYWxsYmFjayBj
YWxsYmFja19mdW5jOworICAgICAgICBncG9pbnRlciB1c2VyX2RhdGE7CisgICAgICAgIFdlYktp
dFJlc3BvbnNlIGRlZmF1bHRfcmVzcG9uc2U7CisgICAgfTsKIAogICAgIFdlYktpdFdlYkZyYW1l
KiB3ZWJraXRfd2ViX2ZyYW1lX2luaXRfd2l0aF93ZWJfdmlldyhXZWJLaXRXZWJWaWV3KiwgV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Kik7CiAKSW5kZXg6IFdlYktpdC9ndGsvV2ViVmll
dy93ZWJraXRkZWZpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtp
dGRlZmluZXMuaAkocmV2aXNpb24gMjk2NzYpCisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0
ZGVmaW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSwxMiBAQAogdHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdE5ldHdvcmtSZXF1ZXN0IFdlYktpdE5ldHdvcmtSZXF1ZXN0OwogdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdE5ldHdvcmtSZXF1ZXN0Q2xhc3MgV2ViS2l0TmV0d29ya1JlcXVlc3RDbGFz
czsKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIFdlYktp
dEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQ2xhc3MgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGFzczsK
KwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFJlc3BvbnNlTGlzdGVuZXIgV2ViS2l0UmVzcG9uc2VM
aXN0ZW5lcjsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRSZXNwb25zZUxpc3RlbmVyQ2xhc3MgV2Vi
S2l0UmVzcG9uc2VMaXN0ZW5lckNsYXNzOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKSW5kZXg6
IFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXRhdXRoZW50aWNhdGlvbmNoYWxsZW5nZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdGF1dGhlbnRpY2F0aW9uY2hhbGxl
bmdlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXRhdXRoZW50
aWNhdGlvbmNoYWxsZW5nZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEx1Y2EgQnJ1bm8KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSAid2Via2l0YXV0aGVudGljYXRpb25jaGFsbGVuZ2UuaCIKKyNpbmNsdWRlICJ3ZWJr
aXRwcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworZXh0ZXJuICJDIiB7CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UsIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2UsIEdfVFlQRV9P
QkpFQ1QpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX2Zp
bmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByaXZhdGUqIGNoYWxsZW5nZVByaXZhdGUgPSBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hB
TExFTkdFX0dFVF9QUklWQVRFKG9iamVjdCk7CisKKyAgICBkZWxldGUgY2hhbGxlbmdlUHJpdmF0
ZS0+d2ViQ2hhbGxlbmdlOworICAgIGdfZnJlZShjaGFsbGVuZ2VQcml2YXRlLT51c2VyKTsKKyAg
ICBnX2ZyZWUoY2hhbGxlbmdlUHJpdmF0ZS0+cGFzc3dvcmQpOworCisgICAgR19PQkpFQ1RfQ0xB
U1Mod2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6
ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxl
bmdlX2NsYXNzX2luaXQoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGFzcyogY2hhbGxl
bmdlQ2xhc3MpCit7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGNoYWxsZW5nZUNsYXNz
LCBzaXplb2YoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcml2YXRlKSk7CisKKyAgICBH
X09CSkVDVF9DTEFTUyhjaGFsbGVuZ2VDbGFzcyktPmZpbmFsaXplID0gd2Via2l0X2F1dGhlbnRp
Y2F0aW9uX2NoYWxsZW5nZV9maW5hbGl6ZTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2F1dGhl
bnRpY2F0aW9uX2NoYWxsZW5nZV9pbml0KFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBj
aGFsbGVuZ2UpCit7CisgICAgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcml2YXRlKiBj
aGFsbGVuZ2VQcml2YXRlID0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRV9HRVRfUFJJ
VkFURShjaGFsbGVuZ2UpOworCisgICAgY2hhbGxlbmdlUHJpdmF0ZS0+d2ViQ2hhbGxlbmdlID0g
bmV3IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CisgICAgY2hhbGxlbmdlUHJpdmF0ZS0+d2Vi
SGFuZGxlID0gTlVMTDsKKyAgICBjaGFsbGVuZ2VQcml2YXRlLT51c2VyID0gTlVMTDsKKyAgICBj
aGFsbGVuZ2VQcml2YXRlLT5wYXNzd29yZCA9IE5VTEw7Cit9CisKK1dlYktpdEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKiB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX25ldygpCit7Cisg
ICAgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSA9IFdFQktJVF9BVVRI
RU5USUNBVElPTl9DSEFMTEVOR0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FU
SU9OX0NIQUxMRU5HRSwgTlVMTCkpOworCisgICAgcmV0dXJuIGNoYWxsZW5nZTsKK30KKwordm9p
ZCB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX3NldF91c2VyKFdlYktpdEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UsIGNvbnN0IGdjaGFyKiB1c2VyKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRShjaGFsbGVu
Z2UpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHVzZXIpOworICAgIAorICAgIFdlYktpdEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJpdmF0ZSogY2hhbGxlbmdlUHJpdmF0ZSA9IFdFQktJVF9BVVRI
RU5USUNBVElPTl9DSEFMTEVOR0VfR0VUX1BSSVZBVEUoY2hhbGxlbmdlKTsKKworICAgIGdfZnJl
ZShjaGFsbGVuZ2VQcml2YXRlLT51c2VyKTsKKyAgICBjaGFsbGVuZ2VQcml2YXRlLT51c2VyID0g
Z19zdHJkdXAodXNlcik7Cit9CisKK2NvbnN0IGdjaGFyKiB3ZWJraXRfYXV0aGVudGljYXRpb25f
Y2hhbGxlbmdlX2dldF91c2VyKFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVu
Z2UpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FVVEhFTlRJQ0FUSU9O
X0NIQUxMRU5HRShjaGFsbGVuZ2UpLCBOVUxMKTsKKworICAgIFdlYktpdEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJpdmF0ZSogY2hhbGxlbmdlUHJpdmF0ZSA9IFdFQktJVF9BVVRIRU5USUNBVElP
Tl9DSEFMTEVOR0VfR0VUX1BSSVZBVEUoY2hhbGxlbmdlKTsKKworICAgIHJldHVybiBjaGFsbGVu
Z2VQcml2YXRlLT51c2VyOworfQorCit2b2lkIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVu
Z2Vfc2V0X3Bhc3N3b3JkKFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2Us
IGNvbnN0IGdjaGFyKiBwYXNzd29yZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19BVVRIRU5USUNBVElPTl9DSEFMTEVOR0UoY2hhbGxlbmdlKSk7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChwYXNzd29yZCk7CisgICAgCisgICAgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cml2YXRlKiBjaGFsbGVuZ2VQcml2YXRlID0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5H
RV9HRVRfUFJJVkFURShjaGFsbGVuZ2UpOworCisgICAgZ19mcmVlKGNoYWxsZW5nZVByaXZhdGUt
PnBhc3N3b3JkKTsKKyAgICBjaGFsbGVuZ2VQcml2YXRlLT5wYXNzd29yZCA9IGdfc3RyZHVwKHBh
c3N3b3JkKTsKK30KKworY29uc3QgZ2NoYXIqIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVu
Z2VfZ2V0X3Bhc3N3b3JkKFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2Up
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FVVEhFTlRJQ0FUSU9OX0NI
QUxMRU5HRShjaGFsbGVuZ2UpLCBOVUxMKTsKKworICAgIFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJpdmF0ZSogY2hhbGxlbmdlUHJpdmF0ZSA9IFdFQktJVF9BVVRIRU5USUNBVElPTl9D
SEFMTEVOR0VfR0VUX1BSSVZBVEUoY2hhbGxlbmdlKTsKKworICAgIHJldHVybiBjaGFsbGVuZ2VQ
cml2YXRlLT5wYXNzd29yZDsKK30KKworfQpJbmRleDogV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtp
dGF1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJW
aWV3L3dlYmtpdGF1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQvZ3RrL1dlYlZpZXcvd2Via2l0YXV0aGVudGljYXRpb25jaGFsbGVuZ2UuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBMdWNhIEJydW5v
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpZm5kZWYgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRV9ICisjZGVmaW5lIFdFQktJ
VF9BVVRIRU5USUNBVElPTl9DSEFMTEVOR0VfSAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4K
KworI2luY2x1ZGUgIndlYmtpdGRlZmluZXMuaCIKKworR19CRUdJTl9ERUNMUworCisjZGVmaW5l
IFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRSAgICAgICAgICAgICh3ZWJraXRf
YXV0aGVudGljYXRpb25fY2hhbGxlbmdlX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9BVVRI
RU5USUNBVElPTl9DSEFMTEVOR0Uob2JqKSAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRSwgV2Vi
S2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKQorI2RlZmluZSBXRUJLSVRfQVVUSEVOVElDQVRJ
T05fQ0hBTExFTkdFX0NMQVNTKGtsYXNzKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChr
bGFzcyksICBXRUJLSVRfVFlQRV9BVVRIRU5USUNBVElPTl9DSEFMTEVOR0UsIFdlYktpdEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfQVVUSEVOVElDQVRJ
T05fQ0hBTExFTkdFKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9i
aiksIFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRSkpCisjZGVmaW5lIFdFQktJ
VF9JU19BVVRIRU5USUNBVElPTl9DSEFMTEVOR0VfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdF
KSkKKyNkZWZpbmUgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRV9HRVRfQ0xBU1Mob2Jq
KSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9BVVRIRU5U
SUNBVElPTl9DSEFMTEVOR0UsIFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xhc3MpKQor
CitzdHJ1Y3QgX1dlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHsKKyAgICBHT2JqZWN0IHBh
cmVudDsKK307CisKK3N0cnVjdCBfV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGFzcyB7
CisgICAgR09iamVjdENsYXNzIHBhcmVudDsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtp
dF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2VfZ2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJ
IFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKgord2Via2l0X2F1dGhlbnRpY2F0aW9uX2No
YWxsZW5nZV9uZXcgKCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2F1dGhlbnRpY2F0aW9u
X2NoYWxsZW5nZV9zZXRfdXNlciAoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxs
ZW5nZSwgY29uc3QgZ2NoYXIqIHVzZXIpOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyKgord2Vi
a2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9nZXRfdXNlciAoV2ViS2l0QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UqIGNoYWxsZW5nZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2F1dGhl
bnRpY2F0aW9uX2NoYWxsZW5nZV9zZXRfcGFzc3dvcmQgKFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKiBjaGFsbGVuZ2UsIGNvbnN0IGdjaGFyKiBwYXNzd29yZCk7CisKK1dFQktJVF9BUEkg
Y29uc3QgZ2NoYXIqCit3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX2dldF9wYXNzd29y
ZCAoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSk7CisKK0dfRU5EX0RF
Q0xTCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCShyZXZpc2lvbiAyOTY3NikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
MSw2ICsxMDEsOCBAQAogICAgICAgICAgICAgLCBtX2ZpbGUoMCkKICAgICAgICAgICAgICwgbV9m
b3JtRGF0YUVsZW1lbnRJbmRleCgwKQogICAgICAgICAgICAgLCBtX2Zvcm1EYXRhRWxlbWVudERh
dGFPZmZzZXQoMCkKKyAgICAgICAgICAgICwgbV93ZWJDaGFsbGVuZ2UoKQorICAgICAgICAgICAg
LCBtX2NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoZmFsc2UpCiAjZW5kaWYKICNpZiBQTEFURk9S
TShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAgLTE1OSw2ICsxNjEsOSBAQAogICAgICAg
ICBzaXplX3QgbV9mb3JtRGF0YUVsZW1lbnRJbmRleDsKICAgICAgICAgc2l6ZV90IG1fZm9ybURh
dGFFbGVtZW50RGF0YU9mZnNldDsKICAgICAgICAgVmVjdG9yPGNoYXI+IG1fcG9zdEJ5dGVzOwor
CisgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIG1fd2ViQ2hhbGxlbmdlOworICAgICAg
ICBib29sIG1fY29udGludWVXaXRob3V0Q3JlZGVudGlhbDsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KFFUKQogI2lmIFFUX1ZFUlNJT04gPCAweDA0MDQwMApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJKHJldmlzaW9uIDI5Njc2KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3
LDEyIEBACiAgICAgCiAgICAgflJlc291cmNlSGFuZGxlKCk7CiAKKyNpZiBQTEFURk9STShHVEsp
CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKTsKKyAgICB2b2lkIHJl
Y2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpOworICAgIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNF
KENGTkVUV09SSykKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgIHZvaWQgcmVjZWl2ZWRDcmVkZW50
aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpOwpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyOTY3NikKKysrIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTUlNRVR5
cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUmVz
b3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgpAQCAtMTYy
LDYgKzE2MywxMCBAQAogICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUo
ZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxk
KCJDb250ZW50LVR5cGUiKSkpOwogICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFN1Z2dlc3RlZEZp
bGVuYW1lKGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oZC0+bV9yZXNwb25zZS5o
dHRwSGVhZGVyRmllbGQoIkNvbnRlbnQtRGlzcG9zaXRpb24iKSkpOwogCisgICAgICAgIC8vIEhU
VFAgYXV0aGVudGljYXRpb24KKyAgICAgICAgaWYgKGh0dHBDb2RlID09IDQwMSAmJiBkLT5tX3Jl
c3BvbnNlLmlzSFRUUCgpKQorICAgICAgICAgICAgam9iLT5kaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoZC0+bV93ZWJDaGFsbGVuZ2UpOworCiAgICAgICAgIC8vIEhUVFAgcmVkaXJl
Y3Rpb24KICAgICAgICAgaWYgKGh0dHBDb2RlID49IDMwMCAmJiBodHRwQ29kZSA8IDQwMCkgewog
ICAgICAgICAgICAgU3RyaW5nIGxvY2F0aW9uID0gZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoImxvY2F0aW9uIik7CkBAIC01MjgsNiArNTMzLDggQEAKICAgICB9CiAKICAgICBkLT5tX2hh
bmRsZSA9IGN1cmxfZWFzeV9pbml0KCk7CisgICAgLy8gSFRUUCBBdXRoZW50aWNhdGlvbiBjYW5j
ZWxzIHRoZSBqb2Igc28gYmUgc3VyZSB0aGUgbmV3IGpvYiBpcyBub3QgY2FuY2VsbGVkCisgICAg
ZC0+bV9jYW5jZWxsZWQgPSBmYWxzZTsKICNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKGdldGVudigi
REVCVUdfQ1VSTCIpKQogICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJM
T1BUX1ZFUkJPU0UsIDEpOwpAQCAtNTQxLDcgKzU0OCw2IEBACiAgICAgY3VybF9lYXN5X3NldG9w
dChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9BVVRPUkVGRVJFUiwgMSk7CiAgICAgY3VybF9lYXN5X3Nl
dG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgMSk7CiAgICAgY3VybF9l
YXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9NQVhSRURJUlMsIDEwKTsKLSAgICBjdXJs
X2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0hUVFBBVVRILCBDVVJMQVVUSF9BTlkp
OwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfU0hBUkUsIG1fY3Vy
bFNoYXJlSGFuZGxlKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BU
X0ROU19DQUNIRV9USU1FT1VULCA2MCAqIDUpOyAvLyA1IG1pbnV0ZXMKICAgICAvLyBlbmFibGUg
Z3ppcCBhbmQgZGVmbGF0ZSB0aHJvdWdoIEFjY2VwdC1FbmNvZGluZzoKQEAgLTU1Nyw2ICs1NjMs
MjMgQEAKICAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9DT09L
SUVKQVIsIG1fY29va2llSmFyRmlsZU5hbWUpOwogICAgIH0KIAorICAgIGlmICghZC0+bV93ZWJD
aGFsbGVuZ2UuaXNOdWxsKCkgJiYgIWQtPm1fY29udGludWVXaXRob3V0Q3JlZGVudGlhbCkgewor
ICAgICAgICBsb25nIGN1cmxBdXRoOworICAgICAgICBzd2l0Y2goZC0+bV93ZWJDaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlKCkuYXV0aGVudGljYXRpb25TY2hlbWUoKSkgeyAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBCYXNpYzoK
KyAgICAgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZURlZmF1bHQ6
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjdXJsQXV0aCA9IENVUkxBVVRIX0JBU0lD
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBDcmVkZW50aWFsIGNy
ZWRlbnRpYWwgPSBkLT5tX3dlYkNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKTsKKyAgICAg
ICAgU3RyaW5nIHVzZXJwd2QgPSBjcmVkZW50aWFsLnVzZXIoKSArICI6IiArIGNyZWRlbnRpYWwu
cGFzc3dvcmQoKTsKKworICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJM
T1BUX0hUVFBBVVRILCBjdXJsQXV0aCk7CisgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9o
YW5kbGUsIENVUkxPUFRfVVNFUlBXRCwgc3RyZHVwKHVzZXJwd2QudXRmOCgpLmRhdGEoKSkpOwor
ICAgIH0KKwogICAgIHN0cnVjdCBjdXJsX3NsaXN0KiBoZWFkZXJzID0gMDsKICAgICBpZiAoam9i
LT5yZXF1ZXN0KCkuaHR0cEhlYWRlckZpZWxkcygpLnNpemUoKSA+IDApIHsKICAgICAgICAgSFRU
UEhlYWRlck1hcCBjdXN0b21IZWFkZXJzID0gam9iLT5yZXF1ZXN0KCkuaHR0cEhlYWRlckZpZWxk
cygpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVD
dXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCShyZXZpc2lvbiAyOTY3NikKKysrIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1
LDQgKzk1LDY5IEBACiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBSZXNvdXJjZUhh
bmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit7CisgICAgLyogRklYTUU6IGFkZCBzdXBwb3J0IGZv
ciBGVFAsIEhUVFBTLCBhbmQgRlRQUyBhdXRoZW50aWNhdGlvbiwKKyAgICAgKiBnZXQgdGhlIHJp
Z2h0IHBvcnQsIHNlcnZlciBhbmQgYXV0aGVudGljYXRpb24gc2NoZW1lCisgICAgICovCisgICAg
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGdldEludGVybmFsKCk7CisgICAgaWYgKGQtPm1f
Y29udGludWVXaXRob3V0Q3JlZGVudGlhbCkKKyAgICAgICAgcmV0dXJuOworICAgIGNhbmNlbCgp
OworCisgICAgUHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZTsKKyAgICB1bnNpZ25lZCBw
cmV2aW91c0ZhaWx1cmVDb3VudCA9IDA7CisgICAgaWYgKGNoYWxsZW5nZS5pc051bGwoKSkgewor
ICAgICAgICBwcm90ZWN0aW9uU3BhY2UgPSBQcm90ZWN0aW9uU3BhY2UoZC0+bV9yZXNwb25zZS5o
dHRwSGVhZGVyRmllbGQoIkhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UHJvdGVjdGlvblNwYWNlU2VydmVySFRUUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJSZWFsbSIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdGVjdGlvblNwYWNlQXV0
aGVudGljYXRpb25TY2hlbWVEZWZhdWx0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBwcm90ZWN0
aW9uU3BhY2UgPSBkLT5tX3dlYkNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKTsKKyAgICAgICAg
cHJldmlvdXNGYWlsdXJlQ291bnQgPSBkLT5tX3dlYkNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVD
b3VudCgpKzE7CisgICAgfQorICAgIAorICAgIGQtPm1fd2ViQ2hhbGxlbmdlID0gQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UocHJvdGVjdGlvblNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNG
YWlsdXJlQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkLT5tX3Jlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlLmVycm9yKCkpOworCisgICAgaWYgKGQtPmNsaWVudCgpKQor
ICAgICAgICBkLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRo
aXMsIGQtPm1fd2ViQ2hhbGxlbmdlKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2
ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIGNv
bnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCit7CisgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNO
dWxsKCkpOyAgIAorICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBnZXRJbnRlcm5hbCgp
OworICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV93ZWJDaGFsbGVuZ2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIGQtPm1fd2ViQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlZGVudGlhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdl
LmZhaWx1cmVSZXNwb25zZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlLmVycm9yKCkpOworCisgICAgUmVzb3VyY2VIYW5kbGVNYW5h
Z2VyOjpzaGFyZWRJbnN0YW5jZSgpLT5hZGQodGhpcyk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5k
bGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAgIEFTU0VSVCghY2hhbGxlbmdl
LmlzTnVsbCgpKTsgICAKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gZ2V0SW50ZXJu
YWwoKTsKKyAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fd2ViQ2hhbGxlbmdlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBkLT5tX2NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwgPSB0cnVlOworICAg
IFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2hhcmVkSW5zdGFuY2UoKS0+YWRkKHRoaXMpOworfQor
Cit2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gMjk2NzYpCisrKyBXZWJD
b3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC05ODgsNiArOTg4LDggQEAKICAgICAg
ICAgLi4vV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdC5oIFwKICAgICAgICAgLi4vV2ViS2l0L2d0
ay9XZWJWaWV3L3dlYmtpdGRlZmluZXMuaCBcCiAgICAgICAgIC4uL1dlYktpdC9ndGsvV2ViVmll
dy93ZWJraXRuZXR3b3JrcmVxdWVzdC5oIFwKKyAgICAgICAgLi4vV2ViS2l0L2d0ay9XZWJWaWV3
L3dlYmtpdGF1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLmggXAorICAgICAgICAuLi9XZWJLaXQvZ3Rr
L1dlYlZpZXcvd2Via2l0cmVzcG9uc2VsaXN0ZW5lci5oIFwKICAgICAgICAgLi4vV2ViS2l0L2d0
ay9XZWJWaWV3L3dlYmtpdHByaXZhdGUuaCBcCiAgICAgICAgIC4uL1dlYktpdC9ndGsvV2ViVmll
dy93ZWJraXRzZXR0aW5ncy5oIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtp
dHdlYmZyYW1lLmggXApAQCAtMTA2NSw2ICsxMDY3LDggQEAKICAgICAgICAgcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy94Ym0vWEJNSW1hZ2VEZWNvZGVyLmNwcCBcCiAgICAgICAgIC4uL1dlYktp
dC9ndGsvV2ViVmlldy93ZWJraXRuZXR3b3JrcmVxdWVzdC5jcHAgXAorICAgICAgICAuLi9XZWJL
aXQvZ3RrL1dlYlZpZXcvd2Via2l0YXV0aGVudGljYXRpb25jaGFsbGVuZ2UuY3BwIFwKKyAgICAg
ICAgLi4vV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHJlc3BvbnNlbGlzdGVuZXIuY3BwIFwKICAg
ICAgICAgLi4vV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHByaXZhdGUuY3BwIFwKICAgICAgICAg
Li4vV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHNldHRpbmdzLmNwcCBcCiAgICAgICAgIC4uL1dl
YktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJmcmFtZS5jcHAgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18970</attachid>
            <date>2008-02-06 15:26:44 -0800</date>
            <delta_ts>2008-03-04 14:39:48 -0800</delta_ts>
            <desc>New Async version</desc>
            <filename>policy-implementation-6.patch</filename>
            <type>text/plain</type>
            <size>33630</size>
            <attacher name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</attacher>
            
              <data encoding="base64">SW5kZXg6IEdOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEdOVW1ha2VmaWxlLmFtCShyw6l2
aXNpb24gMzAwMTQpCisrKyBHTlVtYWtlZmlsZS5hbQkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTI0
OSw2ICsyNDksNyBAQAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlz
dC5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5oIFwKIAlXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJwb2xpY3lkZWNpc2lvbi5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0
aW5ncy5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKIApAQCAtMjcyLDYg
KzI3Myw3IEBACiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNw
cCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIFwKIAlXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAgXAorCVdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
c2V0dGluZ3MuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBcCiAJ
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIFwKSW5kZXg6IFdl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
CShyw6l2aXNpb24gMzAwMTQpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcAkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTIsNiArMiw3IEBACiAgKiAg
Q29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiAgQ29weXJp
Z2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiAgQ29weXJpZ2h0IChD
KSAyMDA3IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAia2pzX3dpbmRvdy5o
IgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJmcmFtZS5o
IgorI2luY2x1ZGUgIndlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgiCiAjaW5jbHVkZSAid2Via2l0
cHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpAQCAtNTYs
NiArNTgsNyBAQAogRnJhbWVMb2FkZXJDbGllbnQ6OkZyYW1lTG9hZGVyQ2xpZW50KFdlYktpdFdl
YkZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX3VzZXJBZ2VudCgi
IikKKyAgICAsIG1fcG9saWN5RGVjaXNpb24oTlVMTCkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7
CiB9CkBAIC0yMTcsMjMgKzIyMCw2NCBAQAogICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKIH0K
IAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlw
ZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKIHsKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byBjYWxsIGRpcmVjdGx5IGhlcmUgKGNv
bW1lbnQgY29waWVkIGZyb20gUXQgdmVyc2lvbikKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24p
OwogICAgIGlmICghcG9saWN5RnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICAoY29yZSht
X2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKKworICAgIFdl
YktpdFdlYlZpZXcqIHBhZ2UgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOworICAgIFdlYktp
dE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcocmVz
b3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIFdlYktpdFdl
YlBvbGljeURlY2lzaW9uKiBwb2xpY3lEZWNpc2lvbiA9IHdlYmtpdF93ZWJfcG9saWN5X2RlY2lz
aW9uX25ldyhtX2ZyYW1lLCBwb2xpY3lGdW5jdGlvbik7CisgICAgbV9wb2xpY3lEZWNpc2lvbiA9
IHBvbGljeURlY2lzaW9uOworCisgICAgZ2Jvb2xlYW4gaGFuZGxlZCA9IGZhbHNlOworICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZShwYWdlLCAibWltZS10eXBlLXBvbGljeS1kZWNpc2lvbi1yZXF1
ZXN0ZWQiLCBtX2ZyYW1lLCByZXF1ZXN0LCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLCBwb2xpY3lE
ZWNpc2lvbiwgJmhhbmRsZWQpOworCisgICAgZ19vYmplY3RfdW5yZWYocmVxdWVzdCk7CisKKyAg
ICBpZiAoIWhhbmRsZWQpIHsKKyAgICAgICAgS1VSTCB1cmwgPSByZXNvdXJjZVJlcXVlc3QudXJs
KCk7CisgICAgICAgIGlmICh1cmwuaXNMb2NhbEZpbGUoKSkgeworICAgICAgICAgICAgY29uc3Qg
Z2NoYXIgKiBmaWxlbmFtZSA9IGdfZmlsZW5hbWVfZnJvbV91cmkodXJsLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIE5VTEwsIE5VTEwpOworCisgICAgICAgICAgICBpZiAoZ19maWxlX3Rlc3QoZmls
ZW5hbWUsIEdfRklMRV9URVNUX0VYSVNUUykgJiYgIWdfZmlsZV90ZXN0KGZpbGVuYW1lLCBHX0ZJ
TEVfVEVTVF9JU19ESVIpICYmIGNhblNob3dNSU1FVHlwZShtaW1lVHlwZSkpCisgICAgICAgICAg
ICAgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeVVz
ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgKGNvcmUobV9mcmFtZSktPmxv
YWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoY2FuU2hvd01JTUVUeXBlKG1pbWVUeXBlKSkKKyAgICAgICAgICAgIChjb3JlKG1fZnJhbWUp
LT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xp
Y3lJZ25vcmUpOworICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lG
dW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9u
LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VSVChwb2xpY3lGdW5j
dGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIC8v
IEZJWE1FOiBJIHRoaW5rIFF0IHZlcnNpb24gbWFyc2hhbHMgdGhpcyB0byBhbm90aGVyIHRocmVh
ZCBzbyB3aGVuIHdlCi0gICAgLy8gaGF2ZSBtdWx0aS10aHJlYWRlZCBkb3dubG9hZCwgd2UgbWln
aHQgbmVlZCB0byBkbyB0aGUgc2FtZQotICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBv
bGljeUZ1bmN0aW9uKShQb2xpY3lJZ25vcmUpOworCisgICAgV2ViS2l0V2ViVmlldyogcGFnZSA9
IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJl
cXVlc3QgPSB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X25ldyhyZXNvdXJjZVJlcXVlc3QudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIHBv
bGljeURlY2lzaW9uID0gd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fbmV3KG1fZnJhbWUsIHBv
bGljeUZ1bmN0aW9uKTsKKyAgICBtX3BvbGljeURlY2lzaW9uID0gcG9saWN5RGVjaXNpb247CisK
KyAgICBXZWJLaXROYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSA9IGtpdChhY3Rpb24udHlw
ZSgpKTsKKworICAgIEdIYXNoVGFibGUgKiBhY3Rpb25JbmZvcm1hdGlvbiA9IGdfaGFzaF90YWJs
ZV9uZXcoTlVMTCwgTlVMTCk7CisgICAgZ19oYXNoX3RhYmxlX2luc2VydChhY3Rpb25JbmZvcm1h
dGlvbiwgKHZvaWQqKVdFQktJVF9BQ1RJT05fTkFWSUdBVElPTl9UWVBFLCAodm9pZCopbmF2aWdh
dGlvblR5cGUpOworCisgICAgZ2Jvb2xlYW4gaGFuZGxlZCA9IGZhbHNlOworICAgIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZShwYWdlLCAibmV3LXdpbmRvdy1yZXF1ZXN0ZWQiLCBtX2ZyYW1lLCByZXF1
ZXN0LCBhY3Rpb25JbmZvcm1hdGlvbiwgcG9saWN5RGVjaXNpb24sICZoYW5kbGVkKTsKKworICAg
IGdfaGFzaF90YWJsZV9kZXN0cm95KGFjdGlvbkluZm9ybWF0aW9uKTsKKyAgICBnX29iamVjdF91
bnJlZihyZXF1ZXN0KTsKKworICAgIGlmICghaGFuZGxlZCkgeworICAgICAgICAoY29yZShtX2Zy
YW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rp
b24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXNvdXJjZVJlcXVlc3QpCkBAIC0yNDQsMTggKzI4OCwyNSBAQAogCiAgICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7CiAgICAgV2ViS2l0TmV0
d29ya1JlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X25ldyhyZXNvdXJj
ZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgV2ViS2l0TmF2aWdh
dGlvblJlc3BvbnNlIHJlc3BvbnNlOworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBwb2xp
Y3lEZWNpc2lvbiA9IHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX25ldyhtX2ZyYW1lLCBwb2xp
Y3lGdW5jdGlvbik7CisgICAgbV9wb2xpY3lEZWNpc2lvbiA9IHBvbGljeURlY2lzaW9uOwogCi0g
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJuYXZpZ2F0aW9uLXJlcXVlc3RlZCIs
IG1fZnJhbWUsIHJlcXVlc3QsICZyZXNwb25zZSk7CisgICAgV2ViS2l0TmF2aWdhdGlvblR5cGUg
bmF2aWdhdGlvblR5cGUgPSBraXQoYWN0aW9uLnR5cGUoKSk7CiAKKyAgICBHSGFzaFRhYmxlICog
YWN0aW9uSW5mb3JtYXRpb24gPSBnX2hhc2hfdGFibGVfbmV3KE5VTEwsIE5VTEwpOworICAgIGdf
aGFzaF90YWJsZV9pbnNlcnQoYWN0aW9uSW5mb3JtYXRpb24sICh2b2lkKilXRUJLSVRfQUNUSU9O
X05BVklHQVRJT05fVFlQRSwgKHZvaWQqKW5hdmlnYXRpb25UeXBlKTsKKworICAgIGdib29sZWFu
IGhhbmRsZWQgPSBmYWxzZTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgIm5h
dmlnYXRpb24tcmVxdWVzdGVkIiwgbV9mcmFtZSwgcmVxdWVzdCwgYWN0aW9uSW5mb3JtYXRpb24s
IHBvbGljeURlY2lzaW9uLCAmaGFuZGxlZCk7CisKKyAgICBnX2hhc2hfdGFibGVfZGVzdHJveShh
Y3Rpb25JbmZvcm1hdGlvbik7CiAgICAgZ19vYmplY3RfdW5yZWYocmVxdWVzdCk7CiAKLSAgICBp
ZiAocmVzcG9uc2UgPT0gV0VCS0lUX05BVklHQVRJT05fUkVTUE9OU0VfSUdOT1JFKSB7Ci0gICAg
ICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lJZ25v
cmUpOworICAgIGlmICghaGFuZGxlZCkgeyAKKyAgICAgICAgLy8gRklYTUUgSW1wbGVtZW50IGRl
ZmF1bHQgYmVoYXZpb3Igd2hlbiB3ZSBjYW4gcXVlcnkgdGhlIGJhY2tlbmQgd2hhdCBwcm90b2Nv
bHMgaXQgc3VwcG9ydHMKKyAgICAgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5
RnVuY3Rpb24pKFBvbGljeVVzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICAoY29y
ZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKIH0KIAog
V2lkZ2V0KiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBF
bGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKQpAQCAtNTQzLDcgKzU5NCw4IEBACiAKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIC8vRklYTUUgQWRkIHN1cHBvcnQgZm9yIG1vcmUgdGhhbiBvbmUgcG9s
aWN5IGRlY2lzaW9uIGF0IG9uY2UKKyAgICB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9jYW5j
ZWwobV9wb2xpY3lEZWNpc2lvbik7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkTG9hZE1haW5SZXNvdXJjZShEb2N1bWVudExvYWRlciopCkBAIC02MDUsOCArNjU3LDgg
QEAKIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAvLyBGSVhNRTogQWRkIG1pbWUgdHlwZXMgc3VwcG9ydGVkIGJ5IHBsdWdpbnMuCisgICAgcmV0
dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSh0eXBlKSB8fCBN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUodHlwZSk7CiB9CiAK
IGJvb2wgRnJhbWVMb2FkZXJDbGllbnQ6OnJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1l
KGNvbnN0IFN0cmluZyYpIGNvbnN0CkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShyw6l2aXNpb24gMzAwMTQpCisrKyBXZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKGNvcGllIGRlIHRyYXZh
aWwpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2lu
IDx6YWNrQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3Jh
LCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCkBAIC0zMSw2ICszMiw3IEBACiAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJwb2xpY3lk
ZWNpc2lvbi5oIgogCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWUgV2ViS2l0V2ViRnJh
bWU7CiAKQEAgLTE4MCw2ICsxODIsNyBAQAogICAgICAgICBXZWJLaXRXZWJGcmFtZSogbV9mcmFt
ZTsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgICAg
ICBXZWJDb3JlOjpTdHJpbmcgbV91c2VyQWdlbnQ7CisgICAgICAgIFdlYktpdFdlYlBvbGljeURl
Y2lzaW9uKiBtX3BvbGljeURlY2lzaW9uOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0LW1hcnNoYWwubGlzdAkocsOpdmlzaW9uIDMwMDE0KQorKysgV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0LW1hcnNoYWwubGlzdAkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTksNCArOSw1
IEBACiBCT09MRUFOOk9CSkVDVCxTVFJJTkcKIEJPT0xFQU46T0JKRUNULFNUUklORyxCT09MRUFO
CiBCT09MRUFOOk9CSkVDVCxTVFJJTkcsU1RSSU5HLFNUUklORwotSU5UOk9CSkVDVCxPQkpFQ1QK
K0JPT0xFQU46T0JKRUNULE9CSkVDVCxTVFJJTkcsT0JKRUNUCitCT09MRUFOOk9CSkVDVCxPQkpF
Q1QsQk9YRUQsT0JKRUNUCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocsOp
dmlzaW9uIDMwMDE0KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKGNv
cGllIGRlIHRyYXZhaWwpCkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwNyBY
YW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tl
ciA8YWxwQGF0b2tlci5jb20+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEphbiBBbG9uem8gPGpt
YWxvbnpvQHVucGx1Z2dhYmxlLmNvbT4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3Jh
LCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC02NCw2
ICs2NSw4IEBACiBlbnVtIHsKICAgICAvKiBub3JtYWwgc2lnbmFscyAqLwogICAgIE5BVklHQVRJ
T05fUkVRVUVTVEVELAorICAgIE1JTUVfVFlQRV9QT0xJQ1lfREVDSVNJT05fUkVRVUVTVEVELAor
ICAgIE5FV19XSU5ET1dfUkVRVUVTVEVELAogICAgIFdJTkRPV19PQkpFQ1RfQ0xFQVJFRCwKICAg
ICBMT0FEX1NUQVJURUQsCiAgICAgTE9BRF9DT01NSVRURUQsCkBAIC00NjIsMTIgKzQ2NSw2IEBA
CiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2Ugd2Vi
a2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyosIFdl
YktpdFdlYkZyYW1lKiBmcmFtZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNFX0FDQ0VQ
VDsKLX0KLQogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfd2luZG93X29iamVjdF9j
bGVhcmVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSosIEpTR2xvYmFsQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dfb2JqZWN0KQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CkBAIC02MjMsMTggKzYyMCw2IEBACiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dl
Yl92aWV3X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKLXN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRfbmF2aWdhdGlvbl9yZXF1ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9jYXRpb25I
aW50KiBpaGludCwgR1ZhbHVlKiByZXR1cm5BY2N1LCBjb25zdCBHVmFsdWUqIGhhbmRsZXJSZXR1
cm4sIGdwb2ludGVyIGR1bW15KQotewotICBnYm9vbGVhbiBjb250aW51ZUVtaXNzaW9uID0gVFJV
RTsKLSAgaW50IHNpZ25hbEhhbmRsZWQgPSBnX3ZhbHVlX2dldF9pbnQoaGFuZGxlclJldHVybik7
Ci0gIGdfdmFsdWVfc2V0X2ludChyZXR1cm5BY2N1LCBzaWduYWxIYW5kbGVkKTsKLQotICBpZiAo
c2lnbmFsSGFuZGxlZCAhPSBXRUJLSVRfTkFWSUdBVElPTl9SRVNQT05TRV9BQ0NFUFQpCi0gICAg
ICBjb250aW51ZUVtaXNzaW9uID0gRkFMU0U7Ci0KLSAgcmV0dXJuIGNvbnRpbnVlRW1pc3Npb247
Ci19Ci0KIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZp
ZXdDbGFzcyogd2ViVmlld0NsYXNzKQogewogICAgIEd0a0JpbmRpbmdTZXQqIGJpbmRpbmdfc2V0
OwpAQCAtNjQ1LDE4ICs2MzAsODUgQEAKICAgICAgKiBTaWduYWxzCiAgICAgICovCiAKKyAgICAv
KioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjpuYXZpZ2F0aW9uLXJlcXVlc3RlZDoKKyAgICAgKiBA
d2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAg
ICogQHdlYl9mcmFtZTogdGhlIGZyYW1lIG9uIHdoaWNoIHRoZSBhY3Rpb24gCisgICAgICogQGFj
dGlvbl9pbmZvcm1hdGlvbjogZGVzY3JpYmVzIHRoZSBhY3Rpb24gdGhhdCB0cmlnZ2VyZWQgdGhp
cyBuYXZpZ2F0aW9uIHJlcXVlc3QsIHBvc3NpYmxlIGtleXMgYXJlIGRlZmluZWQgYnkgV2ViS2l0
QWN0aW9uS2V5CisgICAgICogQHBvbGljeV9kZWNpc2lvbjogYSAjV2ViS2l0V2ViUG9saWN5RGVj
aXNpb24sIGFuIG9iamVjdCB0byB3aGljaCBnaXZlIHRoZSBwb2xpY3kgcmVzcG9uc2UKKyAgICAg
KiBAcmV0dXJuOiBUUlVFIGlmIHRoZSBzaWduYWwgd2lsbCBiZSBoYW5kbGVkLCAKKyAgICAgKiAg
ICAgICAgICBGQUxTRSB0byBoYXZlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFwcGx5CisgICAgICoK
KyAgICAgKiBSb3V0ZXMgYSBuYXZpZ2F0aW9uIGFjdGlvbiBpbnRlcm5hbGx5IG9yIHRvIGFuIGV4
dGVybmFsIHZpZXdlci4KKyAgICAgKi8KICAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tOQVZJ
R0FUSU9OX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoIm5hdmlnYXRpb24tcmVxdWVzdGVkIiwK
ICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCiAgICAgICAgICAg
ICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCi0g
ICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgbmF2aWdhdGlv
bl9yZXF1ZXN0ZWQpLAotICAgICAgICAgICAgd2Via2l0X25hdmlnYXRpb25fcmVxdWVzdF9oYW5k
bGVkLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3Ry
dWVfaGFuZGxlZCwKICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICB3ZWJraXRfbWFyc2hh
bF9JTlRfX09CSkVDVF9PQkpFQ1QsCi0gICAgICAgICAgICBHX1RZUEVfSU5ULCAyLAorICAgICAg
ICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNUX09CSkVDVF9CT1hFRF9PQkpFQ1Qs
CisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgNCwKICAgICAgICAgICAgIEdfVFlQRV9PQkpF
Q1QsCisgICAgICAgICAgICBHX1RZUEVfT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX0hBU0hf
VEFCTEUsCiAgICAgICAgICAgICBHX1RZUEVfT0JKRUNUKTsKIAogICAgIC8qKgorICAgICAqIFdl
YktpdFdlYlZpZXc6Om1pbWUtdHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkOgorICAgICAq
IEB3ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAg
ICAgKiBAd2ViX2ZyYW1lOiB0aGUgZnJhbWUgb24gd2hpY2ggdGhlIGFjdGlvbiAKKyAgICAgKiBA
bWltZXR5cGU6IHRoZSBNSU1FIHR5cGUgYXR0ZW1wdGVkIHRvIGxvYWQKKyAgICAgKiBAcG9saWN5
X2RlY2lzaW9uOiBhICNXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiwgYW4gb2JqZWN0IHRvIHdoaWNo
IGdpdmUgdGhlIHBvbGljeSByZXNwb25zZQorICAgICAqIEByZXR1cm46IFRSVUUgaWYgdGhlIHNp
Z25hbCB3aWxsIGJlIGhhbmRsZWQsIAorICAgICAqICAgICAgICAgIEZBTFNFIHRvIGhhdmUgdGhl
IGRlZmF1bHQgYmVoYXZpb3IgYXBwbHkKKyAgICAgKgorICAgICAqIERlY2lkZSB3aGV0aGVyIG9y
IG5vdCB0byBkaXNwbGF5IG9mIG5vdCB0aGUgZ2l2ZW4gTUlNRSB0eXBlLgorICAgICAqIElmIHRo
aXMgc2lnbmFsIGlzIG5vdCBoYW5kbGVkLCB0aGUgZGVmYXVsdCBiZWhhdmlvciBpcyBhcyBmb2xs
b3dzLiAgSWYgV2ViS2l0IGNhbiAKKyAgICAgKiBzaG93IHRoaXMgTUlNRSB0eXBlLCBpdCB3aWxs
IGJlIHVzZWQsIGVsc2UgaXQgd2lsbCBiZSBpZ25vcmVkLgorICAgICAqLworICAgIHdlYmtpdF93
ZWJfdmlld19zaWduYWxzW01JTUVfVFlQRV9QT0xJQ1lfREVDSVNJT05fUkVRVUVTVEVEXSA9IGdf
c2lnbmFsX25ldygibWltZS10eXBlLXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQiLAorICAgICAg
ICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2ln
bmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAg
ICAgIDAsCisgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisg
ICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JK
RUNUX09CSkVDVF9TVFJJTkdfT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDQs
CisgICAgICAgICAgICBHX1RZUEVfT0JKRUNULCAKKyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1Qs
IAorICAgICAgICAgICAgR19UWVBFX1NUUklORywgCisgICAgICAgICAgICBHX1RZUEVfT0JKRUNU
KTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Om5ldy13aW5kb3ctcmVxdWVzdGVk
OgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVt
aXR0ZWQKKyAgICAgKiBAd2ViX2ZyYW1lOiB0aGUgZnJhbWUgb24gd2hpY2ggdGhlIGFjdGlvbiAK
KyAgICAgKiBAYWN0aW9uX2luZm9ybWF0aW9uOiBkZXNjcmliZXMgdGhlIGFjdGlvbiB0aGF0IHRy
aWdnZXJlZCB0aGlzIG5hdmlnYXRpb24gcmVxdWVzdCwgcG9zc2libGUga2V5cyBhcmUgZGVmaW5l
ZCBieSBXZWJLaXRBY3Rpb25LZXkKKyAgICAgKiBAcG9saWN5X2RlY2lzaW9uOiBhICNXZWJLaXRX
ZWJQb2xpY3lEZWNpc2lvbiwgYW4gb2JqZWN0IHRvIHdoaWNoIGdpdmUgdGhlIHBvbGljeSByZXNw
b25zZQorICAgICAqIEByZXR1cm46IFRSVUUgaWYgdGhlIHNpZ25hbCB3aWxsIGJlIGhhbmRsZWQs
IAorICAgICAqICAgICAgICAgIEZBTFNFIHRvIGhhdmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYXBw
bHkKKyAgICAgKgorICAgICAqIERlY2lkZXMgd2hldGhlciBvciBub3QgdG8gYWxsb3cgYSB0YXJn
ZXRlZCBuYXZpZ2F0aW9uIGV2ZW50LCBzdWNoIGFzIG9wZW5pbmcgCisgICAgICogYSBsaW5rIGlu
IGEgbmV3IHdpbmRvdy4gSWYgdGhpcyBzaWduYWwgcmV0dXJucyBXRUJLSVRfUE9MSUNZX1JFU1BP
TlNFX0FDQ0VQVCAKKyAgICAgKiB0aGVuIHRoZSBuZXcgd2luZG93IHdpbGwgYmUgb3BlbmVkLCBh
bmQgbmF2aWdhdGlvbi1yZXF1ZXN0ZWQgd2lsbCBiZSBlbWl0dGVkIAorICAgICAqIHdpdGggdmFs
dWUgV0VCS0lUX05BVklHQVRJT05fVFlQRV9PVEhFUiBmb3IgV0VCS0lUX0FDVElPTl9OQVZJR0FU
SU9OX1RZUEUuCisgICAgICogVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gYWNjZXB0LiAgCisg
ICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbTkVXX1dJTkRPV19SRVFVRVNURURd
ID0gZ19zaWduYWxfbmV3KCJuZXctd2luZG93LXJlcXVlc3RlZCIsCisgICAgICAgICAgICBHX1RZ
UEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncyko
R19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAgMCwKKyAg
ICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwKKyAgICAgICAgICAg
IE5VTEwsCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1RfT0JKRUNU
X0JPWEVEX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCA0LAorICAgICAgICAg
ICAgR19UWVBFX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsCisgICAgICAgICAg
ICBHX1RZUEVfSEFTSF9UQUJMRSwKKyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QpOworCisgICAg
LyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6d2luZG93LW9iamVjdC1jbGVhcmVkOgogICAgICAq
IEB3ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAg
ICAgKiBAZnJhbWU6IHRoZSAjV2ViS2l0V2ViRnJhbWUgdG8gd2hpY2ggQHdpbmRvd19vYmplY3Qg
YmVsb25ncwpAQCAtOTcyLDcgKzEwMjQsNiBAQAogICAgICAqIGltcGxlbWVudGF0aW9ucyBvZiB2
aXJ0dWFsIG1ldGhvZHMKICAgICAgKi8KICAgICB3ZWJWaWV3Q2xhc3MtPmNyZWF0ZV93ZWJfdmll
dyA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2NyZWF0ZV93ZWJfdmlldzsKLSAgICB3ZWJWaWV3Q2xh
c3MtPm5hdmlnYXRpb25fcmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlv
bl9yZXF1ZXN0ZWQ7CiAgICAgd2ViVmlld0NsYXNzLT53aW5kb3dfb2JqZWN0X2NsZWFyZWQgPSB3
ZWJraXRfd2ViX3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQ7CiAgICAgd2ViVmlld0Ns
YXNzLT5jaG9vc2VfZmlsZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2Nob29zZV9maWxlOwogICAg
IHdlYlZpZXdDbGFzcy0+c2NyaXB0X2FsZXJ0ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfc2NyaXB0
X2FsZXJ0OwpAQCAtMTg1MCw0ICsxOTAxLDI1IEBACiAgICAgcmV0dXJuIHByaXYtPnBhc3RlX3Rh
cmdldF9saXN0OwogfQogCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5
cGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEBtaW1lX3R5cGU6IGEgTUlN
RSB0eXBlCisgKgorICogVGhpcyBmdW5jdGlvbnMgcmV0dXJucyB3aGV0aGVyIG9yIG5vdCBhIE1J
TUUgdHlwZSBjYW4gYmUgZGlzcGxheWVkIHVzaW5nIHRoaXMgdmlldy4KKyAqCisgKiBSZXR1cm4g
dmFsdWU6IGEgI2dib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIE1JTUUgdHlwZSBjYW4gYmUgZGlz
cGxheWVkCisgKiovCisKK2dib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5
cGUgKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBtaW1lVHlwZSkKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNF
KTsKKyAgICAKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRfbWFp
bl9mcmFtZSh3ZWJWaWV3KSk7CisgICAgaWYgKEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+
bG9hZGVyKCkpCisgICAgICAgIHJldHVybiBsb2FkZXItPmNhblNob3dNSU1FVHlwZShtaW1lVHlw
ZSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRkFMU0U7CiB9CisKK30KSW5kZXg6IFdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCShyw6l2aXNpb24gMzAwMTQpCisrKyBXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcAkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVy
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTgxLDYgKzgyLDYwIEBACiAgICAgcmV0dXJuIGNs
aWVudCA/IGNsaWVudC0+d2ViVmlldygpIDogMDsKIH0KIAorV2ViS2l0TmF2aWdhdGlvblR5cGUg
a2l0KFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIHR5cGUpCit7CisgICAgV2ViS2l0TmF2aWdhdGlv
blR5cGUgbmF2aWdhdGlvblR5cGUgPSBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX09USEVSOworICAg
IHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZDoKKyAg
ICAgICAgbmF2aWdhdGlvblR5cGUgPSBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX0xJTktfQ0xJQ0tF
RDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlwZUZvcm1TdWJtaXR0ZWQ6
CisgICAgICAgIG5hdmlnYXRpb25UeXBlID0gV0VCS0lUX05BVklHQVRJT05fVFlQRV9GT1JNX1NV
Qk1JVFRFRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlwZUJhY2tGb3J3
YXJkOgorICAgICAgICBuYXZpZ2F0aW9uVHlwZSA9IFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfQkFD
S19GT1JXQVJEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5hdmlnYXRpb25UeXBlUmVsb2Fk
OgorICAgICAgICBuYXZpZ2F0aW9uVHlwZSA9IFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfUkVMT0FE
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVk
OgorICAgICAgICBuYXZpZ2F0aW9uVHlwZSA9IFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfRk9STV9S
RVNVQk1JVFRFRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlwZU90aGVy
OgorICAgIGRlZmF1bHQ6CisgICAgICAgIG5hdmlnYXRpb25UeXBlID0gV0VCS0lUX05BVklHQVRJ
T05fVFlQRV9PVEhFUjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBuYXZpZ2F0
aW9uVHlwZTsKKyB9CisgCitXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSBjb3JlKFdlYktpdE5hdmln
YXRpb25UeXBlIHR5cGUpCit7CisgICAgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlv
blR5cGUgPSBOYXZpZ2F0aW9uVHlwZU90aGVyOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNh
c2UgV0VCS0lUX05BVklHQVRJT05fVFlQRV9MSU5LX0NMSUNLRUQ6CisgICAgICAgIG5hdmlnYXRp
b25UeXBlID0gTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX0ZPUk1fU1VCTUlUVEVEOgorICAgICAgICBuYXZp
Z2F0aW9uVHlwZSA9IE5hdmlnYXRpb25UeXBlRm9ybVN1Ym1pdHRlZDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX0JBQ0tfRk9SV0FSRDoKKyAgICAgICAg
bmF2aWdhdGlvblR5cGUgPSBOYXZpZ2F0aW9uVHlwZUJhY2tGb3J3YXJkOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfUkVMT0FEOgorICAgICAgICBuYXZp
Z2F0aW9uVHlwZSA9IE5hdmlnYXRpb25UeXBlUmVsb2FkOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfRk9STV9SRVNVQk1JVFRFRDoKKyAgICAgICAgbmF2
aWdhdGlvblR5cGUgPSBOYXZpZ2F0aW9uVHlwZUZvcm1SZXN1Ym1pdHRlZDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX09USEVSOgorICAgIGRlZmF1bHQ6
CisgICAgICAgIG5hdmlnYXRpb25UeXBlID0gTmF2aWdhdGlvblR5cGVPdGhlcjsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIHJldHVybiBuYXZpZ2F0aW9uVHlwZTsKK30KKwogfSAvKiogZW5k
IG5hbWVzcGFjZSBXZWJDb3JlICovCiAKIHZvaWQgd2Via2l0X2luaXQoKQpJbmRleDogV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcAkocsOpdmlzaW9uIDAp
CisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHAJKHLDqXZp
c2lvbiAwKQpAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xs
YWJvcmEsIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSAid2Via2l0d2VicG9saWN5ZGVjaXNpb24uaCIKKyNpbmNsdWRlICJ3ZWJraXRwcml2
YXRlLmgiCisKKyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworZXh0ZXJuICJDIiB7CisKK0df
REVGSU5FX1RZUEUoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24sIHdlYmtpdF93ZWJfcG9saWN5X2Rl
Y2lzaW9uLCBHX1RZUEVfT0JKRUNUKTsKKworc3RydWN0IF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lv
blByaXZhdGUgeworICAgIFdlYktpdFdlYkZyYW1lKiAgZnJhbWU7CisgICAgRnJhbWVQb2xpY3lG
dW5jdGlvbiBmcmFtZVBvbGljeUZ1bmN0aW9uOworICAgIGdib29sZWFuIGlzQ2FuY2VsbGVkOwor
fTsKKworI2RlZmluZSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTl9HRVRfUFJJVkFURShvYmop
ICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9Q
T0xJQ1lfREVDSVNJT04sIFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSkpCisKK3N0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2NsYXNzX2luaXQoV2ViS2l0V2ViUG9s
aWN5RGVjaXNpb25DbGFzcyogZGVjaXNpb25DbGFzcykKK3sKKyAgICBnX3R5cGVfY2xhc3NfYWRk
X3ByaXZhdGUoZGVjaXNpb25DbGFzcywgc2l6ZW9mKFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJp
dmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9pbml0
KFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBkZWNpc2lvbi0+cHJp
diA9IFdFQktJVF9XRUJfUE9MSUNZX0RFQ0lTSU9OX0dFVF9QUklWQVRFKGRlY2lzaW9uKTsKK30K
KworV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX25l
dyAoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1
bmN0aW9uKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGZyYW1lLCBOVUxMKTsKKworICAg
IFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbiA9IFdFQktJVF9XRUJfUE9MSUNZX0RF
Q0lTSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9OLCBOVUxM
KSk7CisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24t
PnByaXY7CisKKyAgICBwcml2LT5mcmFtZSA9IGZyYW1lOworICAgIHByaXYtPmZyYW1lUG9saWN5
RnVuY3Rpb24gPSBmdW5jdGlvbjsKKyAgICBwcml2LT5pc0NhbmNlbGxlZCA9IEZBTFNFOworCisg
ICAgcmV0dXJuIGRlY2lzaW9uOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lz
aW9uX3VzZQorICogQGRlY2lzaW9uOiBhICNXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbgorICoKKyAq
IFdpbGwgc2VuZCB0aGUgVVNFIGRlY2lzaW9uIHRvIHRoZSBwb2xpY3kgaW1wbGVtZW50ZXIuCisg
Ki8KK3ZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlIChXZWJLaXRXZWJQb2xpY3lE
ZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbikpOworCisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNp
b25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7CisKKyAgICBpZighcHJpdi0+aXNDYW5j
ZWxsZWQpCisgICAgICAgIChjb3JlKHByaXYtPmZyYW1lKS0+bG9hZGVyKCktPioocHJpdi0+ZnJh
bWVQb2xpY3lGdW5jdGlvbikpKFdlYkNvcmU6OlBvbGljeVVzZSk7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl9wb2xpY3lfZGVjaXNpb25faWdub3JlCisgKiBAZGVjaXNpb246IGEgI1dlYktpdFdl
YlBvbGljeURlY2lzaW9uCisgKgorICogV2lsbCBzZW5kIHRoZSBJR05PUkUgZGVjaXNpb24gdG8g
dGhlIHBvbGljeSBpbXBsZW1lbnRlci4KKyAqLwordm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNp
c2lvbl9pZ25vcmUgKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7
CisKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+
cHJpdjsKKyAgICAKKyAgICBpZighcHJpdi0+aXNDYW5jZWxsZWQpCisgICAgICAgIChjb3JlKHBy
aXYtPmZyYW1lKS0+bG9hZGVyKCktPioocHJpdi0+ZnJhbWVQb2xpY3lGdW5jdGlvbikpKFdlYkNv
cmU6OlBvbGljeUlnbm9yZSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNp
b25fZG93bmxvYWQKKyAqIEBkZWNpc2lvbjogYSAjV2ViS2l0V2ViUG9saWN5RGVjaXNpb24KKyAq
CisgKiBXaWxsIHNlbmQgdGhlIERPV05MT0FEIGRlY2lzaW9uIHRvIHRoZSBwb2xpY3kgaW1wbGVt
ZW50ZXIuCisgKi8KK3ZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQgKFdl
YktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7CisKKyAgICBXZWJLaXRX
ZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+cHJpdjsKKyAgICAKKyAg
ICBpZighcHJpdi0+aXNDYW5jZWxsZWQpCisgICAgICAgIChjb3JlKHByaXYtPmZyYW1lKS0+bG9h
ZGVyKCktPioocHJpdi0+ZnJhbWVQb2xpY3lGdW5jdGlvbikpKFdlYkNvcmU6OlBvbGljeURvd25s
b2FkKTsKK30KKwordm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9jYW5jZWwgKFdlYktp
dFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7CisKKyAgICBXZWJLaXRXZWJQ
b2xpY3lEZWNpc2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+cHJpdjsKKyAgICAKKyAgICBw
cml2LT5pc0NhbmNlbGxlZCA9IFRSVUU7Cit9CisKK30KKwpJbmRleDogV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuaAkocsOpdmlzaW9uIDMwMDE0KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5oCShjb3BpZSBkZSB0cmF2YWlsKQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAo
QykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtNTEsNiArNTIsMjQgQEAKICAgICBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lO
Rk9fVEVYVCA9IC0gMgogfSBXZWJLaXRXZWJWaWV3VGFyZ2V0SW5mbzsKIAordHlwZWRlZiBlbnVt
IHsKKyAgICBXRUJLSVRfQUNUSU9OX05BVklHQVRJT05fVFlQRSwKKyAgICBXRUJLSVRfQUNUSU9O
X0VMRU1FTlQsCisgICAgV0VCS0lUX0FDVElPTl9CVVRUT04sCisgICAgV0VCS0lUX0FDVElPTl9N
T0RJRklFUl9GTEFHUywKKyAgICBXRUJLSVRfQUNUSU9OX09SSUdJTkFMX1VSTAorfSBXZWJLaXRB
Y3Rpb25LZXk7CisKK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX05BVklHQVRJT05fVFlQRV9M
SU5LX0NMSUNLRUQsCisgICAgV0VCS0lUX05BVklHQVRJT05fVFlQRV9GT1JNX1NVQk1JVFRFRCwK
KyAgICBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX0JBQ0tfRk9SV0FSRCwKKyAgICBXRUJLSVRfTkFW
SUdBVElPTl9UWVBFX1JFTE9BRCwKKyAgICBXRUJLSVRfTkFWSUdBVElPTl9UWVBFX0ZPUk1fUkVT
VUJNSVRURUQsCisgICAgV0VCS0lUX05BVklHQVRJT05fVFlQRV9QTFVHX0lOX1JFUVVFU1QsCisg
ICAgV0VCS0lUX05BVklHQVRJT05fVFlQRV9PVEhFUgorfSBXZWJLaXROYXZpZ2F0aW9uVHlwZTsK
Kwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBHdGtDb250YWluZXIgcGFyZW50X2luc3Rh
bmNlOwogCkBAIC02OCwxMSArODcsNiBAQAogICAgICAqLwogICAgIFdlYktpdFdlYlZpZXcqICAo
KmNyZWF0ZV93ZWJfdmlldykgIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAKLSAgICAvKgot
ICAgICAqIFRPRE86IEZJWE1FOiBDcmVhdGUgc29tZXRoaW5nIGxpa2UgV2ViUG9saWN5RGVjaXNp
b25MaXN0ZW5lcl9Qcm90b2NvbCBpbnN0ZWFkCi0gICAgICovCi0gICAgV2ViS2l0TmF2aWdhdGlv
blJlc3BvbnNlICgqbmF2aWdhdGlvbl9yZXF1ZXN0ZWQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmll
dywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCk7
Ci0KICAgICB2b2lkICgqd2luZG93X29iamVjdF9jbGVhcmVkKSAoV2ViS2l0V2ViVmlldyogd2Vi
X3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIHdpbmRvd19vYmplY3QpOwogICAgIGdjaGFyKiAgICgqY2hvb3NlX2ZpbGUp
IChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBn
Y2hhciogb2xkX2ZpbGUpOwogICAgIGdib29sZWFuICgqc2NyaXB0X2FsZXJ0KSAoV2ViS2l0V2Vi
Vmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGFsZXJ0
X21lc3NhZ2UpOwpAQCAtMjA3LDYgKzIyMSw5IEBACiBXRUJLSVRfT0JTT0xFVEVfQVBJIHZvaWQK
IHdlYmtpdF93ZWJfdmlld19nb19iYWNrd2FyZCAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwog
CitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBl
IChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgY29uc3QgZ2NoYXIqIG1pbWVfdHlwZSk7CisKIEdf
RU5EX0RFQ0xTCiAKICNlbmRpZgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAkocsOp
dmlzaW9uIDMwMDE0KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCShjb3Bp
ZSBkZSB0cmF2YWlsKQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcg
SG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqIENvcHlyaWZodCAoQykgMjAwOCBKYW4gTWlj
aGFlbCBDLiBBbG9uem8KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjksNiArMzAsNyBAQAog
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtp
dHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViZnJhbWUuaD4KKyNpbmNsdWRl
IDx3ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0d2Vic2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3Qu
aD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmg+CkBAIC01NSw2
ICs1Nyw5IEBACiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIGtpdChXZWJDb3JlOjpIaXN0b3J5
SXRlbSopOwogCiAgICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0KiBjb3JlKFdlYktpdFdlYkJh
Y2tGb3J3YXJkTGlzdCopOworCisgICAgV2ViS2l0TmF2aWdhdGlvblR5cGUga2l0KFdlYkNvcmU6
Ok5hdmlnYXRpb25UeXBlIHR5cGUpOworICAgIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIGNvcmUo
V2ViS2l0TmF2aWdhdGlvblR5cGUgdHlwZSk7CiB9CiAKIGV4dGVybiAiQyIgewpAQCAtMTEwLDYg
KzExNSwxMCBAQAogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKgogICAgIHdlYmtpdF93ZWJfaGlz
dG9yeV9pdGVtX25ld193aXRoX2NvcmVfaXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopOwogCisg
ICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX25l
dyAoV2ViS2l0V2ViRnJhbWUqLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKKworICAg
IHZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fY2FuY2VsIChXZWJLaXRXZWJQb2xpY3lE
ZWNpc2lvbiogZGVjaXNpb24pOworCiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gd2Via2l0
d2ViZnJhbWUuaCBvbmNlIHRoZWlyIEFQSSBoYXMgYmVlbiBkaXNjdXNzZWQuCiAKICAgICBXRUJL
SVRfQVBJIEdTTGlzdCoKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRl
Y2lzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5
ZGVjaXNpb24uaAkocsOpdmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJw
b2xpY3lkZWNpc2lvbi5oCShyw6l2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lm
bmRlZiBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTl9ICisjZGVmaW5lIFdFQktJVF9XRUJfUE9M
SUNZX0RFQ0lTSU9OX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CisKKyNpbmNsdWRlICJ3ZWJraXRkZWZpbmVzLmgiCisKK0dfQkVHSU5fREVDTFMKKwor
I2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9OICAgICAgICAgICAgKHdlYmtp
dF93ZWJfcG9saWN5X2RlY2lzaW9uX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfUE9M
SUNZX0RFQ0lTSU9OKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1Qo
KG9iaiksIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFdlYlBvbGljeURl
Y2lzaW9uKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9QT0xJQ1lfREVDSVNJT05fQ0xBU1Moa2xhc3Mp
ICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1BP
TElDWV9ERUNJU0lPTiwgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25DbGFzcykpCisjZGVmaW5lIFdF
QktJVF9JU19XRUJfUE9MSUNZX0RFQ0lTSU9OKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lO
U1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04pKQorI2Rl
ZmluZSBXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJU0lPTl9DTEFTUyhrbGFzcykgKEdfVFlQRV9D
SEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9O
KSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9QT0xJQ1lfREVDSVNJT05fR0VUX0NMQVNTKG9iaikgIChH
X1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX1BPTElDWV9E
RUNJU0lPTiwgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25DbGFzcykpCisKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Q
cml2YXRlOworc3RydWN0IF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiB7CisgICAgR09iamVjdCBw
YXJlbnQ7CisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2OworfTsKKwor
c3RydWN0IF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3Mg
cGFyZW50OworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9wb2xpY3lfZGVjaXNp
b25fZ2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfcG9saWN5
X2RlY2lzaW9uX3VzZSAoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9pZ25vcmUgKFdlYktpdFdl
YlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dl
Yl9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQgKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNp
c2lvbik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0ZGVmaW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRl
ZmluZXMuaAkocsOpdmlzaW9uIDMwMDE0KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVm
aW5lcy5oCShjb3BpZSBkZSB0cmF2YWlsKQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBDb2xsYWJvcmEsIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtNTIsNiArNTMsOSBAQAogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkZyYW1lIFdl
YktpdFdlYkZyYW1lOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkZyYW1lQ2xhc3MgV2ViS2l0
V2ViRnJhbWVDbGFzczsKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlBvbGljeURlY2lzaW9u
IFdlYktpdFdlYlBvbGljeURlY2lzaW9uOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlBvbGlj
eURlY2lzaW9uQ2xhc3MgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25DbGFzczsKKwogdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIFdlYktpdFdlYlNldHRpbmdzOwogdHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3MgV2ViS2l0V2ViU2V0dGluZ3NDbGFzczsKIApJbmRl
eDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0LmgJKHLDqXZpc2lvbiAzMDAxNCkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdC5oCShjb3BpZSBkZSB0cmF2YWlsKQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdodCAoQykg
MjAwOCBDb2xsYWJvcmEsIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMjcsNSArMjgsNiBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+
CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgogI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3
ZWJwb2xpY3lkZWNpc2lvbi5oPgogCiAjZW5kaWYgLyogX19XRUJLSVRfSF9fICovCkluZGV4OiBX
ZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwko
csOpdmlzaW9uIDMwMDUzKQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKGNvcGllIGRlIHRyYXZh
aWwpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMDgtMDItMDYgIFBpZXJyZS1MdWMgQmVhdWRvaW4gIDxw
aWVycmUtbHVjLmJlYXVkb2luQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGltcGxlbWVudHMgdGhlIGRlbGVnYXRl
cyBtZXRob2RzIG9mIFdlYlBvbGljeURlbGVnYXRlLgorICAgICAgICBTaW5jZSBHdGsrL0MgZG9l
c24ndCBoYXZlIGRlbGVnYXRlIG1ldGhvZHMsIEkgcmVwbGFjZWQgdGhlbSB3aXRoIHNpZ25hbHMu
ICAKKyAgICAgICAgQWxzbywgc2luY2UgV2ViUG9saWN5RGVsZWdhdGUgb25seSBoYXMgMyBkZWxl
Z2F0ZSwgSSBhZGRlZCB0aGVtIHRvIFdlYlZpZXcgCisgICAgICAgIGluc3RlYWQgb2YgY3JlYXRp
bmcgbmV3IEdPYmplY3Qgd2l0aCBvbmx5IDMgc2lnbmFscy4gIAorCisgICAgICAgIEEgbmV3IG9i
amVjdCBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiBhbGxvdyB0aGUgYnJvd3NlciB0byBkZWxheSBp
dHMgcmVzcG9uc2UKKyAgICAgICAgaW4gY2VydGFpbiBjYXNlcy4gIEFzIGNvbW1lbnRlZCBpbiBX
ZWJDb3JlLCByZWRpcmVjdGlvbiBuYXZpZ2F0aW9uIHJlcXVlc3RzIGFyZQorICAgICAgICBvbmUg
Y2FzZSB3aGVyZSBhIHJlc3BvbnNlIGlzIHJlcXVpcmVkIHRvIGJlIHN5bmMgKGllLiBkZWNpc2lv
biBtdXN0IGJlIHNlbnQgCisgICAgICAgIGJlZm9yZSB0aGUgZW5kIG9mIHNpZ25hbCkuICBJZiBh
IGRlY2lzaW9uIGNvbWUgaW4gbGF0ZSwgYXNzZXJ0aW9ucyBjb3VsZCBoYXBwZW4uCisgICAgICAg
IE9ubHkgb25lIHBvbGljeSBkZWNpc2lvbiBzaG91bGQgYmUgcGVuZGluZyB3aXRoIHRoaXMgaW1w
bGVtZW50YXRpb24uICBBZ2FpbiwKKyAgICAgICAgdGhpcyBzZWVtcyB0byBiZSBhIGxpbWl0YXRp
b24gaW4gV2ViQ29yZS4KKworICAgICAgICBJIGNvcGllZCB0aGUgZGVmYXVsdCBiZWhhdmlvcnMg
ZGVzY3JpYmVkIGluIFdlYlBvbGljeURlbGVnYXRlIG9uIHRoZSBNYWMgcG9ydC4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OkZyYW1lTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXQtbWFyc2hhbC5saXN0OgorICAgICAgICAqIHdlYmtpdC93ZWJraXQuaDoKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0ZGVmaW5lcy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6a2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6Cisg
ICAgICAgICogd2Via2l0L3dlYmtpdHByaXZhdGUuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2VicG9saWN5ZGVjaXNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJQb2xpY3lE
ZWNpc2lvblByaXZhdGU6OndlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2NsYXNzX2luaXQpOgor
ICAgICAgICAoX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9wb2xp
Y3lfZGVjaXNpb25faW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2
YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9uZXcpOgorICAgICAgICAoX1dlYktpdFdl
YlBvbGljeURlY2lzaW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlKToK
KyAgICAgICAgKF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGU6OndlYmtpdF93ZWJfcG9s
aWN5X2RlY2lzaW9uX2lnbm9yZSk6CisgICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Q
cml2YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZCk6CisgICAgICAgIChf
V2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lv
bl9jYW5jZWwpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuaDoKKwogMjAwOC0wMi0wNSAgTWFyayBSb3dlICA8bXJvd2VAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFscCBUb2tlci4KSW5kZXg6IENoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHLDqXZpc2lvbiAzMDA1MykKKysrIENoYW5nZUxv
ZwkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTEsMyArMSw5IEBACisyMDA4LTAyLTA2ICBQaWVycmUt
THVjIEJlYXVkb2luICA8cGllcnJlLWx1Yy5iZWF1ZG9pbkBjb2xsYWJvcmEuY28udWs+CisKKyAg
ICAgICAgQWRkIHdlYmtpdHdlYnBvbGljeWRlY2lzaW9uLiogdG8gdGhlIGJ1aWxkLgorCisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisKIDIwMDgtMDItMDYgIFRpbW90aHkgSGF0Y2hlciAgPHRp
bW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IE1hcmsgUm93ZS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18971</attachid>
            <date>2008-02-06 15:28:22 -0800</date>
            <delta_ts>2008-02-06 15:28:22 -0800</delta_ts>
            <desc>Some UI that may help testing</desc>
            <filename>policy-implementation-tests.patch</filename>
            <type>text/plain</type>
            <size>5832</size>
            <attacher name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMJKHLDqXZpc2lvbiAzMDAxNCkKKysrIFdlYktpdFRv
b2xzL0d0a0xhdW5jaGVyL21haW4uYwkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTEwNiw2ICsxMDYs
MTExIEBACiAgICAgd2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQgKHdlYl92aWV3KTsKIH0KIAor
c3RhdGljIHZvaWQKK2FsbG93X25hdmlnYXRpb25fY2IgKEd0a1dpZGdldCogZW50cnksIGdwb2lu
dGVyIGRhdGEpCit7CisgICAgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlKGRhdGEpOwor
ICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfcGFyZW50X3dpbmRvdyhlbnRy
eSk7CisgICAgZ2RrX3dpbmRvd19oaWRlKHdpbmRvdyk7Cit9CisKK3N0YXRpYyB2b2lkCitkaXNh
bGxvd19uYXZpZ2F0aW9uX2NiIChHdGtXaWRnZXQqIGVudHJ5LCBncG9pbnRlciBkYXRhKQorewor
ICAgIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkKGRhdGEpOworICAgIEdka1dp
bmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfcGFyZW50X3dpbmRvdyhlbnRyeSk7CisgICAg
Z19vYmplY3RfdW5yZWYoZGF0YSk7CisgICAgZ2RrX3dpbmRvd19oaWRlKHdpbmRvdyk7Cit9CisK
Kworc3RhdGljIGdib29sZWFuCituYXZpZ2F0aW9uX3JlcXVlc3RlZF9jYiAoV2ViS2l0V2ViVmll
dyogcGFnZSwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCogbmV0
d29yaywgR0hhc2hUYWJsZSogYWN0aW9uX2luZm9ybWF0aW9uLCBXZWJLaXRXZWJQb2xpY3lEZWNp
c2lvbiogcG9saWN5RGVjaXNpb24sIGdwb2ludGVyIGRhdGEpCit7CisgICAgZ19vYmplY3RfcmVm
KHBvbGljeURlY2lzaW9uKTsKKworICAgIGdfcHJpbnQoIisrKysgTmF2aWdhdGlvbiByZXF1ZXN0
ZWQgZm9yICVzXG4iLCB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF91cmkobmV0d29yaykpOwor
ICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpbmRvd19uZXcgKEdUS19XSU5ET1dfVE9QTEVW
RUwpOworICAgIGd0a193aW5kb3dfc2V0X3RpdGxlICh3aW5kb3csICJBbGxvdyBuYXZpZ2F0aW9u
PyIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUICh3aW5kb3cpLCAiZGVzdHJveSIs
IEdfQ0FMTEJBQ0sgKGRlc3Ryb3lfY2IpLCBOVUxMKTsKKworICAgIEd0a1dpZGdldCogdmJveCA9
IGd0a192Ym94X25ldyAoRkFMU0UsIDApOworCisgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBndGtf
bGFiZWxfbmV3KGdfc3RyY29uY2F0KCJBbGxvdyBuYXZpZ2F0aW9uIHRvICIsIHdlYmtpdF9uZXR3
b3JrX3JlcXVlc3RfZ2V0X3VyaShuZXR3b3JrKSwgTlVMTCkpOworICAgIGd0a19ib3hfcGFja19z
dGFydCAoR1RLX0JPWCAodmJveCksIHdpZGdldCwgVFJVRSwgVFJVRSwgMTApOworCisgICAgd2lk
Z2V0ID0gZ3RrX2J1dHRvbl9uZXdfZnJvbV9zdG9jayhHVEtfU1RPQ0tfWUVTKTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0IChHX09CSkVDVCAod2lkZ2V0KSwgImNsaWNrZWQiLCBHX0NBTExCQUNLIChh
bGxvd19uYXZpZ2F0aW9uX2NiKSwgcG9saWN5RGVjaXNpb24pOworICAgIGd0a19ib3hfcGFja19z
dGFydCAoR1RLX0JPWCAodmJveCksIHdpZGdldCwgRkFMU0UsIEZBTFNFLCAwKTsKKyAgICB3aWRn
ZXQgPSBndGtfYnV0dG9uX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19OTyk7CisgICAgZ19zaWdu
YWxfY29ubmVjdCAoR19PQkpFQ1QgKHdpZGdldCksICJjbGlja2VkIiwgR19DQUxMQkFDSyAoZGlz
YWxsb3dfbmF2aWdhdGlvbl9jYiksIHBvbGljeURlY2lzaW9uKTsKKyAgICBndGtfYm94X3BhY2tf
c3RhcnQgKEdUS19CT1ggKHZib3gpLCB3aWRnZXQsIEZBTFNFLCBGQUxTRSwgMCk7CisKKyAgICBn
dGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAod2luZG93KSwgdmJveCk7CisgICAgZ3Rr
X3dpbmRvd19zZXRfdHJhbnNpZW50X2Zvcih3aW5kb3csIG1haW5fd2luZG93KTsKKyAgICBndGtf
d2lkZ2V0X3Nob3dfYWxsICh3aW5kb3cpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CitzdGF0aWMg
Z2Jvb2xlYW4KK21pbWVfdHlwZV9yZXF1ZXN0ZWRfY2IgKFdlYktpdFdlYlZpZXcqIHBhZ2UsIFdl
YktpdFdlYkZyYW1lKiBmcmFtZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqIG5ldHdvcmssIGNvbnN0
IGdjaGFyKiBtaW1lLCBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogcG9saWN5RGVjaXNpb24sIGdw
b2ludGVyIGRhdGEpCit7CisgICAgZ19vYmplY3RfcmVmKHBvbGljeURlY2lzaW9uKTsKKworICAg
IGdfcHJpbnQoIisrKysgZG93bmxvYWQgcmVxdWVzdGVkIGZvciAlc1xuIiwgd2Via2l0X25ldHdv
cmtfcmVxdWVzdF9nZXRfdXJpKG5ldHdvcmspKTsKKyAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0
a193aW5kb3dfbmV3IChHVEtfV0lORE9XX1RPUExFVkVMKTsKKyAgICBndGtfd2luZG93X3NldF90
aXRsZSAod2luZG93LCAiQWxsb3cgbmF2aWdhdGlvbj8iKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
IChHX09CSkVDVCAod2luZG93KSwgImRlc3Ryb3kiLCBHX0NBTExCQUNLIChkZXN0cm95X2NiKSwg
TlVMTCk7CisKKyAgICBHdGtXaWRnZXQqIHZib3ggPSBndGtfdmJveF9uZXcgKEZBTFNFLCAwKTsK
KworICAgIEd0a1dpZGdldCogd2lkZ2V0ID0gZ3RrX2xhYmVsX25ldyhnX3N0cmNvbmNhdCgiQWxs
b3cgZG93bmxvYWQgdG8gIiwgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJpKG5ldHdvcmsp
LCAiXG4gTWltZTogIiwgbWltZSwgTlVMTCkpOworICAgIGd0a19ib3hfcGFja19zdGFydCAoR1RL
X0JPWCAodmJveCksIHdpZGdldCwgVFJVRSwgVFJVRSwgMTApOworCisgICAgd2lkZ2V0ID0gZ3Rr
X2J1dHRvbl9uZXdfZnJvbV9zdG9jayhHVEtfU1RPQ0tfWUVTKTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0IChHX09CSkVDVCAod2lkZ2V0KSwgImNsaWNrZWQiLCBHX0NBTExCQUNLIChhbGxvd19uYXZp
Z2F0aW9uX2NiKSwgcG9saWN5RGVjaXNpb24pOworICAgIGd0a19ib3hfcGFja19zdGFydCAoR1RL
X0JPWCAodmJveCksIHdpZGdldCwgRkFMU0UsIEZBTFNFLCAwKTsKKyAgICB3aWRnZXQgPSBndGtf
YnV0dG9uX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19OTyk7CisgICAgZ19zaWduYWxfY29ubmVj
dCAoR19PQkpFQ1QgKHdpZGdldCksICJjbGlja2VkIiwgR19DQUxMQkFDSyAoZGlzYWxsb3dfbmF2
aWdhdGlvbl9jYiksIHBvbGljeURlY2lzaW9uKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQgKEdU
S19CT1ggKHZib3gpLCB3aWRnZXQsIEZBTFNFLCBGQUxTRSwgMCk7CisKKyAgICBndGtfY29udGFp
bmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAod2luZG93KSwgdmJveCk7CisgICAgZ3RrX3dpbmRvd19z
ZXRfdHJhbnNpZW50X2Zvcih3aW5kb3csIG1haW5fd2luZG93KTsKKyAgICBndGtfd2lkZ2V0X3No
b3dfYWxsICh3aW5kb3cpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVh
bgorbmV3X3dpbmRvd19yZXF1ZXN0ZWRfY2IgKFdlYktpdFdlYlZpZXcqIHZpZXcsIFdlYktpdFdl
YkZyYW1lKiBmcmFtZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqIG5ldHdvcmssIEdIYXNoVGFibGUq
IGFjdGlvbl9pbmZvcm1hdGlvbiwgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIHBvbGljeURlY2lz
aW9uLCBncG9pbnRlciBkYXRhKQoreworICAgIGdfb2JqZWN0X3JlZihwb2xpY3lEZWNpc2lvbik7
CisgICAgLy93ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91c2UocG9saWN5RGVjaXNpb24pOwor
CisgICAgZ19wcmludCgiKysrKyBuZXdfd2luZG93IHJlcXVlc3RlZCBmb3IgJXNcbiIsIHdlYmtp
dF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3VyaShuZXR3b3JrKSk7CisgICAgR3RrV2lkZ2V0KiB3aW5k
b3cgPSBndGtfd2luZG93X25ldyAoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisgICAgZ3RrX3dpbmRv
d19zZXRfdGl0bGUgKHdpbmRvdywgIkFsbG93IG5hdmlnYXRpb24/Iik7CisgICAgZ19zaWduYWxf
Y29ubmVjdCAoR19PQkpFQ1QgKHdpbmRvdyksICJkZXN0cm95IiwgR19DQUxMQkFDSyAoZGVzdHJv
eV9jYiksIE5VTEwpOworCisgICAgR3RrV2lkZ2V0KiB2Ym94ID0gZ3RrX3Zib3hfbmV3IChGQUxT
RSwgMCk7CisKKyAgICBHdGtXaWRnZXQqIHdpZGdldCA9IGd0a19sYWJlbF9uZXcoZ19zdHJjb25j
YXQoIkFsbG93IG5hdmlnYXRpb24gdG8gIiwgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJp
KG5ldHdvcmspLCBOVUxMKSk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0IChHVEtfQk9YICh2Ym94
KSwgd2lkZ2V0LCBUUlVFLCBUUlVFLCAxMCk7CisKKyAgICB3aWRnZXQgPSBndGtfYnV0dG9uX25l
d19mcm9tX3N0b2NrKEdUS19TVE9DS19ZRVMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JK
RUNUICh3aWRnZXQpLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0sgKGFsbG93X25hdmlnYXRpb25fY2Ip
LCBwb2xpY3lEZWNpc2lvbik7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0IChHVEtfQk9YICh2Ym94
KSwgd2lkZ2V0LCBGQUxTRSwgRkFMU0UsIDApOworICAgIHdpZGdldCA9IGd0a19idXR0b25fbmV3
X2Zyb21fc3RvY2soR1RLX1NUT0NLX05PKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVD
VCAod2lkZ2V0KSwgImNsaWNrZWQiLCBHX0NBTExCQUNLIChkaXNhbGxvd19uYXZpZ2F0aW9uX2Ni
KSwgcG9saWN5RGVjaXNpb24pOworICAgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAodmJv
eCksIHdpZGdldCwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAgIGd0a19jb250YWluZXJfYWRkIChH
VEtfQ09OVEFJTkVSICh3aW5kb3cpLCB2Ym94KTsKKyAgICBndGtfd2luZG93X3NldF90cmFuc2ll
bnRfZm9yKHdpbmRvdywgbWFpbl93aW5kb3cpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwgKHdp
bmRvdyk7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKwogc3RhdGljIEd0a1dpZGdldCoKIGNyZWF0
ZV9icm93c2VyICgpCiB7CkBAIC0xMTksNiArMjI0LDkgQEAKICAgICBnX3NpZ25hbF9jb25uZWN0
IChHX09CSkVDVCAod2ViX3ZpZXcpLCAibG9hZC1wcm9ncmVzcy1jaGFuZ2VkIiwgR19DQUxMQkFD
SyAocHJvZ3Jlc3NfY2hhbmdlX2NiKSwgd2ViX3ZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qg
KEdfT0JKRUNUICh3ZWJfdmlldyksICJsb2FkLWNvbW1pdHRlZCIsIEdfQ0FMTEJBQ0sgKGxvYWRf
Y29tbWl0X2NiKSwgd2ViX3ZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUICh3
ZWJfdmlldyksICJob3ZlcmluZy1vdmVyLWxpbmsiLCBHX0NBTExCQUNLIChsaW5rX2hvdmVyX2Ni
KSwgd2ViX3ZpZXcpOworICAgIC8vZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKHdlYl92aWV3
KSwgIm5hdmlnYXRpb24tcmVxdWVzdGVkIiwgR19DQUxMQkFDSyAobmF2aWdhdGlvbl9yZXF1ZXN0
ZWRfY2IpLCB3ZWJfdmlldyk7CisgICAgLy9nX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAod2Vi
X3ZpZXcpLCAibmV3LXdpbmRvdy1yZXF1ZXN0ZWQiLCBHX0NBTExCQUNLIChuZXdfd2luZG93X3Jl
cXVlc3RlZF9jYiksIHdlYl92aWV3KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAo
d2ViX3ZpZXcpLCAibWltZS10eXBlLXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQiLCBHX0NBTExC
QUNLIChtaW1lX3R5cGVfcmVxdWVzdGVkX2NiKSwgd2ViX3ZpZXcpOwogCiAgICAgcmV0dXJuIHNj
cm9sbGVkX3dpbmRvdzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19530</attachid>
            <date>2008-03-04 14:38:49 -0800</date>
            <delta_ts>2008-05-07 11:21:35 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>policy-implementation-7.patch</filename>
            <type>text/plain</type>
            <size>31925</size>
            <attacher name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</attacher>
            
              <data encoding="base64">SW5kZXg6IEdOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEdOVW1ha2VmaWxlLmFtCShyw6l2
aXNpb24gMzA3NTgpCisrKyBHTlVtYWtlZmlsZS5hbQkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTI3
OCw2ICsyNzgsNyBAQAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlz
dC5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5oIFwKIAlXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJwb2xpY3lkZWNpc2lvbi5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0
aW5ncy5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKIApAQCAtMzAxLDYg
KzMwMiw3IEBACiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNw
cCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIFwKIAlXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAgXAorCVdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
c2V0dGluZ3MuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBcCiAJ
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIFwKSW5kZXg6IFdl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
CShyw6l2aXNpb24gMzA3NTgpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcAkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTIsNiArMiw3IEBACiAgKiAg
Q29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiAgQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiAgQ29weXJp
Z2h0IChDKSAyMDA3IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4KKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC00Miw2ICs0Myw3IEBACiAjaW5jbHVkZSAia2pzX3dp
bmRvdy5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJm
cmFtZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgiCiAjaW5jbHVkZSAi
d2Via2l0cHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpA
QCAtNTcsNiArNTksNyBAQAogRnJhbWVMb2FkZXJDbGllbnQ6OkZyYW1lTG9hZGVyQ2xpZW50KFdl
YktpdFdlYkZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX3VzZXJB
Z2VudCgiIikKKyAgICAsIG1fcG9saWN5RGVjaXNpb24oTlVMTCkKIHsKICAgICBBU1NFUlQobV9m
cmFtZSk7CiB9CkBAIC0yMTgsMjMgKzIyMSw2MyBAQAogICAgIG1fcmVzcG9uc2UgPSByZXNwb25z
ZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JN
SU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0
aW9uLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCkKIHsKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byBjYWxsIGRpcmVjdGx5IGhl
cmUgKGNvbW1lbnQgY29waWVkIGZyb20gUXQgdmVyc2lvbikKICAgICBBU1NFUlQocG9saWN5RnVu
Y3Rpb24pOwogICAgIGlmICghcG9saWN5RnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICAo
Y29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKKwor
ICAgIFdlYktpdFdlYlZpZXcqIHBhZ2UgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOworICAg
IFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9u
ZXcocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIFdl
YktpdFdlYlBvbGljeURlY2lzaW9uKiBwb2xpY3lEZWNpc2lvbiA9IHdlYmtpdF93ZWJfcG9saWN5
X2RlY2lzaW9uX25ldyhtX2ZyYW1lLCBwb2xpY3lGdW5jdGlvbik7CisgICAgbV9wb2xpY3lEZWNp
c2lvbiA9IHBvbGljeURlY2lzaW9uOworCisgICAgZ2Jvb2xlYW4gaXNIYW5kbGVkID0gZmFsc2U7
CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHBhZ2UsICJtaW1lLXR5cGUtcG9saWN5LWRlY2lz
aW9uLXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3QsIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCks
IHBvbGljeURlY2lzaW9uLCAmaXNIYW5kbGVkKTsKKworICAgIGdfb2JqZWN0X3VucmVmKHJlcXVl
c3QpOworCisgICAgaWYgKGlzSGFuZGxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUG9saWN5
QWN0aW9uIHBvbGljeVJlc3VsdDsKKworICAgIGlmIChyZXNvdXJjZVJlcXVlc3QudXJsKCkuaXNM
b2NhbEZpbGUoKSkKKyAgICAgICAgcG9saWN5UmVzdWx0ID0gUG9saWN5VXNlOworICAgIGVsc2Ug
aWYgKGNhblNob3dNSU1FVHlwZShtaW1lVHlwZSkpCisgICAgICAgIHBvbGljeVJlc3VsdCA9IFBv
bGljeVVzZTsKKyAgICBlbHNlCisgICAgICAgIHBvbGljeVJlc3VsdCA9IFBvbGljeUlnbm9yZTsK
KworICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShwb2xpY3lS
ZXN1bHQpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Ry
aW5nJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rpb24sIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgQVNTRVJUKHBvbGljeUZ1bmN0aW9uKTsKICAg
ICBpZiAoIXBvbGljeUZ1bmN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IEkg
dGhpbmsgUXQgdmVyc2lvbiBtYXJzaGFscyB0aGlzIHRvIGFub3RoZXIgdGhyZWFkIHNvIHdoZW4g
d2UKLSAgICAvLyBoYXZlIG11bHRpLXRocmVhZGVkIGRvd25sb2FkLCB3ZSBtaWdodCBuZWVkIHRv
IGRvIHRoZSBzYW1lCi0gICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rp
b24pKFBvbGljeUlnbm9yZSk7CisKKyAgICBXZWJLaXRXZWJWaWV3KiBwYWdlID0gZ2V0Vmlld0Zy
b21GcmFtZShtX2ZyYW1lKTsKKyAgICBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCA9IHdl
YmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3KHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogcG9saWN5RGVjaXNp
b24gPSB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9uZXcobV9mcmFtZSwgcG9saWN5RnVuY3Rp
b24pOworICAgIG1fcG9saWN5RGVjaXNpb24gPSBwb2xpY3lEZWNpc2lvbjsKKworICAgIFdlYktp
dE5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlID0ga2l0KGFjdGlvbi50eXBlKCkpOworCisg
ICAgR0hhc2hUYWJsZSAqIGFjdGlvbkluZm9ybWF0aW9uID0gZ19oYXNoX3RhYmxlX25ldyhOVUxM
LCBOVUxMKTsKKyAgICBnX2hhc2hfdGFibGVfaW5zZXJ0KGFjdGlvbkluZm9ybWF0aW9uLCAodm9p
ZCopV0VCS0lUX0FDVElPTl9OQVZJR0FUSU9OX1RZUEUsICh2b2lkKiluYXZpZ2F0aW9uVHlwZSk7
CisKKyAgICBnYm9vbGVhbiBpc0hhbmRsZWQgPSBmYWxzZTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5
X25hbWUocGFnZSwgIm5ldy13aW5kb3ctcmVxdWVzdGVkIiwgbV9mcmFtZSwgcmVxdWVzdCwgYWN0
aW9uSW5mb3JtYXRpb24sIHBvbGljeURlY2lzaW9uLCAmaXNIYW5kbGVkKTsKKworICAgIGdfaGFz
aF90YWJsZV9kZXN0cm95KGFjdGlvbkluZm9ybWF0aW9uKTsKKyAgICBnX29iamVjdF91bnJlZihy
ZXF1ZXN0KTsKKworICAgIGlmIChpc0hhbmRsZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rpb24sIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QpCkBAIC0yNDUsMTcgKzI4OCwyNCBAQAogCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmll
dyA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7CiAgICAgV2ViS2l0TmV0d29ya1JlcXVlc3Qq
IHJlcXVlc3QgPSB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X25ldyhyZXNvdXJjZVJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNl
IHJlc3BvbnNlOworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBwb2xpY3lEZWNpc2lvbiA9
IHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX25ldyhtX2ZyYW1lLCBwb2xpY3lGdW5jdGlvbik7
CisgICAgbV9wb2xpY3lEZWNpc2lvbiA9IHBvbGljeURlY2lzaW9uOwogCi0gICAgZ19zaWduYWxf
ZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJuYXZpZ2F0aW9uLXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJl
cXVlc3QsICZyZXNwb25zZSk7CisgICAgV2ViS2l0TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5
cGUgPSBraXQoYWN0aW9uLnR5cGUoKSk7CiAKKyAgICBHSGFzaFRhYmxlICogYWN0aW9uSW5mb3Jt
YXRpb24gPSBnX2hhc2hfdGFibGVfbmV3KE5VTEwsIE5VTEwpOworICAgIGdfaGFzaF90YWJsZV9p
bnNlcnQoYWN0aW9uSW5mb3JtYXRpb24sICh2b2lkKilXRUJLSVRfQUNUSU9OX05BVklHQVRJT05f
VFlQRSwgKHZvaWQqKW5hdmlnYXRpb25UeXBlKTsKKworICAgIGdib29sZWFuIGlzSGFuZGxlZCA9
IGZhbHNlOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAibmF2aWdhdGlvbi1y
ZXF1ZXN0ZWQiLCBtX2ZyYW1lLCByZXF1ZXN0LCBhY3Rpb25JbmZvcm1hdGlvbiwgcG9saWN5RGVj
aXNpb24sICZpc0hhbmRsZWQpOworCisgICAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3koYWN0aW9uSW5m
b3JtYXRpb24pOwogICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOwogCi0gICAgaWYgKHJlc3Bv
bnNlID09IFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNFX0lHTk9SRSkgewotICAgICAgICAoY29y
ZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKKyAg
ICBpZiAoaXNIYW5kbGVkKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCisgICAgLy8gRklYTUUg
SW1wbGVtZW50IGRlZmF1bHQgYmVoYXZpb3Igd2hlbiB3ZSBjYW4gcXVlcnkgdGhlIGJhY2tlbmQg
d2hhdCBwcm90b2NvbHMgaXQgc3VwcG9ydHMKICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCkt
Pipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKIH0KIApAQCAtNTQ3LDcgKzU5Nyw4IEBACiAK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIC8vRklYTUUgQWRkIHN1cHBvcnQgZm9yIG1vcmUgdGhhbiBvbmUg
cG9saWN5IGRlY2lzaW9uIGF0IG9uY2UKKyAgICB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9j
YW5jZWwobV9wb2xpY3lEZWNpc2lvbik7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkTG9hZE1haW5SZXNvdXJjZShEb2N1bWVudExvYWRlciopCkBAIC02MDcsMTAgKzY1
OCwxMCBAQAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEZyYW1lTG9hZGVyQ2xpZW50Ojpj
YW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJikgY29uc3QKK2Jvb2wgRnJhbWVMb2FkZXJDbGll
bnQ6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBGSVhNRTogQWRkIG1pbWUg
dHlwZXMgc3VwcG9ydGVkIGJ5IHBsdWdpbnMuCisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSh0eXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1
cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUodHlwZSk7CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXJDbGll
bnQ6OnJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0
CkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oCShyw6l2aXNpb24gMzA3NTgpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmgJKGNvcGllIGRlIHRyYXZhaWwpCkBAIC0xLDYgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zMSw2ICszMiw3IEBA
CiAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oIgogCiB0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2ViRnJhbWUgV2ViS2l0V2ViRnJhbWU7CiAKQEAgLTE3OSw2ICsxODEs
NyBAQAogICAgICAgICBXZWJLaXRXZWJGcmFtZSogbV9mcmFtZTsKICAgICAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgICAgICBXZWJDb3JlOjpTdHJpbmcgbV91
c2VyQWdlbnQ7CisgICAgICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBtX3BvbGljeURlY2lz
aW9uOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdC1tYXJzaGFs
Lmxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LW1hcnNoYWwubGlz
dAkocsOpdmlzaW9uIDMwNzU4KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LW1hcnNoYWwu
bGlzdAkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTksNCArOSw1IEBACiBCT09MRUFOOk9CSkVDVCxT
VFJJTkcKIEJPT0xFQU46T0JKRUNULFNUUklORyxCT09MRUFOCiBCT09MRUFOOk9CSkVDVCxTVFJJ
TkcsU1RSSU5HLFNUUklORwotSU5UOk9CSkVDVCxPQkpFQ1QKK0JPT0xFQU46T0JKRUNULE9CSkVD
VCxTVFJJTkcsT0JKRUNUCitCT09MRUFOOk9CSkVDVCxPQkpFQ1QsQk9YRUQsT0JKRUNUCkluZGV4
OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocsOpdmlzaW9uIDMwNzU4KQorKysgV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKGNvcGllIGRlIHRyYXZhaWwpCkBAIC00
LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwNyBYYW4gTG9wZXogPHhhbkBnbm9tZS5v
cmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA4IEphbiBBbG9uem8gPGptYWxvbnpvQHVucGx1Z2dhYmxlLmNv
bT4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC02Niw2ICs2Nyw4IEBACiBlbnVtIHsKICAg
ICAvKiBub3JtYWwgc2lnbmFscyAqLwogICAgIE5BVklHQVRJT05fUkVRVUVTVEVELAorICAgIE1J
TUVfVFlQRV9QT0xJQ1lfREVDSVNJT05fUkVRVUVTVEVELAorICAgIE5FV19XSU5ET1dfUkVRVUVT
VEVELAogICAgIFdJTkRPV19PQkpFQ1RfQ0xFQVJFRCwKICAgICBMT0FEX1NUQVJURUQsCiAgICAg
TE9BRF9DT01NSVRURUQsCkBAIC00ODAsMTIgKzQ4Myw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAK
LXN0YXRpYyBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2Ugd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2
aWdhdGlvbl9yZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwg
V2ViS2l0TmV0d29ya1JlcXVlc3QqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNFX0FDQ0VQVDsKLX0KLQogc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X3JlYWxfd2luZG93X29iamVjdF9jbGVhcmVkKFdlYktpdFdlYlZpZXcq
LCBXZWJLaXRXZWJGcmFtZSosIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiB3aW5kb3dfb2JqZWN0KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC02NDIsMTggKzYz
OSw2IEBACiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcykt
PmZpbmFsaXplKG9iamVjdCk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfbmF2aWdhdGlv
bl9yZXF1ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBpaGludCwgR1ZhbHVlKiBy
ZXR1cm5BY2N1LCBjb25zdCBHVmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGR1bW15KQot
ewotICBnYm9vbGVhbiBjb250aW51ZUVtaXNzaW9uID0gVFJVRTsKLSAgaW50IHNpZ25hbEhhbmRs
ZWQgPSBnX3ZhbHVlX2dldF9pbnQoaGFuZGxlclJldHVybik7Ci0gIGdfdmFsdWVfc2V0X2ludChy
ZXR1cm5BY2N1LCBzaWduYWxIYW5kbGVkKTsKLQotICBpZiAoc2lnbmFsSGFuZGxlZCAhPSBXRUJL
SVRfTkFWSUdBVElPTl9SRVNQT05TRV9BQ0NFUFQpCi0gICAgICBjb250aW51ZUVtaXNzaW9uID0g
RkFMU0U7Ci0KLSAgcmV0dXJuIGNvbnRpbnVlRW1pc3Npb247Ci19Ci0KIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNz
KQogewogICAgIEd0a0JpbmRpbmdTZXQqIGJpbmRpbmdfc2V0OwpAQCAtNjY0LDE4ICs2NDksODUg
QEAKICAgICAgKiBTaWduYWxzCiAgICAgICovCiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJW
aWV3OjpuYXZpZ2F0aW9uLXJlcXVlc3RlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qg
b24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHdlYl9mcmFtZTogdGhlIGZy
YW1lIG9uIHdoaWNoIHRoZSBhY3Rpb24gCisgICAgICogQGFjdGlvbl9pbmZvcm1hdGlvbjogZGVz
Y3JpYmVzIHRoZSBhY3Rpb24gdGhhdCB0cmlnZ2VyZWQgdGhpcyBuYXZpZ2F0aW9uIHJlcXVlc3Qs
IHBvc3NpYmxlIGtleXMgYXJlIGRlZmluZWQgYnkgV2ViS2l0QWN0aW9uS2V5CisgICAgICogQHBv
bGljeV9kZWNpc2lvbjogYSAjV2ViS2l0V2ViUG9saWN5RGVjaXNpb24sIGFuIG9iamVjdCB0byB3
aGljaCBnaXZlIHRoZSBwb2xpY3kgcmVzcG9uc2UKKyAgICAgKiBAcmV0dXJuOiBUUlVFIGlmIHRo
ZSBzaWduYWwgd2lsbCBiZSBoYW5kbGVkLCAKKyAgICAgKiAgICAgICAgICBGQUxTRSB0byBoYXZl
IHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFwcGx5CisgICAgICoKKyAgICAgKiBSb3V0ZXMgYSBuYXZp
Z2F0aW9uIGFjdGlvbiBpbnRlcm5hbGx5IG9yIHRvIGFuIGV4dGVybmFsIHZpZXdlci4KKyAgICAg
Ki8KICAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tOQVZJR0FUSU9OX1JFUVVFU1RFRF0gPSBn
X3NpZ25hbF9uZXcoIm5hdmlnYXRpb24tcmVxdWVzdGVkIiwKICAgICAgICAgICAgIEdfVFlQRV9G
Uk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCiAgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJ
R05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCi0gICAgICAgICAgICBHX1NUUlVDVF9P
RkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgbmF2aWdhdGlvbl9yZXF1ZXN0ZWQpLAotICAgICAg
ICAgICAgd2Via2l0X25hdmlnYXRpb25fcmVxdWVzdF9oYW5kbGVkLAorICAgICAgICAgICAgMCwK
KyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwKICAgICAgICAg
ICAgIE5VTEwsCi0gICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9JTlRfX09CSkVDVF9PQkpFQ1Qs
Ci0gICAgICAgICAgICBHX1RZUEVfSU5ULCAyLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxf
Qk9PTEVBTl9fT0JKRUNUX09CSkVDVF9CT1hFRF9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVf
Qk9PTEVBTiwgNCwKICAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZ
UEVfT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX0hBU0hfVEFCTEUsCiAgICAgICAgICAgICBH
X1RZUEVfT0JKRUNUKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Om1pbWUtdHlw
ZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVj
dCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAd2ViX2ZyYW1lOiB0aGUg
ZnJhbWUgb24gd2hpY2ggdGhlIGFjdGlvbiAKKyAgICAgKiBAbWltZXR5cGU6IHRoZSBNSU1FIHR5
cGUgYXR0ZW1wdGVkIHRvIGxvYWQKKyAgICAgKiBAcG9saWN5X2RlY2lzaW9uOiBhICNXZWJLaXRX
ZWJQb2xpY3lEZWNpc2lvbiwgYW4gb2JqZWN0IHRvIHdoaWNoIGdpdmUgdGhlIHBvbGljeSByZXNw
b25zZQorICAgICAqIEByZXR1cm46IFRSVUUgaWYgdGhlIHNpZ25hbCB3aWxsIGJlIGhhbmRsZWQs
IAorICAgICAqICAgICAgICAgIEZBTFNFIHRvIGhhdmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYXBw
bHkKKyAgICAgKgorICAgICAqIERlY2lkZSB3aGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IG9mIG5v
dCB0aGUgZ2l2ZW4gTUlNRSB0eXBlLgorICAgICAqIElmIHRoaXMgc2lnbmFsIGlzIG5vdCBoYW5k
bGVkLCB0aGUgZGVmYXVsdCBiZWhhdmlvciBpcyBhcyBmb2xsb3dzLiAgSWYgV2ViS2l0IGNhbiAK
KyAgICAgKiBzaG93IHRoaXMgTUlNRSB0eXBlLCBpdCB3aWxsIGJlIHVzZWQsIGVsc2UgaXQgd2ls
bCBiZSBpZ25vcmVkLgorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW01JTUVf
VFlQRV9QT0xJQ1lfREVDSVNJT05fUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygibWltZS10eXBl
LXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xB
U1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JV
Tl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBn
X3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAg
ICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNUX09CSkVDVF9TVFJJTkdfT0JK
RUNULAorICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDQsCisgICAgICAgICAgICBHX1RZUEVf
T0JKRUNULCAKKyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsIAorICAgICAgICAgICAgR19UWVBF
X1NUUklORywgCisgICAgICAgICAgICBHX1RZUEVfT0JKRUNUKTsKKworICAgIC8qKgorICAgICAq
IFdlYktpdFdlYlZpZXc6Om5ldy13aW5kb3ctcmVxdWVzdGVkOgorICAgICAqIEB3ZWJfdmlldzog
dGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAd2ViX2Zy
YW1lOiB0aGUgZnJhbWUgb24gd2hpY2ggdGhlIGFjdGlvbiAKKyAgICAgKiBAYWN0aW9uX2luZm9y
bWF0aW9uOiBkZXNjcmliZXMgdGhlIGFjdGlvbiB0aGF0IHRyaWdnZXJlZCB0aGlzIG5hdmlnYXRp
b24gcmVxdWVzdCwgcG9zc2libGUga2V5cyBhcmUgZGVmaW5lZCBieSBXZWJLaXRBY3Rpb25LZXkK
KyAgICAgKiBAcG9saWN5X2RlY2lzaW9uOiBhICNXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiwgYW4g
b2JqZWN0IHRvIHdoaWNoIGdpdmUgdGhlIHBvbGljeSByZXNwb25zZQorICAgICAqIEByZXR1cm46
IFRSVUUgaWYgdGhlIHNpZ25hbCB3aWxsIGJlIGhhbmRsZWQsIAorICAgICAqICAgICAgICAgIEZB
TFNFIHRvIGhhdmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYXBwbHkKKyAgICAgKgorICAgICAqIERl
Y2lkZXMgd2hldGhlciBvciBub3QgdG8gYWxsb3cgYSB0YXJnZXRlZCBuYXZpZ2F0aW9uIGV2ZW50
LCBzdWNoIGFzIG9wZW5pbmcgCisgICAgICogYSBsaW5rIGluIGEgbmV3IHdpbmRvdy4gSWYgdGhp
cyBzaWduYWwgcmV0dXJucyBXRUJLSVRfUE9MSUNZX1JFU1BPTlNFX0FDQ0VQVCAKKyAgICAgKiB0
aGVuIHRoZSBuZXcgd2luZG93IHdpbGwgYmUgb3BlbmVkLCBhbmQgbmF2aWdhdGlvbi1yZXF1ZXN0
ZWQgd2lsbCBiZSBlbWl0dGVkIAorICAgICAqIHdpdGggdmFsdWUgV0VCS0lUX05BVklHQVRJT05f
VFlQRV9PVEhFUiBmb3IgV0VCS0lUX0FDVElPTl9OQVZJR0FUSU9OX1RZUEUuCisgICAgICogVGhl
IGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gYWNjZXB0LiAgCisgICAgICovCisgICAgd2Via2l0X3dl
Yl92aWV3X3NpZ25hbHNbTkVXX1dJTkRPV19SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJuZXct
d2luZG93LXJlcXVlc3RlZCIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3
Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBH
X1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIGdfc2lnbmFsX2Fj
Y3VtdWxhdG9yX3RydWVfaGFuZGxlZCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICB3
ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1RfT0JKRUNUX0JPWEVEX09CSkVDVCwKKyAgICAg
ICAgICAgIEdfVFlQRV9CT09MRUFOLCA0LAorICAgICAgICAgICAgR19UWVBFX09CSkVDVCwKKyAg
ICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfSEFTSF9UQUJMRSwK
KyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QpOworCisgICAgLyoqCiAgICAgICogV2ViS2l0V2Vi
Vmlldzo6d2luZG93LW9iamVjdC1jbGVhcmVkOgogICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVj
dCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAgICAgKiBAZnJhbWU6IHRoZSAjV2Vi
S2l0V2ViRnJhbWUgdG8gd2hpY2ggQHdpbmRvd19vYmplY3QgYmVsb25ncwpAQCAtOTkxLDcgKzEw
NDMsNiBAQAogICAgICAqIGltcGxlbWVudGF0aW9ucyBvZiB2aXJ0dWFsIG1ldGhvZHMKICAgICAg
Ki8KICAgICB3ZWJWaWV3Q2xhc3MtPmNyZWF0ZV93ZWJfdmlldyA9IHdlYmtpdF93ZWJfdmlld19y
ZWFsX2NyZWF0ZV93ZWJfdmlldzsKLSAgICB3ZWJWaWV3Q2xhc3MtPm5hdmlnYXRpb25fcmVxdWVz
dGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQ7CiAgICAgd2Vi
Vmlld0NsYXNzLT53aW5kb3dfb2JqZWN0X2NsZWFyZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF93
aW5kb3dfb2JqZWN0X2NsZWFyZWQ7CiAgICAgd2ViVmlld0NsYXNzLT5jaG9vc2VfZmlsZSA9IHdl
YmtpdF93ZWJfdmlld19yZWFsX2Nob29zZV9maWxlOwogICAgIHdlYlZpZXdDbGFzcy0+c2NyaXB0
X2FsZXJ0ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfc2NyaXB0X2FsZXJ0OwpAQCAtMTg5Niw2ICsx
OTQ3LDI3IEBACiB9CiAKIC8qKgorICogd2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlw
ZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQG1pbWVfdHlwZTogYSBNSU1F
IHR5cGUKKyAqCisgKiBUaGlzIGZ1bmN0aW9ucyByZXR1cm5zIHdoZXRoZXIgb3Igbm90IGEgTUlN
RSB0eXBlIGNhbiBiZSBkaXNwbGF5ZWQgdXNpbmcgdGhpcyB2aWV3LgorICoKKyAqIFJldHVybiB2
YWx1ZTogYSAjZ2Jvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgTUlNRSB0eXBlIGNhbiBiZSBkaXNw
bGF5ZWQKKyAqKi8KKworZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlw
ZSAoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIG1pbWVUeXBlKQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0Up
OworICAgIAorICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Via2l0X3dlYl92aWV3X2dldF9tYWlu
X2ZyYW1lKHdlYlZpZXcpKTsKKyAgICBpZiAoRnJhbWVMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5s
b2FkZXIoKSkKKyAgICAgICAgcmV0dXJuIGxvYWRlci0+Y2FuU2hvd01JTUVUeXBlKG1pbWVUeXBl
KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBGQUxTRTsKK30KKworLyoqCiAgKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3RyYW5zcGFyZW50OgogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3
CiAgKgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAJKHLDqXZpc2lvbiAzMDc1
OCkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCShjb3BpZSBkZSB0cmF2
YWlsKQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhh
bnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODEsNiArODIsMTYg
QEAKICAgICByZXR1cm4gY2xpZW50ID8gY2xpZW50LT53ZWJWaWV3KCkgOiAwOwogfQogCitXZWJL
aXROYXZpZ2F0aW9uVHlwZSBraXQoV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgdHlwZSkKK3sKKyAg
ICByZXR1cm4gKFdlYktpdE5hdmlnYXRpb25UeXBlKXR5cGU7Cit9CisgCitXZWJDb3JlOjpOYXZp
Z2F0aW9uVHlwZSBjb3JlKFdlYktpdE5hdmlnYXRpb25UeXBlIHR5cGUpCit7CisgICAgcmV0dXJu
IChXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSl0eXBlOworfQorCiB9IC8qKiBlbmQgbmFtZXNwYWNl
IFdlYkNvcmUgKi8KIAogdm9pZCB3ZWJraXRfaW5pdCgpCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwCShyw6l2aXNpb24gMCkKKysrIFdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcAkocsOpdmlzaW9uIDApCkBA
IC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJ3
ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oIgorCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5o
IgorI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitleHRlcm4gIkMiIHsKKworR19ERUZJTkVfVFlQ
RShXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiwgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb24sIEdf
VFlQRV9PQkpFQ1QpOworCitzdHJ1Y3QgX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSB7
CisgICAgV2ViS2l0V2ViRnJhbWUqIGZyYW1lOworICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gZnJh
bWVQb2xpY3lGdW5jdGlvbjsKKyAgICBnYm9vbGVhbiBpc0NhbmNlbGxlZDsKK307CisKKyNkZWZp
bmUgV0VCS0lUX1dFQl9QT0xJQ1lfREVDSVNJT05fR0VUX1BSSVZBVEUob2JqKSAgICAoR19UWVBF
X0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lT
SU9OLCBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUpKQorCitzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3BvbGljeV9kZWNpc2lvbl9jbGFzc19pbml0KFdlYktpdFdlYlBvbGljeURlY2lzaW9u
Q2xhc3MqIGRlY2lzaW9uQ2xhc3MpCit7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGRl
Y2lzaW9uQ2xhc3MsIHNpemVvZihXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUpKTsKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25faW5pdChXZWJLaXRXZWJQ
b2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZGVjaXNpb24tPnByaXYgPSBXRUJLSVRf
V0VCX1BPTElDWV9ERUNJU0lPTl9HRVRfUFJJVkFURShkZWNpc2lvbik7Cit9CisKK1dlYktpdFdl
YlBvbGljeURlY2lzaW9uKiB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9uZXcoV2ViS2l0V2Vi
RnJhbWUqIGZyYW1lLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGZyYW1lLCBOVUxMKTsKKworICAgIFdlYktpdFdlYlBv
bGljeURlY2lzaW9uKiBkZWNpc2lvbiA9IFdFQktJVF9XRUJfUE9MSUNZX0RFQ0lTSU9OKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9OLCBOVUxMKSk7CisgICAgV2Vi
S2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7CisKKyAg
ICBwcml2LT5mcmFtZSA9IGZyYW1lOworICAgIHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24gPSBm
dW5jdGlvbjsKKyAgICBwcml2LT5pc0NhbmNlbGxlZCA9IEZBTFNFOworCisgICAgcmV0dXJuIGRl
Y2lzaW9uOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX3VzZQorICog
QGRlY2lzaW9uOiBhICNXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbgorICoKKyAqIFdpbGwgc2VuZCB0
aGUgVVNFIGRlY2lzaW9uIHRvIHRoZSBwb2xpY3kgaW1wbGVtZW50ZXIuCisgKi8KK3ZvaWQgd2Vi
a2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNp
c2lvbikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfUE9MSUNZX0RFQ0lT
SU9OKGRlY2lzaW9uKSk7CisKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHBy
aXYgPSBkZWNpc2lvbi0+cHJpdjsKKworICAgIGlmICghcHJpdi0+aXNDYW5jZWxsZWQpCisgICAg
ICAgIChjb3JlKHByaXYtPmZyYW1lKS0+bG9hZGVyKCktPioocHJpdi0+ZnJhbWVQb2xpY3lGdW5j
dGlvbikpKFdlYkNvcmU6OlBvbGljeVVzZSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9wb2xp
Y3lfZGVjaXNpb25faWdub3JlCisgKiBAZGVjaXNpb246IGEgI1dlYktpdFdlYlBvbGljeURlY2lz
aW9uCisgKgorICogV2lsbCBzZW5kIHRoZSBJR05PUkUgZGVjaXNpb24gdG8gdGhlIHBvbGljeSBp
bXBsZW1lbnRlci4KKyAqLwordm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9pZ25vcmUo
V2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKworICAgIFdlYktp
dFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSogcHJpdiA9IGRlY2lzaW9uLT5wcml2OworICAgIAor
ICAgIGlmICghcHJpdi0+aXNDYW5jZWxsZWQpCisgICAgICAgIChjb3JlKHByaXYtPmZyYW1lKS0+
bG9hZGVyKCktPioocHJpdi0+ZnJhbWVQb2xpY3lGdW5jdGlvbikpKFdlYkNvcmU6OlBvbGljeUln
bm9yZSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQK
KyAqIEBkZWNpc2lvbjogYSAjV2ViS2l0V2ViUG9saWN5RGVjaXNpb24KKyAqCisgKiBXaWxsIHNl
bmQgdGhlIERPV05MT0FEIGRlY2lzaW9uIHRvIHRoZSBwb2xpY3kgaW1wbGVtZW50ZXIuCisgKi8K
K3ZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQoV2ViS2l0V2ViUG9saWN5
RGVjaXNpb24qIGRlY2lzaW9uKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKworICAgIFdlYktpdFdlYlBvbGljeURlY2lz
aW9uUHJpdmF0ZSogcHJpdiA9IGRlY2lzaW9uLT5wcml2OworICAgIAorICAgIGlmICghcHJpdi0+
aXNDYW5jZWxsZWQpCisgICAgICAgIChjb3JlKHByaXYtPmZyYW1lKS0+bG9hZGVyKCktPioocHJp
di0+ZnJhbWVQb2xpY3lGdW5jdGlvbikpKFdlYkNvcmU6OlBvbGljeURvd25sb2FkKTsKK30KKwor
dm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9jYW5jZWwoV2ViS2l0V2ViUG9saWN5RGVj
aXNpb24qIGRlY2lzaW9uKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9Q
T0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9u
UHJpdmF0ZSogcHJpdiA9IGRlY2lzaW9uLT5wcml2OworICAgIAorICAgIHByaXYtPmlzQ2FuY2Vs
bGVkID0gVFJVRTsKK30KKworfQorCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCShy
w6l2aXNpb24gMzA3NTgpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgJKGNv
cGllIGRlIHRyYXZhaWwpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
NyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4
IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFi
b3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTUy
LDYgKzUzLDI1IEBACiAgICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQgPSAtIDIK
IH0gV2ViS2l0V2ViVmlld1RhcmdldEluZm87CiAKK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lU
X0FDVElPTl9OQVZJR0FUSU9OX1RZUEUsCisgICAgV0VCS0lUX0FDVElPTl9FTEVNRU5ULAorICAg
IFdFQktJVF9BQ1RJT05fQlVUVE9OLAorICAgIFdFQktJVF9BQ1RJT05fTU9ESUZJRVJfRkxBR1Ms
CisgICAgV0VCS0lUX0FDVElPTl9PUklHSU5BTF9VUkwKK30gV2ViS2l0QWN0aW9uS2V5OworCisv
LyBUaGUgb3JkZXIgb2YgdGhpcyBlbnVtIG11c3QgYmUgdGhlIHNhbWUgYXMgTmF2aWdhdGlvblR5
cGUgaW4gRnJhbWVMb2FkZXJUeXBlcy5oCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9OQVZJ
R0FUSU9OX1RZUEVfTElOS19DTElDS0VELAorICAgIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfRk9S
TV9TVUJNSVRURUQsCisgICAgV0VCS0lUX05BVklHQVRJT05fVFlQRV9CQUNLX0ZPUldBUkQsCisg
ICAgV0VCS0lUX05BVklHQVRJT05fVFlQRV9SRUxPQUQsCisgICAgV0VCS0lUX05BVklHQVRJT05f
VFlQRV9GT1JNX1JFU1VCTUlUVEVELAorICAgIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfT1RIRVIs
ICAgIAorICAgIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfUExVR19JTl9SRVFVRVNUCit9IFdlYktp
dE5hdmlnYXRpb25UeXBlOworCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIEd0a0NvbnRh
aW5lciBwYXJlbnRfaW5zdGFuY2U7CiAKQEAgLTY5LDExICs4OSw2IEBACiAgICAgICovCiAgICAg
V2ViS2l0V2ViVmlldyogICgqY3JlYXRlX3dlYl92aWV3KSAgKFdlYktpdFdlYlZpZXcqIHdlYl92
aWV3KTsKIAotICAgIC8qCi0gICAgICogVE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhpbmcgbGlr
ZSBXZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyX1Byb3RvY29sIGluc3RlYWQKLSAgICAgKi8KLSAg
ICBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2UgKCpuYXZpZ2F0aW9uX3JlcXVlc3RlZCkgKFdlYktp
dFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdE5ldHdvcmtS
ZXF1ZXN0KiByZXF1ZXN0KTsKLQogICAgIHZvaWQgKCp3aW5kb3dfb2JqZWN0X2NsZWFyZWQpIChX
ZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBKU0dsb2JhbENv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgd2luZG93X29iamVjdCk7CiAgICAgZ2NoYXIq
ICAgKCpjaG9vc2VfZmlsZSkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFt
ZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBvbGRfZmlsZSk7CiAgICAgZ2Jvb2xlYW4gKCpzY3JpcHRf
YWxlcnQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBj
b25zdCBnY2hhciogYWxlcnRfbWVzc2FnZSk7CkBAIC0yMTIsNiArMjI3LDkgQEAKIHdlYmtpdF93
ZWJfdmlld19nb19iYWNrd2FyZCAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwogCiBXRUJLSVRf
QVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlIChXZWJLaXRX
ZWJWaWV3KiB3ZWJfdmlldywgY29uc3QgZ2NoYXIqIG1pbWVfdHlwZSk7CisKK1dFQktJVF9BUEkg
Z2Jvb2xlYW4KIHdlYmtpdF93ZWJfdmlld19nZXRfdHJhbnNwYXJlbnQgKFdlYktpdFdlYlZpZXcq
IHdlYl92aWV3KTsKIAogV0VCS0lUX0FQSSB2b2lkCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRwcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJp
dmF0ZS5oCShyw6l2aXNpb24gMzA3NTgpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2
YXRlLmgJKGNvcGllIGRlIHRyYXZhaWwpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogQ29weXJpZmh0
IChDKSAyMDA4IEphbiBNaWNoYWVsIEMuIEFsb256bworICogQ29weXJpZ2h0IChDKSAyMDA4IENv
bGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yOSw2ICszMCw3IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KICNpbmNs
dWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJm
cmFtZS5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oPgogI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJr
aXRuZXR3b3JrcmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2Fy
ZGxpc3QuaD4KQEAgLTU1LDYgKzU3LDkgQEAKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSoga2l0
KFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7CiAKICAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Qq
IGNvcmUoV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0Kik7CisKKyAgICBXZWJLaXROYXZpZ2F0aW9u
VHlwZSBraXQoV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgdHlwZSk7CisgICAgV2ViQ29yZTo6TmF2
aWdhdGlvblR5cGUgY29yZShXZWJLaXROYXZpZ2F0aW9uVHlwZSB0eXBlKTsKIH0KIAogZXh0ZXJu
ICJDIiB7CkBAIC0xMTIsNiArMTE3LDEwIEBACiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qCiAg
ICAgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9pdGVtKFdlYkNvcmU6Okhp
c3RvcnlJdGVtKik7CiAKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogd2Via2l0X3dlYl9w
b2xpY3lfZGVjaXNpb25fbmV3IChXZWJLaXRXZWJGcmFtZSosIFdlYkNvcmU6OkZyYW1lUG9saWN5
RnVuY3Rpb24pOworCisgICAgdm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9jYW5jZWwg
KFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbik7CisKICAgICAvLyBGSVhNRTogTW92
ZSB0aGVzZSB0byB3ZWJraXR3ZWJmcmFtZS5oIG9uY2UgdGhlaXIgQVBJIGhhcyBiZWVuIGRpc2N1
c3NlZC4KIAogICAgIFdFQktJVF9BUEkgR1NMaXN0KgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2VicG9saWN5ZGVjaXNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oCShyw6l2aXNpb24gMCkKKysrIFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgJKHLDqXZpc2lvbiAwKQpAQCAtMCwwICsx
LDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaWZuZGVmIFdFQktJVF9XRUJfUE9MSUNZX0RFQ0lTSU9OX0gKKyNkZWZp
bmUgV0VCS0lUX1dFQl9QT0xJQ1lfREVDSVNJT05fSAorCisjaW5jbHVkZSA8Y29uZmlnLmg+CisK
KyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUg
IndlYmtpdGRlZmluZXMuaCIKKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBF
X1dFQl9QT0xJQ1lfREVDSVNJT04gICAgICAgICAgICAod2Via2l0X3dlYl9wb2xpY3lfZGVjaXNp
b25fZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9QT0xJQ1lfREVDSVNJT04ob2JqKSAg
ICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVf
V0VCX1BPTElDWV9ERUNJU0lPTiwgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24pKQorI2RlZmluZSBX
RUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19D
TEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9OLCBXZWJL
aXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9QT0xJQ1lf
REVDSVNJT04ob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwg
V0VCS0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJU0lPTikpCisjZGVmaW5lIFdFQktJVF9JU19XRUJf
UE9MSUNZX0RFQ0lTSU9OX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGts
YXNzKSwgIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04pKQorI2RlZmluZSBXRUJLSVRf
V0VCX1BPTElDWV9ERUNJU0lPTl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRf
Q0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9OLCBXZWJLaXRXZWJQ
b2xpY3lEZWNpc2lvbkNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlBvbGljeURl
Y2lzaW9uUHJpdmF0ZSBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGU7CitzdHJ1Y3QgX1dl
YktpdFdlYlBvbGljeURlY2lzaW9uIHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKyAgICBXZWJLaXRX
ZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlBv
bGljeURlY2lzaW9uQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnQ7Cit9OworCitXRUJL
SVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9nZXRfdHlwZSAodm9pZCk7
CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlIChXZWJL
aXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtp
dF93ZWJfcG9saWN5X2RlY2lzaW9uX2lnbm9yZSAoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRl
Y2lzaW9uKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9k
b3dubG9hZCAoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCShyw6l2aXNpb24g
MzA3NTgpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgJKGNvcGllIGRlIHRy
YXZhaWwpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIg
SGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Miw2ICs1Myw5
IEBACiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWUgV2ViS2l0V2ViRnJhbWU7CiB0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVDbGFzcyBXZWJLaXRXZWJGcmFtZUNsYXNzOwogCit0
eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb24gV2ViS2l0V2ViUG9saWN5RGVj
aXNpb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25DbGFzcyBXZWJL
aXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzOworCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0
dGluZ3MgV2ViS2l0V2ViU2V0dGluZ3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGlu
Z3NDbGFzcyBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzOwogCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAkocsOp
dmlzaW9uIDMwNzU4KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgJKGNvcGllIGRlIHRy
YXZhaWwpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9r
ZXIgPGFscEBhdG9rZXIuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNyw1ICsyOCw2
IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmg+
CiAKICNlbmRpZiAvKiBfX1dFQktJVF9IX18gKi8KSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyw6l2aXNpb24gMzA3NjApCisr
KyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTEsMyArMSw0OCBA
QAorMjAwOC0wMy0wNCAgUGllcnJlLUx1YyBCZWF1ZG9pbiAgPHBpZXJyZS1sdWMuYmVhdWRvaW5A
Y29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgaW1wbGVtZW50cyB0aGUgZGVsZWdhdGVzIG1ldGhvZHMgb2YgV2ViUG9s
aWN5RGVsZWdhdGUuCisgICAgICAgIFNpbmNlIEd0aysvQyBkb2Vzbid0IGhhdmUgZGVsZWdhdGUg
bWV0aG9kcywgSSByZXBsYWNlZCB0aGVtIHdpdGggc2lnbmFscy4gIAorICAgICAgICBBbHNvLCBz
aW5jZSBXZWJQb2xpY3lEZWxlZ2F0ZSBvbmx5IGhhcyAzIGRlbGVnYXRlLCBJIGFkZGVkIHRoZW0g
dG8gV2ViVmlldyAKKyAgICAgICAgaW5zdGVhZCBvZiBjcmVhdGluZyBuZXcgR09iamVjdCB3aXRo
IG9ubHkgMyBzaWduYWxzLiAgCisKKyAgICAgICAgQSBuZXcgb2JqZWN0IFdlYktpdFdlYlBvbGlj
eURlY2lzaW9uIGFsbG93IHRoZSBicm93c2VyIHRvIGRlbGF5IGl0cyByZXNwb25zZQorICAgICAg
ICBpbiBjZXJ0YWluIGNhc2VzLiAgQXMgY29tbWVudGVkIGluIFdlYkNvcmUsIHJlZGlyZWN0aW9u
IG5hdmlnYXRpb24gcmVxdWVzdHMgYXJlCisgICAgICAgIG9uZSBjYXNlIHdoZXJlIGEgcmVzcG9u
c2UgaXMgcmVxdWlyZWQgdG8gYmUgc3luYyAoaWUuIGRlY2lzaW9uIG11c3QgYmUgc2VudCAKKyAg
ICAgICAgYmVmb3JlIHRoZSBlbmQgb2Ygc2lnbmFsKS4gIElmIGEgZGVjaXNpb24gY29tZSBpbiBs
YXRlLCBhc3NlcnRpb25zIGNvdWxkIGhhcHBlbi4KKyAgICAgICAgT25seSBvbmUgcG9saWN5IGRl
Y2lzaW9uIHNob3VsZCBiZSBwZW5kaW5nIHdpdGggdGhpcyBpbXBsZW1lbnRhdGlvbi4gIEFnYWlu
LAorICAgICAgICB0aGlzIHNlZW1zIHRvIGJlIGEgbGltaXRhdGlvbiBpbiBXZWJDb3JlLgorCisg
ICAgICAgIEkgY29waWVkIHRoZSBkZWZhdWx0IGJlaGF2aW9ycyBkZXNjcmliZWQgaW4gV2ViUG9s
aWN5RGVsZWdhdGUgb24gdGhlIE1hYyBwb3J0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudDo6RnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudDo6Y2FuY2VsUG9saWN5Q2hlY2spOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudDo6Y2FuU2hvd01JTUVUeXBlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXQtbWFyc2hhbC5saXN0Ogor
ICAgICAgICAqIHdlYmtpdC93ZWJraXQuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0ZGVmaW5l
cy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6a2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAgICogd2Via2l0L3dlYmtp
dHByaXZhdGUuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGU6OndlYmtp
dF93ZWJfcG9saWN5X2RlY2lzaW9uX2NsYXNzX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYlBv
bGljeURlY2lzaW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25faW5pdCk6Cisg
ICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGlj
eV9kZWNpc2lvbl9uZXcpOgorICAgICAgICAoX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0
ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlKToKKyAgICAgICAgKF9XZWJLaXRXZWJQ
b2xpY3lEZWNpc2lvblByaXZhdGU6OndlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2lnbm9yZSk6
CisgICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3Bv
bGljeV9kZWNpc2lvbl9kb3dubG9hZCk6CisgICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVjaXNp
b25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9jYW5jZWwpOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuaDoK
KwogMjAwOC0wMy0wMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEdU
SysgYnVpbGQgZml4LgpJbmRleDogQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENoYW5nZUxvZwko
csOpdmlzaW9uIDMwNzYwKQorKysgQ2hhbmdlTG9nCShjb3BpZSBkZSB0cmF2YWlsKQpAQCAtMSwz
ICsxLDExIEBACisyMDA4LTAzLTA0ICBQaWVycmUtTHVjIEJlYXVkb2luICA8cGllcnJlLWx1Yy5i
ZWF1ZG9pbkBjb2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHdlYmtpdHdlYnBvbGljeWRlY2lzaW9uLiogdG8gdGhlIGJ1
aWxkLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKIDIwMDgtMDMtMDMgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxwIFRv
a2VyLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21001</attachid>
            <date>2008-05-07 11:01:19 -0700</date>
            <delta_ts>2008-05-22 04:24:06 -0700</delta_ts>
            <desc>Implement WebPolicyDelegate methods</desc>
            <filename>policy-implementation.patch</filename>
            <type>text/plain</type>
            <size>31687</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlYzNmMWUyLi45NjI0MzQ0
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMDgtMDUtMDcgIE1hcmNvIEJhcmlzaW9uZSAgPG1hcmNvQGJhcmlzaW9uZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NjIKKyAgICAgICAgW2d0a10gSW1wbGVtZW50
IFdlYlBvbGljeURlbGVnYXRlIG1ldGhvZHMKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBB
ZGQgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaCBhbmQKKwlXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHAKKwogMjAwOC0wNS0wMiAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE1hcmsuCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDcyNWM3OWQuLjcyNDA0MTkgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dO
VW1ha2VmaWxlLmFtCkBAIC0yOTQsNiArMjk0LDcgQEAgd2Via2l0Z3RrX2hfYXBpICs9IFwKIAlX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuaCBcCiAJV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
aGlzdG9yeWl0ZW0uaCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNp
b24uaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaCBcCiAJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCiAKQEAgLTMxNyw2ICszMTgsNyBAQCB3ZWJraXRn
dGtfc291cmNlcyArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRs
aXN0LmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIFwKIAlXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAgXAorCVdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vic2V0dGluZ3MuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIFwKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5k
ZXggOWZlM2Y3MC4uOWQ4NDc4YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAwOC0wNC0wNyAgTWFy
Y28gQmFyaXNpb25lIDxtYXJjby5iYXJpc2lvbmVAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTYyCisgICAgICAgIFtndGtdIEltcGxlbWVudCBXZWJQ
b2xpY3lEZWxlZ2F0ZSBtZXRob2RzCisKKyAgICAgICAgT3JpZ2luYWwgd29yayBieSBQaWVycmUt
THVjIEJlYXVkb2luLgorCisgICAgICAgIFRoaXMgaW1wbGVtZW50cyB0aGUgZGVsZWdhdGVzIG1l
dGhvZHMgb2YgV2ViUG9saWN5RGVsZWdhdGUuCisgICAgICAgIFNpbmNlIEd0aysvQyBkb2Vzbid0
IGhhdmUgZGVsZWdhdGUgbWV0aG9kcywgSSByZXBsYWNlZCB0aGVtIHdpdGgKKyAgICAgICAgc2ln
bmFscy4gQWxzbywgc2luY2UgV2ViUG9saWN5RGVsZWdhdGUgb25seSBoYXMgMyBkZWxlZ2F0ZSwg
SSBhZGRlZAorICAgICAgICB0aGVtIHRvIHRoZSBXZWJWaWV3IGluc3RlYWQgb2YgY3JlYXRpbmcg
bmV3IEdPYmplY3Qgd2l0aCBvbmx5IDMKKyAgICAgICAgc2lnbmFscy4KKworICAgICAgICBBIG5l
dyBvYmplY3QgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24gYWxsb3cgdGhlIGJyb3dzZXIgdG8gZGVs
YXkgaXRzCisgICAgICAgIHJlc3BvbnNlIGluIGNlcnRhaW4gY2FzZXMuICBBcyBjb21tZW50ZWQg
aW4gV2ViQ29yZSwgcmVkaXJlY3Rpb24KKyAgICAgICAgbmF2aWdhdGlvbiByZXF1ZXN0cyBhcmUg
b25lIGNhc2Ugd2hlcmUgYSByZXNwb25zZSBpcyByZXF1aXJlZCB0byBiZQorICAgICAgICBzeW5j
IChpZS4gZGVjaXNpb24gbXVzdCBiZSBzZW50IGJlZm9yZSB0aGUgZW5kIG9mIHNpZ25hbCkuICBJ
ZiBhCisgICAgICAgIGRlY2lzaW9uIGNvbWUgaW4gbGF0ZSwgYXNzZXJ0aW9ucyBjb3VsZCBoYXBw
ZW4uCisgICAgICAgIE9ubHkgb25lIHBvbGljeSBkZWNpc2lvbiBzaG91bGQgYmUgcGVuZGluZyB3
aXRoIHRoaXMgaW1wbGVtZW50YXRpb24uCisgICAgICAgIEFnYWluIHRoaXMgc2VlbXMgdG8gYmUg
YSBsaW1pdGF0aW9uIGluIFdlYkNvcmUuCisKKyAgICAgICAgSSBjb3BpZWQgdGhlIGRlZmF1bHQg
YmVoYXZpb3VycyBkZXNjcmliZWQgaW4gV2ViUG9saWN5RGVsZWdhdGUgb24gdGhlCisgICAgICAg
IE1hYyBwb3J0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6RnJhbWVMb2FkZXJD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JNSU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5
Q2hlY2spOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVU
eXBlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgor
ICAgICAgICAqIHdlYmtpdC93ZWJraXQtbWFyc2hhbC5saXN0OgorICAgICAgICAqIHdlYmtpdC93
ZWJraXQuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0ZGVmaW5lcy5oOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXRwcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6a2l0KToKKyAgICAgICAg
KFdlYktpdDo6Y29yZSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHByaXZhdGUuaDoKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAg
KF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGU6OndlYmtpdF93ZWJfcG9saWN5X2RlY2lz
aW9uX2NsYXNzX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0
ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25faW5pdCk6CisgICAgICAgIChfV2ViS2l0V2Vi
UG9saWN5RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9uZXcpOgor
ICAgICAgICAoX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9wb2xp
Y3lfZGVjaXNpb25fdXNlKToKKyAgICAgICAgKF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZh
dGU6OndlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2lnbm9yZSk6CisgICAgICAgIChfV2ViS2l0
V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9kb3du
bG9hZCk6CisgICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRf
d2ViX3BvbGljeV9kZWNpc2lvbl9jYW5jZWwpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJw
b2xpY3lkZWNpc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5j
cHA6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuaDoKKwogMjAwOC0wNS0wNiAgQ2hy
aXN0aWFuIER5d2FuICA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4KIAogICAgICAgICBSdWJiZXIg
c3RhbXBlZCBieSBBbHAuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IDRiNzQ2ZjUuLmJkNTNiYWUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC00NCw2
ICs0NCw3IEBACiAjaW5jbHVkZSAia2pzX3Byb3h5LmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmll
dy5oIgogI2luY2x1ZGUgIndlYmtpdHdlYmZyYW1lLmgiCisjaW5jbHVkZSAid2Via2l0d2VicG9s
aWN5ZGVjaXNpb24uaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCiAKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CkBAIC02MCw2ICs2MSw3IEBAIEZyYW1lTG9hZGVyQ2xp
ZW50OjpGcmFtZUxvYWRlckNsaWVudChXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiAgICAgOiBtX2Zy
YW1lKGZyYW1lKQogICAgICwgbV9wbHVnaW5WaWV3KDApCiAgICAgLCBtX3VzZXJBZ2VudCgiIikK
KyAgICAsIG1fcG9saWN5RGVjaXNpb24oTlVMTCkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CiB9
CkBAIC0yNDIsMjMgKzI0NCw2MyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbgogICAgIG1fcmVz
cG9uc2UgPSByZXNwb25zZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9u
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQordm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0
aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byBj
YWxsIGRpcmVjdGx5IGhlcmUgKGNvbW1lbnQgY29waWVkIGZyb20gUXQgdmVyc2lvbikKICAgICBB
U1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9saWN5RnVuY3Rpb24pCiAgICAgICAg
IHJldHVybjsKLSAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbiko
UG9saWN5VXNlKTsKKworICAgIFdlYktpdFdlYlZpZXcqIHBhZ2UgPSBnZXRWaWV3RnJvbUZyYW1l
KG1fZnJhbWUpOworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25l
dHdvcmtfcmVxdWVzdF9uZXcocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBwb2xpY3lEZWNpc2lvbiA9IHdl
YmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX25ldyhtX2ZyYW1lLCBwb2xpY3lGdW5jdGlvbik7Cisg
ICAgbV9wb2xpY3lEZWNpc2lvbiA9IHBvbGljeURlY2lzaW9uOworCisgICAgZ2Jvb2xlYW4gaXNI
YW5kbGVkID0gZmFsc2U7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHBhZ2UsICJtaW1lLXR5
cGUtcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3QsIG1pbWVUeXBl
LnV0ZjgoKS5kYXRhKCksIHBvbGljeURlY2lzaW9uLCAmaXNIYW5kbGVkKTsKKworICAgIGdfb2Jq
ZWN0X3VucmVmKHJlcXVlc3QpOworCisgICAgaWYgKGlzSGFuZGxlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgUG9saWN5QWN0aW9uIHBvbGljeVJlc3VsdDsKKworICAgIGlmIChyZXNvdXJjZVJl
cXVlc3QudXJsKCkuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcG9saWN5UmVzdWx0ID0gUG9saWN5
VXNlOworICAgIGVsc2UgaWYgKGNhblNob3dNSU1FVHlwZShtaW1lVHlwZSkpCisgICAgICAgIHBv
bGljeVJlc3VsdCA9IFBvbGljeVVzZTsKKyAgICBlbHNlCisgICAgICAgIHBvbGljeVJlc3VsdCA9
IFBvbGljeUlnbm9yZTsKKworICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1
bmN0aW9uKShwb2xpY3lSZXN1bHQpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIHBv
bGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVu
Y3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcykKIHsKICAgICBBU1NFUlQocG9s
aWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9saWN5RnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsK
LSAgICAvLyBGSVhNRTogSSB0aGluayBRdCB2ZXJzaW9uIG1hcnNoYWxzIHRoaXMgdG8gYW5vdGhl
ciB0aHJlYWQgc28gd2hlbiB3ZQotICAgIC8vIGhhdmUgbXVsdGktdGhyZWFkZWQgZG93bmxvYWQs
IHdlIG1pZ2h0IG5lZWQgdG8gZG8gdGhlIHNhbWUKLSAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVy
KCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKKworICAgIFdlYktpdFdlYlZpZXcq
IHBhZ2UgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOworICAgIFdlYktpdE5ldHdvcmtSZXF1
ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcocmVzb3VyY2VSZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIFdlYktpdFdlYlBvbGljeURlY2lz
aW9uKiBwb2xpY3lEZWNpc2lvbiA9IHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX25ldyhtX2Zy
YW1lLCBwb2xpY3lGdW5jdGlvbik7CisgICAgbV9wb2xpY3lEZWNpc2lvbiA9IHBvbGljeURlY2lz
aW9uOworCisgICAgV2ViS2l0TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUgPSBraXQoYWN0
aW9uLnR5cGUoKSk7CisKKyAgICBHSGFzaFRhYmxlICogYWN0aW9uSW5mb3JtYXRpb24gPSBnX2hh
c2hfdGFibGVfbmV3KE5VTEwsIE5VTEwpOworICAgIGdfaGFzaF90YWJsZV9pbnNlcnQoYWN0aW9u
SW5mb3JtYXRpb24sICh2b2lkKilXRUJLSVRfQUNUSU9OX05BVklHQVRJT05fVFlQRSwgKHZvaWQq
KW5hdmlnYXRpb25UeXBlKTsKKworICAgIGdib29sZWFuIGlzSGFuZGxlZCA9IGZhbHNlOworICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZShwYWdlLCAibmV3LXdpbmRvdy1yZXF1ZXN0ZWQiLCBtX2Zy
YW1lLCByZXF1ZXN0LCBhY3Rpb25JbmZvcm1hdGlvbiwgcG9saWN5RGVjaXNpb24sICZpc0hhbmRs
ZWQpOworCisgICAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3koYWN0aW9uSW5mb3JtYXRpb24pOworICAg
IGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOworCisgICAgaWYgKGlzSGFuZGxlZCkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0
aW9uKShQb2xpY3lVc2UpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lG
dW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCkKQEAgLTI2OSwxNyArMzExLDI0IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFt
ZVBvbGljeUZ1bmN0CiAKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21G
cmFtZShtX2ZyYW1lKTsKICAgICBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtp
dF9uZXR3b3JrX3JlcXVlc3RfbmV3KHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2UgcmVzcG9uc2U7CisgICAg
V2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIHBvbGljeURlY2lzaW9uID0gd2Via2l0X3dlYl9wb2xp
Y3lfZGVjaXNpb25fbmV3KG1fZnJhbWUsIHBvbGljeUZ1bmN0aW9uKTsKKyAgICBtX3BvbGljeURl
Y2lzaW9uID0gcG9saWN5RGVjaXNpb247CisKKyAgICBXZWJLaXROYXZpZ2F0aW9uVHlwZSBuYXZp
Z2F0aW9uVHlwZSA9IGtpdChhY3Rpb24udHlwZSgpKTsKIAotICAgIGdfc2lnbmFsX2VtaXRfYnlf
bmFtZSh3ZWJWaWV3LCAibmF2aWdhdGlvbi1yZXF1ZXN0ZWQiLCBtX2ZyYW1lLCByZXF1ZXN0LCAm
cmVzcG9uc2UpOworICAgIEdIYXNoVGFibGUgKiBhY3Rpb25JbmZvcm1hdGlvbiA9IGdfaGFzaF90
YWJsZV9uZXcoTlVMTCwgTlVMTCk7CisgICAgZ19oYXNoX3RhYmxlX2luc2VydChhY3Rpb25JbmZv
cm1hdGlvbiwgKHZvaWQqKVdFQktJVF9BQ1RJT05fTkFWSUdBVElPTl9UWVBFLCAodm9pZCopbmF2
aWdhdGlvblR5cGUpOwogCisgICAgZ2Jvb2xlYW4gaXNIYW5kbGVkID0gZmFsc2U7CisgICAgZ19z
aWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJuYXZpZ2F0aW9uLXJlcXVlc3RlZCIsIG1fZnJh
bWUsIHJlcXVlc3QsIGFjdGlvbkluZm9ybWF0aW9uLCBwb2xpY3lEZWNpc2lvbiwgJmlzSGFuZGxl
ZCk7CisKKyAgICBnX2hhc2hfdGFibGVfZGVzdHJveShhY3Rpb25JbmZvcm1hdGlvbik7CiAgICAg
Z19vYmplY3RfdW5yZWYocmVxdWVzdCk7CiAKLSAgICBpZiAocmVzcG9uc2UgPT0gV0VCS0lUX05B
VklHQVRJT05fUkVTUE9OU0VfSUdOT1JFKSB7Ci0gICAgICAgIChjb3JlKG1fZnJhbWUpLT5sb2Fk
ZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lJZ25vcmUpOworICAgIGlmIChpc0hhbmRsZWQp
CiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKKyAgICAvLyBGSVhNRSBJbXBsZW1lbnQgZGVmYXVs
dCBiZWhhdmlvciB3aGVuIHdlIGNhbiBxdWVyeSB0aGUgYmFja2VuZCB3aGF0IHByb3RvY29scyBp
dCBzdXBwb3J0cwogICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9u
KShQb2xpY3lVc2UpOwogfQogCkBAIC01NjQsNyArNjEzLDkgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hTaG93KCkKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9s
aWN5Q2hlY2soKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgLy9GSVhNRSBBZGQgc3Vw
cG9ydCBmb3IgbW9yZSB0aGFuIG9uZSBwb2xpY3kgZGVjaXNpb24gYXQgb25jZQorICAgIGlmICht
X3BvbGljeURlY2lzaW9uKQorICAgICAgICB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9jYW5j
ZWwobV9wb2xpY3lEZWNpc2lvbik7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkTG9hZE1haW5SZXNvdXJjZShEb2N1bWVudExvYWRlciopCkBAIC01OTMsMTAgKzY0NCwx
MCBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdAorYm9vbCBGcmFt
ZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUodHlwZSkgfHwgTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKHR5cGUpIHx8CisgICAgICAg
IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCktPmlzTUlNRVR5cGVSZWdpc3RlcmVk
KHR5cGUpOwogfQogCiBib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpyZXByZXNlbnRhdGlvbkV4aXN0
c0ZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCmluZGV4IGYyZGM2OTYuLmM3ZTY1MDQg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCisjaW5j
bHVkZSAid2Via2l0d2VicG9saWN5ZGVjaXNpb24uaCIKIAogdHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFdlYkZyYW1lIFdlYktpdFdlYkZyYW1lOwogCkBAIC0xNzIsNiArMTczLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAgICAgICAgIFdlYktpdFdlYkZyYW1lKiBtX2ZyYW1lOwogICAgICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgICAgIFdlYkNvcmU6OlN0cmlu
ZyBtX3VzZXJBZ2VudDsKKyAgICAgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIG1fcG9saWN5
RGVjaXNpb247CiAKICAgICAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJlY3QgZGF0YSB0bwog
ICAgICAgICBXZWJDb3JlOjpQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQtbWFyc2hhbC5saXN0IGIvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0LW1hcnNoYWwubGlzdAppbmRleCBhOGYyNDUzLi5hNDk4MmJiIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQtbWFyc2hhbC5saXN0CisrKyBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdC1tYXJzaGFsLmxpc3QKQEAgLTksNCArOSw1IEBAIEJPT0xFQU46U1RSSU5HLElO
VCxTVFJJTkcKIEJPT0xFQU46T0JKRUNULFNUUklORwogQk9PTEVBTjpPQkpFQ1QsU1RSSU5HLEJP
T0xFQU4KIEJPT0xFQU46T0JKRUNULFNUUklORyxTVFJJTkcsU1RSSU5HCi1JTlQ6T0JKRUNULE9C
SkVDVAorQk9PTEVBTjpPQkpFQ1QsT0JKRUNULFNUUklORyxPQkpFQ1QKK0JPT0xFQU46T0JKRUNU
LE9CSkVDVCxCT1hFRCxPQkpFQ1QKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dC5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKaW5kZXggYmFiZDUwYS4uZDcwNjIxYSAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKKysrIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3
IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFi
b3JhIEx0ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjcsNSArMjgsNiBAQAogI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tm
b3J3YXJkbGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oPgor
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oPgogCiAjZW5kaWYgLyog
X19XRUJLSVRfSF9fICovCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZp
bmVzLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKaW5kZXggMzg2YzNlMS4u
OTY5OTc0MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCisr
KyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaApAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01
Miw2ICs1Myw5IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJIaXN0b3J5SXRlbUNsYXNzIFdl
YktpdFdlYkhpc3RvcnlJdGVtQ2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWUg
V2ViS2l0V2ViRnJhbWU7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVDbGFzcyBXZWJL
aXRXZWJGcmFtZUNsYXNzOwogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNp
b24gV2ViS2l0V2ViUG9saWN5RGVjaXNpb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9s
aWN5RGVjaXNpb25DbGFzcyBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzOworCiB0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3MgV2ViS2l0V2ViU2V0dGluZ3M7CiB0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzOwogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcCBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCmluZGV4IGJlYTFhZDYuLmVlZWQ1ZGIgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCisrKyBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChD
KSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTgzLDYgKzg0LDE2
IEBAIFdlYktpdFdlYlZpZXcqIGtpdChXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSkKICAgICByZXR1
cm4gY2xpZW50ID8gY2xpZW50LT53ZWJWaWV3KCkgOiAwOwogfQogCitXZWJLaXROYXZpZ2F0aW9u
VHlwZSBraXQoV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gKFdl
YktpdE5hdmlnYXRpb25UeXBlKXR5cGU7Cit9CisgCitXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSBj
b3JlKFdlYktpdE5hdmlnYXRpb25UeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIChXZWJDb3JlOjpO
YXZpZ2F0aW9uVHlwZSl0eXBlOworfQorCiB9IC8qKiBlbmQgbmFtZXNwYWNlIFdlYkNvcmUgKi8K
IAogdm9pZCB3ZWJraXRfaW5pdCgpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKaW5kZXggMWQ4
MjU3OC4uYjA0MDAyNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAtMSw2ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJl
eXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAwOCBKYW4gTWljaGFlbCBDLiBBbG9uem8KKyAqIENv
cHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0y
OSw2ICszMCw3IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KICNpbmNsdWRl
IDx3ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFt
ZS5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oPgogI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3
ZWJiYWNrZm9yd2FyZGxpc3QuaD4KIApAQCAtNTQsNiArNTYsOSBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSoga2l0KFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7
CiAKICAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGNvcmUoV2ViS2l0V2ViQmFja0Zvcndh
cmRMaXN0Kik7CisKKyAgICBXZWJLaXROYXZpZ2F0aW9uVHlwZSBraXQoV2ViQ29yZTo6TmF2aWdh
dGlvblR5cGUgdHlwZSk7CisgICAgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgY29yZShXZWJLaXRO
YXZpZ2F0aW9uVHlwZSB0eXBlKTsKIH0KIAogZXh0ZXJuICJDIiB7CkBAIC0xMDgsNiArMTEzLDEw
IEBAIGV4dGVybiAiQyIgewogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKgogICAgIHdlYmtpdF93
ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2NvcmVfaXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSop
OwogCisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lz
aW9uX25ldyAoV2ViS2l0V2ViRnJhbWUqLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsK
KworICAgIHZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fY2FuY2VsIChXZWJLaXRXZWJQ
b2xpY3lEZWNpc2lvbiogZGVjaXNpb24pOworCiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8g
d2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWlyIEFQSSBoYXMgYmVlbiBkaXNjdXNzZWQuCiAKICAg
ICBXRUJLSVRfQVBJIEdTTGlzdCoKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnBvbGljeWRlY2lzaW9uLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGlj
eWRlY2lzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmEzMjc2
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVj
aXNpb24uY3BwCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENv
bGxhYm9yYSBMdGQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIndlYmtpdHdlYnBv
bGljeWRlY2lzaW9uLmgiCisKKyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCisjaW5jbHVk
ZSAid2Via2l0cHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK2V4dGVybiAiQyIgeworCitHX0RFRklORV9UWVBFKFdlYktpdFdl
YlBvbGljeURlY2lzaW9uLCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbiwgR19UWVBFX09CSkVD
VCk7CisKK3N0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlIHsKKyAgICBXZWJL
aXRXZWJGcmFtZSogZnJhbWU7CisgICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBmcmFtZVBvbGljeUZ1
bmN0aW9uOworICAgIGdib29sZWFuIGlzQ2FuY2VsbGVkOworfTsKKworI2RlZmluZSBXRUJLSVRf
V0VCX1BPTElDWV9ERUNJU0lPTl9HRVRfUFJJVkFURShvYmopICAgIChHX1RZUEVfSU5TVEFOQ0Vf
R0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04sIFdlYktp
dFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSkpCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfcG9s
aWN5X2RlY2lzaW9uX2NsYXNzX2luaXQoV2ViS2l0V2ViUG9saWN5RGVjaXNpb25DbGFzcyogZGVj
aXNpb25DbGFzcykKK3sKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZGVjaXNpb25DbGFz
cywgc2l6ZW9mKFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSkpOworfQorCitzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9pbml0KFdlYktpdFdlYlBvbGljeURlY2lz
aW9uKiBkZWNpc2lvbikKK3sKKyAgICBkZWNpc2lvbi0+cHJpdiA9IFdFQktJVF9XRUJfUE9MSUNZ
X0RFQ0lTSU9OX0dFVF9QUklWQVRFKGRlY2lzaW9uKTsKK30KKworV2ViS2l0V2ViUG9saWN5RGVj
aXNpb24qIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX25ldyhXZWJLaXRXZWJGcmFtZSogZnJh
bWUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoZnJhbWUsIE5VTEwpOworCisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNp
b24qIGRlY2lzaW9uID0gV0VCS0lUX1dFQl9QT0xJQ1lfREVDSVNJT04oZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04sIE5VTEwpKTsKKyAgICBXZWJLaXRXZWJQb2xp
Y3lEZWNpc2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+cHJpdjsKKworICAgIHByaXYtPmZy
YW1lID0gZnJhbWU7CisgICAgcHJpdi0+ZnJhbWVQb2xpY3lGdW5jdGlvbiA9IGZ1bmN0aW9uOwor
ICAgIHByaXYtPmlzQ2FuY2VsbGVkID0gRkFMU0U7CisKKyAgICByZXR1cm4gZGVjaXNpb247Cit9
CisKKy8qKgorICogd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlCisgKiBAZGVjaXNpb246
IGEgI1dlYktpdFdlYlBvbGljeURlY2lzaW9uCisgKgorICogV2lsbCBzZW5kIHRoZSBVU0UgZGVj
aXNpb24gdG8gdGhlIHBvbGljeSBpbXBsZW1lbnRlci4KKyAqLwordm9pZCB3ZWJraXRfd2ViX3Bv
bGljeV9kZWNpc2lvbl91c2UoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQorewor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9QT0xJQ1lfREVDSVNJT04oZGVjaXNp
b24pKTsKKworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSogcHJpdiA9IGRlY2lz
aW9uLT5wcml2OworCisgICAgaWYgKCFwcml2LT5pc0NhbmNlbGxlZCkKKyAgICAgICAgKGNvcmUo
cHJpdi0+ZnJhbWUpLT5sb2FkZXIoKS0+Kihwcml2LT5mcmFtZVBvbGljeUZ1bmN0aW9uKSkoV2Vi
Q29yZTo6UG9saWN5VXNlKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lv
bl9pZ25vcmUKKyAqIEBkZWNpc2lvbjogYSAjV2ViS2l0V2ViUG9saWN5RGVjaXNpb24KKyAqCisg
KiBXaWxsIHNlbmQgdGhlIElHTk9SRSBkZWNpc2lvbiB0byB0aGUgcG9saWN5IGltcGxlbWVudGVy
LgorICovCit2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2lnbm9yZShXZWJLaXRXZWJQ
b2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbikpOworCisgICAgV2ViS2l0V2ViUG9saWN5
RGVjaXNpb25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7CisgICAgCisgICAgaWYgKCFw
cml2LT5pc0NhbmNlbGxlZCkKKyAgICAgICAgKGNvcmUocHJpdi0+ZnJhbWUpLT5sb2FkZXIoKS0+
Kihwcml2LT5mcmFtZVBvbGljeUZ1bmN0aW9uKSkoV2ViQ29yZTo6UG9saWN5SWdub3JlKTsKK30K
KworLyoqCisgKiB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZAorICogQGRlY2lz
aW9uOiBhICNXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbgorICoKKyAqIFdpbGwgc2VuZCB0aGUgRE9X
TkxPQUQgZGVjaXNpb24gdG8gdGhlIHBvbGljeSBpbXBsZW1lbnRlci4KKyAqLwordm9pZCB3ZWJr
aXRfd2ViX3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiog
ZGVjaXNpb24pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1BPTElDWV9E
RUNJU0lPTihkZWNpc2lvbikpOworCisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRl
KiBwcml2ID0gZGVjaXNpb24tPnByaXY7CisgICAgCisgICAgaWYgKCFwcml2LT5pc0NhbmNlbGxl
ZCkKKyAgICAgICAgKGNvcmUocHJpdi0+ZnJhbWUpLT5sb2FkZXIoKS0+Kihwcml2LT5mcmFtZVBv
bGljeUZ1bmN0aW9uKSkoV2ViQ29yZTo6UG9saWN5RG93bmxvYWQpOworfQorCit2b2lkIHdlYmtp
dF93ZWJfcG9saWN5X2RlY2lzaW9uX2NhbmNlbChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVj
aXNpb24pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJ
U0lPTihkZWNpc2lvbikpOworCisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBw
cml2ID0gZGVjaXNpb24tPnByaXY7CisgICAgCisgICAgcHJpdi0+aXNDYW5jZWxsZWQgPSBUUlVF
OworfQorCit9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lk
ZWNpc2lvbi5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWMwNGFhCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaApAQCAtMCww
ICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5k
ZWYgV0VCS0lUX1dFQl9QT0xJQ1lfREVDSVNJT05fSAorI2RlZmluZSBXRUJLSVRfV0VCX1BPTElD
WV9ERUNJU0lPTl9ICisKKyNpbmNsdWRlIDxjb25maWcuaD4KKworI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSAid2Via2l0ZGVmaW5lcy5oIgor
CitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJU0lP
TiAgICAgICAgICAgICh3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9nZXRfdHlwZSgpKQorI2Rl
ZmluZSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTihvYmopICAgICAgICAgICAgKEdfVFlQRV9D
SEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9O
LCBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbikpCisjZGVmaW5lIFdFQktJVF9XRUJfUE9MSUNZX0RF
Q0lTSU9OX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwg
IFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFdlYlBvbGljeURlY2lzaW9u
Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJU0lPTihvYmopICAgICAg
ICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfUE9M
SUNZX0RFQ0lTSU9OKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9QT0xJQ1lfREVDSVNJT05fQ0xB
U1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVf
V0VCX1BPTElDWV9ERUNJU0lPTikpCisjZGVmaW5lIFdFQktJVF9XRUJfUE9MSUNZX0RFQ0lTSU9O
X0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJ
VF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFdlYlBvbGljeURlY2lzaW9uQ2xhc3Mp
KQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlIFdlYktp
dFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTsKK3N0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNp
b24geworICAgIEdPYmplY3QgcGFyZW50OworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJp
dmF0ZSogcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25DbGFzcyB7
CisgICAgR09iamVjdENsYXNzIHBhcmVudDsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtp
dF93ZWJfcG9saWN5X2RlY2lzaW9uX2dldF90eXBlICh2b2lkKTsKKworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91c2UgKFdlYktpdFdlYlBvbGljeURlY2lzaW9u
KiBkZWNpc2lvbik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9wb2xpY3lfZGVjaXNp
b25faWdub3JlIChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pOworCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkIChXZWJLaXRXZWJQ
b2xpY3lEZWNpc2lvbiogZGVjaXNpb24pOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggYmUyYzk0MC4uN2YxZGI5MSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTY2LDYgKzY2LDggQEAgZXh0ZXJuICJDIiB7CiBl
bnVtIHsKICAgICAvKiBub3JtYWwgc2lnbmFscyAqLwogICAgIE5BVklHQVRJT05fUkVRVUVTVEVE
LAorICAgIE1JTUVfVFlQRV9QT0xJQ1lfREVDSVNJT05fUkVRVUVTVEVELAorICAgIE5FV19XSU5E
T1dfUkVRVUVTVEVELAogICAgIFdJTkRPV19PQkpFQ1RfQ0xFQVJFRCwKICAgICBMT0FEX1NUQVJU
RUQsCiAgICAgTE9BRF9DT01NSVRURUQsCkBAIC01MzYsMTIgKzUzOCw2IEBAIHN0YXRpYyBXZWJL
aXRXZWJWaWV3KiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVhdGVfd2ViX3ZpZXcoV2ViS2l0V2Vi
VmlldyopCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBXZWJLaXROYXZpZ2F0aW9uUmVzcG9u
c2Ugd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQoV2ViS2l0V2ViVmll
dyosIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNF
X0FDQ0VQVDsKLX0KLQogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfd2luZG93X29i
amVjdF9jbGVhcmVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSosIEpTR2xvYmFsQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dfb2JqZWN0KQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CkBAIC03MDIsMTggKzY5OCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X3dlYl92aWV3X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKLXN0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRfbmF2aWdhdGlvbl9yZXF1ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9jYXRp
b25IaW50KiBpaGludCwgR1ZhbHVlKiByZXR1cm5BY2N1LCBjb25zdCBHVmFsdWUqIGhhbmRsZXJS
ZXR1cm4sIGdwb2ludGVyIGR1bW15KQotewotICBnYm9vbGVhbiBjb250aW51ZUVtaXNzaW9uID0g
VFJVRTsKLSAgaW50IHNpZ25hbEhhbmRsZWQgPSBnX3ZhbHVlX2dldF9pbnQoaGFuZGxlclJldHVy
bik7Ci0gIGdfdmFsdWVfc2V0X2ludChyZXR1cm5BY2N1LCBzaWduYWxIYW5kbGVkKTsKLQotICBp
ZiAoc2lnbmFsSGFuZGxlZCAhPSBXRUJLSVRfTkFWSUdBVElPTl9SRVNQT05TRV9BQ0NFUFQpCi0g
ICAgICBjb250aW51ZUVtaXNzaW9uID0gRkFMU0U7Ci0KLSAgcmV0dXJuIGNvbnRpbnVlRW1pc3Np
b247Ci19Ci0KIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdl
YlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogewogICAgIEd0a0JpbmRpbmdTZXQqIGJpbmRpbmdf
c2V0OwpAQCAtNzI0LDE1ICs3MDgsODUgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Ns
YXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICogU2lnbmFs
cwogICAgICAqLwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bmF2aWdhdGlvbi1y
ZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWdu
YWwgaXMgZW1pdHRlZAorICAgICAqIEB3ZWJfZnJhbWU6IHRoZSBmcmFtZSBvbiB3aGljaCB0aGUg
YWN0aW9uIAorICAgICAqIEByZXF1ZXN0OiBhIFdlYktpdE5ldHdvcmtSZXF1ZXN0CisgICAgICog
QGFjdGlvbl9pbmZvcm1hdGlvbjogZGVzY3JpYmVzIHRoZSBhY3Rpb24gdGhhdCB0cmlnZ2VyZWQg
dGhpcyBuYXZpZ2F0aW9uIHJlcXVlc3QsIHBvc3NpYmxlIGtleXMgYXJlIGRlZmluZWQgYnkgV2Vi
S2l0QWN0aW9uS2V5CisgICAgICogQHBvbGljeV9kZWNpc2lvbjogYSAjV2ViS2l0V2ViUG9saWN5
RGVjaXNpb24sIGFuIG9iamVjdCB0byB3aGljaCBnaXZlIHRoZSBwb2xpY3kgcmVzcG9uc2UKKyAg
ICAgKiBAcmV0dXJuOiBUUlVFIGlmIHRoZSBzaWduYWwgd2lsbCBiZSBoYW5kbGVkLCAKKyAgICAg
KiAgICAgICAgICBGQUxTRSB0byBoYXZlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFwcGx5CisgICAg
ICoKKyAgICAgKiBSb3V0ZXMgYSBuYXZpZ2F0aW9uIGFjdGlvbiBpbnRlcm5hbGx5IG9yIHRvIGFu
IGV4dGVybmFsIHZpZXdlci4KKyAgICAgKi8KICAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tO
QVZJR0FUSU9OX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoIm5hdmlnYXRpb24tcmVxdWVzdGVk
IiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCiAgICAgICAg
ICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiks
Ci0gICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgbmF2aWdh
dGlvbl9yZXF1ZXN0ZWQpLAotICAgICAgICAgICAgd2Via2l0X25hdmlnYXRpb25fcmVxdWVzdF9o
YW5kbGVkLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9y
X3RydWVfaGFuZGxlZCwKICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICB3ZWJraXRfbWFy
c2hhbF9JTlRfX09CSkVDVF9PQkpFQ1QsCi0gICAgICAgICAgICBHX1RZUEVfSU5ULCAyLAorICAg
ICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNUX09CSkVDVF9CT1hFRF9PQkpF
Q1QsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgNCwKKyAgICAgICAgICAgIEdfVFlQRV9P
QkpFQ1QsCiAgICAgICAgICAgICBHX1RZUEVfT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX0hB
U0hfVEFCTEUsCisgICAgICAgICAgICBHX1RZUEVfT0JKRUNUKTsKKworICAgIC8qKgorICAgICAq
IFdlYktpdFdlYlZpZXc6Om1pbWUtdHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkOgorICAg
ICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQK
KyAgICAgKiBAd2ViX2ZyYW1lOiB0aGUgZnJhbWUgb24gd2hpY2ggdGhlIGFjdGlvbiAKKyAgICAg
KiBAcmVxdWVzdDogYSBXZWJLaXROZXR3b3JrUmVxdWVzdAorICAgICAqIEBtaW1ldHlwZTogdGhl
IE1JTUUgdHlwZSBhdHRlbXB0ZWQgdG8gbG9hZAorICAgICAqIEBwb2xpY3lfZGVjaXNpb246IGEg
I1dlYktpdFdlYlBvbGljeURlY2lzaW9uLCBhbiBvYmplY3QgdG8gd2hpY2ggZ2l2ZSB0aGUgcG9s
aWN5IHJlc3BvbnNlCisgICAgICogQHJldHVybjogVFJVRSBpZiB0aGUgc2lnbmFsIHdpbGwgYmUg
aGFuZGxlZCwgCisgICAgICogICAgICAgICAgRkFMU0UgdG8gaGF2ZSB0aGUgZGVmYXVsdCBiZWhh
dmlvciBhcHBseQorICAgICAqCisgICAgICogRGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIGRpc3Bs
YXkgb2Ygbm90IHRoZSBnaXZlbiBNSU1FIHR5cGUuCisgICAgICogSWYgdGhpcyBzaWduYWwgaXMg
bm90IGhhbmRsZWQsIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIGFzIGZvbGxvd3MuICBJZiBXZWJL
aXQgY2FuIAorICAgICAqIHNob3cgdGhpcyBNSU1FIHR5cGUsIGl0IHdpbGwgYmUgdXNlZCwgZWxz
ZSBpdCB3aWxsIGJlIGlnbm9yZWQuCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25h
bHNbTUlNRV9UWVBFX1BPTElDWV9ERUNJU0lPTl9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJt
aW1lLXR5cGUtcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCIsCisgICAgICAgICAgICBHX1RZUEVf
RlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19T
SUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAgMCwKKyAgICAg
ICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwKKyAgICAgICAgICAgIE5V
TEwsCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1RfT0JKRUNUX1NU
UklOR19PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgNCwKKyAgICAgICAgICAg
IEdfVFlQRV9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfT0JKRUNULAorICAgICAgICAgICAg
R19UWVBFX1NUUklORywKKyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QpOworCisgICAgLyoqCisg
ICAgICogV2ViS2l0V2ViVmlldzo6bmV3LXdpbmRvdy1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92
aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEB3
ZWJfZnJhbWU6IHRoZSBmcmFtZSBvbiB3aGljaCB0aGUgYWN0aW9uIAorICAgICAqIEByZXF1ZXN0
OiBhIFdlYktpdE5ldHdvcmtSZXF1ZXN0CisgICAgICogQGFjdGlvbl9pbmZvcm1hdGlvbjogZGVz
Y3JpYmVzIHRoZSBhY3Rpb24gdGhhdCB0cmlnZ2VyZWQgdGhpcyBuYXZpZ2F0aW9uIHJlcXVlc3Qs
IHBvc3NpYmxlIGtleXMgYXJlIGRlZmluZWQgYnkgV2ViS2l0QWN0aW9uS2V5CisgICAgICogQHBv
bGljeV9kZWNpc2lvbjogYSAjV2ViS2l0V2ViUG9saWN5RGVjaXNpb24sIGFuIG9iamVjdCB0byB3
aGljaCBnaXZlIHRoZSBwb2xpY3kgcmVzcG9uc2UKKyAgICAgKiBAcmV0dXJuOiBUUlVFIGlmIHRo
ZSBzaWduYWwgd2lsbCBiZSBoYW5kbGVkLCAKKyAgICAgKiAgICAgICAgICBGQUxTRSB0byBoYXZl
IHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFwcGx5CisgICAgICoKKyAgICAgKiBEZWNpZGVzIHdoZXRo
ZXIgb3Igbm90IHRvIGFsbG93IGEgdGFyZ2V0ZWQgbmF2aWdhdGlvbiBldmVudCwgc3VjaCBhcyBv
cGVuaW5nIAorICAgICAqIGEgbGluayBpbiBhIG5ldyB3aW5kb3cuIElmIHRoaXMgc2lnbmFsIHJl
dHVybnMgV0VCS0lUX1BPTElDWV9SRVNQT05TRV9BQ0NFUFQgCisgICAgICogdGhlbiB0aGUgbmV3
IHdpbmRvdyB3aWxsIGJlIG9wZW5lZCwgYW5kIG5hdmlnYXRpb24tcmVxdWVzdGVkIHdpbGwgYmUg
ZW1pdHRlZCAKKyAgICAgKiB3aXRoIHZhbHVlIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfT1RIRVIg
Zm9yIFdFQktJVF9BQ1RJT05fTkFWSUdBVElPTl9UWVBFLgorICAgICAqIFRoZSBkZWZhdWx0IGJl
aGF2aW9yIGlzIHRvIGFjY2VwdC4gIAorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWdu
YWxzW05FV19XSU5ET1dfUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygibmV3LXdpbmRvdy1yZXF1
ZXN0ZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAg
ICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNU
SU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90
cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNo
YWxfQk9PTEVBTl9fT0JKRUNUX09CSkVDVF9CT1hFRF9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZ
UEVfQk9PTEVBTiwgNCwKKyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsCisgICAgICAgICAgICBH
X1RZUEVfT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX0hBU0hfVEFCTEUsCiAgICAgICAgICAg
ICBHX1RZUEVfT0JKRUNUKTsKIAogICAgIC8qKgpAQCAtMTA1MSw3ICsxMTA1LDYgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJW
aWV3Q2xhc3MpCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZpcnR1YWwgbWV0aG9kcwogICAg
ICAqLwogICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlX3dlYl92aWV3ID0gd2Via2l0X3dlYl92aWV3
X3JlYWxfY3JlYXRlX3dlYl92aWV3OwotICAgIHdlYlZpZXdDbGFzcy0+bmF2aWdhdGlvbl9yZXF1
ZXN0ZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9uX3JlcXVlc3RlZDsKICAgICB3
ZWJWaWV3Q2xhc3MtPndpbmRvd19vYmplY3RfY2xlYXJlZCA9IHdlYmtpdF93ZWJfdmlld19yZWFs
X3dpbmRvd19vYmplY3RfY2xlYXJlZDsKICAgICB3ZWJWaWV3Q2xhc3MtPmNob29zZV9maWxlID0g
d2Via2l0X3dlYl92aWV3X3JlYWxfY2hvb3NlX2ZpbGU7CiAgICAgd2ViVmlld0NsYXNzLT5zY3Jp
cHRfYWxlcnQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zY3JpcHRfYWxlcnQ7CkBAIC0xOTY5LDYg
KzIwMjIsMjcgQEAgR3RrVGFyZ2V0TGlzdCogd2Via2l0X3dlYl92aWV3X2dldF9wYXN0ZV90YXJn
ZXRfbGlzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogfQogCiAvKioKKyAqIHdlYmtpdF93ZWJf
dmlld19jYW5fc2hvd19taW1lX3R5cGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcK
KyAqIEBtaW1lX3R5cGU6IGEgTUlNRSB0eXBlCisgKgorICogVGhpcyBmdW5jdGlvbnMgcmV0dXJu
cyB3aGV0aGVyIG9yIG5vdCBhIE1JTUUgdHlwZSBjYW4gYmUgZGlzcGxheWVkIHVzaW5nIHRoaXMg
dmlldy4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IGEgI2dib29sZWFuIGluZGljYXRpbmcgaWYgdGhl
IE1JTUUgdHlwZSBjYW4gYmUgZGlzcGxheWVkCisgKiovCisKK2dib29sZWFuIHdlYmtpdF93ZWJf
dmlld19jYW5fc2hvd19taW1lX3R5cGUgKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdj
aGFyKiBtaW1lVHlwZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X1ZJRVcod2ViVmlldyksIEZBTFNFKTsKKyAgICAKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdl
YmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZSh3ZWJWaWV3KSk7CisgICAgaWYgKEZyYW1lTG9h
ZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkpCisgICAgICAgIHJldHVybiBsb2FkZXItPmNh
blNob3dNSU1FVHlwZShtaW1lVHlwZSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRkFMU0U7
Cit9CisKKy8qKgogICogd2Via2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVudDoKICAqIEB3ZWJf
dmlldzogYSAjV2ViS2l0V2ViVmlldwogICoKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRl
eCAwYzVhNjc1Li40ZGIyNDE0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC0xLDYg
KzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5j
b20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtNTIsNiArNTMsMjUgQEAgdHlwZWRlZiBlbnVtCiAgICAgV0VCS0lUX1dFQl9WSUVX
X1RBUkdFVF9JTkZPX1RFWFQgPSAtIDIKIH0gV2ViS2l0V2ViVmlld1RhcmdldEluZm87CiAKK3R5
cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX0FDVElPTl9OQVZJR0FUSU9OX1RZUEUsCisgICAgV0VC
S0lUX0FDVElPTl9FTEVNRU5ULAorICAgIFdFQktJVF9BQ1RJT05fQlVUVE9OLAorICAgIFdFQktJ
VF9BQ1RJT05fTU9ESUZJRVJfRkxBR1MsCisgICAgV0VCS0lUX0FDVElPTl9PUklHSU5BTF9VUkwK
K30gV2ViS2l0QWN0aW9uS2V5OworCisvLyBUaGUgb3JkZXIgb2YgdGhpcyBlbnVtIG11c3QgYmUg
dGhlIHNhbWUgYXMgTmF2aWdhdGlvblR5cGUgaW4gRnJhbWVMb2FkZXJUeXBlcy5oCit0eXBlZGVm
IGVudW0geworICAgIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfTElOS19DTElDS0VELAorICAgIFdF
QktJVF9OQVZJR0FUSU9OX1RZUEVfRk9STV9TVUJNSVRURUQsCisgICAgV0VCS0lUX05BVklHQVRJ
T05fVFlQRV9CQUNLX0ZPUldBUkQsCisgICAgV0VCS0lUX05BVklHQVRJT05fVFlQRV9SRUxPQUQs
CisgICAgV0VCS0lUX05BVklHQVRJT05fVFlQRV9GT1JNX1JFU1VCTUlUVEVELAorICAgIFdFQktJ
VF9OQVZJR0FUSU9OX1RZUEVfT1RIRVIsICAgIAorICAgIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVf
UExVR19JTl9SRVFVRVNUCit9IFdlYktpdE5hdmlnYXRpb25UeXBlOworCiBzdHJ1Y3QgX1dlYktp
dFdlYlZpZXcgewogICAgIEd0a0NvbnRhaW5lciBwYXJlbnRfaW5zdGFuY2U7CiAKQEAgLTY5LDEx
ICs4OSw2IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICAgKi8KICAgICBXZWJL
aXRXZWJWaWV3KiAgKCpjcmVhdGVfd2ViX3ZpZXcpICAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcp
OwogCi0gICAgLyoKLSAgICAgKiBUT0RPOiBGSVhNRTogQ3JlYXRlIHNvbWV0aGluZyBsaWtlIFdl
YlBvbGljeURlY2lzaW9uTGlzdGVuZXJfUHJvdG9jb2wgaW5zdGVhZAotICAgICAqLwotICAgIFdl
YktpdE5hdmlnYXRpb25SZXNwb25zZSAoKm5hdmlnYXRpb25fcmVxdWVzdGVkKSAoV2ViS2l0V2Vi
Vmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgV2ViS2l0TmV0d29ya1JlcXVl
c3QqIHJlcXVlc3QpOwotCiAgICAgdm9pZCAoKndpbmRvd19vYmplY3RfY2xlYXJlZCkgKFdlYktp
dFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIEpTR2xvYmFsQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dfb2JqZWN0KTsKICAgICBnY2hhciogICAo
KmNob29zZV9maWxlKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBm
cmFtZSwgY29uc3QgZ2NoYXIqIG9sZF9maWxlKTsKICAgICBnYm9vbGVhbiAoKnNjcmlwdF9hbGVy
dCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0
IGdjaGFyKiBhbGVydF9tZXNzYWdlKTsKQEAgLTIxMiw2ICsyMjcsOSBAQCBXRUJLSVRfT0JTT0xF
VEVfQVBJIHZvaWQKIHdlYmtpdF93ZWJfdmlld19nb19iYWNrd2FyZCAoV2ViS2l0V2ViVmlldyog
d2ViX3ZpZXcpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3ZpZXdfY2FuX3No
b3dfbWltZV90eXBlIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgY29uc3QgZ2NoYXIqIG1pbWVf
dHlwZSk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfdmlld19nZXRfdHJhbnNw
YXJlbnQgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKIAogV0VCS0lUX0FQSSB2b2lkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21288</attachid>
            <date>2008-05-22 04:24:06 -0700</date>
            <delta_ts>2008-09-25 07:31:11 -0700</delta_ts>
            <desc>Implement WebPolicyDelegate methods</desc>
            <filename>policy-implementation.patch</filename>
            <type>text/plain</type>
            <size>41550</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkYmNmOWM1Li45ZjBiZjQw
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMDgtMDUtMjIgIE1hcmNvIEJhcmlzaW9uZSAgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEu
Y28udWs+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NjIKKyAgICAgICAgW2d0
a10gSW1wbGVtZW50IFdlYlBvbGljeURlbGVnYXRlIG1ldGhvZHMKKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOiBBZGQgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24u
aCwKKyAgICAgICAgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3Bw
LAorICAgICAgICBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmgg
YW5kCisgICAgICAgIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24u
Y3BwLgorCiAyMDA4LTA1LTIwICBKYW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFscCBUb2tlci4KZGlmZiAtLWdpdCBhL0dOVW1h
a2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggOWUzMjcwMy4uNjEwZGNjYSAxMDA2NDQK
LS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTI5OSw2ICsyOTks
OCBAQCB3ZWJraXRndGtfaF9hcGkgKz0gXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJh
Y2tmb3J3YXJkbGlzdC5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5oIFwK
IAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIFwKKwlXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmggXAorCVdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnNldHRpbmdzLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAogCkBAIC0z
MjQsNiArMzI2LDggQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmZyYW1lLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0u
Y3BwIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmNwcCBc
CisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwIFwKIAlXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCAxNTVmZGRkLi45ZGQ5YzExIDEwMDY0NAotLS0gYS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBA
CisyMDA4LTA1LTIyICBNYXJjbyBCYXJpc2lvbmUgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEu
Y28udWs+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NjIKKyAgICAgICAgW2d0
a10gSW1wbGVtZW50IFdlYlBvbGljeURlbGVnYXRlIG1ldGhvZHMKKworICAgICAgICBPcmlnaW5h
bCB3b3JrIGJ5IFBpZXJyZS1MdWMgQmVhdWRvaW4uCisKKyAgICAgICAgVGhpcyBpbXBsZW1lbnRz
IHRoZSBkZWxlZ2F0ZXMgbWV0aG9kcyBvZiBXZWJQb2xpY3lEZWxlZ2F0ZS4KKyAgICAgICAgU2lu
Y2UgR3RrKy9DIGRvZXNuJ3QgaGF2ZSBkZWxlZ2F0ZSBtZXRob2RzLCBJIHJlcGxhY2VkIHRoZW0g
d2l0aAorICAgICAgICBzaWduYWxzLiBBbHNvLCBzaW5jZSBXZWJQb2xpY3lEZWxlZ2F0ZSBvbmx5
IGhhcyAzIGRlbGVnYXRlLCBJIGFkZGVkCisgICAgICAgIHRoZW0gdG8gdGhlIFdlYlZpZXcgaW5z
dGVhZCBvZiBjcmVhdGluZyBuZXcgR09iamVjdCB3aXRoIG9ubHkgMworICAgICAgICBzaWduYWxz
LgorCisgICAgICAgIEEgbmV3IG9iamVjdCBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiBhbGxvdyB0
aGUgYnJvd3NlciB0byBkZWxheSBpdHMKKyAgICAgICAgcmVzcG9uc2UgaW4gY2VydGFpbiBjYXNl
cy4gIEFzIGNvbW1lbnRlZCBpbiBXZWJDb3JlLCByZWRpcmVjdGlvbgorICAgICAgICBuYXZpZ2F0
aW9uIHJlcXVlc3RzIGFyZSBvbmUgY2FzZSB3aGVyZSBhIHJlc3BvbnNlIGlzIHJlcXVpcmVkIHRv
IGJlCisgICAgICAgIHN5bmMgKGllLiBkZWNpc2lvbiBtdXN0IGJlIHNlbnQgYmVmb3JlIHRoZSBl
bmQgb2Ygc2lnbmFsKS4gIElmIGEKKyAgICAgICAgZGVjaXNpb24gY29tZSBpbiBsYXRlLCBhc3Nl
cnRpb25zIGNvdWxkIGhhcHBlbi4KKyAgICAgICAgT25seSBvbmUgcG9saWN5IGRlY2lzaW9uIHNo
b3VsZCBiZSBwZW5kaW5nIHdpdGggdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgQWdhaW4g
dGhpcyBzZWVtcyB0byBiZSBhIGxpbWl0YXRpb24gaW4gV2ViQ29yZS4KKworICAgICAgICBJIGNv
cGllZCB0aGUgZGVmYXVsdCBiZWhhdmlvdXJzIGRlc2NyaWJlZCBpbiBXZWJQb2xpY3lEZWxlZ2F0
ZSBvbiB0aGUKKyAgICAgICAgTWFjIHBvcnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50OjpGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVj
ayk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5cGUp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3Q6CisgICAgICAgICogd2Via2l0L3dlYmtp
dC5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRkZWZpbmVzLmg6CisgICAgICAgICogd2Via2l0
L3dlYmtpdHByaXZhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2Vi
S2l0Ojpjb3JlKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5oOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChf
V2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGU6Oik6CisgICAgICAgIChfV2ViS2l0V2Vi
TmF2aWdhdGlvbkFjdGlvblByaXZhdGU6OndlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0
X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTo6
d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfcHJvcGVydHkpOgorICAgICAgICAoX1dl
YktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlOjp3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0
aW9uX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlOjp3
ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJLaXRX
ZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9j
bGFzc19pbml0KToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTo6
d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcmVhc29uKToKKyAgICAgICAgKF9XZWJL
aXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlv
bl9zZXRfcmVhc29uKToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0
ZTo6d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfb3JpZ2luYWxfdXJpKToKKyAgICAg
ICAgKF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9uYXZpZ2F0
aW9uX2FjdGlvbl9zZXRfb3JpZ2luYWxfdXJpKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vi
bmF2aWdhdGlvbmFjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VicG9s
aWN5ZGVjaXNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lv
blByaXZhdGU6OndlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2NsYXNzX2luaXQpOgorICAgICAg
ICAoX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVj
aXNpb25faW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlOjp3
ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9uZXcpOgorICAgICAgICAoX1dlYktpdFdlYlBvbGlj
eURlY2lzaW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlKToKKyAgICAg
ICAgKF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGU6OndlYmtpdF93ZWJfcG9saWN5X2Rl
Y2lzaW9uX2lnbm9yZSk6CisgICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRl
Ojp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZCk6CisgICAgICAgIChfV2ViS2l0
V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9jYW5j
ZWwpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oOiBBZGRlZC4K
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICogd2Via2l0L3dl
YmtpdHdlYnZpZXcuaDoKKwogMjAwOC0wNS0xOSAgQWxwIFRva2VyICA8YWxwQG51YW50aS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIGFuZCBCZXRoLgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCA0Yjc0NmY1
Li5iZjczNTBmIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcApAQCAtNDQsNiArNDQsOCBAQAogI2luY2x1ZGUgImtqc19wcm94eS5o
IgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJmcmFtZS5o
IgorI2luY2x1ZGUgIndlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uaCIKKyNpbmNsdWRlICJ3ZWJr
aXR3ZWJwb2xpY3lkZWNpc2lvbi5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKIAogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KQEAgLTYwLDYgKzYyLDcgQEAgRnJhbWVM
b2FkZXJDbGllbnQ6OkZyYW1lTG9hZGVyQ2xpZW50KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKICAg
ICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX3BsdWdpblZpZXcoMCkKICAgICAsIG1fdXNlckFn
ZW50KCIiKQorICAgICwgbV9wb2xpY3lEZWNpc2lvbihOVUxMKQogewogICAgIEFTU0VSVChtX2Zy
YW1lKTsKIH0KQEAgLTI0MiwxNiArMjQ1LDM4IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uCiAg
ICAgbV9yZXNwb25zZSA9IHJlc3BvbnNlOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5
RnVuY3Rpb24sIGNvbnN0IFN0cmluZyYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKEZyYW1lUG9s
aWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rpb24sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIC8vIEZJWE1FOiB3ZSBu
ZWVkIHRvIGNhbGwgZGlyZWN0bHkgaGVyZSAoY29tbWVudCBjb3BpZWQgZnJvbSBRdCB2ZXJzaW9u
KQogICAgIEFTU0VSVChwb2xpY3lGdW5jdGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikK
ICAgICAgICAgcmV0dXJuOwotICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1
bmN0aW9uKShQb2xpY3lVc2UpOworCisgICAgV2ViS2l0V2ViVmlldyogcGFnZSA9IGdldFZpZXdG
cm9tRnJhbWUobV9mcmFtZSk7CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QgPSB3
ZWJraXRfbmV0d29ya19yZXF1ZXN0X25ldyhyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIHBvbGljeURlY2lz
aW9uID0gd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fbmV3KG1fZnJhbWUsIHBvbGljeUZ1bmN0
aW9uKTsKKyAgICBtX3BvbGljeURlY2lzaW9uID0gcG9saWN5RGVjaXNpb247CisKKyAgICBnYm9v
bGVhbiBpc0hhbmRsZWQgPSBmYWxzZTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUocGFnZSwg
Im1pbWUtdHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkIiwgbV9mcmFtZSwgcmVxdWVzdCwg
bWltZVR5cGUudXRmOCgpLmRhdGEoKSwgcG9saWN5RGVjaXNpb24sICZpc0hhbmRsZWQpOworCisg
ICAgZ19vYmplY3RfdW5yZWYocmVxdWVzdCk7CisKKyAgICBpZiAoaXNIYW5kbGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBQb2xpY3lBY3Rpb24gcG9saWN5UmVzdWx0OworCisgICAgaWYgKHJl
c291cmNlUmVxdWVzdC51cmwoKS5pc0xvY2FsRmlsZSgpKQorICAgICAgICBwb2xpY3lSZXN1bHQg
PSBQb2xpY3lVc2U7CisgICAgZWxzZSBpZiAoY2FuU2hvd01JTUVUeXBlKG1pbWVUeXBlKSkKKyAg
ICAgICAgcG9saWN5UmVzdWx0ID0gUG9saWN5VXNlOworICAgIGVsc2UKKyAgICAgICAgcG9saWN5
UmVzdWx0ID0gUG9saWN5SWdub3JlOworCisgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4q
cG9saWN5RnVuY3Rpb24pKHBvbGljeVJlc3VsdCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVu
Y3Rpb24gcG9saWN5RnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBw
b2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzKQogewogICAgIEFT
U0VSVChwb2xpY3lGdW5jdGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKQEAgLTI2OSwx
NyArMjk0LDI1IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0CiAKICAgICBXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKICAgICBXZWJLaXROZXR3b3Jr
UmVxdWVzdCogcmVxdWVzdCA9IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3KHJlc291cmNlUmVx
dWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBXZWJLaXROYXZpZ2F0aW9u
UmVzcG9uc2UgcmVzcG9uc2U7CisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIHBvbGljeURl
Y2lzaW9uID0gd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fbmV3KG1fZnJhbWUsIHBvbGljeUZ1
bmN0aW9uKTsKKyAgICBtX3BvbGljeURlY2lzaW9uID0gcG9saWN5RGVjaXNpb247CisKKyAgICAv
LyBUT0RPOiB1c2UgYWN0aW9uLmV2ZW50KCkuCisgICAgZ3BvaW50ZXIgbmF2aWdhdGlvbkFjdGlv
biA9IGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfTkFWSUdBVElPTl9BQ1RJT04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhc29uIiwga2l0KGFj
dGlvbi50eXBlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIm9yaWdpbmFsLXVyaSIsIGFjdGlvbi51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAKLSAg
ICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgIm5hdmlnYXRpb24tcmVxdWVzdGVkIiwg
bV9mcmFtZSwgcmVxdWVzdCwgJnJlc3BvbnNlKTsKKyAgICBnYm9vbGVhbiBpc0hhbmRsZWQgPSBm
YWxzZTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgIm5hdmlnYXRpb24tcmVx
dWVzdGVkIiwgbV9mcmFtZSwgcmVxdWVzdCwgbmF2aWdhdGlvbkFjdGlvbiwgcG9saWN5RGVjaXNp
b24sICZpc0hhbmRsZWQpOwogCisgICAgZ19vYmplY3RfdW5yZWYobmF2aWdhdGlvbkFjdGlvbik7
CiAgICAgZ19vYmplY3RfdW5yZWYocmVxdWVzdCk7CiAKLSAgICBpZiAocmVzcG9uc2UgPT0gV0VC
S0lUX05BVklHQVRJT05fUkVTUE9OU0VfSUdOT1JFKSB7Ci0gICAgICAgIChjb3JlKG1fZnJhbWUp
LT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lJZ25vcmUpOworICAgIGlmIChpc0hh
bmRsZWQpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKKyAgICAvLyBGSVhNRSBJbXBsZW1lbnQg
ZGVmYXVsdCBiZWhhdmlvciB3aGVuIHdlIGNhbiBxdWVyeSB0aGUgYmFja2VuZCB3aGF0IHByb3Rv
Y29scyBpdCBzdXBwb3J0cwogICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1
bmN0aW9uKShQb2xpY3lVc2UpOwogfQogCkBAIC01NjQsNyArNTk3LDkgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KCkKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6Y2Fu
Y2VsUG9saWN5Q2hlY2soKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgLy9GSVhNRSBB
ZGQgc3VwcG9ydCBmb3IgbW9yZSB0aGFuIG9uZSBwb2xpY3kgZGVjaXNpb24gYXQgb25jZQorICAg
IGlmIChtX3BvbGljeURlY2lzaW9uKQorICAgICAgICB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lv
bl9jYW5jZWwobV9wb2xpY3lEZWNpc2lvbik7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkTG9hZE1haW5SZXNvdXJjZShEb2N1bWVudExvYWRlciopCkBAIC01OTMsMTAg
KzYyOCwxMCBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRnJh
bWVMb2FkZXJDbGllbnQ6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdAorYm9v
bCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUodHlwZSkgfHwg
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKHR5cGUpIHx8Cisg
ICAgICAgIFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCktPmlzTUlNRVR5cGVSZWdp
c3RlcmVkKHR5cGUpOwogfQogCiBib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpyZXByZXNlbnRhdGlv
bkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmKSBjb25zdApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCmluZGV4IGYyZGM2OTYuLmM3
ZTY1MDQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3Lmgi
CisjaW5jbHVkZSAid2Via2l0d2VicG9saWN5ZGVjaXNpb24uaCIKIAogdHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFdlYkZyYW1lIFdlYktpdFdlYkZyYW1lOwogCkBAIC0xNzIsNiArMTczLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIFdlYktpdFdlYkZyYW1lKiBtX2ZyYW1lOwogICAgICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgICAgIFdlYkNvcmU6
OlN0cmluZyBtX3VzZXJBZ2VudDsKKyAgICAgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIG1f
cG9saWN5RGVjaXNpb247CiAKICAgICAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJlY3QgZGF0
YSB0bwogICAgICAgICBXZWJDb3JlOjpQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CmRpZmYgLS1n
aXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQtbWFyc2hhbC5saXN0IGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0LW1hcnNoYWwubGlzdAppbmRleCBhOGYyNDUzLi4yYTI5ZWU4IDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQtbWFyc2hhbC5saXN0CisrKyBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3QKQEAgLTksNCArOSw1IEBAIEJPT0xFQU46U1RS
SU5HLElOVCxTVFJJTkcKIEJPT0xFQU46T0JKRUNULFNUUklORwogQk9PTEVBTjpPQkpFQ1QsU1RS
SU5HLEJPT0xFQU4KIEJPT0xFQU46T0JKRUNULFNUUklORyxTVFJJTkcsU1RSSU5HCi1JTlQ6T0JK
RUNULE9CSkVDVAorQk9PTEVBTjpPQkpFQ1QsT0JKRUNULFNUUklORyxPQkpFQ1QKK0JPT0xFQU46
T0JKRUNULE9CSkVDVCxPQkpFQ1QsT0JKRUNUCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXQuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCmluZGV4IGM5MjlhODkuLjkw
MDllZmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCisrKyBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdC5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxhYm9yYSBMdGQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI3LDYgKzI4LDggQEAKICNp
bmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3
ZWJiYWNrZm9yd2FyZGxpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0
ZW0uaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaD4KKyNpbmNs
dWRlIDx3ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5oPgogI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXQtZW51bS10eXBlcy5oPgogCiAjZW5kaWYgLyogX19XRUJLSVRfSF9fICovCmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmggYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRkZWZpbmVzLmgKaW5kZXggMzg2YzNlMS4uOTY5OTc0MyAxMDA2NDQKLS0tIGEv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdGRlZmluZXMuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xs
YWJvcmEgTHRkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Miw2ICs1Myw5IEBAIHR5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJIaXN0b3J5SXRlbUNsYXNzIFdlYktpdFdlYkhpc3RvcnlJdGVtQ2xh
c3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWUgV2ViS2l0V2ViRnJhbWU7CiB0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVDbGFzcyBXZWJLaXRXZWJGcmFtZUNsYXNzOwogCit0
eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb24gV2ViS2l0V2ViUG9saWN5RGVj
aXNpb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25DbGFzcyBXZWJL
aXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzOworCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0
dGluZ3MgV2ViS2l0V2ViU2V0dGluZ3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGlu
Z3NDbGFzcyBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZh
dGUuY3BwCmluZGV4IGJlYTFhZDYuLjU5ZGU4MTMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHByaXZhdGUuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZh
dGUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIg
SGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTgzLDYgKzg0LDE2IEBAIFdlYktpdFdlYlZpZXcqIGtp
dChXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSkKICAgICByZXR1cm4gY2xpZW50ID8gY2xpZW50LT53
ZWJWaWV3KCkgOiAwOwogfQogCitXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uIGtpdChXZWJDb3Jl
OjpOYXZpZ2F0aW9uVHlwZSB0eXBlKQoreworICAgIHJldHVybiAoV2ViS2l0V2ViTmF2aWdhdGlv
blJlYXNvbil0eXBlOworfQorIAorV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgY29yZShXZWJLaXRX
ZWJOYXZpZ2F0aW9uUmVhc29uIHR5cGUpCit7CisgICAgcmV0dXJuIChXZWJDb3JlOjpOYXZpZ2F0
aW9uVHlwZSl0eXBlOworfQorCiB9IC8qKiBlbmQgbmFtZXNwYWNlIFdlYkNvcmUgKi8KIAogdm9p
ZCB3ZWJraXRfaW5pdCgpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2
YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKaW5kZXggMWQ4MjU3OC4u
MTAyYWUxZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCisr
KyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAtMSw2ICsxLDcgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIK
ICAqIENvcHlyaWdodCAoQykgMjAwOCBKYW4gTWljaGFlbCBDLiBBbG9uem8KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOSw2ICsz
MCw4IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KICNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5oPgor
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oPgorI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtp
dHdlYnNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlz
dC5oPgogCkBAIC01NCw2ICs1Nyw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIFdlYktpdFdl
Ykhpc3RvcnlJdGVtKiBraXQoV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKIAogICAgIFdlYkNvcmU6
OkJhY2tGb3J3YXJkTGlzdCogY29yZShXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqKTsKKworICAg
IFdlYktpdFdlYk5hdmlnYXRpb25SZWFzb24ga2l0KFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIHR5
cGUpOworICAgIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIGNvcmUoV2ViS2l0V2ViTmF2aWdhdGlv
blJlYXNvbiByZWFzb24pOwogfQogCiBleHRlcm4gIkMiIHsKQEAgLTEwOCw2ICsxMTQsMTAgQEAg
ZXh0ZXJuICJDIiB7CiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qCiAgICAgd2Via2l0X3dlYl9o
aXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9pdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7CiAK
KyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25f
bmV3IChXZWJLaXRXZWJGcmFtZSosIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pOworCisg
ICAgdm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9jYW5jZWwgKFdlYktpdFdlYlBvbGlj
eURlY2lzaW9uKiBkZWNpc2lvbik7CisKICAgICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB3ZWJr
aXR3ZWJmcmFtZS5oIG9uY2UgdGhlaXIgQVBJIGhhcyBiZWVuIGRpc2N1c3NlZC4KIAogICAgIFdF
QktJVF9BUEkgR1NMaXN0KgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
bmF2aWdhdGlvbmFjdGlvbi5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0
aW9uYWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTRkYWI5
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlv
bmFjdGlvbi5jcHAKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Q29sbGFib3JhIEx0ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAid2Via2l0d2Vi
bmF2aWdhdGlvbmFjdGlvbi5oIgorI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKKyNpbmNsdWRl
ICJ3ZWJraXQtZW51bS10eXBlcy5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK2V4dGVybiAi
QyIgeworCitzdHJ1Y3QgX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlIHsKKyAgICBX
ZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uIHJlYXNvbjsKKyAgICBnY2hhciogb3JpZ2luYWxVcmk7
Cit9OworCisjZGVmaW5lIFdFQktJVF9XRUJfTkFWSUdBVElPTl9BQ1RJT05fR0VUX1BSSVZBVEUo
b2JqKShHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9O
QVZJR0FUSU9OX0FDVElPTiwgV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGUpKQorCitl
bnVtICB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9SRUFTT04sCisgICAgUFJPUF9PUklHSU5B
TF9VUkkKK307CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiwgd2Vi
a2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbiwgR19UWVBFX09CSkVDVCkKKworCitzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQor
eworICAgIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24gPSBXRUJL
SVRfV0VCX05BVklHQVRJT05fQUNUSU9OKG9iamVjdCk7CisKKyAgICBzd2l0Y2gocHJvcGVydHlJ
ZCkgeworICAgIGNhc2UgUFJPUF9SRUFTT046CisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFs
dWUsIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3JlYXNvbihuYXZpZ2F0aW9uQWN0
aW9uKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9PUklHSU5BTF9VUkk6CisgICAg
ICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlv
bl9nZXRfb3JpZ2luYWxfdXJpKG5hdmlnYXRpb25BY3Rpb24pKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9i
amVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fc2V0X3Byb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlv
bkFjdGlvbiA9IFdFQktJVF9XRUJfTkFWSUdBVElPTl9BQ1RJT04ob2JqZWN0KTsKKworICAgIHN3
aXRjaChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBQUk9QX1JFQVNPTjoKKyAgICAgICAgd2Via2l0
X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfcmVhc29uKG5hdmlnYXRpb25BY3Rpb24sIChXZWJL
aXRXZWJOYXZpZ2F0aW9uUmVhc29uKWdfdmFsdWVfZ2V0X2VudW0odmFsdWUpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX09SSUdJTkFMX1VSSToKKyAgICAgICAgd2Via2l0X3dlYl9u
YXZpZ2F0aW9uX2FjdGlvbl9zZXRfb3JpZ2luYWxfdXJpKG5hdmlnYXRpb25BY3Rpb24sIGdfdmFs
dWVfZ2V0X3N0cmluZyh2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlk
LCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0
X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9pbml0KFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24qIG5h
dmlnYXRpb25BY3Rpb24pCit7CisgICAgbmF2aWdhdGlvbkFjdGlvbi0+cHJpdiA9IFdFQktJVF9X
RUJfTkFWSUdBVElPTl9BQ1RJT05fR0VUX1BSSVZBVEUobmF2aWdhdGlvbkFjdGlvbik7CisKKyAg
ICBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZSogcHJpdiA9IG5hdmlnYXRpb25BY3Rp
b24tPnByaXY7CisgICAgcHJpdi0+b3JpZ2luYWxVcmkgPSBnX3N0cmR1cCgiIik7Cit9CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZmluYWxpemUoR09iamVjdCog
b2JqKQoreworICAgIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24g
PSBXRUJLSVRfV0VCX05BVklHQVRJT05fQUNUSU9OKG9iaik7CisgICAgV2ViS2l0V2ViTmF2aWdh
dGlvbkFjdGlvblByaXZhdGUqIHByaXYgPSBuYXZpZ2F0aW9uQWN0aW9uLT5wcml2OworCisgICAg
Z19mcmVlKHByaXYtPm9yaWdpbmFsVXJpKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93
ZWJfbmF2aWdhdGlvbl9hY3Rpb25fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqKTsKK30KKwor
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9jbGFzc19pbml0KFdlYktp
dFdlYk5hdmlnYXRpb25BY3Rpb25DbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RD
bGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworCisgICAg
b2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25f
Z2V0X3Byb3BlcnR5OworICAgIG9iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfd2Vi
X25hdmlnYXRpb25fYWN0aW9uX3NldF9wcm9wZXJ0eTsKKyAgICBvYmplY3RDbGFzcy0+ZGlzcG9z
ZSA9IHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZmluYWxpemU7CisKKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9QX1JFQVNPTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19lbnVtKCJyZWFzb24i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlJlYXNvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiVGhlIHJlYXNvbiB3aHkgdGhpcyBuYXZpZ2F0aW9uIGlzIG9jY3VycmluZyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJL
SVRfVFlQRV9XRUJfTkFWSUdBVElPTl9SRUFTT04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfV0VCX05BVklHQVRJT05fUkVBU09O
X09USEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKEdQYXJhbUZsYWdzKShXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSkpOworCisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9PUklHSU5BTF9V
UkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3Ry
aW5nKCJvcmlnaW5hbC11cmkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiT3JpZ2luYWwgVVJJIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBVUkkgdGhhdCB3YXMgcmVx
dWVzdGVkIGFzIHRoZSB0YXJnZXQgZm9yIHRoZSBuYXZpZ2F0aW9uIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEV1JJVEUpKTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShyZXF1ZXN0Q2xh
c3MsIHNpemVvZihXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZSkpOworfQorCisvKioK
KyAqIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3JlYXNvbjoKKyAqIEBuYXZpZ2F0
aW9uQWN0aW9uOiBhICNXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uCisgKgorICogUmV0dXJucyB0
aGUgcmVhc29uIHdoeSBXZWJLaXQgaXMgcmVxdWVzdGluZyBhIG5hdmlnYXRpb24uCisgKgorICog
UmV0dXJuIHZhbHVlOiBhICNXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uCisgKi8KK1dlYktpdFdl
Yk5hdmlnYXRpb25SZWFzb24gd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcmVhc29u
KFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24pCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9OQVZJR0FUSU9OX0FDVElPTihuYXZpZ2F0
aW9uQWN0aW9uKSwgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9PVEhFUik7CisKKyAgICBy
ZXR1cm4gbmF2aWdhdGlvbkFjdGlvbi0+cHJpdi0+cmVhc29uOworfQorCisvKioKKyAqIHdlYmtp
dF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fc2V0X3JlYXNvbjoKKyAqIEBuYXZpZ2F0aW9uQWN0aW9u
OiBhICNXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uCisgKiBAcmVhc29uOiBhICNXZWJLaXRXZWJO
YXZpZ2F0aW9uUmVhc29uCisgKgorICogU2V0cyB0aGUgcmVhc29uIHdoeSBXZWJLaXQgaXMgcmVx
dWVzdGluZyBhIG5hdmlnYXRpb24uCisgKi8KK3ZvaWQgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2Fj
dGlvbl9zZXRfcmVhc29uKFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rp
b24sIFdlYktpdFdlYk5hdmlnYXRpb25SZWFzb24gcmVhc29uKQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9OQVZJR0FUSU9OX0FDVElPTihuYXZpZ2F0aW9uQWN0aW9uKSk7
CisKKyAgICBpZiAobmF2aWdhdGlvbkFjdGlvbi0+cHJpdi0+cmVhc29uID09IHJlYXNvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbmF2aWdhdGlvbkFjdGlvbi0+cHJpdi0+cmVhc29uID0gcmVh
c29uOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChuYXZpZ2F0aW9uQWN0aW9uKSwgInJl
YXNvbiIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X29y
aWdpbmFsX3VyaToKKyAqIEBuYXZpZ2F0aW9uQWN0aW9uOiBhICNXZWJLaXRXZWJOYXZpZ2F0aW9u
QWN0aW9uCisgKgorICogUmV0dXJucyB0aGUgVVJJIHRoYXQgd2FzIG9yaWdpbmFsbHkgcmVxdWVz
dGVkLiBUaGlzIG1heSBkaWZmZXIgZnJvbSB0aGUKKyAqIG5hdmlnYXRpb24gdGFyZ2V0LCBmb3Ig
aW5zdGFuY2UgYmVjYXVzZSBvZiBhIHJlZGlyZWN0LgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhl
IG9yaWdpbmFsbHkgcmVxdWVzdGVkIFVSSQorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl9u
YXZpZ2F0aW9uX2FjdGlvbl9nZXRfb3JpZ2luYWxfdXJpKFdlYktpdFdlYk5hdmlnYXRpb25BY3Rp
b24qIG5hdmlnYXRpb25BY3Rpb24pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9OQVZJR0FUSU9OX0FDVElPTihuYXZpZ2F0aW9uQWN0aW9uKSwgTlVMTCk7CisKKyAg
ICByZXR1cm4gbmF2aWdhdGlvbkFjdGlvbi0+cHJpdi0+b3JpZ2luYWxVcmk7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfb3JpZ2luYWxfdXJpOgorICogQG5h
dmlnYXRpb25BY3Rpb246IGEgI1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24KKyAqIEBvcmlnaW5h
bFVyaTogYSBVUkkKKyAqCisgKiBTZXRzIHRoZSBVUkkgdGhhdCB3YXMgb3JpZ2luYWxseSByZXF1
ZXN0ZWQuIFRoaXMgbWF5IGRpZmZlciBmcm9tIHRoZQorICogbmF2aWdhdGlvbiB0YXJnZXQsIGZv
ciBpbnN0YW5jZSBiZWNhdXNlIG9mIGEgcmVkaXJlY3QuCisgKi8KK3ZvaWQgd2Via2l0X3dlYl9u
YXZpZ2F0aW9uX2FjdGlvbl9zZXRfb3JpZ2luYWxfdXJpKFdlYktpdFdlYk5hdmlnYXRpb25BY3Rp
b24qIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IGdjaGFyKiBvcmlnaW5hbFVyaSkKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfTkFWSUdBVElPTl9BQ1RJT04obmF2aWdhdGlv
bkFjdGlvbikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwob3JpZ2luYWxVcmkpOworCisgICAgaWYg
KCFzdHJjbXAobmF2aWdhdGlvbkFjdGlvbi0+cHJpdi0+b3JpZ2luYWxVcmksIG9yaWdpbmFsVXJp
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ19mcmVlKG5hdmlnYXRpb25BY3Rpb24tPnByaXYt
Pm9yaWdpbmFsVXJpKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9uLT5wcml2LT5vcmlnaW5hbFVyaSA9
IGdfc3RyZHVwKG9yaWdpbmFsVXJpKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QobmF2
aWdhdGlvbkFjdGlvbiksICJvcmlnaW5hbC11cmkiKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5oIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjliNjNiYmYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdFQktJVF9XRUJfTkFWSUdB
VElPTl9BQ1RJT05fSAorI2RlZmluZSBXRUJLSVRfV0VCX05BVklHQVRJT05fQUNUSU9OX0gKKwor
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5l
cy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKy8vIFRoZSBvcmRlciBvZiB0aGlzIGVudW0gbXVzdCBi
ZSB0aGUgc2FtZSBhcyBOYXZpZ2F0aW9uVHlwZSBpbiBGcmFtZUxvYWRlclR5cGVzLmgKK3R5cGVk
ZWYgZW51bSB7CisgICAgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9MSU5LX0NMSUNLRUQs
CisgICAgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9GT1JNX1NVQk1JVFRFRCwKKyAgICBX
RUJLSVRfV0VCX05BVklHQVRJT05fUkVBU09OX0JBQ0tfRk9SV0FSRCwKKyAgICBXRUJLSVRfV0VC
X05BVklHQVRJT05fUkVBU09OX1JFTE9BRCwKKyAgICBXRUJLSVRfV0VCX05BVklHQVRJT05fUkVB
U09OX0ZPUk1fUkVTVUJNSVRURUQsCisgICAgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9P
VEhFUiwgICAgCisgICAgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9QTFVHX0lOX1JFUVVF
U1QKK30gV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbjsKKworI2RlZmluZSBXRUJLSVRfVFlQRV9X
RUJfTkFWSUdBVElPTl9BQ1RJT04gICAgICAgICAgICAod2Via2l0X3dlYl9uYXZpZ2F0aW9uX2Fj
dGlvbl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX05BVklHQVRJT05fQUNUSU9OKG9i
aikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9U
WVBFX1dFQl9OQVZJR0FUSU9OX0FDVElPTiwgV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbikpCisj
ZGVmaW5lIFdFQktJVF9XRUJfTkFWSUdBVElPTl9BQ1RJT05fQ0xBU1Moa2xhc3MpICAgIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCBXRUJLSVRfVFlQRV9XRUJfTkFWSUdBVElPTl9B
Q1RJT04sIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25DbGFzcykpCisjZGVmaW5lIFdFQktJVF9J
U19XRUJfTkFWSUdBVElPTl9BQ1RJT04ob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFO
Q0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX05BVklHQVRJT05fQUNUSU9OKSkKKyNkZWZp
bmUgV0VCS0lUX0lTX1dFQl9OQVZJR0FUSU9OX0FDVElPTl9DTEFTUyhrbGFzcykgKEdfVFlQRV9D
SEVDS19DTEFTU19UWVBFKChrbGFzcyksIFdFQktJVF9UWVBFX1dFQl9OQVZJR0FUSU9OX0FDVElP
TikpCisjZGVmaW5lIFdFQktJVF9XRUJfTkFWSUdBVElPTl9BQ1RJT05fR0VUX0NMQVNTKG9iaikg
IChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfTkFWSUdB
VElPTl9BQ1RJT04sIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25DbGFzcykpCisKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rp
b247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbkNsYXNzIFdlYktp
dFdlYk5hdmlnYXRpb25BY3Rpb25DbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJOYXZp
Z2F0aW9uQWN0aW9uUHJpdmF0ZSBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTsKKwor
c3RydWN0IF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uIHsKKyAgICBHT2JqZWN0IHBhcmVudF9p
bnN0YW5jZTsKKyAgICBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZSogcHJpdjsKK307
CisKK3N0cnVjdCBfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbkNsYXNzIHsKKyAgICBHT2JqZWN0
Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9u
YXZpZ2F0aW9uX2FjdGlvbl9nZXRfdHlwZSh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJO
YXZpZ2F0aW9uUmVhc29uCit3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9yZWFzb24o
V2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbik7CisKK1dFQktJVF9B
UEkgdm9pZAord2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfcmVhc29uKFdlYktpdFdl
Yk5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24sIFdlYktpdFdlYk5hdmlnYXRpb25S
ZWFzb24gcmVhc29uKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJfbmF2
aWdhdGlvbl9hY3Rpb25fZ2V0X29yaWdpbmFsX3VyaShXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9u
KiBuYXZpZ2F0aW9uQWN0aW9uKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX25hdmln
YXRpb25fYWN0aW9uX3NldF9vcmlnaW5hbF91cmkoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiog
bmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgZ2NoYXIqIG9yaWdpbmFsVXJpKTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xp
Y3lkZWNpc2lvbi5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lv
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJhMzI3NgotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNw
cApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEg
THRkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJwb2xpY3lkZWNp
c2lvbi5oIgorCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgorI2luY2x1ZGUgIndlYmtp
dHByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitleHRlcm4gIkMiIHsKKworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJQb2xpY3lE
ZWNpc2lvbiwgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb24sIEdfVFlQRV9PQkpFQ1QpOworCitz
dHJ1Y3QgX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSB7CisgICAgV2ViS2l0V2ViRnJh
bWUqIGZyYW1lOworICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gZnJhbWVQb2xpY3lGdW5jdGlvbjsK
KyAgICBnYm9vbGVhbiBpc0NhbmNlbGxlZDsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dFQl9QT0xJ
Q1lfREVDSVNJT05fR0VUX1BSSVZBVEUob2JqKSAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklW
QVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9OLCBXZWJLaXRXZWJQb2xp
Y3lEZWNpc2lvblByaXZhdGUpKQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNp
c2lvbl9jbGFzc19pbml0KFdlYktpdFdlYlBvbGljeURlY2lzaW9uQ2xhc3MqIGRlY2lzaW9uQ2xh
c3MpCit7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGRlY2lzaW9uQ2xhc3MsIHNpemVv
ZihXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl9wb2xpY3lfZGVjaXNpb25faW5pdChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVj
aXNpb24pCit7CisgICAgZGVjaXNpb24tPnByaXYgPSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lP
Tl9HRVRfUFJJVkFURShkZWNpc2lvbik7Cit9CisKK1dlYktpdFdlYlBvbGljeURlY2lzaW9uKiB3
ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9uZXcoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJD
b3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKGZyYW1lLCBOVUxMKTsKKworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNp
c2lvbiA9IFdFQktJVF9XRUJfUE9MSUNZX0RFQ0lTSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfUE9MSUNZX0RFQ0lTSU9OLCBOVUxMKSk7CisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNp
b25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7CisKKyAgICBwcml2LT5mcmFtZSA9IGZy
YW1lOworICAgIHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24gPSBmdW5jdGlvbjsKKyAgICBwcml2
LT5pc0NhbmNlbGxlZCA9IEZBTFNFOworCisgICAgcmV0dXJuIGRlY2lzaW9uOworfQorCisvKioK
KyAqIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX3VzZQorICogQGRlY2lzaW9uOiBhICNXZWJL
aXRXZWJQb2xpY3lEZWNpc2lvbgorICoKKyAqIFdpbGwgc2VuZCB0aGUgVVNFIGRlY2lzaW9uIHRv
IHRoZSBwb2xpY3kgaW1wbGVtZW50ZXIuCisgKi8KK3ZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVj
aXNpb25fdXNlKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7CisK
KyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+cHJp
djsKKworICAgIGlmICghcHJpdi0+aXNDYW5jZWxsZWQpCisgICAgICAgIChjb3JlKHByaXYtPmZy
YW1lKS0+bG9hZGVyKCktPioocHJpdi0+ZnJhbWVQb2xpY3lGdW5jdGlvbikpKFdlYkNvcmU6OlBv
bGljeVVzZSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25faWdub3Jl
CisgKiBAZGVjaXNpb246IGEgI1dlYktpdFdlYlBvbGljeURlY2lzaW9uCisgKgorICogV2lsbCBz
ZW5kIHRoZSBJR05PUkUgZGVjaXNpb24gdG8gdGhlIHBvbGljeSBpbXBsZW1lbnRlci4KKyAqLwor
dm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9pZ25vcmUoV2ViS2l0V2ViUG9saWN5RGVj
aXNpb24qIGRlY2lzaW9uKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9Q
T0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9u
UHJpdmF0ZSogcHJpdiA9IGRlY2lzaW9uLT5wcml2OworICAgIAorICAgIGlmICghcHJpdi0+aXND
YW5jZWxsZWQpCisgICAgICAgIChjb3JlKHByaXYtPmZyYW1lKS0+bG9hZGVyKCktPioocHJpdi0+
ZnJhbWVQb2xpY3lGdW5jdGlvbikpKFdlYkNvcmU6OlBvbGljeUlnbm9yZSk7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQKKyAqIEBkZWNpc2lvbjogYSAj
V2ViS2l0V2ViUG9saWN5RGVjaXNpb24KKyAqCisgKiBXaWxsIHNlbmQgdGhlIERPV05MT0FEIGRl
Y2lzaW9uIHRvIHRoZSBwb2xpY3kgaW1wbGVtZW50ZXIuCisgKi8KK3ZvaWQgd2Via2l0X3dlYl9w
b2xpY3lfZGVjaXNpb25fZG93bmxvYWQoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9u
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9QT0xJQ1lfREVDSVNJT04o
ZGVjaXNpb24pKTsKKworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSogcHJpdiA9
IGRlY2lzaW9uLT5wcml2OworICAgIAorICAgIGlmICghcHJpdi0+aXNDYW5jZWxsZWQpCisgICAg
ICAgIChjb3JlKHByaXYtPmZyYW1lKS0+bG9hZGVyKCktPioocHJpdi0+ZnJhbWVQb2xpY3lGdW5j
dGlvbikpKFdlYkNvcmU6OlBvbGljeURvd25sb2FkKTsKK30KKwordm9pZCB3ZWJraXRfd2ViX3Bv
bGljeV9kZWNpc2lvbl9jYW5jZWwoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQor
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9QT0xJQ1lfREVDSVNJT04oZGVj
aXNpb24pKTsKKworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSogcHJpdiA9IGRl
Y2lzaW9uLT5wcml2OworICAgIAorICAgIHByaXYtPmlzQ2FuY2VsbGVkID0gVFJVRTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24u
aCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTljMDRhYQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgKQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdFQktJ
VF9XRUJfUE9MSUNZX0RFQ0lTSU9OX0gKKyNkZWZpbmUgV0VCS0lUX1dFQl9QT0xJQ1lfREVDSVNJ
T05fSAorCisjaW5jbHVkZSA8Y29uZmlnLmg+CisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgor
I2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgIndlYmtpdGRlZmluZXMuaCIKKworR19CRUdJ
Tl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04gICAgICAg
ICAgICAod2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VC
S0lUX1dFQl9QT0xJQ1lfREVDSVNJT04ob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5T
VEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJU0lPTiwgV2ViS2l0
V2ViUG9saWN5RGVjaXNpb24pKQorI2RlZmluZSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTl9D
TEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRf
VFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9OLCBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzKSkK
KyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9QT0xJQ1lfREVDSVNJT04ob2JqKSAgICAgICAgIChHX1RZ
UEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJ
U0lPTikpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfUE9MSUNZX0RFQ0lTSU9OX0NMQVNTKGtsYXNz
KSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9QT0xJ
Q1lfREVDSVNJT04pKQorI2RlZmluZSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTl9HRVRfQ0xB
U1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9X
RUJfUE9MSUNZX0RFQ0lTSU9OLCBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzKSkKKwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSBXZWJLaXRXZWJQb2xp
Y3lEZWNpc2lvblByaXZhdGU7CitzdHJ1Y3QgX1dlYktpdFdlYlBvbGljeURlY2lzaW9uIHsKKyAg
ICBHT2JqZWN0IHBhcmVudDsKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHBy
aXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlBvbGljeURlY2lzaW9uQ2xhc3MgeworICAgIEdP
YmplY3RDbGFzcyBwYXJlbnQ7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX3Bv
bGljeV9kZWNpc2lvbl9nZXRfdHlwZSAodm9pZCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlIChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNp
b24pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2lnbm9y
ZSAoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKTsKKworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZCAoV2ViS2l0V2ViUG9saWN5RGVj
aXNpb24qIGRlY2lzaW9uKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCmluZGV4IDlhMDY5ODguLjNhNzE5MjAgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCkBAIC01LDYgKzUsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwNyBB
bHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogIENvcHlyaWdodCAoQykgMjAwOCBKYW4gQWxv
bnpvIDxqbWFsb256b0B1bnBsdWdnYWJsZS5jb20+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IE51
YW50aSBMdGQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC02OSw2ICs3MCw3IEBAIGV4dGVybiAiQyIgewogZW51bSB7CiAgICAg
Lyogbm9ybWFsIHNpZ25hbHMgKi8KICAgICBOQVZJR0FUSU9OX1JFUVVFU1RFRCwKKyAgICBNSU1F
X1RZUEVfUE9MSUNZX0RFQ0lTSU9OX1JFUVVFU1RFRCwKICAgICBXSU5ET1dfT0JKRUNUX0NMRUFS
RUQsCiAgICAgTE9BRF9TVEFSVEVELAogICAgIExPQURfQ09NTUlUVEVELApAQCAtNTM5LDEyICs1
NDEsNiBAQCBzdGF0aWMgV2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl92aWV3X3JlYWxfY3JlYXRl
X3dlYl92aWV3KFdlYktpdFdlYlZpZXcqKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgV2Vi
S2l0TmF2aWdhdGlvblJlc3BvbnNlIHdlYmtpdF93ZWJfdmlld19yZWFsX25hdmlnYXRpb25fcmVx
dWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdE5ldHdv
cmtSZXF1ZXN0KikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBXRUJLSVRf
TkFWSUdBVElPTl9SRVNQT05TRV9BQ0NFUFQ7Ci19Ci0KIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19yZWFsX3dpbmRvd19vYmplY3RfY2xlYXJlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2Vi
RnJhbWUqLCBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgd2luZG93X29i
amVjdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNzA1LDE4ICs3MDEsNiBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmpl
Y3QpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X25hdmlnYXRpb25fcmVxdWVzdF9oYW5k
bGVkKEdTaWduYWxJbnZvY2F0aW9uSGludCogaWhpbnQsIEdWYWx1ZSogcmV0dXJuQWNjdSwgY29u
c3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBncG9pbnRlciBkdW1teSkKLXsKLSAgZ2Jvb2xlYW4g
Y29udGludWVFbWlzc2lvbiA9IFRSVUU7Ci0gIGludCBzaWduYWxIYW5kbGVkID0gZ192YWx1ZV9n
ZXRfaW50KGhhbmRsZXJSZXR1cm4pOwotICBnX3ZhbHVlX3NldF9pbnQocmV0dXJuQWNjdSwgc2ln
bmFsSGFuZGxlZCk7Ci0KLSAgaWYgKHNpZ25hbEhhbmRsZWQgIT0gV0VCS0lUX05BVklHQVRJT05f
UkVTUE9OU0VfQUNDRVBUKQotICAgICAgY29udGludWVFbWlzc2lvbiA9IEZBTFNFOwotCi0gIHJl
dHVybiBjb250aW51ZUVtaXNzaW9uOwotfQotCiBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2FjY2Vzc2libGUoR3RrV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQpOwpAQCAtNzQ3LDE2ICs3MzEs
NjAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmll
d0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICogU2lnbmFscwogICAgICAqLwogCisgICAgLyoq
CisgICAgICogV2ViS2l0V2ViVmlldzo6bmF2aWdhdGlvbi1yZXF1ZXN0ZWQ6CisgICAgICogQHdl
Yl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAq
IEBmcmFtZTogdGhlICNXZWJLaXRXZWJGcmFtZSB0aGF0IHJlcXVpcmVkIHRoZSBuYXZpZ2F0aW9u
CisgICAgICogQHJlcXVlc3Q6IGEgI1dlYktpdE5ldHdvcmtSZXF1ZXN0CisgICAgICogQG5hdmln
YXRpb25fYWN0aW9uOiBhICNXZWJLaXRXZWJOYXZpZ2F0aW9uCisgICAgICogQHBvbGljeV9kZWNp
c2lvbjogYSAjV2ViS2l0V2ViUG9saWN5RGVjaXNpb24KKyAgICAgKiBAcmV0dXJuOiBUUlVFIGlm
IHRoZSBzaWduYWwgd2lsbCBiZSBoYW5kbGVkLCAKKyAgICAgKiAgICAgICAgICBGQUxTRSB0byBo
YXZlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFwcGx5CisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdo
ZW4gQGZyYW1lIHJlcXVlc3RzIGEgbmF2aWdhdGlvbiB0byBhbm90aGVyIHBhZ2UuCisgICAgICog
SWYgdGhpcyBzaWduYWwgaXMgbm90IGhhbmRsZWQsIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRv
IGFsbG93IHRoZQorICAgICAqIG5hdmlnYXRpb24uCisgICAgICovCiAgICAgd2Via2l0X3dlYl92
aWV3X3NpZ25hbHNbTkFWSUdBVElPTl9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJuYXZpZ2F0
aW9uLXJlcXVlc3RlZCIsCiAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xh
c3MpLAogICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJ
R05BTF9BQ1RJT04pLAotICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChXZWJLaXRXZWJWaWV3
Q2xhc3MsIG5hdmlnYXRpb25fcmVxdWVzdGVkKSwKLSAgICAgICAgICAgIHdlYmtpdF9uYXZpZ2F0
aW9uX3JlcXVlc3RfaGFuZGxlZCwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBnX3NpZ25h
bF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCiAgICAgICAgICAgICBOVUxMLAotICAgICAgICAg
ICAgd2Via2l0X21hcnNoYWxfSU5UX19PQkpFQ1RfT0JKRUNULAotICAgICAgICAgICAgR19UWVBF
X0lOVCwgMiwKLSAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsCi0gICAgICAgICAgICBHX1RZUEVf
T0JKRUNUKTsKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVF9PQkpF
Q1RfT0JKRUNUX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCA0LAorICAgICAg
ICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfTkVU
V09SS19SRVFVRVNULAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX05BVklHQVRJT05fQUNU
SU9OLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJU0lPTik7CisKKyAg
ICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjptaW1lLXR5cGUtcG9saWN5LWRlY2lzaW9uLXJl
cXVlc3RlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25h
bCBpcyBlbWl0dGVkCisgICAgICogQGZyYW1lOiB0aGUgI1dlYktpdFdlYkZyYW1lIHRoYXQgcmVx
dWlyZWQgdGhlIHBvbGljeSBkZWNpc2lvbgorICAgICAqIEByZXF1ZXN0OiBhIFdlYktpdE5ldHdv
cmtSZXF1ZXN0CisgICAgICogQG1pbWV0eXBlOiB0aGUgTUlNRSB0eXBlIGF0dGVtcHRlZCB0byBs
b2FkCisgICAgICogQHBvbGljeV9kZWNpc2lvbjogYSAjV2ViS2l0V2ViUG9saWN5RGVjaXNpb24K
KyAgICAgKiBAcmV0dXJuOiBUUlVFIGlmIHRoZSBzaWduYWwgd2lsbCBiZSBoYW5kbGVkLCAKKyAg
ICAgKiAgICAgICAgICBGQUxTRSB0byBoYXZlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFwcGx5Cisg
ICAgICoKKyAgICAgKiBEZWNpZGUgd2hldGhlciBvciBub3QgdG8gZGlzcGxheSBvZiBub3QgdGhl
IGdpdmVuIE1JTUUgdHlwZS4KKyAgICAgKiBJZiB0aGlzIHNpZ25hbCBpcyBub3QgaGFuZGxlZCwg
dGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gc2hvdyB0aGUKKyAgICAgKiBjb250ZW50IG9mIHRo
ZSByZXF1ZXN0ZWQgVVJJIGlmIFdlYktpdCBjYW4gc2hvdyB0aGlzIE1JTUUgdHlwZSwKKyAgICAg
KiBlbHNlIGl0IHdpbGwgYmUgaWdub3JlZC4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdf
c2lnbmFsc1tNSU1FX1RZUEVfUE9MSUNZX0RFQ0lTSU9OX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9u
ZXcoIm1pbWUtdHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkIiwKKyAgICAgICAgICAgIEdf
VFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdz
KShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICAwLAor
ICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAgICAg
ICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVF9PQkpF
Q1RfU1RSSU5HX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCA0LAorICAgICAg
ICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfTkVU
V09SS19SRVFVRVNULAorICAgICAgICAgICAgR19UWVBFX1NUUklORywKKyAgICAgICAgICAgIFdF
QktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04pOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0
V2ViVmlldzo6d2luZG93LW9iamVjdC1jbGVhcmVkOgpAQCAtMTA3NCw3ICsxMTAyLDYgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3
ZWJWaWV3Q2xhc3MpCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZpcnR1YWwgbWV0aG9kcwog
ICAgICAqLwogICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlX3dlYl92aWV3ID0gd2Via2l0X3dlYl92
aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3OwotICAgIHdlYlZpZXdDbGFzcy0+bmF2aWdhdGlvbl9y
ZXF1ZXN0ZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9uX3JlcXVlc3RlZDsKICAg
ICB3ZWJWaWV3Q2xhc3MtPndpbmRvd19vYmplY3RfY2xlYXJlZCA9IHdlYmtpdF93ZWJfdmlld19y
ZWFsX3dpbmRvd19vYmplY3RfY2xlYXJlZDsKICAgICB3ZWJWaWV3Q2xhc3MtPmNob29zZV9maWxl
ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfY2hvb3NlX2ZpbGU7CiAgICAgd2ViVmlld0NsYXNzLT5z
Y3JpcHRfYWxlcnQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zY3JpcHRfYWxlcnQ7CkBAIC0xOTkz
LDYgKzIwMjAsMjcgQEAgR3RrVGFyZ2V0TGlzdCogd2Via2l0X3dlYl92aWV3X2dldF9wYXN0ZV90
YXJnZXRfbGlzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogfQogCiAvKioKKyAqIHdlYmtpdF93
ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqIEBtaW1lX3R5cGU6IGEgTUlNRSB0eXBlCisgKgorICogVGhpcyBmdW5jdGlvbnMgcmV0
dXJucyB3aGV0aGVyIG9yIG5vdCBhIE1JTUUgdHlwZSBjYW4gYmUgZGlzcGxheWVkIHVzaW5nIHRo
aXMgdmlldy4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IGEgI2dib29sZWFuIGluZGljYXRpbmcgaWYg
dGhlIE1JTUUgdHlwZSBjYW4gYmUgZGlzcGxheWVkCisgKiovCisKK2dib29sZWFuIHdlYmtpdF93
ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUgKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0
IGdjaGFyKiBtaW1lVHlwZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKKyAgICAKKyAgICBGcmFtZSogZnJhbWUgPSBjb3Jl
KHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZSh3ZWJWaWV3KSk7CisgICAgaWYgKEZyYW1l
TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkpCisgICAgICAgIHJldHVybiBsb2FkZXIt
PmNhblNob3dNSU1FVHlwZShtaW1lVHlwZSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRkFM
U0U7Cit9CisKKy8qKgogICogd2Via2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVudDoKICAqIEB3
ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwogICoKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApp
bmRleCAwYzVhNjc1Li40MWYyZGFjIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC0x
LDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tl
ci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtNDAsMTIgKzQxLDYgQEAgR19CRUdJTl9ERUNMUwogCiB0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgV2ViS2l0V2ViVmlld1ByaXZhdGU7CiAKLXR5cGVkZWYg
ZW51bSB7Ci0gICAgV0VCS0lUX05BVklHQVRJT05fUkVTUE9OU0VfQUNDRVBULAotICAgIFdFQktJ
VF9OQVZJR0FUSU9OX1JFU1BPTlNFX0lHTk9SRSwKLSAgICBXRUJLSVRfTkFWSUdBVElPTl9SRVNQ
T05TRV9ET1dOTE9BRAotfSBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2U7Ci0KIHR5cGVkZWYgZW51
bQogewogICAgIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MID0gLSAxLApAQCAtNjks
MTEgKzY0LDYgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogICAgICAqLwogICAgIFdl
YktpdFdlYlZpZXcqICAoKmNyZWF0ZV93ZWJfdmlldykgIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmll
dyk7CiAKLSAgICAvKgotICAgICAqIFRPRE86IEZJWE1FOiBDcmVhdGUgc29tZXRoaW5nIGxpa2Ug
V2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lcl9Qcm90b2NvbCBpbnN0ZWFkCi0gICAgICovCi0gICAg
V2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlICgqbmF2aWdhdGlvbl9yZXF1ZXN0ZWQpIChXZWJLaXRX
ZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVx
dWVzdCogcmVxdWVzdCk7Ci0KICAgICB2b2lkICgqd2luZG93X29iamVjdF9jbGVhcmVkKSAoV2Vi
S2l0V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgSlNHbG9iYWxDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHdpbmRvd19vYmplY3QpOwogICAgIGdjaGFyKiAg
ICgqY2hvb3NlX2ZpbGUpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUq
IGZyYW1lLCBjb25zdCBnY2hhciogb2xkX2ZpbGUpOwogICAgIGdib29sZWFuICgqc2NyaXB0X2Fs
ZXJ0KSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29u
c3QgZ2NoYXIqIGFsZXJ0X21lc3NhZ2UpOwpAQCAtMjEyLDYgKzIwMiw5IEBAIFdFQktJVF9PQlNP
TEVURV9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X2dvX2JhY2t3YXJkIChXZWJLaXRXZWJWaWV3
KiB3ZWJfdmlldyk7CiAKIFdFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfdmlld19jYW5f
c2hvd19taW1lX3R5cGUgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBjb25zdCBnY2hhciogbWlt
ZV90eXBlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dlYl92aWV3X2dldF90cmFu
c3BhcmVudCAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwogCiBXRUJLSVRfQVBJIHZvaWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23794</attachid>
            <date>2008-09-25 07:31:11 -0700</date>
            <delta_ts>2008-12-17 15:36:37 -0800</delta_ts>
            <desc>Implement WebPolicyDelegate methods</desc>
            <filename>policy.patch</filename>
            <type>text/plain</type>
            <size>41513</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IEdOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEdOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbmUgMzY4OTIpCisrKyBHTlVtYWtlZmlsZS5hbQkoY29waWEgbG9jYWxlKQpAQCAtMzA1LDYg
KzMwNSw4IEBACiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmgg
XAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmggXAogCVdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmggXAorCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
Ym5hdmlnYXRpb25hY3Rpb24uaCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5
ZGVjaXNpb24uaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaCBcCiAJ
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCiAKQEAgLTMzNiw2ICszMzgsOCBAQAog
CVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5jcHAgXAogCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2ViaGlzdG9yeWl0ZW0uY3BwIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZp
Z2F0aW9uYWN0aW9uLmNwcCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVj
aXNpb24uY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAog
CVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCiAKSW5kZXg6IFdlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lv
bmUgMzY4OTIpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAkoY29waWEgbG9jYWxlKQpAQCAtNDQsNiArNDQsOCBAQAogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAid2Vi
a2l0d2ViZnJhbWUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmgiCisj
aW5jbHVkZSAid2Via2l0d2VicG9saWN5ZGVjaXNpb24uaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2
YXRlLmgiCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CkBAIC02MSwxMCAr
NjMsMTcgQEAKICAgICAsIG1fdXNlckFnZW50KCIiKQogICAgICwgbV9wbHVnaW5WaWV3KDApCiAg
ICAgLCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKGZhbHNlKQorICAgICwgbV9wb2xpY3lEZWNp
c2lvbigwKQogewogICAgIEFTU0VSVChtX2ZyYW1lKTsKIH0KIAorRnJhbWVMb2FkZXJDbGllbnQ6
On5GcmFtZUxvYWRlckNsaWVudCgpCit7CisgICAgaWYgKG1fcG9saWN5RGVjaXNpb24pCisgICAg
ICAgIGdfb2JqZWN0X3VucmVmKG1fcG9saWN5RGVjaXNpb24pOworfQorCiBzdGF0aWMgU3RyaW5n
IGFnZW50UGxhdGZvcm0oKQogewogI2lmZGVmIEdES19XSU5ET1dJTkdfWDExCkBAIC0yNDAsMTYg
KzI0OSwzNSBAQAogICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKIH0KIAotdm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1
bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBTdHJpbmcmLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1F
VHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICAv
LyBGSVhNRTogd2UgbmVlZCB0byBjYWxsIGRpcmVjdGx5IGhlcmUgKGNvbW1lbnQgY29waWVkIGZy
b20gUXQgdmVyc2lvbikKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9s
aWN5RnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVy
KCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKKworICAgIFdlYktpdFdlYlZpZXcqIHBh
Z2UgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0
KiByZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcocmVzb3VyY2VSZXF1ZXN0LnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNp
b24qIHBvbGljeURlY2lzaW9uID0gd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fbmV3KG1fZnJh
bWUsIHBvbGljeUZ1bmN0aW9uKTsKKyAgICBpZiAobV9wb2xpY3lEZWNpc2lvbikKKyAgICAgICAg
Z19vYmplY3RfdW5yZWYobV9wb2xpY3lEZWNpc2lvbik7CisgICAgbV9wb2xpY3lEZWNpc2lvbiA9
IHBvbGljeURlY2lzaW9uOworCisgICAgZ2Jvb2xlYW4gaXNIYW5kbGVkID0gZmFsc2U7CisgICAg
Z19zaWduYWxfZW1pdF9ieV9uYW1lKHBhZ2UsICJtaW1lLXR5cGUtcG9saWN5LWRlY2lzaW9uLXJl
cXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3QsIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCksIHBvbGlj
eURlY2lzaW9uLCAmaXNIYW5kbGVkKTsKKworICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOwor
CisgICAgaWYgKGlzSGFuZGxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNhblNob3dN
SU1FVHlwZShtaW1lVHlwZSkpCisgICAgICAgIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX3Vz
ZSAocG9saWN5RGVjaXNpb24pOworICAgIGVsc2UKKyAgICAgICAgd2Via2l0X3dlYl9wb2xpY3lf
ZGVjaXNpb25fZG93bmxvYWQgKHBvbGljeURlY2lzaW9uKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xp
Y3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJikK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qs
IFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBzKQogewogICAgIEFTU0VSVChw
b2xpY3lGdW5jdGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKQEAgLTI2OCwxNyArMjk2
LDM5IEBACiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZpZXdGcm9tRnJhbWUobV9m
cmFtZSk7CiAgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfbmV0d29y
a19yZXF1ZXN0X25ldyhyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlIHJlc3BvbnNlOwotCisgICAgLyogV2Ug
c3RpbGwgc3VwcG9ydCB0aGUgZGVwcmVjYXRlZCBuYXZpZ2F0aW9uLXJlcXVlc3RlZCBzaWduYWws
IGlmIHRoZQorICAgICAqIGFwcGxpY2F0aW9uIGRvZXNuJ3QgaWdub3JlIHRoZSBuYXZpZ2F0aW9u
IHRoZW4gdGhlIG5ldyBzaWduYWwgaXMKKyAgICAgKiBlbWl0dGVkLgorICAgICAqIG5hdmlnYXRp
b24tcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCBtdXN0IGJlIGVtaXR0ZWQgYWZ0ZXIKKyAgICAg
KiBuYXZpZ2F0aW9uLXJlcXVlc3RlZCBhcyB0aGUgcG9saWN5IGRlY2lzaW9uIGNhbiBiZSBhc3lu
Yy4gKi8KICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgIm5hdmlnYXRpb24tcmVx
dWVzdGVkIiwgbV9mcmFtZSwgcmVxdWVzdCwgJnJlc3BvbnNlKTsKIAotICAgIGdfb2JqZWN0X3Vu
cmVmKHJlcXVlc3QpOwotCiAgICAgaWYgKHJlc3BvbnNlID09IFdFQktJVF9OQVZJR0FUSU9OX1JF
U1BPTlNFX0lHTk9SRSkgewogICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xp
Y3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKKyAgICAgICAgZ19vYmplY3RfdW5yZWYocmVxdWVz
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVy
KCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNp
c2lvbiogcG9saWN5RGVjaXNpb24gPSB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9uZXcobV9m
cmFtZSwgcG9saWN5RnVuY3Rpb24pOworICAgIGlmIChtX3BvbGljeURlY2lzaW9uKQorICAgICAg
ICBnX29iamVjdF91bnJlZihtX3BvbGljeURlY2lzaW9uKTsKKyAgICBtX3BvbGljeURlY2lzaW9u
ID0gcG9saWN5RGVjaXNpb247CisKKyAgICAvLyBUT0RPOiB1c2UgYWN0aW9uLmV2ZW50KCkuCisg
ICAgZ3BvaW50ZXIgbmF2aWdhdGlvbkFjdGlvbiA9IGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9X
RUJfTkFWSUdBVElPTl9BQ1RJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAicmVhc29uIiwga2l0KGFjdGlvbi50eXBlKCkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yaWdpbmFsLXVyaSIsIGFjdGlvbi51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICBnYm9vbGVhbiBpc0hhbmRsZWQgPSBmYWxzZTsK
KyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgIm5hdmlnYXRpb24tcG9saWN5LWRl
Y2lzaW9uLXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3QsIG5hdmlnYXRpb25BY3Rpb24sIHBv
bGljeURlY2lzaW9uLCAmaXNIYW5kbGVkKTsKKworICAgIGdfb2JqZWN0X3VucmVmKG5hdmlnYXRp
b25BY3Rpb24pOworICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOworCisgICAgLy8gRklYTUUg
SW1wbGVtZW50IGRlZmF1bHQgYmVoYXZpb3Igd2hlbiB3ZSBjYW4gcXVlcnkgdGhlIGJhY2tlbmQg
d2hhdCBwcm90b2NvbHMgaXQgc3VwcG9ydHMKKyAgICBpZiAoIWlzSGFuZGxlZCkKKyAgICAgICAg
d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlKG1fcG9saWN5RGVjaXNpb24pOwogfQogCiBX
aWRnZXQqIEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1
Z2luU2l6ZSwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKQEAgLTU2NCw3ICs2MTQs
OSBAQAogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVjaygpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAvL0ZJWE1FIEFkZCBzdXBwb3J0IGZvciBtb3JlIHRo
YW4gb25lIHBvbGljeSBkZWNpc2lvbiBhdCBvbmNlCisgICAgaWYgKG1fcG9saWN5RGVjaXNpb24p
CisgICAgICAgIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2NhbmNlbChtX3BvbGljeURlY2lz
aW9uKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkTWFpblJl
c291cmNlKERvY3VtZW50TG9hZGVyKikKQEAgLTU5MywxMCArNjQ1LDEwIEBACiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXJDbGllbnQ6OmNhblNob3dNSU1FVHlwZShjb25z
dCBTdHJpbmcmKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZElt
YWdlTUlNRVR5cGUodHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWROb25JbWFn
ZU1JTUVUeXBlKHR5cGUpIHx8CisgICAgICAgIFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVn
aW5zKCktPmlzTUlNRVR5cGVSZWdpc3RlcmVkKHR5cGUpOwogfQogCiBib29sIEZyYW1lTG9hZGVy
Q2xpZW50OjpyZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmKSBj
b25zdApJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuaAkocmV2aXNpb25lIDM2ODkyKQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShjb3BpYSBsb2NhbGUpCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnBvbGlj
eWRlY2lzaW9uLmgiCiAKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJGcmFtZSBXZWJLaXRXZWJG
cmFtZTsKIApAQCAtNDEsNyArNDIsNyBAQAogICAgIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50IDog
cHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IEZyYW1lTG9hZGVyQ2xpZW50KFdlYktpdFdlYkZyYW1lKik7Ci0gICAgICAgIHZpcnR1YWwgfkZy
YW1lTG9hZGVyQ2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgfkZyYW1lTG9hZGVyQ2xpZW50
KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpOwogCiAgICAg
ICAgIFdlYktpdFdlYkZyYW1lKiAgd2ViRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9
CkBAIC0xNzMsNiArMTc0LDcgQEAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1fZnJhbWU7CiAg
ICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAgV2Vi
Q29yZTo6U3RyaW5nIG1fdXNlckFnZW50OworICAgICAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lv
biogbV9wb2xpY3lEZWNpc2lvbjsKIAogICAgICAgICAvLyBQbHVnaW4gdmlldyB0byByZWRpcmVj
dCBkYXRhIHRvCiAgICAgICAgIFdlYkNvcmU6OlBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKSW5k
ZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uY3Bw
CShyZXZpc2lvbmUgMCkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYm5hdmlnYXRpb25h
Y3Rpb24uY3BwCShyZXZpc2lvbmUgMCkKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSAid2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5oIgorI2luY2x1ZGUgIndlYmtpdHByaXZhdGUu
aCIKKyNpbmNsdWRlICJ3ZWJraXRlbnVtdHlwZXMuaCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgor
CitleHRlcm4gIkMiIHsKKworc3RydWN0IF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0
ZSB7CisgICAgV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbiByZWFzb247CisgICAgZ2NoYXIqIG9y
aWdpbmFsVXJpOworfTsKKworI2RlZmluZSBXRUJLSVRfV0VCX05BVklHQVRJT05fQUNUSU9OX0dF
VF9QUklWQVRFKG9iaikoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRf
VFlQRV9XRUJfTkFWSUdBVElPTl9BQ1RJT04sIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2
YXRlKSkKKworZW51bSAgeworICAgIFBST1BfMCwKKworICAgIFBST1BfUkVBU09OLAorICAgIFBS
T1BfT1JJR0lOQUxfVVJJCit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYk5hdmlnYXRpb25B
Y3Rpb24sIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb24sIEdfVFlQRV9PQkpFQ1QpCisKKwor
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uQWN0
aW9uID0gV0VCS0lUX1dFQl9OQVZJR0FUSU9OX0FDVElPTihvYmplY3QpOworCisgICAgc3dpdGNo
KHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIFBST1BfUkVBU09OOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9lbnVtKHZhbHVlLCB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9yZWFzb24obmF2
aWdhdGlvbkFjdGlvbikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfT1JJR0lOQUxf
VVJJOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF93ZWJfbmF2aWdh
dGlvbl9hY3Rpb25fZ2V0X29yaWdpbmFsX3VyaShuYXZpZ2F0aW9uQWN0aW9uKSk7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9Q
RVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX3NldF9wcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFs
dWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24q
IG5hdmlnYXRpb25BY3Rpb24gPSBXRUJLSVRfV0VCX05BVklHQVRJT05fQUNUSU9OKG9iamVjdCk7
CisKKyAgICBzd2l0Y2gocHJvcGVydHlJZCkgeworICAgIGNhc2UgUFJPUF9SRUFTT046CisgICAg
ICAgIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fc2V0X3JlYXNvbihuYXZpZ2F0aW9uQWN0
aW9uLCAoV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbilnX3ZhbHVlX2dldF9lbnVtKHZhbHVlKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9PUklHSU5BTF9VUkk6CisgICAgICAgIHdl
YmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fc2V0X29yaWdpbmFsX3VyaShuYXZpZ2F0aW9uQWN0
aW9uLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwg
cHJvcGVydHlJZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25faW5pdChXZWJLaXRXZWJOYXZpZ2F0aW9u
QWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uKQoreworICAgIG5hdmlnYXRpb25BY3Rpb24tPnByaXYg
PSBXRUJLSVRfV0VCX05BVklHQVRJT05fQUNUSU9OX0dFVF9QUklWQVRFKG5hdmlnYXRpb25BY3Rp
b24pOworCisgICAgV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGUqIHByaXYgPSBuYXZp
Z2F0aW9uQWN0aW9uLT5wcml2OworICAgIHByaXYtPm9yaWdpbmFsVXJpID0gZ19zdHJkdXAoIiIp
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2ZpbmFsaXpl
KEdPYmplY3QqIG9iaikKK3sKKyAgICBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0
aW9uQWN0aW9uID0gV0VCS0lUX1dFQl9OQVZJR0FUSU9OX0FDVElPTihvYmopOworICAgIFdlYktp
dFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlKiBwcml2ID0gbmF2aWdhdGlvbkFjdGlvbi0+cHJp
djsKKworICAgIGdfZnJlZShwcml2LT5vcmlnaW5hbFVyaSk7CisKKyAgICBHX09CSkVDVF9DTEFT
Uyh3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9i
aik7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fY2xhc3Nf
aW5pdChXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uQ2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAg
ICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNz
KTsKKworICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX25hdmlnYXRp
b25fYWN0aW9uX2dldF9wcm9wZXJ0eTsKKyAgICBvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0g
d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfcHJvcGVydHk7CisgICAgb2JqZWN0Q2xh
c3MtPmRpc3Bvc2UgPSB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2ZpbmFsaXplOworCisg
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9SRUFT
T04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfZW51
bSgicmVhc29uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJSZWFzb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlRoZSByZWFzb24gd2h5IHRoaXMgbmF2aWdhdGlvbiBpcyBvY2N1
cnJpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV0VCS0lUX1RZUEVfV0VCX05BVklHQVRJT05fUkVBU09OLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1dFQl9OQVZJR0FU
SU9OX1JFQVNPTl9PVEhFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChHUGFyYW1GbGFncykoV0VCS0lUX1BBUkFNX1JFQURXUklURSkpKTsK
KworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1Bf
T1JJR0lOQUxfVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJh
bV9zcGVjX3N0cmluZygib3JpZ2luYWwtdXJpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9yaWdpbmFsIFVSSSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgVVJJIHRo
YXQgd2FzIHJlcXVlc3RlZCBhcyB0aGUgdGFyZ2V0IGZvciB0aGUgbmF2aWdhdGlvbiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUo
cmVxdWVzdENsYXNzLCBzaXplb2YoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGUpKTsK
K30KKworLyoqCisgKiB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9yZWFzb246Cisg
KiBAbmF2aWdhdGlvbkFjdGlvbjogYSAjV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbgorICoKKyAq
IFJldHVybnMgdGhlIHJlYXNvbiB3aHkgV2ViS2l0IGlzIHJlcXVlc3RpbmcgYSBuYXZpZ2F0aW9u
LgorICoKKyAqIFJldHVybiB2YWx1ZTogYSAjV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbgorICov
CitXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25f
Z2V0X3JlYXNvbihXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfTkFWSUdBVElPTl9BQ1RJ
T04obmF2aWdhdGlvbkFjdGlvbiksIFdFQktJVF9XRUJfTkFWSUdBVElPTl9SRUFTT05fT1RIRVIp
OworCisgICAgcmV0dXJuIG5hdmlnYXRpb25BY3Rpb24tPnByaXYtPnJlYXNvbjsKK30KKworLyoq
CisgKiB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX3NldF9yZWFzb246CisgKiBAbmF2aWdh
dGlvbkFjdGlvbjogYSAjV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbgorICogQHJlYXNvbjogYSAj
V2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbgorICoKKyAqIFNldHMgdGhlIHJlYXNvbiB3aHkgV2Vi
S2l0IGlzIHJlcXVlc3RpbmcgYSBuYXZpZ2F0aW9uLgorICovCit2b2lkIHdlYmtpdF93ZWJfbmF2
aWdhdGlvbl9hY3Rpb25fc2V0X3JlYXNvbihXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uKiBuYXZp
Z2F0aW9uQWN0aW9uLCBXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uIHJlYXNvbikKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfTkFWSUdBVElPTl9BQ1RJT04obmF2aWdhdGlv
bkFjdGlvbikpOworCisgICAgaWYgKG5hdmlnYXRpb25BY3Rpb24tPnByaXYtPnJlYXNvbiA9PSBy
ZWFzb24pCisgICAgICAgIHJldHVybjsKKworICAgIG5hdmlnYXRpb25BY3Rpb24tPnByaXYtPnJl
YXNvbiA9IHJlYXNvbjsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QobmF2aWdhdGlvbkFj
dGlvbiksICJyZWFzb24iKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0
aW9uX2dldF9vcmlnaW5hbF91cmk6CisgKiBAbmF2aWdhdGlvbkFjdGlvbjogYSAjV2ViS2l0V2Vi
TmF2aWdhdGlvbkFjdGlvbgorICoKKyAqIFJldHVybnMgdGhlIFVSSSB0aGF0IHdhcyBvcmlnaW5h
bGx5IHJlcXVlc3RlZC4gVGhpcyBtYXkgZGlmZmVyIGZyb20gdGhlCisgKiBuYXZpZ2F0aW9uIHRh
cmdldCwgZm9yIGluc3RhbmNlIGJlY2F1c2Ugb2YgYSByZWRpcmVjdC4KKyAqCisgKiBSZXR1cm4g
dmFsdWU6IHRoZSBvcmlnaW5hbGx5IHJlcXVlc3RlZCBVUkkKKyAqLworY29uc3QgZ2NoYXIqIHdl
YmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X29yaWdpbmFsX3VyaShXZWJLaXRXZWJOYXZp
Z2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfTkFWSUdBVElPTl9BQ1RJT04obmF2aWdhdGlvbkFjdGlvbiksIE5V
TEwpOworCisgICAgcmV0dXJuIG5hdmlnYXRpb25BY3Rpb24tPnByaXYtPm9yaWdpbmFsVXJpOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fc2V0X29yaWdpbmFsX3Vy
aToKKyAqIEBuYXZpZ2F0aW9uQWN0aW9uOiBhICNXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uCisg
KiBAb3JpZ2luYWxVcmk6IGEgVVJJCisgKgorICogU2V0cyB0aGUgVVJJIHRoYXQgd2FzIG9yaWdp
bmFsbHkgcmVxdWVzdGVkLiBUaGlzIG1heSBkaWZmZXIgZnJvbSB0aGUKKyAqIG5hdmlnYXRpb24g
dGFyZ2V0LCBmb3IgaW5zdGFuY2UgYmVjYXVzZSBvZiBhIHJlZGlyZWN0LgorICovCit2b2lkIHdl
YmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fc2V0X29yaWdpbmFsX3VyaShXZWJLaXRXZWJOYXZp
Z2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBnY2hhciogb3JpZ2luYWxVcmkp
Cit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX05BVklHQVRJT05fQUNUSU9O
KG5hdmlnYXRpb25BY3Rpb24pKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKG9yaWdpbmFsVXJpKTsK
KworICAgIGlmICghc3RyY21wKG5hdmlnYXRpb25BY3Rpb24tPnByaXYtPm9yaWdpbmFsVXJpLCBv
cmlnaW5hbFVyaSkpCisgICAgICAgIHJldHVybjsKKworICAgIGdfZnJlZShuYXZpZ2F0aW9uQWN0
aW9uLT5wcml2LT5vcmlnaW5hbFVyaSk7CisgICAgbmF2aWdhdGlvbkFjdGlvbi0+cHJpdi0+b3Jp
Z2luYWxVcmkgPSBnX3N0cmR1cChvcmlnaW5hbFVyaSk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdf
T0JKRUNUKG5hdmlnYXRpb25BY3Rpb24pLCAib3JpZ2luYWwtdXJpIik7Cit9CisKK30KSW5kZXg6
IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmgJKHJldmlz
aW9uZSAwKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5o
CShyZXZpc2lvbmUgMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBDb2xsYWJvcmEgTHRkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdFQktJVF9XRUJfTkFWSUdBVElPTl9BQ1RJT05fSAor
I2RlZmluZSBXRUJLSVRfV0VCX05BVklHQVRJT05fQUNUSU9OX0gKKworI2luY2x1ZGUgPGdsaWIt
b2JqZWN0Lmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorCitHX0JFR0lO
X0RFQ0xTCisKKy8vIFRoZSBvcmRlciBvZiB0aGlzIGVudW0gbXVzdCBiZSB0aGUgc2FtZSBhcyBO
YXZpZ2F0aW9uVHlwZSBpbiBGcmFtZUxvYWRlclR5cGVzLmgKK3R5cGVkZWYgZW51bSB7CisgICAg
V0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9MSU5LX0NMSUNLRUQsCisgICAgV0VCS0lUX1dF
Ql9OQVZJR0FUSU9OX1JFQVNPTl9GT1JNX1NVQk1JVFRFRCwKKyAgICBXRUJLSVRfV0VCX05BVklH
QVRJT05fUkVBU09OX0JBQ0tfRk9SV0FSRCwKKyAgICBXRUJLSVRfV0VCX05BVklHQVRJT05fUkVB
U09OX1JFTE9BRCwKKyAgICBXRUJLSVRfV0VCX05BVklHQVRJT05fUkVBU09OX0ZPUk1fUkVTVUJN
SVRURUQsCisgICAgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9PVEhFUiwgICAgCisgICAg
V0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9QTFVHX0lOX1JFUVVFU1QKK30gV2ViS2l0V2Vi
TmF2aWdhdGlvblJlYXNvbjsKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfTkFWSUdBVElPTl9B
Q1RJT04gICAgICAgICAgICAod2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfdHlwZSgp
KQorI2RlZmluZSBXRUJLSVRfV0VCX05BVklHQVRJT05fQUNUSU9OKG9iaikgICAgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9OQVZJR0FU
SU9OX0FDVElPTiwgV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbikpCisjZGVmaW5lIFdFQktJVF9X
RUJfTkFWSUdBVElPTl9BQ1RJT05fQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
Q0FTVCgoa2xhc3MpLCBXRUJLSVRfVFlQRV9XRUJfTkFWSUdBVElPTl9BQ1RJT04sIFdlYktpdFdl
Yk5hdmlnYXRpb25BY3Rpb25DbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfTkFWSUdBVElP
Tl9BQ1RJT04ob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwg
V0VCS0lUX1RZUEVfV0VCX05BVklHQVRJT05fQUNUSU9OKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dF
Ql9OQVZJR0FUSU9OX0FDVElPTl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBF
KChrbGFzcyksIFdFQktJVF9UWVBFX1dFQl9OQVZJR0FUSU9OX0FDVElPTikpCisjZGVmaW5lIFdF
QktJVF9XRUJfTkFWSUdBVElPTl9BQ1RJT05fR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFO
Q0VfR0VUX0NMQVNTKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfTkFWSUdBVElPTl9BQ1RJT04sIFdl
YktpdFdlYk5hdmlnYXRpb25BY3Rpb25DbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJOYXZpZ2F0aW9uQWN0aW9uIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb247Cit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbkNsYXNzIFdlYktpdFdlYk5hdmlnYXRpb25B
Y3Rpb25DbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJp
dmF0ZSBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRX
ZWJOYXZpZ2F0aW9uQWN0aW9uIHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKyAgICBX
ZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZSogcHJpdjsKK307CisKK3N0cnVjdCBfV2Vi
S2l0V2ViTmF2aWdhdGlvbkFjdGlvbkNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2Ns
YXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlv
bl9nZXRfdHlwZSh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29u
Cit3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9yZWFzb24oV2ViS2l0V2ViTmF2aWdh
dGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfcmVhc29uKFdlYktpdFdlYk5hdmlnYXRpb25BY3Rp
b24qIG5hdmlnYXRpb25BY3Rpb24sIFdlYktpdFdlYk5hdmlnYXRpb25SZWFzb24gcmVhc29uKTsK
KworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25f
Z2V0X29yaWdpbmFsX3VyaShXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uQWN0
aW9uKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX3Nl
dF9vcmlnaW5hbF91cmkoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlv
biwgY29uc3QgZ2NoYXIqIG9yaWdpbmFsVXJpKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCklu
ZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb25lIDM2ODkyKQorKysg
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKGNvcGlhIGxvY2FsZSkKQEAgLTI1
LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIndlYmtpdHdlYnZp
ZXcuaCIKKyNpbmNsdWRlICJ3ZWJraXRlbnVtdHlwZXMuaCIKICNpbmNsdWRlICJ3ZWJraXRtYXJz
aGFsLmgiCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYmJh
Y2tmb3J3YXJkbGlzdC5oIgpAQCAtNzEsNiArNzIsOCBAQAogZW51bSB7CiAgICAgLyogbm9ybWFs
IHNpZ25hbHMgKi8KICAgICBOQVZJR0FUSU9OX1JFUVVFU1RFRCwKKyAgICBOQVZJR0FUSU9OX1BP
TElDWV9ERUNJU0lPTl9SRVFVRVNURUQsCisgICAgTUlNRV9UWVBFX1BPTElDWV9ERUNJU0lPTl9S
RVFVRVNURUQsCiAgICAgV0lORE9XX09CSkVDVF9DTEVBUkVELAogICAgIExPQURfU1RBUlRFRCwK
ICAgICBMT0FEX0NPTU1JVFRFRCwKQEAgLTU2Nyw5ICs1NzAsOCBAQAogICAgIHJldHVybiAwOwog
fQogCi1zdGF0aWMgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlIHdlYmtpdF93ZWJfdmlld19yZWFs
X25hdmlnYXRpb25fcmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSogZnJh
bWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KikKK3N0YXRpYyBXZWJLaXROYXZpZ2F0aW9uUmVzcG9u
c2Ugd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQoV2ViS2l0V2ViVmll
dyosIFdlYktpdFdlYkZyYW1lKiwgV2ViS2l0TmV0d29ya1JlcXVlc3QqKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNFX0FDQ0VQ
VDsKIH0KIApAQCAtNzM3LDEwICs3MzksMTAgQEAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfbmF2
aWdhdGlvbl9yZXF1ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBpaGludCwgR1Zh
bHVlKiByZXR1cm5BY2N1LCBjb25zdCBHVmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGR1
bW15KQogewogICBnYm9vbGVhbiBjb250aW51ZUVtaXNzaW9uID0gVFJVRTsKLSAgaW50IHNpZ25h
bEhhbmRsZWQgPSBnX3ZhbHVlX2dldF9pbnQoaGFuZGxlclJldHVybik7Ci0gIGdfdmFsdWVfc2V0
X2ludChyZXR1cm5BY2N1LCBzaWduYWxIYW5kbGVkKTsKKyAgV2ViS2l0TmF2aWdhdGlvblJlc3Bv
bnNlIG5hdmlnYXRpb25SZXNwb25zZSA9IChXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2UpZ192YWx1
ZV9nZXRfZW51bShoYW5kbGVyUmV0dXJuKTsKKyAgZ192YWx1ZV9zZXRfZW51bShyZXR1cm5BY2N1
LCBuYXZpZ2F0aW9uUmVzcG9uc2UpOwogCi0gIGlmIChzaWduYWxIYW5kbGVkICE9IFdFQktJVF9O
QVZJR0FUSU9OX1JFU1BPTlNFX0FDQ0VQVCkKKyAgaWYgKG5hdmlnYXRpb25SZXNwb25zZSAhPSBX
RUJLSVRfTkFWSUdBVElPTl9SRVNQT05TRV9BQ0NFUFQpCiAgICAgICBjb250aW51ZUVtaXNzaW9u
ID0gRkFMU0U7CiAKICAgcmV0dXJuIGNvbnRpbnVlRW1pc3Npb247CkBAIC03NzYsMTggKzc3OCw4
NCBAQAogICAgICAqIFNpZ25hbHMKICAgICAgKi8KIAorICAgIC8qKgorICAgICAqIFdlYktpdFdl
YlZpZXc6Om5hdmlnYXRpb24tcmVxdWVzdGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVj
dCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAZnJhbWU6IHRoZSAjV2Vi
S2l0V2ViRnJhbWUgdGhhdCByZXF1aXJlZCB0aGUgbmF2aWdhdGlvbgorICAgICAqIEByZXF1ZXN0
OiBhICNXZWJLaXROZXR3b3JrUmVxdWVzdAorICAgICAqIEByZXR1cm46IGEgV2ViS2l0TmF2aWdh
dGlvblJlc3BvbnNlCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gQGZyYW1lIHJlcXVlc3Rz
IGEgbmF2aWdhdGlvbiB0byBhbm90aGVyIHBhZ2UuCisgICAgICoKKyAgICAgKiBEZXByZWNhdGVk
OiBVc2UgbmF2aWdhdGlvbi1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkIGluc3RlYWQKKyAgICAg
Ki8KICAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tOQVZJR0FUSU9OX1JFUVVFU1RFRF0gPSBn
X3NpZ25hbF9uZXcoIm5hdmlnYXRpb24tcmVxdWVzdGVkIiwKICAgICAgICAgICAgIEdfVFlQRV9G
Uk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCiAgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJ
R05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCiAgICAgICAgICAgICBHX1NUUlVDVF9P
RkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgbmF2aWdhdGlvbl9yZXF1ZXN0ZWQpLAogICAgICAg
ICAgICAgd2Via2l0X25hdmlnYXRpb25fcmVxdWVzdF9oYW5kbGVkLAogICAgICAgICAgICAgTlVM
TCwKLSAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0lOVF9fT0JKRUNUX09CSkVDVCwKLSAgICAg
ICAgICAgIEdfVFlQRV9JTlQsIDIsCi0gICAgICAgICAgICBHX1RZUEVfT0JKRUNULAotICAgICAg
ICAgICAgR19UWVBFX09CSkVDVCk7CisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9FTlVNX19P
QkpFQ1RfT0JKRUNULAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfTkFWSUdBVElPTl9SRVNQT05T
RSwgMiwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9GUkFNRSwKKyAgICAgICAgICAgIFdF
QktJVF9UWVBFX05FVFdPUktfUkVRVUVTVCk7CiAKICAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJW
aWV3OjpuYXZpZ2F0aW9uLXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92
aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBm
cmFtZTogdGhlICNXZWJLaXRXZWJGcmFtZSB0aGF0IHJlcXVpcmVkIHRoZSBuYXZpZ2F0aW9uCisg
ICAgICogQHJlcXVlc3Q6IGEgI1dlYktpdE5ldHdvcmtSZXF1ZXN0CisgICAgICogQG5hdmlnYXRp
b25fYWN0aW9uOiBhICNXZWJLaXRXZWJOYXZpZ2F0aW9uCisgICAgICogQHBvbGljeV9kZWNpc2lv
bjogYSAjV2ViS2l0V2ViUG9saWN5RGVjaXNpb24KKyAgICAgKiBAcmV0dXJuOiBUUlVFIGlmIHRo
ZSBzaWduYWwgd2lsbCBiZSBoYW5kbGVkLCAKKyAgICAgKiAgICAgICAgICBGQUxTRSB0byBoYXZl
IHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFwcGx5CisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4g
QGZyYW1lIHJlcXVlc3RzIGEgbmF2aWdhdGlvbiB0byBhbm90aGVyIHBhZ2UuCisgICAgICogSWYg
dGhpcyBzaWduYWwgaXMgbm90IGhhbmRsZWQsIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIGFs
bG93IHRoZQorICAgICAqIG5hdmlnYXRpb24uCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3
X3NpZ25hbHNbTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT05fUkVRVUVTVEVEXSA9IGdfc2lnbmFs
X25ldygibmF2aWdhdGlvbi1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkIiwKKyAgICAgICAgICAg
IEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZs
YWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICAw
LAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAg
ICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVF9P
QkpFQ1RfT0JKRUNUX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCA0LAorICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVf
TkVUV09SS19SRVFVRVNULAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX05BVklHQVRJT05f
QUNUSU9OLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJU0lPTik7CisK
KyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjptaW1lLXR5cGUtcG9saWN5LWRlY2lzaW9u
LXJlcXVlc3RlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNp
Z25hbCBpcyBlbWl0dGVkCisgICAgICogQGZyYW1lOiB0aGUgI1dlYktpdFdlYkZyYW1lIHRoYXQg
cmVxdWlyZWQgdGhlIHBvbGljeSBkZWNpc2lvbgorICAgICAqIEByZXF1ZXN0OiBhIFdlYktpdE5l
dHdvcmtSZXF1ZXN0CisgICAgICogQG1pbWV0eXBlOiB0aGUgTUlNRSB0eXBlIGF0dGVtcHRlZCB0
byBsb2FkCisgICAgICogQHBvbGljeV9kZWNpc2lvbjogYSAjV2ViS2l0V2ViUG9saWN5RGVjaXNp
b24KKyAgICAgKiBAcmV0dXJuOiBUUlVFIGlmIHRoZSBzaWduYWwgd2lsbCBiZSBoYW5kbGVkLCAK
KyAgICAgKiAgICAgICAgICBGQUxTRSB0byBoYXZlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFwcGx5
CisgICAgICoKKyAgICAgKiBEZWNpZGUgd2hldGhlciBvciBub3QgdG8gZGlzcGxheSBvZiBub3Qg
dGhlIGdpdmVuIE1JTUUgdHlwZS4KKyAgICAgKiBJZiB0aGlzIHNpZ25hbCBpcyBub3QgaGFuZGxl
ZCwgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gc2hvdyB0aGUKKyAgICAgKiBjb250ZW50IG9m
IHRoZSByZXF1ZXN0ZWQgVVJJIGlmIFdlYktpdCBjYW4gc2hvdyB0aGlzIE1JTUUgdHlwZSwKKyAg
ICAgKiBlbHNlIGl0IHdpbGwgYmUgaWdub3JlZC4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3Zp
ZXdfc2lnbmFsc1tNSU1FX1RZUEVfUE9MSUNZX0RFQ0lTSU9OX1JFUVVFU1RFRF0gPSBnX3NpZ25h
bF9uZXcoIm1pbWUtdHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkIiwKKyAgICAgICAgICAg
IEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZs
YWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICAw
LAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAg
ICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVF9P
QkpFQ1RfU1RSSU5HX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCA0LAorICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVf
TkVUV09SS19SRVFVRVNULAorICAgICAgICAgICAgR19UWVBFX1NUUklORywKKyAgICAgICAgICAg
IFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04pOworCisgICAgLyoqCiAgICAgICogV2Vi
S2l0V2ViVmlldzo6d2luZG93LW9iamVjdC1jbGVhcmVkOgogICAgICAqIEB3ZWJfdmlldzogdGhl
IG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAgICAgKiBAZnJhbWU6IHRo
ZSAjV2ViS2l0V2ViRnJhbWUgdG8gd2hpY2ggQHdpbmRvd19vYmplY3QgYmVsb25ncwpAQCAtMjAz
OCw2ICsyMTA2LDI3IEBACiB9CiAKIC8qKgorICogd2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21p
bWVfdHlwZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQG1pbWVfdHlwZTog
YSBNSU1FIHR5cGUKKyAqCisgKiBUaGlzIGZ1bmN0aW9ucyByZXR1cm5zIHdoZXRoZXIgb3Igbm90
IGEgTUlNRSB0eXBlIGNhbiBiZSBkaXNwbGF5ZWQgdXNpbmcgdGhpcyB2aWV3LgorICoKKyAqIFJl
dHVybiB2YWx1ZTogYSAjZ2Jvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgTUlNRSB0eXBlIGNhbiBi
ZSBkaXNwbGF5ZWQKKyAqKi8KKworZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21p
bWVfdHlwZSAoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIG1pbWVUeXBlKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwg
RkFMU0UpOworICAgIAorICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Via2l0X3dlYl92aWV3X2dl
dF9tYWluX2ZyYW1lKHdlYlZpZXcpKTsKKyAgICBpZiAoRnJhbWVMb2FkZXIqIGxvYWRlciA9IGZy
YW1lLT5sb2FkZXIoKSkKKyAgICAgICAgcmV0dXJuIGxvYWRlci0+Y2FuU2hvd01JTUVUeXBlKG1p
bWVUeXBlKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBGQUxTRTsKK30KKworLyoqCiAgKiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3RyYW5zcGFyZW50OgogICogQHdlYl92aWV3OiBhICNXZWJLaXRX
ZWJWaWV3CiAgKgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAJKHJldmlzaW9u
ZSAzNjg5MikKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCShjb3BpYSBs
b2NhbGUpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIg
SGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTgzLDYgKzg0LDE2IEBACiAgICAgcmV0dXJuIGNsaWVu
dCA/IGNsaWVudC0+d2ViVmlldygpIDogMDsKIH0KIAorV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNv
biBraXQoV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gKFdlYktp
dFdlYk5hdmlnYXRpb25SZWFzb24pdHlwZTsKK30KKyAKK1dlYkNvcmU6Ok5hdmlnYXRpb25UeXBl
IGNvcmUoV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbiB0eXBlKQoreworICAgIHJldHVybiAoV2Vi
Q29yZTo6TmF2aWdhdGlvblR5cGUpdHlwZTsKK30KKwogfSAvKiogZW5kIG5hbWVzcGFjZSBXZWJL
aXQgKi8KIAogdm9pZCB3ZWJraXRfaW5pdCgpCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwCShyZXZpc2lvbmUgMCkKKysrIFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcAkocmV2aXNpb25lIDApCkBAIC0wLDAg
KzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIndlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgiCisK
KyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCisjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5o
IgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K2V4dGVybiAiQyIgeworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlBvbGljeURlY2lzaW9uLCB3
ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbiwgR19UWVBFX09CSkVDVCk7CisKK3N0cnVjdCBfV2Vi
S2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlIHsKKyAgICBXZWJLaXRXZWJGcmFtZSogZnJhbWU7
CisgICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBmcmFtZVBvbGljeUZ1bmN0aW9uOworICAgIGdib29s
ZWFuIGlzQ2FuY2VsbGVkOworfTsKKworI2RlZmluZSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lP
Tl9HRVRfUFJJVkFURShvYmopICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiks
IFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFdlYlBvbGljeURlY2lzaW9u
UHJpdmF0ZSkpCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2NsYXNz
X2luaXQoV2ViS2l0V2ViUG9saWN5RGVjaXNpb25DbGFzcyogZGVjaXNpb25DbGFzcykKK3sKKyAg
ICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZGVjaXNpb25DbGFzcywgc2l6ZW9mKFdlYktpdFdl
YlBvbGljeURlY2lzaW9uUHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Bv
bGljeV9kZWNpc2lvbl9pbml0KFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sK
KyAgICBkZWNpc2lvbi0+cHJpdiA9IFdFQktJVF9XRUJfUE9MSUNZX0RFQ0lTSU9OX0dFVF9QUklW
QVRFKGRlY2lzaW9uKTsKK30KKworV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIHdlYmtpdF93ZWJf
cG9saWN5X2RlY2lzaW9uX25ldyhXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYkNvcmU6OkZyYW1l
UG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoZnJh
bWUsIE5VTEwpOworCisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uID0gV0VC
S0lUX1dFQl9QT0xJQ1lfREVDSVNJT04oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9QT0xJ
Q1lfREVDSVNJT04sIE5VTEwpKTsKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUq
IHByaXYgPSBkZWNpc2lvbi0+cHJpdjsKKworICAgIHByaXYtPmZyYW1lID0gZnJhbWU7CisgICAg
cHJpdi0+ZnJhbWVQb2xpY3lGdW5jdGlvbiA9IGZ1bmN0aW9uOworICAgIHByaXYtPmlzQ2FuY2Vs
bGVkID0gRkFMU0U7CisKKyAgICByZXR1cm4gZGVjaXNpb247Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlCisgKiBAZGVjaXNpb246IGEgI1dlYktpdFdlYlBvbGlj
eURlY2lzaW9uCisgKgorICogV2lsbCBzZW5kIHRoZSBVU0UgZGVjaXNpb24gdG8gdGhlIHBvbGlj
eSBpbXBsZW1lbnRlci4KKyAqLwordm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91c2Uo
V2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKworICAgIFdlYktp
dFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSogcHJpdiA9IGRlY2lzaW9uLT5wcml2OworCisgICAg
aWYgKCFwcml2LT5pc0NhbmNlbGxlZCkKKyAgICAgICAgKGNvcmUocHJpdi0+ZnJhbWUpLT5sb2Fk
ZXIoKS0+Kihwcml2LT5mcmFtZVBvbGljeUZ1bmN0aW9uKSkoV2ViQ29yZTo6UG9saWN5VXNlKTsK
K30KKworLyoqCisgKiB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9pZ25vcmUKKyAqIEBkZWNp
c2lvbjogYSAjV2ViS2l0V2ViUG9saWN5RGVjaXNpb24KKyAqCisgKiBXaWxsIHNlbmQgdGhlIElH
Tk9SRSBkZWNpc2lvbiB0byB0aGUgcG9saWN5IGltcGxlbWVudGVyLgorICovCit2b2lkIHdlYmtp
dF93ZWJfcG9saWN5X2RlY2lzaW9uX2lnbm9yZShXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVj
aXNpb24pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJ
U0lPTihkZWNpc2lvbikpOworCisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBw
cml2ID0gZGVjaXNpb24tPnByaXY7CisgICAgCisgICAgaWYgKCFwcml2LT5pc0NhbmNlbGxlZCkK
KyAgICAgICAgKGNvcmUocHJpdi0+ZnJhbWUpLT5sb2FkZXIoKS0+Kihwcml2LT5mcmFtZVBvbGlj
eUZ1bmN0aW9uKSkoV2ViQ29yZTo6UG9saWN5SWdub3JlKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZAorICogQGRlY2lzaW9uOiBhICNXZWJLaXRXZWJQ
b2xpY3lEZWNpc2lvbgorICoKKyAqIFdpbGwgc2VuZCB0aGUgRE9XTkxPQUQgZGVjaXNpb24gdG8g
dGhlIHBvbGljeSBpbXBsZW1lbnRlci4KKyAqLwordm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNp
c2lvbl9kb3dubG9hZChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbikp
OworCisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24t
PnByaXY7CisKKyAgICBnX3dhcm5pbmcoIkRvd25sb2FkIGlzIG5vdCBzdXBwb3J0ZWQiKTsKKyAg
ICB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9pZ25vcmUoZGVjaXNpb24pOworCisjaWYgMAor
ICAgIGlmICghcHJpdi0+aXNDYW5jZWxsZWQpCisgICAgICAgIChjb3JlKHByaXYtPmZyYW1lKS0+
bG9hZGVyKCktPioocHJpdi0+ZnJhbWVQb2xpY3lGdW5jdGlvbikpKFdlYkNvcmU6OlBvbGljeURv
d25sb2FkKTsKKyNlbmRpZgorfQorCit2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Nh
bmNlbChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbikpOworCisgICAg
V2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7Cisg
ICAgCisgICAgcHJpdi0+aXNDYW5jZWxsZWQgPSBUUlVFOworfQorCit9CkluZGV4OiBXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5oCShyZXZpc2lvbmUgMzY4OTIpCisrKyBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmgJKGNvcGlhIGxvY2FsZSkKQEAgLTEsNiArMSw3IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDcsIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02OSw5ICs3
MCw2IEBACiAgICAgICovCiAgICAgV2ViS2l0V2ViVmlldyAgICAgICAgICAgICogKCogY3JlYXRl
X3dlYl92aWV3KSAgICAgICAgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKIAotICAgIC8qCi0g
ICAgICogVE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhpbmcgbGlrZSBXZWJQb2xpY3lEZWNpc2lv
bkxpc3RlbmVyX1Byb3RvY29sIGluc3RlYWQKLSAgICAgKi8KICAgICBXZWJLaXROYXZpZ2F0aW9u
UmVzcG9uc2UgICAoKiBuYXZpZ2F0aW9uX3JlcXVlc3RlZCkgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRXZWJGcmFtZSAgICAgICAqZnJhbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE5l
dHdvcmtSZXF1ZXN0ICpyZXF1ZXN0KTsKQEAgLTI0OCw2ICsyNDYsMTAgQEAKIHdlYmtpdF93ZWJf
dmlld19nZXRfc2V0dGluZ3MgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAqd2ViX3ZpZXcpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3ZpZXdfY2Fu
X3Nob3dfbWltZV90eXBlICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92
aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICAgICAgICAgICptaW1lX3R5cGUpOworCitXRUJLSVRfQVBJIGdib29sZWFuCiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3RyYW5zcGFyZW50ICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgKndlYl92aWV3KTsKIAogV0VCS0lUX0FQSSB2b2lkCkluZGV4OiBXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0cHJpdmF0ZS5oCShyZXZpc2lvbmUgMzY4OTIpCisrKyBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmgJKGNvcGlhIGxvY2FsZSkKQEAgLTEsNiArMSw3IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggSmFuIE1pY2hhZWwgQy4gQWxvbnpvCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGFib3JhIEx0ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjksNiArMzAsOCBA
QAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dl
YmtpdHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViZnJhbWUuaD4KKyNpbmNs
dWRlIDx3ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaD4KKyNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJz
ZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuaD4K
IApAQCAtNTQsNiArNTcsOSBAQAogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiBraXQoV2ViQ29y
ZTo6SGlzdG9yeUl0ZW0qKTsKIAogICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogY29yZShX
ZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqKTsKKworICAgIFdlYktpdFdlYk5hdmlnYXRpb25SZWFz
b24ga2l0KFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIHR5cGUpOworICAgIFdlYkNvcmU6Ok5hdmln
YXRpb25UeXBlIGNvcmUoV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbiByZWFzb24pOwogfQogCiBl
eHRlcm4gIkMiIHsKQEAgLTExMCw2ICsxMTYsMTIgQEAKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRl
bSoKICAgICB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0oV2ViQ29y
ZTo6SGlzdG9yeUl0ZW0qKTsKIAorICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKgorICAgIHdl
YmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX25ldyAoV2ViS2l0V2ViRnJhbWUqLCBXZWJDb3JlOjpG
cmFtZVBvbGljeUZ1bmN0aW9uKTsKKworICAgIHZvaWQKKyAgICB3ZWJraXRfd2ViX3BvbGljeV9k
ZWNpc2lvbl9jYW5jZWwgKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbik7CisKICAg
ICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB3ZWJraXR3ZWJmcmFtZS5oIG9uY2UgdGhlaXIgQVBJ
IGhhcyBiZWVuIGRpc2N1c3NlZC4KIAogICAgIFdFQktJVF9BUEkgR1NMaXN0KgpJbmRleDogV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oCShyZXZpc2lvbmUgMCkK
KysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgJKHJldmlzaW9u
ZSAwKQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9y
YSBMdGQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpZm5kZWYgV0VCS0lUX1dFQl9QT0xJQ1lfREVDSVNJT05fSAorI2RlZmluZSBXRUJL
SVRfV0VCX1BPTElDWV9ERUNJU0lPTl9ICisKKyNpbmNsdWRlIDxjb25maWcuaD4KKworI2luY2x1
ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSAid2Via2l0
ZGVmaW5lcy5oIgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1BP
TElDWV9ERUNJU0lPTiAgICAgICAgICAgICh3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9nZXRf
dHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTihvYmopICAgICAgICAg
ICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfUE9M
SUNZX0RFQ0lTSU9OLCBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbikpCisjZGVmaW5lIFdFQktJVF9X
RUJfUE9MSUNZX0RFQ0lTSU9OX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NB
U1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFdlYlBv
bGljeURlY2lzaW9uQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJU0lP
TihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRf
VFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9OKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9QT0xJQ1lf
REVDSVNJT05fQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAg
V0VCS0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJU0lPTikpCisjZGVmaW5lIFdFQktJVF9XRUJfUE9M
SUNZX0RFQ0lTSU9OX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygo
b2JqKSwgIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFdlYlBvbGljeURl
Y2lzaW9uQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Q
cml2YXRlIFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTsKK3N0cnVjdCBfV2ViS2l0V2Vi
UG9saWN5RGVjaXNpb24geworICAgIEdPYmplY3QgcGFyZW50OworICAgIFdlYktpdFdlYlBvbGlj
eURlY2lzaW9uUHJpdmF0ZSogcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVj
aXNpb25DbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudDsKK307CisKK1dFQktJVF9BUEkg
R1R5cGUKK3dlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2dldF90eXBlICh2b2lkKTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91c2UgKFdlYktpdFdlYlBv
bGljeURlY2lzaW9uKiBkZWNpc2lvbik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9w
b2xpY3lfZGVjaXNpb25faWdub3JlIChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24p
OworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2Fk
IChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pOworCitHX0VORF9ERUNMUworCisj
ZW5kaWYKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgJKHJldmlzaW9uZSAzNjg5MikK
KysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaAkoY29waWEgbG9jYWxlKQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC01Miw2ICs1Myw5IEBACiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJh
bWUgV2ViS2l0V2ViRnJhbWU7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVDbGFzcyBX
ZWJLaXRXZWJGcmFtZUNsYXNzOwogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVj
aXNpb24gV2ViS2l0V2ViUG9saWN5RGVjaXNpb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vi
UG9saWN5RGVjaXNpb25DbGFzcyBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzOworCiB0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3MgV2ViS2l0V2ViU2V0dGluZ3M7CiB0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzOwog
CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXQuaAkocmV2aXNpb25lIDM2ODkyKQorKysgV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0LmgJKGNvcGlhIGxvY2FsZSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGFib3JhIEx0ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjgsNiArMjksOCBA
QAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dl
YmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJoaXN0
b3J5aXRlbS5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oPgor
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmg+CiAjaW5jbHVkZSA8
d2Via2l0L3dlYmtpdGVudW10eXBlcy5oPgogCiAjZW5kaWYgLyogX19XRUJLSVRfSF9fICovCklu
ZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5n
ZUxvZwkocmV2aXNpb25lIDM2ODkyKQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKGNvcGlhIGxv
Y2FsZSkKQEAgLTEsMyArMSw1OSBAQAorMjAwOC0wOS0yNSAgTWFyY28gQmFyaXNpb25lICA8bWFy
Y28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjU2MgorICAgICAgICBbZ3RrXSBJbXBsZW1lbnQgV2ViUG9saWN5RGVsZWdhdGUgbWV0
aG9kcworCisgICAgICAgIE9yaWdpbmFsIHdvcmsgYnkgUGllcnJlLUx1YyBCZWF1ZG9pbi4KKwor
ICAgICAgICBUaGlzIGltcGxlbWVudHMgdGhlIGRlbGVnYXRlcyBtZXRob2RzIG9mIFdlYlBvbGlj
eURlbGVnYXRlLgorICAgICAgICBTaW5jZSBHdGsrL0MgZG9lc24ndCBoYXZlIGRlbGVnYXRlIG1l
dGhvZHMsIHRoZXkgYXJlIHJlcGxhY2VkIHdpdGgKKyAgICAgICAgc2lnbmFscy4KKworICAgICAg
ICBBIG5ldyBvYmplY3QgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24gYWxsb3cgdGhlIGJyb3dzZXIg
dG8gZGVsYXkgaXRzCisgICAgICAgIHJlc3BvbnNlIGluIGNlcnRhaW4gY2FzZXMuIFdlYktpdFdl
Yk5hdmlnYXRpb25BY3Rpb24gY29udGFpbnMgdGhlCisgICAgICAgIGluZm9ybWF0aW9uIGFib3V0
IHdoYXQgY2F1c2VkIGEgbmF2aWdhdGlvbiByZXF1ZXN0LgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6RnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6fkZyYW1lTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUpOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkZXJDbGllbnQ6OmNhblNob3dNSU1FVHlwZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0Lmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdGRlZmluZXMuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJp
dmF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUp
OgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAgICAgICogd2Via2l0L3dl
YmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJO
YXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTo6KToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0aW9u
QWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcHJvcGVydHkp
OgorICAgICAgICAoX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlOjp3ZWJraXRfd2Vi
X25hdmlnYXRpb25fYWN0aW9uX3NldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2ViTmF2
aWdhdGlvbkFjdGlvblByaXZhdGU6OndlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25faW5pdCk6
CisgICAgICAgIChfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGU6OndlYmtpdF93ZWJf
bmF2aWdhdGlvbl9hY3Rpb25fZmluYWxpemUpOgorICAgICAgICAoX1dlYktpdFdlYk5hdmlnYXRp
b25BY3Rpb25Qcml2YXRlOjp3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2NsYXNzX2luaXQp
OgorICAgICAgICAoX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlOjp3ZWJraXRfd2Vi
X25hdmlnYXRpb25fYWN0aW9uX2dldF9yZWFzb24pOgorICAgICAgICAoX1dlYktpdFdlYk5hdmln
YXRpb25BY3Rpb25Qcml2YXRlOjp3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX3NldF9yZWFz
b24pOgorICAgICAgICAoX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlOjp3ZWJraXRf
d2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9vcmlnaW5hbF91cmkpOgorICAgICAgICAoX1dlYktp
dFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlOjp3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9u
X3NldF9vcmlnaW5hbF91cmkpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9u
YWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTo6
d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fY2xhc3NfaW5pdCk6CisgICAgICAgIChfV2ViS2l0
V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9pbml0
KToKKyAgICAgICAgKF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGU6OndlYmtpdF93ZWJf
cG9saWN5X2RlY2lzaW9uX25ldyk6CisgICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Q
cml2YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91c2UpOgorICAgICAgICAoX1dlYktp
dFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25faWdu
b3JlKToKKyAgICAgICAgKF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGU6OndlYmtpdF93
ZWJfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkKToKKyAgICAgICAgKF9XZWJLaXRXZWJQb2xpY3lE
ZWNpc2lvblByaXZhdGU6OndlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2NhbmNlbCk6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmg6IEFkZGVkLgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmll
dy5oOgorCiAyMDA4LTA5LTE2ICBBbHAgVG9rZXIgIDxhbHBAbnVhbnRpLmNvbT4KIAogICAgICAg
ICBTdWdnZXN0ZWQgYnkgRGF2ZSBIeWF0dC4KSW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBDaGFuZ2VMb2cJKHJldmlzaW9uZSAzNjg5MikKKysrIENoYW5nZUxvZwkoY29waWEgbG9jYWxl
KQpAQCAtMSwzICsxLDE1IEBACisyMDA4LTA5LTI1ICBNYXJjbyBCYXJpc2lvbmUgIDxtYXJjby5i
YXJpc2lvbmVAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NTYyCisgICAgICAgIFtndGtdIEltcGxlbWVudCBXZWJQb2xpY3lEZWxlZ2F0ZSBtZXRob2Rz
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIFdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnBvbGljeWRlY2lzaW9uLmgsCisgICAgICAgIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnBvbGljeWRlY2lzaW9uLmNwcCwKKyAgICAgICAgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
bmF2aWdhdGlvbmFjdGlvbi5oIGFuZAorICAgICAgICBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJuYXZpZ2F0aW9uYWN0aW9uLmNwcC4KKwogMjAwOC0wOS0yMyAgUmljaGFyZCBIdWx0ICA8cmlj
aGFyZEBpbWVuZGlvLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbHAgVG9rZXIuIExhbmRl
ZCBieSBKYW4gQWxvbnpvLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25924</attachid>
            <date>2008-12-10 13:38:44 -0800</date>
            <delta_ts>2008-12-15 16:37:45 -0800</delta_ts>
            <desc>patch reworked to apply cleanly</desc>
            <filename>policy-delegates.diff</filename>
            <type>text/plain</type>
            <size>41305</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggNDZjNmNl
MS4uN2FlYzA2MSAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUu
YW0KQEAgLTMwOCw2ICszMDgsOCBAQCB3ZWJraXRndGtfaF9hcGkgKz0gXAogCVdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmZyYW1lLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5oIFwK
KwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmggXAorCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmggXAogCVdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndp
bmRvd2ZlYXR1cmVzLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAt
MzQxLDYgKzM0Myw4IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJmcmFtZS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3Rv
cnlpdGVtLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcCBc
CisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5jcHAgXAorCVdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcCBcCiAJV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVy
ZXMuY3BwCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCmluZGV4IDQwMmZkMTEuLjVmNzM2MjIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMDgt
MDktMjUgIE1hcmNvIEJhcmlzaW9uZSAgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NjIKKyAgICAgICAgW2d0a10gSW1w
bGVtZW50IFdlYlBvbGljeURlbGVnYXRlIG1ldGhvZHMKKworICAgICAgICBPcmlnaW5hbCB3b3Jr
IGJ5IFBpZXJyZS1MdWMgQmVhdWRvaW4uCisKKyAgICAgICAgVGhpcyBpbXBsZW1lbnRzIHRoZSBk
ZWxlZ2F0ZXMgbWV0aG9kcyBvZiBXZWJQb2xpY3lEZWxlZ2F0ZS4KKyAgICAgICAgU2luY2UgR3Rr
Ky9DIGRvZXNuJ3QgaGF2ZSBkZWxlZ2F0ZSBtZXRob2RzLCB0aGV5IGFyZSByZXBsYWNlZCB3aXRo
CisgICAgICAgIHNpZ25hbHMuCisKKyAgICAgICAgQSBuZXcgb2JqZWN0IFdlYktpdFdlYlBvbGlj
eURlY2lzaW9uIGFsbG93IHRoZSBicm93c2VyIHRvIGRlbGF5IGl0cworICAgICAgICByZXNwb25z
ZSBpbiBjZXJ0YWluIGNhc2VzLiBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uIGNvbnRhaW5zIHRo
ZQorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGNhdXNlZCBhIG5hdmlnYXRpb24gcmVx
dWVzdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OkZyYW1lTG9hZGVyQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6On5GcmFtZUxvYWRlckNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck1JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVj
ayk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5cGUp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdC5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRkZWZpbmVzLmg6
CisgICAgICAgICogd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwOgorICAgICAgICAoV2ViS2l0Ojpr
aXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJp
dmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmNwcDog
QWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGU6Oik6Cisg
ICAgICAgIChfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGU6OndlYmtpdF93ZWJfbmF2
aWdhdGlvbl9hY3Rpb25fZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0
aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfcHJvcGVy
dHkpOgorICAgICAgICAoX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlOjp3ZWJraXRf
d2ViX25hdmlnYXRpb25fYWN0aW9uX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYk5hdmlnYXRp
b25BY3Rpb25Qcml2YXRlOjp3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2ZpbmFsaXplKToK
KyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9u
YXZpZ2F0aW9uX2FjdGlvbl9jbGFzc19pbml0KToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0
aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcmVhc29u
KToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dl
Yl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfcmVhc29uKToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZp
Z2F0aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfb3Jp
Z2luYWxfdXJpKToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTo6
d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfb3JpZ2luYWxfdXJpKToKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJL
aXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGU6OndlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Ns
YXNzX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTo6d2Vi
a2l0X3dlYl9wb2xpY3lfZGVjaXNpb25faW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViUG9saWN5
RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9uZXcpOgorICAgICAg
ICAoX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVj
aXNpb25fdXNlKToKKyAgICAgICAgKF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGU6Ondl
YmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2lnbm9yZSk6CisgICAgICAgIChfV2ViS2l0V2ViUG9s
aWN5RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZCk6
CisgICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3Bv
bGljeV9kZWNpc2lvbl9jYW5jZWwpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lk
ZWNpc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6Cisg
ICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuaDoKKwogMjAwOC0xMi0wOSAgQnJldHQgV2ls
c29uICA8YnJldHR3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5
YXR0LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAppbmRleCA0YzU5ZDAxLi5mNTFlZGQyIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtNDYsNiArNDYsOCBAQAog
I2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXRuZXR3b3JrcmVxdWVz
dC5oIgogI2luY2x1ZGUgIndlYmtpdHdlYmZyYW1lLmgiCisjaW5jbHVkZSAid2Via2l0d2VibmF2
aWdhdGlvbmFjdGlvbi5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgiCiAj
aW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJ
Q2FzdC5oPgpAQCAtNjMsMTAgKzY1LDE3IEBAIEZyYW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRl
ckNsaWVudChXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiAgICAgLCBtX3VzZXJBZ2VudCgiIikKICAg
ICAsIG1fcGx1Z2luVmlldygwKQogICAgICwgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbihmYWxz
ZSkKKyAgICAsIG1fcG9saWN5RGVjaXNpb24oMCkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CiB9
CiAKK0ZyYW1lTG9hZGVyQ2xpZW50Ojp+RnJhbWVMb2FkZXJDbGllbnQoKQoreworICAgIGlmICht
X3BvbGljeURlY2lzaW9uKQorICAgICAgICBnX29iamVjdF91bnJlZihtX3BvbGljeURlY2lzaW9u
KTsKK30KKwogc3RhdGljIFN0cmluZyBhZ2VudFBsYXRmb3JtKCkKIHsKICNpZmRlZiBHREtfV0lO
RE9XSU5HX1gxMQpAQCAtMjQzLDE2ICsyNTIsMzUgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb24K
ICAgICBtX3Jlc3BvbnNlID0gcmVzcG9uc2U7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xp
Y3lGdW5jdGlvbiwgY29uc3QgU3RyaW5nJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoRnJhbWVQ
b2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAgLy8gRklYTUU6IHdl
IG5lZWQgdG8gY2FsbCBkaXJlY3RseSBoZXJlIChjb21tZW50IGNvcGllZCBmcm9tIFF0IHZlcnNp
b24pCiAgICAgQVNTRVJUKHBvbGljeUZ1bmN0aW9uKTsKICAgICBpZiAoIXBvbGljeUZ1bmN0aW9u
KQogICAgICAgICByZXR1cm47Ci0gICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5
RnVuY3Rpb24pKFBvbGljeVVzZSk7CisKKyAgICBXZWJLaXRXZWJWaWV3KiBwYWdlID0gZ2V0Vmll
d0Zyb21GcmFtZShtX2ZyYW1lKTsKKyAgICBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCA9
IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3KHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBwb2xpY3lE
ZWNpc2lvbiA9IHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX25ldyhtX2ZyYW1lLCBwb2xpY3lG
dW5jdGlvbik7CisgICAgaWYgKG1fcG9saWN5RGVjaXNpb24pCisgICAgICAgIGdfb2JqZWN0X3Vu
cmVmKG1fcG9saWN5RGVjaXNpb24pOworICAgIG1fcG9saWN5RGVjaXNpb24gPSBwb2xpY3lEZWNp
c2lvbjsKKworICAgIGdib29sZWFuIGlzSGFuZGxlZCA9IGZhbHNlOworICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZShwYWdlLCAibWltZS10eXBlLXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQiLCBt
X2ZyYW1lLCByZXF1ZXN0LCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLCBwb2xpY3lEZWNpc2lvbiwg
JmlzSGFuZGxlZCk7CisKKyAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0KTsKKworICAgIGlmIChp
c0hhbmRsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChjYW5TaG93TUlNRVR5cGUobWlt
ZVR5cGUpKQorICAgICAgICB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91c2UgKHBvbGljeURl
Y2lzaW9uKTsKKyAgICBlbHNlCisgICAgICAgIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Rv
d25sb2FkIChwb2xpY3lEZWNpc2lvbik7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24g
cG9saWN5RnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYpCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFt
ZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBh
Y3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYgcykKIHsKICAgICBBU1NFUlQocG9saWN5RnVuY3Rp
b24pOwogICAgIGlmICghcG9saWN5RnVuY3Rpb24pCkBAIC0yNzEsMTcgKzI5OSwzOSBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oRnJhbWVQb2xpY3lGdW5jdAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3
RnJvbUZyYW1lKG1fZnJhbWUpOwogICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0g
d2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogICAgIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSByZXNwb25zZTsK
LQorICAgIC8qIFdlIHN0aWxsIHN1cHBvcnQgdGhlIGRlcHJlY2F0ZWQgbmF2aWdhdGlvbi1yZXF1
ZXN0ZWQgc2lnbmFsLCBpZiB0aGUKKyAgICAgKiBhcHBsaWNhdGlvbiBkb2Vzbid0IGlnbm9yZSB0
aGUgbmF2aWdhdGlvbiB0aGVuIHRoZSBuZXcgc2lnbmFsIGlzCisgICAgICogZW1pdHRlZC4KKyAg
ICAgKiBuYXZpZ2F0aW9uLXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQgbXVzdCBiZSBlbWl0dGVk
IGFmdGVyCisgICAgICogbmF2aWdhdGlvbi1yZXF1ZXN0ZWQgYXMgdGhlIHBvbGljeSBkZWNpc2lv
biBjYW4gYmUgYXN5bmMuICovCiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJu
YXZpZ2F0aW9uLXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3QsICZyZXNwb25zZSk7CiAKLSAg
ICBnX29iamVjdF91bnJlZihyZXF1ZXN0KTsKLQogICAgIGlmIChyZXNwb25zZSA9PSBXRUJLSVRf
TkFWSUdBVElPTl9SRVNQT05TRV9JR05PUkUpIHsKICAgICAgICAgKGNvcmUobV9mcmFtZSktPmxv
YWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7CisgICAgICAgIGdfb2JqZWN0
X3VucmVmKHJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgKGNvcmUobV9m
cmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAgV2ViS2l0
V2ViUG9saWN5RGVjaXNpb24qIHBvbGljeURlY2lzaW9uID0gd2Via2l0X3dlYl9wb2xpY3lfZGVj
aXNpb25fbmV3KG1fZnJhbWUsIHBvbGljeUZ1bmN0aW9uKTsKKyAgICBpZiAobV9wb2xpY3lEZWNp
c2lvbikKKyAgICAgICAgZ19vYmplY3RfdW5yZWYobV9wb2xpY3lEZWNpc2lvbik7CisgICAgbV9w
b2xpY3lEZWNpc2lvbiA9IHBvbGljeURlY2lzaW9uOworCisgICAgLy8gVE9ETzogdXNlIGFjdGlv
bi5ldmVudCgpLgorICAgIGdwb2ludGVyIG5hdmlnYXRpb25BY3Rpb24gPSBnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfV0VCX05BVklHQVRJT05fQUNUSU9OLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInJlYXNvbiIsIGtpdChhY3Rpb24udHlwZSgpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmlnaW5hbC11cmki
LCBhY3Rpb24udXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworCisgICAgZ2Jvb2xlYW4gaXNIYW5k
bGVkID0gZmFsc2U7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJuYXZpZ2F0
aW9uLXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQiLCBtX2ZyYW1lLCByZXF1ZXN0LCBuYXZpZ2F0
aW9uQWN0aW9uLCBwb2xpY3lEZWNpc2lvbiwgJmlzSGFuZGxlZCk7CisKKyAgICBnX29iamVjdF91
bnJlZihuYXZpZ2F0aW9uQWN0aW9uKTsKKyAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0KTsKKwor
ICAgIC8vIEZJWE1FIEltcGxlbWVudCBkZWZhdWx0IGJlaGF2aW9yIHdoZW4gd2UgY2FuIHF1ZXJ5
IHRoZSBiYWNrZW5kIHdoYXQgcHJvdG9jb2xzIGl0IHN1cHBvcnRzCisgICAgaWYgKCFpc0hhbmRs
ZWQpCisgICAgICAgIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX3VzZShtX3BvbGljeURlY2lz
aW9uKTsKIH0KIAogV2lkZ2V0KiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0
IEludFNpemUmIHBsdWdpblNpemUsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCkBA
IC01NTAsNyArNjAwLDkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KCkK
IAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgLy9GSVhNRSBBZGQgc3VwcG9ydCBmb3IgbW9yZSB0aGFuIG9u
ZSBwb2xpY3kgZGVjaXNpb24gYXQgb25jZQorICAgIGlmIChtX3BvbGljeURlY2lzaW9uKQorICAg
ICAgICB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9jYW5jZWwobV9wb2xpY3lEZWNpc2lvbik7
CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZE1haW5SZXNvdXJj
ZShEb2N1bWVudExvYWRlciopCkBAIC01NzksMTAgKzYzMSwxMCBAQCBib29sIEZyYW1lTG9hZGVy
Q2xpZW50OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXJDbGllbnQ6OmNhblNob3dNSU1F
VHlwZShjb25zdCBTdHJpbmcmKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hv
d01JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1
cHBvcnRlZEltYWdlTUlNRVR5cGUodHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWROb25JbWFnZU1JTUVUeXBlKHR5cGUpIHx8CisgICAgICAgIFBsdWdpbkRhdGFiYXNlOjppbnN0
YWxsZWRQbHVnaW5zKCktPmlzTUlNRVR5cGVSZWdpc3RlcmVkKHR5cGUpOwogfQogCiBib29sIEZy
YW1lTG9hZGVyQ2xpZW50OjpyZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBT
dHJpbmcmKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5oCmluZGV4IDA3MzhhMjkuLmJjZGIyOTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCisjaW5jbHVkZSAid2Via2l0d2VicG9saWN5
ZGVjaXNpb24uaCIKIAogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkZyYW1lIFdlYktpdFdlYkZy
YW1lOwogCkBAIC00MSw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIGNsYXNzIEZy
YW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50KFdlYktpdFdlYkZyYW1lKik7Ci0g
ICAgICAgIHZpcnR1YWwgfkZyYW1lTG9hZGVyQ2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwg
fkZyYW1lTG9hZGVyQ2xpZW50KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRlckRl
c3Ryb3llZCgpOwogCiAgICAgICAgIFdlYktpdFdlYkZyYW1lKiAgd2ViRnJhbWUoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lOyB9CkBAIC0xNzAsNiArMTcxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAgICAgICAgIFdlYktpdFdlYkZyYW1lKiBtX2ZyYW1lOwogICAgICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgICAgIFdlYkNvcmU6OlN0cmluZyBtX3VzZXJB
Z2VudDsKKyAgICAgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIG1fcG9saWN5RGVjaXNpb247
CiAKICAgICAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJlY3QgZGF0YSB0bwogICAgICAgICBX
ZWJDb3JlOjpQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXQuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCmluZGV4IDg2MjFl
NDYuLjhjODY4YTIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCisrKyBi
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgorICogQ29weXJpZ2h0IChD
KSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMwLDYgKzMxLDgg
QEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViaGlz
dG9yeWl0ZW0uaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaD4K
KyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5oPgogI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXRlbnVtdHlwZXMuaD4KIAogI2VuZGlmIC8qIF9fV0VCS0lUX0hfXyAqLwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCmluZGV4IGI2NzRlOWYuLmY5NGU3MTAgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaAorKysgYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRkZWZpbmVzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Q29sbGFib3JhIEx0ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTIsNiArNTMsOSBAQCB0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0V2ViSGlzdG9yeUl0ZW1DbGFzcyBXZWJLaXRXZWJIaXN0b3J5SXRl
bUNsYXNzOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkZyYW1lIFdlYktpdFdlYkZyYW1lOwog
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkZyYW1lQ2xhc3MgV2ViS2l0V2ViRnJhbWVDbGFzczsK
IAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlBvbGljeURlY2lzaW9uIFdlYktpdFdlYlBvbGlj
eURlY2lzaW9uOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlBvbGljeURlY2lzaW9uQ2xhc3Mg
V2ViS2l0V2ViUG9saWN5RGVjaXNpb25DbGFzczsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YlNldHRpbmdzIFdlYktpdFdlYlNldHRpbmdzOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNl
dHRpbmdzQ2xhc3MgV2ViS2l0V2ViU2V0dGluZ3NDbGFzczsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRw
cml2YXRlLmNwcAppbmRleCAwN2M4MTc0Li4yMjgzYzhlIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRw
cml2YXRlLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9s
Z2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEg
THRkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC04Myw2ICs4NCwxNiBAQCBXZWJLaXRXZWJWaWV3
KiBraXQoV2ViQ29yZTo6UGFnZSogY29yZVBhZ2UpCiAgICAgcmV0dXJuIGNsaWVudCA/IGNsaWVu
dC0+d2ViVmlldygpIDogMDsKIH0KIAorV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbiBraXQoV2Vi
Q29yZTo6TmF2aWdhdGlvblR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gKFdlYktpdFdlYk5hdmln
YXRpb25SZWFzb24pdHlwZTsKK30KKyAKK1dlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIGNvcmUoV2Vi
S2l0V2ViTmF2aWdhdGlvblJlYXNvbiB0eXBlKQoreworICAgIHJldHVybiAoV2ViQ29yZTo6TmF2
aWdhdGlvblR5cGUpdHlwZTsKK30KKwogfSAvKiogZW5kIG5hbWVzcGFjZSBXZWJLaXQgKi8KIAog
dm9pZCB3ZWJraXRfaW5pdCgpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRw
cml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKaW5kZXggZDUxMzc1
OC4uYWU5MTU3MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5o
CisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAtMSw2ICsxLDcgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIKICAqIENvcHlyaWdodCAoQykgMjAwOCBKYW4gTWljaGFlbCBDLiBBbG9uem8KKyAqIENvcHly
aWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOSw2
ICszMCw4IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KICNpbmNsdWRlIDx3
ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5o
PgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oPgorI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dl
YmtpdHdlYnNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1
cmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgpAQCAt
NTcsNiArNjAsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRl
bSoga2l0KFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7CiAKICAgICBXZWJDb3JlOjpCYWNrRm9yd2Fy
ZExpc3QqIGNvcmUoV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0Kik7CisKKyAgICBXZWJLaXRXZWJO
YXZpZ2F0aW9uUmVhc29uIGtpdChXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSB0eXBlKTsKKyAgICBX
ZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSBjb3JlKFdlYktpdFdlYk5hdmlnYXRpb25SZWFzb24gcmVh
c29uKTsKIH0KIAogZXh0ZXJuICJDIiB7CkBAIC0xMzAsNiArMTM2LDEyIEBAIGV4dGVybiAiQyIg
ewogICAgIHZvaWQKICAgICB3ZWJraXRfd2ViX3ZpZXdfbm90aWZ5X3JlYWR5IChXZWJLaXRXZWJW
aWV3KiB3ZWJfdmlldyk7CiAKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbioKKyAgICB3ZWJr
aXRfd2ViX3BvbGljeV9kZWNpc2lvbl9uZXcgKFdlYktpdFdlYkZyYW1lKiwgV2ViQ29yZTo6RnJh
bWVQb2xpY3lGdW5jdGlvbik7CisKKyAgICB2b2lkCisgICAgd2Via2l0X3dlYl9wb2xpY3lfZGVj
aXNpb25fY2FuY2VsIChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pOworCiAgICAg
Ly8gRklYTUU6IE1vdmUgdGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWlyIEFQSSBo
YXMgYmVlbiBkaXNjdXNzZWQuCiAKICAgICBXRUJLSVRfQVBJIEdTTGlzdCoKZGlmZiAtLWdpdCBh
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uY3BwIGIvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uN2U0ODE3YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTk1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIndlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uaCIKKyNpbmNsdWRl
ICJ3ZWJraXRwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0ZW51bXR5cGVzLmgiCisKKyNpbmNs
dWRlIDxzdHJpbmcuaD4KKworZXh0ZXJuICJDIiB7CisKK3N0cnVjdCBfV2ViS2l0V2ViTmF2aWdh
dGlvbkFjdGlvblByaXZhdGUgeworICAgIFdlYktpdFdlYk5hdmlnYXRpb25SZWFzb24gcmVhc29u
OworICAgIGdjaGFyKiBvcmlnaW5hbFVyaTsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dFQl9OQVZJ
R0FUSU9OX0FDVElPTl9HRVRfUFJJVkFURShvYmopKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFU
RSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX05BVklHQVRJT05fQUNUSU9OLCBXZWJLaXRXZWJOYXZp
Z2F0aW9uQWN0aW9uUHJpdmF0ZSkpCisKK2VudW0gIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9Q
X1JFQVNPTiwKKyAgICBQUk9QX09SSUdJTkFMX1VSSQorfTsKKworR19ERUZJTkVfVFlQRShXZWJL
aXRXZWJOYXZpZ2F0aW9uQWN0aW9uLCB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uLCBHX1RZ
UEVfT0JKRUNUKQorCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25f
Z2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlv
biogbmF2aWdhdGlvbkFjdGlvbiA9IFdFQktJVF9XRUJfTkFWSUdBVElPTl9BQ1RJT04ob2JqZWN0
KTsKKworICAgIHN3aXRjaChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBQUk9QX1JFQVNPTjoKKyAg
ICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1ZSwgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlv
bl9nZXRfcmVhc29uKG5hdmlnYXRpb25BY3Rpb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX09SSUdJTkFMX1VSSToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3
ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9vcmlnaW5hbF91cmkobmF2aWdhdGlvbkFj
dGlvbikpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9uYXZpZ2F0aW9u
X2FjdGlvbl9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBj
b25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJO
YXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uID0gV0VCS0lUX1dFQl9OQVZJR0FUSU9O
X0FDVElPTihvYmplY3QpOworCisgICAgc3dpdGNoKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIFBS
T1BfUkVBU09OOgorICAgICAgICB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX3NldF9yZWFz
b24obmF2aWdhdGlvbkFjdGlvbiwgKFdlYktpdFdlYk5hdmlnYXRpb25SZWFzb24pZ192YWx1ZV9n
ZXRfZW51bSh2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfT1JJR0lOQUxf
VVJJOgorICAgICAgICB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX3NldF9vcmlnaW5hbF91
cmkobmF2aWdhdGlvbkFjdGlvbiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9Q
RVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2luaXQoV2Vi
S2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbikKK3sKKyAgICBuYXZpZ2F0
aW9uQWN0aW9uLT5wcml2ID0gV0VCS0lUX1dFQl9OQVZJR0FUSU9OX0FDVElPTl9HRVRfUFJJVkFU
RShuYXZpZ2F0aW9uQWN0aW9uKTsKKworICAgIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2
YXRlKiBwcml2ID0gbmF2aWdhdGlvbkFjdGlvbi0+cHJpdjsKKyAgICBwcml2LT5vcmlnaW5hbFVy
aSA9IGdfc3RyZHVwKCIiKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9uYXZpZ2F0aW9u
X2FjdGlvbl9maW5hbGl6ZShHT2JqZWN0KiBvYmopCit7CisgICAgV2ViS2l0V2ViTmF2aWdhdGlv
bkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbiA9IFdFQktJVF9XRUJfTkFWSUdBVElPTl9BQ1RJT04o
b2JqKTsKKyAgICBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZSogcHJpdiA9IG5hdmln
YXRpb25BY3Rpb24tPnByaXY7CisKKyAgICBnX2ZyZWUocHJpdi0+b3JpZ2luYWxVcmkpOworCisg
ICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShvYmopOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX25hdmlnYXRp
b25fYWN0aW9uX2NsYXNzX2luaXQoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbkNsYXNzKiByZXF1
ZXN0Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NM
QVNTKHJlcXVlc3RDbGFzcyk7CisKKyAgICBvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Vi
a2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcHJvcGVydHk7CisgICAgb2JqZWN0Q2xhc3Mt
PnNldF9wcm9wZXJ0eSA9IHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fc2V0X3Byb3BlcnR5
OworICAgIG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlv
bl9maW5hbGl6ZTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0
Q2xhc3MsIFBST1BfUkVBU09OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjX2VudW0oInJlYXNvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVhc29uIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgcmVhc29uIHdoeSB0aGlzIG5h
dmlnYXRpb24gaXMgb2NjdXJyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9OQVZJR0FUSU9OX1JFQVNPTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdF
QktJVF9XRUJfTkFWSUdBVElPTl9SRUFTT05fT1RIRVIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR1BhcmFtRmxhZ3MpKFdFQktJVF9QQVJB
TV9SRUFEV1JJVEUpKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9i
amVjdENsYXNzLCBQUk9QX09SSUdJTkFMX1VSSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoIm9yaWdpbmFsLXVyaSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcmlnaW5hbCBV
UkkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiVGhlIFVSSSB0aGF0IHdhcyByZXF1ZXN0ZWQgYXMgdGhlIHRhcmdldCBmb3IgdGhlIG5h
dmlnYXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworCisgICAgZ190eXBlX2Ns
YXNzX2FkZF9wcml2YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdlYktpdFdlYk5hdmlnYXRpb25B
Y3Rpb25Qcml2YXRlKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlv
bl9nZXRfcmVhc29uOgorICogQG5hdmlnYXRpb25BY3Rpb246IGEgI1dlYktpdFdlYk5hdmlnYXRp
b25BY3Rpb24KKyAqCisgKiBSZXR1cm5zIHRoZSByZWFzb24gd2h5IFdlYktpdCBpcyByZXF1ZXN0
aW5nIGEgbmF2aWdhdGlvbi4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IGEgI1dlYktpdFdlYk5hdmln
YXRpb25SZWFzb24KKyAqLworV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbiB3ZWJraXRfd2ViX25h
dmlnYXRpb25fYWN0aW9uX2dldF9yZWFzb24oV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2
aWdhdGlvbkFjdGlvbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X05BVklHQVRJT05fQUNUSU9OKG5hdmlnYXRpb25BY3Rpb24pLCBXRUJLSVRfV0VCX05BVklHQVRJ
T05fUkVBU09OX09USEVSKTsKKworICAgIHJldHVybiBuYXZpZ2F0aW9uQWN0aW9uLT5wcml2LT5y
ZWFzb247Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfcmVh
c29uOgorICogQG5hdmlnYXRpb25BY3Rpb246IGEgI1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24K
KyAqIEByZWFzb246IGEgI1dlYktpdFdlYk5hdmlnYXRpb25SZWFzb24KKyAqCisgKiBTZXRzIHRo
ZSByZWFzb24gd2h5IFdlYktpdCBpcyByZXF1ZXN0aW5nIGEgbmF2aWdhdGlvbi4KKyAqLwordm9p
ZCB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX3NldF9yZWFzb24oV2ViS2l0V2ViTmF2aWdh
dGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbiwgV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbiBy
ZWFzb24pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX05BVklHQVRJT05f
QUNUSU9OKG5hdmlnYXRpb25BY3Rpb24pKTsKKworICAgIGlmIChuYXZpZ2F0aW9uQWN0aW9uLT5w
cml2LT5yZWFzb24gPT0gcmVhc29uKQorICAgICAgICByZXR1cm47CisKKyAgICBuYXZpZ2F0aW9u
QWN0aW9uLT5wcml2LT5yZWFzb24gPSByZWFzb247CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JK
RUNUKG5hdmlnYXRpb25BY3Rpb24pLCAicmVhc29uIik7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfb3JpZ2luYWxfdXJpOgorICogQG5hdmlnYXRpb25BY3Rp
b246IGEgI1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24KKyAqCisgKiBSZXR1cm5zIHRoZSBVUkkg
dGhhdCB3YXMgb3JpZ2luYWxseSByZXF1ZXN0ZWQuIFRoaXMgbWF5IGRpZmZlciBmcm9tIHRoZQor
ICogbmF2aWdhdGlvbiB0YXJnZXQsIGZvciBpbnN0YW5jZSBiZWNhdXNlIG9mIGEgcmVkaXJlY3Qu
CisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgb3JpZ2luYWxseSByZXF1ZXN0ZWQgVVJJCisgKi8K
K2NvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9vcmlnaW5hbF91
cmkoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbikKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX05BVklHQVRJT05fQUNUSU9OKG5hdmln
YXRpb25BY3Rpb24pLCBOVUxMKTsKKworICAgIHJldHVybiBuYXZpZ2F0aW9uQWN0aW9uLT5wcml2
LT5vcmlnaW5hbFVyaTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9u
X3NldF9vcmlnaW5hbF91cmk6CisgKiBAbmF2aWdhdGlvbkFjdGlvbjogYSAjV2ViS2l0V2ViTmF2
aWdhdGlvbkFjdGlvbgorICogQG9yaWdpbmFsVXJpOiBhIFVSSQorICoKKyAqIFNldHMgdGhlIFVS
SSB0aGF0IHdhcyBvcmlnaW5hbGx5IHJlcXVlc3RlZC4gVGhpcyBtYXkgZGlmZmVyIGZyb20gdGhl
CisgKiBuYXZpZ2F0aW9uIHRhcmdldCwgZm9yIGluc3RhbmNlIGJlY2F1c2Ugb2YgYSByZWRpcmVj
dC4KKyAqLwordm9pZCB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX3NldF9vcmlnaW5hbF91
cmkoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgZ2No
YXIqIG9yaWdpbmFsVXJpKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9O
QVZJR0FUSU9OX0FDVElPTihuYXZpZ2F0aW9uQWN0aW9uKSk7CisgICAgZ19yZXR1cm5faWZfZmFp
bChvcmlnaW5hbFVyaSk7CisKKyAgICBpZiAoIXN0cmNtcChuYXZpZ2F0aW9uQWN0aW9uLT5wcml2
LT5vcmlnaW5hbFVyaSwgb3JpZ2luYWxVcmkpKQorICAgICAgICByZXR1cm47CisKKyAgICBnX2Zy
ZWUobmF2aWdhdGlvbkFjdGlvbi0+cHJpdi0+b3JpZ2luYWxVcmkpOworICAgIG5hdmlnYXRpb25B
Y3Rpb24tPnByaXYtPm9yaWdpbmFsVXJpID0gZ19zdHJkdXAob3JpZ2luYWxVcmkpOworICAgIGdf
b2JqZWN0X25vdGlmeShHX09CSkVDVChuYXZpZ2F0aW9uQWN0aW9uKSwgIm9yaWdpbmFsLXVyaSIp
OworfQorCit9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0
aW9uYWN0aW9uLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU5ZGZjNAotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uaApA
QCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpZm5kZWYgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX0FDVElPTl9ICisjZGVmaW5lIFdFQktJVF9X
RUJfTkFWSUdBVElPTl9BQ1RJT05fSAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKworI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworLyogVGhl
IG9yZGVyIG9mIHRoaXMgZW51bSBtdXN0IGJlIHRoZSBzYW1lIGFzIE5hdmlnYXRpb25UeXBlIGlu
CisgKiBGcmFtZUxvYWRlclR5cGVzLmgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRf
V0VCX05BVklHQVRJT05fUkVBU09OX0xJTktfQ0xJQ0tFRCwKKyAgICBXRUJLSVRfV0VCX05BVklH
QVRJT05fUkVBU09OX0ZPUk1fU1VCTUlUVEVELAorICAgIFdFQktJVF9XRUJfTkFWSUdBVElPTl9S
RUFTT05fQkFDS19GT1JXQVJELAorICAgIFdFQktJVF9XRUJfTkFWSUdBVElPTl9SRUFTT05fUkVM
T0FELAorICAgIFdFQktJVF9XRUJfTkFWSUdBVElPTl9SRUFTT05fRk9STV9SRVNVQk1JVFRFRCwK
KyAgICBXRUJLSVRfV0VCX05BVklHQVRJT05fUkVBU09OX09USEVSLCAgICAKKyAgICBXRUJLSVRf
V0VCX05BVklHQVRJT05fUkVBU09OX1BMVUdfSU5fUkVRVUVTVAorfSBXZWJLaXRXZWJOYXZpZ2F0
aW9uUmVhc29uOworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9OQVZJR0FUSU9OX0FDVElPTiAg
ICAgICAgICAgICh3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF90eXBlKCkpCisjZGVm
aW5lIFdFQktJVF9XRUJfTkFWSUdBVElPTl9BQ1RJT04ob2JqKSAgICAgICAgICAgIChHX1RZUEVf
Q0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX05BVklHQVRJT05fQUNU
SU9OLCBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9OQVZJ
R0FUSU9OX0FDVElPTl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChr
bGFzcyksIFdFQktJVF9UWVBFX1dFQl9OQVZJR0FUSU9OX0FDVElPTiwgV2ViS2l0V2ViTmF2aWdh
dGlvbkFjdGlvbkNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9OQVZJR0FUSU9OX0FDVElP
TihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRf
VFlQRV9XRUJfTkFWSUdBVElPTl9BQ1RJT04pKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX05BVklH
QVRJT05fQUNUSU9OX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNz
KSwgV0VCS0lUX1RZUEVfV0VCX05BVklHQVRJT05fQUNUSU9OKSkKKyNkZWZpbmUgV0VCS0lUX1dF
Ql9OQVZJR0FUSU9OX0FDVElPTl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRf
Q0xBU1MoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9OQVZJR0FUSU9OX0FDVElPTiwgV2ViS2l0V2Vi
TmF2aWdhdGlvbkFjdGlvbkNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYk5hdmln
YXRpb25BY3Rpb24gV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbjsKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uQ2xhc3MgV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbkNs
YXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlIFdl
YktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYk5hdmln
YXRpb25BY3Rpb24geworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworICAgIFdlYktpdFdl
Yk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlKiBwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJO
YXZpZ2F0aW9uQWN0aW9uQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9
OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF90
eXBlKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYk5hdmlnYXRpb25SZWFzb24KK3dlYmtp
dF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3JlYXNvbihXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0
aW9uKiBuYXZpZ2F0aW9uQWN0aW9uKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX25h
dmlnYXRpb25fYWN0aW9uX3NldF9yZWFzb24oV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2
aWdhdGlvbkFjdGlvbiwgV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbiByZWFzb24pOworCitXRUJL
SVRfQVBJIGNvbnN0IGdjaGFyKgord2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfb3Jp
Z2luYWxfdXJpKFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24pOwor
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fc2V0X29yaWdp
bmFsX3VyaShXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25z
dCBnY2hhciogb3JpZ2luYWxVcmkpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcCBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4wMTVhMjgyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwCkBAIC0wLDAgKzEsMTI4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIndlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgiCisKKyNpbmNsdWRlICJG
cmFtZUxvYWRlclR5cGVzLmgiCisjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2V4dGVybiAiQyIg
eworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlBvbGljeURlY2lzaW9uLCB3ZWJraXRfd2ViX3Bv
bGljeV9kZWNpc2lvbiwgR19UWVBFX09CSkVDVCk7CisKK3N0cnVjdCBfV2ViS2l0V2ViUG9saWN5
RGVjaXNpb25Qcml2YXRlIHsKKyAgICBXZWJLaXRXZWJGcmFtZSogZnJhbWU7CisgICAgRnJhbWVQ
b2xpY3lGdW5jdGlvbiBmcmFtZVBvbGljeUZ1bmN0aW9uOworICAgIGdib29sZWFuIGlzQ2FuY2Vs
bGVkOworfTsKKworI2RlZmluZSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTl9HRVRfUFJJVkFU
RShvYmopICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBF
X1dFQl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSkpCisK
K3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2NsYXNzX2luaXQoV2ViS2l0
V2ViUG9saWN5RGVjaXNpb25DbGFzcyogZGVjaXNpb25DbGFzcykKK3sKKyAgICBnX3R5cGVfY2xh
c3NfYWRkX3ByaXZhdGUoZGVjaXNpb25DbGFzcywgc2l6ZW9mKFdlYktpdFdlYlBvbGljeURlY2lz
aW9uUHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lv
bl9pbml0KFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBkZWNpc2lv
bi0+cHJpdiA9IFdFQktJVF9XRUJfUE9MSUNZX0RFQ0lTSU9OX0dFVF9QUklWQVRFKGRlY2lzaW9u
KTsKK30KKworV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lz
aW9uX25ldyhXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rp
b24gZnVuY3Rpb24pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoZnJhbWUsIE5VTEwpOwor
CisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uID0gV0VCS0lUX1dFQl9QT0xJ
Q1lfREVDSVNJT04oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04s
IE5VTEwpKTsKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHByaXYgPSBkZWNp
c2lvbi0+cHJpdjsKKworICAgIHByaXYtPmZyYW1lID0gZnJhbWU7CisgICAgcHJpdi0+ZnJhbWVQ
b2xpY3lGdW5jdGlvbiA9IGZ1bmN0aW9uOworICAgIHByaXYtPmlzQ2FuY2VsbGVkID0gRkFMU0U7
CisKKyAgICByZXR1cm4gZGVjaXNpb247Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9wb2xpY3lf
ZGVjaXNpb25fdXNlCisgKiBAZGVjaXNpb246IGEgI1dlYktpdFdlYlBvbGljeURlY2lzaW9uCisg
KgorICogV2lsbCBzZW5kIHRoZSBVU0UgZGVjaXNpb24gdG8gdGhlIHBvbGljeSBpbXBsZW1lbnRl
ci4KKyAqLwordm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91c2UoV2ViS2l0V2ViUG9s
aWN5RGVjaXNpb24qIGRlY2lzaW9uKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKworICAgIFdlYktpdFdlYlBvbGljeURl
Y2lzaW9uUHJpdmF0ZSogcHJpdiA9IGRlY2lzaW9uLT5wcml2OworCisgICAgaWYgKCFwcml2LT5p
c0NhbmNlbGxlZCkKKyAgICAgICAgKGNvcmUocHJpdi0+ZnJhbWUpLT5sb2FkZXIoKS0+Kihwcml2
LT5mcmFtZVBvbGljeUZ1bmN0aW9uKSkoV2ViQ29yZTo6UG9saWN5VXNlKTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9pZ25vcmUKKyAqIEBkZWNpc2lvbjogYSAjV2Vi
S2l0V2ViUG9saWN5RGVjaXNpb24KKyAqCisgKiBXaWxsIHNlbmQgdGhlIElHTk9SRSBkZWNpc2lv
biB0byB0aGUgcG9saWN5IGltcGxlbWVudGVyLgorICovCit2b2lkIHdlYmtpdF93ZWJfcG9saWN5
X2RlY2lzaW9uX2lnbm9yZShXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJU0lPTihkZWNpc2lv
bikpOworCisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2ID0gZGVjaXNp
b24tPnByaXY7CisgICAgCisgICAgaWYgKCFwcml2LT5pc0NhbmNlbGxlZCkKKyAgICAgICAgKGNv
cmUocHJpdi0+ZnJhbWUpLT5sb2FkZXIoKS0+Kihwcml2LT5mcmFtZVBvbGljeUZ1bmN0aW9uKSko
V2ViQ29yZTo6UG9saWN5SWdub3JlKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3BvbGljeV9k
ZWNpc2lvbl9kb3dubG9hZAorICogQGRlY2lzaW9uOiBhICNXZWJLaXRXZWJQb2xpY3lEZWNpc2lv
bgorICoKKyAqIFdpbGwgc2VuZCB0aGUgRE9XTkxPQUQgZGVjaXNpb24gdG8gdGhlIHBvbGljeSBp
bXBsZW1lbnRlci4KKyAqLwordm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9kb3dubG9h
ZChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbikpOworCisgICAgV2Vi
S2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7CisKKyAg
ICBnX3dhcm5pbmcoIkRvd25sb2FkIGlzIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICB3ZWJraXRfd2Vi
X3BvbGljeV9kZWNpc2lvbl9pZ25vcmUoZGVjaXNpb24pOworCisjaWYgMAorICAgIGlmICghcHJp
di0+aXNDYW5jZWxsZWQpCisgICAgICAgIChjb3JlKHByaXYtPmZyYW1lKS0+bG9hZGVyKCktPioo
cHJpdi0+ZnJhbWVQb2xpY3lGdW5jdGlvbikpKFdlYkNvcmU6OlBvbGljeURvd25sb2FkKTsKKyNl
bmRpZgorfQorCit2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2NhbmNlbChXZWJLaXRX
ZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbikpOworCisgICAgV2ViS2l0V2ViUG9s
aWN5RGVjaXNpb25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7CisgICAgCisgICAgcHJp
di0+aXNDYW5jZWxsZWQgPSBUUlVFOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VicG9saWN5ZGVjaXNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
Nzc0NjJkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9s
aWN5ZGVjaXNpb24uaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxhYm9yYSBMdGQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpZm5kZWYgV0VCS0lUX1dFQl9QT0xJQ1lfREVDSVNJT05fSAorI2Rl
ZmluZSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTl9ICisKKyNpbmNsdWRlIDxnbGliLW9iamVj
dC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgIndlYmtpdGRlZmluZXMuaCIKKwor
R19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04g
ICAgICAgICAgICAod2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5cGUoKSkKKyNkZWZp
bmUgV0VCS0lUX1dFQl9QT0xJQ1lfREVDSVNJT04ob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJU0lPTiwg
V2ViS2l0V2ViUG9saWN5RGVjaXNpb24pKQorI2RlZmluZSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJ
U0lPTl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBX
RUJLSVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9OLCBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNs
YXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9QT0xJQ1lfREVDSVNJT04ob2JqKSAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1BPTElD
WV9ERUNJU0lPTikpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfUE9MSUNZX0RFQ0lTSU9OX0NMQVNT
KGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dF
Ql9QT0xJQ1lfREVDSVNJT04pKQorI2RlZmluZSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTl9H
RVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRf
VFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9OLCBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzKSkK
KwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSBXZWJLaXRX
ZWJQb2xpY3lEZWNpc2lvblByaXZhdGU7CitzdHJ1Y3QgX1dlYktpdFdlYlBvbGljeURlY2lzaW9u
IHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZh
dGUqIHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlBvbGljeURlY2lzaW9uQ2xhc3Mgewor
ICAgIEdPYmplY3RDbGFzcyBwYXJlbnQ7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRf
d2ViX3BvbGljeV9kZWNpc2lvbl9nZXRfdHlwZSAodm9pZCk7CisKK1dFQktJVF9BUEkgdm9pZAor
d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlIChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiog
ZGVjaXNpb24pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9u
X2lnbm9yZSAoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKTsKKworV0VCS0lUX0FQ
SSB2b2lkCit3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZCAoV2ViS2l0V2ViUG9s
aWN5RGVjaXNpb24qIGRlY2lzaW9uKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDJlNWI2MGEuLmMwM2I0MTAgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0ZW51bXR5
cGVzLmgiCiAjaW5jbHVkZSAid2Via2l0bWFyc2hhbC5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZh
dGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJpbnNwZWN0b3IuaCIKQEAgLTc1LDYgKzc2LDggQEAg
ZXh0ZXJuICJDIiB7CiBlbnVtIHsKICAgICAvKiBub3JtYWwgc2lnbmFscyAqLwogICAgIE5BVklH
QVRJT05fUkVRVUVTVEVELAorICAgIE5BVklHQVRJT05fUE9MSUNZX0RFQ0lTSU9OX1JFUVVFU1RF
RCwKKyAgICBNSU1FX1RZUEVfUE9MSUNZX0RFQ0lTSU9OX1JFUVVFU1RFRCwKICAgICBDUkVBVEVf
V0VCX1ZJRVcsCiAgICAgV0VCX1ZJRVdfUkVBRFksCiAgICAgV0lORE9XX09CSkVDVF9DTEVBUkVE
LApAQCAtNjMwLDkgKzYzMyw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVh
bF93ZWJfdmlld19yZWFkeShXZWJLaXRXZWJWaWV3KikKICAgICByZXR1cm4gRkFMU0U7CiB9CiAK
LXN0YXRpYyBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2Ugd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2
aWdhdGlvbl9yZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwg
V2ViS2l0TmV0d29ya1JlcXVlc3QqKQorc3RhdGljIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSB3
ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9uX3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3Kiwg
V2ViS2l0V2ViRnJhbWUqLCBXZWJLaXROZXR3b3JrUmVxdWVzdCopCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKICAgICByZXR1cm4gV0VCS0lUX05BVklHQVRJT05fUkVTUE9OU0VfQUNDRVBUOwog
fQogCkBAIC04MTAsMTAgKzgxMiwxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2NyZWF0ZV93
ZWJfdmlld19yZXF1ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBpaAogCiBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X25hdmlnYXRpb25fcmVxdWVzdF9oYW5kbGVkKEdTaWduYWxJbnZv
Y2F0aW9uSGludCogaWhpbnQsIEdWYWx1ZSogcmV0dXJuQWNjdSwgY29uc3QgR1ZhbHVlKiBoYW5k
bGVyUmV0dXJuLCBncG9pbnRlciBkdW1teSkKIHsKLSAgICBpbnQgc2lnbmFsSGFuZGxlZCA9IGdf
dmFsdWVfZ2V0X2ludChoYW5kbGVyUmV0dXJuKTsKLSAgICBnX3ZhbHVlX3NldF9pbnQocmV0dXJu
QWNjdSwgc2lnbmFsSGFuZGxlZCk7CisgICAgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlIG5hdmln
YXRpb25SZXNwb25zZSA9IChXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2UpZ192YWx1ZV9nZXRfZW51
bShoYW5kbGVyUmV0dXJuKTsKKyAgICBnX3ZhbHVlX3NldF9lbnVtKHJldHVybkFjY3UsIG5hdmln
YXRpb25SZXNwb25zZSk7CiAKLSAgICBpZiAoc2lnbmFsSGFuZGxlZCAhPSBXRUJLSVRfTkFWSUdB
VElPTl9SRVNQT05TRV9BQ0NFUFQpCisgICAgaWYgKG5hdmlnYXRpb25SZXNwb25zZSAhPSBXRUJL
SVRfTkFWSUdBVElPTl9SRVNQT05TRV9BQ0NFUFQpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAog
ICAgIHJldHVybiBUUlVFOwpAQCAtOTA2LDE2ICs5MDgsODIgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAg
ICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAogICAgICAgICAgICAgR19U
WVBFX0JPT0xFQU4sIDApOwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bmF2aWdh
dGlvbi1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRo
ZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBmcmFtZTogdGhlICNXZWJLaXRXZWJGcmFtZSB0
aGF0IHJlcXVpcmVkIHRoZSBuYXZpZ2F0aW9uCisgICAgICogQHJlcXVlc3Q6IGEgI1dlYktpdE5l
dHdvcmtSZXF1ZXN0CisgICAgICogQHJldHVybjogYSBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2UK
KyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBAZnJhbWUgcmVxdWVzdHMgYSBuYXZpZ2F0aW9u
IHRvIGFub3RoZXIgcGFnZS4KKyAgICAgKgorICAgICAqIERlcHJlY2F0ZWQ6IFVzZSBuYXZpZ2F0
aW9uLXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQgaW5zdGVhZAorICAgICAqLwogICAgIHdlYmtp
dF93ZWJfdmlld19zaWduYWxzW05BVklHQVRJT05fUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygi
bmF2aWdhdGlvbi1yZXF1ZXN0ZWQiLAogICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2Vi
Vmlld0NsYXNzKSwKICAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNU
IHwgR19TSUdOQUxfQUNUSU9OKSwKICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVCAoV2ViS2l0
V2ViVmlld0NsYXNzLCBuYXZpZ2F0aW9uX3JlcXVlc3RlZCksCiAgICAgICAgICAgICB3ZWJraXRf
bmF2aWdhdGlvbl9yZXF1ZXN0X2hhbmRsZWQsCiAgICAgICAgICAgICBOVUxMLAotICAgICAgICAg
ICAgd2Via2l0X21hcnNoYWxfSU5UX19PQkpFQ1RfT0JKRUNULAotICAgICAgICAgICAgR19UWVBF
X0lOVCwgMiwKLSAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsCi0gICAgICAgICAgICBHX1RZUEVf
T0JKRUNUKTsKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0VOVU1fX09CSkVDVF9PQkpFQ1Qs
CisgICAgICAgICAgICBXRUJLSVRfVFlQRV9OQVZJR0FUSU9OX1JFU1BPTlNFLCAyLAorICAgICAg
ICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfTkVU
V09SS19SRVFVRVNUKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Om5hdmlnYXRp
b24tcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmpl
Y3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQGZyYW1lOiB0aGUgI1dl
YktpdFdlYkZyYW1lIHRoYXQgcmVxdWlyZWQgdGhlIG5hdmlnYXRpb24KKyAgICAgKiBAcmVxdWVz
dDogYSAjV2ViS2l0TmV0d29ya1JlcXVlc3QKKyAgICAgKiBAbmF2aWdhdGlvbl9hY3Rpb246IGEg
I1dlYktpdFdlYk5hdmlnYXRpb24KKyAgICAgKiBAcG9saWN5X2RlY2lzaW9uOiBhICNXZWJLaXRX
ZWJQb2xpY3lEZWNpc2lvbgorICAgICAqIEByZXR1cm46IFRSVUUgaWYgdGhlIHNpZ25hbCB3aWxs
IGJlIGhhbmRsZWQsIAorICAgICAqICAgICAgICAgIEZBTFNFIHRvIGhhdmUgdGhlIGRlZmF1bHQg
YmVoYXZpb3IgYXBwbHkKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBAZnJhbWUgcmVxdWVz
dHMgYSBuYXZpZ2F0aW9uIHRvIGFub3RoZXIgcGFnZS4KKyAgICAgKiBJZiB0aGlzIHNpZ25hbCBp
cyBub3QgaGFuZGxlZCwgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gYWxsb3cgdGhlCisgICAg
ICogbmF2aWdhdGlvbi4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tOQVZJ
R0FUSU9OX1BPTElDWV9ERUNJU0lPTl9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJuYXZpZ2F0
aW9uLXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01f
Q0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFM
X1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAg
ICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAor
ICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNUX09CSkVDVF9PQkpFQ1Rf
T0JKRUNULAorICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDQsCisgICAgICAgICAgICBXRUJL
SVRfVFlQRV9XRUJfRlJBTUUsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9ORVRXT1JLX1JFUVVF
U1QsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfTkFWSUdBVElPTl9BQ1RJT04sCisgICAg
ICAgICAgICBXRUJLSVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9OKTsKKworICAgIC8qKgorICAg
ICAqIFdlYktpdFdlYlZpZXc6Om1pbWUtdHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkOgor
ICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0
ZWQKKyAgICAgKiBAZnJhbWU6IHRoZSAjV2ViS2l0V2ViRnJhbWUgdGhhdCByZXF1aXJlZCB0aGUg
cG9saWN5IGRlY2lzaW9uCisgICAgICogQHJlcXVlc3Q6IGEgV2ViS2l0TmV0d29ya1JlcXVlc3QK
KyAgICAgKiBAbWltZXR5cGU6IHRoZSBNSU1FIHR5cGUgYXR0ZW1wdGVkIHRvIGxvYWQKKyAgICAg
KiBAcG9saWN5X2RlY2lzaW9uOiBhICNXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbgorICAgICAqIEBy
ZXR1cm46IFRSVUUgaWYgdGhlIHNpZ25hbCB3aWxsIGJlIGhhbmRsZWQsIAorICAgICAqICAgICAg
ICAgIEZBTFNFIHRvIGhhdmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYXBwbHkKKyAgICAgKgorICAg
ICAqIERlY2lkZSB3aGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IG9mIG5vdCB0aGUgZ2l2ZW4gTUlN
RSB0eXBlLgorICAgICAqIElmIHRoaXMgc2lnbmFsIGlzIG5vdCBoYW5kbGVkLCB0aGUgZGVmYXVs
dCBiZWhhdmlvciBpcyB0byBzaG93IHRoZQorICAgICAqIGNvbnRlbnQgb2YgdGhlIHJlcXVlc3Rl
ZCBVUkkgaWYgV2ViS2l0IGNhbiBzaG93IHRoaXMgTUlNRSB0eXBlLAorICAgICAqIGVsc2UgaXQg
d2lsbCBiZSBpZ25vcmVkLgorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW01J
TUVfVFlQRV9QT0xJQ1lfREVDSVNJT05fUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygibWltZS10
eXBlLXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01f
Q0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFM
X1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAg
ICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAor
ICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNUX09CSkVDVF9TVFJJTkdf
T0JKRUNULAorICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDQsCisgICAgICAgICAgICBXRUJL
SVRfVFlQRV9XRUJfRlJBTUUsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9ORVRXT1JLX1JFUVVF
U1QsCisgICAgICAgICAgICBHX1RZUEVfU1RSSU5HLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVf
V0VCX1BPTElDWV9ERUNJU0lPTik7CiAKICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3Ojp3
aW5kb3ctb2JqZWN0LWNsZWFyZWQ6CkBAIC0yMzI4LDYgKzIzOTYsMjcgQEAgR3RrVGFyZ2V0TGlz
dCogd2Via2l0X3dlYl92aWV3X2dldF9wYXN0ZV90YXJnZXRfbGlzdChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogfQogCiAvKioKKyAqIHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGU6
CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEBtaW1lX3R5cGU6IGEgTUlNRSB0
eXBlCisgKgorICogVGhpcyBmdW5jdGlvbnMgcmV0dXJucyB3aGV0aGVyIG9yIG5vdCBhIE1JTUUg
dHlwZSBjYW4gYmUgZGlzcGxheWVkIHVzaW5nIHRoaXMgdmlldy4KKyAqCisgKiBSZXR1cm4gdmFs
dWU6IGEgI2dib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIE1JTUUgdHlwZSBjYW4gYmUgZGlzcGxh
eWVkCisgKiovCisKK2dib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUg
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBtaW1lVHlwZSkKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsK
KyAgICAKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9m
cmFtZSh3ZWJWaWV3KSk7CisgICAgaWYgKEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9h
ZGVyKCkpCisgICAgICAgIHJldHVybiBsb2FkZXItPmNhblNob3dNSU1FVHlwZShtaW1lVHlwZSk7
CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRkFMU0U7Cit9CisKKy8qKgogICogd2Via2l0X3dl
Yl92aWV3X2dldF90cmFuc3BhcmVudDoKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwog
ICoKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCAyMThiZjc4Li5jOWYwOTc5IDEwMDY0
NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKKysrIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQ29sbGFib3JhIEx0ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNzEsOSArNzIsNiBAQCBz
dHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAKICAgICBnYm9vbGVhbiAgICAgICAgICAgICAg
ICAgICAoKiB3ZWJfdmlld19yZWFkeSkgICAgICAgICAgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3
KTsKIAotICAgIC8qCi0gICAgICogVE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhpbmcgbGlrZSBX
ZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyX1Byb3RvY29sIGluc3RlYWQKLSAgICAgKi8KICAgICBX
ZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2UgICAoKiBuYXZpZ2F0aW9uX3JlcXVlc3RlZCkgICAoV2Vi
S2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJGcmFtZSAgICAgICAqZnJh
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0ICpyZXF1ZXN0KTsKQEAgLTI2MCw2ICsyNTgsMTAg
QEAgV0VCS0lUX0FQSSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyoKIHdlYmtpdF93ZWJfdmlld19n
ZXRfd2luZG93X2ZlYXR1cmVzICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2Vi
X3ZpZXcpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3df
bWltZV90eXBlICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICptaW1lX3R5cGUpOworCitXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3RyYW5zcGFyZW50ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgKndlYl92aWV3KTsKIAogV0VCS0lUX0FQSSB2b2lkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26036</attachid>
            <date>2008-12-15 16:37:45 -0800</date>
            <delta_ts>2008-12-19 11:33:38 -0800</delta_ts>
            <desc>reworked patch, with changes proposed by Xan</desc>
            <filename>policy-delegates.diff</filename>
            <type>text/plain</type>
            <size>41390</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggNDZjNmNl
MS4uN2FlYzA2MSAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUu
YW0KQEAgLTMwOCw2ICszMDgsOCBAQCB3ZWJraXRndGtfaF9hcGkgKz0gXAogCVdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmZyYW1lLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5oIFwK
KwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmggXAorCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmggXAogCVdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndp
bmRvd2ZlYXR1cmVzLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAt
MzQxLDYgKzM0Myw4IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJmcmFtZS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3Rv
cnlpdGVtLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcCBc
CisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5jcHAgXAorCVdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcCBcCiAJV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVy
ZXMuY3BwCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCmluZGV4IGJmNWVlN2UuLmQzZGNjNzMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMDgt
MDktMjUgIE1hcmNvIEJhcmlzaW9uZSAgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NjIKKyAgICAgICAgW2d0a10gSW1w
bGVtZW50IFdlYlBvbGljeURlbGVnYXRlIG1ldGhvZHMKKworICAgICAgICBPcmlnaW5hbCB3b3Jr
IGJ5IFBpZXJyZS1MdWMgQmVhdWRvaW4uCisKKyAgICAgICAgVGhpcyBpbXBsZW1lbnRzIHRoZSBk
ZWxlZ2F0ZXMgbWV0aG9kcyBvZiBXZWJQb2xpY3lEZWxlZ2F0ZS4KKyAgICAgICAgU2luY2UgR3Rr
Ky9DIGRvZXNuJ3QgaGF2ZSBkZWxlZ2F0ZSBtZXRob2RzLCB0aGV5IGFyZSByZXBsYWNlZCB3aXRo
CisgICAgICAgIHNpZ25hbHMuCisKKyAgICAgICAgQSBuZXcgb2JqZWN0IFdlYktpdFdlYlBvbGlj
eURlY2lzaW9uIGFsbG93IHRoZSBicm93c2VyIHRvIGRlbGF5IGl0cworICAgICAgICByZXNwb25z
ZSBpbiBjZXJ0YWluIGNhc2VzLiBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uIGNvbnRhaW5zIHRo
ZQorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGNhdXNlZCBhIG5hdmlnYXRpb24gcmVx
dWVzdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OkZyYW1lTG9hZGVyQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6On5GcmFtZUxvYWRlckNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck1JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVj
ayk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5cGUp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdC5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRkZWZpbmVzLmg6
CisgICAgICAgICogd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwOgorICAgICAgICAoV2ViS2l0Ojpr
aXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJp
dmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmNwcDog
QWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGU6Oik6Cisg
ICAgICAgIChfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGU6OndlYmtpdF93ZWJfbmF2
aWdhdGlvbl9hY3Rpb25fZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0
aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfcHJvcGVy
dHkpOgorICAgICAgICAoX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlOjp3ZWJraXRf
d2ViX25hdmlnYXRpb25fYWN0aW9uX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYk5hdmlnYXRp
b25BY3Rpb25Qcml2YXRlOjp3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2ZpbmFsaXplKToK
KyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9u
YXZpZ2F0aW9uX2FjdGlvbl9jbGFzc19pbml0KToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0
aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcmVhc29u
KToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dl
Yl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfcmVhc29uKToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZp
Z2F0aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfb3Jp
Z2luYWxfdXJpKToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTo6
d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfb3JpZ2luYWxfdXJpKToKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJL
aXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGU6OndlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Ns
YXNzX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTo6d2Vi
a2l0X3dlYl9wb2xpY3lfZGVjaXNpb25faW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViUG9saWN5
RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9uZXcpOgorICAgICAg
ICAoX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVj
aXNpb25fdXNlKToKKyAgICAgICAgKF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGU6Ondl
YmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2lnbm9yZSk6CisgICAgICAgIChfV2ViS2l0V2ViUG9s
aWN5RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZCk6
CisgICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3Bv
bGljeV9kZWNpc2lvbl9jYW5jZWwpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lk
ZWNpc2lvbi5oOiBBZGRlZC4KKwogMjAwOC0xMi0xMyAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBDYW1lcm9uIFp3
YXJpY2guCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCmluZGV4IDRjNTlkMDEuLmY1MWVkZDIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC00Niw2ICs0Niw4IEBA
CiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogI2luY2x1ZGUgIndlYmtpdG5ldHdvcmtyZXF1
ZXN0LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJu
YXZpZ2F0aW9uYWN0aW9uLmgiCisjaW5jbHVkZSAid2Via2l0d2VicG9saWN5ZGVjaXNpb24uaCIK
ICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9B
UElDYXN0Lmg+CkBAIC02MywxMCArNjUsMTcgQEAgRnJhbWVMb2FkZXJDbGllbnQ6OkZyYW1lTG9h
ZGVyQ2xpZW50KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKICAgICAsIG1fdXNlckFnZW50KCIiKQog
ICAgICwgbV9wbHVnaW5WaWV3KDApCiAgICAgLCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKGZh
bHNlKQorICAgICwgbV9wb2xpY3lEZWNpc2lvbigwKQogewogICAgIEFTU0VSVChtX2ZyYW1lKTsK
IH0KIAorRnJhbWVMb2FkZXJDbGllbnQ6On5GcmFtZUxvYWRlckNsaWVudCgpCit7CisgICAgaWYg
KG1fcG9saWN5RGVjaXNpb24pCisgICAgICAgIGdfb2JqZWN0X3VucmVmKG1fcG9saWN5RGVjaXNp
b24pOworfQorCiBzdGF0aWMgU3RyaW5nIGFnZW50UGxhdGZvcm0oKQogewogI2lmZGVmIEdES19X
SU5ET1dJTkdfWDExCkBAIC0yNDMsMTYgKzI1MiwzNSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bgogICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBv
bGljeUZ1bmN0aW9uLCBjb25zdCBTdHJpbmcmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQordm9p
ZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFt
ZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICAvLyBGSVhNRTog
d2UgbmVlZCB0byBjYWxsIGRpcmVjdGx5IGhlcmUgKGNvbW1lbnQgY29waWVkIGZyb20gUXQgdmVy
c2lvbikKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9saWN5RnVuY3Rp
b24pCiAgICAgICAgIHJldHVybjsKLSAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xp
Y3lGdW5jdGlvbikoUG9saWN5VXNlKTsKKworICAgIFdlYktpdFdlYlZpZXcqIHBhZ2UgPSBnZXRW
aWV3RnJvbUZyYW1lKG1fZnJhbWUpOworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0
ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIHBvbGlj
eURlY2lzaW9uID0gd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fbmV3KG1fZnJhbWUsIHBvbGlj
eUZ1bmN0aW9uKTsKKyAgICBpZiAobV9wb2xpY3lEZWNpc2lvbikKKyAgICAgICAgZ19vYmplY3Rf
dW5yZWYobV9wb2xpY3lEZWNpc2lvbik7CisgICAgbV9wb2xpY3lEZWNpc2lvbiA9IHBvbGljeURl
Y2lzaW9uOworCisgICAgZ2Jvb2xlYW4gaXNIYW5kbGVkID0gZmFsc2U7CisgICAgZ19zaWduYWxf
ZW1pdF9ieV9uYW1lKHBhZ2UsICJtaW1lLXR5cGUtcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCIs
IG1fZnJhbWUsIHJlcXVlc3QsIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCksIHBvbGljeURlY2lzaW9u
LCAmaXNIYW5kbGVkKTsKKworICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOworCisgICAgaWYg
KGlzSGFuZGxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNhblNob3dNSU1FVHlwZSht
aW1lVHlwZSkpCisgICAgICAgIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX3VzZSAocG9saWN5
RGVjaXNpb24pOworICAgIGVsc2UKKyAgICAgICAgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25f
ZG93bmxvYWQgKHBvbGljeURlY2lzaW9uKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlv
biBwb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZy
YW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
IGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBzKQogewogICAgIEFTU0VSVChwb2xpY3lGdW5j
dGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKQEAgLTI3MSwxNyArMjk5LDM5IEBAIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihGcmFtZVBvbGljeUZ1bmN0CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZp
ZXdGcm9tRnJhbWUobV9mcmFtZSk7CiAgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3Qg
PSB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X25ldyhyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlIHJlc3BvbnNl
OwotCisgICAgLyogV2Ugc3RpbGwgc3VwcG9ydCB0aGUgZGVwcmVjYXRlZCBuYXZpZ2F0aW9uLXJl
cXVlc3RlZCBzaWduYWwsIGlmIHRoZQorICAgICAqIGFwcGxpY2F0aW9uIGRvZXNuJ3QgaWdub3Jl
IHRoZSBuYXZpZ2F0aW9uIHRoZW4gdGhlIG5ldyBzaWduYWwgaXMKKyAgICAgKiBlbWl0dGVkLgor
ICAgICAqIG5hdmlnYXRpb24tcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCBtdXN0IGJlIGVtaXR0
ZWQgYWZ0ZXIKKyAgICAgKiBuYXZpZ2F0aW9uLXJlcXVlc3RlZCBhcyB0aGUgcG9saWN5IGRlY2lz
aW9uIGNhbiBiZSBhc3luYy4gKi8KICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywg
Im5hdmlnYXRpb24tcmVxdWVzdGVkIiwgbV9mcmFtZSwgcmVxdWVzdCwgJnJlc3BvbnNlKTsKIAot
ICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOwotCiAgICAgaWYgKHJlc3BvbnNlID09IFdFQktJ
VF9OQVZJR0FUSU9OX1JFU1BPTlNFX0lHTk9SRSkgewogICAgICAgICAoY29yZShtX2ZyYW1lKS0+
bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKKyAgICAgICAgZ19vYmpl
Y3RfdW5yZWYocmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAoY29yZSht
X2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICBXZWJL
aXRXZWJQb2xpY3lEZWNpc2lvbiogcG9saWN5RGVjaXNpb24gPSB3ZWJraXRfd2ViX3BvbGljeV9k
ZWNpc2lvbl9uZXcobV9mcmFtZSwgcG9saWN5RnVuY3Rpb24pOworICAgIGlmIChtX3BvbGljeURl
Y2lzaW9uKQorICAgICAgICBnX29iamVjdF91bnJlZihtX3BvbGljeURlY2lzaW9uKTsKKyAgICBt
X3BvbGljeURlY2lzaW9uID0gcG9saWN5RGVjaXNpb247CisKKyAgICAvLyBUT0RPOiB1c2UgYWN0
aW9uLmV2ZW50KCkuCisgICAgZ3BvaW50ZXIgbmF2aWdhdGlvbkFjdGlvbiA9IGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfTkFWSUdBVElPTl9BQ1RJT04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhc29uIiwga2l0KGFjdGlvbi50eXBlKCkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yaWdpbmFsLXVy
aSIsIGFjdGlvbi51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICBnYm9vbGVhbiBpc0hh
bmRsZWQgPSBmYWxzZTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgIm5hdmln
YXRpb24tcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3QsIG5hdmln
YXRpb25BY3Rpb24sIHBvbGljeURlY2lzaW9uLCAmaXNIYW5kbGVkKTsKKworICAgIGdfb2JqZWN0
X3VucmVmKG5hdmlnYXRpb25BY3Rpb24pOworICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOwor
CisgICAgLy8gRklYTUUgSW1wbGVtZW50IGRlZmF1bHQgYmVoYXZpb3Igd2hlbiB3ZSBjYW4gcXVl
cnkgdGhlIGJhY2tlbmQgd2hhdCBwcm90b2NvbHMgaXQgc3VwcG9ydHMKKyAgICBpZiAoIWlzSGFu
ZGxlZCkKKyAgICAgICAgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlKG1fcG9saWN5RGVj
aXNpb24pOwogfQogCiBXaWRnZXQqIEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29u
c3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkK
QEAgLTU1MCw3ICs2MDAsOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3co
KQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVjaygpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICAvL0ZJWE1FIEFkZCBzdXBwb3J0IGZvciBtb3JlIHRoYW4g
b25lIHBvbGljeSBkZWNpc2lvbiBhdCBvbmNlCisgICAgaWYgKG1fcG9saWN5RGVjaXNpb24pCisg
ICAgICAgIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2NhbmNlbChtX3BvbGljeURlY2lzaW9u
KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkTWFpblJlc291
cmNlKERvY3VtZW50TG9hZGVyKikKQEAgLTU3OSwxMCArNjMxLDEwIEBAIGJvb2wgRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01J
TUVUeXBlKGNvbnN0IFN0cmluZyYpIGNvbnN0Citib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5T
aG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSh0eXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZE5vbkltYWdlTUlNRVR5cGUodHlwZSkgfHwKKyAgICAgICAgUGx1Z2luRGF0YWJhc2U6Omlu
c3RhbGxlZFBsdWdpbnMoKS0+aXNNSU1FVHlwZVJlZ2lzdGVyZWQodHlwZSk7CiB9CiAKIGJvb2wg
RnJhbWVMb2FkZXJDbGllbnQ6OnJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0
IFN0cmluZyYpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmgKaW5kZXggMDczOGEyOS4uYmNkYjI5NyAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJwb2xp
Y3lkZWNpc2lvbi5oIgogCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWUgV2ViS2l0V2Vi
RnJhbWU7CiAKQEAgLTQxLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgY2xhc3Mg
RnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewog
ICAgIHB1YmxpYzoKICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQoV2ViS2l0V2ViRnJhbWUqKTsK
LSAgICAgICAgdmlydHVhbCB+RnJhbWVMb2FkZXJDbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVh
bCB+RnJhbWVMb2FkZXJDbGllbnQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZGVy
RGVzdHJveWVkKCk7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqICB3ZWJGcmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWU7IH0KQEAgLTE3MCw2ICsxNzEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAgV2ViQ29yZTo6U3RyaW5nIG1fdXNl
ckFnZW50OworICAgICAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogbV9wb2xpY3lEZWNpc2lv
bjsKIAogICAgICAgICAvLyBQbHVnaW4gdmlldyB0byByZWRpcmVjdCBkYXRhIHRvCiAgICAgICAg
IFdlYkNvcmU6OlBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKZGlmZiAtLWdpdCBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdC5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKaW5kZXggODYy
MWU0Ni4uOGM4NjhhMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKKysr
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzAsNiArMzEs
OCBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJo
aXN0b3J5aXRlbS5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5o
PgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmg+CiAjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdGVudW10eXBlcy5oPgogCiAjZW5kaWYgLyogX19XRUJLSVRfSF9fICov
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmggYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKaW5kZXggYjY3NGU5Zi4uZjk0ZTcxMCAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCisrKyBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdGRlZmluZXMuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBDb2xsYWJvcmEgTHRkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Miw2ICs1Myw5IEBAIHR5
cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJIaXN0b3J5SXRlbUNsYXNzIFdlYktpdFdlYkhpc3RvcnlJ
dGVtQ2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWUgV2ViS2l0V2ViRnJhbWU7
CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVDbGFzcyBXZWJLaXRXZWJGcmFtZUNsYXNz
OwogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb24gV2ViS2l0V2ViUG9s
aWN5RGVjaXNpb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25DbGFz
cyBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzOworCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
V2ViU2V0dGluZ3MgV2ViS2l0V2ViU2V0dGluZ3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vi
U2V0dGluZ3NDbGFzcyBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzOwogCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHByaXZhdGUuY3BwCmluZGV4IDA3YzgxNzQuLjIyODNjOGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHByaXZhdGUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBI
b2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9y
YSBMdGQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTgzLDYgKzg0LDE2IEBAIFdlYktpdFdlYlZp
ZXcqIGtpdChXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSkKICAgICByZXR1cm4gY2xpZW50ID8gY2xp
ZW50LT53ZWJWaWV3KCkgOiAwOwogfQogCitXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uIGtpdChX
ZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSB0eXBlKQoreworICAgIHJldHVybiAoV2ViS2l0V2ViTmF2
aWdhdGlvblJlYXNvbil0eXBlOworfQorIAorV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgY29yZShX
ZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uIHR5cGUpCit7CisgICAgcmV0dXJuIChXZWJDb3JlOjpO
YXZpZ2F0aW9uVHlwZSl0eXBlOworfQorCiB9IC8qKiBlbmQgbmFtZXNwYWNlIFdlYktpdCAqLwog
CiB2b2lkIHdlYmtpdF9pbml0KCkKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHByaXZhdGUuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAppbmRleCAyODBj
YWIyLi44ZjczNGYxIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRl
LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCkBAIC0xLDYgKzEsNyBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA4IEphbiBNaWNoYWVsIEMuIEFsb256bworICogQ29w
eXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI5
LDYgKzMwLDggQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgogI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1l
Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmg+CisjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2Vic2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vid2luZG93ZmVh
dHVyZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmg+CkBA
IC01Nyw2ICs2MCw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIFdlYktpdFdlYkhpc3RvcnlJ
dGVtKiBraXQoV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKIAogICAgIFdlYkNvcmU6OkJhY2tGb3J3
YXJkTGlzdCogY29yZShXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqKTsKKworICAgIFdlYktpdFdl
Yk5hdmlnYXRpb25SZWFzb24ga2l0KFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIHR5cGUpOworICAg
IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIGNvcmUoV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbiBy
ZWFzb24pOwogfQogCiBleHRlcm4gIkMiIHsKQEAgLTEzMCw2ICsxMzYsMTIgQEAgZXh0ZXJuICJD
IiB7CiAgICAgdm9pZAogICAgIHdlYmtpdF93ZWJfdmlld19ub3RpZnlfcmVhZHkgKFdlYktpdFdl
YlZpZXcqIHdlYl92aWV3KTsKIAorICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKgorICAgIHdl
YmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX25ldyAoV2ViS2l0V2ViRnJhbWUqLCBXZWJDb3JlOjpG
cmFtZVBvbGljeUZ1bmN0aW9uKTsKKworICAgIHZvaWQKKyAgICB3ZWJraXRfd2ViX3BvbGljeV9k
ZWNpc2lvbl9jYW5jZWwgKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbik7CisKICAg
ICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB3ZWJraXR3ZWJmcmFtZS5oIG9uY2UgdGhlaXIgQVBJ
IGhhcyBiZWVuIGRpc2N1c3NlZC4KIAogICAgIFdFQktJVF9BUEkgR1NMaXN0KgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5jcHAgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjFkNDAyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5jcHAKQEAgLTAsMCArMSwxOTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAid2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5oIgorI2luY2x1
ZGUgIndlYmtpdHByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXRlbnVtdHlwZXMuaCIKKworI2lu
Y2x1ZGUgPHN0cmluZy5oPgorCitleHRlcm4gIkMiIHsKKworc3RydWN0IF9XZWJLaXRXZWJOYXZp
Z2F0aW9uQWN0aW9uUHJpdmF0ZSB7CisgICAgV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbiByZWFz
b247CisgICAgZ2NoYXIqIG9yaWdpbmFsVXJpOworfTsKKworI2RlZmluZSBXRUJLSVRfV0VCX05B
VklHQVRJT05fQUNUSU9OX0dFVF9QUklWQVRFKG9iaikoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklW
QVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfTkFWSUdBVElPTl9BQ1RJT04sIFdlYktpdFdlYk5h
dmlnYXRpb25BY3Rpb25Qcml2YXRlKSkKKworZW51bSAgeworICAgIFBST1BfMCwKKworICAgIFBS
T1BfUkVBU09OLAorICAgIFBST1BfT1JJR0lOQUxfVVJJCit9OworCitHX0RFRklORV9UWVBFKFdl
YktpdFdlYk5hdmlnYXRpb25BY3Rpb24sIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb24sIEdf
VFlQRV9PQkpFQ1QpCisKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlv
bl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUq
IHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0
aW9uKiBuYXZpZ2F0aW9uQWN0aW9uID0gV0VCS0lUX1dFQl9OQVZJR0FUSU9OX0FDVElPTihvYmpl
Y3QpOworCisgICAgc3dpdGNoKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIFBST1BfUkVBU09OOgor
ICAgICAgICBnX3ZhbHVlX3NldF9lbnVtKHZhbHVlLCB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0
aW9uX2dldF9yZWFzb24obmF2aWdhdGlvbkFjdGlvbikpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfT1JJR0lOQUxfVVJJOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUs
IHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X29yaWdpbmFsX3VyaShuYXZpZ2F0aW9u
QWN0aW9uKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNU
X1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX25hdmlnYXRp
b25fYWN0aW9uX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQs
IGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdl
Yk5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24gPSBXRUJLSVRfV0VCX05BVklHQVRJ
T05fQUNUSU9OKG9iamVjdCk7CisKKyAgICBzd2l0Y2gocHJvcGVydHlJZCkgeworICAgIGNhc2Ug
UFJPUF9SRUFTT046CisgICAgICAgIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fc2V0X3Jl
YXNvbihuYXZpZ2F0aW9uQWN0aW9uLCAoV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbilnX3ZhbHVl
X2dldF9lbnVtKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9PUklHSU5B
TF9VUkk6CisgICAgICAgIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fc2V0X29yaWdpbmFs
X3VyaShuYXZpZ2F0aW9uQWN0aW9uLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25faW5pdChX
ZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uKQoreworICAgIG5hdmln
YXRpb25BY3Rpb24tPnByaXYgPSBXRUJLSVRfV0VCX05BVklHQVRJT05fQUNUSU9OX0dFVF9QUklW
QVRFKG5hdmlnYXRpb25BY3Rpb24pOworCisgICAgV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblBy
aXZhdGUqIHByaXYgPSBuYXZpZ2F0aW9uQWN0aW9uLT5wcml2OworfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2ZpbmFsaXplKEdPYmplY3QqIG9iaikKK3sKKyAg
ICBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uID0gV0VCS0lUX1dF
Ql9OQVZJR0FUSU9OX0FDVElPTihvYmopOworICAgIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Q
cml2YXRlKiBwcml2ID0gbmF2aWdhdGlvbkFjdGlvbi0+cHJpdjsKKworICAgIGdfZnJlZShwcml2
LT5vcmlnaW5hbFVyaSk7CisKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX25hdmlnYXRp
b25fYWN0aW9uX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iaik7Cit9CisKK3N0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fY2xhc3NfaW5pdChXZWJLaXRXZWJOYXZpZ2F0
aW9uQWN0aW9uQ2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9iamVj
dENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKworICAgIG9iamVjdENsYXNz
LT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9wcm9wZXJ0
eTsKKyAgICBvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9uYXZpZ2F0aW9u
X2FjdGlvbl9zZXRfcHJvcGVydHk7CisgICAgb2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRf
d2ViX25hdmlnYXRpb25fYWN0aW9uX2ZpbmFsaXplOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9SRUFTT04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfZW51bSgicmVhc29uIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWFzb24iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRo
ZSByZWFzb24gd2h5IHRoaXMgbmF2aWdhdGlvbiBpcyBvY2N1cnJpbmciLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VC
X05BVklHQVRJT05fUkVBU09OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9PVEhFUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHUGFy
YW1GbGFncykoV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKSkpOwor
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9P
UklHSU5BTF9VUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfc3RyaW5nKCJvcmlnaW5hbC11cmkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JpZ2luYWwgVVJJIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBVUkkgdGhh
dCB3YXMgcmVxdWVzdGVkIGFzIHRoZSB0YXJnZXQgZm9yIHRoZSBuYXZpZ2F0aW9uIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChH
UGFyYW1GbGFncykoV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKSkp
OworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdl
YktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcmVhc29uOgorICogQG5hdmlnYXRpb25BY3Rpb246IGEg
I1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24KKyAqCisgKiBSZXR1cm5zIHRoZSByZWFzb24gd2h5
IFdlYktpdCBpcyByZXF1ZXN0aW5nIGEgbmF2aWdhdGlvbi4KKyAqCisgKiBSZXR1cm4gdmFsdWU6
IGEgI1dlYktpdFdlYk5hdmlnYXRpb25SZWFzb24KKyAqLworV2ViS2l0V2ViTmF2aWdhdGlvblJl
YXNvbiB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9yZWFzb24oV2ViS2l0V2ViTmF2
aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfV0VCX05BVklHQVRJT05fQUNUSU9OKG5hdmlnYXRpb25BY3Rpb24pLCBX
RUJLSVRfV0VCX05BVklHQVRJT05fUkVBU09OX09USEVSKTsKKworICAgIHJldHVybiBuYXZpZ2F0
aW9uQWN0aW9uLT5wcml2LT5yZWFzb247Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9uYXZpZ2F0
aW9uX2FjdGlvbl9zZXRfcmVhc29uOgorICogQG5hdmlnYXRpb25BY3Rpb246IGEgI1dlYktpdFdl
Yk5hdmlnYXRpb25BY3Rpb24KKyAqIEByZWFzb246IGEgI1dlYktpdFdlYk5hdmlnYXRpb25SZWFz
b24KKyAqCisgKiBTZXRzIHRoZSByZWFzb24gd2h5IFdlYktpdCBpcyByZXF1ZXN0aW5nIGEgbmF2
aWdhdGlvbi4KKyAqLwordm9pZCB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX3NldF9yZWFz
b24oV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbiwgV2ViS2l0V2Vi
TmF2aWdhdGlvblJlYXNvbiByZWFzb24pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX05BVklHQVRJT05fQUNUSU9OKG5hdmlnYXRpb25BY3Rpb24pKTsKKworICAgIGlmIChu
YXZpZ2F0aW9uQWN0aW9uLT5wcml2LT5yZWFzb24gPT0gcmVhc29uKQorICAgICAgICByZXR1cm47
CisKKyAgICBuYXZpZ2F0aW9uQWN0aW9uLT5wcml2LT5yZWFzb24gPSByZWFzb247CisgICAgZ19v
YmplY3Rfbm90aWZ5KEdfT0JKRUNUKG5hdmlnYXRpb25BY3Rpb24pLCAicmVhc29uIik7Cit9CisK
Ky8qKgorICogd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfb3JpZ2luYWxfdXJpOgor
ICogQG5hdmlnYXRpb25BY3Rpb246IGEgI1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24KKyAqCisg
KiBSZXR1cm5zIHRoZSBVUkkgdGhhdCB3YXMgb3JpZ2luYWxseSByZXF1ZXN0ZWQuIFRoaXMgbWF5
IGRpZmZlciBmcm9tIHRoZQorICogbmF2aWdhdGlvbiB0YXJnZXQsIGZvciBpbnN0YW5jZSBiZWNh
dXNlIG9mIGEgcmVkaXJlY3QuCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgb3JpZ2luYWxseSBy
ZXF1ZXN0ZWQgVVJJCisgKi8KK2NvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0
aW9uX2dldF9vcmlnaW5hbF91cmkoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlv
bkFjdGlvbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX05BVklH
QVRJT05fQUNUSU9OKG5hdmlnYXRpb25BY3Rpb24pLCBOVUxMKTsKKworICAgIHJldHVybiBuYXZp
Z2F0aW9uQWN0aW9uLT5wcml2LT5vcmlnaW5hbFVyaTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vi
X25hdmlnYXRpb25fYWN0aW9uX3NldF9vcmlnaW5hbF91cmk6CisgKiBAbmF2aWdhdGlvbkFjdGlv
bjogYSAjV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbgorICogQG9yaWdpbmFsVXJpOiBhIFVSSQor
ICoKKyAqIFNldHMgdGhlIFVSSSB0aGF0IHdhcyBvcmlnaW5hbGx5IHJlcXVlc3RlZC4gVGhpcyBt
YXkgZGlmZmVyIGZyb20gdGhlCisgKiBuYXZpZ2F0aW9uIHRhcmdldCwgZm9yIGluc3RhbmNlIGJl
Y2F1c2Ugb2YgYSByZWRpcmVjdC4KKyAqLwordm9pZCB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0
aW9uX3NldF9vcmlnaW5hbF91cmkoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlv
bkFjdGlvbiwgY29uc3QgZ2NoYXIqIG9yaWdpbmFsVXJpKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9OQVZJR0FUSU9OX0FDVElPTihuYXZpZ2F0aW9uQWN0aW9uKSk7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChvcmlnaW5hbFVyaSk7CisKKyAgICBpZiAobmF2aWdhdGlvbkFj
dGlvbi0+cHJpdi0+b3JpZ2luYWxVcmkgJiYKKyAgICAgICAgKCFzdHJjbXAobmF2aWdhdGlvbkFj
dGlvbi0+cHJpdi0+b3JpZ2luYWxVcmksIG9yaWdpbmFsVXJpKSkpCisgICAgICAgIHJldHVybjsK
KworICAgIGdfZnJlZShuYXZpZ2F0aW9uQWN0aW9uLT5wcml2LT5vcmlnaW5hbFVyaSk7CisgICAg
bmF2aWdhdGlvbkFjdGlvbi0+cHJpdi0+b3JpZ2luYWxVcmkgPSBnX3N0cmR1cChvcmlnaW5hbFVy
aSk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG5hdmlnYXRpb25BY3Rpb24pLCAib3Jp
Z2luYWwtdXJpIik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYm5hdmlnYXRpb25hY3Rpb24uaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYm5hdmln
YXRpb25hY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTlkZmM0
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlv
bmFjdGlvbi5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29s
bGFib3JhIEx0ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2lmbmRlZiBXRUJLSVRfV0VCX05BVklHQVRJT05fQUNUSU9OX0gKKyNkZWZp
bmUgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX0FDVElPTl9ICisKKyNpbmNsdWRlIDxnbGliLW9iamVj
dC5oPgorCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKworR19CRUdJTl9ERUNM
UworCisvKiBUaGUgb3JkZXIgb2YgdGhpcyBlbnVtIG11c3QgYmUgdGhlIHNhbWUgYXMgTmF2aWdh
dGlvblR5cGUgaW4KKyAqIEZyYW1lTG9hZGVyVHlwZXMuaAorICovCit0eXBlZGVmIGVudW0gewor
ICAgIFdFQktJVF9XRUJfTkFWSUdBVElPTl9SRUFTT05fTElOS19DTElDS0VELAorICAgIFdFQktJ
VF9XRUJfTkFWSUdBVElPTl9SRUFTT05fRk9STV9TVUJNSVRURUQsCisgICAgV0VCS0lUX1dFQl9O
QVZJR0FUSU9OX1JFQVNPTl9CQUNLX0ZPUldBUkQsCisgICAgV0VCS0lUX1dFQl9OQVZJR0FUSU9O
X1JFQVNPTl9SRUxPQUQsCisgICAgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9GT1JNX1JF
U1VCTUlUVEVELAorICAgIFdFQktJVF9XRUJfTkFWSUdBVElPTl9SRUFTT05fT1RIRVIsICAgIAor
ICAgIFdFQktJVF9XRUJfTkFWSUdBVElPTl9SRUFTT05fUExVR19JTl9SRVFVRVNUCit9IFdlYktp
dFdlYk5hdmlnYXRpb25SZWFzb247CisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX05BVklHQVRJ
T05fQUNUSU9OICAgICAgICAgICAgKHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3R5
cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX0FDVElPTihvYmopICAgICAgICAg
ICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfTkFW
SUdBVElPTl9BQ1RJT04sIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24pKQorI2RlZmluZSBXRUJL
SVRfV0VCX05BVklHQVRJT05fQUNUSU9OX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NM
QVNTX0NBU1QoKGtsYXNzKSwgV0VCS0lUX1RZUEVfV0VCX05BVklHQVRJT05fQUNUSU9OLCBXZWJL
aXRXZWJOYXZpZ2F0aW9uQWN0aW9uQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX05BVklH
QVRJT05fQUNUSU9OKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9i
aiksIFdFQktJVF9UWVBFX1dFQl9OQVZJR0FUSU9OX0FDVElPTikpCisjZGVmaW5lIFdFQktJVF9J
U19XRUJfTkFWSUdBVElPTl9BQ1RJT05fQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
VFlQRSgoa2xhc3MpLCBXRUJLSVRfVFlQRV9XRUJfTkFWSUdBVElPTl9BQ1RJT04pKQorI2RlZmlu
ZSBXRUJLSVRfV0VCX05BVklHQVRJT05fQUNUSU9OX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lO
U1RBTkNFX0dFVF9DTEFTUygob2JqKSwgV0VCS0lUX1RZUEVfV0VCX05BVklHQVRJT05fQUNUSU9O
LCBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2ViTmF2aWdhdGlvbkFjdGlvbiBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uOwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25DbGFzcyBXZWJLaXRXZWJOYXZpZ2F0
aW9uQWN0aW9uQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlv
blByaXZhdGUgV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGU7CisKK3N0cnVjdCBfV2Vi
S2l0V2ViTmF2aWdhdGlvbkFjdGlvbiB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7Cisg
ICAgV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGUqIHByaXY7Cit9OworCitzdHJ1Y3Qg
X1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25DbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVu
dF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfbmF2aWdhdGlvbl9h
Y3Rpb25fZ2V0X3R5cGUodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2ViTmF2aWdhdGlvblJl
YXNvbgord2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcmVhc29uKFdlYktpdFdlYk5h
dmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24pOworCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fc2V0X3JlYXNvbihXZWJLaXRXZWJOYXZpZ2F0aW9u
QWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uLCBXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uIHJlYXNv
bik7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0
aW9uX2dldF9vcmlnaW5hbF91cmkoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlv
bkFjdGlvbik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlv
bl9zZXRfb3JpZ2luYWxfdXJpKFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25B
Y3Rpb24sIGNvbnN0IGdjaGFyKiBvcmlnaW5hbFVyaSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24u
Y3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNWEyODIKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHAKQEAgLTAsMCAr
MSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAid2Via2l0d2VicG9saWN5ZGVjaXNpb24uaCIKKwor
I2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
ZXh0ZXJuICJDIiB7CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24sIHdl
YmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uLCBHX1RZUEVfT0JKRUNUKTsKKworc3RydWN0IF9XZWJL
aXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUgeworICAgIFdlYktpdFdlYkZyYW1lKiBmcmFtZTsK
KyAgICBGcmFtZVBvbGljeUZ1bmN0aW9uIGZyYW1lUG9saWN5RnVuY3Rpb247CisgICAgZ2Jvb2xl
YW4gaXNDYW5jZWxsZWQ7Cit9OworCisjZGVmaW5lIFdFQktJVF9XRUJfUE9MSUNZX0RFQ0lTSU9O
X0dFVF9QUklWQVRFKG9iaikgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwg
V0VCS0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJU0lPTiwgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Q
cml2YXRlKSkKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fY2xhc3Nf
aW5pdChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzKiBkZWNpc2lvbkNsYXNzKQoreworICAg
IGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShkZWNpc2lvbkNsYXNzLCBzaXplb2YoV2ViS2l0V2Vi
UG9saWN5RGVjaXNpb25Qcml2YXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfcG9s
aWN5X2RlY2lzaW9uX2luaXQoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQorewor
ICAgIGRlY2lzaW9uLT5wcml2ID0gV0VCS0lUX1dFQl9QT0xJQ1lfREVDSVNJT05fR0VUX1BSSVZB
VEUoZGVjaXNpb24pOworfQorCitXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogd2Via2l0X3dlYl9w
b2xpY3lfZGVjaXNpb25fbmV3KFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgV2ViQ29yZTo6RnJhbWVQ
b2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChmcmFt
ZSwgTlVMTCk7CisKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24gPSBXRUJL
SVRfV0VCX1BPTElDWV9ERUNJU0lPTihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1BPTElD
WV9ERUNJU0lPTiwgTlVMTCkpOworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSog
cHJpdiA9IGRlY2lzaW9uLT5wcml2OworCisgICAgcHJpdi0+ZnJhbWUgPSBmcmFtZTsKKyAgICBw
cml2LT5mcmFtZVBvbGljeUZ1bmN0aW9uID0gZnVuY3Rpb247CisgICAgcHJpdi0+aXNDYW5jZWxs
ZWQgPSBGQUxTRTsKKworICAgIHJldHVybiBkZWNpc2lvbjsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3BvbGljeV9kZWNpc2lvbl91c2UKKyAqIEBkZWNpc2lvbjogYSAjV2ViS2l0V2ViUG9saWN5
RGVjaXNpb24KKyAqCisgKiBXaWxsIHNlbmQgdGhlIFVTRSBkZWNpc2lvbiB0byB0aGUgcG9saWN5
IGltcGxlbWVudGVyLgorICovCit2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX3VzZShX
ZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbikpOworCisgICAgV2ViS2l0
V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7CisKKyAgICBp
ZiAoIXByaXYtPmlzQ2FuY2VsbGVkKQorICAgICAgICAoY29yZShwcml2LT5mcmFtZSktPmxvYWRl
cigpLT4qKHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24pKShXZWJDb3JlOjpQb2xpY3lVc2UpOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2lnbm9yZQorICogQGRlY2lz
aW9uOiBhICNXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbgorICoKKyAqIFdpbGwgc2VuZCB0aGUgSUdO
T1JFIGRlY2lzaW9uIHRvIHRoZSBwb2xpY3kgaW1wbGVtZW50ZXIuCisgKi8KK3ZvaWQgd2Via2l0
X3dlYl9wb2xpY3lfZGVjaXNpb25faWdub3JlKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNp
c2lvbikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfUE9MSUNZX0RFQ0lT
SU9OKGRlY2lzaW9uKSk7CisKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHBy
aXYgPSBkZWNpc2lvbi0+cHJpdjsKKyAgICAKKyAgICBpZiAoIXByaXYtPmlzQ2FuY2VsbGVkKQor
ICAgICAgICAoY29yZShwcml2LT5mcmFtZSktPmxvYWRlcigpLT4qKHByaXYtPmZyYW1lUG9saWN5
RnVuY3Rpb24pKShXZWJDb3JlOjpQb2xpY3lJZ25vcmUpOworfQorCisvKioKKyAqIHdlYmtpdF93
ZWJfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkCisgKiBAZGVjaXNpb246IGEgI1dlYktpdFdlYlBv
bGljeURlY2lzaW9uCisgKgorICogV2lsbCBzZW5kIHRoZSBET1dOTE9BRCBkZWNpc2lvbiB0byB0
aGUgcG9saWN5IGltcGxlbWVudGVyLgorICovCit2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lz
aW9uX2Rvd25sb2FkKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7
CisKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+
cHJpdjsKKworICAgIGdfd2FybmluZygiRG93bmxvYWQgaXMgbm90IHN1cHBvcnRlZCIpOworICAg
IHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2lnbm9yZShkZWNpc2lvbik7CisKKyNpZiAwCisg
ICAgaWYgKCFwcml2LT5pc0NhbmNlbGxlZCkKKyAgICAgICAgKGNvcmUocHJpdi0+ZnJhbWUpLT5s
b2FkZXIoKS0+Kihwcml2LT5mcmFtZVBvbGljeUZ1bmN0aW9uKSkoV2ViQ29yZTo6UG9saWN5RG93
bmxvYWQpOworI2VuZGlmCit9CisKK3ZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fY2Fu
Y2VsKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7CisKKyAgICBX
ZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+cHJpdjsKKyAg
ICAKKyAgICBwcml2LT5pc0NhbmNlbGxlZCA9IFRSVUU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmggYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmRmMzIyMjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXRUJLSVRfV0VCX1BPTElDWV9ERUNJ
U0lPTl9ICisjZGVmaW5lIFdFQktJVF9XRUJfUE9MSUNZX0RFQ0lTSU9OX0gKKworI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSAid2Via2l0ZGVm
aW5lcy5oIgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1BPTElD
WV9ERUNJU0lPTiAgICAgICAgICAgICh3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9nZXRfdHlw
ZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTihvYmopICAgICAgICAgICAg
KEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfUE9MSUNZ
X0RFQ0lTSU9OLCBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbikpCisjZGVmaW5lIFdFQktJVF9XRUJf
UE9MSUNZX0RFQ0lTSU9OX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1Qo
KGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFdlYlBvbGlj
eURlY2lzaW9uQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJU0lPTihv
YmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQ
RV9XRUJfUE9MSUNZX0RFQ0lTSU9OKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9QT0xJQ1lfREVD
SVNJT05fQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VC
S0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJU0lPTikpCisjZGVmaW5lIFdFQktJVF9XRUJfUE9MSUNZ
X0RFQ0lTSU9OX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2Jq
KSwgIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFdlYlBvbGljeURlY2lz
aW9uQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2
YXRlIFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTsKK3N0cnVjdCBfV2ViS2l0V2ViUG9s
aWN5RGVjaXNpb24geworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAgLyo8IHBy
aXZhdGUgPiovCisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2OworfTsK
Kworc3RydWN0IF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzIHsKKyAgICBHT2JqZWN0Q2xh
c3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9wb2xp
Y3lfZGVjaXNpb25fZ2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93
ZWJfcG9saWN5X2RlY2lzaW9uX3VzZSAoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9u
KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9pZ25vcmUg
KFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbik7CisKK1dFQktJVF9BUEkgdm9pZAor
d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQgKFdlYktpdFdlYlBvbGljeURlY2lz
aW9uKiBkZWNpc2lvbik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcAppbmRleCA1MTU1NDk2Li5hYTBjMjE5IDEwMDY0NAotLS0gYS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAj
aW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgorI2luY2x1ZGUgIndlYmtpdGVudW10eXBlcy5oIgog
I2luY2x1ZGUgIndlYmtpdG1hcnNoYWwuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCiAj
aW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCkBAIC03NSw2ICs3Niw4IEBAIGV4dGVybiAi
QyIgewogZW51bSB7CiAgICAgLyogbm9ybWFsIHNpZ25hbHMgKi8KICAgICBOQVZJR0FUSU9OX1JF
UVVFU1RFRCwKKyAgICBOQVZJR0FUSU9OX1BPTElDWV9ERUNJU0lPTl9SRVFVRVNURUQsCisgICAg
TUlNRV9UWVBFX1BPTElDWV9ERUNJU0lPTl9SRVFVRVNURUQsCiAgICAgQ1JFQVRFX1dFQl9WSUVX
LAogICAgIFdFQl9WSUVXX1JFQURZLAogICAgIFdJTkRPV19PQkpFQ1RfQ0xFQVJFRCwKQEAgLTYz
MSw5ICs2MzQsOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfd2ViX3Zp
ZXdfcmVhZHkoV2ViS2l0V2ViVmlldyopCiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMg
V2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlIHdlYmtpdF93ZWJfdmlld19yZWFsX25hdmlnYXRpb25f
cmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdE5l
dHdvcmtSZXF1ZXN0KikKK3N0YXRpYyBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2Ugd2Via2l0X3dl
Yl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdFdl
YkZyYW1lKiwgV2ViS2l0TmV0d29ya1JlcXVlc3QqKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CiAgICAgcmV0dXJuIFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNFX0FDQ0VQVDsKIH0KIApAQCAt
ODExLDEwICs4MTMsMTAgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdf
cmVxdWVzdF9oYW5kbGVkKEdTaWduYWxJbnZvY2F0aW9uSGludCogaWgKIAogc3RhdGljIGdib29s
ZWFuIHdlYmtpdF9uYXZpZ2F0aW9uX3JlcXVlc3RfaGFuZGxlZChHU2lnbmFsSW52b2NhdGlvbkhp
bnQqIGloaW50LCBHVmFsdWUqIHJldHVybkFjY3UsIGNvbnN0IEdWYWx1ZSogaGFuZGxlclJldHVy
biwgZ3BvaW50ZXIgZHVtbXkpCiB7Ci0gICAgaW50IHNpZ25hbEhhbmRsZWQgPSBnX3ZhbHVlX2dl
dF9pbnQoaGFuZGxlclJldHVybik7Ci0gICAgZ192YWx1ZV9zZXRfaW50KHJldHVybkFjY3UsIHNp
Z25hbEhhbmRsZWQpOworICAgIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSBuYXZpZ2F0aW9uUmVz
cG9uc2UgPSAoV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlKWdfdmFsdWVfZ2V0X2VudW0oaGFuZGxl
clJldHVybik7CisgICAgZ192YWx1ZV9zZXRfZW51bShyZXR1cm5BY2N1LCBuYXZpZ2F0aW9uUmVz
cG9uc2UpOwogCi0gICAgaWYgKHNpZ25hbEhhbmRsZWQgIT0gV0VCS0lUX05BVklHQVRJT05fUkVT
UE9OU0VfQUNDRVBUKQorICAgIGlmIChuYXZpZ2F0aW9uUmVzcG9uc2UgIT0gV0VCS0lUX05BVklH
QVRJT05fUkVTUE9OU0VfQUNDRVBUKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICByZXR1
cm4gVFJVRTsKQEAgLTkwNywxNiArOTA5LDgzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAg
ICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKICAgICAgICAgICAgIEdfVFlQRV9CT09M
RUFOLCAwKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Om5hdmlnYXRpb24tcmVx
dWVzdGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFs
IGlzIGVtaXR0ZWQKKyAgICAgKiBAZnJhbWU6IHRoZSAjV2ViS2l0V2ViRnJhbWUgdGhhdCByZXF1
aXJlZCB0aGUgbmF2aWdhdGlvbgorICAgICAqIEByZXF1ZXN0OiBhICNXZWJLaXROZXR3b3JrUmVx
dWVzdAorICAgICAqIEByZXR1cm46IGEgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlCisgICAgICoK
KyAgICAgKiBFbWl0dGVkIHdoZW4gQGZyYW1lIHJlcXVlc3RzIGEgbmF2aWdhdGlvbiB0byBhbm90
aGVyIHBhZ2UuCisgICAgICoKKyAgICAgKiBEZXByZWNhdGVkOiBVc2UgbmF2aWdhdGlvbi1wb2xp
Y3ktZGVjaXNpb24tcmVxdWVzdGVkIGluc3RlYWQKKyAgICAgKi8KICAgICB3ZWJraXRfd2ViX3Zp
ZXdfc2lnbmFsc1tOQVZJR0FUSU9OX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoIm5hdmlnYXRp
b24tcmVxdWVzdGVkIiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFz
cyksCiAgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lH
TkFMX0FDVElPTiksCiAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQgKFdlYktpdFdlYlZpZXdD
bGFzcywgbmF2aWdhdGlvbl9yZXF1ZXN0ZWQpLAogICAgICAgICAgICAgd2Via2l0X25hdmlnYXRp
b25fcmVxdWVzdF9oYW5kbGVkLAogICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgIHdlYmtp
dF9tYXJzaGFsX0lOVF9fT0JKRUNUX09CSkVDVCwKLSAgICAgICAgICAgIEdfVFlQRV9JTlQsIDIs
Ci0gICAgICAgICAgICBHX1RZUEVfT0JKRUNULAotICAgICAgICAgICAgR19UWVBFX09CSkVDVCk7
CisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9FTlVNX19PQkpFQ1RfT0JKRUNULAorICAgICAg
ICAgICAgV0VCS0lUX1RZUEVfTkFWSUdBVElPTl9SRVNQT05TRSwgMiwKKyAgICAgICAgICAgIFdF
QktJVF9UWVBFX1dFQl9GUkFNRSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX05FVFdPUktfUkVR
VUVTVCk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjpuYXZpZ2F0aW9uLXBvbGlj
eS1kZWNpc2lvbi1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdo
aWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBmcmFtZTogdGhlICNXZWJLaXRXZWJG
cmFtZSB0aGF0IHJlcXVpcmVkIHRoZSBuYXZpZ2F0aW9uCisgICAgICogQHJlcXVlc3Q6IGEgI1dl
YktpdE5ldHdvcmtSZXF1ZXN0CisgICAgICogQG5hdmlnYXRpb25fYWN0aW9uOiBhICNXZWJLaXRX
ZWJOYXZpZ2F0aW9uCisgICAgICogQHBvbGljeV9kZWNpc2lvbjogYSAjV2ViS2l0V2ViUG9saWN5
RGVjaXNpb24KKyAgICAgKiBAcmV0dXJuOiBUUlVFIGlmIHRoZSBzaWduYWwgd2lsbCBiZSBoYW5k
bGVkLCBGQUxTRSB0byBoYXZlIHRoZQorICAgICAqICAgICAgICAgIGRlZmF1bHQgYmVoYXZpb3Ig
YXBwbHkKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBAZnJhbWUgcmVxdWVzdHMgYSBuYXZp
Z2F0aW9uIHRvIGFub3RoZXIgcGFnZS4KKyAgICAgKiBJZiB0aGlzIHNpZ25hbCBpcyBub3QgaGFu
ZGxlZCwgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gYWxsb3cgdGhlCisgICAgICogbmF2aWdh
dGlvbi4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tOQVZJR0FUSU9OX1BP
TElDWV9ERUNJU0lPTl9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJuYXZpZ2F0aW9uLXBvbGlj
eS1kZWNpc2lvbi1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2Vi
Vmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNU
IHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBnX3NpZ25h
bF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAg
ICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNUX09CSkVDVF9PQkpFQ1RfT0JKRUNULAor
ICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDQsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9X
RUJfRlJBTUUsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9ORVRXT1JLX1JFUVVFU1QsCisgICAg
ICAgICAgICBXRUJLSVRfVFlQRV9XRUJfTkFWSUdBVElPTl9BQ1RJT04sCisgICAgICAgICAgICBX
RUJLSVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9OKTsKKworICAgIC8qKgorICAgICAqIFdlYktp
dFdlYlZpZXc6Om1pbWUtdHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkOgorICAgICAqIEB3
ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAg
KiBAZnJhbWU6IHRoZSAjV2ViS2l0V2ViRnJhbWUgdGhhdCByZXF1aXJlZCB0aGUgcG9saWN5IGRl
Y2lzaW9uCisgICAgICogQHJlcXVlc3Q6IGEgV2ViS2l0TmV0d29ya1JlcXVlc3QKKyAgICAgKiBA
bWltZXR5cGU6IHRoZSBNSU1FIHR5cGUgYXR0ZW1wdGVkIHRvIGxvYWQKKyAgICAgKiBAcG9saWN5
X2RlY2lzaW9uOiBhICNXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbgorICAgICAqIEByZXR1cm46IFRS
VUUgaWYgdGhlIHNpZ25hbCB3aWxsIGJlIGhhbmRsZWQsIEZBTFNFIHRvIGhhdmUgdGhlCisgICAg
ICogICAgICAgICAgZGVmYXVsdCBiZWhhdmlvciBhcHBseQorICAgICAqCisgICAgICogRGVjaWRl
IHdoZXRoZXIgb3Igbm90IHRvIGRpc3BsYXkgdGhlIGdpdmVuIE1JTUUgdHlwZS4gIElmIHRoaXMK
KyAgICAgKiBzaWduYWwgaXMgbm90IGhhbmRsZWQsIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRv
IHNob3cgdGhlCisgICAgICogY29udGVudCBvZiB0aGUgcmVxdWVzdGVkIFVSSSBpZiBXZWJLaXQg
Y2FuIHNob3cgdGhpcyBNSU1FCisgICAgICogdHlwZTsgaWYgV2ViS2l0IGlzIG5vdCBhYmxlIHRv
IHNob3cgdGhlIE1JTUUgdHlwZSBub3RoaW5nCisgICAgICogaGFwcGVucy4KKyAgICAgKi8KKyAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tNSU1FX1RZUEVfUE9MSUNZX0RFQ0lTSU9OX1JFUVVF
U1RFRF0gPSBnX3NpZ25hbF9uZXcoIm1pbWUtdHlwZS1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVk
IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAg
ICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiks
CisgICAgICAgICAgICAwLAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9o
YW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JP
T0xFQU5fX09CSkVDVF9PQkpFQ1RfU1RSSU5HX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9C
T09MRUFOLCA0LAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLAorICAgICAgICAg
ICAgV0VCS0lUX1RZUEVfTkVUV09SS19SRVFVRVNULAorICAgICAgICAgICAgR19UWVBFX1NUUklO
RywKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04pOwogCiAgICAg
LyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6d2luZG93LW9iamVjdC1jbGVhcmVkOgpAQCAtMjMx
NSw2ICsyMzg0LDI3IEBAIEd0a1RhcmdldExpc3QqIHdlYmtpdF93ZWJfdmlld19nZXRfcGFzdGVf
dGFyZ2V0X2xpc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIH0KIAogLyoqCisgKiB3ZWJraXRf
d2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJW
aWV3CisgKiBAbWltZV90eXBlOiBhIE1JTUUgdHlwZQorICoKKyAqIFRoaXMgZnVuY3Rpb25zIHJl
dHVybnMgd2hldGhlciBvciBub3QgYSBNSU1FIHR5cGUgY2FuIGJlIGRpc3BsYXllZCB1c2luZyB0
aGlzIHZpZXcuCisgKgorICogUmV0dXJuIHZhbHVlOiBhICNnYm9vbGVhbiBpbmRpY2F0aW5nIGlm
IHRoZSBNSU1FIHR5cGUgY2FuIGJlIGRpc3BsYXllZAorICoqLworCitnYm9vbGVhbiB3ZWJraXRf
d2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlIChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25z
dCBnY2hhciogbWltZVR5cGUpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CisgICAgCisgICAgRnJhbWUqIGZyYW1lID0gY29y
ZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldykpOworICAgIGlmIChGcmFt
ZUxvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpKQorICAgICAgICByZXR1cm4gbG9hZGVy
LT5jYW5TaG93TUlNRVR5cGUobWltZVR5cGUpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEZB
TFNFOworfQorCisvKioKICAqIHdlYmtpdF93ZWJfdmlld19nZXRfdHJhbnNwYXJlbnQ6CiAgKiBA
d2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgK
aW5kZXggZDRkMTcwZS4uZDczNzY1OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAt
MSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBbHAgVG9rZXIgPGFscEBhdG9r
ZXIuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTcxLDkgKzcyLDYgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3Mgewog
CiAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgKCogd2ViX3ZpZXdfcmVhZHkpICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAKLSAgICAvKgotICAgICAqIFRPRE86IEZJ
WE1FOiBDcmVhdGUgc29tZXRoaW5nIGxpa2UgV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lcl9Qcm90
b2NvbCBpbnN0ZWFkCi0gICAgICovCiAgICAgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlICAgKCog
bmF2aWdhdGlvbl9yZXF1ZXN0ZWQpICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0V2ViRnJhbWUgICAgICAgKmZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXROZXR3b3JrUmVxdWVzdCAq
cmVxdWVzdCk7CkBAIC0yNTYsNiArMjU0LDEwIEBAIFdFQktJVF9BUEkgV2ViS2l0V2ViV2luZG93
RmVhdHVyZXMqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3KTsKIAogV0VCS0lUX0FQSSBnYm9vbGVh
bgord2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSAgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAqbWltZV90eXBlKTsKKwor
V0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVudCAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAKIFdFQktJVF9B
UEkgdm9pZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26149</attachid>
            <date>2008-12-19 11:33:38 -0800</date>
            <delta_ts>2008-12-19 13:56:32 -0800</delta_ts>
            <desc>proposed patch, with comments by zecke covered</desc>
            <filename>policy-delegates.diff</filename>
            <type>text/plain</type>
            <size>42331</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggNDZjNmNl
MS4uN2FlYzA2MSAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUu
YW0KQEAgLTMwOCw2ICszMDgsOCBAQCB3ZWJraXRndGtfaF9hcGkgKz0gXAogCVdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmZyYW1lLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5oIFwK
KwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmggXAorCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmggXAogCVdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndp
bmRvd2ZlYXR1cmVzLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAt
MzQxLDYgKzM0Myw4IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJmcmFtZS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3Rv
cnlpdGVtLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcCBc
CisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5jcHAgXAorCVdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcCBcCiAJV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVy
ZXMuY3BwCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCmluZGV4IGJmNWVlN2UuLmUyMGQ5NjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMDgt
MDktMjUgIE1hcmNvIEJhcmlzaW9uZSAgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NjIKKyAgICAgICAgW2d0a10gSW1w
bGVtZW50IFdlYlBvbGljeURlbGVnYXRlIG1ldGhvZHMKKworICAgICAgICBPcmlnaW5hbCB3b3Jr
IGJ5IFBpZXJyZS1MdWMgQmVhdWRvaW4uIEZpbmFsIHRvdWNoZXMgYnkgR3VzdGF2bworICAgICAg
ICBOb3JvbmhhLgorCisgICAgICAgIFRoaXMgaW1wbGVtZW50cyB0aGUgZGVsZWdhdGVzIG1ldGhv
ZHMgb2YgV2ViUG9saWN5RGVsZWdhdGUuCisgICAgICAgIFNpbmNlIEd0aysvQyBkb2Vzbid0IGhh
dmUgZGVsZWdhdGUgbWV0aG9kcywgdGhleSBhcmUgcmVwbGFjZWQgd2l0aAorICAgICAgICBzaWdu
YWxzLgorCisgICAgICAgIEEgbmV3IG9iamVjdCBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiBhbGxv
dyB0aGUgYnJvd3NlciB0byBkZWxheSBpdHMKKyAgICAgICAgcmVzcG9uc2UgaW4gY2VydGFpbiBj
YXNlcy4gV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiBjb250YWlucyB0aGUKKyAgICAgICAgaW5m
b3JtYXRpb24gYWJvdXQgd2hhdCBjYXVzZWQgYSBuYXZpZ2F0aW9uIHJlcXVlc3QuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojp+RnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlw
ZSk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2spOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVUeXBlKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXQuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0ZGVmaW5lcy5oOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXRwcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6a2l0KToKKyAgICAgICAg
KFdlYktpdDo6Y29yZSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHByaXZhdGUuaDoKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlOjopOgorICAgICAgICAoX1dlYktp
dFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlOjp3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9u
X2dldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZh
dGU6OndlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fc2V0X3Byb3BlcnR5KToKKyAgICAgICAg
KF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9uYXZpZ2F0aW9u
X2FjdGlvbl9pbml0KToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0
ZTo6d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9maW5hbGl6ZSk6CisgICAgICAgIChfV2Vi
S2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGU6OndlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rp
b25fY2xhc3NfaW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZh
dGU6OndlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3JlYXNvbik6CisgICAgICAgIChf
V2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGU6OndlYmtpdF93ZWJfbmF2aWdhdGlvbl9h
Y3Rpb25fc2V0X3JlYXNvbik6CisgICAgICAgIChfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblBy
aXZhdGU6OndlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X29yaWdpbmFsX3VyaSk6Cisg
ICAgICAgIChfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGU6OndlYmtpdF93ZWJfbmF2
aWdhdGlvbl9hY3Rpb25fc2V0X29yaWdpbmFsX3VyaSk6CisgICAgICAgICogd2Via2l0L3dlYmtp
dHdlYm5hdmlnYXRpb25hY3Rpb24uaDogQWRkZWQuCisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YnBvbGljeWRlY2lzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVj
aXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9jbGFzc19pbml0KToKKyAg
ICAgICAgKF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGU6OndlYmtpdF93ZWJfcG9saWN5
X2RlY2lzaW9uX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0
ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fbmV3KToKKyAgICAgICAgKF9XZWJLaXRXZWJQ
b2xpY3lEZWNpc2lvblByaXZhdGU6OndlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX3VzZSk6Cisg
ICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGlj
eV9kZWNpc2lvbl9pZ25vcmUpOgorICAgICAgICAoX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJp
dmF0ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQpOgorICAgICAgICAoX1dl
YktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25f
Y2FuY2VsKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaDogQWRk
ZWQuCisKIDIwMDgtMTItMTMgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2Vs
ZmlzaC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ2FtZXJvbiBad2FyaWNoLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAg
Yi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRl
eCA0YzU5ZDAxLi5mODQ5NDlhIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtNDYsNiArNDYsOCBAQAogI2luY2x1ZGUgIndl
YmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXRuZXR3b3JrcmVxdWVzdC5oIgogI2luY2x1
ZGUgIndlYmtpdHdlYmZyYW1lLmgiCisjaW5jbHVkZSAid2Via2l0d2VibmF2aWdhdGlvbmFjdGlv
bi5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgiCiAjaW5jbHVkZSAid2Vi
a2l0cHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpAQCAt
NjMsMTAgKzY1LDE3IEBAIEZyYW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVudChXZWJL
aXRXZWJGcmFtZSogZnJhbWUpCiAgICAgLCBtX3VzZXJBZ2VudCgiIikKICAgICAsIG1fcGx1Z2lu
VmlldygwKQogICAgICwgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkKKyAgICAsIG1f
cG9saWN5RGVjaXNpb24oMCkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CiB9CiAKK0ZyYW1lTG9h
ZGVyQ2xpZW50Ojp+RnJhbWVMb2FkZXJDbGllbnQoKQoreworICAgIGlmIChtX3BvbGljeURlY2lz
aW9uKQorICAgICAgICBnX29iamVjdF91bnJlZihtX3BvbGljeURlY2lzaW9uKTsKK30KKwogc3Rh
dGljIFN0cmluZyBhZ2VudFBsYXRmb3JtKCkKIHsKICNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQpA
QCAtMjQzLDE2ICsyNTIsMzUgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb24KICAgICBtX3Jlc3Bv
bnNlID0gcmVzcG9uc2U7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTUlNRVR5cGUoRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoRnJhbWVQb2xpY3lGdW5jdGlv
biBwb2xpY3lGdW5jdGlvbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gY2Fs
bCBkaXJlY3RseSBoZXJlIChjb21tZW50IGNvcGllZCBmcm9tIFF0IHZlcnNpb24pCiAgICAgQVNT
RVJUKHBvbGljeUZ1bmN0aW9uKTsKICAgICBpZiAoIXBvbGljeUZ1bmN0aW9uKQogICAgICAgICBy
ZXR1cm47Ci0gICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBv
bGljeVVzZSk7CisKKyAgICBXZWJLaXRXZWJWaWV3KiBwYWdlID0gZ2V0Vmlld0Zyb21GcmFtZSht
X2ZyYW1lKTsKKyAgICBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtpdF9uZXR3
b3JrX3JlcXVlc3RfbmV3KHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBwb2xpY3lEZWNpc2lvbiA9IHdl
YmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX25ldyhtX2ZyYW1lLCBwb2xpY3lGdW5jdGlvbik7Cisg
ICAgaWYgKG1fcG9saWN5RGVjaXNpb24pCisgICAgICAgIGdfb2JqZWN0X3VucmVmKG1fcG9saWN5
RGVjaXNpb24pOworICAgIG1fcG9saWN5RGVjaXNpb24gPSBwb2xpY3lEZWNpc2lvbjsKKworICAg
IGdib29sZWFuIGlzSGFuZGxlZCA9IGZhbHNlOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShw
YWdlLCAibWltZS10eXBlLXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQiLCBtX2ZyYW1lLCByZXF1
ZXN0LCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLCBwb2xpY3lEZWNpc2lvbiwgJmlzSGFuZGxlZCk7
CisKKyAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0KTsKKworICAgIGlmIChpc0hhbmRsZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChjYW5TaG93TUlNRVR5cGUobWltZVR5cGUpKQorICAg
ICAgICB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91c2UgKHBvbGljeURlY2lzaW9uKTsKKyAg
ICBlbHNlCisgICAgICAgIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkIChwb2xp
Y3lEZWNpc2lvbik7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rp
b24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0
aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4s
IGNvbnN0IFN0cmluZyYgcykKIHsKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlm
ICghcG9saWN5RnVuY3Rpb24pCkBAIC0yNzEsMTcgKzI5OSw0MSBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xp
Y3lGdW5jdAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1f
ZnJhbWUpOwogICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25ldHdv
cmtfcmVxdWVzdF9uZXcocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSByZXNwb25zZTsKLQorICAgIC8qCisg
ICAgICogV2Ugc3RpbGwgc3VwcG9ydCB0aGUgZGVwcmVjYXRlZCBuYXZpZ2F0aW9uLXJlcXVlc3Rl
ZCBzaWduYWwsIGlmIHRoZQorICAgICAqIGFwcGxpY2F0aW9uIGRvZXNuJ3QgaWdub3JlIHRoZSBu
YXZpZ2F0aW9uIHRoZW4gdGhlIG5ldyBzaWduYWwgaXMKKyAgICAgKiBlbWl0dGVkLgorICAgICAq
IG5hdmlnYXRpb24tcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCBtdXN0IGJlIGVtaXR0ZWQgYWZ0
ZXIKKyAgICAgKiBuYXZpZ2F0aW9uLXJlcXVlc3RlZCBhcyB0aGUgcG9saWN5IGRlY2lzaW9uIGNh
biBiZSBhc3luYy4KKyAgICAgKi8KICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywg
Im5hdmlnYXRpb24tcmVxdWVzdGVkIiwgbV9mcmFtZSwgcmVxdWVzdCwgJnJlc3BvbnNlKTsKIAot
ICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOwotCiAgICAgaWYgKHJlc3BvbnNlID09IFdFQktJ
VF9OQVZJR0FUSU9OX1JFU1BPTlNFX0lHTk9SRSkgewogICAgICAgICAoY29yZShtX2ZyYW1lKS0+
bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKKyAgICAgICAgZ19vYmpl
Y3RfdW5yZWYocmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAoY29yZSht
X2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICBXZWJL
aXRXZWJQb2xpY3lEZWNpc2lvbiogcG9saWN5RGVjaXNpb24gPSB3ZWJraXRfd2ViX3BvbGljeV9k
ZWNpc2lvbl9uZXcobV9mcmFtZSwgcG9saWN5RnVuY3Rpb24pOworICAgIGlmIChtX3BvbGljeURl
Y2lzaW9uKQorICAgICAgICBnX29iamVjdF91bnJlZihtX3BvbGljeURlY2lzaW9uKTsKKyAgICBt
X3BvbGljeURlY2lzaW9uID0gcG9saWN5RGVjaXNpb247CisKKyAgICAvLyBUT0RPOiB1c2UgYWN0
aW9uLmV2ZW50KCkuCisgICAgZ3BvaW50ZXIgbmF2aWdhdGlvbkFjdGlvbiA9IGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfTkFWSUdBVElPTl9BQ1RJT04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhc29uIiwga2l0KGFjdGlvbi50eXBlKCkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yaWdpbmFsLXVy
aSIsIGFjdGlvbi51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICBnYm9vbGVhbiBpc0hh
bmRsZWQgPSBmYWxzZTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgIm5hdmln
YXRpb24tcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3QsIG5hdmln
YXRpb25BY3Rpb24sIHBvbGljeURlY2lzaW9uLCAmaXNIYW5kbGVkKTsKKworICAgIGdfb2JqZWN0
X3VucmVmKG5hdmlnYXRpb25BY3Rpb24pOworICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOwor
CisgICAgLy8gRklYTUUgSW1wbGVtZW50IGRlZmF1bHQgYmVoYXZpb3Igd2hlbiB3ZSBjYW4gcXVl
cnkgdGhlIGJhY2tlbmQgd2hhdCBwcm90b2NvbHMgaXQgc3VwcG9ydHMKKyAgICBpZiAoIWlzSGFu
ZGxlZCkKKyAgICAgICAgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlKG1fcG9saWN5RGVj
aXNpb24pOwogfQogCiBXaWRnZXQqIEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29u
c3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkK
QEAgLTU1MCw3ICs2MDIsOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3co
KQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVjaygpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICAvL0ZJWE1FIEFkZCBzdXBwb3J0IGZvciBtb3JlIHRoYW4g
b25lIHBvbGljeSBkZWNpc2lvbiBhdCBvbmNlCisgICAgaWYgKG1fcG9saWN5RGVjaXNpb24pCisg
ICAgICAgIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2NhbmNlbChtX3BvbGljeURlY2lzaW9u
KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkTWFpblJlc291
cmNlKERvY3VtZW50TG9hZGVyKikKQEAgLTU3OSwxMCArNjMzLDEwIEBAIGJvb2wgRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01J
TUVUeXBlKGNvbnN0IFN0cmluZyYpIGNvbnN0Citib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5T
aG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSh0eXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZE5vbkltYWdlTUlNRVR5cGUodHlwZSkgfHwKKyAgICAgICAgUGx1Z2luRGF0YWJhc2U6Omlu
c3RhbGxlZFBsdWdpbnMoKS0+aXNNSU1FVHlwZVJlZ2lzdGVyZWQodHlwZSk7CiB9CiAKIGJvb2wg
RnJhbWVMb2FkZXJDbGllbnQ6OnJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0
IFN0cmluZyYpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmgKaW5kZXggMDczOGEyOS4uYmNkYjI5NyAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJwb2xp
Y3lkZWNpc2lvbi5oIgogCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWUgV2ViS2l0V2Vi
RnJhbWU7CiAKQEAgLTQxLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgY2xhc3Mg
RnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewog
ICAgIHB1YmxpYzoKICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQoV2ViS2l0V2ViRnJhbWUqKTsK
LSAgICAgICAgdmlydHVhbCB+RnJhbWVMb2FkZXJDbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVh
bCB+RnJhbWVMb2FkZXJDbGllbnQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZGVy
RGVzdHJveWVkKCk7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqICB3ZWJGcmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWU7IH0KQEAgLTE3MCw2ICsxNzEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAgV2ViQ29yZTo6U3RyaW5nIG1fdXNl
ckFnZW50OworICAgICAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogbV9wb2xpY3lEZWNpc2lv
bjsKIAogICAgICAgICAvLyBQbHVnaW4gdmlldyB0byByZWRpcmVjdCBkYXRhIHRvCiAgICAgICAg
IFdlYkNvcmU6OlBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKZGlmZiAtLWdpdCBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdC5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKaW5kZXggODYy
MWU0Ni4uOGM4NjhhMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKKysr
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzAsNiArMzEs
OCBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJo
aXN0b3J5aXRlbS5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5o
PgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmg+CiAjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdGVudW10eXBlcy5oPgogCiAjZW5kaWYgLyogX19XRUJLSVRfSF9fICov
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmggYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKaW5kZXggYjY3NGU5Zi4uZjk0ZTcxMCAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCisrKyBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdGRlZmluZXMuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBDb2xsYWJvcmEgTHRkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Miw2ICs1Myw5IEBAIHR5
cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJIaXN0b3J5SXRlbUNsYXNzIFdlYktpdFdlYkhpc3RvcnlJ
dGVtQ2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWUgV2ViS2l0V2ViRnJhbWU7
CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVDbGFzcyBXZWJLaXRXZWJGcmFtZUNsYXNz
OwogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb24gV2ViS2l0V2ViUG9s
aWN5RGVjaXNpb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25DbGFz
cyBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzOworCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
V2ViU2V0dGluZ3MgV2ViS2l0V2ViU2V0dGluZ3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vi
U2V0dGluZ3NDbGFzcyBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzOwogCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHByaXZhdGUuY3BwCmluZGV4IDA3YzgxNzQuLjIyODNjOGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHByaXZhdGUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBI
b2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9y
YSBMdGQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTgzLDYgKzg0LDE2IEBAIFdlYktpdFdlYlZp
ZXcqIGtpdChXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSkKICAgICByZXR1cm4gY2xpZW50ID8gY2xp
ZW50LT53ZWJWaWV3KCkgOiAwOwogfQogCitXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uIGtpdChX
ZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSB0eXBlKQoreworICAgIHJldHVybiAoV2ViS2l0V2ViTmF2
aWdhdGlvblJlYXNvbil0eXBlOworfQorIAorV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgY29yZShX
ZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uIHR5cGUpCit7CisgICAgcmV0dXJuIChXZWJDb3JlOjpO
YXZpZ2F0aW9uVHlwZSl0eXBlOworfQorCiB9IC8qKiBlbmQgbmFtZXNwYWNlIFdlYktpdCAqLwog
CiB2b2lkIHdlYmtpdF9pbml0KCkKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHByaXZhdGUuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAppbmRleCAyODBj
YWIyLi44ZjczNGYxIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRl
LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCkBAIC0xLDYgKzEsNyBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA4IEphbiBNaWNoYWVsIEMuIEFsb256bworICogQ29w
eXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI5
LDYgKzMwLDggQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgogI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1l
Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmg+CisjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2Vic2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vid2luZG93ZmVh
dHVyZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmg+CkBA
IC01Nyw2ICs2MCw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIFdlYktpdFdlYkhpc3RvcnlJ
dGVtKiBraXQoV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKIAogICAgIFdlYkNvcmU6OkJhY2tGb3J3
YXJkTGlzdCogY29yZShXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqKTsKKworICAgIFdlYktpdFdl
Yk5hdmlnYXRpb25SZWFzb24ga2l0KFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIHR5cGUpOworICAg
IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIGNvcmUoV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbiBy
ZWFzb24pOwogfQogCiBleHRlcm4gIkMiIHsKQEAgLTEzMCw2ICsxMzYsMTIgQEAgZXh0ZXJuICJD
IiB7CiAgICAgdm9pZAogICAgIHdlYmtpdF93ZWJfdmlld19ub3RpZnlfcmVhZHkgKFdlYktpdFdl
YlZpZXcqIHdlYl92aWV3KTsKIAorICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKgorICAgIHdl
YmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX25ldyAoV2ViS2l0V2ViRnJhbWUqLCBXZWJDb3JlOjpG
cmFtZVBvbGljeUZ1bmN0aW9uKTsKKworICAgIHZvaWQKKyAgICB3ZWJraXRfd2ViX3BvbGljeV9k
ZWNpc2lvbl9jYW5jZWwgKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbik7CisKICAg
ICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB3ZWJraXR3ZWJmcmFtZS5oIG9uY2UgdGhlaXIgQVBJ
IGhhcyBiZWVuIGRpc2N1c3NlZC4KIAogICAgIFdFQktJVF9BUEkgR1NMaXN0KgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5jcHAgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjM0MDdkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5jcHAKQEAgLTAsMCArMSwyMDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlICJGcmFtZUxv
YWRlclR5cGVzLmgiCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmgiCisj
aW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdGVudW10eXBlcy5oIgor
CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK2V4dGVybiAiQyIgeworCitzdHJ1Y3QgX1dlYktpdFdl
Yk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlIHsKKyAgICBXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29u
IHJlYXNvbjsKKyAgICBnY2hhciogb3JpZ2luYWxVcmk7Cit9OworCisjZGVmaW5lIFdFQktJVF9X
RUJfTkFWSUdBVElPTl9BQ1RJT05fR0VUX1BSSVZBVEUob2JqKShHX1RZUEVfSU5TVEFOQ0VfR0VU
X1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9OQVZJR0FUSU9OX0FDVElPTiwgV2ViS2l0
V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGUpKQorCitlbnVtICB7CisgICAgUFJPUF8wLAorCisg
ICAgUFJPUF9SRUFTT04sCisgICAgUFJPUF9PUklHSU5BTF9VUkkKK307CisKK0dfREVGSU5FX1RZ
UEUoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiwgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlv
biwgR19UWVBFX09CSkVDVCkKKworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX25hdmlnYXRpb25f
YWN0aW9uX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdW
YWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYk5hdmlnYXRp
b25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24gPSBXRUJLSVRfV0VCX05BVklHQVRJT05fQUNUSU9O
KG9iamVjdCk7CisKKyAgICBzd2l0Y2gocHJvcGVydHlJZCkgeworICAgIGNhc2UgUFJPUF9SRUFT
T046CisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93ZWJfbmF2aWdhdGlv
bl9hY3Rpb25fZ2V0X3JlYXNvbihuYXZpZ2F0aW9uQWN0aW9uKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9PUklHSU5BTF9VUkk6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2
YWx1ZSwgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfb3JpZ2luYWxfdXJpKG5hdmln
YXRpb25BY3Rpb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfbmF2
aWdhdGlvbl9hY3Rpb25fc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVy
dHlJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2Vi
S2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbiA9IFdFQktJVF9XRUJfTkFW
SUdBVElPTl9BQ1RJT04ob2JqZWN0KTsKKworICAgIHN3aXRjaChwcm9wZXJ0eUlkKSB7CisgICAg
Y2FzZSBQUk9QX1JFQVNPTjoKKyAgICAgICAgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9z
ZXRfcmVhc29uKG5hdmlnYXRpb25BY3Rpb24sIChXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uKWdf
dmFsdWVfZ2V0X2VudW0odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX09S
SUdJTkFMX1VSSToKKyAgICAgICAgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfb3Jp
Z2luYWxfdXJpKG5hdmlnYXRpb25BY3Rpb24sIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFM
SURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9p
bml0KFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24pCit7CisgICAg
bmF2aWdhdGlvbkFjdGlvbi0+cHJpdiA9IFdFQktJVF9XRUJfTkFWSUdBVElPTl9BQ1RJT05fR0VU
X1BSSVZBVEUobmF2aWdhdGlvbkFjdGlvbik7CisKKyAgICBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0
aW9uUHJpdmF0ZSogcHJpdiA9IG5hdmlnYXRpb25BY3Rpb24tPnByaXY7Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZmluYWxpemUoR09iamVjdCogb2JqKQor
eworICAgIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24gPSBXRUJL
SVRfV0VCX05BVklHQVRJT05fQUNUSU9OKG9iaik7CisgICAgV2ViS2l0V2ViTmF2aWdhdGlvbkFj
dGlvblByaXZhdGUqIHByaXYgPSBuYXZpZ2F0aW9uQWN0aW9uLT5wcml2OworCisgICAgZ19mcmVl
KHByaXYtPm9yaWdpbmFsVXJpKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfbmF2
aWdhdGlvbl9hY3Rpb25fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqKTsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9jbGFzc19pbml0KFdlYktpdFdlYk5h
dmlnYXRpb25BY3Rpb25DbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyog
b2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworCisgICAgQ09NUElM
RV9BU1NFUlQoV0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9MSU5LX0NMSUNLRUQgPT0gV2Vi
Q29yZTo6TmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZCwgbmF2aWdhdGlvbl90eXBlX2xpbmtfY2xp
Y2tlZF9lbnVtX21hdGNoKTsKKyAgICBDT01QSUxFX0FTU0VSVChXRUJLSVRfV0VCX05BVklHQVRJ
T05fUkVBU09OX0ZPUk1fU1VCTUlUVEVEID09IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlRm9ybVN1
Ym1pdHRlZCwgbmF2aWdhdGlvbl90eXBlX2Zvcm1fc3VibWl0dGVkX2VudW1fbWF0Y2gpOworICAg
IENPTVBJTEVfQVNTRVJUKFdFQktJVF9XRUJfTkFWSUdBVElPTl9SRUFTT05fQkFDS19GT1JXQVJE
ID09IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlQmFja0ZvcndhcmQsIG5hdmlnYXRpb25fdHlwZV9i
YWNrX2ZvcndhcmRfZW51bV9tYXRjaCk7CisgICAgQ09NUElMRV9BU1NFUlQoV0VCS0lUX1dFQl9O
QVZJR0FUSU9OX1JFQVNPTl9SRUxPQUQgPT0gV2ViQ29yZTo6TmF2aWdhdGlvblR5cGVSZWxvYWQs
IG5hdmlnYXRpb25fdHlwZV9yZWxvYWRfZW51bV9tYXRjaCk7CisgICAgQ09NUElMRV9BU1NFUlQo
V0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9GT1JNX1JFU1VCTUlUVEVEID09IFdlYkNvcmU6
Ok5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkLCBuYXZpZ2F0aW9uX3R5cGVfZm9ybV9yZXN1
Ym1pdHRlZF9lbnVtX21hdGNoKTsKKyAgICBDT01QSUxFX0FTU0VSVChXRUJLSVRfV0VCX05BVklH
QVRJT05fUkVBU09OX09USEVSID09IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlT3RoZXIsIG5hdmln
YXRpb25fdHlwZV9vdGhlcl9lbnVtX21hdGNoKTsKKworICAgIG9iamVjdENsYXNzLT5nZXRfcHJv
cGVydHkgPSB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9wcm9wZXJ0eTsKKyAgICBv
YmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9z
ZXRfcHJvcGVydHk7CisgICAgb2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRfd2ViX25hdmln
YXRpb25fYWN0aW9uX2ZpbmFsaXplOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShvYmplY3RDbGFzcywgUFJPUF9SRUFTT04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnX3BhcmFtX3NwZWNfZW51bSgicmVhc29uIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWFzb24iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSByZWFzb24g
d2h5IHRoaXMgbmF2aWdhdGlvbiBpcyBvY2N1cnJpbmciLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX05BVklHQVRJ
T05fUkVBU09OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9PVEhFUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHUGFyYW1GbGFncyko
V0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKSkpOworCisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9PUklHSU5BTF9V
UkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3Ry
aW5nKCJvcmlnaW5hbC11cmkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiT3JpZ2luYWwgVVJJIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBVUkkgdGhhdCB3YXMgcmVx
dWVzdGVkIGFzIHRoZSB0YXJnZXQgZm9yIHRoZSBuYXZpZ2F0aW9uIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHUGFyYW1GbGFn
cykoV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKSkpOworCisgICAg
Z190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdlYktpdFdlYk5h
dmlnYXRpb25BY3Rpb25Qcml2YXRlKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9uYXZpZ2F0
aW9uX2FjdGlvbl9nZXRfcmVhc29uOgorICogQG5hdmlnYXRpb25BY3Rpb246IGEgI1dlYktpdFdl
Yk5hdmlnYXRpb25BY3Rpb24KKyAqCisgKiBSZXR1cm5zIHRoZSByZWFzb24gd2h5IFdlYktpdCBp
cyByZXF1ZXN0aW5nIGEgbmF2aWdhdGlvbi4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IGEgI1dlYktp
dFdlYk5hdmlnYXRpb25SZWFzb24KKyAqLworV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbiB3ZWJr
aXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9yZWFzb24oV2ViS2l0V2ViTmF2aWdhdGlvbkFj
dGlvbiogbmF2aWdhdGlvbkFjdGlvbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX05BVklHQVRJT05fQUNUSU9OKG5hdmlnYXRpb25BY3Rpb24pLCBXRUJLSVRfV0VC
X05BVklHQVRJT05fUkVBU09OX09USEVSKTsKKworICAgIHJldHVybiBuYXZpZ2F0aW9uQWN0aW9u
LT5wcml2LT5yZWFzb247Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlv
bl9zZXRfcmVhc29uOgorICogQG5hdmlnYXRpb25BY3Rpb246IGEgI1dlYktpdFdlYk5hdmlnYXRp
b25BY3Rpb24KKyAqIEByZWFzb246IGEgI1dlYktpdFdlYk5hdmlnYXRpb25SZWFzb24KKyAqCisg
KiBTZXRzIHRoZSByZWFzb24gd2h5IFdlYktpdCBpcyByZXF1ZXN0aW5nIGEgbmF2aWdhdGlvbi4K
KyAqLwordm9pZCB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX3NldF9yZWFzb24oV2ViS2l0
V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbiwgV2ViS2l0V2ViTmF2aWdhdGlv
blJlYXNvbiByZWFzb24pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX05B
VklHQVRJT05fQUNUSU9OKG5hdmlnYXRpb25BY3Rpb24pKTsKKworICAgIGlmIChuYXZpZ2F0aW9u
QWN0aW9uLT5wcml2LT5yZWFzb24gPT0gcmVhc29uKQorICAgICAgICByZXR1cm47CisKKyAgICBu
YXZpZ2F0aW9uQWN0aW9uLT5wcml2LT5yZWFzb24gPSByZWFzb247CisgICAgZ19vYmplY3Rfbm90
aWZ5KEdfT0JKRUNUKG5hdmlnYXRpb25BY3Rpb24pLCAicmVhc29uIik7Cit9CisKKy8qKgorICog
d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfb3JpZ2luYWxfdXJpOgorICogQG5hdmln
YXRpb25BY3Rpb246IGEgI1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24KKyAqCisgKiBSZXR1cm5z
IHRoZSBVUkkgdGhhdCB3YXMgb3JpZ2luYWxseSByZXF1ZXN0ZWQuIFRoaXMgbWF5IGRpZmZlciBm
cm9tIHRoZQorICogbmF2aWdhdGlvbiB0YXJnZXQsIGZvciBpbnN0YW5jZSBiZWNhdXNlIG9mIGEg
cmVkaXJlY3QuCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgb3JpZ2luYWxseSByZXF1ZXN0ZWQg
VVJJCisgKi8KK2NvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9v
cmlnaW5hbF91cmkoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbikK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX05BVklHQVRJT05fQUNU
SU9OKG5hdmlnYXRpb25BY3Rpb24pLCBOVUxMKTsKKworICAgIHJldHVybiBuYXZpZ2F0aW9uQWN0
aW9uLT5wcml2LT5vcmlnaW5hbFVyaTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX25hdmlnYXRp
b25fYWN0aW9uX3NldF9vcmlnaW5hbF91cmk6CisgKiBAbmF2aWdhdGlvbkFjdGlvbjogYSAjV2Vi
S2l0V2ViTmF2aWdhdGlvbkFjdGlvbgorICogQG9yaWdpbmFsVXJpOiBhIFVSSQorICoKKyAqIFNl
dHMgdGhlIFVSSSB0aGF0IHdhcyBvcmlnaW5hbGx5IHJlcXVlc3RlZC4gVGhpcyBtYXkgZGlmZmVy
IGZyb20gdGhlCisgKiBuYXZpZ2F0aW9uIHRhcmdldCwgZm9yIGluc3RhbmNlIGJlY2F1c2Ugb2Yg
YSByZWRpcmVjdC4KKyAqLwordm9pZCB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX3NldF9v
cmlnaW5hbF91cmkoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbiwg
Y29uc3QgZ2NoYXIqIG9yaWdpbmFsVXJpKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9OQVZJR0FUSU9OX0FDVElPTihuYXZpZ2F0aW9uQWN0aW9uKSk7CisgICAgZ19yZXR1
cm5faWZfZmFpbChvcmlnaW5hbFVyaSk7CisKKyAgICBpZiAobmF2aWdhdGlvbkFjdGlvbi0+cHJp
di0+b3JpZ2luYWxVcmkgJiYKKyAgICAgICAgKCFzdHJjbXAobmF2aWdhdGlvbkFjdGlvbi0+cHJp
di0+b3JpZ2luYWxVcmksIG9yaWdpbmFsVXJpKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGdf
ZnJlZShuYXZpZ2F0aW9uQWN0aW9uLT5wcml2LT5vcmlnaW5hbFVyaSk7CisgICAgbmF2aWdhdGlv
bkFjdGlvbi0+cHJpdi0+b3JpZ2luYWxVcmkgPSBnX3N0cmR1cChvcmlnaW5hbFVyaSk7CisgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG5hdmlnYXRpb25BY3Rpb24pLCAib3JpZ2luYWwtdXJp
Iik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYm5hdmln
YXRpb25hY3Rpb24uaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYm5hdmlnYXRpb25hY3Rp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzQ4OWRlCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5o
CkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0
ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2lmbmRlZiBXRUJLSVRfV0VCX05BVklHQVRJT05fQUNUSU9OX0gKKyNkZWZpbmUgV0VCS0lU
X1dFQl9OQVZJR0FUSU9OX0FDVElPTl9ICisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorCisj
aW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisvKgor
ICogVGhlIG9yZGVyIG9mIHRoaXMgZW51bSBtdXN0IGJlIHRoZSBzYW1lIGFzIE5hdmlnYXRpb25U
eXBlIGluCisgKiBGcmFtZUxvYWRlclR5cGVzLmgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBX
RUJLSVRfV0VCX05BVklHQVRJT05fUkVBU09OX0xJTktfQ0xJQ0tFRCwKKyAgICBXRUJLSVRfV0VC
X05BVklHQVRJT05fUkVBU09OX0ZPUk1fU1VCTUlUVEVELAorICAgIFdFQktJVF9XRUJfTkFWSUdB
VElPTl9SRUFTT05fQkFDS19GT1JXQVJELAorICAgIFdFQktJVF9XRUJfTkFWSUdBVElPTl9SRUFT
T05fUkVMT0FELAorICAgIFdFQktJVF9XRUJfTkFWSUdBVElPTl9SRUFTT05fRk9STV9SRVNVQk1J
VFRFRCwKKyAgICBXRUJLSVRfV0VCX05BVklHQVRJT05fUkVBU09OX09USEVSLAorfSBXZWJLaXRX
ZWJOYXZpZ2F0aW9uUmVhc29uOworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9OQVZJR0FUSU9O
X0FDVElPTiAgICAgICAgICAgICh3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF90eXBl
KCkpCisjZGVmaW5lIFdFQktJVF9XRUJfTkFWSUdBVElPTl9BQ1RJT04ob2JqKSAgICAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX05BVklH
QVRJT05fQUNUSU9OLCBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uKSkKKyNkZWZpbmUgV0VCS0lU
X1dFQl9OQVZJR0FUSU9OX0FDVElPTl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFT
U19DQVNUKChrbGFzcyksIFdFQktJVF9UWVBFX1dFQl9OQVZJR0FUSU9OX0FDVElPTiwgV2ViS2l0
V2ViTmF2aWdhdGlvbkFjdGlvbkNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9OQVZJR0FU
SU9OX0FDVElPTihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmop
LCBXRUJLSVRfVFlQRV9XRUJfTkFWSUdBVElPTl9BQ1RJT04pKQorI2RlZmluZSBXRUJLSVRfSVNf
V0VCX05BVklHQVRJT05fQUNUSU9OX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZ
UEUoKGtsYXNzKSwgV0VCS0lUX1RZUEVfV0VCX05BVklHQVRJT05fQUNUSU9OKSkKKyNkZWZpbmUg
V0VCS0lUX1dFQl9OQVZJR0FUSU9OX0FDVElPTl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNU
QU5DRV9HRVRfQ0xBU1MoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9OQVZJR0FUSU9OX0FDVElPTiwg
V2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbkNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFdlYk5hdmlnYXRpb25BY3Rpb24gV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbjsKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uQ2xhc3MgV2ViS2l0V2ViTmF2aWdhdGlv
bkFjdGlvbkNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Q
cml2YXRlIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlOworCitzdHJ1Y3QgX1dlYktp
dFdlYk5hdmlnYXRpb25BY3Rpb24geworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisg
ICAgLyo8IHByaXZhdGUgPiovCisgICAgV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGUq
IHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25DbGFzcyB7Cisg
ICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dl
YmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3R5cGUodm9pZCk7CisKK1dFQktJVF9BUEkg
V2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbgord2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9n
ZXRfcmVhc29uKFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24pOwor
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fc2V0X3JlYXNv
bihXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uLCBXZWJLaXRXZWJO
YXZpZ2F0aW9uUmVhc29uIHJlYXNvbik7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJr
aXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9vcmlnaW5hbF91cmkoV2ViS2l0V2ViTmF2aWdh
dGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfb3JpZ2luYWxfdXJpKFdlYktpdFdlYk5hdmlnYXRp
b25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IGdjaGFyKiBvcmlnaW5hbFVyaSk7CisK
K0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VicG9saWN5ZGVjaXNpb24uY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9s
aWN5ZGVjaXNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZjM1
NmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lk
ZWNpc2lvbi5jcHAKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Q29sbGFib3JhIEx0ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAid2Via2l0d2Vi
cG9saWN5ZGVjaXNpb24uaCIKKworI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKKyNpbmNs
dWRlICJ3ZWJraXRwcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworZXh0ZXJuICJDIiB7CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0
V2ViUG9saWN5RGVjaXNpb24sIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uLCBHX1RZUEVfT0JK
RUNUKTsKKworc3RydWN0IF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUgeworICAgIFdl
YktpdFdlYkZyYW1lKiBmcmFtZTsKKyAgICBGcmFtZVBvbGljeUZ1bmN0aW9uIGZyYW1lUG9saWN5
RnVuY3Rpb247CisgICAgZ2Jvb2xlYW4gaXNDYW5jZWxsZWQ7Cit9OworCisjZGVmaW5lIFdFQktJ
VF9XRUJfUE9MSUNZX0RFQ0lTSU9OX0dFVF9QUklWQVRFKG9iaikgICAgKEdfVFlQRV9JTlNUQU5D
RV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJU0lPTiwgV2Vi
S2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKSkKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9w
b2xpY3lfZGVjaXNpb25fY2xhc3NfaW5pdChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzKiBk
ZWNpc2lvbkNsYXNzKQoreworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShkZWNpc2lvbkNs
YXNzLCBzaXplb2YoV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKSk7Cit9CisKK3N0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2luaXQoV2ViS2l0V2ViUG9saWN5RGVj
aXNpb24qIGRlY2lzaW9uKQoreworICAgIGRlY2lzaW9uLT5wcml2ID0gV0VCS0lUX1dFQl9QT0xJ
Q1lfREVDSVNJT05fR0VUX1BSSVZBVEUoZGVjaXNpb24pOworfQorCitXZWJLaXRXZWJQb2xpY3lE
ZWNpc2lvbiogd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fbmV3KFdlYktpdFdlYkZyYW1lKiBm
cmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChmcmFtZSwgTlVMTCk7CisKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNp
c2lvbiogZGVjaXNpb24gPSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTihnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJU0lPTiwgTlVMTCkpOworICAgIFdlYktpdFdlYlBv
bGljeURlY2lzaW9uUHJpdmF0ZSogcHJpdiA9IGRlY2lzaW9uLT5wcml2OworCisgICAgcHJpdi0+
ZnJhbWUgPSBmcmFtZTsKKyAgICBwcml2LT5mcmFtZVBvbGljeUZ1bmN0aW9uID0gZnVuY3Rpb247
CisgICAgcHJpdi0+aXNDYW5jZWxsZWQgPSBGQUxTRTsKKworICAgIHJldHVybiBkZWNpc2lvbjsK
K30KKworLyoqCisgKiB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91c2UKKyAqIEBkZWNpc2lv
bjogYSAjV2ViS2l0V2ViUG9saWN5RGVjaXNpb24KKyAqCisgKiBXaWxsIHNlbmQgdGhlIFVTRSBk
ZWNpc2lvbiB0byB0aGUgcG9saWN5IGltcGxlbWVudGVyLgorICovCit2b2lkIHdlYmtpdF93ZWJf
cG9saWN5X2RlY2lzaW9uX3VzZShXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJU0lPTihkZWNp
c2lvbikpOworCisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2ID0gZGVj
aXNpb24tPnByaXY7CisKKyAgICBpZiAoIXByaXYtPmlzQ2FuY2VsbGVkKQorICAgICAgICAoY29y
ZShwcml2LT5mcmFtZSktPmxvYWRlcigpLT4qKHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24pKShX
ZWJDb3JlOjpQb2xpY3lVc2UpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lz
aW9uX2lnbm9yZQorICogQGRlY2lzaW9uOiBhICNXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbgorICoK
KyAqIFdpbGwgc2VuZCB0aGUgSUdOT1JFIGRlY2lzaW9uIHRvIHRoZSBwb2xpY3kgaW1wbGVtZW50
ZXIuCisgKi8KK3ZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25faWdub3JlKFdlYktpdFdl
YlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7CisKKyAgICBXZWJLaXRXZWJQb2xp
Y3lEZWNpc2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+cHJpdjsKKyAgICAKKyAgICBpZiAo
IXByaXYtPmlzQ2FuY2VsbGVkKQorICAgICAgICAoY29yZShwcml2LT5mcmFtZSktPmxvYWRlcigp
LT4qKHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24pKShXZWJDb3JlOjpQb2xpY3lJZ25vcmUpOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkCisgKiBAZGVj
aXNpb246IGEgI1dlYktpdFdlYlBvbGljeURlY2lzaW9uCisgKgorICogV2lsbCBzZW5kIHRoZSBE
T1dOTE9BRCBkZWNpc2lvbiB0byB0aGUgcG9saWN5IGltcGxlbWVudGVyLgorICovCit2b2lkIHdl
YmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkKFdlYktpdFdlYlBvbGljeURlY2lzaW9u
KiBkZWNpc2lvbikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfUE9MSUNZ
X0RFQ0lTSU9OKGRlY2lzaW9uKSk7CisKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZh
dGUqIHByaXYgPSBkZWNpc2lvbi0+cHJpdjsKKworICAgIGdfd2FybmluZygiRG93bmxvYWQgaXMg
bm90IHN1cHBvcnRlZCIpOworICAgIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2lnbm9yZShk
ZWNpc2lvbik7CisKKyAgICBpZiAoIXByaXYtPmlzQ2FuY2VsbGVkKQorICAgICAgICAoY29yZShw
cml2LT5mcmFtZSktPmxvYWRlcigpLT4qKHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24pKShXZWJD
b3JlOjpQb2xpY3lEb3dubG9hZCk7Cit9CisKK3ZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNp
b25fY2FuY2VsKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7CisK
KyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+cHJp
djsKKyAgICAKKyAgICBwcml2LT5pc0NhbmNlbGxlZCA9IFRSVUU7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmggYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmRmMzIyMjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXRUJLSVRfV0VCX1BPTElD
WV9ERUNJU0lPTl9ICisjZGVmaW5lIFdFQktJVF9XRUJfUE9MSUNZX0RFQ0lTSU9OX0gKKworI2lu
Y2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSAid2Vi
a2l0ZGVmaW5lcy5oIgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VC
X1BPTElDWV9ERUNJU0lPTiAgICAgICAgICAgICh3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9n
ZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTihvYmopICAgICAg
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJf
UE9MSUNZX0RFQ0lTSU9OLCBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbikpCisjZGVmaW5lIFdFQktJ
VF9XRUJfUE9MSUNZX0RFQ0lTSU9OX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNT
X0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFdl
YlBvbGljeURlY2lzaW9uQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJ
U0lPTihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJL
SVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9OKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9QT0xJ
Q1lfREVDSVNJT05fQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3Mp
LCAgV0VCS0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJU0lPTikpCisjZGVmaW5lIFdFQktJVF9XRUJf
UE9MSUNZX0RFQ0lTSU9OX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFT
Uygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFdlYlBvbGlj
eURlY2lzaW9uQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNp
b25Qcml2YXRlIFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTsKK3N0cnVjdCBfV2ViS2l0
V2ViUG9saWN5RGVjaXNpb24geworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAg
Lyo8IHByaXZhdGUgPiovCisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2
OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzIHsKKyAgICBHT2Jq
ZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dl
Yl9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX3VzZSAoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRl
Y2lzaW9uKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9p
Z25vcmUgKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbik7CisKK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQgKFdlYktpdFdlYlBvbGlj
eURlY2lzaW9uKiBkZWNpc2lvbik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA1MTU1NDk2Li5lZmY2NWZhIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgorI2luY2x1ZGUgIndlYmtpdGVudW10eXBl
cy5oIgogI2luY2x1ZGUgIndlYmtpdG1hcnNoYWwuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRl
LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCkBAIC03NSw2ICs3Niw4IEBAIGV4
dGVybiAiQyIgewogZW51bSB7CiAgICAgLyogbm9ybWFsIHNpZ25hbHMgKi8KICAgICBOQVZJR0FU
SU9OX1JFUVVFU1RFRCwKKyAgICBOQVZJR0FUSU9OX1BPTElDWV9ERUNJU0lPTl9SRVFVRVNURUQs
CisgICAgTUlNRV9UWVBFX1BPTElDWV9ERUNJU0lPTl9SRVFVRVNURUQsCiAgICAgQ1JFQVRFX1dF
Ql9WSUVXLAogICAgIFdFQl9WSUVXX1JFQURZLAogICAgIFdJTkRPV19PQkpFQ1RfQ0xFQVJFRCwK
QEAgLTYzMSw5ICs2MzQsOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxf
d2ViX3ZpZXdfcmVhZHkoV2ViS2l0V2ViVmlldyopCiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1z
dGF0aWMgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlIHdlYmtpdF93ZWJfdmlld19yZWFsX25hdmln
YXRpb25fcmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdl
YktpdE5ldHdvcmtSZXF1ZXN0KikKK3N0YXRpYyBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2Ugd2Vi
a2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyosIFdl
YktpdFdlYkZyYW1lKiwgV2ViS2l0TmV0d29ya1JlcXVlc3QqKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgcmV0dXJuIFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNFX0FDQ0VQVDsKIH0K
IApAQCAtODExLDEwICs4MTMsMTAgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF9jcmVhdGVfd2Vi
X3ZpZXdfcmVxdWVzdF9oYW5kbGVkKEdTaWduYWxJbnZvY2F0aW9uSGludCogaWgKIAogc3RhdGlj
IGdib29sZWFuIHdlYmtpdF9uYXZpZ2F0aW9uX3JlcXVlc3RfaGFuZGxlZChHU2lnbmFsSW52b2Nh
dGlvbkhpbnQqIGloaW50LCBHVmFsdWUqIHJldHVybkFjY3UsIGNvbnN0IEdWYWx1ZSogaGFuZGxl
clJldHVybiwgZ3BvaW50ZXIgZHVtbXkpCiB7Ci0gICAgaW50IHNpZ25hbEhhbmRsZWQgPSBnX3Zh
bHVlX2dldF9pbnQoaGFuZGxlclJldHVybik7Ci0gICAgZ192YWx1ZV9zZXRfaW50KHJldHVybkFj
Y3UsIHNpZ25hbEhhbmRsZWQpOworICAgIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSBuYXZpZ2F0
aW9uUmVzcG9uc2UgPSAoV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlKWdfdmFsdWVfZ2V0X2VudW0o
aGFuZGxlclJldHVybik7CisgICAgZ192YWx1ZV9zZXRfZW51bShyZXR1cm5BY2N1LCBuYXZpZ2F0
aW9uUmVzcG9uc2UpOwogCi0gICAgaWYgKHNpZ25hbEhhbmRsZWQgIT0gV0VCS0lUX05BVklHQVRJ
T05fUkVTUE9OU0VfQUNDRVBUKQorICAgIGlmIChuYXZpZ2F0aW9uUmVzcG9uc2UgIT0gV0VCS0lU
X05BVklHQVRJT05fUkVTUE9OU0VfQUNDRVBUKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAg
ICByZXR1cm4gVFJVRTsKQEAgLTkwNywxNiArOTA5LDg0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAg
ICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKICAgICAgICAgICAgIEdfVFlQ
RV9CT09MRUFOLCAwKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Om5hdmlnYXRp
b24tcmVxdWVzdGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUg
c2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAZnJhbWU6IHRoZSAjV2ViS2l0V2ViRnJhbWUgdGhh
dCByZXF1aXJlZCB0aGUgbmF2aWdhdGlvbgorICAgICAqIEByZXF1ZXN0OiBhICNXZWJLaXROZXR3
b3JrUmVxdWVzdAorICAgICAqIEByZXR1cm46IGEgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlCisg
ICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gQGZyYW1lIHJlcXVlc3RzIGEgbmF2aWdhdGlvbiB0
byBhbm90aGVyIHBhZ2UuCisgICAgICoKKyAgICAgKiBEZXByZWNhdGVkOiBVc2UgV2ViS2l0V2Vi
Vmlldzo6bmF2aWdhdGlvbi1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkCisgICAgICogaW5zdGVh
ZAorICAgICAqLwogICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW05BVklHQVRJT05fUkVRVUVT
VEVEXSA9IGdfc2lnbmFsX25ldygibmF2aWdhdGlvbi1yZXF1ZXN0ZWQiLAogICAgICAgICAgICAg
R19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKICAgICAgICAgICAgIChHU2lnbmFsRmxh
Z3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKICAgICAgICAgICAgIEdf
U1RSVUNUX09GRlNFVCAoV2ViS2l0V2ViVmlld0NsYXNzLCBuYXZpZ2F0aW9uX3JlcXVlc3RlZCks
CiAgICAgICAgICAgICB3ZWJraXRfbmF2aWdhdGlvbl9yZXF1ZXN0X2hhbmRsZWQsCiAgICAgICAg
ICAgICBOVUxMLAotICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfSU5UX19PQkpFQ1RfT0JKRUNU
LAotICAgICAgICAgICAgR19UWVBFX0lOVCwgMiwKLSAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1Qs
Ci0gICAgICAgICAgICBHX1RZUEVfT0JKRUNUKTsKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFs
X0VOVU1fX09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9OQVZJR0FUSU9O
X1JFU1BPTlNFLCAyLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLAorICAgICAg
ICAgICAgV0VCS0lUX1RZUEVfTkVUV09SS19SRVFVRVNUKTsKKworICAgIC8qKgorICAgICAqIFdl
YktpdFdlYlZpZXc6Om5hdmlnYXRpb24tcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZDoKKyAgICAg
KiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisg
ICAgICogQGZyYW1lOiB0aGUgI1dlYktpdFdlYkZyYW1lIHRoYXQgcmVxdWlyZWQgdGhlIG5hdmln
YXRpb24KKyAgICAgKiBAcmVxdWVzdDogYSAjV2ViS2l0TmV0d29ya1JlcXVlc3QKKyAgICAgKiBA
bmF2aWdhdGlvbl9hY3Rpb246IGEgI1dlYktpdFdlYk5hdmlnYXRpb24KKyAgICAgKiBAcG9saWN5
X2RlY2lzaW9uOiBhICNXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbgorICAgICAqIEByZXR1cm46IFRS
VUUgaWYgdGhlIHNpZ25hbCB3aWxsIGJlIGhhbmRsZWQsIEZBTFNFIHRvIGhhdmUgdGhlCisgICAg
ICogICAgICAgICAgZGVmYXVsdCBiZWhhdmlvciBhcHBseQorICAgICAqCisgICAgICogRW1pdHRl
ZCB3aGVuIEBmcmFtZSByZXF1ZXN0cyBhIG5hdmlnYXRpb24gdG8gYW5vdGhlciBwYWdlLgorICAg
ICAqIElmIHRoaXMgc2lnbmFsIGlzIG5vdCBoYW5kbGVkLCB0aGUgZGVmYXVsdCBiZWhhdmlvciBp
cyB0byBhbGxvdyB0aGUKKyAgICAgKiBuYXZpZ2F0aW9uLgorICAgICAqLworICAgIHdlYmtpdF93
ZWJfdmlld19zaWduYWxzW05BVklHQVRJT05fUE9MSUNZX0RFQ0lTSU9OX1JFUVVFU1RFRF0gPSBn
X3NpZ25hbF9uZXcoIm5hdmlnYXRpb24tcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCIsCisgICAg
ICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdT
aWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAg
ICAgICAgMCwKKyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwK
KyAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19P
QkpFQ1RfT0JKRUNUX09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwg
NCwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9GUkFNRSwKKyAgICAgICAgICAgIFdFQktJ
VF9UWVBFX05FVFdPUktfUkVRVUVTVCwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9OQVZJ
R0FUSU9OX0FDVElPTiwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJ
T04pOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bWltZS10eXBlLXBvbGljeS1k
ZWNpc2lvbi1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNo
IHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBmcmFtZTogdGhlICNXZWJLaXRXZWJGcmFt
ZSB0aGF0IHJlcXVpcmVkIHRoZSBwb2xpY3kgZGVjaXNpb24KKyAgICAgKiBAcmVxdWVzdDogYSBX
ZWJLaXROZXR3b3JrUmVxdWVzdAorICAgICAqIEBtaW1ldHlwZTogdGhlIE1JTUUgdHlwZSBhdHRl
bXB0ZWQgdG8gbG9hZAorICAgICAqIEBwb2xpY3lfZGVjaXNpb246IGEgI1dlYktpdFdlYlBvbGlj
eURlY2lzaW9uCisgICAgICogQHJldHVybjogVFJVRSBpZiB0aGUgc2lnbmFsIHdpbGwgYmUgaGFu
ZGxlZCwgRkFMU0UgdG8gaGF2ZSB0aGUKKyAgICAgKiAgICAgICAgICBkZWZhdWx0IGJlaGF2aW9y
IGFwcGx5CisgICAgICoKKyAgICAgKiBEZWNpZGUgd2hldGhlciBvciBub3QgdG8gZGlzcGxheSB0
aGUgZ2l2ZW4gTUlNRSB0eXBlLiAgSWYgdGhpcworICAgICAqIHNpZ25hbCBpcyBub3QgaGFuZGxl
ZCwgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gc2hvdyB0aGUKKyAgICAgKiBjb250ZW50IG9m
IHRoZSByZXF1ZXN0ZWQgVVJJIGlmIFdlYktpdCBjYW4gc2hvdyB0aGlzIE1JTUUKKyAgICAgKiB0
eXBlOyBpZiBXZWJLaXQgaXMgbm90IGFibGUgdG8gc2hvdyB0aGUgTUlNRSB0eXBlIG5vdGhpbmcK
KyAgICAgKiBoYXBwZW5zLgorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW01J
TUVfVFlQRV9QT0xJQ1lfREVDSVNJT05fUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygibWltZS10
eXBlLXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01f
Q0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFM
X1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAg
ICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAor
ICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNUX09CSkVDVF9TVFJJTkdf
T0JKRUNULAorICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDQsCisgICAgICAgICAgICBXRUJL
SVRfVFlQRV9XRUJfRlJBTUUsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9ORVRXT1JLX1JFUVVF
U1QsCisgICAgICAgICAgICBHX1RZUEVfU1RSSU5HLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVf
V0VCX1BPTElDWV9ERUNJU0lPTik7CiAKICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3Ojp3
aW5kb3ctb2JqZWN0LWNsZWFyZWQ6CkBAIC0yMzE1LDYgKzIzODUsMjcgQEAgR3RrVGFyZ2V0TGlz
dCogd2Via2l0X3dlYl92aWV3X2dldF9wYXN0ZV90YXJnZXRfbGlzdChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogfQogCiAvKioKKyAqIHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGU6
CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEBtaW1lX3R5cGU6IGEgTUlNRSB0
eXBlCisgKgorICogVGhpcyBmdW5jdGlvbnMgcmV0dXJucyB3aGV0aGVyIG9yIG5vdCBhIE1JTUUg
dHlwZSBjYW4gYmUgZGlzcGxheWVkIHVzaW5nIHRoaXMgdmlldy4KKyAqCisgKiBSZXR1cm4gdmFs
dWU6IGEgI2dib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIE1JTUUgdHlwZSBjYW4gYmUgZGlzcGxh
eWVkCisgKiovCisKK2dib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUg
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBtaW1lVHlwZSkKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsK
KyAgICAKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9m
cmFtZSh3ZWJWaWV3KSk7CisgICAgaWYgKEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9h
ZGVyKCkpCisgICAgICAgIHJldHVybiBsb2FkZXItPmNhblNob3dNSU1FVHlwZShtaW1lVHlwZSk7
CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRkFMU0U7Cit9CisKKy8qKgogICogd2Via2l0X3dl
Yl92aWV3X2dldF90cmFuc3BhcmVudDoKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwog
ICoKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCBkNGQxNzBlLi5kNzM3NjU4IDEwMDY0
NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKKysrIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQ29sbGFib3JhIEx0ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNzEsOSArNzIsNiBAQCBz
dHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAKICAgICBnYm9vbGVhbiAgICAgICAgICAgICAg
ICAgICAoKiB3ZWJfdmlld19yZWFkeSkgICAgICAgICAgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3
KTsKIAotICAgIC8qCi0gICAgICogVE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhpbmcgbGlrZSBX
ZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyX1Byb3RvY29sIGluc3RlYWQKLSAgICAgKi8KICAgICBX
ZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2UgICAoKiBuYXZpZ2F0aW9uX3JlcXVlc3RlZCkgICAoV2Vi
S2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJGcmFtZSAgICAgICAqZnJh
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0ICpyZXF1ZXN0KTsKQEAgLTI1Niw2ICsyNTQsMTAg
QEAgV0VCS0lUX0FQSSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyoKIHdlYmtpdF93ZWJfdmlld19n
ZXRfd2luZG93X2ZlYXR1cmVzICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2Vi
X3ZpZXcpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3df
bWltZV90eXBlICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICptaW1lX3R5cGUpOworCitXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3RyYW5zcGFyZW50ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgKndlYl92aWV3KTsKIAogV0VCS0lUX0FQSSB2b2lkCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26157</attachid>
            <date>2008-12-19 13:56:32 -0800</date>
            <delta_ts>2008-12-19 18:40:45 -0800</delta_ts>
            <desc>with since tags</desc>
            <filename>policy-delegates.diff</filename>
            <type>text/plain</type>
            <size>42557</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggNDZjNmNl
MS4uN2FlYzA2MSAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUu
YW0KQEAgLTMwOCw2ICszMDgsOCBAQCB3ZWJraXRndGtfaF9hcGkgKz0gXAogCVdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmZyYW1lLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5oIFwK
KwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmggXAorCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmggXAogCVdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndp
bmRvd2ZlYXR1cmVzLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAt
MzQxLDYgKzM0Myw4IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJmcmFtZS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3Rv
cnlpdGVtLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcCBc
CisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5jcHAgXAorCVdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcCBcCiAJV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVy
ZXMuY3BwCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCmluZGV4IGJmNWVlN2UuLmUyMGQ5NjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMDgt
MDktMjUgIE1hcmNvIEJhcmlzaW9uZSAgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NjIKKyAgICAgICAgW2d0a10gSW1w
bGVtZW50IFdlYlBvbGljeURlbGVnYXRlIG1ldGhvZHMKKworICAgICAgICBPcmlnaW5hbCB3b3Jr
IGJ5IFBpZXJyZS1MdWMgQmVhdWRvaW4uIEZpbmFsIHRvdWNoZXMgYnkgR3VzdGF2bworICAgICAg
ICBOb3JvbmhhLgorCisgICAgICAgIFRoaXMgaW1wbGVtZW50cyB0aGUgZGVsZWdhdGVzIG1ldGhv
ZHMgb2YgV2ViUG9saWN5RGVsZWdhdGUuCisgICAgICAgIFNpbmNlIEd0aysvQyBkb2Vzbid0IGhh
dmUgZGVsZWdhdGUgbWV0aG9kcywgdGhleSBhcmUgcmVwbGFjZWQgd2l0aAorICAgICAgICBzaWdu
YWxzLgorCisgICAgICAgIEEgbmV3IG9iamVjdCBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiBhbGxv
dyB0aGUgYnJvd3NlciB0byBkZWxheSBpdHMKKyAgICAgICAgcmVzcG9uc2UgaW4gY2VydGFpbiBj
YXNlcy4gV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiBjb250YWlucyB0aGUKKyAgICAgICAgaW5m
b3JtYXRpb24gYWJvdXQgd2hhdCBjYXVzZWQgYSBuYXZpZ2F0aW9uIHJlcXVlc3QuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojp+RnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlw
ZSk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2spOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVUeXBlKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXQuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0ZGVmaW5lcy5oOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXRwcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6a2l0KToKKyAgICAgICAg
KFdlYktpdDo6Y29yZSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHByaXZhdGUuaDoKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlOjopOgorICAgICAgICAoX1dlYktp
dFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlOjp3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9u
X2dldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZh
dGU6OndlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fc2V0X3Byb3BlcnR5KToKKyAgICAgICAg
KF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9uYXZpZ2F0aW9u
X2FjdGlvbl9pbml0KToKKyAgICAgICAgKF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0
ZTo6d2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9maW5hbGl6ZSk6CisgICAgICAgIChfV2Vi
S2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGU6OndlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rp
b25fY2xhc3NfaW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZh
dGU6OndlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3JlYXNvbik6CisgICAgICAgIChf
V2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGU6OndlYmtpdF93ZWJfbmF2aWdhdGlvbl9h
Y3Rpb25fc2V0X3JlYXNvbik6CisgICAgICAgIChfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblBy
aXZhdGU6OndlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X29yaWdpbmFsX3VyaSk6Cisg
ICAgICAgIChfV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGU6OndlYmtpdF93ZWJfbmF2
aWdhdGlvbl9hY3Rpb25fc2V0X29yaWdpbmFsX3VyaSk6CisgICAgICAgICogd2Via2l0L3dlYmtp
dHdlYm5hdmlnYXRpb25hY3Rpb24uaDogQWRkZWQuCisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YnBvbGljeWRlY2lzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVj
aXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9jbGFzc19pbml0KToKKyAg
ICAgICAgKF9XZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGU6OndlYmtpdF93ZWJfcG9saWN5
X2RlY2lzaW9uX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0
ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fbmV3KToKKyAgICAgICAgKF9XZWJLaXRXZWJQ
b2xpY3lEZWNpc2lvblByaXZhdGU6OndlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX3VzZSk6Cisg
ICAgICAgIChfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlOjp3ZWJraXRfd2ViX3BvbGlj
eV9kZWNpc2lvbl9pZ25vcmUpOgorICAgICAgICAoX1dlYktpdFdlYlBvbGljeURlY2lzaW9uUHJp
dmF0ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQpOgorICAgICAgICAoX1dl
YktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZTo6d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25f
Y2FuY2VsKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaDogQWRk
ZWQuCisKIDIwMDgtMTItMTMgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2Vs
ZmlzaC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ2FtZXJvbiBad2FyaWNoLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAg
Yi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRl
eCA0YzU5ZDAxLi5mODQ5NDlhIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtNDYsNiArNDYsOCBAQAogI2luY2x1ZGUgIndl
YmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXRuZXR3b3JrcmVxdWVzdC5oIgogI2luY2x1
ZGUgIndlYmtpdHdlYmZyYW1lLmgiCisjaW5jbHVkZSAid2Via2l0d2VibmF2aWdhdGlvbmFjdGlv
bi5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgiCiAjaW5jbHVkZSAid2Vi
a2l0cHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpAQCAt
NjMsMTAgKzY1LDE3IEBAIEZyYW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVudChXZWJL
aXRXZWJGcmFtZSogZnJhbWUpCiAgICAgLCBtX3VzZXJBZ2VudCgiIikKICAgICAsIG1fcGx1Z2lu
VmlldygwKQogICAgICwgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkKKyAgICAsIG1f
cG9saWN5RGVjaXNpb24oMCkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CiB9CiAKK0ZyYW1lTG9h
ZGVyQ2xpZW50Ojp+RnJhbWVMb2FkZXJDbGllbnQoKQoreworICAgIGlmIChtX3BvbGljeURlY2lz
aW9uKQorICAgICAgICBnX29iamVjdF91bnJlZihtX3BvbGljeURlY2lzaW9uKTsKK30KKwogc3Rh
dGljIFN0cmluZyBhZ2VudFBsYXRmb3JtKCkKIHsKICNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQpA
QCAtMjQzLDE2ICsyNTIsMzUgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb24KICAgICBtX3Jlc3Bv
bnNlID0gcmVzcG9uc2U7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTUlNRVR5cGUoRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoRnJhbWVQb2xpY3lGdW5jdGlv
biBwb2xpY3lGdW5jdGlvbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gY2Fs
bCBkaXJlY3RseSBoZXJlIChjb21tZW50IGNvcGllZCBmcm9tIFF0IHZlcnNpb24pCiAgICAgQVNT
RVJUKHBvbGljeUZ1bmN0aW9uKTsKICAgICBpZiAoIXBvbGljeUZ1bmN0aW9uKQogICAgICAgICBy
ZXR1cm47Ci0gICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBv
bGljeVVzZSk7CisKKyAgICBXZWJLaXRXZWJWaWV3KiBwYWdlID0gZ2V0Vmlld0Zyb21GcmFtZSht
X2ZyYW1lKTsKKyAgICBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtpdF9uZXR3
b3JrX3JlcXVlc3RfbmV3KHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBwb2xpY3lEZWNpc2lvbiA9IHdl
YmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX25ldyhtX2ZyYW1lLCBwb2xpY3lGdW5jdGlvbik7Cisg
ICAgaWYgKG1fcG9saWN5RGVjaXNpb24pCisgICAgICAgIGdfb2JqZWN0X3VucmVmKG1fcG9saWN5
RGVjaXNpb24pOworICAgIG1fcG9saWN5RGVjaXNpb24gPSBwb2xpY3lEZWNpc2lvbjsKKworICAg
IGdib29sZWFuIGlzSGFuZGxlZCA9IGZhbHNlOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShw
YWdlLCAibWltZS10eXBlLXBvbGljeS1kZWNpc2lvbi1yZXF1ZXN0ZWQiLCBtX2ZyYW1lLCByZXF1
ZXN0LCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLCBwb2xpY3lEZWNpc2lvbiwgJmlzSGFuZGxlZCk7
CisKKyAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0KTsKKworICAgIGlmIChpc0hhbmRsZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChjYW5TaG93TUlNRVR5cGUobWltZVR5cGUpKQorICAg
ICAgICB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91c2UgKHBvbGljeURlY2lzaW9uKTsKKyAg
ICBlbHNlCisgICAgICAgIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkIChwb2xp
Y3lEZWNpc2lvbik7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rp
b24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0
aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4s
IGNvbnN0IFN0cmluZyYgcykKIHsKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlm
ICghcG9saWN5RnVuY3Rpb24pCkBAIC0yNzEsMTcgKzI5OSw0MSBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xp
Y3lGdW5jdAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1f
ZnJhbWUpOwogICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25ldHdv
cmtfcmVxdWVzdF9uZXcocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSByZXNwb25zZTsKLQorICAgIC8qCisg
ICAgICogV2Ugc3RpbGwgc3VwcG9ydCB0aGUgZGVwcmVjYXRlZCBuYXZpZ2F0aW9uLXJlcXVlc3Rl
ZCBzaWduYWwsIGlmIHRoZQorICAgICAqIGFwcGxpY2F0aW9uIGRvZXNuJ3QgaWdub3JlIHRoZSBu
YXZpZ2F0aW9uIHRoZW4gdGhlIG5ldyBzaWduYWwgaXMKKyAgICAgKiBlbWl0dGVkLgorICAgICAq
IG5hdmlnYXRpb24tcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCBtdXN0IGJlIGVtaXR0ZWQgYWZ0
ZXIKKyAgICAgKiBuYXZpZ2F0aW9uLXJlcXVlc3RlZCBhcyB0aGUgcG9saWN5IGRlY2lzaW9uIGNh
biBiZSBhc3luYy4KKyAgICAgKi8KICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywg
Im5hdmlnYXRpb24tcmVxdWVzdGVkIiwgbV9mcmFtZSwgcmVxdWVzdCwgJnJlc3BvbnNlKTsKIAot
ICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOwotCiAgICAgaWYgKHJlc3BvbnNlID09IFdFQktJ
VF9OQVZJR0FUSU9OX1JFU1BPTlNFX0lHTk9SRSkgewogICAgICAgICAoY29yZShtX2ZyYW1lKS0+
bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKKyAgICAgICAgZ19vYmpl
Y3RfdW5yZWYocmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAoY29yZSht
X2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICBXZWJL
aXRXZWJQb2xpY3lEZWNpc2lvbiogcG9saWN5RGVjaXNpb24gPSB3ZWJraXRfd2ViX3BvbGljeV9k
ZWNpc2lvbl9uZXcobV9mcmFtZSwgcG9saWN5RnVuY3Rpb24pOworICAgIGlmIChtX3BvbGljeURl
Y2lzaW9uKQorICAgICAgICBnX29iamVjdF91bnJlZihtX3BvbGljeURlY2lzaW9uKTsKKyAgICBt
X3BvbGljeURlY2lzaW9uID0gcG9saWN5RGVjaXNpb247CisKKyAgICAvLyBUT0RPOiB1c2UgYWN0
aW9uLmV2ZW50KCkuCisgICAgZ3BvaW50ZXIgbmF2aWdhdGlvbkFjdGlvbiA9IGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfTkFWSUdBVElPTl9BQ1RJT04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhc29uIiwga2l0KGFjdGlvbi50eXBlKCkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yaWdpbmFsLXVy
aSIsIGFjdGlvbi51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICBnYm9vbGVhbiBpc0hh
bmRsZWQgPSBmYWxzZTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgIm5hdmln
YXRpb24tcG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3QsIG5hdmln
YXRpb25BY3Rpb24sIHBvbGljeURlY2lzaW9uLCAmaXNIYW5kbGVkKTsKKworICAgIGdfb2JqZWN0
X3VucmVmKG5hdmlnYXRpb25BY3Rpb24pOworICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOwor
CisgICAgLy8gRklYTUUgSW1wbGVtZW50IGRlZmF1bHQgYmVoYXZpb3Igd2hlbiB3ZSBjYW4gcXVl
cnkgdGhlIGJhY2tlbmQgd2hhdCBwcm90b2NvbHMgaXQgc3VwcG9ydHMKKyAgICBpZiAoIWlzSGFu
ZGxlZCkKKyAgICAgICAgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fdXNlKG1fcG9saWN5RGVj
aXNpb24pOwogfQogCiBXaWRnZXQqIEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29u
c3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkK
QEAgLTU1MCw3ICs2MDIsOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3co
KQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVjaygpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICAvL0ZJWE1FIEFkZCBzdXBwb3J0IGZvciBtb3JlIHRoYW4g
b25lIHBvbGljeSBkZWNpc2lvbiBhdCBvbmNlCisgICAgaWYgKG1fcG9saWN5RGVjaXNpb24pCisg
ICAgICAgIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2NhbmNlbChtX3BvbGljeURlY2lzaW9u
KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkTWFpblJlc291
cmNlKERvY3VtZW50TG9hZGVyKikKQEAgLTU3OSwxMCArNjMzLDEwIEBAIGJvb2wgRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01J
TUVUeXBlKGNvbnN0IFN0cmluZyYpIGNvbnN0Citib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5T
aG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSh0eXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZE5vbkltYWdlTUlNRVR5cGUodHlwZSkgfHwKKyAgICAgICAgUGx1Z2luRGF0YWJhc2U6Omlu
c3RhbGxlZFBsdWdpbnMoKS0+aXNNSU1FVHlwZVJlZ2lzdGVyZWQodHlwZSk7CiB9CiAKIGJvb2wg
RnJhbWVMb2FkZXJDbGllbnQ6OnJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0
IFN0cmluZyYpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmgKaW5kZXggMDczOGEyOS4uYmNkYjI5NyAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJwb2xp
Y3lkZWNpc2lvbi5oIgogCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWUgV2ViS2l0V2Vi
RnJhbWU7CiAKQEAgLTQxLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgY2xhc3Mg
RnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewog
ICAgIHB1YmxpYzoKICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQoV2ViS2l0V2ViRnJhbWUqKTsK
LSAgICAgICAgdmlydHVhbCB+RnJhbWVMb2FkZXJDbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVh
bCB+RnJhbWVMb2FkZXJDbGllbnQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZGVy
RGVzdHJveWVkKCk7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqICB3ZWJGcmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWU7IH0KQEAgLTE3MCw2ICsxNzEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAgV2ViQ29yZTo6U3RyaW5nIG1fdXNl
ckFnZW50OworICAgICAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogbV9wb2xpY3lEZWNpc2lv
bjsKIAogICAgICAgICAvLyBQbHVnaW4gdmlldyB0byByZWRpcmVjdCBkYXRhIHRvCiAgICAgICAg
IFdlYkNvcmU6OlBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKZGlmZiAtLWdpdCBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdC5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKaW5kZXggODYy
MWU0Ni4uOGM4NjhhMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKKysr
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzAsNiArMzEs
OCBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJo
aXN0b3J5aXRlbS5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5o
PgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmg+CiAjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdGVudW10eXBlcy5oPgogCiAjZW5kaWYgLyogX19XRUJLSVRfSF9fICov
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmggYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKaW5kZXggYjY3NGU5Zi4uZjk0ZTcxMCAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCisrKyBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdGRlZmluZXMuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBDb2xsYWJvcmEgTHRkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Miw2ICs1Myw5IEBAIHR5
cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJIaXN0b3J5SXRlbUNsYXNzIFdlYktpdFdlYkhpc3RvcnlJ
dGVtQ2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWUgV2ViS2l0V2ViRnJhbWU7
CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVDbGFzcyBXZWJLaXRXZWJGcmFtZUNsYXNz
OwogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb24gV2ViS2l0V2ViUG9s
aWN5RGVjaXNpb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25DbGFz
cyBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzOworCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
V2ViU2V0dGluZ3MgV2ViS2l0V2ViU2V0dGluZ3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vi
U2V0dGluZ3NDbGFzcyBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzOwogCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHByaXZhdGUuY3BwCmluZGV4IDA3YzgxNzQuLjIyODNjOGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHByaXZhdGUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBI
b2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9y
YSBMdGQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTgzLDYgKzg0LDE2IEBAIFdlYktpdFdlYlZp
ZXcqIGtpdChXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSkKICAgICByZXR1cm4gY2xpZW50ID8gY2xp
ZW50LT53ZWJWaWV3KCkgOiAwOwogfQogCitXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uIGtpdChX
ZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSB0eXBlKQoreworICAgIHJldHVybiAoV2ViS2l0V2ViTmF2
aWdhdGlvblJlYXNvbil0eXBlOworfQorIAorV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgY29yZShX
ZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uIHR5cGUpCit7CisgICAgcmV0dXJuIChXZWJDb3JlOjpO
YXZpZ2F0aW9uVHlwZSl0eXBlOworfQorCiB9IC8qKiBlbmQgbmFtZXNwYWNlIFdlYktpdCAqLwog
CiB2b2lkIHdlYmtpdF9pbml0KCkKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHByaXZhdGUuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAppbmRleCAyODBj
YWIyLi44ZjczNGYxIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRl
LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCkBAIC0xLDYgKzEsNyBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA4IEphbiBNaWNoYWVsIEMuIEFsb256bworICogQ29w
eXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI5
LDYgKzMwLDggQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgogI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1l
Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmg+CisjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2Vic2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vid2luZG93ZmVh
dHVyZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmg+CkBA
IC01Nyw2ICs2MCw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIFdlYktpdFdlYkhpc3RvcnlJ
dGVtKiBraXQoV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKIAogICAgIFdlYkNvcmU6OkJhY2tGb3J3
YXJkTGlzdCogY29yZShXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqKTsKKworICAgIFdlYktpdFdl
Yk5hdmlnYXRpb25SZWFzb24ga2l0KFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIHR5cGUpOworICAg
IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIGNvcmUoV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbiBy
ZWFzb24pOwogfQogCiBleHRlcm4gIkMiIHsKQEAgLTEzMCw2ICsxMzYsMTIgQEAgZXh0ZXJuICJD
IiB7CiAgICAgdm9pZAogICAgIHdlYmtpdF93ZWJfdmlld19ub3RpZnlfcmVhZHkgKFdlYktpdFdl
YlZpZXcqIHdlYl92aWV3KTsKIAorICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKgorICAgIHdl
YmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX25ldyAoV2ViS2l0V2ViRnJhbWUqLCBXZWJDb3JlOjpG
cmFtZVBvbGljeUZ1bmN0aW9uKTsKKworICAgIHZvaWQKKyAgICB3ZWJraXRfd2ViX3BvbGljeV9k
ZWNpc2lvbl9jYW5jZWwgKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbik7CisKICAg
ICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB3ZWJraXR3ZWJmcmFtZS5oIG9uY2UgdGhlaXIgQVBJ
IGhhcyBiZWVuIGRpc2N1c3NlZC4KIAogICAgIFdFQktJVF9BUEkgR1NMaXN0KgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5jcHAgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTVlMDI4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5jcHAKQEAgLTAsMCArMSwyMTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlICJGcmFtZUxv
YWRlclR5cGVzLmgiCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmgiCisj
aW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdGVudW10eXBlcy5oIgor
CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK2V4dGVybiAiQyIgeworCitzdHJ1Y3QgX1dlYktpdFdl
Yk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlIHsKKyAgICBXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29u
IHJlYXNvbjsKKyAgICBnY2hhciogb3JpZ2luYWxVcmk7Cit9OworCisjZGVmaW5lIFdFQktJVF9X
RUJfTkFWSUdBVElPTl9BQ1RJT05fR0VUX1BSSVZBVEUob2JqKShHX1RZUEVfSU5TVEFOQ0VfR0VU
X1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9OQVZJR0FUSU9OX0FDVElPTiwgV2ViS2l0
V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGUpKQorCitlbnVtICB7CisgICAgUFJPUF8wLAorCisg
ICAgUFJPUF9SRUFTT04sCisgICAgUFJPUF9PUklHSU5BTF9VUkkKK307CisKK0dfREVGSU5FX1RZ
UEUoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiwgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlv
biwgR19UWVBFX09CSkVDVCkKKworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX25hdmlnYXRpb25f
YWN0aW9uX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdW
YWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYk5hdmlnYXRp
b25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24gPSBXRUJLSVRfV0VCX05BVklHQVRJT05fQUNUSU9O
KG9iamVjdCk7CisKKyAgICBzd2l0Y2gocHJvcGVydHlJZCkgeworICAgIGNhc2UgUFJPUF9SRUFT
T046CisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93ZWJfbmF2aWdhdGlv
bl9hY3Rpb25fZ2V0X3JlYXNvbihuYXZpZ2F0aW9uQWN0aW9uKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9PUklHSU5BTF9VUkk6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2
YWx1ZSwgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfb3JpZ2luYWxfdXJpKG5hdmln
YXRpb25BY3Rpb24pKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfbmF2
aWdhdGlvbl9hY3Rpb25fc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVy
dHlJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2Vi
S2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbiA9IFdFQktJVF9XRUJfTkFW
SUdBVElPTl9BQ1RJT04ob2JqZWN0KTsKKworICAgIHN3aXRjaChwcm9wZXJ0eUlkKSB7CisgICAg
Y2FzZSBQUk9QX1JFQVNPTjoKKyAgICAgICAgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9z
ZXRfcmVhc29uKG5hdmlnYXRpb25BY3Rpb24sIChXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uKWdf
dmFsdWVfZ2V0X2VudW0odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX09S
SUdJTkFMX1VSSToKKyAgICAgICAgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfb3Jp
Z2luYWxfdXJpKG5hdmlnYXRpb25BY3Rpb24sIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFM
SURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9p
bml0KFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24pCit7CisgICAg
bmF2aWdhdGlvbkFjdGlvbi0+cHJpdiA9IFdFQktJVF9XRUJfTkFWSUdBVElPTl9BQ1RJT05fR0VU
X1BSSVZBVEUobmF2aWdhdGlvbkFjdGlvbik7CisKKyAgICBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0
aW9uUHJpdmF0ZSogcHJpdiA9IG5hdmlnYXRpb25BY3Rpb24tPnByaXY7Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZmluYWxpemUoR09iamVjdCogb2JqKQor
eworICAgIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24gPSBXRUJL
SVRfV0VCX05BVklHQVRJT05fQUNUSU9OKG9iaik7CisgICAgV2ViS2l0V2ViTmF2aWdhdGlvbkFj
dGlvblByaXZhdGUqIHByaXYgPSBuYXZpZ2F0aW9uQWN0aW9uLT5wcml2OworCisgICAgZ19mcmVl
KHByaXYtPm9yaWdpbmFsVXJpKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfbmF2
aWdhdGlvbl9hY3Rpb25fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqKTsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9jbGFzc19pbml0KFdlYktpdFdlYk5h
dmlnYXRpb25BY3Rpb25DbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyog
b2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworCisgICAgQ09NUElM
RV9BU1NFUlQoV0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9MSU5LX0NMSUNLRUQgPT0gV2Vi
Q29yZTo6TmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZCwgbmF2aWdhdGlvbl90eXBlX2xpbmtfY2xp
Y2tlZF9lbnVtX21hdGNoKTsKKyAgICBDT01QSUxFX0FTU0VSVChXRUJLSVRfV0VCX05BVklHQVRJ
T05fUkVBU09OX0ZPUk1fU1VCTUlUVEVEID09IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlRm9ybVN1
Ym1pdHRlZCwgbmF2aWdhdGlvbl90eXBlX2Zvcm1fc3VibWl0dGVkX2VudW1fbWF0Y2gpOworICAg
IENPTVBJTEVfQVNTRVJUKFdFQktJVF9XRUJfTkFWSUdBVElPTl9SRUFTT05fQkFDS19GT1JXQVJE
ID09IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlQmFja0ZvcndhcmQsIG5hdmlnYXRpb25fdHlwZV9i
YWNrX2ZvcndhcmRfZW51bV9tYXRjaCk7CisgICAgQ09NUElMRV9BU1NFUlQoV0VCS0lUX1dFQl9O
QVZJR0FUSU9OX1JFQVNPTl9SRUxPQUQgPT0gV2ViQ29yZTo6TmF2aWdhdGlvblR5cGVSZWxvYWQs
IG5hdmlnYXRpb25fdHlwZV9yZWxvYWRfZW51bV9tYXRjaCk7CisgICAgQ09NUElMRV9BU1NFUlQo
V0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9GT1JNX1JFU1VCTUlUVEVEID09IFdlYkNvcmU6
Ok5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkLCBuYXZpZ2F0aW9uX3R5cGVfZm9ybV9yZXN1
Ym1pdHRlZF9lbnVtX21hdGNoKTsKKyAgICBDT01QSUxFX0FTU0VSVChXRUJLSVRfV0VCX05BVklH
QVRJT05fUkVBU09OX09USEVSID09IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlT3RoZXIsIG5hdmln
YXRpb25fdHlwZV9vdGhlcl9lbnVtX21hdGNoKTsKKworICAgIG9iamVjdENsYXNzLT5nZXRfcHJv
cGVydHkgPSB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9wcm9wZXJ0eTsKKyAgICBv
YmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9z
ZXRfcHJvcGVydHk7CisgICAgb2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRfd2ViX25hdmln
YXRpb25fYWN0aW9uX2ZpbmFsaXplOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShvYmplY3RDbGFzcywgUFJPUF9SRUFTT04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnX3BhcmFtX3NwZWNfZW51bSgicmVhc29uIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWFzb24iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSByZWFzb24g
d2h5IHRoaXMgbmF2aWdhdGlvbiBpcyBvY2N1cnJpbmciLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX05BVklHQVRJ
T05fUkVBU09OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX1JFQVNPTl9PVEhFUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHUGFyYW1GbGFncyko
V0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKSkpOworCisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9PUklHSU5BTF9V
UkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3Ry
aW5nKCJvcmlnaW5hbC11cmkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiT3JpZ2luYWwgVVJJIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBVUkkgdGhhdCB3YXMgcmVx
dWVzdGVkIGFzIHRoZSB0YXJnZXQgZm9yIHRoZSBuYXZpZ2F0aW9uIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHUGFyYW1GbGFn
cykoV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKSkpOworCisgICAg
Z190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdlYktpdFdlYk5h
dmlnYXRpb25BY3Rpb25Qcml2YXRlKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9uYXZpZ2F0
aW9uX2FjdGlvbl9nZXRfcmVhc29uOgorICogQG5hdmlnYXRpb25BY3Rpb246IGEgI1dlYktpdFdl
Yk5hdmlnYXRpb25BY3Rpb24KKyAqCisgKiBSZXR1cm5zIHRoZSByZWFzb24gd2h5IFdlYktpdCBp
cyByZXF1ZXN0aW5nIGEgbmF2aWdhdGlvbi4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IGEgI1dlYktp
dFdlYk5hdmlnYXRpb25SZWFzb24KKyAqCisgKiBTaW5jZTogMS4wLjMKKyAqLworV2ViS2l0V2Vi
TmF2aWdhdGlvblJlYXNvbiB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9yZWFzb24o
V2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbikKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX05BVklHQVRJT05fQUNUSU9OKG5hdmlnYXRp
b25BY3Rpb24pLCBXRUJLSVRfV0VCX05BVklHQVRJT05fUkVBU09OX09USEVSKTsKKworICAgIHJl
dHVybiBuYXZpZ2F0aW9uQWN0aW9uLT5wcml2LT5yZWFzb247Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfcmVhc29uOgorICogQG5hdmlnYXRpb25BY3Rpb246
IGEgI1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24KKyAqIEByZWFzb246IGEgI1dlYktpdFdlYk5h
dmlnYXRpb25SZWFzb24KKyAqCisgKiBTZXRzIHRoZSByZWFzb24gd2h5IFdlYktpdCBpcyByZXF1
ZXN0aW5nIGEgbmF2aWdhdGlvbi4KKyAqCisgKiBTaW5jZTogMS4wLjMKKyAqLwordm9pZCB3ZWJr
aXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX3NldF9yZWFzb24oV2ViS2l0V2ViTmF2aWdhdGlvbkFj
dGlvbiogbmF2aWdhdGlvbkFjdGlvbiwgV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbiByZWFzb24p
Cit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX05BVklHQVRJT05fQUNUSU9O
KG5hdmlnYXRpb25BY3Rpb24pKTsKKworICAgIGlmIChuYXZpZ2F0aW9uQWN0aW9uLT5wcml2LT5y
ZWFzb24gPT0gcmVhc29uKQorICAgICAgICByZXR1cm47CisKKyAgICBuYXZpZ2F0aW9uQWN0aW9u
LT5wcml2LT5yZWFzb24gPSByZWFzb247CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG5h
dmlnYXRpb25BY3Rpb24pLCAicmVhc29uIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9uYXZp
Z2F0aW9uX2FjdGlvbl9nZXRfb3JpZ2luYWxfdXJpOgorICogQG5hdmlnYXRpb25BY3Rpb246IGEg
I1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24KKyAqCisgKiBSZXR1cm5zIHRoZSBVUkkgdGhhdCB3
YXMgb3JpZ2luYWxseSByZXF1ZXN0ZWQuIFRoaXMgbWF5IGRpZmZlciBmcm9tIHRoZQorICogbmF2
aWdhdGlvbiB0YXJnZXQsIGZvciBpbnN0YW5jZSBiZWNhdXNlIG9mIGEgcmVkaXJlY3QuCisgKgor
ICogUmV0dXJuIHZhbHVlOiB0aGUgb3JpZ2luYWxseSByZXF1ZXN0ZWQgVVJJCisgKgorICogU2lu
Y2U6IDEuMC4zCisgKi8KK2NvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9u
X2dldF9vcmlnaW5hbF91cmkoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFj
dGlvbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX05BVklHQVRJ
T05fQUNUSU9OKG5hdmlnYXRpb25BY3Rpb24pLCBOVUxMKTsKKworICAgIHJldHVybiBuYXZpZ2F0
aW9uQWN0aW9uLT5wcml2LT5vcmlnaW5hbFVyaTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX25h
dmlnYXRpb25fYWN0aW9uX3NldF9vcmlnaW5hbF91cmk6CisgKiBAbmF2aWdhdGlvbkFjdGlvbjog
YSAjV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbgorICogQG9yaWdpbmFsVXJpOiBhIFVSSQorICoK
KyAqIFNldHMgdGhlIFVSSSB0aGF0IHdhcyBvcmlnaW5hbGx5IHJlcXVlc3RlZC4gVGhpcyBtYXkg
ZGlmZmVyIGZyb20gdGhlCisgKiBuYXZpZ2F0aW9uIHRhcmdldCwgZm9yIGluc3RhbmNlIGJlY2F1
c2Ugb2YgYSByZWRpcmVjdC4KKyAqCisgKiBTaW5jZTogMS4wLjMKKyAqLwordm9pZCB3ZWJraXRf
d2ViX25hdmlnYXRpb25fYWN0aW9uX3NldF9vcmlnaW5hbF91cmkoV2ViS2l0V2ViTmF2aWdhdGlv
bkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgZ2NoYXIqIG9yaWdpbmFsVXJpKQorewor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9OQVZJR0FUSU9OX0FDVElPTihuYXZp
Z2F0aW9uQWN0aW9uKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChvcmlnaW5hbFVyaSk7CisKKyAg
ICBpZiAobmF2aWdhdGlvbkFjdGlvbi0+cHJpdi0+b3JpZ2luYWxVcmkgJiYKKyAgICAgICAgKCFz
dHJjbXAobmF2aWdhdGlvbkFjdGlvbi0+cHJpdi0+b3JpZ2luYWxVcmksIG9yaWdpbmFsVXJpKSkp
CisgICAgICAgIHJldHVybjsKKworICAgIGdfZnJlZShuYXZpZ2F0aW9uQWN0aW9uLT5wcml2LT5v
cmlnaW5hbFVyaSk7CisgICAgbmF2aWdhdGlvbkFjdGlvbi0+cHJpdi0+b3JpZ2luYWxVcmkgPSBn
X3N0cmR1cChvcmlnaW5hbFVyaSk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG5hdmln
YXRpb25BY3Rpb24pLCAib3JpZ2luYWwtdXJpIik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uaCBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44MzQ4OWRlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbi5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXRUJLSVRfV0VCX05BVklHQVRJ
T05fQUNUSU9OX0gKKyNkZWZpbmUgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX0FDVElPTl9ICisKKyNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPgorCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMu
aD4KKworR19CRUdJTl9ERUNMUworCisvKgorICogVGhlIG9yZGVyIG9mIHRoaXMgZW51bSBtdXN0
IGJlIHRoZSBzYW1lIGFzIE5hdmlnYXRpb25UeXBlIGluCisgKiBGcmFtZUxvYWRlclR5cGVzLmgK
KyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfV0VCX05BVklHQVRJT05fUkVBU09OX0xJ
TktfQ0xJQ0tFRCwKKyAgICBXRUJLSVRfV0VCX05BVklHQVRJT05fUkVBU09OX0ZPUk1fU1VCTUlU
VEVELAorICAgIFdFQktJVF9XRUJfTkFWSUdBVElPTl9SRUFTT05fQkFDS19GT1JXQVJELAorICAg
IFdFQktJVF9XRUJfTkFWSUdBVElPTl9SRUFTT05fUkVMT0FELAorICAgIFdFQktJVF9XRUJfTkFW
SUdBVElPTl9SRUFTT05fRk9STV9SRVNVQk1JVFRFRCwKKyAgICBXRUJLSVRfV0VCX05BVklHQVRJ
T05fUkVBU09OX09USEVSLAorfSBXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uOworCisjZGVmaW5l
IFdFQktJVF9UWVBFX1dFQl9OQVZJR0FUSU9OX0FDVElPTiAgICAgICAgICAgICh3ZWJraXRfd2Vi
X25hdmlnYXRpb25fYWN0aW9uX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfTkFWSUdB
VElPTl9BQ1RJT04ob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgo
b2JqKSwgV0VCS0lUX1RZUEVfV0VCX05BVklHQVRJT05fQUNUSU9OLCBXZWJLaXRXZWJOYXZpZ2F0
aW9uQWN0aW9uKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX0FDVElPTl9DTEFTUyhr
bGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIFdFQktJVF9UWVBFX1dF
Ql9OQVZJR0FUSU9OX0FDVElPTiwgV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbkNsYXNzKSkKKyNk
ZWZpbmUgV0VCS0lUX0lTX1dFQl9OQVZJR0FUSU9OX0FDVElPTihvYmopICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfTkFWSUdBVElPTl9B
Q1RJT04pKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX05BVklHQVRJT05fQUNUSU9OX0NMQVNTKGts
YXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgV0VCS0lUX1RZUEVfV0VCX05B
VklHQVRJT05fQUNUSU9OKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9OQVZJR0FUSU9OX0FDVElPTl9H
RVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksIFdFQktJVF9U
WVBFX1dFQl9OQVZJR0FUSU9OX0FDVElPTiwgV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbkNsYXNz
KSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24gV2ViS2l0V2Vi
TmF2aWdhdGlvbkFjdGlvbjsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJOYXZpZ2F0aW9uQWN0
aW9uQ2xhc3MgV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbkNsYXNzOwordHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb25Qcml2YXRlIFdlYktpdFdlYk5hdmlnYXRpb25BY3Rp
b25Qcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24geworICAgIEdP
YmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAgLyo8IHByaXZhdGUgPiovCisgICAgV2ViS2l0
V2ViTmF2aWdhdGlvbkFjdGlvblByaXZhdGUqIHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdl
Yk5hdmlnYXRpb25BY3Rpb25DbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsK
K307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0
X3R5cGUodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2ViTmF2aWdhdGlvblJlYXNvbgord2Vi
a2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcmVhc29uKFdlYktpdFdlYk5hdmlnYXRpb25B
Y3Rpb24qIG5hdmlnYXRpb25BY3Rpb24pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJf
bmF2aWdhdGlvbl9hY3Rpb25fc2V0X3JlYXNvbihXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uKiBu
YXZpZ2F0aW9uQWN0aW9uLCBXZWJLaXRXZWJOYXZpZ2F0aW9uUmVhc29uIHJlYXNvbik7CisKK1dF
QktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfd2ViX25hdmlnYXRpb25fYWN0aW9uX2dldF9v
cmlnaW5hbF91cmkoV2ViS2l0V2ViTmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbik7
CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9uYXZpZ2F0aW9uX2FjdGlvbl9zZXRfb3Jp
Z2luYWxfdXJpKFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24sIGNv
bnN0IGdjaGFyKiBvcmlnaW5hbFVyaSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMDYwNDYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHAKQEAgLTAsMCArMSwxMzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAid2Via2l0d2VicG9saWN5ZGVjaXNpb24uaCIKKworI2luY2x1ZGUg
IkZyYW1lTG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworZXh0ZXJuICJD
IiB7CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24sIHdlYmtpdF93ZWJf
cG9saWN5X2RlY2lzaW9uLCBHX1RZUEVfT0JKRUNUKTsKKworc3RydWN0IF9XZWJLaXRXZWJQb2xp
Y3lEZWNpc2lvblByaXZhdGUgeworICAgIFdlYktpdFdlYkZyYW1lKiBmcmFtZTsKKyAgICBGcmFt
ZVBvbGljeUZ1bmN0aW9uIGZyYW1lUG9saWN5RnVuY3Rpb247CisgICAgZ2Jvb2xlYW4gaXNDYW5j
ZWxsZWQ7Cit9OworCisjZGVmaW5lIFdFQktJVF9XRUJfUE9MSUNZX0RFQ0lTSU9OX0dFVF9QUklW
QVRFKG9iaikgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZ
UEVfV0VCX1BPTElDWV9ERUNJU0lPTiwgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKSkK
Kworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fY2xhc3NfaW5pdChXZWJL
aXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzKiBkZWNpc2lvbkNsYXNzKQoreworICAgIGdfdHlwZV9j
bGFzc19hZGRfcHJpdmF0ZShkZWNpc2lvbkNsYXNzLCBzaXplb2YoV2ViS2l0V2ViUG9saWN5RGVj
aXNpb25Qcml2YXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lz
aW9uX2luaXQoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQoreworICAgIGRlY2lz
aW9uLT5wcml2ID0gV0VCS0lUX1dFQl9QT0xJQ1lfREVDSVNJT05fR0VUX1BSSVZBVEUoZGVjaXNp
b24pOworfQorCitXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogd2Via2l0X3dlYl9wb2xpY3lfZGVj
aXNpb25fbmV3KFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5j
dGlvbiBmdW5jdGlvbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChmcmFtZSwgTlVMTCk7
CisKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24gPSBXRUJLSVRfV0VCX1BP
TElDWV9ERUNJU0lPTihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJU0lP
TiwgTlVMTCkpOworICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSogcHJpdiA9IGRl
Y2lzaW9uLT5wcml2OworCisgICAgcHJpdi0+ZnJhbWUgPSBmcmFtZTsKKyAgICBwcml2LT5mcmFt
ZVBvbGljeUZ1bmN0aW9uID0gZnVuY3Rpb247CisgICAgcHJpdi0+aXNDYW5jZWxsZWQgPSBGQUxT
RTsKKworICAgIHJldHVybiBkZWNpc2lvbjsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3BvbGlj
eV9kZWNpc2lvbl91c2UKKyAqIEBkZWNpc2lvbjogYSAjV2ViS2l0V2ViUG9saWN5RGVjaXNpb24K
KyAqCisgKiBXaWxsIHNlbmQgdGhlIFVTRSBkZWNpc2lvbiB0byB0aGUgcG9saWN5IGltcGxlbWVu
dGVyLgorICoKKyAqIFNpbmNlOiAxLjAuMworICovCit2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2Rl
Y2lzaW9uX3VzZShXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbikpOwor
CisgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24tPnBy
aXY7CisKKyAgICBpZiAoIXByaXYtPmlzQ2FuY2VsbGVkKQorICAgICAgICAoY29yZShwcml2LT5m
cmFtZSktPmxvYWRlcigpLT4qKHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24pKShXZWJDb3JlOjpQ
b2xpY3lVc2UpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2lnbm9y
ZQorICogQGRlY2lzaW9uOiBhICNXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbgorICoKKyAqIFdpbGwg
c2VuZCB0aGUgSUdOT1JFIGRlY2lzaW9uIHRvIHRoZSBwb2xpY3kgaW1wbGVtZW50ZXIuCisgKgor
ICogU2luY2U6IDEuMC4zCisgKi8KK3ZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25faWdu
b3JlKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7CisKKyAgICBX
ZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+cHJpdjsKKyAg
ICAKKyAgICBpZiAoIXByaXYtPmlzQ2FuY2VsbGVkKQorICAgICAgICAoY29yZShwcml2LT5mcmFt
ZSktPmxvYWRlcigpLT4qKHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24pKShXZWJDb3JlOjpQb2xp
Y3lJZ25vcmUpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Rvd25s
b2FkCisgKiBAZGVjaXNpb246IGEgI1dlYktpdFdlYlBvbGljeURlY2lzaW9uCisgKgorICogV2ls
bCBzZW5kIHRoZSBET1dOTE9BRCBkZWNpc2lvbiB0byB0aGUgcG9saWN5IGltcGxlbWVudGVyLgor
ICoKKyAqIFNpbmNlOiAxLjAuMworICovCit2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9u
X2Rvd25sb2FkKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7CisK
KyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+cHJp
djsKKworICAgIGdfd2FybmluZygiRG93bmxvYWQgaXMgbm90IHN1cHBvcnRlZCIpOworICAgIHdl
YmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2lnbm9yZShkZWNpc2lvbik7CisKKyAgICBpZiAoIXBy
aXYtPmlzQ2FuY2VsbGVkKQorICAgICAgICAoY29yZShwcml2LT5mcmFtZSktPmxvYWRlcigpLT4q
KHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24pKShXZWJDb3JlOjpQb2xpY3lEb3dubG9hZCk7Cit9
CisKK3ZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fY2FuY2VsKFdlYktpdFdlYlBvbGlj
eURlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7CisKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNp
c2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+cHJpdjsKKyAgICAKKyAgICBwcml2LT5pc0Nh
bmNlbGxlZCA9IFRSVUU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnBvbGljeWRlY2lzaW9uLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xp
Y3lkZWNpc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMzIyMjMK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNp
c2lvbi5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFi
b3JhIEx0ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2lmbmRlZiBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTl9ICisjZGVmaW5lIFdF
QktJVF9XRUJfUE9MSUNZX0RFQ0lTSU9OX0gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Cisj
aW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSAid2Via2l0ZGVmaW5lcy5oIgorCitHX0JFR0lO
X0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1BPTElDWV9ERUNJU0lPTiAgICAgICAg
ICAgICh3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJL
SVRfV0VCX1BPTElDWV9ERUNJU0lPTihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lTSU9OLCBXZWJLaXRX
ZWJQb2xpY3lEZWNpc2lvbikpCisjZGVmaW5lIFdFQktJVF9XRUJfUE9MSUNZX0RFQ0lTSU9OX0NM
QVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9U
WVBFX1dFQl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFdlYlBvbGljeURlY2lzaW9uQ2xhc3MpKQor
I2RlZmluZSBXRUJLSVRfSVNfV0VCX1BPTElDWV9ERUNJU0lPTihvYmopICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfUE9MSUNZX0RFQ0lT
SU9OKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9QT0xJQ1lfREVDSVNJT05fQ0xBU1Moa2xhc3Mp
IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1BPTElD
WV9ERUNJU0lPTikpCisjZGVmaW5lIFdFQktJVF9XRUJfUE9MSUNZX0RFQ0lTSU9OX0dFVF9DTEFT
UyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dF
Ql9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFdlYlBvbGljeURlY2lzaW9uQ2xhc3MpKQorCit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlIFdlYktpdFdlYlBvbGlj
eURlY2lzaW9uUHJpdmF0ZTsKK3N0cnVjdCBfV2ViS2l0V2ViUG9saWN5RGVjaXNpb24geworICAg
IEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAgLyo8IHByaXZhdGUgPiovCisgICAgV2Vi
S2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRX
ZWJQb2xpY3lEZWNpc2lvbkNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwor
fTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5
cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9u
X3VzZSAoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9pZ25vcmUgKFdlYktpdFdlYlBvbGljeURl
Y2lzaW9uKiBkZWNpc2lvbik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9wb2xpY3lf
ZGVjaXNpb25fZG93bmxvYWQgKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbik7CisK
K0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRl
eCA1MTU1NDk2Li5lZjVjY2FkIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAid2Via2l0d2Vi
dmlldy5oIgorI2luY2x1ZGUgIndlYmtpdGVudW10eXBlcy5oIgogI2luY2x1ZGUgIndlYmtpdG1h
cnNoYWwuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vi
aW5zcGVjdG9yLmgiCkBAIC03NSw2ICs3Niw4IEBAIGV4dGVybiAiQyIgewogZW51bSB7CiAgICAg
Lyogbm9ybWFsIHNpZ25hbHMgKi8KICAgICBOQVZJR0FUSU9OX1JFUVVFU1RFRCwKKyAgICBOQVZJ
R0FUSU9OX1BPTElDWV9ERUNJU0lPTl9SRVFVRVNURUQsCisgICAgTUlNRV9UWVBFX1BPTElDWV9E
RUNJU0lPTl9SRVFVRVNURUQsCiAgICAgQ1JFQVRFX1dFQl9WSUVXLAogICAgIFdFQl9WSUVXX1JF
QURZLAogICAgIFdJTkRPV19PQkpFQ1RfQ0xFQVJFRCwKQEAgLTYzMSw5ICs2MzQsOCBAQCBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfd2ViX3ZpZXdfcmVhZHkoV2ViS2l0V2Vi
VmlldyopCiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgV2ViS2l0TmF2aWdhdGlvblJl
c3BvbnNlIHdlYmtpdF93ZWJfdmlld19yZWFsX25hdmlnYXRpb25fcmVxdWVzdGVkKFdlYktpdFdl
YlZpZXcqLCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KikKK3N0
YXRpYyBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2Ugd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdh
dGlvbl9yZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYkZyYW1lKiwgV2ViS2l0TmV0
d29ya1JlcXVlc3QqKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFdFQktJ
VF9OQVZJR0FUSU9OX1JFU1BPTlNFX0FDQ0VQVDsKIH0KIApAQCAtODExLDEwICs4MTMsMTAgQEAg
c3RhdGljIGdib29sZWFuIHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkKEdT
aWduYWxJbnZvY2F0aW9uSGludCogaWgKIAogc3RhdGljIGdib29sZWFuIHdlYmtpdF9uYXZpZ2F0
aW9uX3JlcXVlc3RfaGFuZGxlZChHU2lnbmFsSW52b2NhdGlvbkhpbnQqIGloaW50LCBHVmFsdWUq
IHJldHVybkFjY3UsIGNvbnN0IEdWYWx1ZSogaGFuZGxlclJldHVybiwgZ3BvaW50ZXIgZHVtbXkp
CiB7Ci0gICAgaW50IHNpZ25hbEhhbmRsZWQgPSBnX3ZhbHVlX2dldF9pbnQoaGFuZGxlclJldHVy
bik7Ci0gICAgZ192YWx1ZV9zZXRfaW50KHJldHVybkFjY3UsIHNpZ25hbEhhbmRsZWQpOworICAg
IFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSBuYXZpZ2F0aW9uUmVzcG9uc2UgPSAoV2ViS2l0TmF2
aWdhdGlvblJlc3BvbnNlKWdfdmFsdWVfZ2V0X2VudW0oaGFuZGxlclJldHVybik7CisgICAgZ192
YWx1ZV9zZXRfZW51bShyZXR1cm5BY2N1LCBuYXZpZ2F0aW9uUmVzcG9uc2UpOwogCi0gICAgaWYg
KHNpZ25hbEhhbmRsZWQgIT0gV0VCS0lUX05BVklHQVRJT05fUkVTUE9OU0VfQUNDRVBUKQorICAg
IGlmIChuYXZpZ2F0aW9uUmVzcG9uc2UgIT0gV0VCS0lUX05BVklHQVRJT05fUkVTUE9OU0VfQUND
RVBUKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICByZXR1cm4gVFJVRTsKQEAgLTkwNywx
NiArOTA5LDg4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktp
dFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgd2Via2l0X21hcnNoYWxf
Qk9PTEVBTl9fVk9JRCwKICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAwKTsKIAorICAgIC8q
KgorICAgICAqIFdlYktpdFdlYlZpZXc6Om5hdmlnYXRpb24tcmVxdWVzdGVkOgorICAgICAqIEB3
ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAg
KiBAZnJhbWU6IHRoZSAjV2ViS2l0V2ViRnJhbWUgdGhhdCByZXF1aXJlZCB0aGUgbmF2aWdhdGlv
bgorICAgICAqIEByZXF1ZXN0OiBhICNXZWJLaXROZXR3b3JrUmVxdWVzdAorICAgICAqIEByZXR1
cm46IGEgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdo
ZW4gQGZyYW1lIHJlcXVlc3RzIGEgbmF2aWdhdGlvbiB0byBhbm90aGVyIHBhZ2UuCisgICAgICoK
KyAgICAgKiBEZXByZWNhdGVkOiBVc2UgV2ViS2l0V2ViVmlldzo6bmF2aWdhdGlvbi1wb2xpY3kt
ZGVjaXNpb24tcmVxdWVzdGVkCisgICAgICogaW5zdGVhZAorICAgICAqLwogICAgIHdlYmtpdF93
ZWJfdmlld19zaWduYWxzW05BVklHQVRJT05fUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygibmF2
aWdhdGlvbi1yZXF1ZXN0ZWQiLAogICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmll
d0NsYXNzKSwKICAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwg
R19TSUdOQUxfQUNUSU9OKSwKICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVCAoV2ViS2l0V2Vi
Vmlld0NsYXNzLCBuYXZpZ2F0aW9uX3JlcXVlc3RlZCksCiAgICAgICAgICAgICB3ZWJraXRfbmF2
aWdhdGlvbl9yZXF1ZXN0X2hhbmRsZWQsCiAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAg
d2Via2l0X21hcnNoYWxfSU5UX19PQkpFQ1RfT0JKRUNULAotICAgICAgICAgICAgR19UWVBFX0lO
VCwgMiwKLSAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsCi0gICAgICAgICAgICBHX1RZUEVfT0JK
RUNUKTsKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0VOVU1fX09CSkVDVF9PQkpFQ1QsCisg
ICAgICAgICAgICBXRUJLSVRfVFlQRV9OQVZJR0FUSU9OX1JFU1BPTlNFLCAyLAorICAgICAgICAg
ICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfTkVUV09S
S19SRVFVRVNUKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Om5hdmlnYXRpb24t
cG9saWN5LWRlY2lzaW9uLXJlcXVlc3RlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qg
b24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQGZyYW1lOiB0aGUgI1dlYktp
dFdlYkZyYW1lIHRoYXQgcmVxdWlyZWQgdGhlIG5hdmlnYXRpb24KKyAgICAgKiBAcmVxdWVzdDog
YSAjV2ViS2l0TmV0d29ya1JlcXVlc3QKKyAgICAgKiBAbmF2aWdhdGlvbl9hY3Rpb246IGEgI1dl
YktpdFdlYk5hdmlnYXRpb24KKyAgICAgKiBAcG9saWN5X2RlY2lzaW9uOiBhICNXZWJLaXRXZWJQ
b2xpY3lEZWNpc2lvbgorICAgICAqIEByZXR1cm46IFRSVUUgaWYgdGhlIHNpZ25hbCB3aWxsIGJl
IGhhbmRsZWQsIEZBTFNFIHRvIGhhdmUgdGhlCisgICAgICogICAgICAgICAgZGVmYXVsdCBiZWhh
dmlvciBhcHBseQorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIEBmcmFtZSByZXF1ZXN0cyBh
IG5hdmlnYXRpb24gdG8gYW5vdGhlciBwYWdlLgorICAgICAqIElmIHRoaXMgc2lnbmFsIGlzIG5v
dCBoYW5kbGVkLCB0aGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBhbGxvdyB0aGUKKyAgICAgKiBu
YXZpZ2F0aW9uLgorICAgICAqCisgICAgICogU2luY2U6IDEuMC4zCisgICAgICovCisgICAgd2Vi
a2l0X3dlYl92aWV3X3NpZ25hbHNbTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT05fUkVRVUVTVEVE
XSA9IGdfc2lnbmFsX25ldygibmF2aWdhdGlvbi1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkIiwK
KyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAg
ICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisg
ICAgICAgICAgICAwLAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5k
bGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xF
QU5fX09CSkVDVF9PQkpFQ1RfT0JKRUNUX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9CT09M
RUFOLCA0LAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLAorICAgICAgICAgICAg
V0VCS0lUX1RZUEVfTkVUV09SS19SRVFVRVNULAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VC
X05BVklHQVRJT05fQUNUSU9OLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1BPTElDWV9E
RUNJU0lPTik7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjptaW1lLXR5cGUtcG9s
aWN5LWRlY2lzaW9uLXJlcXVlc3RlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24g
d2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQGZyYW1lOiB0aGUgI1dlYktpdFdl
YkZyYW1lIHRoYXQgcmVxdWlyZWQgdGhlIHBvbGljeSBkZWNpc2lvbgorICAgICAqIEByZXF1ZXN0
OiBhIFdlYktpdE5ldHdvcmtSZXF1ZXN0CisgICAgICogQG1pbWV0eXBlOiB0aGUgTUlNRSB0eXBl
IGF0dGVtcHRlZCB0byBsb2FkCisgICAgICogQHBvbGljeV9kZWNpc2lvbjogYSAjV2ViS2l0V2Vi
UG9saWN5RGVjaXNpb24KKyAgICAgKiBAcmV0dXJuOiBUUlVFIGlmIHRoZSBzaWduYWwgd2lsbCBi
ZSBoYW5kbGVkLCBGQUxTRSB0byBoYXZlIHRoZQorICAgICAqICAgICAgICAgIGRlZmF1bHQgYmVo
YXZpb3IgYXBwbHkKKyAgICAgKgorICAgICAqIERlY2lkZSB3aGV0aGVyIG9yIG5vdCB0byBkaXNw
bGF5IHRoZSBnaXZlbiBNSU1FIHR5cGUuICBJZiB0aGlzCisgICAgICogc2lnbmFsIGlzIG5vdCBo
YW5kbGVkLCB0aGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBzaG93IHRoZQorICAgICAqIGNvbnRl
bnQgb2YgdGhlIHJlcXVlc3RlZCBVUkkgaWYgV2ViS2l0IGNhbiBzaG93IHRoaXMgTUlNRQorICAg
ICAqIHR5cGU7IGlmIFdlYktpdCBpcyBub3QgYWJsZSB0byBzaG93IHRoZSBNSU1FIHR5cGUgbm90
aGluZworICAgICAqIGhhcHBlbnMuCisgICAgICoKKyAgICAgKiBTaW5jZTogMS4wLjMKKyAgICAg
Ki8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tNSU1FX1RZUEVfUE9MSUNZX0RFQ0lTSU9O
X1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoIm1pbWUtdHlwZS1wb2xpY3ktZGVjaXNpb24tcmVx
dWVzdGVkIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisg
ICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FD
VElPTiksCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3Jf
dHJ1ZV9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJz
aGFsX0JPT0xFQU5fX09CSkVDVF9PQkpFQ1RfU1RSSU5HX09CSkVDVCwKKyAgICAgICAgICAgIEdf
VFlQRV9CT09MRUFOLCA0LAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLAorICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfTkVUV09SS19SRVFVRVNULAorICAgICAgICAgICAgR19UWVBF
X1NUUklORywKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9QT0xJQ1lfREVDSVNJT04pOwog
CiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6d2luZG93LW9iamVjdC1jbGVhcmVkOgpA
QCAtMjMxNSw2ICsyMzg5LDI5IEBAIEd0a1RhcmdldExpc3QqIHdlYmtpdF93ZWJfdmlld19nZXRf
cGFzdGVfdGFyZ2V0X2xpc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIH0KIAogLyoqCisgKiB3
ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlOgorICogQHdlYl92aWV3OiBhICNXZWJL
aXRXZWJWaWV3CisgKiBAbWltZV90eXBlOiBhIE1JTUUgdHlwZQorICoKKyAqIFRoaXMgZnVuY3Rp
b25zIHJldHVybnMgd2hldGhlciBvciBub3QgYSBNSU1FIHR5cGUgY2FuIGJlIGRpc3BsYXllZCB1
c2luZyB0aGlzIHZpZXcuCisgKgorICogUmV0dXJuIHZhbHVlOiBhICNnYm9vbGVhbiBpbmRpY2F0
aW5nIGlmIHRoZSBNSU1FIHR5cGUgY2FuIGJlIGRpc3BsYXllZAorICoKKyAqIFNpbmNlOiAxLjAu
MworICoqLworCitnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlIChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogbWltZVR5cGUpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7Cisg
ICAgCisgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJh
bWUod2ViVmlldykpOworICAgIGlmIChGcmFtZUxvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRl
cigpKQorICAgICAgICByZXR1cm4gbG9hZGVyLT5jYW5TaG93TUlNRVR5cGUobWltZVR5cGUpOwor
ICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEZBTFNFOworfQorCisvKioKICAqIHdlYmtpdF93ZWJf
dmlld19nZXRfdHJhbnNwYXJlbnQ6CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAq
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmggYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggZDRkMTcwZS4uZDczNzY1OCAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxhYm9yYSBMdGQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTcxLDkgKzcyLDYgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogCiAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAg
ICAgKCogd2ViX3ZpZXdfcmVhZHkpICAgICAgICAgIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7
CiAKLSAgICAvKgotICAgICAqIFRPRE86IEZJWE1FOiBDcmVhdGUgc29tZXRoaW5nIGxpa2UgV2Vi
UG9saWN5RGVjaXNpb25MaXN0ZW5lcl9Qcm90b2NvbCBpbnN0ZWFkCi0gICAgICovCiAgICAgV2Vi
S2l0TmF2aWdhdGlvblJlc3BvbnNlICAgKCogbmF2aWdhdGlvbl9yZXF1ZXN0ZWQpICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViRnJhbWUgICAgICAgKmZyYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXROZXR3b3JrUmVxdWVzdCAqcmVxdWVzdCk7CkBAIC0yNTYsNiArMjU0LDEwIEBA
IFdFQktJVF9BUEkgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3dpbmRvd19mZWF0dXJlcyAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92
aWV3KTsKIAogV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21p
bWVfdHlwZSAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciAgICAgICAgICAqbWltZV90eXBlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dl
Yl92aWV3X2dldF90cmFuc3BhcmVudCAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICp3ZWJfdmlldyk7CiAKIFdFQktJVF9BUEkgdm9pZAo=
</data>
<flag name="review"
          id="12350"
          type_id="1"
          status="+"
          setter="zecke"
    />
          </attachment>
      

    </bug>

</bugzilla>