<?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>17065</bug_id>
          
          <creation_ts>2008-01-29 07:18:52 -0800</creation_ts>
          <short_desc>[GTK] Use a consistent coding style</short_desc>
          <delta_ts>2008-02-04 17:45:59 -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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Christian Dywan">christian</reporter>
          <assigned_to name="Christian Dywan">christian</assigned_to>
          <cc>alp</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>68577</commentid>
    <comment_count>0</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-01-29 07:18:52 -0800</bug_when>
    <thetext>The way sources are formatted is still very inconsistent, regarding naming, structure and doing the same task in different ways.

This patch attempts to introduce a throughout convention that we can agree upon for future contributions. Further more by avoiding superfluous typechecks code becomes more efficient.

Some of the changes are:
1. Defining all gobject types in webkitdefines.h.
2. Using &apos;priv&apos; as the name of the private structure and using -&gt;priv throughout the source without a FOO_GET_PRIVATE macro.
3. Renaming WebKitWebFramePrivate-&gt;frame to &apos;coreFrame&apos;.
4. Preferring private members over public api.

There are no api or functional changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68578</commentid>
    <comment_count>1</comment_count>
      <attachid>18762</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-01-29 07:20:34 -0800</bug_when>
    <thetext>Created attachment 18762
Apply consistent coding style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68579</commentid>
    <comment_count>2</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-01-29 07:25:13 -0800</bug_when>
    <thetext>Incidentally this should *not* be confused with bug 16676. WebKit coding style is kept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68863</commentid>
    <comment_count>3</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-01-30 15:57:47 -0800</bug_when>
    <thetext>-        g_value_set_string(value, webkit_web_frame_get_name(frame));
+        g_value_set_string(value, priv-&gt;name);

I&apos;d like to keep the property implementations as abstracted/simple as possible, always wrapping a function, so that we don&apos;t have to keep the implementations up to date in two places. So I think this particular change is is a step backwards.


The core()/kit() removal is an interesting proposal. core()/kit() are quite convenient and they give us the opportunity to refactor the implementation without lots of search and replace. You could argue that force an unnatural one-to-one mapping of WebKitWebView -&gt; WebCore::Page though. Unless there is a good case for the change, I&apos;m not sure it&apos;s worth doing right now, especially core()/kit() for WebKitWebFrame which is a one-to-one with WebCore.

Renaming all private locals to &quot;priv&quot; seems a good move.


-    Frame* frame = core(webkit_web_view_get_main_frame(WEBKIT_WEB_VIEW(widget)));
+    WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+    WebKitWebViewPrivate* priv = webView-&gt;priv;
+
+    Frame* frame = priv-&gt;corePage-&gt;mainFrame();


^ In cases like this, there&apos;s a question of whether we want to dogfood our own public API or use WebCore in the porting layer. We need to weigh this up.


Changes like this look OK:

 struct _WebKitWebFrameClass {
-    GObjectClass parent;
+    GObjectClass parent_class;


The doc changes look fine.

This comment isn&apos;t worthwhile:

+    // FIXME: DeprecatedString is deprecated


I&apos;d like to get a little bit of discussion about these cleanups going. If you want you can propose a smaller patch the most obvious changes in the meantime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68864</commentid>
    <comment_count>4</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-01-30 16:02:58 -0800</bug_when>
    <thetext>This change may also break a few feature patches various people are working on that haven&apos;t landed yet. This shouldn&apos;t blocker code cleanup patches like this, but we need to be sure the cleanups are genuinely an improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69092</commentid>
    <comment_count>5</comment_count>
      <attachid>18851</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-02-01 13:30:33 -0800</bug_when>
    <thetext>Created attachment 18851
Updated patch

Properties using public api again.

Reintroducing core() and kit(), to be used consistently. Their implementations now uses -&gt;priv directly for efficiency.

Keeping changes to prefer WebCore internals over dogfood for efficiency.
&gt; Frame* frame = priv-&gt;corePage-&gt;mainFrame();
has become
&gt; Frame* frame = core(webView)-&gt;mainFrame();
due to the above change. I think this is a nice compromise in terms of readability. If we use this consistently it should be pretty intuitive even to newcomers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69136</commentid>
    <comment_count>6</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-02-01 16:42:07 -0800</bug_when>
    <thetext>This comment is wrong:

  * Checks whether the view can go back to the previous page
  *
+ * @Deprecated: Use webkit_web_view_go_back() instead.
+ *
  * Return value: %TRUE if the page can go back, otherwise returns %FALSE
  */
 gboolean webkit_web_view_can_go_backward(WebKitWebView* webView)


Is it conventional to use -&gt;priv instead of WEBKIT_WEB_VIEW_GET_PRIVATE()/G_TYPE_INSTANCE_GET_PRIVATE() in GObject code? What are your reasons for accessing the struct directly?



I was trying to explain earlier that I&apos;m not convinced we should encourage a one-to-one mapping of WebCore::Page to/from WebKitWebView, as changes like this do:

-    WebKitWebViewPrivate* webViewData = WEBKIT_WEB_VIEW_GET_PRIVATE(webView);
-    return !webViewData-&gt;corePage-&gt;selection().isNone();
+    return !core(webView)-&gt;selection().isNone();

So the question is whether core(webView) returning a corePage is sensible or bogus. I guess if other ports do it this way (I think they do) there may be sense in it, so it may be OK. Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69225</commentid>
    <comment_count>7</comment_count>
      <attachid>18879</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-02-02 22:41:09 -0800</bug_when>
    <thetext>Created attachment 18879
Updated again

&gt; Is it conventional to use -&gt;priv instead of
&gt; WEBKIT_WEB_VIEW_GET_PRIVATE()/G_TYPE_INSTANCE_GET_PRIVATE() in GObject
&gt; code? What are your reasons for accessing the struct directly?

Yes, it is conventional in &apos;modern&apos; code (you can&apos;t change old gtk code for the sake of ABI). The reason is simply efficiency: choose directly using pointers versus retrieving data dynamically through type safety checks. We *know* what that pointer is, we defined it. So type checks that tend to be slow are superfluous.
Incidentally that&apos;s the reason for not using &quot;g_return_if_fail(FOO_IS_BAR(bar))&quot; in static functions.

&gt; So the question is whether core(webView) returning a corePage is sensible
&gt; or bogus. I guess if other ports do it this way (I think they do) there may
&gt; be sense in it, so it may be OK. Thoughts?

The core/ kit mapping is somewhat unusual &apos;magic&apos;. In fact I would rather tend to remove it for the slightest doubts, since there is *no* one-to-one mapping in every case and keeping it only for part of the classes would be confusing. *If* we use them we really need to do it throughout.
In case of doubt, the most import thing is to either use it or not. If nobody speaks up about this, we really need to use it consistently instead of keeping the current mixture even if there are doubts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69292</commentid>
    <comment_count>8</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-02-03 18:05:51 -0800</bug_when>
    <thetext>I spoke with mjs and he&apos;s convinced me that the kit/core mapping is good (apart from the naming, but we needn&apos;t change that now).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69416</commentid>
    <comment_count>9</comment_count>
      <attachid>18879</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-02-04 17:43:22 -0800</bug_when>
    <thetext>Comment on attachment 18879
Updated again

r=me

ChangeLog entry next time please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69417</commentid>
    <comment_count>10</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-02-04 17:45:59 -0800</bug_when>
    <thetext>Landed in r29985. I had to merge the patch manually in a few places, please take a look over the commit to make sure everything is in order.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18762</attachid>
            <date>2008-01-29 07:20:34 -0800</date>
            <delta_ts>2008-02-01 13:30:33 -0800</delta_ts>
            <desc>Apply consistent coding style</desc>
            <filename>consistency.diff</filename>
            <type>text/plain</type>
            <size>73671</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJmcmFtZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHdlYmZyYW1lLmNwcAkoUmV2aXNpb24gMjk4NDQp
CisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2ViZnJhbWUuY3BwCShBcmJlaXRza29waWUp
CkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVy
IEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNv
bT4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQ2hyaXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTY5LDE2ICs3MCwxNyBAQCBHX0RFRklORV9UWVBFKFdlYktpdFdlYkZyYW1lLCB3
ZWJraXRfd2ViCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX2dldF9wcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBz
cGVjKQogewogICAgIFdlYktpdFdlYkZyYW1lKiBmcmFtZSA9IFdFQktJVF9XRUJfRlJBTUUob2Jq
ZWN0KTsKKyAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHByaXYgPSBmcmFtZS0+cHJpdjsKIAog
ICAgIHN3aXRjaChwcm9wX2lkKSB7CiAgICAgY2FzZSBQUk9QX05BTUU6Ci0gICAgICAgIGdfdmFs
dWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYl9mcmFtZV9nZXRfbmFtZShmcmFtZSkpOwor
ICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPm5hbWUpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFBST1BfVElUTEU6Ci0gICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2
YWx1ZSwgd2Via2l0X3dlYl9mcmFtZV9nZXRfdGl0bGUoZnJhbWUpKTsKKyAgICAgICAgZ192YWx1
ZV9zZXRfc3RyaW5nKHZhbHVlLCBwcml2LT50aXRsZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgUFJPUF9VUkk6Ci0gICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dl
Yl9mcmFtZV9nZXRfdXJpKGZyYW1lKSk7CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1
ZSwgcHJpdi0+dXJpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwpA
QCAtODgsMTIgKzkwLDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3Byb3Bl
cnQKIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9maW5hbGl6ZShHT2JqZWN0KiBvYmpl
Y3QpCiB7Ci0gICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9X
RUJfRlJBTUVfR0VUX1BSSVZBVEUoV0VCS0lUX1dFQl9GUkFNRShvYmplY3QpKTsKLSAgICBwcml2
YXRlRGF0YS0+ZnJhbWUtPmxvYWRlcigpLT5jYW5jZWxBbmRDbGVhcigpOwotICAgIGdfZnJlZShw
cml2YXRlRGF0YS0+bmFtZSk7Ci0gICAgZ19mcmVlKHByaXZhdGVEYXRhLT50aXRsZSk7Ci0gICAg
Z19mcmVlKHByaXZhdGVEYXRhLT51cmkpOwotICAgIGRlbGV0ZSBwcml2YXRlRGF0YS0+ZnJhbWU7
CisgICAgV2ViS2l0V2ViRnJhbWUqIGZyYW1lID0gV0VCS0lUX1dFQl9GUkFNRShvYmplY3QpOwor
ICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OworCisgICAgcHJp
di0+Y29yZUZyYW1lLT5sb2FkZXIoKS0+Y2FuY2VsQW5kQ2xlYXIoKTsKKyAgICBnX2ZyZWUocHJp
di0+bmFtZSk7CisgICAgZ19mcmVlKHByaXYtPnRpdGxlKTsKKyAgICBnX2ZyZWUocHJpdi0+dXJp
KTsKKyAgICBkZWxldGUgcHJpdi0+Y29yZUZyYW1lOwogCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X3dlYl9mcmFtZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQpAQCAtMTAy
LDggKzEwNiw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfY2xhc3NfaW5pdCgKIHsK
ICAgICB3ZWJraXRfaW5pdCgpOwogCi0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGZyYW1l
Q2xhc3MsIHNpemVvZihXZWJLaXRXZWJGcmFtZVByaXZhdGUpKTsKLQogICAgIC8qCiAgICAgICog
c2lnbmFscwogICAgICAqLwpAQCAtMTg1LDExICsxODcsMTYgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl9mcmFtZV9jbGFzc19pbml0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGN1cnJlbnQgVVJJIG9mIHRoZSBjb250ZW50cyBk
aXNwbGF5ZWQgYnkgdGhlIGZyYW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisK
KyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZnJhbWVDbGFzcywgc2l6ZW9mKFdlYktpdFdl
YkZyYW1lUHJpdmF0ZSkpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX2luaXQo
V2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogeworICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJp
diA9IFdFQktJVF9XRUJfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOworCiAgICAgLy8gVE9ETzog
TW92ZSBjb25zdHJ1Y3RvciBjb2RlIGhlcmUuCisgICAgZnJhbWUtPnByaXYgPSBwcml2OwogfQog
CiAvKioKQEAgLTIwNSwyMiArMjEyLDE5IEBAIFdlYktpdFdlYkZyYW1lKiB3ZWJraXRfd2ViX2Zy
YW1lX25ldyhXZWIKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVco
d2ViVmlldyksIE5VTEwpOwogCiAgICAgV2ViS2l0V2ViRnJhbWUqIGZyYW1lID0gV0VCS0lUX1dF
Ql9GUkFNRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLCBOVUxMKSk7Ci0gICAg
V2ViS2l0V2ViRnJhbWVQcml2YXRlKiBmcmFtZURhdGEgPSBXRUJLSVRfV0VCX0ZSQU1FX0dFVF9Q
UklWQVRFKGZyYW1lKTsKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBX
RUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7CisgICAgV2ViS2l0V2ViRnJhbWVQ
cml2YXRlKiBwcml2ID0gZnJhbWUtPnByaXY7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHZp
ZXdQcml2ID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwogCi0gICAgZnJh
bWVEYXRhLT5jbGllbnQgPSBuZXcgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudChmcmFtZSk7Ci0g
ICAgZnJhbWVEYXRhLT5mcmFtZSA9IG5ldyBGcmFtZSh3ZWJWaWV3RGF0YS0+Y29yZVBhZ2UsIDAs
IGZyYW1lRGF0YS0+Y2xpZW50KTsKKyAgICBwcml2LT5jbGllbnQgPSBuZXcgV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudChmcmFtZSk7CisgICAgcHJpdi0+Y29yZUZyYW1lID0gbmV3IEZyYW1lKHZp
ZXdQcml2LT5jb3JlUGFnZSwgMCwgcHJpdi0+Y2xpZW50KTsKIAotICAgIEZyYW1lVmlldyogZnJh
bWVWaWV3ID0gbmV3IEZyYW1lVmlldyhmcmFtZURhdGEtPmZyYW1lKTsKKyAgICBGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IG5ldyBGcmFtZVZpZXcocHJpdi0+Y29yZUZyYW1lKTsKICAgICBmcmFtZVZp
ZXctPnNldENvbnRhaW5pbmdXaW5kb3coR1RLX0NPTlRBSU5FUih3ZWJWaWV3KSk7CiAgICAgZnJh
bWVWaWV3LT5zZXRHdGtBZGp1c3RtZW50cyhHVEtfQURKVVNUTUVOVChndGtfYWRqdXN0bWVudF9u
ZXcoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR1RLX0FESlVTVE1FTlQoZ3RrX2FkanVzdG1lbnRfbmV3KDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjApKSk7Ci0gICAgZnJhbWVEYXRhLT5mcmFtZS0+c2V0VmlldyhmcmFt
ZVZpZXcpOwotICAgIGZyYW1lRGF0YS0+ZnJhbWUtPmluaXQoKTsKLSAgICBmcmFtZURhdGEtPndl
YlZpZXcgPSB3ZWJWaWV3OwotICAgIGZyYW1lRGF0YS0+bmFtZSA9IDA7Ci0gICAgZnJhbWVEYXRh
LT50aXRsZSA9IDA7Ci0gICAgZnJhbWVEYXRhLT51cmkgPSAwOworICAgIHByaXYtPmNvcmVGcmFt
ZS0+c2V0VmlldyhmcmFtZVZpZXcpOworICAgIHByaXYtPmNvcmVGcmFtZS0+aW5pdCgpOworICAg
IHByaXYtPndlYlZpZXcgPSB3ZWJWaWV3OwogCiAgICAgcmV0dXJuIGZyYW1lOwogfQpAQCAtMjI4
LDE4ICsyMzIsMTggQEAgV2ViS2l0V2ViRnJhbWUqIHdlYmtpdF93ZWJfZnJhbWVfbmV3KFdlYgog
V2ViS2l0V2ViRnJhbWUqIHdlYmtpdF93ZWJfZnJhbWVfaW5pdF93aXRoX3dlYl92aWV3KFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogZWxlbWVudCkKIHsKICAg
ICBXZWJLaXRXZWJGcmFtZSogZnJhbWUgPSBXRUJLSVRfV0VCX0ZSQU1FKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9XRUJfRlJBTUUsIE5VTEwpKTsKLSAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUq
IGZyYW1lRGF0YSA9IFdFQktJVF9XRUJfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOwotICAgIFdl
YktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJ
VkFURSh3ZWJWaWV3KTsKKyAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHByaXYgPSBmcmFtZS0+
cHJpdjsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogdmlld1ByaXYgPSBXRUJLSVRfV0VCX1ZJ
RVdfR0VUX1BSSVZBVEUod2ViVmlldyk7CiAKLSAgICBmcmFtZURhdGEtPmNsaWVudCA9IG5ldyBX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lKTsKLSAgICBmcmFtZURhdGEtPmZyYW1lID0g
bmV3IEZyYW1lKHdlYlZpZXdEYXRhLT5jb3JlUGFnZSwgZWxlbWVudCwgZnJhbWVEYXRhLT5jbGll
bnQpOworICAgIHByaXYtPmNsaWVudCA9IG5ldyBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50KGZy
YW1lKTsKKyAgICBwcml2LT5jb3JlRnJhbWUgPSBuZXcgRnJhbWUodmlld1ByaXYtPmNvcmVQYWdl
LCBlbGVtZW50LCBwcml2LT5jbGllbnQpOwogCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBu
ZXcgRnJhbWVWaWV3KGZyYW1lRGF0YS0+ZnJhbWUpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gbmV3IEZyYW1lVmlldyhwcml2LT5jb3JlRnJhbWUpOwogICAgIGZyYW1lVmlldy0+c2V0Q29u
dGFpbmluZ1dpbmRvdyhHVEtfQ09OVEFJTkVSKHdlYlZpZXcpKTsKLSAgICBmcmFtZURhdGEtPmZy
YW1lLT5zZXRWaWV3KGZyYW1lVmlldyk7CisgICAgcHJpdi0+Y29yZUZyYW1lLT5zZXRWaWV3KGZy
YW1lVmlldyk7CiAgICAgZnJhbWVWaWV3LT5kZXJlZigpOwotICAgIGZyYW1lRGF0YS0+ZnJhbWUt
PmluaXQoKTsKLSAgICBmcmFtZURhdGEtPndlYlZpZXcgPSB3ZWJWaWV3OworICAgIHByaXYtPmNv
cmVGcmFtZS0+aW5pdCgpOworICAgIHByaXYtPndlYlZpZXcgPSB3ZWJWaWV3OwogCiAgICAgcmV0
dXJuIGZyYW1lOwogfQpAQCAtMjU2LDggKzI2MCw4IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vi
X2ZyYW1lX2dldF90aXRsZSgKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
V0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7CiAKLSAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIGZy
YW1lRGF0YSA9IFdFQktJVF9XRUJfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOwotICAgIHJldHVy
biBmcmFtZURhdGEtPnRpdGxlOworICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZy
YW1lLT5wcml2OworICAgIHJldHVybiBwcml2LT50aXRsZTsKIH0KIAogLyoqCkBAIC0yNzIsOCAr
Mjc2LDggQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3VyaShXZQogewogICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsK
IAotICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogZnJhbWVEYXRhID0gV0VCS0lUX1dFQl9GUkFN
RV9HRVRfUFJJVkFURShmcmFtZSk7Ci0gICAgcmV0dXJuIGZyYW1lRGF0YS0+dXJpOworICAgIFdl
YktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OworICAgIHJldHVybiBwcml2
LT51cmk7CiB9CiAKIC8qKgpAQCAtMjkxLDggKzI5NSw4IEBAIFdlYktpdFdlYlZpZXcqIHdlYmtp
dF93ZWJfZnJhbWVfZ2V0X3dlYl8KIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7CiAKLSAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUq
IGZyYW1lRGF0YSA9IFdFQktJVF9XRUJfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOwotICAgIHJl
dHVybiBmcmFtZURhdGEtPndlYlZpZXc7CisgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBwcml2
ID0gZnJhbWUtPnByaXY7CisgICAgcmV0dXJuIHByaXYtPndlYlZpZXc7CiB9CiAKIC8qKgpAQCAt
MzA3LDE4ICszMTEsMTcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X25hbWUo
VwogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUp
LCBOVUxMKTsKIAotICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogZnJhbWVEYXRhID0gV0VCS0lU
X1dFQl9GUkFNRV9HRVRfUFJJVkFURShmcmFtZSk7CisgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRl
KiBwcml2ID0gZnJhbWUtPnByaXY7CiAKLSAgICBpZiAoZnJhbWVEYXRhLT5uYW1lKQotICAgICAg
ICByZXR1cm4gZnJhbWVEYXRhLT5uYW1lOworICAgIGlmIChwcml2LT5uYW1lKQorICAgICAgICBy
ZXR1cm4gcHJpdi0+bmFtZTsKIAotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsK
KyAgICBGcmFtZSogY29yZUZyYW1lID0gcHJpdi0+Y29yZUZyYW1lOwogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGNvcmVGcmFtZSwgTlVMTCk7CiAKICAgICBTdHJpbmcgc3RyaW5nID0gY29yZUZy
YW1lLT50cmVlKCktPm5hbWUoKTsKLSAgICBmcmFtZURhdGEtPm5hbWUgPSBnX3N0cmR1cChzdHJp
bmcudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICByZXR1cm4gZnJhbWVEYXRhLT5uYW1lOworICAgIHBy
aXYtPm5hbWUgPSBnX3N0cmR1cChzdHJpbmcudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIHBy
aXYtPm5hbWU7CiB9CiAKIC8qKgpAQCAtMzMzLDcgKzMzNiw5IEBAIFdlYktpdFdlYkZyYW1lKiB3
ZWJraXRfd2ViX2ZyYW1lX2dldF9wYXIKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7CiAKLSAgICBGcmFtZSogY29yZUZyYW1lID0g
Y29yZShmcmFtZSk7CisgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBwcml2ID0gZnJhbWUtPnBy
aXY7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gcHJpdi0+Y29yZUZyYW1lOwogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKGNvcmVGcmFtZSwgTlVMTCk7CiAKICAgICByZXR1cm4ga2l0KGNvcmVG
cmFtZS0+dHJlZSgpLT5wYXJlbnQoKSk7CkBAIC0zNTUsMTAgKzM2MCwxMyBAQCB2b2lkIHdlYmtp
dF93ZWJfZnJhbWVfbG9hZF9yZXF1ZXN0KFdlYktpCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
TkVUV09SS19SRVFVRVNUKHJlcXVlc3QpKTsKIAotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KGZyYW1lKTsKKyAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHByaXYgPSBmcmFtZS0+cHJpdjsK
KworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBwcml2LT5jb3JlRnJhbWU7CiAgICAgZ19yZXR1cm5f
aWZfZmFpbChjb3JlRnJhbWUpOwogCi0gICAgLy8gVE9ETzogVXNlIHRoZSBSZXNvdXJjZVJlcXVl
c3QgY2FycmllZCBieSBXZWJLaXROZXR3b3JrUmVxdWVzdCB3aGVuIGl0IGdldHMgaW1wbGVtZW50
ZWQuCisgICAgLy8gVE9ETzogVXNlIHRoZSBSZXNvdXJjZVJlcXVlc3QgY2FycmllZCBieSBXZWJL
aXROZXR3b3JrUmVxdWVzdCB3aGVuIGl0IGlzIGltcGxlbWVudGVkLgorICAgIC8vIEZJWE1FOiBE
ZXByZWNhdGVkU3RyaW5nIGlzIGRlcHJlY2F0ZWQKICAgICBEZXByZWNhdGVkU3RyaW5nIHN0cmlu
ZyA9IERlcHJlY2F0ZWRTdHJpbmc6OmZyb21VdGY4KHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0
X3VyaShyZXF1ZXN0KSk7CiAgICAgY29yZUZyYW1lLT5sb2FkZXIoKS0+bG9hZChSZXNvdXJjZVJl
cXVlc3QoS1VSTChzdHJpbmcpKSk7CiB9CkBAIC0zNzMsNyArMzgxLDkgQEAgdm9pZCB3ZWJraXRf
d2ViX2ZyYW1lX3N0b3BfbG9hZGluZyhXZWJLaQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9GUkFNRShmcmFtZSkpOwogCi0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
ZnJhbWUpOworICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2Owor
CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IHByaXYtPmNvcmVGcmFtZTsKICAgICBnX3JldHVybl9p
Zl9mYWlsKGNvcmVGcmFtZSk7CiAKICAgICBjb3JlRnJhbWUtPmxvYWRlcigpLT5zdG9wQWxsTG9h
ZGVycygpOwpAQCAtMzg5LDcgKzM5OSw5IEBAIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9yZWxvYWQo
V2ViS2l0V2ViRnIKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUo
ZnJhbWUpKTsKIAotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBXZWJL
aXRXZWJGcmFtZVByaXZhdGUqIHByaXYgPSBmcmFtZS0+cHJpdjsKKworICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBwcml2LT5jb3JlRnJhbWU7CiAgICAgZ19yZXR1cm5faWZfZmFpbChjb3JlRnJhbWUp
OwogCiAgICAgY29yZUZyYW1lLT5sb2FkZXIoKS0+cmVsb2FkKCk7CkBAIC00MTcsNyArNDI5LDkg
QEAgV2ViS2l0V2ViRnJhbWUqIHdlYmtpdF93ZWJfZnJhbWVfZmluZF9mcgogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChuYW1lLCBOVUxMKTsKIAotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKGZyYW1lKTsKKyAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHByaXYgPSBmcmFtZS0+cHJp
djsKKworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBwcml2LT5jb3JlRnJhbWU7CiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoY29yZUZyYW1lLCBOVUxMKTsKIAogICAgIFN0cmluZyBuYW1lU3RyaW5n
ID0gU3RyaW5nOjpmcm9tVVRGOChuYW1lKTsKQEAgLTQzNyw3ICs0NTEsOSBAQCBKU0dsb2JhbENv
bnRleHRSZWYgd2Via2l0X3dlYl9mcmFtZV9nZXRfCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIE5VTEwpOwogCi0gICAgRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUoZnJhbWUpOworICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZy
YW1lLT5wcml2OworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IHByaXYtPmNvcmVGcmFtZTsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlRnJhbWUsIE5VTEwpOwogCiAgICAgcmV0dXJuIHRv
R2xvYmFsUmVmKGNvcmVGcmFtZS0+c2NyaXB0UHJveHkoKS0+Z2xvYmFsT2JqZWN0KCktPmdsb2Jh
bEV4ZWMoKSk7CkBAIC00NTMsOCArNDY5LDEwIEBAIEdTTGlzdCogd2Via2l0X3dlYl9mcmFtZV9n
ZXRfY2hpbGRyZW4oV2UKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X0ZSQU1FKGZyYW1lKSwgTlVMTCk7CiAKKyAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHByaXYg
PSBmcmFtZS0+cHJpdjsKKworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBwcml2LT5jb3JlRnJhbWU7
CiAgICAgR1NMaXN0KiBjaGlsZHJlbiA9IE5VTEw7Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUoZnJhbWUpOwogCiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBjb3JlRnJhbWUtPnRyZWUoKS0+
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygp
KSB7CiAgICAgICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBjaGlsZC0+bG9hZGVyKCk7CkBAIC00
NzYsNyArNDk0LDkgQEAgZ2NoYXIqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2lubmVyX3RleHQoVwog
ewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBO
VUxMKTsKIAotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBXZWJLaXRX
ZWJGcmFtZVByaXZhdGUqIHByaXYgPSBmcmFtZS0+cHJpdjsKKworICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBwcml2LT5jb3JlRnJhbWU7CiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52
aWV3KCk7CiAKICAgICBpZiAodmlldy0+bGF5b3V0UGVuZGluZygpKQpAQCAtNjQ0LDcgKzY2NCw5
IEBAIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9wcmludChXZWJLaXRXZWJGcmEKICAgICBpZiAoIUdU
S19XSURHRVRfVE9QTEVWRUwodG9wTGV2ZWwpKQogICAgICAgICB0b3BMZXZlbCA9IE5VTEw7CiAK
LSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CisgICAgV2ViS2l0V2ViRnJhbWVQ
cml2YXRlKiBwcml2ID0gZnJhbWUtPnByaXY7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gcHJp
di0+Y29yZUZyYW1lOwogICAgIFByaW50Q29udGV4dCBwcmludENvbnRleHQoY29yZUZyYW1lKTsK
IAogICAgIEd0a1ByaW50T3BlcmF0aW9uKiBvcCA9IGd0a19wcmludF9vcGVyYXRpb25fbmV3KCk7
CkluZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2ViZnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2ViZnJhbWUuaAkoUmV2aXNpb24gMjk4NDQpCisr
KyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2ViZnJhbWUuaAkoQXJiZWl0c2tvcGllKQpAQCAt
MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogCiAjaW5j
bHVkZSAid2Via2l0ZGVmaW5lcy5oIgorI2luY2x1ZGUgIndlYmtpdG5ldHdvcmtyZXF1ZXN0Lmgi
CiAKIEdfQkVHSU5fREVDTFMKIApAQCAtMzUsMTMgKzM2LDE2IEBAIEdfQkVHSU5fREVDTFMKICNk
ZWZpbmUgV0VCS0lUX0lTX1dFQl9GUkFNRV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFT
U19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfRlJBTUUpKQogI2RlZmluZSBXRUJLSVRf
V0VCX0ZSQU1FX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2Jq
KSwgIFdFQktJVF9UWVBFX1dFQl9GUkFNRSwgV2ViS2l0V2ViRnJhbWVDbGFzcykpCiAKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJGcmFtZVByaXZhdGUgV2ViS2l0V2ViRnJhbWVQcml2YXRlOwog
CiBzdHJ1Y3QgX1dlYktpdFdlYkZyYW1lIHsKLSAgICBHT2JqZWN0IHBhcmVudDsKKyAgICBHT2Jq
ZWN0IHBhcmVudF9pbnN0YW5jZTsKKworICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdjsK
IH07CiAKIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVDbGFzcyB7Ci0gICAgR09iamVjdENsYXNzIHBh
cmVudDsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwogCiAgICAgdm9pZCAoKl93ZWJr
aXRfcmVzZXJ2ZWQxKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9p
ZCk7CkluZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0bmV0d29ya3JlcXVlc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXRuZXR3b3JrcmVxdWVzdC5jcHAJ
KFJldmlzaW9uIDI5ODQ0KQorKysgV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdG5ldHdvcmtyZXF1
ZXN0LmNwcAkoQXJiZWl0c2tvcGllKQpAQCAtMjAsMzMgKzIwLDM4IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAKICNpbmNsdWRlICJ3ZWJraXRuZXR3b3JrcmVxdWVzdC5oIgotI2luY2x1ZGUgIndl
YmtpdHByaXZhdGUuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBleHRlcm4gIkMiIHsKIAogR19ERUZJTkVfVFlQRShXZWJLaXROZXR3b3Jr
UmVxdWVzdCwgd2Via2l0X25ldHdvcmtfcmVxdWVzdCwgR19UWVBFX09CSkVDVCk7CiAKK3N0cnVj
dCBfV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlIHsKKyAgICBnY2hhciogdXJpOworfTsKKwor
I2RlZmluZSBXRUJLSVRfTkVUV09SS19SRVFVRVNUX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9J
TlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfTkVUV09SS19SRVFVRVNULCBX
ZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGUpKQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfbmV0d29y
a19yZXF1ZXN0X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHsKLSAgICBXZWJLaXROZXR3b3Jr
UmVxdWVzdFByaXZhdGUqIHJlcXVlc3RQcml2YXRlID0gV0VCS0lUX05FVFdPUktfUkVRVUVTVF9H
RVRfUFJJVkFURShvYmplY3QpOworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0g
V0VCS0lUX05FVFdPUktfUkVRVUVTVChvYmplY3QpOworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0
UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7CiAKLSAgICBnX2ZyZWUocmVxdWVzdFByaXZh
dGUtPnVyaSk7CisgICAgZ19mcmVlKHByaXYtPnVyaSk7CiAKICAgICBHX09CSkVDVF9DTEFTUyh3
ZWJraXRfbmV0d29ya19yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9
CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJLaXRO
ZXR3b3JrUmVxdWVzdENsYXNzKiByZXF1ZXN0Q2xhc3MpCiB7Ci0gICAgZ190eXBlX2NsYXNzX2Fk
ZF9wcml2YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0
ZSkpOwotCiAgICAgR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKS0+ZmluYWxpemUgPSB3ZWJr
aXRfbmV0d29ya19yZXF1ZXN0X2ZpbmFsaXplOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2
YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSkpOwog
fQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2luaXQoV2ViS2l0TmV0d29y
a1JlcXVlc3QqIHJlcXVlc3QpCiB7CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlKiBw
cml2ID0gV0VCS0lUX05FVFdPUktfUkVRVUVTVF9HRVRfUFJJVkFURShyZXF1ZXN0KTsKKyAgICBy
ZXF1ZXN0LT5wcml2ID0gcHJpdjsKIH0KIAogV2ViS2l0TmV0d29ya1JlcXVlc3QqIHdlYmtpdF9u
ZXR3b3JrX3JlcXVlc3RfbmV3KGNvbnN0IGdjaGFyKiB1cmkpCkBAIC01NCw5ICs1OSw5IEBAIFdl
YktpdE5ldHdvcmtSZXF1ZXN0KiB3ZWJraXRfbmV0d29ya19yZXEKICAgICBnX3JldHVybl92YWxf
aWZfZmFpbCh1cmksIE5VTEwpOwogCiAgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3Qg
PSBXRUJLSVRfTkVUV09SS19SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ORVRXT1JL
X1JFUVVFU1QsIE5VTEwpKTsKLSAgICBXZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGUqIHJlcXVl
c3RQcml2YXRlID0gV0VCS0lUX05FVFdPUktfUkVRVUVTVF9HRVRfUFJJVkFURShyZXF1ZXN0KTsK
KyAgICBXZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2Owog
Ci0gICAgcmVxdWVzdFByaXZhdGUtPnVyaSA9IGdfc3RyZHVwKHVyaSk7CisgICAgcHJpdi0+dXJp
ID0gZ19zdHJkdXAodXJpKTsKIAogICAgIHJldHVybiByZXF1ZXN0OwogfQpAQCAtNjYsMTkgKzcx
LDE4IEBAIHZvaWQgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9zZXRfdXJpKFdlYksKICAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19ORVRXT1JLX1JFUVVFU1QocmVxdWVzdCkpOwogICAgIGdf
cmV0dXJuX2lmX2ZhaWwodXJpKTsKIAotICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSog
cmVxdWVzdFByaXZhdGUgPSBXRUJLSVRfTkVUV09SS19SRVFVRVNUX0dFVF9QUklWQVRFKHJlcXVl
c3QpOworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnBy
aXY7CiAKLSAgICBnX2ZyZWUocmVxdWVzdFByaXZhdGUtPnVyaSk7Ci0gICAgcmVxdWVzdFByaXZh
dGUtPnVyaSA9IGdfc3RyZHVwKHVyaSk7CisgICAgZ19mcmVlKHByaXYtPnVyaSk7CisgICAgcHJp
di0+dXJpID0gZ19zdHJkdXAodXJpKTsKIH0KIAogY29uc3QgZ2NoYXIqIHdlYmtpdF9uZXR3b3Jr
X3JlcXVlc3RfZ2V0X3VyaShXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfTkVUV09SS19SRVFVRVNUKHJlcXVlc3QpLCBO
VUxMKTsKIAotICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSogcmVxdWVzdFByaXZhdGUg
PSBXRUJLSVRfTkVUV09SS19SRVFVRVNUX0dFVF9QUklWQVRFKHJlcXVlc3QpOwotCi0gICAgcmV0
dXJuIHJlcXVlc3RQcml2YXRlLT51cmk7CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRl
KiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKKyAgICByZXR1cm4gcHJpdi0+dXJpOwogfQogCiB9Cklu
ZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2Vic2V0dGluZ3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2Vic2V0dGluZ3MuaAkoUmV2aXNpb24gMjk4NDQp
CisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2Vic2V0dGluZ3MuaAkoQXJiZWl0c2tvcGll
KQpAQCAtMzMsMTIgKzMzLDExIEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX0lTX1dF
Ql9TRVRUSU5HU19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyks
ICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MpKQogI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdT
X0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJ
VF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3NDbGFzcykpCiAKLXR5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJTZXR0aW5ncyAgICAgICAgICAgICAgICBXZWJLaXRXZWJTZXR0aW5n
czsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgICAgICAgICBXZWJL
aXRXZWJTZXR0aW5nc1ByaXZhdGU7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3ND
bGFzcyAgICAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3NDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlOwogCiBzdHJ1
Y3QgX1dlYktpdFdlYlNldHRpbmdzIHsKICAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKwog
ICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdjsKIH07CiAKSW5kZXg6IFdlYktpdC9n
dGsvV2ViVmlldy93ZWJraXRuZXR3b3JrcmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9n
dGsvV2ViVmlldy93ZWJraXRuZXR3b3JrcmVxdWVzdC5oCShSZXZpc2lvbiAyOTg0NCkKKysrIFdl
YktpdC9ndGsvV2ViVmlldy93ZWJraXRuZXR3b3JrcmVxdWVzdC5oCShBcmJlaXRza29waWUpCkBA
IC0zMywxMyArMzMsMTYgQEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfSVNfTkVUV09S
S19SRVFVRVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwg
IFdFQktJVF9UWVBFX05FVFdPUktfUkVRVUVTVCkpCiAjZGVmaW5lIFdFQktJVF9ORVRXT1JLX1JF
UVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAg
V0VCS0lUX1RZUEVfTkVUV09SS19SRVFVRVNULCBXZWJLaXROZXR3b3JrUmVxdWVzdENsYXNzKSkK
IAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSBXZWJLaXROZXR3
b3JrUmVxdWVzdFByaXZhdGU7CiAKIHN0cnVjdCBfV2ViS2l0TmV0d29ya1JlcXVlc3QgewotICAg
IEdPYmplY3QgcGFyZW50OworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAgV2Vi
S2l0TmV0d29ya1JlcXVlc3RQcml2YXRlKiBwcml2OwogfTsKIAogc3RydWN0IF9XZWJLaXROZXR3
b3JrUmVxdWVzdENsYXNzIHsKLSAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OworICAgIEdPYmplY3RD
bGFzcyBwYXJlbnRfY2xhc3M7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCkluZGV4OiBXZWJLaXQv
Z3RrL1dlYlZpZXcvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9X
ZWJWaWV3L3dlYmtpdHdlYnZpZXcuY3BwCShSZXZpc2lvbiAyOTg0NCkKKysrIFdlYktpdC9ndGsv
V2ViVmlldy93ZWJraXR3ZWJ2aWV3LmNwcAkoQXJiZWl0c2tvcGllKQpAQCAtMSw5ICsxLDkgQEAK
IC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDA3IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQHR3b3RvYXN0
cy5kZT4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgWGFuIExvcGV6IDx4YW5AZ25vbWUub3JnPgog
ICogIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogIENv
cHlyaWdodCAoQykgMjAwOCBKYW4gQWxvbnpvIDxqbWFsb256b0B1bnBsdWdnYWJsZS5jb20+Cisg
KiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGlt
ZW5kaW8uY29tPgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsOCArMjUsOSBAQAogI2luY2x1
ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXQtbWFyc2hhbC5oIgogI2luY2x1
ZGUgIndlYmtpdHByaXZhdGUuaCIKLSNpbmNsdWRlICJ3ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3Qu
aCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIgorI2luY2x1ZGUgIndlYmtpdHdl
YmJhY2tmb3J3YXJkbGlzdC5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnNldHRpbmdzLmgiCiAKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgpA
QCAtMTA3LDcgKzEwOCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jb250ZXh0X21l
bnUKIAogc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVu
dV9ldmVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50KQogewotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHdlYlZpZXcpOworICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIFBhZ2UqIHBhZ2UgPSBw
cml2LT5jb3JlUGFnZTsKICAgICBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJD
b250ZXh0TWVudSgpOwogICAgIEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBwYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgZm9jdXNlZEZyYW1lLT52aWV3KCkt
PnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwpAQCAtMTIzLDI1ICsxMjYsMjYgQEAgc3RhdGlj
IGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkXwogICAgICAgICByZXR1cm4gRkFMU0U7
CiAKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwYWdlRGF0YSA9IFdFQktJVF9XRUJfVklF
V19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAgICBwYWdlRGF0YS0+bGFzdFBvcHVwWFBvc2l0aW9u
ID0gZXZlbnQuZ2xvYmFsWCgpOwotICAgIHBhZ2VEYXRhLT5sYXN0UG9wdXBZUG9zaXRpb24gPSBl
dmVudC5nbG9iYWxZKCk7CisgICAgcHJpdi0+bGFzdFBvcHVwWFBvc2l0aW9uID0gZXZlbnQuZ2xv
YmFsWCgpOworICAgIHByaXYtPmxhc3RQb3B1cFlQb3NpdGlvbiA9IGV2ZW50Lmdsb2JhbFkoKTsK
ICAgICBndGtfbWVudV9wb3B1cChHVEtfTUVOVShjb3JlTWVudS0+cGxhdGZvcm1EZXNjcmlwdGlv
bigpKSwgTlVMTCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEd0
a01lbnVQb3NpdGlvbkZ1bmM+KHdlYmtpdF93ZWJfdmlld19jb250ZXh0X21lbnVfcG9zaXRpb25f
ZnVuYyksIHBhZ2VEYXRhLAorICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R3Rr
TWVudVBvc2l0aW9uRnVuYz4od2Via2l0X3dlYl92aWV3X2NvbnRleHRfbWVudV9wb3NpdGlvbl9m
dW5jKSwgcHJpdiwKICAgICAgICAgICAgICAgICAgICBldmVudC5idXR0b24oKSArIDEsIGd0a19n
ZXRfY3VycmVudF9ldmVudF90aW1lKCkpOwogICAgIHJldHVybiBUUlVFOwogfQogCiBzdGF0aWMg
Z2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3BvcHVwX21lbnVfaGFuZGxlcihHdGtXaWRnZXQqIHdp
ZGdldCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGNvbnRleHRNZW51TWFyZ2luID0gMTsKKyAg
ICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7CisgICAg
V2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwogCiAgICAgLy8gVGhl
IGNvbnRleHQgbWVudSBldmVudCB3YXMgZ2VuZXJhdGVkIGZyb20gdGhlIGtleWJvYXJkLCBzbyBz
aG93IHRoZSBjb250ZXh0IG1lbnUgYnkgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgotICAgIFBhZ2Uq
IHBhZ2UgPSBjb3JlKFdFQktJVF9XRUJfVklFVyh3aWRnZXQpKTsKLSAgICBGcmFtZVZpZXcqIHZp
ZXcgPSBwYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOwotICAgIFBvc2l0aW9uIHN0YXJ0ID0gcGFn
ZS0+bWFpbkZyYW1lKCktPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+c2VsZWN0aW9uKCkuc3RhcnQo
KTsKLSAgICBQb3NpdGlvbiBlbmQgPSBwYWdlLT5tYWluRnJhbWUoKS0+c2VsZWN0aW9uQ29udHJv
bGxlcigpLT5zZWxlY3Rpb24oKS5lbmQoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBwcml2LT5jb3Jl
UGFnZS0+bWFpbkZyYW1lKCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsK
KyAgICBQb3NpdGlvbiBzdGFydCA9IGZyYW1lLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPnNlbGVj
dGlvbigpLnN0YXJ0KCk7CisgICAgUG9zaXRpb24gZW5kID0gZnJhbWUtPnNlbGVjdGlvbkNvbnRy
b2xsZXIoKS0+c2VsZWN0aW9uKCkuZW5kKCk7CiAKKyAgICBzdGF0aWMgY29uc3QgaW50IGNvbnRl
eHRNZW51TWFyZ2luID0gMTsKICAgICBpbnQgcmlnaHRBbGlnbmVkID0gRkFMU0U7CiAgICAgSW50
UG9pbnQgbG9jYXRpb247CiAKQEAgLTE4MSw3ICsxODUsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X3BvcHVwX21lCiAgICAgSW50UG9pbnQgZ2xvYmFsID0gbG9jYXRpb24gKyBJ
bnRTaXplKHgsIHkpOwogICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChsb2NhdGlvbiwgZ2xv
YmFsLCBOb0J1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBndGtfZ2V0X2N1cnJlbnRfZXZlbnRfdGltZSgpKTsKIAotICAgIHJldHVybiB3ZWJr
aXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV0VCS0lUX1dFQl9WSUVXKHdp
ZGdldCksIGV2ZW50KTsKKyAgICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4
dF9tZW51X2V2ZW50KHdlYlZpZXcsIGV2ZW50KTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1
ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQpAQCAtMjI0LDcgKzIyOCwxMCBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3Byb3BlcnR5CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRfd2ViX3ZpZXdfZXhwb3NlX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEV4cG9z
ZSogZXZlbnQpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0
X21haW5fZnJhbWUoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCkpKTsKKyAgICBXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7CisgICAgV2ViS2l0V2ViVmlld1By
aXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworCisgICAgRnJhbWUqIGZyYW1lID0gcHJpdi0+
Y29yZVBhZ2UtPm1haW5GcmFtZSgpOwogICAgIEdka1JlY3RhbmdsZSBjbGlwOwogICAgIGdka19y
ZWdpb25fZ2V0X2NsaXBib3goZXZlbnQtPnJlZ2lvbiwgJmNsaXApOwogICAgIGNhaXJvX3QqIGNy
ID0gZ2RrX2NhaXJvX2NyZWF0ZShldmVudC0+d2luZG93KTsKQEAgLTI0MSw3ICsyNDgsMTAgQEAg
c3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19leHBvc2VfZQogCiBzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0X3dlYl92aWV3X2tleV9wcmVzc19ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
RXZlbnRLZXkqIGV2ZW50KQogewotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUoV0VCS0lUX1dFQl9W
SUVXKHdpZGdldCkpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Cisg
ICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQpOworICAg
IFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIEZyYW1l
KiBmcmFtZSA9IHByaXYtPmNvcmVQYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCk7CiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleWJvYXJkRXZlbnQoZXZlbnQp
OwogCiAgICAgaWYgKGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoa2V5Ym9hcmRFdmVu
dCkpCkBAIC0yODMsNyArMjkzLDEwIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdf
a2V5X3ByZXMKIAogc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19rZXlfcmVsZWFzZV9l
dmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRLZXkqIGV2ZW50KQogewotICAgIEZyYW1l
KiBmcmFtZSA9IGNvcmUoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCkpLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdF
QktJVF9XRUJfVklFVyh3aWRnZXQpOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0g
d2ViVmlldy0+cHJpdjsKKworICAgIEZyYW1lKiBmcmFtZSA9IHByaXYtPmNvcmVQYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50IGtleWJvYXJkRXZlbnQoZXZlbnQpOwogCiAgICAgaWYgKGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+a2V5RXZlbnQoa2V5Ym9hcmRFdmVudCkpCkBAIC0yOTUsMzEgKzMwOCwzMyBAQCBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2tleV9yZWxlCiAKIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRfd2ViX3ZpZXdfYnV0dG9uX3ByZXNzX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtF
dmVudEJ1dHRvbiogZXZlbnQpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X21haW5fZnJhbWUoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCkpKTsKKyAgICBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7CisgICAgV2ViS2l0
V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworCisgICAgRnJhbWUqIGZyYW1l
ID0gcHJpdi0+Y29yZVBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKIAogICAgIC8vIEZJWE1FOiBuZWVkIHRvIGtlZXAgdHJhY2sgb2Ygc3ViZnJhbWUgZm9jdXMg
Zm9yIGtleSBldmVudHMKICAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMoR1RLX1dJREdFVCh3aWRn
ZXQpKTsKIAogICAgIGlmIChldmVudC0+YnV0dG9uID09IDMpCi0gICAgICAgIHJldHVybiB3ZWJr
aXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV0VCS0lUX1dFQl9WSUVXKHdp
ZGdldCksIFBsYXRmb3JtTW91c2VFdmVudChldmVudCkpOworICAgICAgICByZXR1cm4gd2Via2l0
X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KHdlYlZpZXcsIFBsYXRmb3JtTW91
c2VFdmVudChldmVudCkpOwogCiAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFu
ZGxlTW91c2VQcmVzc0V2ZW50KFBsYXRmb3JtTW91c2VFdmVudChldmVudCkpOwogfQogCiBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2J1dHRvbl9yZWxlYXNlX2V2ZW50KEd0a1dpZGdl
dCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0g
Y29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUoV0VCS0lUX1dFQl9WSUVXKHdpZGdl
dCkpKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdl
dCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwogCi0g
ICAgV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKLSAg
ICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VU
X1BSSVZBVEUod2ViX3ZpZXcpOwotICAgIEZyYW1lKiBmb2N1c2VkRnJhbWUgPSB3ZWJWaWV3RGF0
YS0+Y29yZVBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkRnJhbWUoKTsKKyAgICBGcmFt
ZSogZnJhbWUgPSBwcml2LT5jb3JlUGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpOwogCi0gICAgaWYgKGZvY3VzZWRGcmFtZSAmJiBmb2N1c2VkRnJhbWUtPmVkaXRv
cigpLT5jYW5FZGl0KCkpIHsKKyAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmVkaXRvcigpLT5jYW5F
ZGl0KCkpIHsKICAgICAgICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF9wYXJl
bnRfd2luZG93KHdpZGdldCk7Ci0gICAgICAgIGd0a19pbV9jb250ZXh0X3NldF9jbGllbnRfd2lu
ZG93KHdlYlZpZXdEYXRhLT5pbUNvbnRleHQsIHdpbmRvdyk7CisgICAgICAgIGd0a19pbV9jb250
ZXh0X3NldF9jbGllbnRfd2luZG93KHByaXYtPmltQ29udGV4dCwgd2luZG93KTsKICNpZmRlZiBN
QUVNT19DSEFOR0VTCi0gICAgICAgIGhpbGRvbl9ndGtfaW1fY29udGV4dF9maWx0ZXJfZXZlbnQo
d2ViVmlld0RhdGEtPmltQ29udGV4dCwgKEdka0V2ZW50KilldmVudCk7Ci0gICAgICAgIGhpbGRv
bl9ndGtfaW1fY29udGV4dF9zaG93KHdlYlZpZXdEYXRhLT5pbUNvbnRleHQpOworICAgICAgICBo
aWxkb25fZ3RrX2ltX2NvbnRleHRfZmlsdGVyX2V2ZW50KHByaXYtPmltQ29udGV4dCwgKEdka0V2
ZW50KilldmVudCk7CisgICAgICAgIGhpbGRvbl9ndGtfaW1fY29udGV4dF9zaG93KHByaXYtPmlt
Q29udGV4dCk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTMyOCwxMyArMzQzLDE5IEBAIHN0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfYnV0dG9uX3IKIAogc3RhdGljIGdib29sZWFuIHdlYmtp
dF93ZWJfdmlld19tb3Rpb25fZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50TW90aW9u
KiBldmVudCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRf
bWFpbl9mcmFtZShXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSkpOworICAgIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKKyAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICBGcmFtZSogZnJhbWUgPSBwcml2LT5j
b3JlUGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIHJl
dHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92ZWQoUGxhdGZvcm1Nb3VzZUV2ZW50
KGV2ZW50KSk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfc2Nyb2xsX2V2
ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudFNjcm9sbCogZXZlbnQpCiB7Ci0gICAgRnJh
bWUqIGZyYW1lID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUoV0VCS0lUX1dF
Ql9WSUVXKHdpZGdldCkpKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dF
Ql9WSUVXKHdpZGdldCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3
LT5wcml2OworCisgICAgRnJhbWUqIGZyYW1lID0gcHJpdi0+Y29yZVBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgd2hl
ZWxFdmVudChldmVudCk7CiAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxl
V2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKIH0KQEAgLTM0Myw3ICszNjQsMTAgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X3NpemVfYWxsb2NhdAogewogICAgIEdUS19XSURHRVRfQ0xBU1Mo
d2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcyktPnNpemVfYWxsb2NhdGUod2lkZ2V0LGFsbG9j
YXRpb24pOwogCi0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21h
aW5fZnJhbWUoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCkpKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworCisgICAgRnJhbWUqIGZyYW1lID0gcHJpdi0+Y29y
ZVBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBmcmFt
ZS0+dmlldygpLT5yZXNpemUoYWxsb2NhdGlvbi0+d2lkdGgsIGFsbG9jYXRpb24tPmhlaWdodCk7
CiAgICAgZnJhbWUtPmZvcmNlTGF5b3V0KCk7CiAgICAgZnJhbWUtPnZpZXcoKS0+YWRqdXN0Vmll
d1NpemUoKTsKQEAgLTM1Niw4ICszODAsMTAgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJf
dmlld19mb2N1c19pbgogICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90
b3BsZXZlbCh3aWRnZXQpOwogICAgIGlmIChHVEtfV0lER0VUX1RPUExFVkVMKHRvcGxldmVsKSAm
JiBndGtfd2luZG93X2hhc190b3BsZXZlbF9mb2N1cyhHVEtfV0lORE9XKHRvcGxldmVsKSkpIHsK
ICAgICAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQp
OwotICAgICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9m
cmFtZSh3ZWJWaWV3KSk7Ci0gICAgICAgIGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigp
LT5zZXRBY3RpdmUoZnJhbWUpOworICAgICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9
IHdlYlZpZXctPnByaXY7CisKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gcHJpdi0+Y29yZVBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICAgICAgcHJpdi0+
Y29yZVBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRBY3RpdmUoZnJhbWUpOwogICAgIH0KICAg
ICByZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+
Zm9jdXNfaW5fZXZlbnQod2lkZ2V0LCBldmVudCk7CiB9CkBAIC0zOTcsMTYgKzQyMywxOCBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbGl6ZShHdGtXCiAKIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19zZXRfc2Nyb2xsX2FkanVzdG1lbnRzKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIEd0a0FkanVzdG1lbnQqIGhhZGosIEd0a0FkanVzdG1lbnQqIHZhZGopCiB7Ci0gICAgRnJh
bWVWaWV3KiB2aWV3ID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmll
dykpLT52aWV3KCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5w
cml2OworCisgICAgRnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+Y29yZVBhZ2UtPm1haW5GcmFtZSgp
LT52aWV3KCk7CiAgICAgdmlldy0+c2V0R3RrQWRqdXN0bWVudHMoaGFkaiwgdmFkaik7CiB9CiAK
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jb250YWluZXJfYWRkKEd0a0NvbnRhaW5lciog
Y29udGFpbmVyLCBHdGtXaWRnZXQqIHdpZGdldCkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3ID0gV0VCS0lUX1dFQl9WSUVXKGNvbnRhaW5lcik7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHByaXZhdGVfZGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsK
KyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAKLSAgICBw
cml2YXRlX2RhdGEtPmNoaWxkcmVuLmFkZCh3aWRnZXQpOworICAgIHByaXYtPmNoaWxkcmVuLmFk
ZCh3aWRnZXQpOwogICAgIGlmIChHVEtfV0lER0VUX1JFQUxJWkVEKGNvbnRhaW5lcikpCiAgICAg
ICAgIGd0a193aWRnZXRfc2V0X3BhcmVudF93aW5kb3cod2lkZ2V0LCBHVEtfV0lER0VUKHdlYlZp
ZXcpLT53aW5kb3cpOwogICAgIGd0a193aWRnZXRfc2V0X3BhcmVudCh3aWRnZXQsIEdUS19XSURH
RVQoY29udGFpbmVyKSk7CkBAIC00MTQsMTkgKzQ0MiwyMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfY29udGFpbmVyX2FkCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jb250
YWluZXJfcmVtb3ZlKEd0a0NvbnRhaW5lciogY29udGFpbmVyLCBHdGtXaWRnZXQqIHdpZGdldCkK
IHsKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdmF0ZV9kYXRhID0gV0VCS0lUX1dFQl9W
SUVXX0dFVF9QUklWQVRFKFdFQktJVF9XRUJfVklFVyhjb250YWluZXIpKTsKKyAgICBXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGNvbnRhaW5lcik7CisgICAgV2ViS2l0
V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwogCi0gICAgaWYgKHByaXZhdGVf
ZGF0YS0+Y2hpbGRyZW4uY29udGFpbnMod2lkZ2V0KSkgeworICAgIGlmIChwcml2LT5jaGlsZHJl
bi5jb250YWlucyh3aWRnZXQpKSB7CiAgICAgICAgIGd0a193aWRnZXRfdW5wYXJlbnQod2lkZ2V0
KTsKLSAgICAgICAgcHJpdmF0ZV9kYXRhLT5jaGlsZHJlbi5yZW1vdmUod2lkZ2V0KTsKKyAgICAg
ICAgcHJpdi0+Y2hpbGRyZW4ucmVtb3ZlKHdpZGdldCk7CiAgICAgfQogfQogCiBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfY29udGFpbmVyX2ZvcmFsbChHdGtDb250YWluZXIqIGNvbnRhaW5l
ciwgZ2Jvb2xlYW4sIEd0a0NhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciBjYWxsYmFja0RhdGEp
CiB7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXZhdGVEYXRhID0gV0VCS0lUX1dFQl9W
SUVXX0dFVF9QUklWQVRFKFdFQktJVF9XRUJfVklFVyhjb250YWluZXIpKTsKKyAgICBXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGNvbnRhaW5lcik7CisgICAgV2ViS2l0
V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwogCi0gICAgSGFzaFNldDxHdGtX
aWRnZXQqPiBjaGlsZHJlbiA9IHByaXZhdGVEYXRhLT5jaGlsZHJlbjsKKyAgICBIYXNoU2V0PEd0
a1dpZGdldCo+IGNoaWxkcmVuID0gcHJpdi0+Y2hpbGRyZW47CiAgICAgSGFzaFNldDxHdGtXaWRn
ZXQqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2hpbGRyZW4uZW5kKCk7CiAgICAgZm9yIChIYXNo
U2V0PEd0a1dpZGdldCo+Ojpjb25zdF9pdGVyYXRvciBjdXJyZW50ID0gY2hpbGRyZW4uYmVnaW4o
KTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKICAgICAgICAgKCpjYWxsYmFjaykoKmN1cnJl
bnQsIGNhbGxiYWNrRGF0YSk7CkBAIC01NTcsNDMgKzU4Nyw1MSBAQCBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0X3dlYl92aWV3X3JlYWxfY29uCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19y
ZWFsX3NlbGVjdF9hbGwoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICBGcmFtZSogZnJh
bWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworCisg
ICAgRnJhbWUqIGZyYW1lID0gcHJpdi0+Y29yZVBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlNlbGVjdEFs
bCIpLmV4ZWN1dGUoKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfY3V0
X2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIEZyYW1lKiBmcmFtZSA9
IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
KyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICBG
cmFtZSogZnJhbWUgPSBwcml2LT5jb3JlUGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpOwogICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiQ3V0IikuZXhlY3V0
ZSgpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jb3B5X2NsaXBib2Fy
ZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Vi
VmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBXZWJL
aXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICBGcmFtZSogZnJh
bWUgPSBwcml2LT5jb3JlUGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwogICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKIH0K
IAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfcGFzdGVfY2xpcGJvYXJkKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIFdlYktpdFdlYlZp
ZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIEZyYW1lKiBmcmFtZSA9IHBy
aXYtPmNvcmVQYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKIH0KIAogc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHsKLSAg
ICB3ZWJraXRfd2ViX3ZpZXdfc3RvcF9sb2FkaW5nKFdFQktJVF9XRUJfVklFVyhvYmplY3QpKTsK
LQotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3RGF0YSA9IFdFQktJVF9XRUJfVklF
V19HRVRfUFJJVkFURShXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KSk7CisgICAgV2ViS2l0V2ViVmll
dyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhvYmplY3QpOworICAgIFdlYktpdFdlYlZpZXdQ
cml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKIAotICAgIGRlbGV0ZSB3ZWJWaWV3RGF0YS0+
Y29yZVBhZ2U7CisgICAgd2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZyh3ZWJWaWV3KTsKIAot
ICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXdEYXRhLT5iYWNrRm9yd2FyZExpc3QpOwotICAgIGdf
b2JqZWN0X3VucmVmKHdlYlZpZXdEYXRhLT53ZWJTZXR0aW5ncyk7Ci0gICAgZ19vYmplY3RfdW5y
ZWYod2ViVmlld0RhdGEtPm1haW5GcmFtZSk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlld0Rh
dGEtPmltQ29udGV4dCk7Ci0gICAgZ3RrX3RhcmdldF9saXN0X3VucmVmKHdlYlZpZXdEYXRhLT5j
b3B5X3RhcmdldF9saXN0KTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYod2ViVmlld0RhdGEt
PnBhc3RlX3RhcmdldF9saXN0KTsKLSAgICBkZWxldGUgd2ViVmlld0RhdGEtPnVzZXJBZ2VudDsK
KyAgICBkZWxldGUgcHJpdi0+Y29yZVBhZ2U7CisgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+YmFj
a0ZvcndhcmRMaXN0KTsKKyAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJTZXR0aW5ncyk7Cisg
ICAgZ19vYmplY3RfdW5yZWYocHJpdi0+bWFpbkZyYW1lKTsKKyAgICBnX29iamVjdF91bnJlZihw
cml2LT5pbUNvbnRleHQpOworICAgIGd0a190YXJnZXRfbGlzdF91bnJlZihwcml2LT5jb3B5X3Rh
cmdldF9saXN0KTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJpdi0+cGFzdGVfdGFyZ2V0
X2xpc3QpOworICAgIGRlbGV0ZSBwcml2LT51c2VyQWdlbnQ7CiAKICAgICBHX09CSkVDVF9DTEFT
Uyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KQEAg
LTYxNiw4ICs2NTQsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChX
CiAKICAgICB3ZWJraXRfaW5pdCgpOwogCi0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHdl
YlZpZXdDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlZpZXdQcml2YXRlKSk7Ci0KICAgICAvKgogICAg
ICAqIFNpZ25hbHMKICAgICAgKi8KQEAgLTEwMjUsNyArMTA2MSw3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19jbGFzc19pbml0KFcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNldHRpbmdzIiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFuIGFzc29jaWF0ZWQgV2Vi
S2l0V2ViU2V0dGluZ3MgaW5zdGFuY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJ
VF9QQVJBTV9SRUFEV1JJVEUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKEdQYXJhbUZsYWdzKShXRUJLSVRfUEFSQU1fUkVBRFdSSVRF
KSkpOwogCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywg
UFJPUF9FRElUQUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19ib29sZWFuKCJlZGl0YWJsZSIsCkBAIC0xMDMzLDEzICsxMDY5LDE1IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFcKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaGV0aGVyIGNvbnRlbnQgY2Fu
IGJlIG1vZGlmaWVkIGJ5IHRoZSB1c2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklU
RSkpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHdlYlZpZXdDbGFzcywgc2l6ZW9m
KFdlYktpdFdlYlZpZXdQcml2YXRlKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19zY3JlZW5fY2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtTY3JlZW4qIHByZXZp
b3VzU2NyZWVuLCBncG9pbnRlciB1c2VyZGF0YSkKIHsKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0
ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0g
ICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzID0gd2ViVmlld0RhdGEtPndlYlNldHRp
bmdzOwotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYlZpZXdEYXRhLT5jb3JlUGFnZS0+c2V0
dGluZ3MoKTsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7
CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzID0gcHJpdi0+d2ViU2V0dGluZ3M7
CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gcHJpdi0+Y29yZVBhZ2UtPnNldHRpbmdzKCk7CiAK
ICAgICBndWludCBkZWZhdWx0Rm9udFNpemUsIGRlZmF1bHRNb25vc3BhY2VGb250U2l6ZSwgbWlu
aW11bUZvbnRTaXplLCBtaW5pbXVtTG9naWNhbEZvbnRTaXplOwogCkBAIC0xMDY1LDkgKzExMDMs
OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nCiAKIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmll
dykKIHsKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VC
X1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNl
dHRpbmdzID0gd2ViVmlld0RhdGEtPndlYlNldHRpbmdzOwotICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IHdlYlZpZXdEYXRhLT5jb3JlUGFnZS0+c2V0dGluZ3MoKTsKKyAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdl
YlNldHRpbmdzID0gcHJpdi0+d2ViU2V0dGluZ3M7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0g
cHJpdi0+Y29yZVBhZ2UtPnNldHRpbmdzKCk7CiAKICAgICBnY2hhciogZGVmYXVsdEVuY29kaW5n
LCAqY3Vyc2l2ZUZvbnRGYW1pbHksICpkZWZhdWx0Rm9udEZhbWlseSwgKmZhbnRhc3lGb250RmFt
aWx5LCAqbW9ub3NwYWNlRm9udEZhbWlseSwgKnNhbnNTZXJpZkZvbnRGYW1pbHksICpzZXJpZkZv
bnRGYW1pbHksICp1c2VyU3R5bGVzaGVldFVyaTsKICAgICBnYm9vbGVhbiBhdXRvTG9hZEltYWdl
cywgYXV0b1Nocmlua0ltYWdlcywgcHJpbnRCYWNrZ3JvdW5kcywgZW5hYmxlU2NyaXB0cywgZW5h
YmxlUGx1Z2lucywgcmVzaXphYmxlVGV4dEFyZWFzOwpAQCAtMTExOCw4ICsxMTU2LDggQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aQogCiBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5n
cywgR1BhcmFtU3BlYyogcHNwZWMsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgV2Vi
S2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklW
QVRFKHdlYlZpZXcpOwotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYlZpZXdEYXRhLT5jb3Jl
UGFnZS0+c2V0dGluZ3MoKTsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZp
ZXctPnByaXY7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gcHJpdi0+Y29yZVBhZ2UtPnNldHRp
bmdzKCk7CiAKICAgICBjb25zdCBnY2hhciogbmFtZSA9IGdfaW50ZXJuX3N0cmluZyhwc3BlYy0+
bmFtZSk7CiAgICAgR1ZhbHVlIHZhbHVlID0gezAsIDB9OwpAQCAtMTE2OSwyMiArMTIwNywxOCBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90CiAKIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgV2Vi
S2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklW
QVRFKHdlYlZpZXcpOwotICAgIHdlYlZpZXdEYXRhLT5pbUNvbnRleHQgPSBndGtfaW1fbXVsdGlj
b250ZXh0X25ldygpOwotICAgIHdlYlZpZXdEYXRhLT5jb3JlUGFnZSA9IG5ldyBQYWdlKG5ldyBX
ZWJLaXQ6OkNocm9tZUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6Q29udGV4dE1lbnVDbGll
bnQsIG5ldyBXZWJLaXQ6OkVkaXRvckNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RHJhZ0Ns
aWVudCwgbmV3IFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50KTsKKyAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKIAotICAg
IHdlYlZpZXdEYXRhLT53ZWJTZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7Ci0g
ICAgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyh3ZWJWaWV3KTsKLSAgICBnX3NpZ25h
bF9jb25uZWN0KHdlYlZpZXcsICJzY3JlZW4tY2hhbmdlZCIsIEdfQ0FMTEJBQ0sod2Via2l0X3dl
Yl92aWV3X3NjcmVlbl9jaGFuZ2VkKSwgTlVMTCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdCh3ZWJW
aWV3RGF0YS0+d2ViU2V0dGluZ3MsICJub3RpZnkiLCBHX0NBTExCQUNLKHdlYmtpdF93ZWJfdmll
d19zZXR0aW5nc19ub3RpZnkpLCB3ZWJWaWV3KTsKKyAgICBwcml2LT5pbUNvbnRleHQgPSBndGtf
aW1fbXVsdGljb250ZXh0X25ldygpOworICAgIHByaXYtPmNvcmVQYWdlID0gbmV3IFBhZ2UobmV3
IFdlYktpdDo6Q2hyb21lQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpDb250ZXh0TWVudUNs
aWVudCwgbmV3IFdlYktpdDo6RWRpdG9yQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpEcmFn
Q2xpZW50LCBuZXcgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQpOwogCiAgICAgR1RLX1dJREdFVF9T
RVRfRkxBR1Mod2ViVmlldywgR1RLX0NBTl9GT0NVUyk7Ci0gICAgd2ViVmlld0RhdGEtPm1haW5G
cmFtZSA9IFdFQktJVF9XRUJfRlJBTUUod2Via2l0X3dlYl9mcmFtZV9uZXcod2ViVmlldykpOwot
ICAgIHdlYlZpZXdEYXRhLT5sYXN0UG9wdXBYUG9zaXRpb24gPSB3ZWJWaWV3RGF0YS0+bGFzdFBv
cHVwWVBvc2l0aW9uID0gLTE7Ci0gICAgd2ViVmlld0RhdGEtPmVkaXRhYmxlID0gZmFsc2U7Cisg
ICAgcHJpdi0+bWFpbkZyYW1lID0gV0VCS0lUX1dFQl9GUkFNRSh3ZWJraXRfd2ViX2ZyYW1lX25l
dyh3ZWJWaWV3KSk7CisgICAgcHJpdi0+bGFzdFBvcHVwWFBvc2l0aW9uID0gcHJpdi0+bGFzdFBv
cHVwWVBvc2l0aW9uID0gLTE7CisgICAgcHJpdi0+ZWRpdGFibGUgPSBmYWxzZTsKIAogICAgIC8q
IEluaXRpYWxpemUgdGhlIHZpZXcncyBiYWNrL2ZvcndhcmQgbGlzdCAqLwotICAgIHdlYlZpZXdE
YXRhLT5iYWNrRm9yd2FyZExpc3QgPSB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X25ld193
aXRoX3dlYl92aWV3KHdlYlZpZXcpOworICAgIHByaXYtPmJhY2tGb3J3YXJkTGlzdCA9IHdlYmtp
dF93ZWJfYmFja19mb3J3YXJkX2xpc3RfbmV3X3dpdGhfd2ViX3ZpZXcod2ViVmlldyk7CiAKICNp
ZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLDEwLDApCiAgICAgR2RrQXRvbSB0ZXh0SHRtbCA9IGdka19h
dG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJ0ZXh0L2h0bWwiKTsKQEAgLTExOTIsMTUgKzEyMjYs
MjEgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0VwogICAgIEdka0F0
b20gdGV4dEh0bWwgPSBnZGtfYXRvbV9pbnRlcm4oInRleHQvaHRtbCIsIGZhbHNlKTsKICNlbmRp
ZgogICAgIC8qIFRhcmdldHMgZm9yIGNvcHkgKi8KLSAgICB3ZWJWaWV3RGF0YS0+Y29weV90YXJn
ZXRfbGlzdCA9IGd0a190YXJnZXRfbGlzdF9uZXcoTlVMTCwgMCk7Ci0gICAgZ3RrX3RhcmdldF9s
aXN0X2FkZCh3ZWJWaWV3RGF0YS0+Y29weV90YXJnZXRfbGlzdCwgdGV4dEh0bWwsIDAsIFdFQktJ
VF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3Rl
eHRfdGFyZ2V0cyh3ZWJWaWV3RGF0YS0+Y29weV90YXJnZXRfbGlzdCwgV0VCS0lUX1dFQl9WSUVX
X1RBUkdFVF9JTkZPX1RFWFQpOworICAgIHByaXYtPmNvcHlfdGFyZ2V0X2xpc3QgPSBndGtfdGFy
Z2V0X2xpc3RfbmV3KE5VTEwsIDApOworICAgIGd0a190YXJnZXRfbGlzdF9hZGQocHJpdi0+Y29w
eV90YXJnZXRfbGlzdCwgdGV4dEh0bWwsIDAsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19I
VE1MKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0cyhwcml2LT5jb3B5X3Rh
cmdldF9saXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCk7CiAKICAgICAvKiBU
YXJnZXRzIGZvciBwYXN0aW5nICovCi0gICAgd2ViVmlld0RhdGEtPnBhc3RlX3RhcmdldF9saXN0
ID0gZ3RrX3RhcmdldF9saXN0X25ldyhOVUxMLCAwKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRk
KHdlYlZpZXdEYXRhLT5wYXN0ZV90YXJnZXRfbGlzdCwgdGV4dEh0bWwsIDAsIFdFQktJVF9XRUJf
VklFV19UQVJHRVRfSU5GT19IVE1MKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFy
Z2V0cyh3ZWJWaWV3RGF0YS0+cGFzdGVfdGFyZ2V0X2xpc3QsIFdFQktJVF9XRUJfVklFV19UQVJH
RVRfSU5GT19URVhUKTsKKyAgICBwcml2LT5wYXN0ZV90YXJnZXRfbGlzdCA9IGd0a190YXJnZXRf
bGlzdF9uZXcoTlVMTCwgMCk7CisgICAgZ3RrX3RhcmdldF9saXN0X2FkZChwcml2LT5wYXN0ZV90
YXJnZXRfbGlzdCwgdGV4dEh0bWwsIDAsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1M
KTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0cyhwcml2LT5wYXN0ZV90YXJn
ZXRfbGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQpOworCisgICAgd2ViVmll
dy0+cHJpdiA9IHByaXY7CiAKKyAgICBwcml2LT53ZWJTZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0
dGluZ3NfbmV3KCk7CisgICAgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyh3ZWJWaWV3
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPndlYlNldHRpbmdzLCAibm90aWZ5IiwgR19D
QUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KSwgd2ViVmlldyk7CisgICAg
Z19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAic2NyZWVuLWNoYW5nZWQiLCBHX0NBTExCQUNLKHdl
YmtpdF93ZWJfdmlld19zY3JlZW5fY2hhbmdlZCksIE5VTEwpOwogfQogCiBHdGtXaWRnZXQqIHdl
YmtpdF93ZWJfdmlld19uZXcodm9pZCkKQEAgLTEyMTUsMTEgKzEyNTUsMTIgQEAgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdlYktpdAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfU0VUVElOR1Mod2ViU2V0dGluZ3MpKTsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRl
KiB3ZWJWaWV3RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlld0RhdGEtPndlYlNl
dHRpbmdzLCAoZ3BvaW50ZXIpd2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSwgd2ViVmll
dyk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlld0RhdGEtPndlYlNldHRpbmdzKTsKKyAgICBX
ZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMocHJpdi0+d2ViU2V0dGluZ3MsIChncG9pbnRl
cil3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5LCB3ZWJWaWV3KTsKKyAgICBnX29iamVj
dF91bnJlZihwcml2LT53ZWJTZXR0aW5ncyk7CiAgICAgZ19vYmplY3RfcmVmKHdlYlNldHRpbmdz
KTsKLSAgICB3ZWJWaWV3RGF0YS0+d2ViU2V0dGluZ3MgPSB3ZWJTZXR0aW5nczsKKyAgICBwcml2
LT53ZWJTZXR0aW5ncyA9IHdlYlNldHRpbmdzOwogICAgIHdlYmtpdF93ZWJfdmlld191cGRhdGVf
c2V0dGluZ3Mod2ViVmlldyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJTZXR0aW5ncywgIm5v
dGlmeSIsIEdfQ0FMTEJBQ0sod2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSksIHdlYlZp
ZXcpOwogfQpAQCAtMTIyOCw4ICsxMjY5LDggQEAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYmtpdF93
ZWJfdmlld19nZXRfcwogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSwgTlVMTCk7CiAKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmll
d0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAgcmV0dXJu
IHdlYlZpZXdEYXRhLT53ZWJTZXR0aW5nczsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJp
diA9IHdlYlZpZXctPnByaXY7CisgICAgcmV0dXJuIHByaXYtPndlYlNldHRpbmdzOwogfQogCiAv
KioKQEAgLTEyNDMsNyArMTI4NCw4IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9tYWludGFp
bnNfYmFja18KIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CiAKLSAgICBjb3JlKHdlYlZpZXcpLT5iYWNrRm9yd2FyZExpc3QoKS0+c2V0RW5hYmxl
ZChmbGFnKTsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7
CisgICAgcHJpdi0+Y29yZVBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5zZXRFbmFibGVkKGZsYWcp
OwogfQogCiAvKioKQEAgLTEyNTgsMTIgKzEzMDAsMTIgQEAgV2ViS2l0V2ViQmFja0ZvcndhcmRM
aXN0KiB3ZWJraXRfd2ViX3ZpZQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfVklFVyh3ZWJWaWV3KSwgTlVMTCk7CiAKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSog
d2ViVmlld0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUoV0VCS0lUX1dFQl9WSUVX
KHdlYlZpZXcpKTsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnBy
aXY7CiAKLSAgICBpZiAoIXdlYlZpZXdEYXRhLT5jb3JlUGFnZSB8fCAhd2ViVmlld0RhdGEtPmNv
cmVQYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+ZW5hYmxlZCgpKQorICAgIGlmICghcHJpdi0+Y29y
ZVBhZ2UgfHwgIXByaXYtPmNvcmVQYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+ZW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiB3ZWJWaWV3RGF0YS0+YmFja0Zvcndh
cmRMaXN0OworICAgIHJldHVybiBwcml2LT5iYWNrRm9yd2FyZExpc3Q7CiB9CiAKIC8qKgpAQCAt
MTI4MCw3ICsxMzIyLDEwIEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19nb190b19iYWNrX2Zv
cncKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyks
IEZBTFNFKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllf
SVRFTShpdGVtKSwgRkFMU0UpOwogCi0gICAgY29yZSh3ZWJWaWV3KS0+Z29Ub0l0ZW0oY29yZShp
dGVtKSwgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZCk7CisgICAgV2ViS2l0V2ViVmll
d1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworCisgICAgLy8gRklYTUU6IFRoaXMgYWx3
YXlzIHJldHVybnMgVFJVRQorICAgIHByaXYtPmNvcmVQYWdlLT5nb1RvSXRlbShjb3JlKGl0ZW0p
LCBGcmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkKTsKICAgICByZXR1cm4gVFJVRTsKIH0K
IApAQCAtMTI4OSw2ICsxMzM0LDggQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2dvX3RvX2Jh
Y2tfZm9ydwogICogQHdlYlZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldwogICoKICAqIEdvIHRvIHRo
ZSBwcmV2aW91cyBwYWdlLCBpZiB0aGVyZSdzIGFueS4KKyAqCisgKiBARGVwcmVjYXRlZDogVXNl
IHdlYmtpdF93ZWJfdmlld19nb19iYWNrKCkgaW5zdGVhZC4KICAqLwogdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfZ29fYmFja3dhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKQEAgLTEzMjIsNyAr
MTM2OSw5IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2dvX2JhY2tfb3JfZm9yd2FyZCgKIHsKICAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAKLSAgICBG
cmFtZSogZnJhbWUgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZSh3ZWJWaWV3
KSk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworCisg
ICAgRnJhbWUqIGZyYW1lID0gcHJpdi0+Y29yZVBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKICAgICBmcmFtZS0+bG9hZGVyKCktPmdvQmFja09yRm9yd2FyZChz
dGVwcyk7CiB9CiAKQEAgLTEzMzYsNyArMTM4NSw4IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2dv
X2ZvcndhcmQoV2ViS2l0V2UKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSk7CiAKLSAgICBjb3JlKHdlYlZpZXcpLT5nb0ZvcndhcmQoKTsKKyAgICBX
ZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAgcHJpdi0+Y29y
ZVBhZ2UtPmdvRm9yd2FyZCgpOwogfQogCiAvKioKQEAgLTEzNDUsNiArMTM5NSw4IEBAIHZvaWQg
d2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQoV2ViS2l0V2UKICAqCiAgKiBDaGVja3Mgd2hldGhl
ciB0aGUgdmlldyBjYW4gZ28gYmFjayB0byB0aGUgcHJldmlvdXMgcGFnZQogICoKKyAqIEBEZXBy
ZWNhdGVkOiBVc2Ugd2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKCkgaW5zdGVhZC4KKyAqCiAg
KiBSZXR1cm4gdmFsdWU6ICVUUlVFIGlmIHRoZSBwYWdlIGNhbiBnbyBiYWNrLCBvdGhlcndpc2Ug
cmV0dXJucyAlRkFMU0UKICAqLwogZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNr
d2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtMTM2NSw4ICsxNDE3LDkgQEAgZ2Jvb2xl
YW4gd2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKFdlYgogewogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCi0gICAgUGFnZSog
cGFnZSA9IGNvcmUod2ViVmlldyk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3
ZWJWaWV3LT5wcml2OwogCisgICAgUGFnZSogcGFnZSA9IHByaXYtPmNvcmVQYWdlOwogICAgIGlm
ICghcGFnZSB8fCAhcGFnZS0+YmFja0ZvcndhcmRMaXN0KCktPmJhY2tJdGVtKCkpCiAgICAgICAg
IHJldHVybiBGQUxTRTsKIApAQCAtMTM4OCw3ICsxNDQxLDkgQEAgZ2Jvb2xlYW4gd2Via2l0X3dl
Yl92aWV3X2Nhbl9nb19iYWNrX29yXwogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gY29y
ZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldykpOworICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIEZyYW1lKiBmcmFtZSA9
IHByaXYtPmNvcmVQYWdlLT5tYWluRnJhbWUoKTsKICAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigp
LT5jYW5Hb0JhY2tPckZvcndhcmQoc3RlcHMpOwogfQogCkBAIC0xNDA0LDEyICsxNDU5LDEwIEBA
IGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fZ29fZm9yd2FyZCgKIHsKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKIAotICAg
IFBhZ2UqIHBhZ2UgPSBjb3JlKHdlYlZpZXcpOwotCi0gICAgaWYgKCFwYWdlKQotICAgICAgICBy
ZXR1cm4gRkFMU0U7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5w
cml2OwogCi0gICAgaWYgKCFwYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+Zm9yd2FyZEl0ZW0oKSkK
KyAgICBQYWdlKiBwYWdlID0gcHJpdi0+Y29yZVBhZ2U7CisgICAgaWYgKCFwYWdlIHx8ICFwYWdl
LT5iYWNrRm9yd2FyZExpc3QoKS0+Zm9yd2FyZEl0ZW0oKSkKICAgICAgICAgcmV0dXJuIEZBTFNF
OwogCiAgICAgcmV0dXJuIFRSVUU7CkBAIC0xNDIwLDE3ICsxNDczLDE5IEBAIHZvaWQgd2Via2l0
X3dlYl92aWV3X29wZW4oV2ViS2l0V2ViVmlldyoKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbCh1cmkpOwogCi0g
ICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2Vi
VmlldykpOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsK
KworICAgIC8vIEZJWE1FOiBEZXByZWNhdGVkU3RyaW5nIGlzIGRlcHJlY2F0ZWQKICAgICBEZXBy
ZWNhdGVkU3RyaW5nIHN0cmluZyA9IERlcHJlY2F0ZWRTdHJpbmc6OmZyb21VdGY4KHVyaSk7Ci0g
ICAgZnJhbWUtPmxvYWRlcigpLT5sb2FkKFJlc291cmNlUmVxdWVzdChLVVJMKHN0cmluZykpKTsK
KyAgICBwcml2LT5jb3JlUGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5sb2FkKFJlc291cmNl
UmVxdWVzdChLVVJMKHN0cmluZykpKTsKIH0KIAogdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVsb2Fk
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldykpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldykpOwotICAgIGZyYW1lLT5sb2FkZXIoKS0+
cmVsb2FkKCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2
OworICAgIHByaXYtPmNvcmVQYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPnJlbG9hZCgpOwog
fQogCiB2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBjb25zdCBnY2hhciogY29udGVudCwgY29uc3QgZ2NoYXIqIGNvbnRlbnRNaW1lVHlwZSwg
Y29uc3QgZ2NoYXIqIGNvbnRlbnRFbmNvZGluZywgY29uc3QgZ2NoYXIqIGJhc2VVcmkpCkBAIC0x
NDM4LDEzICsxNDkzLDE0IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKFdlYktp
dFcKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAg
ICAgZ19yZXR1cm5faWZfZmFpbChjb250ZW50KTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUo
d2Via2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1lKHdlYlZpZXcpKTsKKyAgICBXZWJLaXRXZWJW
aWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAKKyAgICAvLyBGSVhNRTogRGVwcmVj
YXRlZFN0cmluZyBpcyBkZXByZWNhdGVkCiAgICAgS1VSTCB1cmwoYmFzZVVyaSA/IERlcHJlY2F0
ZWRTdHJpbmc6OmZyb21VdGY4KGJhc2VVcmkpIDogIiIpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IG5ldyBTaGFyZWRCdWZmZXIoc3RyZHVwKGNvbnRlbnQpLCBzdHJs
ZW4oY29udGVudCkpOwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKHNoYXJlZEJ1
ZmZlci5yZWxlYXNlKCksIGNvbnRlbnRNaW1lVHlwZSA/IFN0cmluZyhjb250ZW50TWltZVR5cGUp
IDogInRleHQvaHRtbCIsIGNvbnRlbnRFbmNvZGluZyA/IFN0cmluZyhjb250ZW50RW5jb2Rpbmcp
IDogIlVURi04IiwgS1VSTCgiYWJvdXQ6YmxhbmsiKSwgdXJsKTsKIAotICAgIGZyYW1lLT5sb2Fk
ZXIoKS0+bG9hZChSZXNvdXJjZVJlcXVlc3QodXJsKSwgc3Vic3RpdHV0ZURhdGEpOworICAgIHBy
aXYtPmNvcmVQYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmxvYWQoUmVzb3VyY2VSZXF1ZXN0
KHVybCksIHN1YnN0aXR1dGVEYXRhKTsKIH0KIAogdm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9o
dG1sX3N0cmluZyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogY29udGVudCwg
Y29uc3QgZ2NoYXIqIGJhc2VVcmkpCkBAIC0xNDU5LDkgKzE1MTUsOSBAQCB2b2lkIHdlYmtpdF93
ZWJfdmlld19zdG9wX2xvYWRpbmcoV2ViS2l0CiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldykpOworICAgIFdlYktpdFdlYlZpZXdQ
cml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKIAotICAgIGlmIChGcmFtZUxvYWRlciogbG9h
ZGVyID0gZnJhbWUtPmxvYWRlcigpKQorICAgIGlmIChGcmFtZUxvYWRlciogbG9hZGVyID0gcHJp
di0+Y29yZVBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKSkKICAgICAgICAgbG9hZGVyLT5zdG9w
QWxsTG9hZGVycygpOwogfQogCkBAIC0xNDg1LDggKzE1NDEsOCBAQCBnYm9vbGVhbiB3ZWJraXRf
d2ViX3ZpZXdfc2VhcmNoX3RleHQoV2ViCiAgICAgVGV4dENhc2VTZW5zaXRpdml0eSBjYXNlU2Vu
c2l0aXZpdHkgPSBjYXNlU2Vuc2l0aXZlID8gVGV4dENhc2VTZW5zaXRpdmUgOiBUZXh0Q2FzZUlu
c2Vuc2l0aXZlOwogICAgIEZpbmREaXJlY3Rpb24gZGlyZWN0aW9uID0gZm9yd2FyZCA/IEZpbmRE
aXJlY3Rpb25Gb3J3YXJkIDogRmluZERpcmVjdGlvbkJhY2t3YXJkOwogCi0gICAgV2ViS2l0V2Vi
Vmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdl
YlZpZXcpOwotICAgIHJldHVybiB3ZWJWaWV3RGF0YS0+Y29yZVBhZ2UtPmZpbmRTdHJpbmcoU3Ry
aW5nOjpmcm9tVVRGOChzdHJpbmcpLCBjYXNlU2Vuc2l0aXZpdHksIGRpcmVjdGlvbiwgc2hvdWxk
V3JhcCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2Owor
ICAgIHJldHVybiBwcml2LT5jb3JlUGFnZS0+ZmluZFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KHN0
cmluZyksIGNhc2VTZW5zaXRpdml0eSwgZGlyZWN0aW9uLCBzaG91bGRXcmFwKTsKIH0KIAogLyoq
CkBAIC0xNTA3LDggKzE1NjMsOCBAQCBndWludCB3ZWJraXRfd2ViX3ZpZXdfbWFya190ZXh0X21h
dGNoZXMoCiAKICAgICBUZXh0Q2FzZVNlbnNpdGl2aXR5IGNhc2VTZW5zaXRpdml0eSA9IGNhc2VT
ZW5zaXRpdmUgPyBUZXh0Q2FzZVNlbnNpdGl2ZSA6IFRleHRDYXNlSW5zZW5zaXRpdmU7CiAKLSAg
ICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VU
X1BSSVZBVEUod2ViVmlldyk7Ci0gICAgcmV0dXJuIHdlYlZpZXdEYXRhLT5jb3JlUGFnZS0+bWFy
a0FsbE1hdGNoZXNGb3JUZXh0KFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgY2FzZVNlbnNpdGl2
aXR5LCBmYWxzZSwgbGltaXQpOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2Vi
Vmlldy0+cHJpdjsKKyAgICByZXR1cm4gcHJpdi0+Y29yZVBhZ2UtPm1hcmtBbGxNYXRjaGVzRm9y
VGV4dChTdHJpbmc6OmZyb21VVEY4KHN0cmluZyksIGNhc2VTZW5zaXRpdml0eSwgZmFsc2UsIGxp
bWl0KTsKIH0KIAogLyoqCkBAIC0xNTIyLDkgKzE1NzgsOSBAQCB2b2lkIHdlYmtpdF93ZWJfdmll
d19zZXRfaGlnaGxpZ2h0X3RleHRfCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldykpOwogCi0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdE
YXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwotICAgIFdlYktpdFdl
YkZyYW1lUHJpdmF0ZSogZnJhbWVEYXRhID0gV0VCS0lUX1dFQl9GUkFNRV9HRVRfUFJJVkFURSh3
ZWJWaWV3RGF0YS0+bWFpbkZyYW1lKTsKLSAgICBmcmFtZURhdGEtPmZyYW1lLT5zZXRNYXJrZWRU
ZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHNob3VsZEhpZ2hsaWdodCk7CisgICAgV2ViS2l0V2Vi
Vmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIFdlYktpdFdlYkZyYW1lUHJp
dmF0ZSogZnJhbWVQcml2ID0gV0VCS0lUX1dFQl9GUkFNRV9HRVRfUFJJVkFURShwcml2LT5tYWlu
RnJhbWUpOworICAgIGZyYW1lUHJpdi0+Y29yZUZyYW1lLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0Fy
ZUhpZ2hsaWdodGVkKHNob3VsZEhpZ2hsaWdodCk7CiB9CiAKIC8qKgpAQCAtMTUzNywxNiArMTU5
MywxNiBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld191bm1hcmtfdGV4dF9tYXRjaGVzCiB7CiAgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogCi0gICAgV2Vi
S2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklW
QVRFKHdlYlZpZXcpOwotICAgIHJldHVybiB3ZWJWaWV3RGF0YS0+Y29yZVBhZ2UtPnVubWFya0Fs
bFRleHRNYXRjaGVzKCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3
LT5wcml2OworICAgIHJldHVybiBwcml2LT5jb3JlUGFnZS0+dW5tYXJrQWxsVGV4dE1hdGNoZXMo
KTsKIH0KIAogV2ViS2l0V2ViRnJhbWUqIHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZShX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgTlVMTCk7CiAKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0
ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0g
ICAgcmV0dXJuIHdlYlZpZXdEYXRhLT5tYWluRnJhbWU7CisgICAgV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHJldHVybiBwcml2LT5tYWluRnJhbWU7CiB9
CiAKIHZvaWQgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfc2NyaXB0KFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIGNvbnN0IGdjaGFyKiBzY3JpcHQpCkBAIC0xNTU0LDggKzE2MTAsOCBAQCB2b2lkIHdl
YmtpdF93ZWJfdmlld19leGVjdXRlX3NjcmlwdChXZWJLCiAgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0
KTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Via2l0X3dlYl92aWV3X2dldF9tYWluX2Zy
YW1lKHdlYlZpZXcpKTsKLSAgICBpZiAoRnJhbWVMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2Fk
ZXIoKSkKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Cisg
ICAgaWYgKEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBwcml2LT5jb3JlUGFnZS0+bWFpbkZyYW1lKCkt
PmxvYWRlcigpKQogICAgICAgICBsb2FkZXItPmV4ZWN1dGVTY3JpcHQoU3RyaW5nOjpmcm9tVVRG
OChzY3JpcHQpLCB0cnVlKTsKIH0KIApAQCAtMTU3MSw3ICsxNjI3LDkgQEAgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2Nhbl9jdXRfY2xpcGJvYQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCi0gICAgRnJhbWUqIGZyYW1l
ID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgp
OworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAg
IEZyYW1lKiBmcmFtZSA9IHByaXYtPmNvcmVQYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CiAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuQ3V0KCkgfHwg
ZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTEN1dCgpOwogfQogCkBAIC0xNTg3LDcgKzE2NDUsOSBA
QCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2NvcHlfY2xpcGJvCiB7CiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAKLSAg
ICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3
LT5wcml2OworCisgICAgRnJhbWUqIGZyYW1lID0gcHJpdi0+Y29yZVBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LT5jYW5Db3B5KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTENvcHkoKTsKIH0KIApAQCAt
MTYwMyw3ICsxNjYzLDkgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9wYXN0ZV9jbGlw
YgogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3
KSwgRkFMU0UpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRl
KiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIEZyYW1lKiBmcmFtZSA9IHByaXYtPmNvcmVQ
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS0+Y2FuUGFzdGUoKSB8fCBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1M
UGFzdGUoKTsKIH0KIApAQCAtMTY1OSw3ICsxNzIxLDkgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
ZGVsZXRlX3NlbGVjdGlvbihXZQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpKTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICBGcmFtZSogZnJhbWUgPSBwcml2
LT5jb3JlUGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAg
IGZyYW1lLT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0ZSgpOwogfQogCkBAIC0xNjc1LDggKzE3Mzks
OCBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfaGFzX3NlbGVjdGlvbihXCiB7CiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAK
LSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdf
R0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAgcmV0dXJuICF3ZWJWaWV3RGF0YS0+Y29yZVBhZ2Ut
PnNlbGVjdGlvbigpLmlzTm9uZSgpOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0g
d2ViVmlldy0+cHJpdjsKKyAgICByZXR1cm4gcHJpdi0+Y29yZVBhZ2UtPnNlbGVjdGlvbigpLmlz
Tm9uZSgpOwogfQogCiAvKioKQEAgLTE2OTEsNyArMTc1NSw5IEBAIGdjaGFyKiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3NlbGVjdGVkX3RleHQKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwogCi0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3
ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIFdl
YktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIEZyYW1lKiBm
cmFtZSA9IHByaXYtPmNvcmVQYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7CiAgICAgcmV0dXJuIGdfc3RyZHVwKGZyYW1lLT5zZWxlY3RlZFRleHQoKS51dGY4KCku
ZGF0YSgpKTsKIH0KIApAQCAtMTcyNCwxMCArMTc5MCw4IEBAIGdib29sZWFuIHdlYmtpdF93ZWJf
dmlld19nZXRfZWRpdGFibGUoV2UKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRl
KiB3ZWJWaWV3RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAg
ICBBU1NFUlQod2ViVmlld0RhdGEpOwotCi0gICAgcmV0dXJuIHdlYlZpZXdEYXRhLT5lZGl0YWJs
ZTsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAg
cmV0dXJuIHByaXYtPmVkaXRhYmxlOwogfQogCiAvKioKQEAgLTE3NTMsMTcgKzE4MTcsMTYgQEAg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2VkaXRhYmxlKFdlYktpdAogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKICAgICBmbGFnID0gZmxhZyAhPSBG
QUxTRTsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3RGF0YSA9IFdFQktJVF9X
RUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAgICBBU1NFUlQod2ViVmlld0RhdGEpOwor
ICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKIAotICAgIEZy
YW1lKiBtYWluRnJhbWUgPSBjb3JlKHdlYlZpZXdEYXRhLT5tYWluRnJhbWUpOworICAgIEZyYW1l
KiBtYWluRnJhbWUgPSBwcml2LT5jb3JlUGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgZ19yZXR1cm5f
aWZfZmFpbChtYWluRnJhbWUpOwogCiAgICAgLy8gVE9ETzogV2hhdCBoYXBwZW5zIHdoZW4gdGhl
IGZyYW1lIGlzIHJlcGxhY2VkPwotICAgIGlmIChmbGFnID09IHdlYlZpZXdEYXRhLT5lZGl0YWJs
ZSkKKyAgICBpZiAoZmxhZyA9PSBwcml2LT5lZGl0YWJsZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgd2ViVmlld0RhdGEtPmVkaXRhYmxlID0gZmxhZzsKKyAgICBwcml2LT5lZGl0YWJsZSA9IGZs
YWc7CiAKICAgICBpZiAoZmxhZykgewogICAgICAgICBtYWluRnJhbWUtPmFwcGx5RWRpdGluZ1N0
eWxlVG9Cb2R5RWxlbWVudCgpOwpAQCAtMTc5MCw4ICsxODUzLDggQEAgR3RrVGFyZ2V0TGlzdCog
d2Via2l0X3dlYl92aWV3X2dldF9jb3B5XwogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgTlVMTCk7CiAKLSAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7
Ci0gICAgcmV0dXJuIHdlYlZpZXdEYXRhLT5jb3B5X3RhcmdldF9saXN0OworICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICByZXR1cm4gcHJpdi0+Y29w
eV90YXJnZXRfbGlzdDsKIH0KIAogLyoqCkBAIC0xODEwLDggKzE4NzMsOCBAQCBHdGtUYXJnZXRM
aXN0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Bhc3RlCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKIAotICAgIFdlYktpdFdlYlZp
ZXdQcml2YXRlKiB3ZWJWaWV3RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJW
aWV3KTsKLSAgICByZXR1cm4gd2ViVmlld0RhdGEtPnBhc3RlX3RhcmdldF9saXN0OworICAgIFdl
YktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICByZXR1cm4gcHJp
di0+cGFzdGVfdGFyZ2V0X2xpc3Q7CiB9CiAKIH0KSW5kZXg6IFdlYktpdC9ndGsvV2ViVmlldy93
ZWJraXRwcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0
cHJpdmF0ZS5jcHAJKFJldmlzaW9uIDI5ODQ0KQorKysgV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtp
dHByaXZhdGUuY3BwCShBcmJlaXRza29waWUpCkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBXZWJLaXRXZWJWaWV3KiBnZXRWaWV3RnJvbUZyYW1lKFdlYktpdFdlYkZyYW1l
KiBmcmFtZSkKIHsKLSAgICByZXR1cm4gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcoZnJh
bWUpOworICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfRlJBTUVf
R0VUX1BSSVZBVEUoZnJhbWUpOworICAgIHJldHVybiBwcml2LT53ZWJWaWV3OwogfQogCiBXZWJD
b3JlOjpGcmFtZSogY29yZShXZWJLaXRXZWJGcmFtZSogZnJhbWUpCkBAIC00Nyw4ICs0OCw4IEBA
IFdlYkNvcmU6OkZyYW1lKiBjb3JlKFdlYktpdFdlYkZyYW1lKiBmcmEKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogZnJhbWVf
ZGF0YSA9IFdFQktJVF9XRUJfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOwotICAgIHJldHVybiBm
cmFtZV9kYXRhID8gZnJhbWVfZGF0YS0+ZnJhbWUgOiAwOworICAgIFdlYktpdFdlYkZyYW1lUHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOworICAgIHJl
dHVybiBwcml2ID8gcHJpdi0+Y29yZUZyYW1lIDogMDsKIH0KIAogV2ViS2l0V2ViRnJhbWUqIGtp
dChXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKQpAQCAtNjYsOCArNjcsOCBAQCBXZWJDb3JlOjpQ
YWdlKiBjb3JlKFdlYktpdFdlYlZpZXcqIHdlYlZpCiAgICAgaWYgKCF3ZWJWaWV3KQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3RGF0YSA9IFdF
QktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAgICByZXR1cm4gd2ViVmlld0Rh
dGEgPyB3ZWJWaWV3RGF0YS0+Y29yZVBhZ2UgOiAwOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRl
KiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOworICAgIHJldHVy
biBwcml2ID8gcHJpdi0+Y29yZVBhZ2UgOiAwOwogfQogCiBXZWJLaXRXZWJWaWV3KiBraXQoV2Vi
Q29yZTo6UGFnZSogY29yZVBhZ2UpCkluZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2Vi
dmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJ2aWV3LmgJ
KFJldmlzaW9uIDI5ODQ0KQorKysgV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHdlYnZpZXcuaAko
QXJiZWl0c2tvcGllKQpAQCAtMjQsOSArMjQsNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQmFzZS5oPgogCiAjaW5jbHVkZSAid2Via2l0ZGVmaW5lcy5oIgotI2luY2x1ZGUgIndlYmtp
dHdlYmJhY2tmb3J3YXJkbGlzdC5oIgotI2luY2x1ZGUgIndlYmtpdHdlYmhpc3RvcnlpdGVtLmgi
Ci0jaW5jbHVkZSAid2Via2l0d2Vic2V0dGluZ3MuaCIKIAogR19CRUdJTl9ERUNMUwogCkBAIC0z
Nyw2ICszNCw3IEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX0lTX1dFQl9WSUVXX0NM
QVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBF
X1dFQl9WSUVXKSkKICNkZWZpbmUgV0VCS0lUX1dFQl9WSUVXX0dFVF9DTEFTUyhvYmopICAoR19U
WVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9WSUVXLCBXZWJL
aXRXZWJWaWV3Q2xhc3MpKQogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUg
V2ViS2l0V2ViVmlld1ByaXZhdGU7CiAKIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX05BVklH
QVRJT05fUkVTUE9OU0VfQUNDRVBULApAQCAtNTIsNiArNTAsOCBAQCB0eXBlZGVmIGVudW0KIAog
c3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBHdGtDb250YWluZXIgcGFyZW50OworCisgICAg
V2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXY7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdD
bGFzcyB7CkluZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJoaXN0b3J5aXRlbS5j
cHAJKFJldmlzaW9uIDI5ODQ0KQorKysgV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHdlYmhpc3Rv
cnlpdGVtLmNwcAkoQXJiZWl0c2tvcGllKQpAQCAtMzUsNyArMzUsNyBAQCBleHRlcm4gIkMiIHsK
IAogc3RydWN0IF9XZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUgewogICAgIFdlYkNvcmU6Okhp
c3RvcnlJdGVtKiBoaXN0b3J5SXRlbTsKLSAgICAKKwogICAgIGdjaGFyKiB0aXRsZTsKICAgICBn
Y2hhciogYWx0ZXJuYXRlVGl0bGU7CiAgICAgZ2NoYXIqIHVyaTsKQEAgLTQ5LDE0ICs0OSwxNCBA
QCBHX0RFRklORV9UWVBFKFdlYktpdFdlYkhpc3RvcnlJdGVtLCB3ZWJrCiAKIHN0YXRpYyBHSGFz
aFRhYmxlKiB3ZWJraXRfaGlzdG9yeV9pdGVtcygpCiB7Ci0gICAgc3RhdGljIEdIYXNoVGFibGUq
IGhpc3RvcnlJdGVtcyA9IGdfaGFzaF90YWJsZV9uZXcoZ19kaXJlY3RfaGFzaCwgZ19kaXJlY3Rf
ZXF1YWwpOyAgIAorICAgIHN0YXRpYyBHSGFzaFRhYmxlKiBoaXN0b3J5SXRlbXMgPSBnX2hhc2hf
dGFibGVfbmV3KGdfZGlyZWN0X2hhc2gsIGdfZGlyZWN0X2VxdWFsKTsKICAgICByZXR1cm4gaGlz
dG9yeUl0ZW1zOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfaGlzdG9yeV9pdGVtX2FkZChXZWJL
aXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0sIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBo
aXN0b3J5SXRlbSkgCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RP
UllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkpOwotICAgIAorCiAgICAgR0hhc2hUYWJsZSogdGFibGUg
PSB3ZWJraXRfaGlzdG9yeV9pdGVtcygpOwogCiAgICAgaGlzdG9yeUl0ZW0tPnJlZigpOwpAQCAt
NjksMzcgKzY5LDM4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9oaXN0b3J5X2l0ZW1fcmVtb3ZlKFcK
ICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0gPSAoV2ViS2l0V2ViSGlz
dG9yeUl0ZW0qKSBnX2hhc2hfdGFibGVfbG9va3VwKHRhYmxlLCBoaXN0b3J5SXRlbSk7CiAKICAg
ICBnX3JldHVybl9pZl9mYWlsKHdlYkhpc3RvcnlJdGVtICE9IE5VTEwpOwotICAgIAorCiAgICAg
Z19oYXNoX3RhYmxlX3JlbW92ZSh0YWJsZSwgaGlzdG9yeUl0ZW0pOwogICAgIGhpc3RvcnlJdGVt
LT5kZXJlZigpOwogICAgIGdfb2JqZWN0X3VucmVmKHdlYkhpc3RvcnlJdGVtKTsKIH0KLSAgICAK
Kwogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZGlzcG9zZShHT2JqZWN0KiBv
YmplY3QpCiB7Ci0gICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIGl0ZW0gPSBXRUJLSVRfV0VCX0hJ
U1RPUllfSVRFTShvYmplY3QpOworICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5
SXRlbSA9IFdFQktJVF9XRUJfSElTVE9SWV9JVEVNKG9iamVjdCk7CisgICAgV2ViS2l0V2ViSGlz
dG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0tPnByaXY7CiAKLSAgICB3ZWJr
aXRfaGlzdG9yeV9pdGVtX3JlbW92ZShpdGVtLT5wcml2LT5oaXN0b3J5SXRlbSk7Ci0gICAgCi0g
ICAgZGVsZXRlIGl0ZW0tPnByaXYtPmhpc3RvcnlJdGVtOworICAgIHdlYmtpdF9oaXN0b3J5X2l0
ZW1fcmVtb3ZlKHByaXYtPmhpc3RvcnlJdGVtKTsKKyAgICBkZWxldGUgcHJpdi0+aGlzdG9yeUl0
ZW07CiAKICAgICAvKiBkZXN0cm95IHRhYmxlIGlmIGVtcHR5ICovCiAgICAgR0hhc2hUYWJsZSog
dGFibGUgPSB3ZWJraXRfaGlzdG9yeV9pdGVtcygpOwogICAgIGlmICghZ19oYXNoX3RhYmxlX3Np
emUodGFibGUpKQogICAgICAgICBnX2hhc2hfdGFibGVfZGVzdHJveSh0YWJsZSk7Ci0gICAgCisK
ICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9wYXJlbnRfY2xhc3Mp
LT5kaXNwb3NlKG9iamVjdCk7CiB9Ci0gICAgCisKIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9o
aXN0b3J5X2l0ZW1fZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewotICAgIFdlYktpdFdlYkhp
c3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9IFdFQktJVF9XRUJfSElTVE9SWV9JVEVNKG9iamVjdCk7
CisgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gV0VCS0lUX1dFQl9I
SVNUT1JZX0lURU0ob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUqIHBy
aXYgPSB3ZWJIaXN0b3J5SXRlbS0+cHJpdjsKIAotICAgIGdfZnJlZShoaXN0b3J5SXRlbS0+cHJp
di0+dGl0bGUpOwotICAgIGdfZnJlZShoaXN0b3J5SXRlbS0+cHJpdi0+YWx0ZXJuYXRlVGl0bGUp
OwotICAgIGdfZnJlZShoaXN0b3J5SXRlbS0+cHJpdi0+dXJpKTsKLSAgICBnX2ZyZWUoaGlzdG9y
eUl0ZW0tPnByaXYtPm9yaWdpbmFsVXJpKTsKKyAgICBnX2ZyZWUocHJpdi0+dGl0bGUpOworICAg
IGdfZnJlZShwcml2LT5hbHRlcm5hdGVUaXRsZSk7CisgICAgZ19mcmVlKHByaXYtPnVyaSk7Cisg
ICAgZ19mcmVlKHByaXYtPm9yaWdpbmFsVXJpKTsKIAogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtp
dF93ZWJfaGlzdG9yeV9pdGVtX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CkBA
IC0xMjAsMTQgKzEyMSwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9p
bml0CiB9CiAKIC8qIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgV2ViSGlzdG9yeUl0
ZW0gaW5zdGFuY2Ugd2hlbiBuZWVkZWQgKi8KLVdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJraXRf
d2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0q
IGl0ZW0pCitXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3
X3dpdGhfY29yZV9pdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSkKIHsKLSAg
ICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0gPSBraXQoaXRlbSk7CisgICAg
V2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0ga2l0KGhpc3RvcnlJdGVtKTsK
IAogICAgIGlmICghd2ViSGlzdG9yeUl0ZW0pIHsKICAgICAgICAgd2ViSGlzdG9yeUl0ZW0gPSBX
RUJLSVRfV0VCX0hJU1RPUllfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0hJU1RP
UllfSVRFTSwgTlVMTCkpOwotICAgICAgICB3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+aGlzdG9yeUl0
ZW0gPSBpdGVtOwotICAgICAgICB3ZWJraXRfaGlzdG9yeV9pdGVtX2FkZCh3ZWJIaXN0b3J5SXRl
bSwgd2ViSGlzdG9yeUl0ZW0tPnByaXYtPmhpc3RvcnlJdGVtKTsKKyAgICAgICAgV2ViS2l0V2Vi
SGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0tPnByaXY7CisgICAgICAg
IHByaXYtPmhpc3RvcnlJdGVtID0gaGlzdG9yeUl0ZW07CisgICAgICAgIHdlYmtpdF9oaXN0b3J5
X2l0ZW1fYWRkKHdlYkhpc3RvcnlJdGVtLCBwcml2LT5oaXN0b3J5SXRlbSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHdlYkhpc3RvcnlJdGVtOwpAQCAtMTQ0LDEwICsxNDYsMTEgQEAgV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeQogV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdl
YmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ldyh2b2lkKQogewogICAgIFdlYktpdFdlYkhpc3RvcnlJ
dGVtKiB3ZWJIaXN0b3J5SXRlbSA9IFdFQktJVF9XRUJfSElTVE9SWV9JVEVNKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfSElTVE9SWV9JVEVNLCBOVUxMKSk7CisgICAgV2ViS2l0V2ViSGlz
dG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0tPnByaXY7CiAKLSAgICB3ZWJI
aXN0b3J5SXRlbS0+cHJpdi0+aGlzdG9yeUl0ZW0gPSBuZXcgV2ViQ29yZTo6SGlzdG9yeUl0ZW0o
KTsKKyAgICBwcml2LT5oaXN0b3J5SXRlbSA9IG5ldyBXZWJDb3JlOjpIaXN0b3J5SXRlbSgpOwog
Ci0gICAgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQod2ViSGlzdG9yeUl0ZW0sIHdlYkhpc3RvcnlJ
dGVtLT5wcml2LT5oaXN0b3J5SXRlbSk7CisgICAgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQod2Vi
SGlzdG9yeUl0ZW0sIHByaXYtPmhpc3RvcnlJdGVtKTsKIAogICAgIHJldHVybiB3ZWJIaXN0b3J5
SXRlbTsKIH0KQEAgLTE2OCwxMSArMTcxLDEyIEBAIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJr
aXRfd2ViX2hpc3RvcnkKICAgICBXZWJDb3JlOjpTdHJpbmcgaGlzdG9yeVRpdGxlKHRpdGxlKTsK
IAogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSA9IHdlYmtpdF93ZWJf
aGlzdG9yeV9pdGVtX25ldygpOworICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogcHJp
diA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OworCisgICAgcHJpdi0+aGlzdG9yeUl0ZW0gPSBuZXcg
V2ViQ29yZTo6SGlzdG9yeUl0ZW0oaGlzdG9yeVVyaSwgaGlzdG9yeVRpdGxlKTsKIAotICAgIHdl
Ykhpc3RvcnlJdGVtLT5wcml2LT5oaXN0b3J5SXRlbSA9IG5ldyBXZWJDb3JlOjpIaXN0b3J5SXRl
bShoaXN0b3J5VXJpLCBoaXN0b3J5VGl0bGUpOworICAgIHdlYmtpdF9oaXN0b3J5X2l0ZW1fYWRk
KHdlYkhpc3RvcnlJdGVtLCBwcml2LT5oaXN0b3J5SXRlbSk7CiAKLSAgICB3ZWJraXRfaGlzdG9y
eV9pdGVtX2FkZCh3ZWJIaXN0b3J5SXRlbSwgd2ViSGlzdG9yeUl0ZW0tPnByaXYtPmhpc3RvcnlJ
dGVtKTsKLSAgICAgICAgCiAgICAgcmV0dXJuIHdlYkhpc3RvcnlJdGVtOwogfQogCkBAIC0xODYs
MTcgKzE5MCwxNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0CiB7
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lURU0od2Vi
SGlzdG9yeUl0ZW0pLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtID0g
Y29yZShXRUJLSVRfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkpOworICAgIFdlYkNv
cmU6Okhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9IGNvcmUoV0VCS0lUX1dFQl9ISVNUT1JZX0lU
RU0od2ViSGlzdG9yeUl0ZW0pKTsKIAotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGl0ZW0gIT0g
TlVMTCwgTlVMTCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaGlzdG9yeUl0ZW0gIT0gTlVM
TCwgTlVMTCk7CiAgICAgCi0gICAgV2ViQ29yZTo6U3RyaW5nIHRpdGxlID0gaXRlbS0+dGl0bGUo
KTsKKyAgICBXZWJDb3JlOjpTdHJpbmcgdGl0bGUgPSBoaXN0b3J5SXRlbS0+dGl0bGUoKTsKIAot
ICAgIGdfZnJlZSh3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+dGl0bGUpOworICAgIFdlYktpdFdlYkhp
c3RvcnlJdGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OworICAgIGdfZnJl
ZShwcml2LT50aXRsZSk7CisgICAgcHJpdi0+dGl0bGUgPSBnX3N0cmR1cCh0aXRsZS51dGY4KCku
ZGF0YSgpKTsKIAotICAgIHdlYkhpc3RvcnlJdGVtLT5wcml2LT50aXRsZSA9IGdfc3RyZHVwKHRp
dGxlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgCi0gICAgcmV0dXJuIHdlYkhpc3RvcnlJdGVtLT5w
cml2LT50aXRsZTsKKyAgICByZXR1cm4gcHJpdi0+dGl0bGU7CiB9CiAKIC8qKgpAQCAtMjExLDE3
ICsyMTUsMTcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldAogewog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfSElTVE9SWV9JVEVNKHdlYkhp
c3RvcnlJdGVtKSwgTlVMTCk7CiAKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSA9IGNv
cmUoV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pKTsKKyAgICBXZWJDb3Jl
OjpIaXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0gPSBjb3JlKFdFQktJVF9XRUJfSElTVE9SWV9JVEVN
KHdlYkhpc3RvcnlJdGVtKSk7CiAKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChpdGVtICE9IE5V
TEwsIE5VTEwpOwotICAgIAotICAgIFdlYkNvcmU6OlN0cmluZyBhbHRlcm5hdGVUaXRsZSA9IGl0
ZW0tPmFsdGVybmF0ZVRpdGxlKCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaGlzdG9yeUl0
ZW0gIT0gTlVMTCwgTlVMTCk7CiAKLSAgICBnX2ZyZWUod2ViSGlzdG9yeUl0ZW0tPnByaXYtPmFs
dGVybmF0ZVRpdGxlKTsKKyAgICBXZWJDb3JlOjpTdHJpbmcgYWx0ZXJuYXRlVGl0bGUgPSBoaXN0
b3J5SXRlbS0+YWx0ZXJuYXRlVGl0bGUoKTsKIAotICAgIHdlYkhpc3RvcnlJdGVtLT5wcml2LT5h
bHRlcm5hdGVUaXRsZSA9IGdfc3RyZHVwKGFsdGVybmF0ZVRpdGxlLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5w
cml2OworICAgIGdfZnJlZShwcml2LT5hbHRlcm5hdGVUaXRsZSk7CisgICAgcHJpdi0+YWx0ZXJu
YXRlVGl0bGUgPSBnX3N0cmR1cChhbHRlcm5hdGVUaXRsZS51dGY4KCkuZGF0YSgpKTsKIAotICAg
IHJldHVybiB3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+YWx0ZXJuYXRlVGl0bGU7CisgICAgcmV0dXJu
IHByaXYtPmFsdGVybmF0ZVRpdGxlOwogfQogCiAvKioKQEAgLTIzMSwxNiArMjM1LDE1IEBAIGNv
bnN0IGdjaGFyKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXQKICAqCiAgKiBTZXRzIGFuIGFs
dGVybmF0ZSB0aXRsZSBmb3IgQHdlYkhpc3RvcnlJdGVtCiAgKi8KLXZvaWQgd2Via2l0X3dlYl9o
aXN0b3J5X2l0ZW1fc2V0X2FsdGVybmF0ZV90aXRsZShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Vi
SGlzdG9yeUl0ZW0sIGNvbnN0IGdjaGFyKiB0aXRsZSkgCit2b2lkIHdlYmtpdF93ZWJfaGlzdG9y
eV9pdGVtX3NldF9hbHRlcm5hdGVfdGl0bGUoV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3Rv
cnlJdGVtLCBjb25zdCBnY2hhciogdGl0bGUpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkpOwogCi0gICAgV2ViQ29yZTo6
SGlzdG9yeUl0ZW0qIGl0ZW0gPSBjb3JlKFdFQktJVF9XRUJfSElTVE9SWV9JVEVNKHdlYkhpc3Rv
cnlJdGVtKSk7CisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGhpc3RvcnlJdGVtID0gY29yZShX
RUJLSVRfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkpOwogCi0gICAgY29uc3QgV2Vi
Q29yZTo6U3RyaW5nIGFsdGVybmF0ZVRpdGxlID0gdGl0bGU7Ci0gICAgaXRlbS0+c2V0QWx0ZXJu
YXRlVGl0bGUoYWx0ZXJuYXRlVGl0bGUpOworICAgIGhpc3RvcnlJdGVtLT5zZXRBbHRlcm5hdGVU
aXRsZShXZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4KHRpdGxlKSk7CiB9Ci0gICAgCisKIC8qKgog
ICogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3VyaToKICAqIEB3ZWJIaXN0b3J5SXRlbTog
YSAjV2ViS2l0V2ViSGlzdG9yeUl0ZW0KQEAgLTI1MywxNyArMjU2LDE2IEBAIGNvbnN0IGdjaGFy
KiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXQKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSksIE5VTEwpOwogCi0g
ICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0gPSBjb3JlKFdFQktJVF9XRUJfSElTVE9SWV9J
VEVNKHdlYkhpc3RvcnlJdGVtKSk7Ci0KLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChpdGVtICE9
IE5VTEwsIE5VTEwpOwotCi0gICAgV2ViQ29yZTo6U3RyaW5nIHVyaSA9IGl0ZW0tPnVybFN0cmlu
ZygpOworICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9IGNvcmUoV0VCS0lU
X1dFQl9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pKTsKIAotICAgIGdfZnJlZSh3ZWJIaXN0
b3J5SXRlbS0+cHJpdi0+dXJpKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChoaXN0b3J5SXRl
bSAhPSBOVUxMLCBOVUxMKTsKIAotICAgIHdlYkhpc3RvcnlJdGVtLT5wcml2LT51cmkgPSBnX3N0
cmR1cCh1cmkudXRmOCgpLmRhdGEoKSk7CisgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRl
KiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0tPnByaXY7CisgICAgV2ViQ29yZTo6U3RyaW5nIHVyaSA9
IGhpc3RvcnlJdGVtLT51cmxTdHJpbmcoKTsKKyAgICBnX2ZyZWUocHJpdi0+dXJpKTsKKyAgICBw
cml2LT51cmkgPSBnX3N0cmR1cCh1cmkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICByZXR1cm4gd2Vi
SGlzdG9yeUl0ZW0tPnByaXYtPnVyaTsKKyAgICByZXR1cm4gcHJpdi0+dXJpOwogfQogCiAvKioK
QEAgLTI3OCwxNyArMjgwLDE2IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRl
bV9nZXQKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllf
SVRFTSh3ZWJIaXN0b3J5SXRlbSksIE5VTEwpOwogCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0q
IGl0ZW0gPSBjb3JlKFdFQktJVF9XRUJfSElTVE9SWV9JVEVNKHdlYkhpc3RvcnlJdGVtKSk7Ci0K
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChpdGVtICE9IE5VTEwsIE5VTEwpOworICAgIFdlYkNv
cmU6Okhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9IGNvcmUoV0VCS0lUX1dFQl9ISVNUT1JZX0lU
RU0od2ViSGlzdG9yeUl0ZW0pKTsKIAotICAgIFdlYkNvcmU6OlN0cmluZyBvcmlnaW5hbFVyaSA9
IGl0ZW0tPm9yaWdpbmFsVVJMU3RyaW5nKCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaGlz
dG9yeUl0ZW0gIT0gTlVMTCwgTlVMTCk7CiAKLSAgICBnX2ZyZWUod2ViSGlzdG9yeUl0ZW0tPnBy
aXYtPm9yaWdpbmFsVXJpKTsKKyAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUqIHByaXYg
PSB3ZWJIaXN0b3J5SXRlbS0+cHJpdjsKKyAgICBXZWJDb3JlOjpTdHJpbmcgb3JpZ2luYWxVcmkg
PSBoaXN0b3J5SXRlbS0+b3JpZ2luYWxVUkxTdHJpbmcoKTsKKyAgICBnX2ZyZWUocHJpdi0+b3Jp
Z2luYWxVcmkpOworICAgIHByaXYtPm9yaWdpbmFsVXJpID0gZ19zdHJkdXAob3JpZ2luYWxVcmku
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICB3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+b3JpZ2luYWxVcmkg
PSBnX3N0cmR1cChvcmlnaW5hbFVyaS51dGY4KCkuZGF0YSgpKTsKLSAgICAKLSAgICByZXR1cm4g
d2ViSGlzdG9yeUl0ZW0tPnByaXYtPm9yaWdpbmFsVXJpOworICAgIHJldHVybiBwcml2LT5vcmln
aW5hbFVyaTsKIH0KIAogLyoqCkBAIC0zMDMsMTEgKzMwNCwxMSBAQCBnZG91YmxlIHdlYmtpdF93
ZWJfaGlzdG9yeV9pdGVtX2dldF9sYXN0CiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pLCBOVUxMKTsKIAotICAgIFdl
YkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtID0gY29yZShXRUJLSVRfV0VCX0hJU1RPUllfSVRFTSh3
ZWJIaXN0b3J5SXRlbSkpOworICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9
IGNvcmUoV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pKTsKIAotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKGl0ZW0gIT0gTlVMTCwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoaGlzdG9yeUl0ZW0gIT0gTlVMTCwgMCk7CiAKLSAgICByZXR1cm4gaXRlbS0+bGFzdFZp
c2l0ZWRUaW1lKCk7CisgICAgcmV0dXJuIGhpc3RvcnlJdGVtLT5sYXN0VmlzaXRlZFRpbWUoKTsK
IH0KIAogfSAvKiBlbmQgZXh0ZXJuICJDIiAqLwpAQCAtMzE2LDcgKzMxNyw4IEBAIFdlYkNvcmU6
Okhpc3RvcnlJdGVtKiBXZWJLaXQ6OmNvcmUoV2ViS2kKIHsKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSksIE5VTEwpOwog
Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGhpc3RvcnlJdGVtID0gd2ViSGlzdG9yeUl0ZW0t
PnByaXYtPmhpc3RvcnlJdGVtOworICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogcHJp
diA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OworICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBoaXN0
b3J5SXRlbSA9IHByaXYtPmhpc3RvcnlJdGVtOwogCiAgICAgcmV0dXJuIGhpc3RvcnlJdGVtID8g
aGlzdG9yeUl0ZW0gOiAwOwogfQpAQCAtMzI0LDcgKzMyNiw3IEBAIFdlYkNvcmU6Okhpc3RvcnlJ
dGVtKiBXZWJLaXQ6OmNvcmUoV2ViS2kKIFdlYktpdFdlYkhpc3RvcnlJdGVtKiBXZWJLaXQ6Omtp
dChXZWJDb3JlOjpIaXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0pCiB7CiAgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoaGlzdG9yeUl0ZW0gIT0gTlVMTCwgTlVMTCk7Ci0gICAgCisKICAgICBXZWJLaXRX
ZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW07CiAgICAgR0hhc2hUYWJsZSogdGFibGUgPSB3
ZWJraXRfaGlzdG9yeV9pdGVtcygpOwogCkluZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0
d2ViYmFja2ZvcndhcmRsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYlZpZXcv
d2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNwcAkoUmV2aXNpb24gMjk4NDQpCisrKyBXZWJLaXQv
Z3RrL1dlYlZpZXcvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNwcAkoQXJiZWl0c2tvcGllKQpA
QCAtNjMsMTIgKzYzLDExIEBAIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCogd2Via2l0X3dlYl9i
YWMKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmll
dyksIE5VTEwpOwogCi0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VC
S0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwotICAgIFdlYktpdFdlYkJhY2tGb3J3
YXJkTGlzdCogd2ViQmFja0ZvcndhcmRMaXN0OworICAgIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlz
dCogd2ViQmFja0ZvcndhcmRMaXN0ID0gV0VCS0lUX1dFQl9CQUNLX0ZPUldBUkRfTElTVChnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0JBQ0tfRk9SV0FSRF9MSVNULCBOVUxMKSk7CiAKLSAg
ICB3ZWJCYWNrRm9yd2FyZExpc3QgPSBXRUJLSVRfV0VCX0JBQ0tfRk9SV0FSRF9MSVNUKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQkFDS19GT1JXQVJEX0xJU1QsIE5VTEwpKTsKLSAgICB3
ZWJCYWNrRm9yd2FyZExpc3QtPnByaXYtPmJhY2tGb3J3YXJkTGlzdCA9IHdlYlZpZXdEYXRhLT5j
b3JlUGFnZS0+YmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgd2ViQmFja0ZvcndhcmRMaXN0LT5wcml2
LT5iYWNrRm9yd2FyZExpc3QtPnNldEVuYWJsZWQoVFJVRSk7CisgICAgV2ViS2l0V2ViQmFja0Zv
cndhcmRMaXN0UHJpdmF0ZSogcHJpdiA9IHdlYkJhY2tGb3J3YXJkTGlzdC0+cHJpdjsKKyAgICBw
cml2LT5iYWNrRm9yd2FyZExpc3QgPSBjb3JlKHdlYlZpZXcpLT5iYWNrRm9yd2FyZExpc3QoKTsK
KyAgICBwcml2LT5iYWNrRm9yd2FyZExpc3QtPnNldEVuYWJsZWQoVFJVRSk7CiAKICAgICByZXR1
cm4gd2ViQmFja0ZvcndhcmRMaXN0OwogfQpAQCAtMTE2LDExICsxMTUsMTEgQEAgZ2Jvb2xlYW4g
d2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9jbwogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfQkFDS19GT1JXQVJEX0xJU1Qod2ViQmFja0ZvcndhcmRMaXN0KSwg
TlVMTCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lU
RU0od2ViSGlzdG9yeUl0ZW0pLCBOVUxMKTsKLSAgICAKKwogICAgIFdlYkNvcmU6Okhpc3RvcnlJ
dGVtKiBoaXN0b3J5SXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOwogCiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoaGlzdG9yeUl0ZW0gIT0gTlVMTCwgRkFMU0UpOwotICAgIAorCiAgICAgV2Vi
Q29yZTo6QmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QgPSBjb3JlKHdlYkJhY2tGb3J3
YXJkTGlzdCk7CiAKICAgICByZXR1cm4gKGJhY2tGb3J3YXJkTGlzdC0+ZW5hYmxlZCgpID8gYmFj
a0ZvcndhcmRMaXN0LT5jb250YWluc0l0ZW0oaGlzdG9yeUl0ZW0pIDogRkFMU0UpOwpAQCAtMTY0
LDkgKzE2Myw5IEBAIEdMaXN0KiB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF8KIAog
ICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtVmVjdG9yIGl0ZW1zKGxpbWl0KTsKICAgICBHTGlzdCog
Zm9yd2FyZEl0ZW1zID0geyAwIH07Ci0gICAgCisKICAgICBiYWNrRm9yd2FyZExpc3QtPmZvcndh
cmRMaXN0V2l0aExpbWl0KGxpbWl0LCBpdGVtcyk7Ci0gICAKKwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7IGkrKykgewogICAgICAgICBXZWJLaXRXZWJIaXN0b3J5
SXRlbSogd2ViSGlzdG9yeUl0ZW0gPSB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9j
b3JlX2l0ZW0oaXRlbXNbaV0uZ2V0KCkpOwogICAgICAgICBmb3J3YXJkSXRlbXMgPSBnX2xpc3Rf
cHJlcGVuZChmb3J3YXJkSXRlbXMsIGdfb2JqZWN0X3JlZih3ZWJIaXN0b3J5SXRlbSkpOwpAQCAt
MzI3LDcgKzMyNiw3IEBAIGdpbnQgd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm8K
ICAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUod2Vi
QmFja0ZvcndhcmRMaXN0KTsKICAgICBpZiAoIWJhY2tGb3J3YXJkTGlzdCB8fCAhYmFja0Zvcndh
cmRMaXN0LT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIAorCiAgICAgcmV0dXJu
IGJhY2tGb3J3YXJkTGlzdC0+Zm9yd2FyZExpc3RDb3VudCgpOwogfQogCkBAIC0zNjcsNyArMzY2
LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X3NldF9saQogICAgIGlmIChi
YWNrRm9yd2FyZExpc3QpCiAgICAgICAgIGJhY2tGb3J3YXJkTGlzdC0+c2V0Q2FwYWNpdHkobGlt
aXQpOwogfQotICAgIAorCiB9IC8qIGVuZCBleHRlcm4gIkMiICovCiAKIFdlYkNvcmU6OkJhY2tG
b3J3YXJkTGlzdCogV2ViS2l0Ojpjb3JlKFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCogd2ViQmFj
a0ZvcndhcmRMaXN0KQpJbmRleDogV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0cHJpdmF0ZS5oCShSZXZpc2lv
biAyOTg0NCkKKysrIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXRwcml2YXRlLmgJKEFyYmVpdHNr
b3BpZSkKQEAgLTIyLDE3ICsyMiwxNSBAQAogI2RlZmluZSBXRUJLSVRfUFJJVkFURV9ICiAKIC8q
Ci0gKiBJbnRlcm5hbCBjbGFzcy4gVGhpcyBjbGFzcyBrbm93cyB0aGUgc2hhcmVkIHNlY3JldCBv
ZiBXZWJLaXRXZWJGcmFtZSwKLSAqIFdlYktpdE5ldHdvcmtSZXF1ZXN0IGFuZCBXZWJLaXRXZWJW
aWV3LgorICogVGhpcyBmaWxlIGtub3dzIHRoZSBzaGFyZWQgc2VjcmV0IG9mIFdlYktpdFdlYlZp
ZXcgYW5kIFdlYktpdFdlYkZyYW1lLgogICogVGhleSBhcmUgdXNpbmcgV2ViQ29yZSB3aGljaCBt
dXNuJ3QgYmUgZXhwb3NlZCB0byB0aGUgb3V0ZXIgd29ybGQuCiAgKi8KIAogI2luY2x1ZGUgIndl
YmtpdGRlZmluZXMuaCIKLSNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAid2Vi
a2l0d2ViZnJhbWUuaCIKLSNpbmNsdWRlICJ3ZWJraXR3ZWJzZXR0aW5ncy5oIgotI2luY2x1ZGUg
IndlYmtpdG5ldHdvcmtyZXF1ZXN0LmgiCi0jaW5jbHVkZSAid2Via2l0d2ViYmFja2ZvcndhcmRs
aXN0LmgiCisjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgorCisjaW5jbHVkZSA8Z3RrL2d0ay5o
PgogCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0u
aCIKQEAgLTc1LDcgKzczLDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgICAgIFdlYkNvcmU6OlN0cmlu
ZyogdXNlckFnZW50OwogCiAgICAgICAgIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCogYmFja0Zv
cndhcmRMaXN0OwotICAgICAgICAKKwogICAgICAgICBnaW50IGxhc3RQb3B1cFhQb3NpdGlvbjsK
ICAgICAgICAgZ2ludCBsYXN0UG9wdXBZUG9zaXRpb247CiAKQEAgLTkwLDcgKzg4LDcgQEAgZXh0
ZXJuICJDIiB7CiAgICAgI2RlZmluZSBXRUJLSVRfV0VCX0ZSQU1FX0dFVF9QUklWQVRFKG9iaikg
ICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0ZS
QU1FLCBXZWJLaXRXZWJGcmFtZVByaXZhdGUpKQogICAgIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJGcmFtZVByaXZhdGUgV2ViS2l0V2ViRnJhbWVQcml2YXRlOwogICAgIHN0cnVjdCBfV2ViS2l0
V2ViRnJhbWVQcml2YXRlIHsKLSAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lOworICAgICAg
ICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lOwogICAgICAgICBXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudCogY2xpZW50OwogICAgICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3OwogCkBAIC05
OSwyMSArOTcsMTMgQEAgZXh0ZXJuICJDIiB7CiAgICAgICAgIGdjaGFyKiB1cmk7CiAgICAgfTsK
IAotICAgICNkZWZpbmUgV0VCS0lUX05FVFdPUktfUkVRVUVTVF9HRVRfUFJJVkFURShvYmopICAg
IChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX05FVFdPUktf
UkVRVUVTVCwgV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlKSkKLSAgICB0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0
ZTsKLSAgICBzdHJ1Y3QgX1dlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSB7Ci0gICAgICAgIGdj
aGFyKiB1cmk7Ci0gICAgfTsKLQotICAgIC8qIFdlYktpdFdlYkZyYW1lIHByaXZhdGUgZnVuY3Rp
b24gKi8KLSAgICBXZWJLaXRXZWJGcmFtZSogd2Via2l0X3dlYl9mcmFtZV9pbml0X3dpdGhfd2Vi
X3ZpZXcoV2ViS2l0V2ViVmlldyosIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCopOwor
ICAgIFdlYktpdFdlYkZyYW1lKgorICAgIHdlYmtpdF93ZWJfZnJhbWVfaW5pdF93aXRoX3dlYl92
aWV3KFdlYktpdFdlYlZpZXcqLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqKTsKIAot
ICAgIC8qIFdlYktpdFdlYkhpc3RvcnlJdGVtIHByaXZhdGUgZnVuY3Rpb24gKi8KLSAgICBXZWJL
aXRXZWJIaXN0b3J5SXRlbSogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9p
dGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7Ci0gICAgCisgICAgV2ViS2l0V2ViSGlzdG9yeUl0
ZW0qCisgICAgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9pdGVtKFdlYkNv
cmU6Okhpc3RvcnlJdGVtKik7CiAKLSAgICAvLyBUT0RPOiBNb3ZlIHRoZXNlIHRvIHdlYmtpdHdl
YmZyYW1lLmggb25jZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGZ1bGx5Ci0gICAgLy8gaW1wbGVtZW50
ZWQgYW5kIHRoZWlyIEFQSSBoYXMgYmVlbiBkaXNjdXNzZWQuCisgICAgLy8gRklYTUU6IE1vdmUg
dGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWlyIEFQSSBoYXMgYmVlbiBkaXNjdXNz
ZWQuCiAKICAgICBXRUJLSVRfQVBJIEdTTGlzdCoKICAgICB3ZWJraXRfd2ViX2ZyYW1lX2dldF9j
aGlsZHJlbiAoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKSW5kZXg6IFdlYktpdC9ndGsvV2ViVmll
dy93ZWJraXRkZWZpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtp
dGRlZmluZXMuaAkoUmV2aXNpb24gMjk4NDQpCisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0
ZGVmaW5lcy5oCShBcmJlaXRza29waWUpCkBAIC0zNSwyMCArMzUsMjkgQEAKICNlbmRpZgogCiAj
aWZuZGVmIFdFQktJVF9BUEkKLSNkZWZpbmUgV0VCS0lUX0FQSQorICAgICNkZWZpbmUgV0VCS0lU
X0FQSQogI2VuZGlmCiAKIEdfQkVHSU5fREVDTFMKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE5l
dHdvcmtSZXF1ZXN0IFdlYktpdE5ldHdvcmtSZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dE5ldHdvcmtSZXF1ZXN0Q2xhc3MgV2ViS2l0TmV0d29ya1JlcXVlc3RDbGFzczsKKwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCBXZWJLaXRXZWJCYWNrRm9yd2FyZExp
c3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3MgV2ViS2l0
V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3M7CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJIaXN0
b3J5SXRlbSBXZWJLaXRXZWJIaXN0b3J5SXRlbTsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJI
aXN0b3J5SXRlbUNsYXNzIFdlYktpdFdlYkhpc3RvcnlJdGVtQ2xhc3M7CisKIHR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJGcmFtZSBXZWJLaXRXZWJGcmFtZTsKIHR5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJGcmFtZUNsYXNzIFdlYktpdFdlYkZyYW1lQ2xhc3M7CiAKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJTZXR0aW5ncyBXZWJLaXRXZWJTZXR0aW5nczsKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJTZXR0aW5nc0NsYXNzIFdlYktpdFdlYlNldHRpbmdzQ2xhc3M7CisKIHR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
V2ViVmlld0NsYXNzIFdlYktpdFdlYlZpZXdDbGFzczsKIAotdHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dE5ldHdvcmtSZXF1ZXN0IFdlYktpdE5ldHdvcmtSZXF1ZXN0OwotdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdE5ldHdvcmtSZXF1ZXN0Q2xhc3MgV2ViS2l0TmV0d29ya1JlcXVlc3RDbGFzczsKLQogR19F
TkRfREVDTFMKIAogI2VuZGlmCkluZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2ViaGlz
dG9yeWl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2ViaGlz
dG9yeWl0ZW0uaAkoUmV2aXNpb24gMjk4NDQpCisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0
d2ViaGlzdG9yeWl0ZW0uaAkoQXJiZWl0c2tvcGllKQpAQCAtMzUsMjEgKzM1LDE2IEBAIEdfQkVH
SU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lURU1fQ0xBU1Moa2xhc3Mp
IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX0hJU1RP
UllfSVRFTSkpCiAjZGVmaW5lIFdFQktJVF9XRUJfSElTVE9SWV9JVEVNX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9ISVNU
T1JZX0lURU0sIFdlYktpdFdlYkhpc3RvcnlJdGVtQ2xhc3MpKQogCi0KIHR5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRl
OwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkhpc3RvcnlJdGVtIFdlYktpdFdlYkhpc3RvcnlJ
dGVtOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkhpc3RvcnlJdGVtQ2xhc3MgV2ViS2l0V2Vi
SGlzdG9yeUl0ZW1DbGFzczsKLSAKIAogc3RydWN0IF9XZWJLaXRXZWJIaXN0b3J5SXRlbSB7Ci0g
ICAgR09iamVjdCBwYXJlbnQ7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CiAKLSAgICAv
KjwgcHJpdmF0ZSA+Ki8KICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUqIHByaXY7CiB9
OwogCiBzdHJ1Y3QgX1dlYktpdFdlYkhpc3RvcnlJdGVtQ2xhc3MgewotICAgIEdPYmplY3RDbGFz
cyBwYXJlbnQ7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKIH07CiAKIFdFQktJVF9B
UEkgR1R5cGUKSW5kZXg6IFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJiYWNrZm9yd2FyZGxp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2ViYmFja2Zvcndh
cmRsaXN0LmgJKFJldmlzaW9uIDI5ODQ0KQorKysgV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHdl
YmJhY2tmb3J3YXJkbGlzdC5oCShBcmJlaXRza29waWUpCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5j
bHVkZSA8Z2xpYi1vYmplY3QuaD4KIAogI2luY2x1ZGUgIndlYmtpdGRlZmluZXMuaCIKLSNpbmNs
dWRlICJ3ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIgogCiBHX0JFR0lOX0RFQ0xTCiAKQEAgLTM1LDIx
ICszNCwxNiBAQCBHX0JFR0lOX0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9JU19XRUJfQkFDS19GT1JX
QVJEX0xJU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAg
V0VCS0lUX1RZUEVfV0VCX0JBQ0tfRk9SV0FSRF9MSVNUKSkKICNkZWZpbmUgV0VCS0lUX1dFQl9C
QUNLX0ZPUldBUkRfTElTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xB
U1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfQkFDS19GT1JXQVJEX0xJU1QsIFdlYktpdFdlYkJh
Y2tGb3J3YXJkTGlzdENsYXNzKSkKIAotCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViQmFja0Zv
cndhcmRMaXN0UHJpdmF0ZSBXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3RQcml2YXRlOwotdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCBXZWJLaXRXZWJCYWNrRm9yd2FyZExp
c3Q7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3MgV2ViS2l0
V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3M7Ci0KIAogc3RydWN0IF9XZWJLaXRXZWJCYWNrRm9yd2Fy
ZExpc3QgewotICAgIEdPYmplY3QgcGFyZW50OworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNl
OwogCi0gICAgLyo8IHByaXZhdGUgPiovCiAgICAgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0UHJp
dmF0ZSAqcHJpdjsKIH07CiAKIHN0cnVjdCBfV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3Mg
ewotICAgIEdPYmplY3RDbGFzcyBwYXJlbnQ7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFz
czsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18851</attachid>
            <date>2008-02-01 13:30:33 -0800</date>
            <delta_ts>2008-02-02 22:41:09 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>consistency-1.diff</filename>
            <type>text/plain</type>
            <size>57963</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAJKFJldmlzaW9uIDI5OTEzKQor
KysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCShBcmJlaXRza29waWUpCkBA
IC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZy
ZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4K
ICAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Q2hyaXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTg4LDEyICs4OSwxNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX2dldF9w
cm9wZXJ0CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfZmluYWxpemUoR09iamVjdCog
b2JqZWN0KQogewotICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdmF0ZURhdGEgPSBXRUJL
SVRfV0VCX0ZSQU1FX0dFVF9QUklWQVRFKFdFQktJVF9XRUJfRlJBTUUob2JqZWN0KSk7Ci0gICAg
cHJpdmF0ZURhdGEtPmZyYW1lLT5sb2FkZXIoKS0+Y2FuY2VsQW5kQ2xlYXIoKTsKLSAgICBnX2Zy
ZWUocHJpdmF0ZURhdGEtPm5hbWUpOwotICAgIGdfZnJlZShwcml2YXRlRGF0YS0+dGl0bGUpOwot
ICAgIGdfZnJlZShwcml2YXRlRGF0YS0+dXJpKTsKLSAgICBkZWxldGUgcHJpdmF0ZURhdGEtPmZy
YW1lOworICAgIFdlYktpdFdlYkZyYW1lKiBmcmFtZSA9IFdFQktJVF9XRUJfRlJBTUUob2JqZWN0
KTsKKyAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHByaXYgPSBmcmFtZS0+cHJpdjsKKworICAg
IHByaXYtPmNvcmVGcmFtZS0+bG9hZGVyKCktPmNhbmNlbEFuZENsZWFyKCk7CisgICAgZ19mcmVl
KHByaXYtPm5hbWUpOworICAgIGdfZnJlZShwcml2LT50aXRsZSk7CisgICAgZ19mcmVlKHByaXYt
PnVyaSk7CisgICAgZGVsZXRlIHByaXYtPmNvcmVGcmFtZTsKIAogICAgIEdfT0JKRUNUX0NMQVNT
KHdlYmtpdF93ZWJfZnJhbWVfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KQEAg
LTEwMiw4ICsxMDUsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX2NsYXNzX2luaXQo
CiB7CiAgICAgd2Via2l0X2luaXQoKTsKIAotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShm
cmFtZUNsYXNzLCBzaXplb2YoV2ViS2l0V2ViRnJhbWVQcml2YXRlKSk7Ci0KICAgICAvKgogICAg
ICAqIHNpZ25hbHMKICAgICAgKi8KQEAgLTE4NSwxMSArMTg2LDE2IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfZnJhbWVfY2xhc3NfaW5pdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBjdXJyZW50IFVSSSBvZiB0aGUgY29udGVu
dHMgZGlzcGxheWVkIGJ5IHRoZSBmcmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkp
OworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGZyYW1lQ2xhc3MsIHNpemVvZihXZWJL
aXRXZWJGcmFtZVByaXZhdGUpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9p
bml0KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKKyAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUq
IHByaXYgPSBXRUJLSVRfV0VCX0ZSQU1FX0dFVF9QUklWQVRFKGZyYW1lKTsKKwogICAgIC8vIFRP
RE86IE1vdmUgY29uc3RydWN0b3IgY29kZSBoZXJlLgorICAgIGZyYW1lLT5wcml2ID0gcHJpdjsK
IH0KIAogLyoqCkBAIC0yMDUsMjIgKzIxMSwxOSBAQCBXZWJLaXRXZWJGcmFtZSogd2Via2l0X3dl
Yl9mcmFtZV9uZXcoV2ViCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9W
SUVXKHdlYlZpZXcpLCBOVUxMKTsKIAogICAgIFdlYktpdFdlYkZyYW1lKiBmcmFtZSA9IFdFQktJ
VF9XRUJfRlJBTUUoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9GUkFNRSwgTlVMTCkpOwot
ICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogZnJhbWVEYXRhID0gV0VCS0lUX1dFQl9GUkFNRV9H
RVRfUFJJVkFURShmcmFtZSk7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRh
ID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOworICAgIFdlYktpdFdlYkZy
YW1lUHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OworICAgIFdlYktpdFdlYlZpZXdQcml2YXRl
KiB2aWV3UHJpdiA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKIAotICAg
IGZyYW1lRGF0YS0+Y2xpZW50ID0gbmV3IFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQoZnJhbWUp
OwotICAgIGZyYW1lRGF0YS0+ZnJhbWUgPSBuZXcgRnJhbWUod2ViVmlld0RhdGEtPmNvcmVQYWdl
LCAwLCBmcmFtZURhdGEtPmNsaWVudCk7CisgICAgcHJpdi0+Y2xpZW50ID0gbmV3IFdlYktpdDo6
RnJhbWVMb2FkZXJDbGllbnQoZnJhbWUpOworICAgIHByaXYtPmNvcmVGcmFtZSA9IG5ldyBGcmFt
ZSh2aWV3UHJpdi0+Y29yZVBhZ2UsIDAsIHByaXYtPmNsaWVudCk7CiAKLSAgICBGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IG5ldyBGcmFtZVZpZXcoZnJhbWVEYXRhLT5mcmFtZSk7CisgICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBuZXcgRnJhbWVWaWV3KHByaXYtPmNvcmVGcmFtZSk7CiAgICAgZnJh
bWVWaWV3LT5zZXRDb250YWluaW5nV2luZG93KEdUS19DT05UQUlORVIod2ViVmlldykpOwogICAg
IGZyYW1lVmlldy0+c2V0R3RrQWRqdXN0bWVudHMoR1RLX0FESlVTVE1FTlQoZ3RrX2FkanVzdG1l
bnRfbmV3KDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdUS19BREpVU1RNRU5UKGd0a19hZGp1c3RtZW50X25ldygwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wKSkpOwotICAgIGZyYW1lRGF0YS0+ZnJhbWUtPnNldFZpZXco
ZnJhbWVWaWV3KTsKLSAgICBmcmFtZURhdGEtPmZyYW1lLT5pbml0KCk7Ci0gICAgZnJhbWVEYXRh
LT53ZWJWaWV3ID0gd2ViVmlldzsKLSAgICBmcmFtZURhdGEtPm5hbWUgPSAwOwotICAgIGZyYW1l
RGF0YS0+dGl0bGUgPSAwOwotICAgIGZyYW1lRGF0YS0+dXJpID0gMDsKKyAgICBwcml2LT5jb3Jl
RnJhbWUtPnNldFZpZXcoZnJhbWVWaWV3KTsKKyAgICBwcml2LT5jb3JlRnJhbWUtPmluaXQoKTsK
KyAgICBwcml2LT53ZWJWaWV3ID0gd2ViVmlldzsKIAogICAgIHJldHVybiBmcmFtZTsKIH0KQEAg
LTIyOCwxOCArMjMxLDE4IEBAIFdlYktpdFdlYkZyYW1lKiB3ZWJraXRfd2ViX2ZyYW1lX25ldyhX
ZWIKIFdlYktpdFdlYkZyYW1lKiB3ZWJraXRfd2ViX2ZyYW1lX2luaXRfd2l0aF93ZWJfdmlldyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIGVsZW1lbnQpCiB7
CiAgICAgV2ViS2l0V2ViRnJhbWUqIGZyYW1lID0gV0VCS0lUX1dFQl9GUkFNRShnX29iamVjdF9u
ZXcoV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLCBOVUxMKSk7Ci0gICAgV2ViS2l0V2ViRnJhbWVQcml2
YXRlKiBmcmFtZURhdGEgPSBXRUJLSVRfV0VCX0ZSQU1FX0dFVF9QUklWQVRFKGZyYW1lKTsKLSAg
ICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VU
X1BSSVZBVEUod2ViVmlldyk7CisgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBwcml2ID0gZnJh
bWUtPnByaXY7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHZpZXdQcml2ID0gV0VCS0lUX1dF
Ql9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwogCi0gICAgZnJhbWVEYXRhLT5jbGllbnQgPSBu
ZXcgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudChmcmFtZSk7Ci0gICAgZnJhbWVEYXRhLT5mcmFt
ZSA9IG5ldyBGcmFtZSh3ZWJWaWV3RGF0YS0+Y29yZVBhZ2UsIGVsZW1lbnQsIGZyYW1lRGF0YS0+
Y2xpZW50KTsKKyAgICBwcml2LT5jbGllbnQgPSBuZXcgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVu
dChmcmFtZSk7CisgICAgcHJpdi0+Y29yZUZyYW1lID0gbmV3IEZyYW1lKHZpZXdQcml2LT5jb3Jl
UGFnZSwgZWxlbWVudCwgcHJpdi0+Y2xpZW50KTsKIAotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gbmV3IEZyYW1lVmlldyhmcmFtZURhdGEtPmZyYW1lKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldyA9IG5ldyBGcmFtZVZpZXcocHJpdi0+Y29yZUZyYW1lKTsKICAgICBmcmFtZVZpZXctPnNl
dENvbnRhaW5pbmdXaW5kb3coR1RLX0NPTlRBSU5FUih3ZWJWaWV3KSk7Ci0gICAgZnJhbWVEYXRh
LT5mcmFtZS0+c2V0VmlldyhmcmFtZVZpZXcpOworICAgIHByaXYtPmNvcmVGcmFtZS0+c2V0Vmll
dyhmcmFtZVZpZXcpOwogICAgIGZyYW1lVmlldy0+ZGVyZWYoKTsKLSAgICBmcmFtZURhdGEtPmZy
YW1lLT5pbml0KCk7Ci0gICAgZnJhbWVEYXRhLT53ZWJWaWV3ID0gd2ViVmlldzsKKyAgICBwcml2
LT5jb3JlRnJhbWUtPmluaXQoKTsKKyAgICBwcml2LT53ZWJWaWV3ID0gd2ViVmlldzsKIAogICAg
IHJldHVybiBmcmFtZTsKIH0KQEAgLTI1Niw4ICsyNTksOCBAQCBjb25zdCBnY2hhciogd2Via2l0
X3dlYl9mcmFtZV9nZXRfdGl0bGUoCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9GUkFNRShmcmFtZSksIE5VTEwpOwogCi0gICAgV2ViS2l0V2ViRnJhbWVQcml2YXRl
KiBmcmFtZURhdGEgPSBXRUJLSVRfV0VCX0ZSQU1FX0dFVF9QUklWQVRFKGZyYW1lKTsKLSAgICBy
ZXR1cm4gZnJhbWVEYXRhLT50aXRsZTsKKyAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHByaXYg
PSBmcmFtZS0+cHJpdjsKKyAgICByZXR1cm4gcHJpdi0+dGl0bGU7CiB9CiAKIC8qKgpAQCAtMjcy
LDggKzI3NSw4IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF91cmkoV2UKIHsK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgTlVM
TCk7CiAKLSAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIGZyYW1lRGF0YSA9IFdFQktJVF9XRUJf
RlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOwotICAgIHJldHVybiBmcmFtZURhdGEtPnVyaTsKKyAg
ICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHByaXYgPSBmcmFtZS0+cHJpdjsKKyAgICByZXR1cm4g
cHJpdi0+dXJpOwogfQogCiAvKioKQEAgLTI5MSw4ICsyOTQsOCBAQCBXZWJLaXRXZWJWaWV3KiB3
ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIE5VTEwpOwogCi0gICAgV2ViS2l0V2ViRnJhbWVQcml2
YXRlKiBmcmFtZURhdGEgPSBXRUJLSVRfV0VCX0ZSQU1FX0dFVF9QUklWQVRFKGZyYW1lKTsKLSAg
ICByZXR1cm4gZnJhbWVEYXRhLT53ZWJWaWV3OworICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSog
cHJpdiA9IGZyYW1lLT5wcml2OworICAgIHJldHVybiBwcml2LT53ZWJWaWV3OwogfQogCiAvKioK
QEAgLTMwNywxOCArMzEwLDE3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9u
YW1lKFcKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZy
YW1lKSwgTlVMTCk7CiAKLSAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIGZyYW1lRGF0YSA9IFdF
QktJVF9XRUJfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOworICAgIFdlYktpdFdlYkZyYW1lUHJp
dmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OwogCi0gICAgaWYgKGZyYW1lRGF0YS0+bmFtZSkKLSAg
ICAgICAgcmV0dXJuIGZyYW1lRGF0YS0+bmFtZTsKKyAgICBpZiAocHJpdi0+bmFtZSkKKyAgICAg
ICAgcmV0dXJuIHByaXYtPm5hbWU7CiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFt
ZSk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZUZyYW1lLCBOVUxMKTsKIAogICAgIFN0
cmluZyBzdHJpbmcgPSBjb3JlRnJhbWUtPnRyZWUoKS0+bmFtZSgpOwotICAgIGZyYW1lRGF0YS0+
bmFtZSA9IGdfc3RyZHVwKHN0cmluZy51dGY4KCkuZGF0YSgpKTsKLQotICAgIHJldHVybiBmcmFt
ZURhdGEtPm5hbWU7CisgICAgcHJpdi0+bmFtZSA9IGdfc3RyZHVwKHN0cmluZy51dGY4KCkuZGF0
YSgpKTsKKyAgICByZXR1cm4gcHJpdi0+bmFtZTsKIH0KIAogLyoqCkBAIC0zNTgsNyArMzYwLDcg
QEAgdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX2xvYWRfcmVxdWVzdChXZWJLaQogICAgIEZyYW1lKiBj
b3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKICAgICBnX3JldHVybl9pZl9mYWlsKGNvcmVGcmFtZSk7
CiAKLSAgICAvLyBUT0RPOiBVc2UgdGhlIFJlc291cmNlUmVxdWVzdCBjYXJyaWVkIGJ5IFdlYktp
dE5ldHdvcmtSZXF1ZXN0IHdoZW4gaXQgZ2V0cyBpbXBsZW1lbnRlZC4KKyAgICAvLyBUT0RPOiBV
c2UgdGhlIFJlc291cmNlUmVxdWVzdCBjYXJyaWVkIGJ5IFdlYktpdE5ldHdvcmtSZXF1ZXN0IHdo
ZW4gaXQgaXMgaW1wbGVtZW50ZWQuCiAgICAgRGVwcmVjYXRlZFN0cmluZyBzdHJpbmcgPSBEZXBy
ZWNhdGVkU3RyaW5nOjpmcm9tVXRmOCh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF91cmkocmVx
dWVzdCkpOwogICAgIGNvcmVGcmFtZS0+bG9hZGVyKCktPmxvYWQoUmVzb3VyY2VSZXF1ZXN0KEtV
Ukwoc3RyaW5nKSkpOwogfQpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5oCShSZXZp
c2lvbiAyOTkxMykKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmgJKEFyYmVp
dHNrb3BpZSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jh
c2UuaD4KIAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Vi
a2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0Lmg+CiAKIEdfQkVHSU5fREVDTFMKIApAQCAtMzUsMTMg
KzM2LDE2IEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX0lTX1dFQl9GUkFNRV9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9X
RUJfRlJBTUUpKQogI2RlZmluZSBXRUJLSVRfV0VCX0ZSQU1FX0dFVF9DTEFTUyhvYmopICAoR19U
WVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9GUkFNRSwgV2Vi
S2l0V2ViRnJhbWVDbGFzcykpCiAKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJGcmFtZVByaXZh
dGUgV2ViS2l0V2ViRnJhbWVQcml2YXRlOwogCiBzdHJ1Y3QgX1dlYktpdFdlYkZyYW1lIHsKLSAg
ICBHT2JqZWN0IHBhcmVudDsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKworICAgIFdl
YktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdjsKIH07CiAKIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVD
bGFzcyB7Ci0gICAgR09iamVjdENsYXNzIHBhcmVudDsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50
X2NsYXNzOwogCiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CiAgICAgdm9p
ZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRuZXR3b3JrcmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0bmV0d29ya3JlcXVlc3QuY3BwCShSZXZpc2lvbiAyOTkxMykKKysrIFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmNwcAkoQXJiZWl0c2tvcGllKQpAQCAtMjAsMzMg
KzIwLDM4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJ3ZWJraXRuZXR3b3Jr
cmVxdWVzdC5oIgotI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKLQotdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBleHRlcm4gIkMiIHsKIAogR19E
RUZJTkVfVFlQRShXZWJLaXROZXR3b3JrUmVxdWVzdCwgd2Via2l0X25ldHdvcmtfcmVxdWVzdCwg
R19UWVBFX09CSkVDVCk7CiAKK3N0cnVjdCBfV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlIHsK
KyAgICBnY2hhciogdXJpOworfTsKKworI2RlZmluZSBXRUJLSVRfTkVUV09SS19SRVFVRVNUX0dF
VF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lU
X1RZUEVfTkVUV09SS19SRVFVRVNULCBXZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGUpKQorCiBz
dGF0aWMgdm9pZCB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2ZpbmFsaXplKEdPYmplY3QqIG9iamVj
dCkKIHsKLSAgICBXZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGUqIHJlcXVlc3RQcml2YXRlID0g
V0VCS0lUX05FVFdPUktfUkVRVUVTVF9HRVRfUFJJVkFURShvYmplY3QpOworICAgIFdlYktpdE5l
dHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX05FVFdPUktfUkVRVUVTVChvYmplY3QpOwor
ICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7CiAK
LSAgICBnX2ZyZWUocmVxdWVzdFByaXZhdGUtPnVyaSk7CisgICAgZ19mcmVlKHByaXYtPnVyaSk7
CiAKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X3BhcmVudF9jbGFz
cyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9uZXR3b3JrX3Jl
cXVlc3RfY2xhc3NfaW5pdChXZWJLaXROZXR3b3JrUmVxdWVzdENsYXNzKiByZXF1ZXN0Q2xhc3Mp
CiB7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdl
YktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSkpOwotCiAgICAgR19PQkpFQ1RfQ0xBU1MocmVxdWVz
dENsYXNzKS0+ZmluYWxpemUgPSB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2ZpbmFsaXplOworCisg
ICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdlYktpdE5l
dHdvcmtSZXF1ZXN0UHJpdmF0ZSkpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfbmV0d29ya19y
ZXF1ZXN0X2luaXQoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpCiB7CisgICAgV2ViS2l0
TmV0d29ya1JlcXVlc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX05FVFdPUktfUkVRVUVTVF9HRVRf
UFJJVkFURShyZXF1ZXN0KTsKKyAgICByZXF1ZXN0LT5wcml2ID0gcHJpdjsKIH0KIAogV2ViS2l0
TmV0d29ya1JlcXVlc3QqIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3KGNvbnN0IGdjaGFyKiB1
cmkpCkBAIC01NCw5ICs1OSw5IEBAIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiB3ZWJraXRfbmV0d29y
a19yZXEKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCh1cmksIE5VTEwpOwogCiAgICAgV2ViS2l0
TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfTkVUV09SS19SRVFVRVNUKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9ORVRXT1JLX1JFUVVFU1QsIE5VTEwpKTsKLSAgICBXZWJLaXROZXR3
b3JrUmVxdWVzdFByaXZhdGUqIHJlcXVlc3RQcml2YXRlID0gV0VCS0lUX05FVFdPUktfUkVRVUVT
VF9HRVRfUFJJVkFURShyZXF1ZXN0KTsKKyAgICBXZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGUq
IHByaXYgPSByZXF1ZXN0LT5wcml2OwogCi0gICAgcmVxdWVzdFByaXZhdGUtPnVyaSA9IGdfc3Ry
ZHVwKHVyaSk7CisgICAgcHJpdi0+dXJpID0gZ19zdHJkdXAodXJpKTsKIAogICAgIHJldHVybiBy
ZXF1ZXN0OwogfQpAQCAtNjYsMTkgKzcxLDE4IEBAIHZvaWQgd2Via2l0X25ldHdvcmtfcmVxdWVz
dF9zZXRfdXJpKFdlYksKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19ORVRXT1JLX1JF
UVVFU1QocmVxdWVzdCkpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwodXJpKTsKIAotICAgIFdlYktp
dE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSogcmVxdWVzdFByaXZhdGUgPSBXRUJLSVRfTkVUV09SS19S
RVFVRVNUX0dFVF9QUklWQVRFKHJlcXVlc3QpOworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJp
dmF0ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7CiAKLSAgICBnX2ZyZWUocmVxdWVzdFByaXZhdGUt
PnVyaSk7Ci0gICAgcmVxdWVzdFByaXZhdGUtPnVyaSA9IGdfc3RyZHVwKHVyaSk7CisgICAgZ19m
cmVlKHByaXYtPnVyaSk7CisgICAgcHJpdi0+dXJpID0gZ19zdHJkdXAodXJpKTsKIH0KIAogY29u
c3QgZ2NoYXIqIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3VyaShXZWJLaXROZXR3b3JrUmVx
dWVzdCogcmVxdWVzdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfTkVU
V09SS19SRVFVRVNUKHJlcXVlc3QpLCBOVUxMKTsKIAotICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0
UHJpdmF0ZSogcmVxdWVzdFByaXZhdGUgPSBXRUJLSVRfTkVUV09SS19SRVFVRVNUX0dFVF9QUklW
QVRFKHJlcXVlc3QpOwotCi0gICAgcmV0dXJuIHJlcXVlc3RQcml2YXRlLT51cmk7CisgICAgV2Vi
S2l0TmV0d29ya1JlcXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKKyAgICByZXR1
cm4gcHJpdi0+dXJpOwogfQogCiB9CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJz
ZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRp
bmdzLmgJKFJldmlzaW9uIDI5OTEzKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0
dGluZ3MuaAkoQXJiZWl0c2tvcGllKQpAQCAtMzMsMTIgKzMzLDExIEBAIEdfQkVHSU5fREVDTFMK
ICNkZWZpbmUgV0VCS0lUX0lTX1dFQl9TRVRUSU5HU19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVD
S19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MpKQogI2RlZmlu
ZSBXRUJLSVRfV0VCX1NFVFRJTkdTX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dF
VF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGlu
Z3NDbGFzcykpCiAKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5ncyAgICAgICAgICAg
ICAgICBXZWJLaXRXZWJTZXR0aW5nczsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5n
c1ByaXZhdGUgICAgICAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU7Ci10eXBlZGVmIHN0cnVj
dCBfV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyAgICAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3NDbGFz
czsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlOwogCiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIHsKICAgICBHT2JqZWN0
IHBhcmVudF9pbnN0YW5jZTsKKwogICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdjsK
IH07CiAKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuaAkoUmV2
aXNpb24gMjk5MTMpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5o
CShBcmJlaXRza29waWUpCkBAIC0zMywxMyArMzMsMTYgQEAgR19CRUdJTl9ERUNMUwogI2RlZmlu
ZSBXRUJLSVRfSVNfTkVUV09SS19SRVFVRVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NM
QVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX05FVFdPUktfUkVRVUVTVCkpCiAjZGVmaW5l
IFdFQktJVF9ORVRXT1JLX1JFUVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0Vf
R0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfTkVUV09SS19SRVFVRVNULCBXZWJLaXROZXR3
b3JrUmVxdWVzdENsYXNzKSkKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE5ldHdvcmtSZXF1ZXN0
UHJpdmF0ZSBXZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGU7CiAKIHN0cnVjdCBfV2ViS2l0TmV0
d29ya1JlcXVlc3QgewotICAgIEdPYmplY3QgcGFyZW50OworICAgIEdPYmplY3QgcGFyZW50X2lu
c3RhbmNlOworCisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlKiBwcml2OwogfTsKIAog
c3RydWN0IF9XZWJLaXROZXR3b3JrUmVxdWVzdENsYXNzIHsKLSAgICBHT2JqZWN0Q2xhc3MgcGFy
ZW50OworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CiB9OwogCiBXRUJLSVRfQVBJIEdU
eXBlCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkoUmV2aXNpb24gMjk5MTMp
CisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkoQXJiZWl0c2tvcGllKQpA
QCAtMjI0LDcgKzIyNCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfcHJvcGVy
dHkKIAogc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19leHBvc2VfZXZlbnQoR3RrV2lk
Z2V0KiB3aWRnZXQsIEdka0V2ZW50RXhwb3NlKiBldmVudCkKIHsKLSAgICBGcmFtZSogZnJhbWUg
PSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZShXRUJLSVRfV0VCX1ZJRVcod2lk
Z2V0KSkpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lk
Z2V0KTsKKworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpOwog
ICAgIEdka1JlY3RhbmdsZSBjbGlwOwogICAgIGdka19yZWdpb25fZ2V0X2NsaXBib3goZXZlbnQt
PnJlZ2lvbiwgJmNsaXApOwogICAgIGNhaXJvX3QqIGNyID0gZ2RrX2NhaXJvX2NyZWF0ZShldmVu
dC0+d2luZG93KTsKQEAgLTI0MSw3ICsyNDMsOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dl
Yl92aWV3X2V4cG9zZV9lCiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfa2V5X3By
ZXNzX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleSogZXZlbnQpCiB7Ci0gICAg
RnJhbWUqIGZyYW1lID0gY29yZShXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSktPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdl
YlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgUGxh
dGZvcm1LZXlib2FyZEV2ZW50IGtleWJvYXJkRXZlbnQoZXZlbnQpOwogCiAgICAgaWYgKGZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoa2V5Ym9hcmRFdmVudCkpCkBAIC0yODMsNyArMjg3
LDkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19rZXlfcHJlcwogCiBzdGF0aWMg
Z2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2tleV9yZWxlYXNlX2V2ZW50KEd0a1dpZGdldCogd2lk
Z2V0LCBHZGtFdmVudEtleSogZXZlbnQpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gY29yZShXRUJL
SVRfV0VCX1ZJRVcod2lkZ2V0KSktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdl
dCk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleWJv
YXJkRXZlbnQoZXZlbnQpOwogCiAgICAgaWYgKGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZl
bnQoa2V5Ym9hcmRFdmVudCkpCkBAIC0yOTUsNDYgKzMwMSw1MCBAQCBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0X3dlYl92aWV3X2tleV9yZWxlCiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3Zp
ZXdfYnV0dG9uX3ByZXNzX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiog
ZXZlbnQpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21h
aW5fZnJhbWUoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCkpKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBj
b3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKTsKIAogICAgIC8vIEZJWE1FOiBuZWVkIHRvIGtlZXAg
dHJhY2sgb2Ygc3ViZnJhbWUgZm9jdXMgZm9yIGtleSBldmVudHMKLSAgICBndGtfd2lkZ2V0X2dy
YWJfZm9jdXMoR1RLX1dJREdFVCh3aWRnZXQpKTsKKyAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMo
d2lkZ2V0KTsKIAogICAgIGlmIChldmVudC0+YnV0dG9uID09IDMpCi0gICAgICAgIHJldHVybiB3
ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV0VCS0lUX1dFQl9WSUVX
KHdpZGdldCksIFBsYXRmb3JtTW91c2VFdmVudChldmVudCkpOworICAgICAgICByZXR1cm4gd2Vi
a2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KHdlYlZpZXcsIFBsYXRmb3Jt
TW91c2VFdmVudChldmVudCkpOwogCiAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
aGFuZGxlTW91c2VQcmVzc0V2ZW50KFBsYXRmb3JtTW91c2VFdmVudChldmVudCkpOwogfQogCiBz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2J1dHRvbl9yZWxlYXNlX2V2ZW50KEd0a1dp
ZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQpCiB7Ci0gICAgRnJhbWUqIGZyYW1l
ID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUoV0VCS0lUX1dFQl9WSUVXKHdp
ZGdldCkpKTsKLQotICAgIFdlYktpdFdlYlZpZXcqIHdlYl92aWV3ID0gV0VCS0lUX1dFQl9WSUVX
KHdpZGdldCk7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VCS0lU
X1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYl92aWV3KTsKLSAgICBGcmFtZSogZm9jdXNlZEZyYW1l
ID0gd2ViVmlld0RhdGEtPmNvcmVQYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZEZyYW1l
KCk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQp
OworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICBG
cmFtZSogZm9jdXNlZEZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRGcmFtZSgpOwogCiAgICAgaWYgKGZvY3VzZWRGcmFtZSAmJiBmb2N1c2VkRnJhbWUtPmVk
aXRvcigpLT5jYW5FZGl0KCkpIHsKICAgICAgICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lk
Z2V0X2dldF9wYXJlbnRfd2luZG93KHdpZGdldCk7Ci0gICAgICAgIGd0a19pbV9jb250ZXh0X3Nl
dF9jbGllbnRfd2luZG93KHdlYlZpZXdEYXRhLT5pbUNvbnRleHQsIHdpbmRvdyk7CisgICAgICAg
IGd0a19pbV9jb250ZXh0X3NldF9jbGllbnRfd2luZG93KHByaXYtPmltQ29udGV4dCwgd2luZG93
KTsKICNpZmRlZiBNQUVNT19DSEFOR0VTCi0gICAgICAgIGhpbGRvbl9ndGtfaW1fY29udGV4dF9m
aWx0ZXJfZXZlbnQod2ViVmlld0RhdGEtPmltQ29udGV4dCwgKEdka0V2ZW50KilldmVudCk7Ci0g
ICAgICAgIGhpbGRvbl9ndGtfaW1fY29udGV4dF9zaG93KHdlYlZpZXdEYXRhLT5pbUNvbnRleHQp
OworICAgICAgICBoaWxkb25fZ3RrX2ltX2NvbnRleHRfZmlsdGVyX2V2ZW50KHByaXYtPmltQ29u
dGV4dCwgKEdka0V2ZW50KilldmVudCk7CisgICAgICAgIGhpbGRvbl9ndGtfaW1fY29udGV4dF9z
aG93KHByaXYtPmltQ29udGV4dCk7CiAjZW5kaWYKICAgICB9CiAKLSAgICByZXR1cm4gZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChQbGF0Zm9ybU1vdXNlRXZl
bnQoZXZlbnQpKTsKKyAgICByZXR1cm4gZm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFu
ZGxlTW91c2VSZWxlYXNlRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50KSk7CiB9CiAKIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfbW90aW9uX2V2ZW50KEd0a1dpZGdldCogd2lk
Z2V0LCBHZGtFdmVudE1vdGlvbiogZXZlbnQpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCkpKTsK
KyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7CisK
KyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKTsKICAgICByZXR1
cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5tb3VzZU1vdmVkKFBsYXRmb3JtTW91c2VFdmVudChl
dmVudCkpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3Njcm9sbF9ldmVu
dChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRTY3JvbGwqIGV2ZW50KQogewotICAgIEZyYW1l
KiBmcmFtZSA9IGNvcmUod2Via2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1lKFdFQktJVF9XRUJf
VklFVyh3aWRnZXQpKSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFVyh3aWRnZXQpOworCisgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZy
YW1lKCk7CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHdoZWVsRXZlbnQoZXZlbnQpOwogICAgIHJl
dHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCk7
CiB9CkBAIC0zNDMsNyArMzUzLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NpemVf
YWxsb2NhdAogewogICAgIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9j
bGFzcyktPnNpemVfYWxsb2NhdGUod2lkZ2V0LGFsbG9jYXRpb24pOwogCi0gICAgRnJhbWUqIGZy
YW1lID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUoV0VCS0lUX1dFQl9WSUVX
KHdpZGdldCkpKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVX
KHdpZGdldCk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUo
KTsKICAgICBmcmFtZS0+dmlldygpLT5yZXNpemUoYWxsb2NhdGlvbi0+d2lkdGgsIGFsbG9jYXRp
b24tPmhlaWdodCk7CiAgICAgZnJhbWUtPmZvcmNlTGF5b3V0KCk7CiAgICAgZnJhbWUtPnZpZXco
KS0+YWRqdXN0Vmlld1NpemUoKTsKQEAgLTM1Niw3ICszNjgsOCBAQCBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0X3dlYl92aWV3X2ZvY3VzX2luCiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193
aWRnZXRfZ2V0X3RvcGxldmVsKHdpZGdldCk7CiAgICAgaWYgKEdUS19XSURHRVRfVE9QTEVWRUwo
dG9wbGV2ZWwpICYmIGd0a193aW5kb3dfaGFzX3RvcGxldmVsX2ZvY3VzKEdUS19XSU5ET1codG9w
bGV2ZWwpKSkgewogICAgICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKHdpZGdldCk7Ci0gICAgICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Via2l0X3dlYl92aWV3
X2dldF9tYWluX2ZyYW1lKHdlYlZpZXcpKTsKKworICAgICAgICBGcmFtZSogZnJhbWUgPSBjb3Jl
KHdlYlZpZXcpLT5tYWluRnJhbWUoKTsKICAgICAgICAgY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250
cm9sbGVyKCktPnNldEFjdGl2ZShmcmFtZSk7CiAgICAgfQogICAgIHJldHVybiBHVEtfV0lER0VU
X0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5mb2N1c19pbl9ldmVudCh3aWRn
ZXQsIGV2ZW50KTsKQEAgLTQwNCw5ICs0MTcsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfc2V0X3Njcm9sbF9hCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY29udGFpbmVyX2Fk
ZChHdGtDb250YWluZXIqIGNvbnRhaW5lciwgR3RrV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgV2Vi
S2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhjb250YWluZXIpOwotICAgIFdl
YktpdFdlYlZpZXdQcml2YXRlKiBwcml2YXRlX2RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BS
SVZBVEUod2ViVmlldyk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3
LT5wcml2OwogCi0gICAgcHJpdmF0ZV9kYXRhLT5jaGlsZHJlbi5hZGQod2lkZ2V0KTsKKyAgICBw
cml2LT5jaGlsZHJlbi5hZGQod2lkZ2V0KTsKICAgICBpZiAoR1RLX1dJREdFVF9SRUFMSVpFRChj
b250YWluZXIpKQogICAgICAgICBndGtfd2lkZ2V0X3NldF9wYXJlbnRfd2luZG93KHdpZGdldCwg
R1RLX1dJREdFVCh3ZWJWaWV3KS0+d2luZG93KTsKICAgICBndGtfd2lkZ2V0X3NldF9wYXJlbnQo
d2lkZ2V0LCBHVEtfV0lER0VUKGNvbnRhaW5lcikpOwpAQCAtNDE0LDE5ICs0MjcsMjEgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NvbnRhaW5lcl9hZAogCiBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfY29udGFpbmVyX3JlbW92ZShHdGtDb250YWluZXIqIGNvbnRhaW5lciwgR3Rr
V2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXZhdGVfZGF0
YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURShXRUJLSVRfV0VCX1ZJRVcoY29udGFpbmVy
KSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhjb250YWlu
ZXIpOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKIAot
ICAgIGlmIChwcml2YXRlX2RhdGEtPmNoaWxkcmVuLmNvbnRhaW5zKHdpZGdldCkpIHsKKyAgICBp
ZiAocHJpdi0+Y2hpbGRyZW4uY29udGFpbnMod2lkZ2V0KSkgewogICAgICAgICBndGtfd2lkZ2V0
X3VucGFyZW50KHdpZGdldCk7Ci0gICAgICAgIHByaXZhdGVfZGF0YS0+Y2hpbGRyZW4ucmVtb3Zl
KHdpZGdldCk7CisgICAgICAgIHByaXYtPmNoaWxkcmVuLnJlbW92ZSh3aWRnZXQpOwogICAgIH0K
IH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NvbnRhaW5lcl9mb3JhbGwoR3RrQ29u
dGFpbmVyKiBjb250YWluZXIsIGdib29sZWFuLCBHdGtDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50
ZXIgY2FsbGJhY2tEYXRhKQogewotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2YXRlRGF0
YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURShXRUJLSVRfV0VCX1ZJRVcoY29udGFpbmVy
KSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhjb250YWlu
ZXIpOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKIAot
ICAgIEhhc2hTZXQ8R3RrV2lkZ2V0Kj4gY2hpbGRyZW4gPSBwcml2YXRlRGF0YS0+Y2hpbGRyZW47
CisgICAgSGFzaFNldDxHdGtXaWRnZXQqPiBjaGlsZHJlbiA9IHByaXYtPmNoaWxkcmVuOwogICAg
IEhhc2hTZXQ8R3RrV2lkZ2V0Kj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNoaWxkcmVuLmVuZCgp
OwogICAgIGZvciAoSGFzaFNldDxHdGtXaWRnZXQqPjo6Y29uc3RfaXRlcmF0b3IgY3VycmVudCA9
IGNoaWxkcmVuLmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCiAgICAgICAgICgq
Y2FsbGJhY2spKCpjdXJyZW50LCBjYWxsYmFja0RhdGEpOwpAQCAtNTgxLDE5ICs1OTYsMjAgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfcGFzdGVfYwogCiBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewotICAgIHdlYmtpdF93
ZWJfdmlld19zdG9wX2xvYWRpbmcoV0VCS0lUX1dFQl9WSUVXKG9iamVjdCkpOworICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KTsKKyAgICBXZWJLaXRX
ZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAKLSAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUoV0VCS0lU
X1dFQl9WSUVXKG9iamVjdCkpOworICAgIHdlYmtpdF93ZWJfdmlld19zdG9wX2xvYWRpbmcoV0VC
S0lUX1dFQl9WSUVXKG9iamVjdCkpOwogCi0gICAgZGVsZXRlIHdlYlZpZXdEYXRhLT5jb3JlUGFn
ZTsKKyAgICBkZWxldGUgcHJpdi0+Y29yZVBhZ2U7CiAKLSAgICBnX29iamVjdF91bnJlZih3ZWJW
aWV3RGF0YS0+YmFja0ZvcndhcmRMaXN0KTsKLSAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3RGF0
YS0+d2ViU2V0dGluZ3MpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXdEYXRhLT5tYWluRnJh
bWUpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXdEYXRhLT5pbUNvbnRleHQpOwotICAgIGd0
a190YXJnZXRfbGlzdF91bnJlZih3ZWJWaWV3RGF0YS0+Y29weV90YXJnZXRfbGlzdCk7Ci0gICAg
Z3RrX3RhcmdldF9saXN0X3VucmVmKHdlYlZpZXdEYXRhLT5wYXN0ZV90YXJnZXRfbGlzdCk7Ci0g
ICAgZGVsZXRlIHdlYlZpZXdEYXRhLT51c2VyQWdlbnQ7CisgICAgZ19vYmplY3RfdW5yZWYocHJp
di0+YmFja0ZvcndhcmRMaXN0KTsKKyAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJTZXR0aW5n
cyk7CisgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+bWFpbkZyYW1lKTsKKyAgICBnX29iamVjdF91
bnJlZihwcml2LT5pbUNvbnRleHQpOworICAgIGd0a190YXJnZXRfbGlzdF91bnJlZihwcml2LT5j
b3B5X3RhcmdldF9saXN0KTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJpdi0+cGFzdGVf
dGFyZ2V0X2xpc3QpOworICAgIGRlbGV0ZSBwcml2LT51c2VyQWdlbnQ7CiAKICAgICBHX09CSkVD
VF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsK
IH0KQEAgLTYxNiw4ICs2MzIsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdChXCiAKICAgICB3ZWJraXRfaW5pdCgpOwogCi0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2
YXRlKHdlYlZpZXdDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlZpZXdQcml2YXRlKSk7Ci0KICAgICAv
KgogICAgICAqIFNpZ25hbHMKICAgICAgKi8KQEAgLTEwMzMsMTMgKzEwNDcsMTUgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoVwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldoZXRoZXIgY29udGVudCBjYW4g
YmUgbW9kaWZpZWQgYnkgdGhlIHVzZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRF
KSk7CisKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUod2ViVmlld0NsYXNzLCBzaXplb2Yo
V2ViS2l0V2ViVmlld1ByaXZhdGUpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X3NjcmVlbl9jaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdka1NjcmVlbiogcHJldmlv
dXNTY3JlZW4sIGdwb2ludGVyIHVzZXJkYXRhKQogewotICAgIFdlYktpdFdlYlZpZXdQcml2YXRl
KiB3ZWJWaWV3RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAg
ICBXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MgPSB3ZWJWaWV3RGF0YS0+d2ViU2V0dGlu
Z3M7Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gd2ViVmlld0RhdGEtPmNvcmVQYWdlLT5zZXR0
aW5ncygpOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsK
KyAgICBXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MgPSBwcml2LT53ZWJTZXR0aW5nczsK
KyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBjb3JlKHdlYlZpZXcpLT5zZXR0aW5ncygpOwogCiAg
ICAgZ3VpbnQgZGVmYXVsdEZvbnRTaXplLCBkZWZhdWx0TW9ub3NwYWNlRm9udFNpemUsIG1pbmlt
dW1Gb250U2l6ZSwgbWluaW11bUxvZ2ljYWxGb250U2l6ZTsKIApAQCAtMTA2NSw5ICsxMDgxLDkg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NjcmVlbl9jaGFuZwogCiBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiB7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dFQl9W
SUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwotICAgIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0
aW5ncyA9IHdlYlZpZXdEYXRhLT53ZWJTZXR0aW5nczsKLSAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSB3ZWJWaWV3RGF0YS0+Y29yZVBhZ2UtPnNldHRpbmdzKCk7CisgICAgV2ViS2l0V2ViVmlld1By
aXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJT
ZXR0aW5ncyA9IHByaXYtPndlYlNldHRpbmdzOworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGNv
cmUod2ViVmlldyktPnNldHRpbmdzKCk7CiAKICAgICBnY2hhciogZGVmYXVsdEVuY29kaW5nLCAq
Y3Vyc2l2ZUZvbnRGYW1pbHksICpkZWZhdWx0Rm9udEZhbWlseSwgKmZhbnRhc3lGb250RmFtaWx5
LCAqbW9ub3NwYWNlRm9udEZhbWlseSwgKnNhbnNTZXJpZkZvbnRGYW1pbHksICpzZXJpZkZvbnRG
YW1pbHksICp1c2VyU3R5bGVzaGVldFVyaTsKICAgICBnYm9vbGVhbiBhdXRvTG9hZEltYWdlcywg
YXV0b1Nocmlua0ltYWdlcywgcHJpbnRCYWNrZ3JvdW5kcywgZW5hYmxlU2NyaXB0cywgZW5hYmxl
UGx1Z2lucywgcmVzaXphYmxlVGV4dEFyZWFzOwpAQCAtMTExOCw4ICsxMTM0LDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aQogCiBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncywg
R1BhcmFtU3BlYyogcHNwZWMsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgV2ViS2l0
V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRF
KHdlYlZpZXcpOwotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYlZpZXdEYXRhLT5jb3JlUGFn
ZS0+c2V0dGluZ3MoKTsKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBjb3JlKHdlYlZpZXcpLT5z
ZXR0aW5ncygpOwogCiAgICAgY29uc3QgZ2NoYXIqIG5hbWUgPSBnX2ludGVybl9zdHJpbmcocHNw
ZWMtPm5hbWUpOwogICAgIEdWYWx1ZSB2YWx1ZSA9IHswLCAwfTsKQEAgLTExNjksMjIgKzExODQs
MTggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdAogCiBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAg
IFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRf
UFJJVkFURSh3ZWJWaWV3KTsKLSAgICB3ZWJWaWV3RGF0YS0+aW1Db250ZXh0ID0gZ3RrX2ltX211
bHRpY29udGV4dF9uZXcoKTsKLSAgICB3ZWJWaWV3RGF0YS0+Y29yZVBhZ2UgPSBuZXcgUGFnZShu
ZXcgV2ViS2l0OjpDaHJvbWVDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkNvbnRleHRNZW51
Q2xpZW50LCBuZXcgV2ViS2l0OjpFZGl0b3JDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkRy
YWdDbGllbnQsIG5ldyBXZWJLaXQ6Okluc3BlY3RvckNsaWVudCk7CisgICAgV2ViS2l0V2ViVmll
d1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Cisg
ICAgd2ViVmlldy0+cHJpdiA9IHByaXY7CiAKLSAgICB3ZWJWaWV3RGF0YS0+d2ViU2V0dGluZ3Mg
PSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOwotICAgIHdlYmtpdF93ZWJfdmlld191cGRhdGVf
c2V0dGluZ3Mod2ViVmlldyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAic2NyZWVu
LWNoYW5nZWQiLCBHX0NBTExCQUNLKHdlYmtpdF93ZWJfdmlld19zY3JlZW5fY2hhbmdlZCksIE5V
TEwpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlld0RhdGEtPndlYlNldHRpbmdzLCAibm90
aWZ5IiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KSwgd2ViVmll
dyk7CisgICAgcHJpdi0+aW1Db250ZXh0ID0gZ3RrX2ltX211bHRpY29udGV4dF9uZXcoKTsKKyAg
ICBwcml2LT5jb3JlUGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJLaXQ6OkNocm9tZUNsaWVudCh3ZWJW
aWV3KSwgbmV3IFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnQsIG5ldyBXZWJLaXQ6OkVkaXRvckNs
aWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RHJhZ0NsaWVudCwgbmV3IFdlYktpdDo6SW5zcGVj
dG9yQ2xpZW50KTsKIAogICAgIEdUS19XSURHRVRfU0VUX0ZMQUdTKHdlYlZpZXcsIEdUS19DQU5f
Rk9DVVMpOwotICAgIHdlYlZpZXdEYXRhLT5tYWluRnJhbWUgPSBXRUJLSVRfV0VCX0ZSQU1FKHdl
YmtpdF93ZWJfZnJhbWVfbmV3KHdlYlZpZXcpKTsKLSAgICB3ZWJWaWV3RGF0YS0+bGFzdFBvcHVw
WFBvc2l0aW9uID0gd2ViVmlld0RhdGEtPmxhc3RQb3B1cFlQb3NpdGlvbiA9IC0xOwotICAgIHdl
YlZpZXdEYXRhLT5lZGl0YWJsZSA9IGZhbHNlOworICAgIHByaXYtPm1haW5GcmFtZSA9IFdFQktJ
VF9XRUJfRlJBTUUod2Via2l0X3dlYl9mcmFtZV9uZXcod2ViVmlldykpOworICAgIHByaXYtPmxh
c3RQb3B1cFhQb3NpdGlvbiA9IHByaXYtPmxhc3RQb3B1cFlQb3NpdGlvbiA9IC0xOworICAgIHBy
aXYtPmVkaXRhYmxlID0gZmFsc2U7CiAKLSAgICAvKiBJbml0aWFsaXplIHRoZSB2aWV3J3MgYmFj
ay9mb3J3YXJkIGxpc3QgKi8KLSAgICB3ZWJWaWV3RGF0YS0+YmFja0ZvcndhcmRMaXN0ID0gd2Vi
a2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9uZXdfd2l0aF93ZWJfdmlldyh3ZWJWaWV3KTsKKyAg
ICBwcml2LT5iYWNrRm9yd2FyZExpc3QgPSB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X25l
d193aXRoX3dlYl92aWV3KHdlYlZpZXcpOwogCiAjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMiwxMCww
KQogICAgIEdka0F0b20gdGV4dEh0bWwgPSBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygi
dGV4dC9odG1sIik7CkBAIC0xMTkyLDE1ICsxMjAzLDE5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19pbml0KFdlYktpdFcKICAgICBHZGtBdG9tIHRleHRIdG1sID0gZ2RrX2F0b21faW50
ZXJuKCJ0ZXh0L2h0bWwiLCBmYWxzZSk7CiAjZW5kaWYKICAgICAvKiBUYXJnZXRzIGZvciBjb3B5
ICovCi0gICAgd2ViVmlld0RhdGEtPmNvcHlfdGFyZ2V0X2xpc3QgPSBndGtfdGFyZ2V0X2xpc3Rf
bmV3KE5VTEwsIDApOwotICAgIGd0a190YXJnZXRfbGlzdF9hZGQod2ViVmlld0RhdGEtPmNvcHlf
dGFyZ2V0X2xpc3QsIHRleHRIdG1sLCAwLCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRN
TCk7Ci0gICAgZ3RrX3RhcmdldF9saXN0X2FkZF90ZXh0X3RhcmdldHMod2ViVmlld0RhdGEtPmNv
cHlfdGFyZ2V0X2xpc3QsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19URVhUKTsKKyAgICBw
cml2LT5jb3B5X3RhcmdldF9saXN0ID0gZ3RrX3RhcmdldF9saXN0X25ldyhOVUxMLCAwKTsKKyAg
ICBndGtfdGFyZ2V0X2xpc3RfYWRkKHByaXYtPmNvcHlfdGFyZ2V0X2xpc3QsIHRleHRIdG1sLCAw
LCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTCk7CisgICAgZ3RrX3RhcmdldF9saXN0
X2FkZF90ZXh0X3RhcmdldHMocHJpdi0+Y29weV90YXJnZXRfbGlzdCwgV0VCS0lUX1dFQl9WSUVX
X1RBUkdFVF9JTkZPX1RFWFQpOwogCiAgICAgLyogVGFyZ2V0cyBmb3IgcGFzdGluZyAqLwotICAg
IHdlYlZpZXdEYXRhLT5wYXN0ZV90YXJnZXRfbGlzdCA9IGd0a190YXJnZXRfbGlzdF9uZXcoTlVM
TCwgMCk7Ci0gICAgZ3RrX3RhcmdldF9saXN0X2FkZCh3ZWJWaWV3RGF0YS0+cGFzdGVfdGFyZ2V0
X2xpc3QsIHRleHRIdG1sLCAwLCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTCk7Ci0g
ICAgZ3RrX3RhcmdldF9saXN0X2FkZF90ZXh0X3RhcmdldHMod2ViVmlld0RhdGEtPnBhc3RlX3Rh
cmdldF9saXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCk7CisgICAgcHJpdi0+
cGFzdGVfdGFyZ2V0X2xpc3QgPSBndGtfdGFyZ2V0X2xpc3RfbmV3KE5VTEwsIDApOworICAgIGd0
a190YXJnZXRfbGlzdF9hZGQocHJpdi0+cGFzdGVfdGFyZ2V0X2xpc3QsIHRleHRIdG1sLCAwLCBX
RUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTCk7CisgICAgZ3RrX3RhcmdldF9saXN0X2Fk
ZF90ZXh0X3RhcmdldHMocHJpdi0+cGFzdGVfdGFyZ2V0X2xpc3QsIFdFQktJVF9XRUJfVklFV19U
QVJHRVRfSU5GT19URVhUKTsKIAorICAgIHByaXYtPndlYlNldHRpbmdzID0gd2Via2l0X3dlYl9z
ZXR0aW5nc19uZXcoKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKHdlYlZp
ZXcpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgInNjcmVlbi1jaGFuZ2VkIiwgR19D
QUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQpLCBOVUxMKTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0KHByaXYtPndlYlNldHRpbmdzLCAibm90aWZ5IiwgR19DQUxMQkFDSyh3ZWJr
aXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KSwgd2ViVmlldyk7CiB9CiAKIEd0a1dpZGdldCog
d2Via2l0X3dlYl92aWV3X25ldyh2b2lkKQpAQCAtMTIxNSwxMSArMTIzMCwxMSBAQCB2b2lkIHdl
YmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MoV2ViS2l0CiAgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9TRVRUSU5HUyh3ZWJTZXR0aW5ncykpOwogCi0gICAgV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwot
ICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3ZWJWaWV3RGF0YS0+d2Vi
U2V0dGluZ3MsIChncG9pbnRlcil3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5LCB3ZWJW
aWV3KTsKLSAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3RGF0YS0+d2ViU2V0dGluZ3MpOworICAg
IFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMocHJpdi0+d2ViU2V0dGluZ3MsIChncG9pbnRl
cil3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5LCB3ZWJWaWV3KTsKKyAgICBnX29iamVj
dF91bnJlZihwcml2LT53ZWJTZXR0aW5ncyk7CiAgICAgZ19vYmplY3RfcmVmKHdlYlNldHRpbmdz
KTsKLSAgICB3ZWJWaWV3RGF0YS0+d2ViU2V0dGluZ3MgPSB3ZWJTZXR0aW5nczsKKyAgICBwcml2
LT53ZWJTZXR0aW5ncyA9IHdlYlNldHRpbmdzOwogICAgIHdlYmtpdF93ZWJfdmlld191cGRhdGVf
c2V0dGluZ3Mod2ViVmlldyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJTZXR0aW5ncywgIm5v
dGlmeSIsIEdfQ0FMTEJBQ0sod2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSksIHdlYlZp
ZXcpOwogfQpAQCAtMTIyOCw4ICsxMjQzLDggQEAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYmtpdF93
ZWJfdmlld19nZXRfcwogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSwgTlVMTCk7CiAKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmll
d0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAgcmV0dXJu
IHdlYlZpZXdEYXRhLT53ZWJTZXR0aW5nczsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJp
diA9IHdlYlZpZXctPnByaXY7CisgICAgcmV0dXJuIHByaXYtPndlYlNldHRpbmdzOwogfQogCiAv
KioKQEAgLTEyNTgsMTIgKzEyNzMsMTIgQEAgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0KiB3ZWJr
aXRfd2ViX3ZpZQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJWaWV3KSwgTlVMTCk7CiAKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0Rh
dGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXcp
KTsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAKLSAg
ICBpZiAoIXdlYlZpZXdEYXRhLT5jb3JlUGFnZSB8fCAhd2ViVmlld0RhdGEtPmNvcmVQYWdlLT5i
YWNrRm9yd2FyZExpc3QoKS0+ZW5hYmxlZCgpKQorICAgIGlmICghY29yZSh3ZWJWaWV3KSB8fCAh
Y29yZSh3ZWJWaWV3KS0+YmFja0ZvcndhcmRMaXN0KCktPmVuYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gd2ViVmlld0RhdGEtPmJhY2tGb3J3YXJkTGlzdDsKKyAg
ICByZXR1cm4gcHJpdi0+YmFja0ZvcndhcmRMaXN0OwogfQogCiAvKioKQEAgLTEyODAsNiArMTI5
NSw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19nb190b19iYWNrX2ZvcncKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTShpdGVtKSwg
RkFMU0UpOwogCisgICAgLy8gRklYTUU6IFRoaXMgYWx3YXlzIHJldHVybnMgVFJVRQogICAgIGNv
cmUod2ViVmlldyktPmdvVG9JdGVtKGNvcmUoaXRlbSksIEZyYW1lTG9hZFR5cGVJbmRleGVkQmFj
a0ZvcndhcmQpOwogICAgIHJldHVybiBUUlVFOwogfQpAQCAtMTI4OCw2ICsxMzA0LDggQEAgZ2Jv
b2xlYW4gd2Via2l0X3dlYl92aWV3X2dvX3RvX2JhY2tfZm9ydwogICogd2Via2l0X3dlYl92aWV3
X2dvX2JhY2t3YXJkOgogICogQHdlYlZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldwogICoKKyAqIEBE
ZXByZWNhdGVkOiBVc2Ugd2Via2l0X3dlYl92aWV3X2dvX2JhY2soKSBpbnN0ZWFkLgorICoKICAq
IEdvIHRvIHRoZSBwcmV2aW91cyBwYWdlLCBpZiB0aGVyZSdzIGFueS4KICAqLwogdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfZ29fYmFja3dhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKQEAgLTEzMjIs
NyArMTM0MCw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2dvX2JhY2tfb3JfZm9yd2FyZCgKIHsK
ICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAKLSAg
ICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZSh3ZWJW
aWV3KSk7CisgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CiAg
ICAgZnJhbWUtPmxvYWRlcigpLT5nb0JhY2tPckZvcndhcmQoc3RlcHMpOwogfQogCkBAIC0xMzQ1
LDYgKzEzNjMsOCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19nb19mb3J3YXJkKFdlYktpdFdlCiAg
KgogICogQ2hlY2tzIHdoZXRoZXIgdGhlIHZpZXcgY2FuIGdvIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBhZ2UKICAqCisgKiBARGVwcmVjYXRlZDogVXNlIHdlYmtpdF93ZWJfdmlld19nb19iYWNrKCkg
aW5zdGVhZC4KKyAqCiAgKiBSZXR1cm4gdmFsdWU6ICVUUlVFIGlmIHRoZSBwYWdlIGNhbiBnbyBi
YWNrLCBvdGhlcndpc2UgcmV0dXJucyAlRkFMU0UKICAqLwogZ2Jvb2xlYW4gd2Via2l0X3dlYl92
aWV3X2Nhbl9nb19iYWNrd2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtMTM2NSw5ICsx
Mzg1LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKFdlYgogewogICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0Up
OwogCi0gICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7Ci0KLSAgICBpZiAoIXBhZ2UgfHwg
IXBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5iYWNrSXRlbSgpKQorICAgIGlmICghY29yZSh3ZWJW
aWV3KSB8fCAhY29yZSh3ZWJWaWV3KS0+YmFja0ZvcndhcmRMaXN0KCktPmJhY2tJdGVtKCkpCiAg
ICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIHJldHVybiBUUlVFOwpAQCAtMTM4OCw3ICsxNDA2
LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrX29yXwogewogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwog
Ci0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUo
d2ViVmlldykpOworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgp
OwogICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCktPmNhbkdvQmFja09yRm9yd2FyZChzdGVwcyk7
CiB9CiAKQEAgLTE0MjAsNyArMTQzOCw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X29wZW4oV2Vi
S2l0V2ViVmlldyoKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbCh1cmkpOwogCi0gICAgRnJhbWUqIGZyYW1lID0g
Y29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldykpOworICAgIEZyYW1l
KiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpOwogICAgIERlcHJlY2F0ZWRTdHJp
bmcgc3RyaW5nID0gRGVwcmVjYXRlZFN0cmluZzo6ZnJvbVV0ZjgodXJpKTsKICAgICBmcmFtZS0+
bG9hZGVyKCktPmxvYWQoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoc3RyaW5nKSkpOwogfQpAQCAtMTQy
OSw4ICsxNDQ3LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkKFdlYktpdFdlYlZpZQog
ewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKIAot
ICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Via2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1lKHdl
YlZpZXcpKTsKLSAgICBmcmFtZS0+bG9hZGVyKCktPnJlbG9hZCgpOworICAgIGNvcmUod2ViVmll
dyktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+cmVsb2FkKCk7CiB9CiAKIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2xvYWRfc3RyaW5nKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBj
b250ZW50LCBjb25zdCBnY2hhciogY29udGVudE1pbWVUeXBlLCBjb25zdCBnY2hhciogY29udGVu
dEVuY29kaW5nLCBjb25zdCBnY2hhciogYmFzZVVyaSkKQEAgLTE0MzgsNyArMTQ1NSw3IEBAIHZv
aWQgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKFdlYktpdFcKICAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChj
b250ZW50KTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Via2l0X3dlYl92aWV3X2dldF9t
YWluX2ZyYW1lKHdlYlZpZXcpKTsKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5t
YWluRnJhbWUoKTsKIAogICAgIEtVUkwgdXJsKGJhc2VVcmkgPyBEZXByZWNhdGVkU3RyaW5nOjpm
cm9tVXRmOChiYXNlVXJpKSA6ICIiKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRC
dWZmZXIgPSBuZXcgU2hhcmVkQnVmZmVyKHN0cmR1cChjb250ZW50KSwgc3RybGVuKGNvbnRlbnQp
KTsKQEAgLTE0NTksNyArMTQ3Niw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGlu
ZyhXZWJLaXQKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CiAKLSAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRfbWFp
bl9mcmFtZSh3ZWJWaWV3KSk7CisgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFp
bkZyYW1lKCk7CiAKICAgICBpZiAoRnJhbWVMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIo
KSkKICAgICAgICAgbG9hZGVyLT5zdG9wQWxsTG9hZGVycygpOwpAQCAtMTQ4NSw4ICsxNTAyLDcg
QEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3NlYXJjaF90ZXh0KFdlYgogICAgIFRleHRDYXNl
U2Vuc2l0aXZpdHkgY2FzZVNlbnNpdGl2aXR5ID0gY2FzZVNlbnNpdGl2ZSA/IFRleHRDYXNlU2Vu
c2l0aXZlIDogVGV4dENhc2VJbnNlbnNpdGl2ZTsKICAgICBGaW5kRGlyZWN0aW9uIGRpcmVjdGlv
biA9IGZvcndhcmQgPyBGaW5kRGlyZWN0aW9uRm9yd2FyZCA6IEZpbmREaXJlY3Rpb25CYWNrd2Fy
ZDsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3RGF0YSA9IFdFQktJVF9XRUJf
VklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAgICByZXR1cm4gd2ViVmlld0RhdGEtPmNvcmVQ
YWdlLT5maW5kU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgY2FzZVNlbnNpdGl2aXR5
LCBkaXJlY3Rpb24sIHNob3VsZFdyYXApOworICAgIHJldHVybiBjb3JlKHdlYlZpZXcpLT5maW5k
U3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgY2FzZVNlbnNpdGl2aXR5LCBkaXJlY3Rp
b24sIHNob3VsZFdyYXApOwogfQogCiAvKioKQEAgLTE1MDcsOCArMTUyMyw3IEBAIGd1aW50IHdl
YmtpdF93ZWJfdmlld19tYXJrX3RleHRfbWF0Y2hlcygKIAogICAgIFRleHRDYXNlU2Vuc2l0aXZp
dHkgY2FzZVNlbnNpdGl2aXR5ID0gY2FzZVNlbnNpdGl2ZSA/IFRleHRDYXNlU2Vuc2l0aXZlIDog
VGV4dENhc2VJbnNlbnNpdGl2ZTsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3
RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAgICByZXR1cm4g
d2ViVmlld0RhdGEtPmNvcmVQYWdlLT5tYXJrQWxsTWF0Y2hlc0ZvclRleHQoU3RyaW5nOjpmcm9t
VVRGOChzdHJpbmcpLCBjYXNlU2Vuc2l0aXZpdHksIGZhbHNlLCBsaW1pdCk7CisgICAgcmV0dXJu
IGNvcmUod2ViVmlldyktPm1hcmtBbGxNYXRjaGVzRm9yVGV4dChTdHJpbmc6OmZyb21VVEY4KHN0
cmluZyksIGNhc2VTZW5zaXRpdml0eSwgZmFsc2UsIGxpbWl0KTsKIH0KIAogLyoqCkBAIC0xNTIy
LDkgKzE1MzcsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfaGlnaGxpZ2h0X3RleHRfCiB7
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogCi0g
ICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dF
VF9QUklWQVRFKHdlYlZpZXcpOwotICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogZnJhbWVEYXRh
ID0gV0VCS0lUX1dFQl9GUkFNRV9HRVRfUFJJVkFURSh3ZWJWaWV3RGF0YS0+bWFpbkZyYW1lKTsK
LSAgICBmcmFtZURhdGEtPmZyYW1lLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVk
KHNob3VsZEhpZ2hsaWdodCk7CisgICAgY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCktPnNldE1h
cmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKIH0KIAogLyoq
CkBAIC0xNTM3LDE2ICsxNTUwLDE1IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3VubWFya190ZXh0
X21hdGNoZXMKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CiAKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRf
V0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAgcmV0dXJuIHdlYlZpZXdEYXRhLT5j
b3JlUGFnZS0+dW5tYXJrQWxsVGV4dE1hdGNoZXMoKTsKKyAgICByZXR1cm4gY29yZSh3ZWJWaWV3
KS0+dW5tYXJrQWxsVGV4dE1hdGNoZXMoKTsKIH0KIAogV2ViS2l0V2ViRnJhbWUqIHdlYmtpdF93
ZWJfdmlld19nZXRfbWFpbl9mcmFtZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgTlVMTCk7CiAK
LSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdf
R0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAgcmV0dXJuIHdlYlZpZXdEYXRhLT5tYWluRnJhbWU7
CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHJl
dHVybiBwcml2LT5tYWluRnJhbWU7CiB9CiAKIHZvaWQgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVf
c2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBzY3JpcHQpCkBAIC0x
NTU0LDggKzE1NjYsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX3NjcmlwdChXZWJL
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Vi
a2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1lKHdlYlZpZXcpKTsKLSAgICBpZiAoRnJhbWVMb2Fk
ZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKSkKKyAgICBpZiAoRnJhbWVMb2FkZXIqIGxvYWRl
ciA9IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpLT5sb2FkZXIoKSkKICAgICAgICAgbG9hZGVy
LT5leGVjdXRlU2NyaXB0KFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSk7CiB9CiAKQEAg
LTE2NzUsOCArMTY4Niw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19oYXNfc2VsZWN0aW9u
KFcKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmll
dyksIEZBTFNFKTsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3RGF0YSA9IFdF
QktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAgICByZXR1cm4gIXdlYlZpZXdE
YXRhLT5jb3JlUGFnZS0+c2VsZWN0aW9uKCkuaXNOb25lKCk7CisgICAgcmV0dXJuICFjb3JlKHdl
YlZpZXcpLT5zZWxlY3Rpb24oKS5pc05vbmUoKTsKIH0KIAogLyoqCkBAIC0xNzI0LDEwICsxNzM0
LDkgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2dldF9lZGl0YWJsZShXZQogewogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwog
Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dFQl9WSUVX
X0dFVF9QUklWQVRFKHdlYlZpZXcpOwotICAgIEFTU0VSVCh3ZWJWaWV3RGF0YSk7CisgICAgV2Vi
S2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwogCi0gICAgcmV0dXJuIHdl
YlZpZXdEYXRhLT5lZGl0YWJsZTsKKyAgICByZXR1cm4gcHJpdi0+ZWRpdGFibGU7CiB9CiAKIC8q
KgpAQCAtMTc1MSwyNyArMTc2MCwyNiBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Vk
aXRhYmxlKFdlCiB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfZWRpdGFibGUoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgZ2Jvb2xlYW4gZmxhZykKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7Ci0gICAgZmxhZyA9IGZsYWcgIT0gRkFMU0U7CiAKLSAg
ICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VU
X1BSSVZBVEUod2ViVmlldyk7Ci0gICAgQVNTRVJUKHdlYlZpZXdEYXRhKTsKKyAgICBXZWJLaXRX
ZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAKLSAgICBGcmFtZSogbWFpbkZy
YW1lID0gY29yZSh3ZWJWaWV3RGF0YS0+bWFpbkZyYW1lKTsKLSAgICBnX3JldHVybl9pZl9mYWls
KG1haW5GcmFtZSk7CisgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1l
KCk7CisgICAgZ19yZXR1cm5faWZfZmFpbChmcmFtZSk7CiAKICAgICAvLyBUT0RPOiBXaGF0IGhh
cHBlbnMgd2hlbiB0aGUgZnJhbWUgaXMgcmVwbGFjZWQ/Ci0gICAgaWYgKGZsYWcgPT0gd2ViVmll
d0RhdGEtPmVkaXRhYmxlKQorICAgIGZsYWcgPSBmbGFnICE9IEZBTFNFOworICAgIGlmIChmbGFn
ID09IHByaXYtPmVkaXRhYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJWaWV3RGF0YS0+
ZWRpdGFibGUgPSBmbGFnOworICAgIHByaXYtPmVkaXRhYmxlID0gZmxhZzsKIAogICAgIGlmIChm
bGFnKSB7Ci0gICAgICAgIG1haW5GcmFtZS0+YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50
KCk7CisgICAgICAgIGZyYW1lLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKICAg
ICAgICAgLy8gVE9ETzogSWYgdGhlIFdlYktpdFdlYlZpZXcgaXMgbWFkZSBlZGl0YWJsZSBhbmQg
dGhlIHNlbGVjdGlvbiBpcyBlbXB0eSwgc2V0IGl0IHRvIHNvbWV0aGluZy4KICAgICAgICAgLy9p
ZiAoIXdlYmtpdF93ZWJfdmlld19nZXRfc2VsZWN0ZWRfZG9tX3JhbmdlKHdlYlZpZXcpKQogICAg
ICAgICAvLyAgICBtYWluRnJhbWUtPnNldFNlbGVjdGlvbkZyb21Ob25lKCk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIG1haW5GcmFtZS0+cmVtb3ZlRWRpdGluZ1N0eWxlRnJvbUJvZHlFbGVtZW50KCk7
CisgICAgICAgIGZyYW1lLT5yZW1vdmVFZGl0aW5nU3R5bGVGcm9tQm9keUVsZW1lbnQoKTsKIH0K
IAogLyoqCkBAIC0xNzkwLDggKzE3OTgsOCBAQCBHdGtUYXJnZXRMaXN0KiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2NvcHlfCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9W
SUVXKHdlYlZpZXcpLCBOVUxMKTsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3
RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAgICByZXR1cm4g
d2ViVmlld0RhdGEtPmNvcHlfdGFyZ2V0X2xpc3Q7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUq
IHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHJldHVybiBwcml2LT5jb3B5X3RhcmdldF9saXN0
OwogfQogCiAvKioKQEAgLTE4MTAsOCArMTgxOCw4IEBAIEd0a1RhcmdldExpc3QqIHdlYmtpdF93
ZWJfdmlld19nZXRfcGFzdGUKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOwogCi0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdl
YlZpZXdEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwotICAgIHJl
dHVybiB3ZWJWaWV3RGF0YS0+cGFzdGVfdGFyZ2V0X2xpc3Q7CisgICAgV2ViS2l0V2ViVmlld1By
aXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHJldHVybiBwcml2LT5wYXN0ZV90YXJn
ZXRfbGlzdDsKIH0KIAogfQpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAJKFJl
dmlzaW9uIDI5OTEzKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAJKEFy
YmVpdHNrb3BpZSkKQEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYktp
dFdlYlZpZXcqIGdldFZpZXdGcm9tRnJhbWUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogewotICAg
IHJldHVybiB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhmcmFtZSk7CisgICAgV2ViS2l0
V2ViRnJhbWVQcml2YXRlKiBwcml2ID0gZnJhbWUtPnByaXY7CisgICAgcmV0dXJuIHByaXYtPndl
YlZpZXc7CiB9CiAKIFdlYkNvcmU6OkZyYW1lKiBjb3JlKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkK
QEAgLTQ3LDggKzQ4LDggQEAgV2ViQ29yZTo6RnJhbWUqIGNvcmUoV2ViS2l0V2ViRnJhbWUqIGZy
YQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgV2ViS2l0V2ViRnJh
bWVQcml2YXRlKiBmcmFtZV9kYXRhID0gV0VCS0lUX1dFQl9GUkFNRV9HRVRfUFJJVkFURShmcmFt
ZSk7Ci0gICAgcmV0dXJuIGZyYW1lX2RhdGEgPyBmcmFtZV9kYXRhLT5mcmFtZSA6IDA7CisgICAg
V2ViS2l0V2ViRnJhbWVQcml2YXRlKiBwcml2ID0gZnJhbWUtPnByaXY7CisgICAgcmV0dXJuIHBy
aXYgPyBwcml2LT5jb3JlRnJhbWUgOiAwOwogfQogCiBXZWJLaXRXZWJGcmFtZSoga2l0KFdlYkNv
cmU6OkZyYW1lKiBjb3JlRnJhbWUpCkBAIC02Niw4ICs2Nyw4IEBAIFdlYkNvcmU6OlBhZ2UqIGNv
cmUoV2ViS2l0V2ViVmlldyogd2ViVmkKICAgICBpZiAoIXdlYlZpZXcpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dF
Ql9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwotICAgIHJldHVybiB3ZWJWaWV3RGF0YSA/IHdl
YlZpZXdEYXRhLT5jb3JlUGFnZSA6IDA7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYg
PSB3ZWJWaWV3LT5wcml2OworICAgIHJldHVybiBwcml2ID8gcHJpdi0+Y29yZVBhZ2UgOiAwOwog
fQogCiBXZWJLaXRXZWJWaWV3KiBraXQoV2ViQ29yZTo6UGFnZSogY29yZVBhZ2UpCkluZGV4OiBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCShSZXZpc2lvbiAyOTkxMykKKysrIFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuaAkoQXJiZWl0c2tvcGllKQpAQCAtMzcsNiArMzcsNyBAQCBH
X0JFR0lOX0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9JU19XRUJfVklFV19DTEFTUyhrbGFzcykgKEdf
VFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVklFVykpCiAj
ZGVmaW5lIFdFQktJVF9XRUJfVklFV19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9H
RVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfVklFVywgV2ViS2l0V2ViVmlld0NsYXNz
KSkKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIFdlYktpdFdlYlZpZXdQ
cml2YXRlOwogCiB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNF
X0FDQ0VQVCwKQEAgLTUxLDExICs1MiwxMyBAQCB0eXBlZGVmIGVudW0KIH0gV2ViS2l0V2ViVmll
d1RhcmdldEluZm87CiAKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7Ci0gICAgR3RrQ29udGFpbmVy
IHBhcmVudDsKKyAgICBHdGtDb250YWluZXIgcGFyZW50X2luc3RhbmNlOworCisgICAgV2ViS2l0
V2ViVmlld1ByaXZhdGUqIHByaXY7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7
Ci0gICAgR3RrQ29udGFpbmVyQ2xhc3MgcGFyZW50OworICAgIEd0a0NvbnRhaW5lckNsYXNzIHBh
cmVudF9jbGFzczsKIAogICAgIC8qCiAgICAgICogZGVmYXVsdCBoYW5kbGVyL3ZpcnR1YWwgbWV0
aG9kcwpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNwcAko
UmV2aXNpb24gMjk5MTMpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRl
bS5jcHAJKEFyYmVpdHNrb3BpZSkKQEAgLTM1LDcgKzM1LDcgQEAgZXh0ZXJuICJDIiB7CiAKIHN0
cnVjdCBfV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlIHsKICAgICBXZWJDb3JlOjpIaXN0b3J5
SXRlbSogaGlzdG9yeUl0ZW07Ci0gICAgCisKICAgICBnY2hhciogdGl0bGU7CiAgICAgZ2NoYXIq
IGFsdGVybmF0ZVRpdGxlOwogICAgIGdjaGFyKiB1cmk7CkBAIC00OSwxNCArNDksMTQgQEAgR19E
RUZJTkVfVFlQRShXZWJLaXRXZWJIaXN0b3J5SXRlbSwgd2ViawogCiBzdGF0aWMgR0hhc2hUYWJs
ZSogd2Via2l0X2hpc3RvcnlfaXRlbXMoKQogewotICAgIHN0YXRpYyBHSGFzaFRhYmxlKiBoaXN0
b3J5SXRlbXMgPSBnX2hhc2hfdGFibGVfbmV3KGdfZGlyZWN0X2hhc2gsIGdfZGlyZWN0X2VxdWFs
KTsgICAKKyAgICBzdGF0aWMgR0hhc2hUYWJsZSogaGlzdG9yeUl0ZW1zID0gZ19oYXNoX3RhYmxl
X25ldyhnX2RpcmVjdF9oYXNoLCBnX2RpcmVjdF9lcXVhbCk7CiAgICAgcmV0dXJuIGhpc3RvcnlJ
dGVtczsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQoV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtLCBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaGlzdG9y
eUl0ZW0pIAogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lU
RU0od2ViSGlzdG9yeUl0ZW0pKTsKLSAgICAKKwogICAgIEdIYXNoVGFibGUqIHRhYmxlID0gd2Vi
a2l0X2hpc3RvcnlfaXRlbXMoKTsKIAogICAgIGhpc3RvcnlJdGVtLT5yZWYoKTsKQEAgLTY5LDM3
ICs2OSwzNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfaGlzdG9yeV9pdGVtX3JlbW92ZShXCiAgICAg
V2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gKFdlYktpdFdlYkhpc3RvcnlJ
dGVtKikgZ19oYXNoX3RhYmxlX2xvb2t1cCh0YWJsZSwgaGlzdG9yeUl0ZW0pOwogCiAgICAgZ19y
ZXR1cm5faWZfZmFpbCh3ZWJIaXN0b3J5SXRlbSAhPSBOVUxMKTsKLSAgICAKKwogICAgIGdfaGFz
aF90YWJsZV9yZW1vdmUodGFibGUsIGhpc3RvcnlJdGVtKTsKICAgICBoaXN0b3J5SXRlbS0+ZGVy
ZWYoKTsKICAgICBnX29iamVjdF91bnJlZih3ZWJIaXN0b3J5SXRlbSk7CiB9Ci0gICAgCisKIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2Rpc3Bvc2UoR09iamVjdCogb2JqZWN0
KQogewotICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiBpdGVtID0gV0VCS0lUX1dFQl9ISVNUT1JZ
X0lURU0ob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0g
PSBXRUJLSVRfV0VCX0hJU1RPUllfSVRFTShvYmplY3QpOworICAgIFdlYktpdFdlYkhpc3RvcnlJ
dGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OwogCi0gICAgd2Via2l0X2hp
c3RvcnlfaXRlbV9yZW1vdmUoaXRlbS0+cHJpdi0+aGlzdG9yeUl0ZW0pOwotICAgIAotICAgIGRl
bGV0ZSBpdGVtLT5wcml2LT5oaXN0b3J5SXRlbTsKKyAgICB3ZWJraXRfaGlzdG9yeV9pdGVtX3Jl
bW92ZShwcml2LT5oaXN0b3J5SXRlbSk7CisgICAgZGVsZXRlIHByaXYtPmhpc3RvcnlJdGVtOwog
CiAgICAgLyogZGVzdHJveSB0YWJsZSBpZiBlbXB0eSAqLwogICAgIEdIYXNoVGFibGUqIHRhYmxl
ID0gd2Via2l0X2hpc3RvcnlfaXRlbXMoKTsKICAgICBpZiAoIWdfaGFzaF90YWJsZV9zaXplKHRh
YmxlKSkKICAgICAgICAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kodGFibGUpOwotICAgIAorCiAgICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fcGFyZW50X2NsYXNzKS0+ZGlz
cG9zZShvYmplY3QpOwogfQotICAgIAogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2hpc3Rvcnlf
aXRlbV9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgV2ViS2l0V2ViSGlzdG9yeUl0
ZW0qIGhpc3RvcnlJdGVtID0gV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0ob2JqZWN0KTsKKyAgICBX
ZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0gPSBXRUJLSVRfV0VCX0hJU1RPUllf
SVRFTShvYmplY3QpOworICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogcHJpdiA9IHdl
Ykhpc3RvcnlJdGVtLT5wcml2OwogCi0gICAgZ19mcmVlKGhpc3RvcnlJdGVtLT5wcml2LT50aXRs
ZSk7Ci0gICAgZ19mcmVlKGhpc3RvcnlJdGVtLT5wcml2LT5hbHRlcm5hdGVUaXRsZSk7Ci0gICAg
Z19mcmVlKGhpc3RvcnlJdGVtLT5wcml2LT51cmkpOwotICAgIGdfZnJlZShoaXN0b3J5SXRlbS0+
cHJpdi0+b3JpZ2luYWxVcmkpOworICAgIGdfZnJlZShwcml2LT50aXRsZSk7CisgICAgZ19mcmVl
KHByaXYtPmFsdGVybmF0ZVRpdGxlKTsKKyAgICBnX2ZyZWUocHJpdi0+dXJpKTsKKyAgICBnX2Zy
ZWUocHJpdi0+b3JpZ2luYWxVcmkpOwogCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9o
aXN0b3J5X2l0ZW1fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KQEAgLTEyMywx
MSArMTIzLDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2luaXQKIFdl
YktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3Jl
X2l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CiAgICAgV2ViS2l0V2ViSGlzdG9y
eUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0ga2l0KGl0ZW0pOworICAgIFdlYktpdFdlYkhpc3RvcnlJ
dGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OwogCiAgICAgaWYgKCF3ZWJI
aXN0b3J5SXRlbSkgewogICAgICAgICB3ZWJIaXN0b3J5SXRlbSA9IFdFQktJVF9XRUJfSElTVE9S
WV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfSElTVE9SWV9JVEVNLCBOVUxMKSk7
Ci0gICAgICAgIHdlYkhpc3RvcnlJdGVtLT5wcml2LT5oaXN0b3J5SXRlbSA9IGl0ZW07Ci0gICAg
ICAgIHdlYmtpdF9oaXN0b3J5X2l0ZW1fYWRkKHdlYkhpc3RvcnlJdGVtLCB3ZWJIaXN0b3J5SXRl
bS0+cHJpdi0+aGlzdG9yeUl0ZW0pOworICAgICAgICBwcml2LT5oaXN0b3J5SXRlbSA9IGl0ZW07
CisgICAgICAgIHdlYmtpdF9oaXN0b3J5X2l0ZW1fYWRkKHdlYkhpc3RvcnlJdGVtLCBwcml2LT5o
aXN0b3J5SXRlbSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHdlYkhpc3RvcnlJdGVtOwpAQCAtMTQ0
LDE1ICsxNDUsMTQgQEAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeQog
V2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ldyh2b2lkKQog
ewogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSA9IFdFQktJVF9XRUJf
SElTVE9SWV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfSElTVE9SWV9JVEVNLCBO
VUxMKSk7CisgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9y
eUl0ZW0tPnByaXY7CiAKLSAgICB3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+aGlzdG9yeUl0ZW0gPSBu
ZXcgV2ViQ29yZTo6SGlzdG9yeUl0ZW0oKTsKLQotICAgIHdlYmtpdF9oaXN0b3J5X2l0ZW1fYWRk
KHdlYkhpc3RvcnlJdGVtLCB3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+aGlzdG9yeUl0ZW0pOworICAg
IHByaXYtPmhpc3RvcnlJdGVtID0gbmV3IFdlYkNvcmU6Okhpc3RvcnlJdGVtKCk7CisgICAgd2Vi
a2l0X2hpc3RvcnlfaXRlbV9hZGQod2ViSGlzdG9yeUl0ZW0sIHByaXYtPmhpc3RvcnlJdGVtKTsK
IAogICAgIHJldHVybiB3ZWJIaXN0b3J5SXRlbTsKIH0KIAotCiAvKioKICAqIHdlYmtpdF93ZWJf
aGlzdG9yeV9pdGVtX25ld193aXRoX2RhdGE6CiAgKiBAdXJpOiB0aGUgdXJpIG9mIHRoZSBwYWdl
CkBAIC0xNjgsMTEgKzE2OCwxMSBAQCBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Via2l0X3dlYl9o
aXN0b3J5CiAgICAgV2ViQ29yZTo6U3RyaW5nIGhpc3RvcnlUaXRsZSh0aXRsZSk7CiAKICAgICBX
ZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0gPSB3ZWJraXRfd2ViX2hpc3Rvcnlf
aXRlbV9uZXcoKTsKKyAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUqIHByaXYgPSB3ZWJI
aXN0b3J5SXRlbS0+cHJpdjsKIAotICAgIHdlYkhpc3RvcnlJdGVtLT5wcml2LT5oaXN0b3J5SXRl
bSA9IG5ldyBXZWJDb3JlOjpIaXN0b3J5SXRlbShoaXN0b3J5VXJpLCBoaXN0b3J5VGl0bGUpOwor
ICAgIHByaXYtPmhpc3RvcnlJdGVtID0gbmV3IFdlYkNvcmU6Okhpc3RvcnlJdGVtKGhpc3RvcnlV
cmksIGhpc3RvcnlUaXRsZSk7CisgICAgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQod2ViSGlzdG9y
eUl0ZW0sIHByaXYtPmhpc3RvcnlJdGVtKTsKIAotICAgIHdlYmtpdF9oaXN0b3J5X2l0ZW1fYWRk
KHdlYkhpc3RvcnlJdGVtLCB3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+aGlzdG9yeUl0ZW0pOwotICAg
ICAgICAKICAgICByZXR1cm4gd2ViSGlzdG9yeUl0ZW07CiB9CiAKQEAgLTE4NiwxNyArMTg2LDE2
IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXQKIHsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRl
bSksIE5VTEwpOwogCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0gPSBjb3JlKFdFQktJ
VF9XRUJfSElTVE9SWV9JVEVNKHdlYkhpc3RvcnlJdGVtKSk7CisgICAgV2ViQ29yZTo6SGlzdG9y
eUl0ZW0qIGl0ZW0gPSBjb3JlKHdlYkhpc3RvcnlJdGVtKTsKIAogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKGl0ZW0gIT0gTlVMTCwgTlVMTCk7Ci0gICAgCi0gICAgV2ViQ29yZTo6U3RyaW5nIHRp
dGxlID0gaXRlbS0+dGl0bGUoKTsKIAotICAgIGdfZnJlZSh3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+
dGl0bGUpOworICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3Rv
cnlJdGVtLT5wcml2OworICAgIFdlYkNvcmU6OlN0cmluZyB0aXRsZSA9IGl0ZW0tPnRpdGxlKCk7
CisgICAgZ19mcmVlKHByaXYtPnRpdGxlKTsKKyAgICBwcml2LT50aXRsZSA9IGdfc3RyZHVwKHRp
dGxlLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgd2ViSGlzdG9yeUl0ZW0tPnByaXYtPnRpdGxlID0g
Z19zdHJkdXAodGl0bGUudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAKLSAgICByZXR1cm4gd2ViSGlz
dG9yeUl0ZW0tPnByaXYtPnRpdGxlOworICAgIHJldHVybiBwcml2LT50aXRsZTsKIH0KIAogLyoq
CkBAIC0yMTEsMTcgKzIxMCwxNiBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYl9oaXN0b3J5X2l0
ZW1fZ2V0CiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVNUT1JZ
X0lURU0od2ViSGlzdG9yeUl0ZW0pLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVt
KiBpdGVtID0gY29yZShXRUJLSVRfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkpOwor
ICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtID0gY29yZSh3ZWJIaXN0b3J5SXRlbSk7CiAK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChpdGVtICE9IE5VTEwsIE5VTEwpOwotICAgIAotICAg
IFdlYkNvcmU6OlN0cmluZyBhbHRlcm5hdGVUaXRsZSA9IGl0ZW0tPmFsdGVybmF0ZVRpdGxlKCk7
Ci0KLSAgICBnX2ZyZWUod2ViSGlzdG9yeUl0ZW0tPnByaXYtPmFsdGVybmF0ZVRpdGxlKTsKIAot
ICAgIHdlYkhpc3RvcnlJdGVtLT5wcml2LT5hbHRlcm5hdGVUaXRsZSA9IGdfc3RyZHVwKGFsdGVy
bmF0ZVRpdGxlLnV0ZjgoKS5kYXRhKCkpOworICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0
ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OworICAgIFdlYkNvcmU6OlN0cmluZyBhbHRl
cm5hdGVUaXRsZSA9IGl0ZW0tPmFsdGVybmF0ZVRpdGxlKCk7CisgICAgZ19mcmVlKHByaXYtPmFs
dGVybmF0ZVRpdGxlKTsKKyAgICBwcml2LT5hbHRlcm5hdGVUaXRsZSA9IGdfc3RyZHVwKGFsdGVy
bmF0ZVRpdGxlLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgcmV0dXJuIHdlYkhpc3RvcnlJdGVtLT5w
cml2LT5hbHRlcm5hdGVUaXRsZTsKKyAgICByZXR1cm4gcHJpdi0+YWx0ZXJuYXRlVGl0bGU7CiB9
CiAKIC8qKgpAQCAtMjMxLDE2ICsyMjksMTUgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfaGlz
dG9yeV9pdGVtX2dldAogICoKICAqIFNldHMgYW4gYWx0ZXJuYXRlIHRpdGxlIGZvciBAd2ViSGlz
dG9yeUl0ZW0KICAqLwotdm9pZCB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9zZXRfYWx0ZXJuYXRl
X3RpdGxlKFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSwgY29uc3QgZ2NoYXIq
IHRpdGxlKSAKK3ZvaWQgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fc2V0X2FsdGVybmF0ZV90aXRs
ZShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0sIGNvbnN0IGdjaGFyKiB0aXRs
ZSkKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfSElTVE9SWV9JVEVNKHdl
Ykhpc3RvcnlJdGVtKSk7CiAKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSA9IGNvcmUo
V0VCS0lUX1dFQl9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pKTsKKyAgICBXZWJDb3JlOjpI
aXN0b3J5SXRlbSogaXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOwogCi0gICAgY29uc3QgV2Vi
Q29yZTo6U3RyaW5nIGFsdGVybmF0ZVRpdGxlID0gdGl0bGU7Ci0gICAgaXRlbS0+c2V0QWx0ZXJu
YXRlVGl0bGUoYWx0ZXJuYXRlVGl0bGUpOworICAgIGl0ZW0tPnNldEFsdGVybmF0ZVRpdGxlKFdl
YkNvcmU6OlN0cmluZzo6ZnJvbVVURjgodGl0bGUpKTsKIH0KLSAgICAKKwogLyoqCiAgKiB3ZWJr
aXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdXJpOgogICogQHdlYkhpc3RvcnlJdGVtOiBhICNXZWJL
aXRXZWJIaXN0b3J5SXRlbQpAQCAtMjU4LDEyICsyNTUsMTEgQEAgY29uc3QgZ2NoYXIqIHdlYmtp
dF93ZWJfaGlzdG9yeV9pdGVtX2dldAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGl0ZW0gIT0g
TlVMTCwgTlVMTCk7CiAKICAgICBXZWJDb3JlOjpTdHJpbmcgdXJpID0gaXRlbS0+dXJsU3RyaW5n
KCk7CisgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0
ZW0tPnByaXY7CisgICAgZ19mcmVlKHByaXYtPnVyaSk7CisgICAgcHJpdi0+dXJpID0gZ19zdHJk
dXAodXJpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgZ19mcmVlKHdlYkhpc3RvcnlJdGVtLT5wcml2
LT51cmkpOwotCi0gICAgd2ViSGlzdG9yeUl0ZW0tPnByaXYtPnVyaSA9IGdfc3RyZHVwKHVyaS51
dGY4KCkuZGF0YSgpKTsKLQotICAgIHJldHVybiB3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+dXJpOwor
ICAgIHJldHVybiBwcml2LT51cmk7CiB9CiAKIC8qKgpAQCAtMjgzLDExICsyNzksMTAgQEAgY29u
c3QgZ2NoYXIqIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldAogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKGl0ZW0gIT0gTlVMTCwgTlVMTCk7CiAKICAgICBXZWJDb3JlOjpTdHJpbmcgb3JpZ2lu
YWxVcmkgPSBpdGVtLT5vcmlnaW5hbFVSTFN0cmluZygpOworICAgIFdlYktpdFdlYkhpc3RvcnlJ
dGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OworICAgIGdfZnJlZShwcml2
LT5vcmlnaW5hbFVyaSk7CisgICAgcHJpdi0+b3JpZ2luYWxVcmkgPSBnX3N0cmR1cChvcmlnaW5h
bFVyaS51dGY4KCkuZGF0YSgpKTsKIAotICAgIGdfZnJlZSh3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+
b3JpZ2luYWxVcmkpOwotCi0gICAgd2ViSGlzdG9yeUl0ZW0tPnByaXYtPm9yaWdpbmFsVXJpID0g
Z19zdHJkdXAob3JpZ2luYWxVcmkudXRmOCgpLmRhdGEoKSk7Ci0gICAgCiAgICAgcmV0dXJuIHdl
Ykhpc3RvcnlJdGVtLT5wcml2LT5vcmlnaW5hbFVyaTsKIH0KIApAQCAtMzE2LDcgKzMxMSw4IEBA
IFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBXZWJLaXQ6OmNvcmUoV2ViS2kKIHsKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSks
IE5VTEwpOwogCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGhpc3RvcnlJdGVtID0gd2ViSGlz
dG9yeUl0ZW0tPnByaXYtPmhpc3RvcnlJdGVtOworICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJp
dmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OworICAgIFdlYkNvcmU6Okhpc3RvcnlJ
dGVtKiBoaXN0b3J5SXRlbSA9IHByaXYtPmhpc3RvcnlJdGVtOwogCiAgICAgcmV0dXJuIGhpc3Rv
cnlJdGVtID8gaGlzdG9yeUl0ZW0gOiAwOwogfQpAQCAtMzI0LDcgKzMyMCw3IEBAIFdlYkNvcmU6
Okhpc3RvcnlJdGVtKiBXZWJLaXQ6OmNvcmUoV2ViS2kKIFdlYktpdFdlYkhpc3RvcnlJdGVtKiBX
ZWJLaXQ6OmtpdChXZWJDb3JlOjpIaXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0pCiB7CiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoaGlzdG9yeUl0ZW0gIT0gTlVMTCwgTlVMTCk7Ci0gICAgCisKICAg
ICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW07CiAgICAgR0hhc2hUYWJsZSog
dGFibGUgPSB3ZWJraXRfaGlzdG9yeV9pdGVtcygpOwogCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
cHJpdmF0ZS5oCShSZXZpc2lvbiAyOTkxMykKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHBy
aXZhdGUuaAkoQXJiZWl0c2tvcGllKQpAQCAtMjIsOCArMjIsNyBAQAogI2RlZmluZSBXRUJLSVRf
UFJJVkFURV9ICiAKIC8qCi0gKiBJbnRlcm5hbCBjbGFzcy4gVGhpcyBjbGFzcyBrbm93cyB0aGUg
c2hhcmVkIHNlY3JldCBvZiBXZWJLaXRXZWJGcmFtZSwKLSAqIFdlYktpdE5ldHdvcmtSZXF1ZXN0
IGFuZCBXZWJLaXRXZWJWaWV3LgorICogVGhpcyBmaWxlIGtub3dzIHRoZSBzaGFyZWQgc2VjcmV0
IG9mIFdlYktpdFdlYlZpZXcgYW5kIFdlYktpdFdlYkZyYW1lLgogICogVGhleSBhcmUgdXNpbmcg
V2ViQ29yZSB3aGljaCBtdXNuJ3QgYmUgZXhwb3NlZCB0byB0aGUgb3V0ZXIgd29ybGQuCiAgKi8K
IApAQCAtNzUsNyArNzQsNyBAQCBleHRlcm4gIkMiIHsKICAgICAgICAgV2ViQ29yZTo6U3RyaW5n
KiB1c2VyQWdlbnQ7CiAKICAgICAgICAgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9y
d2FyZExpc3Q7Ci0gICAgICAgIAorCiAgICAgICAgIGdpbnQgbGFzdFBvcHVwWFBvc2l0aW9uOwog
ICAgICAgICBnaW50IGxhc3RQb3B1cFlQb3NpdGlvbjsKIApAQCAtOTAsNyArODksNyBAQCBleHRl
cm4gIkMiIHsKICAgICAjZGVmaW5lIFdFQktJVF9XRUJfRlJBTUVfR0VUX1BSSVZBVEUob2JqKSAg
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfRlJB
TUUsIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSkpCiAgICAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YkZyYW1lUHJpdmF0ZSBXZWJLaXRXZWJGcmFtZVByaXZhdGU7CiAgICAgc3RydWN0IF9XZWJLaXRX
ZWJGcmFtZVByaXZhdGUgewotICAgICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWU7CisgICAgICAg
IFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWU7CiAgICAgICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50KiBjbGllbnQ7CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CiAKQEAgLTEw
NSwxNSArMTA0LDEzIEBAIGV4dGVybiAiQyIgewogICAgICAgICBnY2hhciogdXJpOwogICAgIH07
CiAKLSAgICAvKiBXZWJLaXRXZWJGcmFtZSBwcml2YXRlIGZ1bmN0aW9uICovCi0gICAgV2ViS2l0
V2ViRnJhbWUqIHdlYmtpdF93ZWJfZnJhbWVfaW5pdF93aXRoX3dlYl92aWV3KFdlYktpdFdlYlZp
ZXcqLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqKTsKKyAgICBXZWJLaXRXZWJGcmFt
ZSoKKyAgICB3ZWJraXRfd2ViX2ZyYW1lX2luaXRfd2l0aF93ZWJfdmlldyhXZWJLaXRXZWJWaWV3
KiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Kik7CiAKLSAgICAvKiBXZWJLaXRXZWJI
aXN0b3J5SXRlbSBwcml2YXRlIGZ1bmN0aW9uICovCi0gICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0q
IHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2NvcmVfaXRlbShXZWJDb3JlOjpIaXN0
b3J5SXRlbSopOwotICAgIAorICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKgorICAgIHdlYmtpdF93
ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2NvcmVfaXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSop
OwogCi0gICAgLy8gVE9ETzogTW92ZSB0aGVzZSB0byB3ZWJraXR3ZWJmcmFtZS5oIG9uY2UgdGhl
c2UgZnVuY3Rpb25zIGFyZSBmdWxseQotICAgIC8vIGltcGxlbWVudGVkIGFuZCB0aGVpciBBUEkg
aGFzIGJlZW4gZGlzY3Vzc2VkLgorICAgIC8vIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIHdlYmtpdHdl
YmZyYW1lLmggb25jZSB0aGVpciBBUEkgaGFzIGJlZW4gZGlzY3Vzc2VkLgogCiAgICAgV0VCS0lU
X0FQSSBHU0xpc3QqCiAgICAgd2Via2l0X3dlYl9mcmFtZV9nZXRfY2hpbGRyZW4gKFdlYktpdFdl
YkZyYW1lKiBmcmFtZSk7CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9y
d2FyZGxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJh
Y2tmb3J3YXJkbGlzdC5jcHAJKFJldmlzaW9uIDI5OTEzKQorKysgV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNwcAkoQXJiZWl0c2tvcGllKQpAQCAtNjMsMTIgKzYz
LDEzIEBAIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCogd2Via2l0X3dlYl9iYWMKIHsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOwog
Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dFQl9WSUVX
X0dFVF9QUklWQVRFKHdlYlZpZXcpOwogICAgIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCogd2Vi
QmFja0ZvcndhcmRMaXN0OwogCiAgICAgd2ViQmFja0ZvcndhcmRMaXN0ID0gV0VCS0lUX1dFQl9C
QUNLX0ZPUldBUkRfTElTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0JBQ0tfRk9SV0FS
RF9MSVNULCBOVUxMKSk7Ci0gICAgd2ViQmFja0ZvcndhcmRMaXN0LT5wcml2LT5iYWNrRm9yd2Fy
ZExpc3QgPSB3ZWJWaWV3RGF0YS0+Y29yZVBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpOwotICAgIHdl
YkJhY2tGb3J3YXJkTGlzdC0+cHJpdi0+YmFja0ZvcndhcmRMaXN0LT5zZXRFbmFibGVkKFRSVUUp
OworICAgIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUqIHByaXYgPSB3ZWJCYWNrRm9y
d2FyZExpc3QtPnByaXY7CisKKyAgICBwcml2LT5iYWNrRm9yd2FyZExpc3QgPSBjb3JlKHdlYlZp
ZXcpLT5iYWNrRm9yd2FyZExpc3QoKTsKKyAgICBwcml2LT5iYWNrRm9yd2FyZExpc3QtPnNldEVu
YWJsZWQoVFJVRSk7CiAKICAgICByZXR1cm4gd2ViQmFja0ZvcndhcmRMaXN0OwogfQpAQCAtMTE2
LDExICsxMTcsMTEgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9jbwog
ewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQkFDS19GT1JXQVJEX0xJ
U1Qod2ViQmFja0ZvcndhcmRMaXN0KSwgTlVMTCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pLCBOVUxMKTsKLSAgICAK
KwogICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9IGNvcmUod2ViSGlzdG9y
eUl0ZW0pOwogCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaGlzdG9yeUl0ZW0gIT0gTlVMTCwg
RkFMU0UpOwotICAgIAorCiAgICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2Fy
ZExpc3QgPSBjb3JlKHdlYkJhY2tGb3J3YXJkTGlzdCk7CiAKICAgICByZXR1cm4gKGJhY2tGb3J3
YXJkTGlzdC0+ZW5hYmxlZCgpID8gYmFja0ZvcndhcmRMaXN0LT5jb250YWluc0l0ZW0oaGlzdG9y
eUl0ZW0pIDogRkFMU0UpOwpAQCAtMTY0LDkgKzE2NSw5IEBAIEdMaXN0KiB3ZWJraXRfd2ViX2Jh
Y2tfZm9yd2FyZF9saXN0X2dldF8KIAogICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtVmVjdG9yIGl0
ZW1zKGxpbWl0KTsKICAgICBHTGlzdCogZm9yd2FyZEl0ZW1zID0geyAwIH07Ci0gICAgCisKICAg
ICBiYWNrRm9yd2FyZExpc3QtPmZvcndhcmRMaXN0V2l0aExpbWl0KGxpbWl0LCBpdGVtcyk7Ci0g
ICAKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7IGkrKykgewog
ICAgICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0gPSB3ZWJraXRfd2Vi
X2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0oaXRlbXNbaV0uZ2V0KCkpOwogICAgICAg
ICBmb3J3YXJkSXRlbXMgPSBnX2xpc3RfcHJlcGVuZChmb3J3YXJkSXRlbXMsIGdfb2JqZWN0X3Jl
Zih3ZWJIaXN0b3J5SXRlbSkpOwpAQCAtMjE5LDcgKzIyMCw3IEBAIFdlYktpdFdlYkhpc3RvcnlJ
dGVtKiB3ZWJraXRfd2ViX2JhY2tfZm8KICAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGJh
Y2tGb3J3YXJkTGlzdCA9IGNvcmUod2ViQmFja0ZvcndhcmRMaXN0KTsKICAgICBpZiAoIWJhY2tG
b3J3YXJkTGlzdCB8fCAhYmFja0ZvcndhcmRMaXN0LT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVy
biBOVUxMOwotICAgIAorCiAgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGhpc3RvcnlJdGVtID0g
YmFja0ZvcndhcmRMaXN0LT5iYWNrSXRlbSgpOwogCiAgICAgcmV0dXJuIChoaXN0b3J5SXRlbSA/
IGtpdChoaXN0b3J5SXRlbSkgOiBOVUxMKTsKQEAgLTI1Nyw3ICsyNTgsNyBAQCBXZWJLaXRXZWJI
aXN0b3J5SXRlbSogd2Via2l0X3dlYl9iYWNrX2ZvCiAgKiBSZXR1cm5zIGEgTlVMTCB2YWx1ZSBp
ZiB0aGVyZSBub3RoaW5nIHRoYXQgc3VjY2VlZHMgdGhlIGN1cnJlbnQgaXRlbQogICoKICAqIFJl
dHVybiB2YWx1ZTogYSAjV2ViS2l0V2ViSGlzdG9yeUl0ZW0KLSAqLyAgICAKKyAqLwogV2ViS2l0
V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRf
aXRlbShXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqIHdlYkJhY2tGb3J3YXJkTGlzdCkKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0JBQ0tfRk9SV0FSRF9MSVNUKHdl
YkJhY2tGb3J3YXJkTGlzdCksIE5VTEwpOwpAQCAtMzExLDcgKzMxMiw3IEBAIGdpbnQgd2Via2l0
X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmEKIAogICAgIHJldHVybiBiYWNrRm9yd2FyZExp
c3QtPmJhY2tMaXN0Q291bnQoKTsKIH0KLSAgICAKKwogLyoqCiAgKiB3ZWJraXRfd2ViX2JhY2tf
Zm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xlbmd0aDoKICAqIEB3ZWJCYWNrRm9yd2FyZExpc3Q6
IGEgI1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdApAQCAtMzI3LDcgKzMyOCw3IEBAIGdpbnQgd2Vi
a2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm8KICAgICBXZWJDb3JlOjpCYWNrRm9yd2Fy
ZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUod2ViQmFja0ZvcndhcmRMaXN0KTsKICAgICBp
ZiAoIWJhY2tGb3J3YXJkTGlzdCB8fCAhYmFja0ZvcndhcmRMaXN0LT5lbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybiAwOwotICAgIAorCiAgICAgcmV0dXJuIGJhY2tGb3J3YXJkTGlzdC0+Zm9yd2Fy
ZExpc3RDb3VudCgpOwogfQogCkBAIC0zNDksNyArMzUwLDcgQEAgZ2ludCB3ZWJraXRfd2ViX2Jh
Y2tfZm9yd2FyZF9saXN0X2dldF9saQogCiAgICAgcmV0dXJuIGJhY2tGb3J3YXJkTGlzdC0+Y2Fw
YWNpdHkoKTsKIH0KLSAgICAKKwogLyoqCiAgKiB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0
X3NldF9saW1pdDoKICAqIEB3ZWJCYWNrRm9yd2FyZExpc3Q6IGEgI1dlYktpdFdlYkJhY2tGb3J3
YXJkTGlzdApAQCAtMzY3LDcgKzM2OCw3IEBAIHZvaWQgd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRf
bGlzdF9zZXRfbGkKICAgICBpZiAoYmFja0ZvcndhcmRMaXN0KQogICAgICAgICBiYWNrRm9yd2Fy
ZExpc3QtPnNldENhcGFjaXR5KGxpbWl0KTsKIH0KLSAgICAKKwogfSAvKiBlbmQgZXh0ZXJuICJD
IiAqLwogCiBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIFdlYktpdDo6Y29yZShXZWJLaXRXZWJC
YWNrRm9yd2FyZExpc3QqIHdlYkJhY2tGb3J3YXJkTGlzdCkKSW5kZXg6IFdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGRlZmluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRkZWZpbmVzLmgJKFJldmlzaW9uIDI5OTEzKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
ZGVmaW5lcy5oCShBcmJlaXRza29waWUpCkBAIC0zNSwyMCArMzUsMjkgQEAKICNlbmRpZgogCiAj
aWZuZGVmIFdFQktJVF9BUEkKLSNkZWZpbmUgV0VCS0lUX0FQSQorICAgICNkZWZpbmUgV0VCS0lU
X0FQSQogI2VuZGlmCiAKIEdfQkVHSU5fREVDTFMKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE5l
dHdvcmtSZXF1ZXN0IFdlYktpdE5ldHdvcmtSZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dE5ldHdvcmtSZXF1ZXN0Q2xhc3MgV2ViS2l0TmV0d29ya1JlcXVlc3RDbGFzczsKKwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCBXZWJLaXRXZWJCYWNrRm9yd2FyZExp
c3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3MgV2ViS2l0
V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3M7CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJIaXN0
b3J5SXRlbSBXZWJLaXRXZWJIaXN0b3J5SXRlbTsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJI
aXN0b3J5SXRlbUNsYXNzIFdlYktpdFdlYkhpc3RvcnlJdGVtQ2xhc3M7CisKIHR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJGcmFtZSBXZWJLaXRXZWJGcmFtZTsKIHR5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJGcmFtZUNsYXNzIFdlYktpdFdlYkZyYW1lQ2xhc3M7CiAKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJTZXR0aW5ncyBXZWJLaXRXZWJTZXR0aW5nczsKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJTZXR0aW5nc0NsYXNzIFdlYktpdFdlYlNldHRpbmdzQ2xhc3M7CisKIHR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
V2ViVmlld0NsYXNzIFdlYktpdFdlYlZpZXdDbGFzczsKIAotdHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dE5ldHdvcmtSZXF1ZXN0IFdlYktpdE5ldHdvcmtSZXF1ZXN0OwotdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdE5ldHdvcmtSZXF1ZXN0Q2xhc3MgV2ViS2l0TmV0d29ya1JlcXVlc3RDbGFzczsKLQogR19F
TkRfREVDTFMKIAogI2VuZGlmCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0
b3J5aXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3Rv
cnlpdGVtLmgJKFJldmlzaW9uIDI5OTEzKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
aGlzdG9yeWl0ZW0uaAkoQXJiZWl0c2tvcGllKQpAQCAtMzUsMjEgKzM1LDE2IEBAIEdfQkVHSU5f
REVDTFMKICNkZWZpbmUgV0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lURU1fQ0xBU1Moa2xhc3MpIChH
X1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX0hJU1RPUllf
SVRFTSkpCiAjZGVmaW5lIFdFQktJVF9XRUJfSElTVE9SWV9JVEVNX0dFVF9DTEFTUyhvYmopICAo
R19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9ISVNUT1JZ
X0lURU0sIFdlYktpdFdlYkhpc3RvcnlJdGVtQ2xhc3MpKQogCi0KIHR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlOwot
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkhpc3RvcnlJdGVtIFdlYktpdFdlYkhpc3RvcnlJdGVt
OwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkhpc3RvcnlJdGVtQ2xhc3MgV2ViS2l0V2ViSGlz
dG9yeUl0ZW1DbGFzczsKLSAKIAogc3RydWN0IF9XZWJLaXRXZWJIaXN0b3J5SXRlbSB7Ci0gICAg
R09iamVjdCBwYXJlbnQ7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CiAKLSAgICAvKjwg
cHJpdmF0ZSA+Ki8KICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUqIHByaXY7CiB9Owog
CiBzdHJ1Y3QgX1dlYktpdFdlYkhpc3RvcnlJdGVtQ2xhc3MgewotICAgIEdPYmplY3RDbGFzcyBw
YXJlbnQ7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKIH07CiAKIFdFQktJVF9BUEkg
R1R5cGUKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlz
dC5oCShSZXZpc2lvbiAyOTkxMykKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tm
b3J3YXJkbGlzdC5oCShBcmJlaXRza29waWUpCkBAIC0zNSwyMSArMzUsMTYgQEAgR19CRUdJTl9E
RUNMUwogI2RlZmluZSBXRUJLSVRfSVNfV0VCX0JBQ0tfRk9SV0FSRF9MSVNUX0NMQVNTKGtsYXNz
KSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9CQUNL
X0ZPUldBUkRfTElTVCkpCiAjZGVmaW5lIFdFQktJVF9XRUJfQkFDS19GT1JXQVJEX0xJU1RfR0VU
X0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZ
UEVfV0VCX0JBQ0tfRk9SV0FSRF9MSVNULCBXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3RDbGFzcykp
CiAKLQogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUgV2Vi
S2l0V2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZTsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJC
YWNrRm9yd2FyZExpc3QgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0OwotdHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdENsYXNzIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdENs
YXNzOwotCiAKIHN0cnVjdCBfV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0IHsKLSAgICBHT2JqZWN0
IHBhcmVudDsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKIAotICAgIC8qPCBwcml2YXRl
ID4qLwotICAgIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUgKnByaXY7CisgICAgV2Vi
S2l0V2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZSogcHJpdjsKIH07CiAKIHN0cnVjdCBfV2ViS2l0
V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3MgewotICAgIEdPYmplY3RDbGFzcyBwYXJlbnQ7CisgICAg
R09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18879</attachid>
            <date>2008-02-02 22:41:09 -0800</date>
            <delta_ts>2008-02-04 17:43:22 -0800</delta_ts>
            <desc>Updated again</desc>
            <filename>consistency-1.diff</filename>
            <type>text/plain</type>
            <size>60078</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAJ
KFJldmlzaW9uIDI5OTI5KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRHdGsuY3BwCShBcmJlaXRza29waWUpCkBAIC0zNiw4ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBzdGF0aWMgdm9pZCBpbUNvbnRleHRDb21taXR0ZWQoR3RrSU1Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBjaGFyKiBzdHIsIEVkaXRvckNsaWVudCogY2xpZW50KQogewotICAgIFdlYktp
dFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFU
RShjbGllbnQtPm1fd2ViVmlldyk7Ci0gICAgRnJhbWUqIGZyYW1lID0gd2ViVmlld0RhdGEtPmNv
cmVQYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgRnJh
bWUqIGZyYW1lID0gY29yZShjbGllbnQtPm1fd2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHRXaXRo
b3V0U2VuZGluZ1RleHRFdmVudChzdHIsIGZhbHNlKTsKIH0KIApAQCAtMzUzLDE0ICszNTIsMTQg
QEAgdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZAogRWRpdG9yQ2xpZW50
OjpFZGl0b3JDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3
ZWJWaWV3KQogewotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3RGF0YSA9IFdFQktJ
VF9XRUJfVklFV19HRVRfUFJJVkFURShtX3dlYlZpZXcpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
d2ViVmlld0RhdGEtPmltQ29udGV4dCwgImNvbW1pdCIsIEdfQ0FMTEJBQ0soaW1Db250ZXh0Q29t
bWl0dGVkKSwgdGhpcyk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSBtX3dlYlZp
ZXctPnByaXY7CisgICAgZ19zaWduYWxfY29ubmVjdChwcml2LT5pbUNvbnRleHQsICJjb21taXQi
LCBHX0NBTExCQUNLKGltQ29udGV4dENvbW1pdHRlZCksIHRoaXMpOwogfQogCiBFZGl0b3JDbGll
bnQ6On5FZGl0b3JDbGllbnQoKQogewotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3
RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURShtX3dlYlZpZXcpOwotICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3ZWJWaWV3RGF0YS0+aW1Db250ZXh0LCAo
Z3BvaW50ZXIpaW1Db250ZXh0Q29tbWl0dGVkLCB0aGlzKTsKKyAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogcHJpdiA9IG1fd2ViVmlldy0+cHJpdjsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNj
b25uZWN0X2J5X2Z1bmMocHJpdi0+aW1Db250ZXh0LCAoZ3BvaW50ZXIpaW1Db250ZXh0Q29tbWl0
dGVkLCB0aGlzKTsKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OnRleHRGaWVsZERpZEJlZ2luRWRp
dGluZyhFbGVtZW50KikKQEAgLTM3MCwxMSArMzY5LDExIEBAIHZvaWQgRWRpdG9yQ2xpZW50Ojp0
ZXh0RmllbGREaWRCZWdpbkVkaXQKIAogdm9pZCBFZGl0b3JDbGllbnQ6OnRleHRGaWVsZERpZEVu
ZEVkaXRpbmcoRWxlbWVudCopCiB7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdE
YXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKG1fd2ViVmlldyk7CisgICAgV2ViS2l0
V2ViVmlld1ByaXZhdGUqIHByaXYgPSBtX3dlYlZpZXctPnByaXY7CiAKLSAgICBndGtfaW1fY29u
dGV4dF9mb2N1c19vdXQod2ViVmlld0RhdGEtPmltQ29udGV4dCk7CisgICAgZ3RrX2ltX2NvbnRl
eHRfZm9jdXNfb3V0KHByaXYtPmltQ29udGV4dCk7CiAjaWZkZWYgTUFFTU9fQ0hBTkdFUwotICAg
IGhpbGRvbl9ndGtfaW1fY29udGV4dF9oaWRlKHdlYlZpZXdEYXRhLT5pbUNvbnRleHQpOworICAg
IGhpbGRvbl9ndGtfaW1fY29udGV4dF9oaWRlKHByaXYtPmltQ29udGV4dCk7CiAjZW5kaWYKIH0K
IApJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAkoUmV2aXNpb24gMjk5Mjkp
CisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAJKEFyYmVpdHNrb3BpZSkK
QEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29t
PgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtODgsMTIgKzg5LDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfZ2V0
X3Byb3BlcnQKIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9maW5hbGl6ZShHT2JqZWN0
KiBvYmplY3QpCiB7Ci0gICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdF
QktJVF9XRUJfRlJBTUVfR0VUX1BSSVZBVEUoV0VCS0lUX1dFQl9GUkFNRShvYmplY3QpKTsKLSAg
ICBwcml2YXRlRGF0YS0+ZnJhbWUtPmxvYWRlcigpLT5jYW5jZWxBbmRDbGVhcigpOwotICAgIGdf
ZnJlZShwcml2YXRlRGF0YS0+bmFtZSk7Ci0gICAgZ19mcmVlKHByaXZhdGVEYXRhLT50aXRsZSk7
Ci0gICAgZ19mcmVlKHByaXZhdGVEYXRhLT51cmkpOwotICAgIGRlbGV0ZSBwcml2YXRlRGF0YS0+
ZnJhbWU7CisgICAgV2ViS2l0V2ViRnJhbWUqIGZyYW1lID0gV0VCS0lUX1dFQl9GUkFNRShvYmpl
Y3QpOworICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OworCisg
ICAgcHJpdi0+Y29yZUZyYW1lLT5sb2FkZXIoKS0+Y2FuY2VsQW5kQ2xlYXIoKTsKKyAgICBnX2Zy
ZWUocHJpdi0+bmFtZSk7CisgICAgZ19mcmVlKHByaXYtPnRpdGxlKTsKKyAgICBnX2ZyZWUocHJp
di0+dXJpKTsKKyAgICBkZWxldGUgcHJpdi0+Y29yZUZyYW1lOwogCiAgICAgR19PQkpFQ1RfQ0xB
U1Mod2Via2l0X3dlYl9mcmFtZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQpA
QCAtMTAyLDggKzEwNSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfY2xhc3NfaW5p
dCgKIHsKICAgICB3ZWJraXRfaW5pdCgpOwogCi0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRl
KGZyYW1lQ2xhc3MsIHNpemVvZihXZWJLaXRXZWJGcmFtZVByaXZhdGUpKTsKLQogICAgIC8qCiAg
ICAgICogc2lnbmFscwogICAgICAqLwpAQCAtMTg1LDExICsxODYsMTYgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl9mcmFtZV9jbGFzc19pbml0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGN1cnJlbnQgVVJJIG9mIHRoZSBjb250
ZW50cyBkaXNwbGF5ZWQgYnkgdGhlIGZyYW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxF
KSk7CisKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZnJhbWVDbGFzcywgc2l6ZW9mKFdl
YktpdFdlYkZyYW1lUHJpdmF0ZSkpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2ZyYW1l
X2luaXQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogeworICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0
ZSogcHJpdiA9IFdFQktJVF9XRUJfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOworCiAgICAgLy8g
VE9ETzogTW92ZSBjb25zdHJ1Y3RvciBjb2RlIGhlcmUuCisgICAgZnJhbWUtPnByaXYgPSBwcml2
OwogfQogCiAvKioKQEAgLTIwNSwyMiArMjExLDE5IEBAIFdlYktpdFdlYkZyYW1lKiB3ZWJraXRf
d2ViX2ZyYW1lX25ldyhXZWIKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X1ZJRVcod2ViVmlldyksIE5VTEwpOwogCiAgICAgV2ViS2l0V2ViRnJhbWUqIGZyYW1lID0gV0VC
S0lUX1dFQl9GUkFNRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLCBOVUxMKSk7
Ci0gICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBmcmFtZURhdGEgPSBXRUJLSVRfV0VCX0ZSQU1F
X0dFVF9QUklWQVRFKGZyYW1lKTsKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0Rh
dGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7CisgICAgV2ViS2l0V2Vi
RnJhbWVQcml2YXRlKiBwcml2ID0gZnJhbWUtPnByaXY7CisgICAgV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHZpZXdQcml2ID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwogCi0g
ICAgZnJhbWVEYXRhLT5jbGllbnQgPSBuZXcgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudChmcmFt
ZSk7Ci0gICAgZnJhbWVEYXRhLT5mcmFtZSA9IG5ldyBGcmFtZSh3ZWJWaWV3RGF0YS0+Y29yZVBh
Z2UsIDAsIGZyYW1lRGF0YS0+Y2xpZW50KTsKKyAgICBwcml2LT5jbGllbnQgPSBuZXcgV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudChmcmFtZSk7CisgICAgcHJpdi0+Y29yZUZyYW1lID0gbmV3IEZy
YW1lKHZpZXdQcml2LT5jb3JlUGFnZSwgMCwgcHJpdi0+Y2xpZW50KTsKIAotICAgIEZyYW1lVmll
dyogZnJhbWVWaWV3ID0gbmV3IEZyYW1lVmlldyhmcmFtZURhdGEtPmZyYW1lKTsKKyAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IG5ldyBGcmFtZVZpZXcocHJpdi0+Y29yZUZyYW1lKTsKICAgICBm
cmFtZVZpZXctPnNldENvbnRhaW5pbmdXaW5kb3coR1RLX0NPTlRBSU5FUih3ZWJWaWV3KSk7CiAg
ICAgZnJhbWVWaWV3LT5zZXRHdGtBZGp1c3RtZW50cyhHVEtfQURKVVNUTUVOVChndGtfYWRqdXN0
bWVudF9uZXcoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR1RLX0FESlVTVE1FTlQoZ3RrX2FkanVzdG1lbnRfbmV3KDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApKSk7Ci0gICAgZnJhbWVEYXRhLT5mcmFtZS0+c2V0Vmll
dyhmcmFtZVZpZXcpOwotICAgIGZyYW1lRGF0YS0+ZnJhbWUtPmluaXQoKTsKLSAgICBmcmFtZURh
dGEtPndlYlZpZXcgPSB3ZWJWaWV3OwotICAgIGZyYW1lRGF0YS0+bmFtZSA9IDA7Ci0gICAgZnJh
bWVEYXRhLT50aXRsZSA9IDA7Ci0gICAgZnJhbWVEYXRhLT51cmkgPSAwOworICAgIHByaXYtPmNv
cmVGcmFtZS0+c2V0VmlldyhmcmFtZVZpZXcpOworICAgIHByaXYtPmNvcmVGcmFtZS0+aW5pdCgp
OworICAgIHByaXYtPndlYlZpZXcgPSB3ZWJWaWV3OwogCiAgICAgcmV0dXJuIGZyYW1lOwogfQpA
QCAtMjI4LDE4ICsyMzEsMTggQEAgV2ViS2l0V2ViRnJhbWUqIHdlYmtpdF93ZWJfZnJhbWVfbmV3
KFdlYgogV2ViS2l0V2ViRnJhbWUqIHdlYmtpdF93ZWJfZnJhbWVfaW5pdF93aXRoX3dlYl92aWV3
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogZWxlbWVudCkK
IHsKICAgICBXZWJLaXRXZWJGcmFtZSogZnJhbWUgPSBXRUJLSVRfV0VCX0ZSQU1FKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9XRUJfRlJBTUUsIE5VTEwpKTsKLSAgICBXZWJLaXRXZWJGcmFtZVBy
aXZhdGUqIGZyYW1lRGF0YSA9IFdFQktJVF9XRUJfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOwot
ICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3RGF0YSA9IFdFQktJVF9XRUJfVklFV19H
RVRfUFJJVkFURSh3ZWJWaWV3KTsKKyAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHByaXYgPSBm
cmFtZS0+cHJpdjsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogdmlld1ByaXYgPSBXRUJLSVRf
V0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7CiAKLSAgICBmcmFtZURhdGEtPmNsaWVudCA9
IG5ldyBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lKTsKLSAgICBmcmFtZURhdGEtPmZy
YW1lID0gbmV3IEZyYW1lKHdlYlZpZXdEYXRhLT5jb3JlUGFnZSwgZWxlbWVudCwgZnJhbWVEYXRh
LT5jbGllbnQpOworICAgIHByaXYtPmNsaWVudCA9IG5ldyBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50KGZyYW1lKTsKKyAgICBwcml2LT5jb3JlRnJhbWUgPSBuZXcgRnJhbWUodmlld1ByaXYtPmNv
cmVQYWdlLCBlbGVtZW50LCBwcml2LT5jbGllbnQpOwogCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZp
ZXcgPSBuZXcgRnJhbWVWaWV3KGZyYW1lRGF0YS0+ZnJhbWUpOworICAgIEZyYW1lVmlldyogZnJh
bWVWaWV3ID0gbmV3IEZyYW1lVmlldyhwcml2LT5jb3JlRnJhbWUpOwogICAgIGZyYW1lVmlldy0+
c2V0Q29udGFpbmluZ1dpbmRvdyhHVEtfQ09OVEFJTkVSKHdlYlZpZXcpKTsKLSAgICBmcmFtZURh
dGEtPmZyYW1lLT5zZXRWaWV3KGZyYW1lVmlldyk7CisgICAgcHJpdi0+Y29yZUZyYW1lLT5zZXRW
aWV3KGZyYW1lVmlldyk7CiAgICAgZnJhbWVWaWV3LT5kZXJlZigpOwotICAgIGZyYW1lRGF0YS0+
ZnJhbWUtPmluaXQoKTsKLSAgICBmcmFtZURhdGEtPndlYlZpZXcgPSB3ZWJWaWV3OworICAgIHBy
aXYtPmNvcmVGcmFtZS0+aW5pdCgpOworICAgIHByaXYtPndlYlZpZXcgPSB3ZWJWaWV3OwogCiAg
ICAgcmV0dXJuIGZyYW1lOwogfQpAQCAtMjU2LDggKzI1OSw4IEBAIGNvbnN0IGdjaGFyKiB3ZWJr
aXRfd2ViX2ZyYW1lX2dldF90aXRsZSgKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7CiAKLSAgICBXZWJLaXRXZWJGcmFtZVByaXZh
dGUqIGZyYW1lRGF0YSA9IFdFQktJVF9XRUJfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOwotICAg
IHJldHVybiBmcmFtZURhdGEtPnRpdGxlOworICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJp
diA9IGZyYW1lLT5wcml2OworICAgIHJldHVybiBwcml2LT50aXRsZTsKIH0KIAogLyoqCkBAIC0y
NzIsOCArMjc1LDggQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3VyaShXZQog
ewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBO
VUxMKTsKIAotICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogZnJhbWVEYXRhID0gV0VCS0lUX1dF
Ql9GUkFNRV9HRVRfUFJJVkFURShmcmFtZSk7Ci0gICAgcmV0dXJuIGZyYW1lRGF0YS0+dXJpOwor
ICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OworICAgIHJldHVy
biBwcml2LT51cmk7CiB9CiAKIC8qKgpAQCAtMjkxLDggKzI5NCw4IEBAIFdlYktpdFdlYlZpZXcq
IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl8KIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7CiAKLSAgICBXZWJLaXRXZWJGcmFtZVBy
aXZhdGUqIGZyYW1lRGF0YSA9IFdFQktJVF9XRUJfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOwot
ICAgIHJldHVybiBmcmFtZURhdGEtPndlYlZpZXc7CisgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRl
KiBwcml2ID0gZnJhbWUtPnByaXY7CisgICAgcmV0dXJuIHByaXYtPndlYlZpZXc7CiB9CiAKIC8q
KgpAQCAtMzA3LDE4ICszMTAsMTcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0
X25hbWUoVwogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUo
ZnJhbWUpLCBOVUxMKTsKIAotICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogZnJhbWVEYXRhID0g
V0VCS0lUX1dFQl9GUkFNRV9HRVRfUFJJVkFURShmcmFtZSk7CisgICAgV2ViS2l0V2ViRnJhbWVQ
cml2YXRlKiBwcml2ID0gZnJhbWUtPnByaXY7CiAKLSAgICBpZiAoZnJhbWVEYXRhLT5uYW1lKQot
ICAgICAgICByZXR1cm4gZnJhbWVEYXRhLT5uYW1lOworICAgIGlmIChwcml2LT5uYW1lKQorICAg
ICAgICByZXR1cm4gcHJpdi0+bmFtZTsKIAogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZy
YW1lKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlRnJhbWUsIE5VTEwpOwogCiAgICAg
U3RyaW5nIHN0cmluZyA9IGNvcmVGcmFtZS0+dHJlZSgpLT5uYW1lKCk7Ci0gICAgZnJhbWVEYXRh
LT5uYW1lID0gZ19zdHJkdXAoc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgcmV0dXJuIGZy
YW1lRGF0YS0+bmFtZTsKKyAgICBwcml2LT5uYW1lID0gZ19zdHJkdXAoc3RyaW5nLnV0ZjgoKS5k
YXRhKCkpOworICAgIHJldHVybiBwcml2LT5uYW1lOwogfQogCiAvKioKQEAgLTM1OCw3ICszNjAs
NyBAQCB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9yZXF1ZXN0KFdlYktpCiAgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29yZUZyYW1l
KTsKIAotICAgIC8vIFRPRE86IFVzZSB0aGUgUmVzb3VyY2VSZXF1ZXN0IGNhcnJpZWQgYnkgV2Vi
S2l0TmV0d29ya1JlcXVlc3Qgd2hlbiBpdCBnZXRzIGltcGxlbWVudGVkLgorICAgIC8vIFRPRE86
IFVzZSB0aGUgUmVzb3VyY2VSZXF1ZXN0IGNhcnJpZWQgYnkgV2ViS2l0TmV0d29ya1JlcXVlc3Qg
d2hlbiBpdCBpcyBpbXBsZW1lbnRlZC4KICAgICBEZXByZWNhdGVkU3RyaW5nIHN0cmluZyA9IERl
cHJlY2F0ZWRTdHJpbmc6OmZyb21VdGY4KHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3VyaShy
ZXF1ZXN0KSk7CiAgICAgY29yZUZyYW1lLT5sb2FkZXIoKS0+bG9hZChSZXNvdXJjZVJlcXVlc3Qo
S1VSTChzdHJpbmcpKSk7CiB9CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmgJKFJl
dmlzaW9uIDI5OTI5KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaAkoQXJi
ZWl0c2tvcGllKQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
QmFzZS5oPgogCiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKyNpbmNsdWRlIDx3
ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuaD4KIAogR19CRUdJTl9ERUNMUwogCkBAIC0zNSwx
MyArMzYsMTYgQEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfSVNfV0VCX0ZSQU1FX0NM
QVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBF
X1dFQl9GUkFNRSkpCiAjZGVmaW5lIFdFQktJVF9XRUJfRlJBTUVfR0VUX0NMQVNTKG9iaikgIChH
X1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLCBX
ZWJLaXRXZWJGcmFtZUNsYXNzKSkKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkZyYW1lUHJp
dmF0ZSBXZWJLaXRXZWJGcmFtZVByaXZhdGU7CiAKIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWUgewot
ICAgIEdPYmplY3QgcGFyZW50OworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAg
V2ViS2l0V2ViRnJhbWVQcml2YXRlKiBwcml2OwogfTsKIAogc3RydWN0IF9XZWJLaXRXZWJGcmFt
ZUNsYXNzIHsKLSAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OworICAgIEdPYmplY3RDbGFzcyBwYXJl
bnRfY2xhc3M7CiAKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKICAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRuZXR3b3JrcmVxdWVzdC5jcHAJKFJldmlzaW9uIDI5OTI5KQorKysgV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuY3BwCShBcmJlaXRza29waWUpCkBAIC0yMCwz
MyArMjAsMzggQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIndlYmtpdG5ldHdv
cmtyZXF1ZXN0LmgiCi0jaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGV4dGVybiAiQyIgewogCiBH
X0RFRklORV9UWVBFKFdlYktpdE5ldHdvcmtSZXF1ZXN0LCB3ZWJraXRfbmV0d29ya19yZXF1ZXN0
LCBHX1RZUEVfT0JKRUNUKTsKIAorc3RydWN0IF9XZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGUg
eworICAgIGdjaGFyKiB1cmk7Cit9OworCisjZGVmaW5lIFdFQktJVF9ORVRXT1JLX1JFUVVFU1Rf
R0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJL
SVRfVFlQRV9ORVRXT1JLX1JFUVVFU1QsIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSkpCisK
IHN0YXRpYyB2b2lkIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZmluYWxpemUoR09iamVjdCogb2Jq
ZWN0KQogewotICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSogcmVxdWVzdFByaXZhdGUg
PSBXRUJLSVRfTkVUV09SS19SRVFVRVNUX0dFVF9QUklWQVRFKG9iamVjdCk7CisgICAgV2ViS2l0
TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfTkVUV09SS19SRVFVRVNUKG9iamVjdCk7
CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsK
IAotICAgIGdfZnJlZShyZXF1ZXN0UHJpdmF0ZS0+dXJpKTsKKyAgICBnX2ZyZWUocHJpdi0+dXJp
KTsKIAogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfcGFyZW50X2Ns
YXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X25ldHdvcmtf
cmVxdWVzdF9jbGFzc19pbml0KFdlYktpdE5ldHdvcmtSZXF1ZXN0Q2xhc3MqIHJlcXVlc3RDbGFz
cykKIHsKLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVxdWVzdENsYXNzLCBzaXplb2Yo
V2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlKSk7Ci0KICAgICBHX09CSkVDVF9DTEFTUyhyZXF1
ZXN0Q2xhc3MpLT5maW5hbGl6ZSA9IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZmluYWxpemU7CisK
KyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVxdWVzdENsYXNzLCBzaXplb2YoV2ViS2l0
TmV0d29ya1JlcXVlc3RQcml2YXRlKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9uZXR3b3Jr
X3JlcXVlc3RfaW5pdChXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCkKIHsKKyAgICBXZWJL
aXROZXR3b3JrUmVxdWVzdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTkVUV09SS19SRVFVRVNUX0dF
VF9QUklWQVRFKHJlcXVlc3QpOworICAgIHJlcXVlc3QtPnByaXYgPSBwcml2OwogfQogCiBXZWJL
aXROZXR3b3JrUmVxdWVzdCogd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcoY29uc3QgZ2NoYXIq
IHVyaSkKQEAgLTU0LDkgKzU5LDkgQEAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHdlYmtpdF9uZXR3
b3JrX3JlcQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHVyaSwgTlVMTCk7CiAKICAgICBXZWJL
aXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9ORVRXT1JLX1JFUVVFU1QoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX05FVFdPUktfUkVRVUVTVCwgTlVMTCkpOwotICAgIFdlYktpdE5l
dHdvcmtSZXF1ZXN0UHJpdmF0ZSogcmVxdWVzdFByaXZhdGUgPSBXRUJLSVRfTkVUV09SS19SRVFV
RVNUX0dFVF9QUklWQVRFKHJlcXVlc3QpOworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0
ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7CiAKLSAgICByZXF1ZXN0UHJpdmF0ZS0+dXJpID0gZ19z
dHJkdXAodXJpKTsKKyAgICBwcml2LT51cmkgPSBnX3N0cmR1cCh1cmkpOwogCiAgICAgcmV0dXJu
IHJlcXVlc3Q7CiB9CkBAIC02NiwxOSArNzEsMTggQEAgdm9pZCB3ZWJraXRfbmV0d29ya19yZXF1
ZXN0X3NldF91cmkoV2ViSwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX05FVFdPUktf
UkVRVUVTVChyZXF1ZXN0KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbCh1cmkpOwogCi0gICAgV2Vi
S2l0TmV0d29ya1JlcXVlc3RQcml2YXRlKiByZXF1ZXN0UHJpdmF0ZSA9IFdFQktJVF9ORVRXT1JL
X1JFUVVFU1RfR0VUX1BSSVZBVEUocmVxdWVzdCk7CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3RQ
cml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKIAotICAgIGdfZnJlZShyZXF1ZXN0UHJpdmF0
ZS0+dXJpKTsKLSAgICByZXF1ZXN0UHJpdmF0ZS0+dXJpID0gZ19zdHJkdXAodXJpKTsKKyAgICBn
X2ZyZWUocHJpdi0+dXJpKTsKKyAgICBwcml2LT51cmkgPSBnX3N0cmR1cCh1cmkpOwogfQogCiBj
b25zdCBnY2hhciogd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJpKFdlYktpdE5ldHdvcmtS
ZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19O
RVRXT1JLX1JFUVVFU1QocmVxdWVzdCksIE5VTEwpOwogCi0gICAgV2ViS2l0TmV0d29ya1JlcXVl
c3RQcml2YXRlKiByZXF1ZXN0UHJpdmF0ZSA9IFdFQktJVF9ORVRXT1JLX1JFUVVFU1RfR0VUX1BS
SVZBVEUocmVxdWVzdCk7Ci0KLSAgICByZXR1cm4gcmVxdWVzdFByaXZhdGUtPnVyaTsKKyAgICBX
ZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OworICAgIHJl
dHVybiBwcml2LT51cmk7CiB9CiAKIH0KSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0
dGluZ3MuaAkoUmV2aXNpb24gMjk5MjkpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJz
ZXR0aW5ncy5oCShBcmJlaXRza29waWUpCkBAIC0zMywxMiArMzMsMTEgQEAgR19CRUdJTl9ERUNM
UwogI2RlZmluZSBXRUJLSVRfSVNfV0VCX1NFVFRJTkdTX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NI
RUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUykpCiAjZGVm
aW5lIFdFQktJVF9XRUJfU0VUVElOR1NfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0Vf
R0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0
aW5nc0NsYXNzKSkKIAotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzICAgICAgICAg
ICAgICAgIFdlYktpdFdlYlNldHRpbmdzOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRp
bmdzUHJpdmF0ZSAgICAgICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZTsKLXR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJTZXR0aW5nc0NsYXNzICAgICAgICAgICBXZWJLaXRXZWJTZXR0aW5nc0Ns
YXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSBXZWJLaXRXZWJT
ZXR0aW5nc1ByaXZhdGU7CiAKIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3MgewogICAgIEdPYmpl
Y3QgcGFyZW50X2luc3RhbmNlOworCiAgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2
OwogfTsKIApJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oCShS
ZXZpc2lvbiAyOTkyOSkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0
LmgJKEFyYmVpdHNrb3BpZSkKQEAgLTMzLDEzICszMywxNiBAQCBHX0JFR0lOX0RFQ0xTCiAjZGVm
aW5lIFdFQktJVF9JU19ORVRXT1JLX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfTkVUV09SS19SRVFVRVNUKSkKICNkZWZp
bmUgV0VCS0lUX05FVFdPUktfUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5D
RV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9ORVRXT1JLX1JFUVVFU1QsIFdlYktpdE5l
dHdvcmtSZXF1ZXN0Q2xhc3MpKQogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0TmV0d29ya1JlcXVl
c3RQcml2YXRlIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZTsKIAogc3RydWN0IF9XZWJLaXRO
ZXR3b3JrUmVxdWVzdCB7Ci0gICAgR09iamVjdCBwYXJlbnQ7CisgICAgR09iamVjdCBwYXJlbnRf
aW5zdGFuY2U7CisKKyAgICBXZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGUqIHByaXY7CiB9Owog
CiBzdHJ1Y3QgX1dlYktpdE5ldHdvcmtSZXF1ZXN0Q2xhc3MgewotICAgIEdPYmplY3RDbGFzcyBw
YXJlbnQ7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKIH07CiAKIFdFQktJVF9BUEkg
R1R5cGUKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShSZXZpc2lvbiAyOTky
OSkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShBcmJlaXRza29waWUp
CkBAIC0yMjQsNyArMjI0LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9wcm9w
ZXJ0eQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2V4cG9zZV9ldmVudChHdGtX
aWRnZXQqIHdpZGdldCwgR2RrRXZlbnRFeHBvc2UqIGV2ZW50KQogewotICAgIEZyYW1lKiBmcmFt
ZSA9IGNvcmUod2Via2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1lKFdFQktJVF9XRUJfVklFVyh3
aWRnZXQpKSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3
aWRnZXQpOworCisgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7
CiAgICAgR2RrUmVjdGFuZ2xlIGNsaXA7CiAgICAgZ2RrX3JlZ2lvbl9nZXRfY2xpcGJveChldmVu
dC0+cmVnaW9uLCAmY2xpcCk7CiAgICAgY2Fpcm9fdCogY3IgPSBnZGtfY2Fpcm9fY3JlYXRlKGV2
ZW50LT53aW5kb3cpOwpAQCAtMjQxLDcgKzI0Myw5IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRf
d2ViX3ZpZXdfZXhwb3NlX2UKIAogc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19rZXlf
cHJlc3NfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50S2V5KiBldmVudCkKIHsKLSAg
ICBGcmFtZSogZnJhbWUgPSBjb3JlKFdFQktJVF9XRUJfVklFVyh3aWRnZXQpKS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKKworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUo
d2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5Ym9hcmRFdmVudChldmVudCk7CiAKICAgICBpZiAoZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChrZXlib2FyZEV2ZW50KSkKQEAgLTI4Myw3ICsy
ODcsOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2tleV9wcmVzCiAKIHN0YXRp
YyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfa2V5X3JlbGVhc2VfZXZlbnQoR3RrV2lkZ2V0KiB3
aWRnZXQsIEdka0V2ZW50S2V5KiBldmVudCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBjb3JlKFdF
QktJVF9XRUJfVklFVyh3aWRnZXQpKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5G
cmFtZSgpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lk
Z2V0KTsKKworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5
Ym9hcmRFdmVudChldmVudCk7CiAKICAgICBpZiAoZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlF
dmVudChrZXlib2FyZEV2ZW50KSkKQEAgLTI5NSw0NiArMzAxLDUwIEBAIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfa2V5X3JlbGUKIAogc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJf
dmlld19idXR0b25fcHJlc3NfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnV0dG9u
KiBldmVudCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRf
bWFpbl9mcmFtZShXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSkpOworICAgIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKKworICAgIEZyYW1lKiBmcmFtZSA9
IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpOwogCiAgICAgLy8gRklYTUU6IG5lZWQgdG8ga2Vl
cCB0cmFjayBvZiBzdWJmcmFtZSBmb2N1cyBmb3Iga2V5IGV2ZW50cwotICAgIGd0a193aWRnZXRf
Z3JhYl9mb2N1cyhHVEtfV0lER0VUKHdpZGdldCkpOworICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1
cyh3aWRnZXQpOwogCiAgICAgaWYgKGV2ZW50LT5idXR0b24gPT0gMykKLSAgICAgICAgcmV0dXJu
IHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXRUJLSVRfV0VCX1ZJ
RVcod2lkZ2V0KSwgUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50KSk7CisgICAgICAgIHJldHVybiB3
ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQod2ViVmlldywgUGxhdGZv
cm1Nb3VzZUV2ZW50KGV2ZW50KSk7CiAKICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5oYW5kbGVNb3VzZVByZXNzRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50KSk7CiB9CiAK
IHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfYnV0dG9uX3JlbGVhc2VfZXZlbnQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnV0dG9uKiBldmVudCkKIHsKLSAgICBGcmFtZSogZnJh
bWUgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZShXRUJLSVRfV0VCX1ZJRVco
d2lkZ2V0KSkpOwotCi0gICAgV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcgPSBXRUJLSVRfV0VCX1ZJ
RVcod2lkZ2V0KTsKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBXRUJL
SVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViX3ZpZXcpOwotICAgIEZyYW1lKiBmb2N1c2VkRnJh
bWUgPSB3ZWJWaWV3RGF0YS0+Y29yZVBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkRnJh
bWUoKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdl
dCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAg
IEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZEZyYW1lKCk7CiAKICAgICBpZiAoZm9jdXNlZEZyYW1lICYmIGZvY3VzZWRGcmFtZS0+
ZWRpdG9yKCktPmNhbkVkaXQoKSkgewogICAgICAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193
aWRnZXRfZ2V0X3BhcmVudF93aW5kb3cod2lkZ2V0KTsKLSAgICAgICAgZ3RrX2ltX2NvbnRleHRf
c2V0X2NsaWVudF93aW5kb3cod2ViVmlld0RhdGEtPmltQ29udGV4dCwgd2luZG93KTsKKyAgICAg
ICAgZ3RrX2ltX2NvbnRleHRfc2V0X2NsaWVudF93aW5kb3cocHJpdi0+aW1Db250ZXh0LCB3aW5k
b3cpOwogI2lmZGVmIE1BRU1PX0NIQU5HRVMKLSAgICAgICAgaGlsZG9uX2d0a19pbV9jb250ZXh0
X2ZpbHRlcl9ldmVudCh3ZWJWaWV3RGF0YS0+aW1Db250ZXh0LCAoR2RrRXZlbnQqKWV2ZW50KTsK
LSAgICAgICAgaGlsZG9uX2d0a19pbV9jb250ZXh0X3Nob3cod2ViVmlld0RhdGEtPmltQ29udGV4
dCk7CisgICAgICAgIGhpbGRvbl9ndGtfaW1fY29udGV4dF9maWx0ZXJfZXZlbnQocHJpdi0+aW1D
b250ZXh0LCAoR2RrRXZlbnQqKWV2ZW50KTsKKyAgICAgICAgaGlsZG9uX2d0a19pbV9jb250ZXh0
X3Nob3cocHJpdi0+aW1Db250ZXh0KTsKICNlbmRpZgogICAgIH0KIAotICAgIHJldHVybiBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KFBsYXRmb3JtTW91c2VF
dmVudChldmVudCkpOworICAgIHJldHVybiBmb2N1c2VkRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5o
YW5kbGVNb3VzZVJlbGVhc2VFdmVudChQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQpKTsKIH0KIAog
c3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19tb3Rpb25fZXZlbnQoR3RrV2lkZ2V0KiB3
aWRnZXQsIEdka0V2ZW50TW90aW9uKiBldmVudCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBjb3Jl
KHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZShXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSkp
OworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsK
KworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpOwogICAgIHJl
dHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92ZWQoUGxhdGZvcm1Nb3VzZUV2ZW50
KGV2ZW50KSk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfc2Nyb2xsX2V2
ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudFNjcm9sbCogZXZlbnQpCiB7Ci0gICAgRnJh
bWUqIGZyYW1lID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUoV0VCS0lUX1dF
Ql9WSUVXKHdpZGdldCkpKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dF
Ql9WSUVXKHdpZGdldCk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5tYWlu
RnJhbWUoKTsKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgd2hlZWxFdmVudChldmVudCk7CiAgICAg
cmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50
KTsKIH0KQEAgLTM0Myw3ICszNTMsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2l6
ZV9hbGxvY2F0CiB7CiAgICAgR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50
X2NsYXNzKS0+c2l6ZV9hbGxvY2F0ZSh3aWRnZXQsYWxsb2NhdGlvbik7CiAKLSAgICBGcmFtZSog
ZnJhbWUgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZShXRUJLSVRfV0VCX1ZJ
RVcod2lkZ2V0KSkpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJ
RVcod2lkZ2V0KTsKKworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1haW5GcmFt
ZSgpOwogICAgIGZyYW1lLT52aWV3KCktPnJlc2l6ZShhbGxvY2F0aW9uLT53aWR0aCwgYWxsb2Nh
dGlvbi0+aGVpZ2h0KTsKICAgICBmcmFtZS0+Zm9yY2VMYXlvdXQoKTsKICAgICBmcmFtZS0+dmll
dygpLT5hZGp1c3RWaWV3U2l6ZSgpOwpAQCAtMzU2LDcgKzM2OCw4IEBAIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW4KICAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3Rr
X3dpZGdldF9nZXRfdG9wbGV2ZWwod2lkZ2V0KTsKICAgICBpZiAoR1RLX1dJREdFVF9UT1BMRVZF
TCh0b3BsZXZlbCkgJiYgZ3RrX3dpbmRvd19oYXNfdG9wbGV2ZWxfZm9jdXMoR1RLX1dJTkRPVyh0
b3BsZXZlbCkpKSB7CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VC
X1ZJRVcod2lkZ2V0KTsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldykpOworCisgICAgICAgIEZyYW1lKiBmcmFtZSA9IGNv
cmUod2ViVmlldyktPm1haW5GcmFtZSgpOwogICAgICAgICBjb3JlKHdlYlZpZXcpLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+c2V0QWN0aXZlKGZyYW1lKTsKICAgICB9CiAgICAgcmV0dXJuIEdUS19XSURH
RVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcyktPmZvY3VzX2luX2V2ZW50KHdp
ZGdldCwgZXZlbnQpOwpAQCAtNDA0LDkgKzQxNyw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19zZXRfc2Nyb2xsX2EKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jb250YWluZXJf
YWRkKEd0a0NvbnRhaW5lciogY29udGFpbmVyLCBHdGtXaWRnZXQqIHdpZGdldCkKIHsKICAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGNvbnRhaW5lcik7Ci0gICAg
V2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXZhdGVfZGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRf
UFJJVkFURSh3ZWJWaWV3KTsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZp
ZXctPnByaXY7CiAKLSAgICBwcml2YXRlX2RhdGEtPmNoaWxkcmVuLmFkZCh3aWRnZXQpOworICAg
IHByaXYtPmNoaWxkcmVuLmFkZCh3aWRnZXQpOwogICAgIGlmIChHVEtfV0lER0VUX1JFQUxJWkVE
KGNvbnRhaW5lcikpCiAgICAgICAgIGd0a193aWRnZXRfc2V0X3BhcmVudF93aW5kb3cod2lkZ2V0
LCBHVEtfV0lER0VUKHdlYlZpZXcpLT53aW5kb3cpOwogICAgIGd0a193aWRnZXRfc2V0X3BhcmVu
dCh3aWRnZXQsIEdUS19XSURHRVQoY29udGFpbmVyKSk7CkBAIC00MTQsMTkgKzQyNywyMSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY29udGFpbmVyX2FkCiAKIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19jb250YWluZXJfcmVtb3ZlKEd0a0NvbnRhaW5lciogY29udGFpbmVyLCBH
dGtXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdmF0ZV9k
YXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKFdFQktJVF9XRUJfVklFVyhjb250YWlu
ZXIpKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGNvbnRh
aW5lcik7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2Owog
Ci0gICAgaWYgKHByaXZhdGVfZGF0YS0+Y2hpbGRyZW4uY29udGFpbnMod2lkZ2V0KSkgeworICAg
IGlmIChwcml2LT5jaGlsZHJlbi5jb250YWlucyh3aWRnZXQpKSB7CiAgICAgICAgIGd0a193aWRn
ZXRfdW5wYXJlbnQod2lkZ2V0KTsKLSAgICAgICAgcHJpdmF0ZV9kYXRhLT5jaGlsZHJlbi5yZW1v
dmUod2lkZ2V0KTsKKyAgICAgICAgcHJpdi0+Y2hpbGRyZW4ucmVtb3ZlKHdpZGdldCk7CiAgICAg
fQogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY29udGFpbmVyX2ZvcmFsbChHdGtD
b250YWluZXIqIGNvbnRhaW5lciwgZ2Jvb2xlYW4sIEd0a0NhbGxiYWNrIGNhbGxiYWNrLCBncG9p
bnRlciBjYWxsYmFja0RhdGEpCiB7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXZhdGVE
YXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKFdFQktJVF9XRUJfVklFVyhjb250YWlu
ZXIpKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGNvbnRh
aW5lcik7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2Owog
Ci0gICAgSGFzaFNldDxHdGtXaWRnZXQqPiBjaGlsZHJlbiA9IHByaXZhdGVEYXRhLT5jaGlsZHJl
bjsKKyAgICBIYXNoU2V0PEd0a1dpZGdldCo+IGNoaWxkcmVuID0gcHJpdi0+Y2hpbGRyZW47CiAg
ICAgSGFzaFNldDxHdGtXaWRnZXQqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2hpbGRyZW4uZW5k
KCk7CiAgICAgZm9yIChIYXNoU2V0PEd0a1dpZGdldCo+Ojpjb25zdF9pdGVyYXRvciBjdXJyZW50
ID0gY2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKICAgICAgICAg
KCpjYWxsYmFjaykoKmN1cnJlbnQsIGNhbGxiYWNrRGF0YSk7CkBAIC01ODEsMTkgKzU5NiwyMCBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9wYXN0ZV9jCiAKIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgd2Via2l0
X3dlYl92aWV3X3N0b3BfbG9hZGluZyhXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KSk7CisgICAgV2Vi
S2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhvYmplY3QpOworICAgIFdlYktp
dFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKIAotICAgIFdlYktpdFdlYlZp
ZXdQcml2YXRlKiB3ZWJWaWV3RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURShXRUJL
SVRfV0VCX1ZJRVcob2JqZWN0KSk7CisgICAgd2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZyhX
RUJLSVRfV0VCX1ZJRVcob2JqZWN0KSk7CiAKLSAgICBkZWxldGUgd2ViVmlld0RhdGEtPmNvcmVQ
YWdlOworICAgIGRlbGV0ZSBwcml2LT5jb3JlUGFnZTsKIAotICAgIGdfb2JqZWN0X3VucmVmKHdl
YlZpZXdEYXRhLT5iYWNrRm9yd2FyZExpc3QpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXdE
YXRhLT53ZWJTZXR0aW5ncyk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlld0RhdGEtPm1haW5G
cmFtZSk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlld0RhdGEtPmltQ29udGV4dCk7Ci0gICAg
Z3RrX3RhcmdldF9saXN0X3VucmVmKHdlYlZpZXdEYXRhLT5jb3B5X3RhcmdldF9saXN0KTsKLSAg
ICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYod2ViVmlld0RhdGEtPnBhc3RlX3RhcmdldF9saXN0KTsK
LSAgICBkZWxldGUgd2ViVmlld0RhdGEtPnVzZXJBZ2VudDsKKyAgICBnX29iamVjdF91bnJlZihw
cml2LT5iYWNrRm9yd2FyZExpc3QpOworICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYlNldHRp
bmdzKTsKKyAgICBnX29iamVjdF91bnJlZihwcml2LT5tYWluRnJhbWUpOworICAgIGdfb2JqZWN0
X3VucmVmKHByaXYtPmltQ29udGV4dCk7CisgICAgZ3RrX3RhcmdldF9saXN0X3VucmVmKHByaXYt
PmNvcHlfdGFyZ2V0X2xpc3QpOworICAgIGd0a190YXJnZXRfbGlzdF91bnJlZihwcml2LT5wYXN0
ZV90YXJnZXRfbGlzdCk7CisgICAgZGVsZXRlIHByaXYtPnVzZXJBZ2VudDsKIAogICAgIEdfT0JK
RUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3Qp
OwogfQpAQCAtNjE2LDggKzYzMiw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFz
c19pbml0KFcKIAogICAgIHdlYmtpdF9pbml0KCk7CiAKLSAgICBnX3R5cGVfY2xhc3NfYWRkX3By
aXZhdGUod2ViVmlld0NsYXNzLCBzaXplb2YoV2ViS2l0V2ViVmlld1ByaXZhdGUpKTsKLQogICAg
IC8qCiAgICAgICogU2lnbmFscwogICAgICAqLwpAQCAtMTAzMywxMyArMTA0NywxNSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2hldGhlciBjb250ZW50IGNh
biBiZSBtb2RpZmllZCBieSB0aGUgdXNlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUpKTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSh3ZWJWaWV3Q2xhc3MsIHNpemVv
ZihXZWJLaXRXZWJWaWV3UHJpdmF0ZSkpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfc2NyZWVuX2NoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR2RrU2NyZWVuKiBwcmV2
aW91c1NjcmVlbiwgZ3BvaW50ZXIgdXNlcmRhdGEpCiB7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwot
ICAgIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncyA9IHdlYlZpZXdEYXRhLT53ZWJTZXR0
aW5nczsKLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJWaWV3RGF0YS0+Y29yZVBhZ2UtPnNl
dHRpbmdzKCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2
OworICAgIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncyA9IHByaXYtPndlYlNldHRpbmdz
OworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGNvcmUod2ViVmlldyktPnNldHRpbmdzKCk7CiAK
ICAgICBndWludCBkZWZhdWx0Rm9udFNpemUsIGRlZmF1bHRNb25vc3BhY2VGb250U2l6ZSwgbWlu
aW11bUZvbnRTaXplLCBtaW5pbXVtTG9naWNhbEZvbnRTaXplOwogCkBAIC0xMDY1LDkgKzEwODEs
OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nCiAKIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmll
dykKIHsKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VC
X1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNl
dHRpbmdzID0gd2ViVmlld0RhdGEtPndlYlNldHRpbmdzOwotICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IHdlYlZpZXdEYXRhLT5jb3JlUGFnZS0+c2V0dGluZ3MoKTsKKyAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdl
YlNldHRpbmdzID0gcHJpdi0+d2ViU2V0dGluZ3M7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0g
Y29yZSh3ZWJWaWV3KS0+c2V0dGluZ3MoKTsKIAogICAgIGdjaGFyKiBkZWZhdWx0RW5jb2Rpbmcs
ICpjdXJzaXZlRm9udEZhbWlseSwgKmRlZmF1bHRGb250RmFtaWx5LCAqZmFudGFzeUZvbnRGYW1p
bHksICptb25vc3BhY2VGb250RmFtaWx5LCAqc2Fuc1NlcmlmRm9udEZhbWlseSwgKnNlcmlmRm9u
dEZhbWlseSwgKnVzZXJTdHlsZXNoZWV0VXJpOwogICAgIGdib29sZWFuIGF1dG9Mb2FkSW1hZ2Vz
LCBhdXRvU2hyaW5rSW1hZ2VzLCBwcmludEJhY2tncm91bmRzLCBlbmFibGVTY3JpcHRzLCBlbmFi
bGVQbHVnaW5zLCByZXNpemFibGVUZXh0QXJlYXM7CkBAIC0xMTE4LDggKzExMzQsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpCiAKIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnkoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdz
LCBHUGFyYW1TcGVjKiBwc3BlYywgV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICBXZWJL
aXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZB
VEUod2ViVmlldyk7Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gd2ViVmlld0RhdGEtPmNvcmVQ
YWdlLT5zZXR0aW5ncygpOworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGNvcmUod2ViVmlldykt
PnNldHRpbmdzKCk7CiAKICAgICBjb25zdCBnY2hhciogbmFtZSA9IGdfaW50ZXJuX3N0cmluZyhw
c3BlYy0+bmFtZSk7CiAgICAgR1ZhbHVlIHZhbHVlID0gezAsIDB9OwpAQCAtMTE2OSwyMiArMTE4
NCwxOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90CiAKIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0g
ICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dF
VF9QUklWQVRFKHdlYlZpZXcpOwotICAgIHdlYlZpZXdEYXRhLT5pbUNvbnRleHQgPSBndGtfaW1f
bXVsdGljb250ZXh0X25ldygpOwotICAgIHdlYlZpZXdEYXRhLT5jb3JlUGFnZSA9IG5ldyBQYWdl
KG5ldyBXZWJLaXQ6OkNocm9tZUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6Q29udGV4dE1l
bnVDbGllbnQsIG5ldyBXZWJLaXQ6OkVkaXRvckNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6
RHJhZ0NsaWVudCwgbmV3IFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50KTsKKyAgICBXZWJLaXRXZWJW
aWV3UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsK
KyAgICB3ZWJWaWV3LT5wcml2ID0gcHJpdjsKIAotICAgIHdlYlZpZXdEYXRhLT53ZWJTZXR0aW5n
cyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7Ci0gICAgd2Via2l0X3dlYl92aWV3X3VwZGF0
ZV9zZXR0aW5ncyh3ZWJWaWV3KTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJzY3Jl
ZW4tY2hhbmdlZCIsIEdfQ0FMTEJBQ0sod2Via2l0X3dlYl92aWV3X3NjcmVlbl9jaGFuZ2VkKSwg
TlVMTCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3RGF0YS0+d2ViU2V0dGluZ3MsICJu
b3RpZnkiLCBHX0NBTExCQUNLKHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnkpLCB3ZWJW
aWV3KTsKKyAgICBwcml2LT5pbUNvbnRleHQgPSBndGtfaW1fbXVsdGljb250ZXh0X25ldygpOwor
ICAgIHByaXYtPmNvcmVQYWdlID0gbmV3IFBhZ2UobmV3IFdlYktpdDo6Q2hyb21lQ2xpZW50KHdl
YlZpZXcpLCBuZXcgV2ViS2l0OjpDb250ZXh0TWVudUNsaWVudCwgbmV3IFdlYktpdDo6RWRpdG9y
Q2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpEcmFnQ2xpZW50LCBuZXcgV2ViS2l0OjpJbnNw
ZWN0b3JDbGllbnQpOwogCiAgICAgR1RLX1dJREdFVF9TRVRfRkxBR1Mod2ViVmlldywgR1RLX0NB
Tl9GT0NVUyk7Ci0gICAgd2ViVmlld0RhdGEtPm1haW5GcmFtZSA9IFdFQktJVF9XRUJfRlJBTUUo
d2Via2l0X3dlYl9mcmFtZV9uZXcod2ViVmlldykpOwotICAgIHdlYlZpZXdEYXRhLT5sYXN0UG9w
dXBYUG9zaXRpb24gPSB3ZWJWaWV3RGF0YS0+bGFzdFBvcHVwWVBvc2l0aW9uID0gLTE7Ci0gICAg
d2ViVmlld0RhdGEtPmVkaXRhYmxlID0gZmFsc2U7CisgICAgcHJpdi0+bWFpbkZyYW1lID0gV0VC
S0lUX1dFQl9GUkFNRSh3ZWJraXRfd2ViX2ZyYW1lX25ldyh3ZWJWaWV3KSk7CisgICAgcHJpdi0+
bGFzdFBvcHVwWFBvc2l0aW9uID0gcHJpdi0+bGFzdFBvcHVwWVBvc2l0aW9uID0gLTE7CisgICAg
cHJpdi0+ZWRpdGFibGUgPSBmYWxzZTsKIAotICAgIC8qIEluaXRpYWxpemUgdGhlIHZpZXcncyBi
YWNrL2ZvcndhcmQgbGlzdCAqLwotICAgIHdlYlZpZXdEYXRhLT5iYWNrRm9yd2FyZExpc3QgPSB3
ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X25ld193aXRoX3dlYl92aWV3KHdlYlZpZXcpOwor
ICAgIHByaXYtPmJhY2tGb3J3YXJkTGlzdCA9IHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3Rf
bmV3X3dpdGhfd2ViX3ZpZXcod2ViVmlldyk7CiAKICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLDEw
LDApCiAgICAgR2RrQXRvbSB0ZXh0SHRtbCA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5n
KCJ0ZXh0L2h0bWwiKTsKQEAgLTExOTIsMTUgKzEyMDMsMTkgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X2luaXQoV2ViS2l0VwogICAgIEdka0F0b20gdGV4dEh0bWwgPSBnZGtfYXRvbV9p
bnRlcm4oInRleHQvaHRtbCIsIGZhbHNlKTsKICNlbmRpZgogICAgIC8qIFRhcmdldHMgZm9yIGNv
cHkgKi8KLSAgICB3ZWJWaWV3RGF0YS0+Y29weV90YXJnZXRfbGlzdCA9IGd0a190YXJnZXRfbGlz
dF9uZXcoTlVMTCwgMCk7Ci0gICAgZ3RrX3RhcmdldF9saXN0X2FkZCh3ZWJWaWV3RGF0YS0+Y29w
eV90YXJnZXRfbGlzdCwgdGV4dEh0bWwsIDAsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19I
VE1MKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0cyh3ZWJWaWV3RGF0YS0+
Y29weV90YXJnZXRfbGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQpOworICAg
IHByaXYtPmNvcHlfdGFyZ2V0X2xpc3QgPSBndGtfdGFyZ2V0X2xpc3RfbmV3KE5VTEwsIDApOwor
ICAgIGd0a190YXJnZXRfbGlzdF9hZGQocHJpdi0+Y29weV90YXJnZXRfbGlzdCwgdGV4dEh0bWws
IDAsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MKTsKKyAgICBndGtfdGFyZ2V0X2xp
c3RfYWRkX3RleHRfdGFyZ2V0cyhwcml2LT5jb3B5X3RhcmdldF9saXN0LCBXRUJLSVRfV0VCX1ZJ
RVdfVEFSR0VUX0lORk9fVEVYVCk7CiAKICAgICAvKiBUYXJnZXRzIGZvciBwYXN0aW5nICovCi0g
ICAgd2ViVmlld0RhdGEtPnBhc3RlX3RhcmdldF9saXN0ID0gZ3RrX3RhcmdldF9saXN0X25ldyhO
VUxMLCAwKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKHdlYlZpZXdEYXRhLT5wYXN0ZV90YXJn
ZXRfbGlzdCwgdGV4dEh0bWwsIDAsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MKTsK
LSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0cyh3ZWJWaWV3RGF0YS0+cGFzdGVf
dGFyZ2V0X2xpc3QsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19URVhUKTsKKyAgICBwcml2
LT5wYXN0ZV90YXJnZXRfbGlzdCA9IGd0a190YXJnZXRfbGlzdF9uZXcoTlVMTCwgMCk7CisgICAg
Z3RrX3RhcmdldF9saXN0X2FkZChwcml2LT5wYXN0ZV90YXJnZXRfbGlzdCwgdGV4dEh0bWwsIDAs
IFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MKTsKKyAgICBndGtfdGFyZ2V0X2xpc3Rf
YWRkX3RleHRfdGFyZ2V0cyhwcml2LT5wYXN0ZV90YXJnZXRfbGlzdCwgV0VCS0lUX1dFQl9WSUVX
X1RBUkdFVF9JTkZPX1RFWFQpOwogCisgICAgcHJpdi0+d2ViU2V0dGluZ3MgPSB3ZWJraXRfd2Vi
X3NldHRpbmdzX25ldygpOworICAgIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3Mod2Vi
Vmlldyk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAic2NyZWVuLWNoYW5nZWQiLCBH
X0NBTExCQUNLKHdlYmtpdF93ZWJfdmlld19zY3JlZW5fY2hhbmdlZCksIE5VTEwpOworICAgIGdf
c2lnbmFsX2Nvbm5lY3QocHJpdi0+d2ViU2V0dGluZ3MsICJub3RpZnkiLCBHX0NBTExCQUNLKHdl
YmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnkpLCB3ZWJWaWV3KTsKIH0KIAogR3RrV2lkZ2V0
KiB3ZWJraXRfd2ViX3ZpZXdfbmV3KHZvaWQpCkBAIC0xMjE1LDExICsxMjMwLDExIEBAIHZvaWQg
d2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyhXZWJLaXQKICAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX1NFVFRJTkdTKHdlYlNldHRpbmdzKSk7CiAKLSAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7
Ci0gICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdlYlZpZXdEYXRhLT53
ZWJTZXR0aW5ncywgKGdwb2ludGVyKXdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnksIHdl
YlZpZXcpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXdEYXRhLT53ZWJTZXR0aW5ncyk7Cisg
ICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwcml2LT53ZWJTZXR0aW5ncywgKGdwb2lu
dGVyKXdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnksIHdlYlZpZXcpOworICAgIGdfb2Jq
ZWN0X3VucmVmKHByaXYtPndlYlNldHRpbmdzKTsKICAgICBnX29iamVjdF9yZWYod2ViU2V0dGlu
Z3MpOwotICAgIHdlYlZpZXdEYXRhLT53ZWJTZXR0aW5ncyA9IHdlYlNldHRpbmdzOworICAgIHBy
aXYtPndlYlNldHRpbmdzID0gd2ViU2V0dGluZ3M7CiAgICAgd2Via2l0X3dlYl92aWV3X3VwZGF0
ZV9zZXR0aW5ncyh3ZWJWaWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlNldHRpbmdzLCAi
bm90aWZ5IiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KSwgd2Vi
Vmlldyk7CiB9CkBAIC0xMjI4LDggKzEyNDMsOCBAQCBXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0
X3dlYl92aWV3X2dldF9zCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJW
aWV3RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAgICByZXR1
cm4gd2ViVmlld0RhdGEtPndlYlNldHRpbmdzOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBw
cml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICByZXR1cm4gcHJpdi0+d2ViU2V0dGluZ3M7CiB9CiAK
IC8qKgpAQCAtMTI1OCwxMiArMTI3MywxMiBAQCBXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqIHdl
YmtpdF93ZWJfdmllCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9W
SUVXKHdlYlZpZXcpLCBOVUxMKTsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3
RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURShXRUJLSVRfV0VCX1ZJRVcod2ViVmll
dykpOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKIAot
ICAgIGlmICghd2ViVmlld0RhdGEtPmNvcmVQYWdlIHx8ICF3ZWJWaWV3RGF0YS0+Y29yZVBhZ2Ut
PmJhY2tGb3J3YXJkTGlzdCgpLT5lbmFibGVkKCkpCisgICAgaWYgKCFjb3JlKHdlYlZpZXcpIHx8
ICFjb3JlKHdlYlZpZXcpLT5iYWNrRm9yd2FyZExpc3QoKS0+ZW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiB3ZWJWaWV3RGF0YS0+YmFja0ZvcndhcmRMaXN0Owor
ICAgIHJldHVybiBwcml2LT5iYWNrRm9yd2FyZExpc3Q7CiB9CiAKIC8qKgpAQCAtMTI4MCw2ICsx
Mjk1LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2dvX3RvX2JhY2tfZm9ydwogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfSElTVE9SWV9JVEVNKGl0ZW0p
LCBGQUxTRSk7CiAKKyAgICAvLyBGSVhNRTogVGhpcyBhbHdheXMgcmV0dXJucyBUUlVFCiAgICAg
Y29yZSh3ZWJWaWV3KS0+Z29Ub0l0ZW0oY29yZShpdGVtKSwgRnJhbWVMb2FkVHlwZUluZGV4ZWRC
YWNrRm9yd2FyZCk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CkBAIC0xMjg4LDYgKzEzMDQsOCBAQCBn
Ym9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZ29fdG9fYmFja19mb3J3CiAgKiB3ZWJraXRfd2ViX3Zp
ZXdfZ29fYmFja3dhcmQ6CiAgKiBAd2ViVmlldzogdGhlICNXZWJLaXRXZWJWaWV3CiAgKgorICog
QERlcHJlY2F0ZWQ6IFVzZSB3ZWJraXRfd2ViX3ZpZXdfZ29fYmFjaygpIGluc3RlYWQuCisgKgog
ICogR28gdG8gdGhlIHByZXZpb3VzIHBhZ2UsIGlmIHRoZXJlJ3MgYW55LgogICovCiB2b2lkIHdl
YmtpdF93ZWJfdmlld19nb19iYWNrd2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtMTMy
Miw3ICsxMzQwLDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ29fYmFja19vcl9mb3J3YXJkKAog
ewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKIAot
ICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Via2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1lKHdl
YlZpZXcpKTsKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKTsK
ICAgICBmcmFtZS0+bG9hZGVyKCktPmdvQmFja09yRm9yd2FyZChzdGVwcyk7CiB9CiAKQEAgLTEz
NDUsNiArMTM2Myw4IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQoV2ViS2l0V2UK
ICAqCiAgKiBDaGVja3Mgd2hldGhlciB0aGUgdmlldyBjYW4gZ28gYmFjayB0byB0aGUgcHJldmlv
dXMgcGFnZQogICoKKyAqIEBEZXByZWNhdGVkOiBVc2Ugd2Via2l0X3dlYl92aWV3X2Nhbl9nb19i
YWNrKCkgaW5zdGVhZC4KKyAqCiAgKiBSZXR1cm4gdmFsdWU6ICVUUlVFIGlmIHRoZSBwYWdlIGNh
biBnbyBiYWNrLCBvdGhlcndpc2UgcmV0dXJucyAlRkFMU0UKICAqLwogZ2Jvb2xlYW4gd2Via2l0
X3dlYl92aWV3X2Nhbl9nb19iYWNrd2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtMTM2
NSw5ICsxMzg1LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKFdlYgog
ewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwg
RkFMU0UpOwogCi0gICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7Ci0KLSAgICBpZiAoIXBh
Z2UgfHwgIXBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5iYWNrSXRlbSgpKQorICAgIGlmICghY29y
ZSh3ZWJWaWV3KSB8fCAhY29yZSh3ZWJWaWV3KS0+YmFja0ZvcndhcmRMaXN0KCktPmJhY2tJdGVt
KCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIHJldHVybiBUUlVFOwpAQCAtMTM4OCw3
ICsxNDA2LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrX29yXwogewog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFM
U0UpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5f
ZnJhbWUod2ViVmlldykpOworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1haW5G
cmFtZSgpOwogICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCktPmNhbkdvQmFja09yRm9yd2FyZChz
dGVwcyk7CiB9CiAKQEAgLTE0MjAsNyArMTQzOCw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X29w
ZW4oV2ViS2l0V2ViVmlldyoKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbCh1cmkpOwogCi0gICAgRnJhbWUqIGZy
YW1lID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldykpOworICAg
IEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpOwogICAgIERlcHJlY2F0
ZWRTdHJpbmcgc3RyaW5nID0gRGVwcmVjYXRlZFN0cmluZzo6ZnJvbVV0ZjgodXJpKTsKICAgICBm
cmFtZS0+bG9hZGVyKCktPmxvYWQoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoc3RyaW5nKSkpOwogfQpA
QCAtMTQyOSw4ICsxNDQ3LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkKFdlYktpdFdl
YlZpZQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcp
KTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Via2l0X3dlYl92aWV3X2dldF9tYWluX2Zy
YW1lKHdlYlZpZXcpKTsKLSAgICBmcmFtZS0+bG9hZGVyKCktPnJlbG9hZCgpOworICAgIGNvcmUo
d2ViVmlldyktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+cmVsb2FkKCk7CiB9CiAKIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdj
aGFyKiBjb250ZW50LCBjb25zdCBnY2hhciogY29udGVudE1pbWVUeXBlLCBjb25zdCBnY2hhciog
Y29udGVudEVuY29kaW5nLCBjb25zdCBnY2hhciogYmFzZVVyaSkKQEAgLTE0MzgsNyArMTQ1NSw3
IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKFdlYktpdFcKICAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZf
ZmFpbChjb250ZW50KTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Via2l0X3dlYl92aWV3
X2dldF9tYWluX2ZyYW1lKHdlYlZpZXcpKTsKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZp
ZXcpLT5tYWluRnJhbWUoKTsKIAogICAgIEtVUkwgdXJsKGJhc2VVcmkgPyBEZXByZWNhdGVkU3Ry
aW5nOjpmcm9tVXRmOChiYXNlVXJpKSA6ICIiKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
aGFyZWRCdWZmZXIgPSBuZXcgU2hhcmVkQnVmZmVyKHN0cmR1cChjb250ZW50KSwgc3RybGVuKGNv
bnRlbnQpKTsKQEAgLTE0NTksNyArMTQ3Niw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3N0b3Bf
bG9hZGluZyhXZWJLaXQKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJWaWV3KSk7CiAKLSAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19n
ZXRfbWFpbl9mcmFtZSh3ZWJWaWV3KSk7CisgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3
KS0+bWFpbkZyYW1lKCk7CiAKICAgICBpZiAoRnJhbWVMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5s
b2FkZXIoKSkKICAgICAgICAgbG9hZGVyLT5zdG9wQWxsTG9hZGVycygpOwpAQCAtMTQ4NSw4ICsx
NTAyLDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3NlYXJjaF90ZXh0KFdlYgogICAgIFRl
eHRDYXNlU2Vuc2l0aXZpdHkgY2FzZVNlbnNpdGl2aXR5ID0gY2FzZVNlbnNpdGl2ZSA/IFRleHRD
YXNlU2Vuc2l0aXZlIDogVGV4dENhc2VJbnNlbnNpdGl2ZTsKICAgICBGaW5kRGlyZWN0aW9uIGRp
cmVjdGlvbiA9IGZvcndhcmQgPyBGaW5kRGlyZWN0aW9uRm9yd2FyZCA6IEZpbmREaXJlY3Rpb25C
YWNrd2FyZDsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3RGF0YSA9IFdFQktJ
VF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAgICByZXR1cm4gd2ViVmlld0RhdGEt
PmNvcmVQYWdlLT5maW5kU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgY2FzZVNlbnNp
dGl2aXR5LCBkaXJlY3Rpb24sIHNob3VsZFdyYXApOworICAgIHJldHVybiBjb3JlKHdlYlZpZXcp
LT5maW5kU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgY2FzZVNlbnNpdGl2aXR5LCBk
aXJlY3Rpb24sIHNob3VsZFdyYXApOwogfQogCiAvKioKQEAgLTE1MDcsOCArMTUyMyw3IEBAIGd1
aW50IHdlYmtpdF93ZWJfdmlld19tYXJrX3RleHRfbWF0Y2hlcygKIAogICAgIFRleHRDYXNlU2Vu
c2l0aXZpdHkgY2FzZVNlbnNpdGl2aXR5ID0gY2FzZVNlbnNpdGl2ZSA/IFRleHRDYXNlU2Vuc2l0
aXZlIDogVGV4dENhc2VJbnNlbnNpdGl2ZTsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3
ZWJWaWV3RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAgICBy
ZXR1cm4gd2ViVmlld0RhdGEtPmNvcmVQYWdlLT5tYXJrQWxsTWF0Y2hlc0ZvclRleHQoU3RyaW5n
Ojpmcm9tVVRGOChzdHJpbmcpLCBjYXNlU2Vuc2l0aXZpdHksIGZhbHNlLCBsaW1pdCk7CisgICAg
cmV0dXJuIGNvcmUod2ViVmlldyktPm1hcmtBbGxNYXRjaGVzRm9yVGV4dChTdHJpbmc6OmZyb21V
VEY4KHN0cmluZyksIGNhc2VTZW5zaXRpdml0eSwgZmFsc2UsIGxpbWl0KTsKIH0KIAogLyoqCkBA
IC0xNTIyLDkgKzE1MzcsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfaGlnaGxpZ2h0X3Rl
eHRfCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykp
OwogCi0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dFQl9W
SUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwotICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogZnJh
bWVEYXRhID0gV0VCS0lUX1dFQl9GUkFNRV9HRVRfUFJJVkFURSh3ZWJWaWV3RGF0YS0+bWFpbkZy
YW1lKTsKLSAgICBmcmFtZURhdGEtPmZyYW1lLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hs
aWdodGVkKHNob3VsZEhpZ2hsaWdodCk7CisgICAgY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCkt
PnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKIH0K
IAogLyoqCkBAIC0xNTM3LDE2ICsxNTUwLDE1IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3VubWFy
a190ZXh0X21hdGNoZXMKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJWaWV3KSk7CiAKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBX
RUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAgcmV0dXJuIHdlYlZpZXdE
YXRhLT5jb3JlUGFnZS0+dW5tYXJrQWxsVGV4dE1hdGNoZXMoKTsKKyAgICByZXR1cm4gY29yZSh3
ZWJWaWV3KS0+dW5tYXJrQWxsVGV4dE1hdGNoZXMoKTsKIH0KIAogV2ViS2l0V2ViRnJhbWUqIHdl
YmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgTlVM
TCk7CiAKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VC
X1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAgcmV0dXJuIHdlYlZpZXdEYXRhLT5tYWlu
RnJhbWU7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2Owor
ICAgIHJldHVybiBwcml2LT5tYWluRnJhbWU7CiB9CiAKIHZvaWQgd2Via2l0X3dlYl92aWV3X2V4
ZWN1dGVfc2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBzY3JpcHQp
CkBAIC0xNTU0LDggKzE1NjYsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX3Njcmlw
dChXZWJLCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykp
OwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGNv
cmUod2Via2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1lKHdlYlZpZXcpKTsKLSAgICBpZiAoRnJh
bWVMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKSkKKyAgICBpZiAoRnJhbWVMb2FkZXIq
IGxvYWRlciA9IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpLT5sb2FkZXIoKSkKICAgICAgICAg
bG9hZGVyLT5leGVjdXRlU2NyaXB0KFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSk7CiB9
CiAKQEAgLTE2NzUsOCArMTY4Niw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19oYXNfc2Vs
ZWN0aW9uKFcKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVco
d2ViVmlldyksIEZBTFNFKTsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3ZWJWaWV3RGF0
YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAgICByZXR1cm4gIXdl
YlZpZXdEYXRhLT5jb3JlUGFnZS0+c2VsZWN0aW9uKCkuaXNOb25lKCk7CisgICAgcmV0dXJuICFj
b3JlKHdlYlZpZXcpLT5zZWxlY3Rpb24oKS5pc05vbmUoKTsKIH0KIAogLyoqCkBAIC0xNzI0LDEw
ICsxNzM0LDkgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2dldF9lZGl0YWJsZShXZQogewog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFM
U0UpOwogCi0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dF
Ql9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwotICAgIEFTU0VSVCh3ZWJWaWV3RGF0YSk7Cisg
ICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwogCi0gICAgcmV0
dXJuIHdlYlZpZXdEYXRhLT5lZGl0YWJsZTsKKyAgICByZXR1cm4gcHJpdi0+ZWRpdGFibGU7CiB9
CiAKIC8qKgpAQCAtMTc1MSwyNyArMTc2MCwyNiBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2VkaXRhYmxlKFdlCiB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfZWRpdGFibGUoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgZ2Jvb2xlYW4gZmxhZykKIHsKICAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7Ci0gICAgZmxhZyA9IGZsYWcgIT0gRkFMU0U7
CiAKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogd2ViVmlld0RhdGEgPSBXRUJLSVRfV0VCX1ZJ
RVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAgQVNTRVJUKHdlYlZpZXdEYXRhKTsKKyAgICBX
ZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAKLSAgICBGcmFtZSog
bWFpbkZyYW1lID0gY29yZSh3ZWJWaWV3RGF0YS0+bWFpbkZyYW1lKTsKLSAgICBnX3JldHVybl9p
Zl9mYWlsKG1haW5GcmFtZSk7CisgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFp
bkZyYW1lKCk7CisgICAgZ19yZXR1cm5faWZfZmFpbChmcmFtZSk7CiAKICAgICAvLyBUT0RPOiBX
aGF0IGhhcHBlbnMgd2hlbiB0aGUgZnJhbWUgaXMgcmVwbGFjZWQ/Ci0gICAgaWYgKGZsYWcgPT0g
d2ViVmlld0RhdGEtPmVkaXRhYmxlKQorICAgIGZsYWcgPSBmbGFnICE9IEZBTFNFOworICAgIGlm
IChmbGFnID09IHByaXYtPmVkaXRhYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJWaWV3
RGF0YS0+ZWRpdGFibGUgPSBmbGFnOworICAgIHByaXYtPmVkaXRhYmxlID0gZmxhZzsKIAogICAg
IGlmIChmbGFnKSB7Ci0gICAgICAgIG1haW5GcmFtZS0+YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlF
bGVtZW50KCk7CisgICAgICAgIGZyYW1lLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQo
KTsKICAgICAgICAgLy8gVE9ETzogSWYgdGhlIFdlYktpdFdlYlZpZXcgaXMgbWFkZSBlZGl0YWJs
ZSBhbmQgdGhlIHNlbGVjdGlvbiBpcyBlbXB0eSwgc2V0IGl0IHRvIHNvbWV0aGluZy4KICAgICAg
ICAgLy9pZiAoIXdlYmtpdF93ZWJfdmlld19nZXRfc2VsZWN0ZWRfZG9tX3JhbmdlKHdlYlZpZXcp
KQogICAgICAgICAvLyAgICBtYWluRnJhbWUtPnNldFNlbGVjdGlvbkZyb21Ob25lKCk7CiAgICAg
fSBlbHNlCi0gICAgICAgIG1haW5GcmFtZS0+cmVtb3ZlRWRpdGluZ1N0eWxlRnJvbUJvZHlFbGVt
ZW50KCk7CisgICAgICAgIGZyYW1lLT5yZW1vdmVFZGl0aW5nU3R5bGVGcm9tQm9keUVsZW1lbnQo
KTsKIH0KIAogLyoqCkBAIC0xNzkwLDggKzE3OTgsOCBAQCBHdGtUYXJnZXRMaXN0KiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2NvcHlfCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB3
ZWJWaWV3RGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAgICBy
ZXR1cm4gd2ViVmlld0RhdGEtPmNvcHlfdGFyZ2V0X2xpc3Q7CisgICAgV2ViS2l0V2ViVmlld1By
aXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHJldHVybiBwcml2LT5jb3B5X3Rhcmdl
dF9saXN0OwogfQogCiAvKioKQEAgLTE4MTAsOCArMTgxOCw4IEBAIEd0a1RhcmdldExpc3QqIHdl
YmtpdF93ZWJfdmlld19nZXRfcGFzdGUKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOwogCi0gICAgV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHdlYlZpZXdEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwot
ICAgIHJldHVybiB3ZWJWaWV3RGF0YS0+cGFzdGVfdGFyZ2V0X2xpc3Q7CisgICAgV2ViS2l0V2Vi
Vmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHJldHVybiBwcml2LT5wYXN0
ZV90YXJnZXRfbGlzdDsKIH0KIAogfQpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJp
dmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5j
cHAJKFJldmlzaW9uIDI5OTI5KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5j
cHAJKEFyYmVpdHNrb3BpZSkKQEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IFdlYktpdFdlYlZpZXcqIGdldFZpZXdGcm9tRnJhbWUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQog
ewotICAgIHJldHVybiB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhmcmFtZSk7CisgICAg
V2ViS2l0V2ViRnJhbWVQcml2YXRlKiBwcml2ID0gZnJhbWUtPnByaXY7CisgICAgcmV0dXJuIHBy
aXYtPndlYlZpZXc7CiB9CiAKIFdlYkNvcmU6OkZyYW1lKiBjb3JlKFdlYktpdFdlYkZyYW1lKiBm
cmFtZSkKQEAgLTQ3LDggKzQ4LDggQEAgV2ViQ29yZTo6RnJhbWUqIGNvcmUoV2ViS2l0V2ViRnJh
bWUqIGZyYQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgV2ViS2l0
V2ViRnJhbWVQcml2YXRlKiBmcmFtZV9kYXRhID0gV0VCS0lUX1dFQl9GUkFNRV9HRVRfUFJJVkFU
RShmcmFtZSk7Ci0gICAgcmV0dXJuIGZyYW1lX2RhdGEgPyBmcmFtZV9kYXRhLT5mcmFtZSA6IDA7
CisgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBwcml2ID0gZnJhbWUtPnByaXY7CisgICAgcmV0
dXJuIHByaXYgPyBwcml2LT5jb3JlRnJhbWUgOiAwOwogfQogCiBXZWJLaXRXZWJGcmFtZSoga2l0
KFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUpCkBAIC02Niw4ICs2Nyw4IEBAIFdlYkNvcmU6OlBh
Z2UqIGNvcmUoV2ViS2l0V2ViVmlldyogd2ViVmkKICAgICBpZiAoIXdlYlZpZXcpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZpZXdEYXRhID0gV0VC
S0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwotICAgIHJldHVybiB3ZWJWaWV3RGF0
YSA/IHdlYlZpZXdEYXRhLT5jb3JlUGFnZSA6IDA7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUq
IHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHJldHVybiBwcml2ID8gcHJpdi0+Y29yZVBhZ2Ug
OiAwOwogfQogCiBXZWJLaXRXZWJWaWV3KiBraXQoV2ViQ29yZTo6UGFnZSogY29yZVBhZ2UpCklu
ZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCShSZXZpc2lvbiAyOTkyOSkKKysrIFdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAkoQXJiZWl0c2tvcGllKQpAQCAtMzcsNiArMzcs
NyBAQCBHX0JFR0lOX0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9JU19XRUJfVklFV19DTEFTUyhrbGFz
cykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVklF
VykpCiAjZGVmaW5lIFdFQktJVF9XRUJfVklFV19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNU
QU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfVklFVywgV2ViS2l0V2ViVmll
d0NsYXNzKSkKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIFdlYktpdFdl
YlZpZXdQcml2YXRlOwogCiB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9OQVZJR0FUSU9OX1JF
U1BPTlNFX0FDQ0VQVCwKQEAgLTUxLDExICs1MiwxMyBAQCB0eXBlZGVmIGVudW0KIH0gV2ViS2l0
V2ViVmlld1RhcmdldEluZm87CiAKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7Ci0gICAgR3RrQ29u
dGFpbmVyIHBhcmVudDsKKyAgICBHdGtDb250YWluZXIgcGFyZW50X2luc3RhbmNlOworCisgICAg
V2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXY7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdD
bGFzcyB7Ci0gICAgR3RrQ29udGFpbmVyQ2xhc3MgcGFyZW50OworICAgIEd0a0NvbnRhaW5lckNs
YXNzIHBhcmVudF9jbGFzczsKIAogICAgIC8qCiAgICAgICogZGVmYXVsdCBoYW5kbGVyL3ZpcnR1
YWwgbWV0aG9kcwpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVt
LmNwcAkoUmV2aXNpb24gMjk5MjkpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0
b3J5aXRlbS5jcHAJKEFyYmVpdHNrb3BpZSkKQEAgLTM1LDcgKzM1LDcgQEAgZXh0ZXJuICJDIiB7
CiAKIHN0cnVjdCBfV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlIHsKICAgICBXZWJDb3JlOjpI
aXN0b3J5SXRlbSogaGlzdG9yeUl0ZW07Ci0gICAgCisKICAgICBnY2hhciogdGl0bGU7CiAgICAg
Z2NoYXIqIGFsdGVybmF0ZVRpdGxlOwogICAgIGdjaGFyKiB1cmk7CkBAIC00OSwxNCArNDksMTQg
QEAgR19ERUZJTkVfVFlQRShXZWJLaXRXZWJIaXN0b3J5SXRlbSwgd2ViawogCiBzdGF0aWMgR0hh
c2hUYWJsZSogd2Via2l0X2hpc3RvcnlfaXRlbXMoKQogewotICAgIHN0YXRpYyBHSGFzaFRhYmxl
KiBoaXN0b3J5SXRlbXMgPSBnX2hhc2hfdGFibGVfbmV3KGdfZGlyZWN0X2hhc2gsIGdfZGlyZWN0
X2VxdWFsKTsgICAKKyAgICBzdGF0aWMgR0hhc2hUYWJsZSogaGlzdG9yeUl0ZW1zID0gZ19oYXNo
X3RhYmxlX25ldyhnX2RpcmVjdF9oYXNoLCBnX2RpcmVjdF9lcXVhbCk7CiAgICAgcmV0dXJuIGhp
c3RvcnlJdGVtczsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQoV2Vi
S2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtLCBXZWJDb3JlOjpIaXN0b3J5SXRlbSog
aGlzdG9yeUl0ZW0pIAogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVNU
T1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pKTsKLSAgICAKKwogICAgIEdIYXNoVGFibGUqIHRhYmxl
ID0gd2Via2l0X2hpc3RvcnlfaXRlbXMoKTsKIAogICAgIGhpc3RvcnlJdGVtLT5yZWYoKTsKQEAg
LTY5LDM3ICs2OSwzNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfaGlzdG9yeV9pdGVtX3JlbW92ZShX
CiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gKFdlYktpdFdlYkhp
c3RvcnlJdGVtKikgZ19oYXNoX3RhYmxlX2xvb2t1cCh0YWJsZSwgaGlzdG9yeUl0ZW0pOwogCiAg
ICAgZ19yZXR1cm5faWZfZmFpbCh3ZWJIaXN0b3J5SXRlbSAhPSBOVUxMKTsKLSAgICAKKwogICAg
IGdfaGFzaF90YWJsZV9yZW1vdmUodGFibGUsIGhpc3RvcnlJdGVtKTsKICAgICBoaXN0b3J5SXRl
bS0+ZGVyZWYoKTsKICAgICBnX29iamVjdF91bnJlZih3ZWJIaXN0b3J5SXRlbSk7CiB9Ci0gICAg
CisKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2Rpc3Bvc2UoR09iamVjdCog
b2JqZWN0KQogewotICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiBpdGVtID0gV0VCS0lUX1dFQl9I
SVNUT1JZX0lURU0ob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9y
eUl0ZW0gPSBXRUJLSVRfV0VCX0hJU1RPUllfSVRFTShvYmplY3QpOworICAgIFdlYktpdFdlYkhp
c3RvcnlJdGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OwogCi0gICAgd2Vi
a2l0X2hpc3RvcnlfaXRlbV9yZW1vdmUoaXRlbS0+cHJpdi0+aGlzdG9yeUl0ZW0pOwotICAgIAot
ICAgIGRlbGV0ZSBpdGVtLT5wcml2LT5oaXN0b3J5SXRlbTsKKyAgICB3ZWJraXRfaGlzdG9yeV9p
dGVtX3JlbW92ZShwcml2LT5oaXN0b3J5SXRlbSk7CisgICAgZGVsZXRlIHByaXYtPmhpc3RvcnlJ
dGVtOwogCiAgICAgLyogZGVzdHJveSB0YWJsZSBpZiBlbXB0eSAqLwogICAgIEdIYXNoVGFibGUq
IHRhYmxlID0gd2Via2l0X2hpc3RvcnlfaXRlbXMoKTsKICAgICBpZiAoIWdfaGFzaF90YWJsZV9z
aXplKHRhYmxlKSkKICAgICAgICAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kodGFibGUpOwotICAgIAor
CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fcGFyZW50X2NsYXNz
KS0+ZGlzcG9zZShvYmplY3QpOwogfQotICAgIAogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2hp
c3RvcnlfaXRlbV9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgV2ViS2l0V2ViSGlz
dG9yeUl0ZW0qIGhpc3RvcnlJdGVtID0gV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0ob2JqZWN0KTsK
KyAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0gPSBXRUJLSVRfV0VCX0hJ
U1RPUllfSVRFTShvYmplY3QpOworICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogcHJp
diA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OwogCi0gICAgZ19mcmVlKGhpc3RvcnlJdGVtLT5wcml2
LT50aXRsZSk7Ci0gICAgZ19mcmVlKGhpc3RvcnlJdGVtLT5wcml2LT5hbHRlcm5hdGVUaXRsZSk7
Ci0gICAgZ19mcmVlKGhpc3RvcnlJdGVtLT5wcml2LT51cmkpOwotICAgIGdfZnJlZShoaXN0b3J5
SXRlbS0+cHJpdi0+b3JpZ2luYWxVcmkpOworICAgIGdfZnJlZShwcml2LT50aXRsZSk7CisgICAg
Z19mcmVlKHByaXYtPmFsdGVybmF0ZVRpdGxlKTsKKyAgICBnX2ZyZWUocHJpdi0+dXJpKTsKKyAg
ICBnX2ZyZWUocHJpdi0+b3JpZ2luYWxVcmkpOwogCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X3dlYl9oaXN0b3J5X2l0ZW1fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KQEAg
LTEyMywxMSArMTIzLDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2lu
aXQKIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0
aF9jb3JlX2l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CiAgICAgV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0ga2l0KGl0ZW0pOworICAgIFdlYktpdFdlYkhp
c3RvcnlJdGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OwogCiAgICAgaWYg
KCF3ZWJIaXN0b3J5SXRlbSkgewogICAgICAgICB3ZWJIaXN0b3J5SXRlbSA9IFdFQktJVF9XRUJf
SElTVE9SWV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfSElTVE9SWV9JVEVNLCBO
VUxMKSk7Ci0gICAgICAgIHdlYkhpc3RvcnlJdGVtLT5wcml2LT5oaXN0b3J5SXRlbSA9IGl0ZW07
Ci0gICAgICAgIHdlYmtpdF9oaXN0b3J5X2l0ZW1fYWRkKHdlYkhpc3RvcnlJdGVtLCB3ZWJIaXN0
b3J5SXRlbS0+cHJpdi0+aGlzdG9yeUl0ZW0pOworICAgICAgICBwcml2LT5oaXN0b3J5SXRlbSA9
IGl0ZW07CisgICAgICAgIHdlYmtpdF9oaXN0b3J5X2l0ZW1fYWRkKHdlYkhpc3RvcnlJdGVtLCBw
cml2LT5oaXN0b3J5SXRlbSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHdlYkhpc3RvcnlJdGVtOwpA
QCAtMTQ0LDE1ICsxNDUsMTQgQEAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlz
dG9yeQogV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ldyh2
b2lkKQogewogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSA9IFdFQktJ
VF9XRUJfSElTVE9SWV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfSElTVE9SWV9J
VEVNLCBOVUxMKSk7CisgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2Vi
SGlzdG9yeUl0ZW0tPnByaXY7CiAKLSAgICB3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+aGlzdG9yeUl0
ZW0gPSBuZXcgV2ViQ29yZTo6SGlzdG9yeUl0ZW0oKTsKLQotICAgIHdlYmtpdF9oaXN0b3J5X2l0
ZW1fYWRkKHdlYkhpc3RvcnlJdGVtLCB3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+aGlzdG9yeUl0ZW0p
OworICAgIHByaXYtPmhpc3RvcnlJdGVtID0gbmV3IFdlYkNvcmU6Okhpc3RvcnlJdGVtKCk7Cisg
ICAgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQod2ViSGlzdG9yeUl0ZW0sIHByaXYtPmhpc3RvcnlJ
dGVtKTsKIAogICAgIHJldHVybiB3ZWJIaXN0b3J5SXRlbTsKIH0KIAotCiAvKioKICAqIHdlYmtp
dF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2RhdGE6CiAgKiBAdXJpOiB0aGUgdXJpIG9mIHRo
ZSBwYWdlCkBAIC0xNjgsMTEgKzE2OCwxMSBAQCBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Via2l0
X3dlYl9oaXN0b3J5CiAgICAgV2ViQ29yZTo6U3RyaW5nIGhpc3RvcnlUaXRsZSh0aXRsZSk7CiAK
ICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0gPSB3ZWJraXRfd2ViX2hp
c3RvcnlfaXRlbV9uZXcoKTsKKyAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUqIHByaXYg
PSB3ZWJIaXN0b3J5SXRlbS0+cHJpdjsKIAotICAgIHdlYkhpc3RvcnlJdGVtLT5wcml2LT5oaXN0
b3J5SXRlbSA9IG5ldyBXZWJDb3JlOjpIaXN0b3J5SXRlbShoaXN0b3J5VXJpLCBoaXN0b3J5VGl0
bGUpOworICAgIHByaXYtPmhpc3RvcnlJdGVtID0gbmV3IFdlYkNvcmU6Okhpc3RvcnlJdGVtKGhp
c3RvcnlVcmksIGhpc3RvcnlUaXRsZSk7CisgICAgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQod2Vi
SGlzdG9yeUl0ZW0sIHByaXYtPmhpc3RvcnlJdGVtKTsKIAotICAgIHdlYmtpdF9oaXN0b3J5X2l0
ZW1fYWRkKHdlYkhpc3RvcnlJdGVtLCB3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+aGlzdG9yeUl0ZW0p
OwotICAgICAgICAKICAgICByZXR1cm4gd2ViSGlzdG9yeUl0ZW07CiB9CiAKQEAgLTE4NiwxNyAr
MTg2LDE2IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXQKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0
b3J5SXRlbSksIE5VTEwpOwogCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0gPSBjb3Jl
KFdFQktJVF9XRUJfSElTVE9SWV9JVEVNKHdlYkhpc3RvcnlJdGVtKSk7CisgICAgV2ViQ29yZTo6
SGlzdG9yeUl0ZW0qIGl0ZW0gPSBjb3JlKHdlYkhpc3RvcnlJdGVtKTsKIAogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKGl0ZW0gIT0gTlVMTCwgTlVMTCk7Ci0gICAgCi0gICAgV2ViQ29yZTo6U3Ry
aW5nIHRpdGxlID0gaXRlbS0+dGl0bGUoKTsKIAotICAgIGdfZnJlZSh3ZWJIaXN0b3J5SXRlbS0+
cHJpdi0+dGl0bGUpOworICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogcHJpdiA9IHdl
Ykhpc3RvcnlJdGVtLT5wcml2OworICAgIFdlYkNvcmU6OlN0cmluZyB0aXRsZSA9IGl0ZW0tPnRp
dGxlKCk7CisgICAgZ19mcmVlKHByaXYtPnRpdGxlKTsKKyAgICBwcml2LT50aXRsZSA9IGdfc3Ry
ZHVwKHRpdGxlLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgd2ViSGlzdG9yeUl0ZW0tPnByaXYtPnRp
dGxlID0gZ19zdHJkdXAodGl0bGUudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAKLSAgICByZXR1cm4g
d2ViSGlzdG9yeUl0ZW0tPnByaXYtPnRpdGxlOworICAgIHJldHVybiBwcml2LT50aXRsZTsKIH0K
IAogLyoqCkBAIC0yMTEsMTcgKzIxMCwxNiBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYl9oaXN0
b3J5X2l0ZW1fZ2V0CiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9I
SVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6Okhpc3Rv
cnlJdGVtKiBpdGVtID0gY29yZShXRUJLSVRfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRl
bSkpOworICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtID0gY29yZSh3ZWJIaXN0b3J5SXRl
bSk7CiAKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChpdGVtICE9IE5VTEwsIE5VTEwpOwotICAg
IAotICAgIFdlYkNvcmU6OlN0cmluZyBhbHRlcm5hdGVUaXRsZSA9IGl0ZW0tPmFsdGVybmF0ZVRp
dGxlKCk7Ci0KLSAgICBnX2ZyZWUod2ViSGlzdG9yeUl0ZW0tPnByaXYtPmFsdGVybmF0ZVRpdGxl
KTsKIAotICAgIHdlYkhpc3RvcnlJdGVtLT5wcml2LT5hbHRlcm5hdGVUaXRsZSA9IGdfc3RyZHVw
KGFsdGVybmF0ZVRpdGxlLnV0ZjgoKS5kYXRhKCkpOworICAgIFdlYktpdFdlYkhpc3RvcnlJdGVt
UHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OworICAgIFdlYkNvcmU6OlN0cmlu
ZyBhbHRlcm5hdGVUaXRsZSA9IGl0ZW0tPmFsdGVybmF0ZVRpdGxlKCk7CisgICAgZ19mcmVlKHBy
aXYtPmFsdGVybmF0ZVRpdGxlKTsKKyAgICBwcml2LT5hbHRlcm5hdGVUaXRsZSA9IGdfc3RyZHVw
KGFsdGVybmF0ZVRpdGxlLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgcmV0dXJuIHdlYkhpc3RvcnlJ
dGVtLT5wcml2LT5hbHRlcm5hdGVUaXRsZTsKKyAgICByZXR1cm4gcHJpdi0+YWx0ZXJuYXRlVGl0
bGU7CiB9CiAKIC8qKgpAQCAtMjMxLDE2ICsyMjksMTUgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93
ZWJfaGlzdG9yeV9pdGVtX2dldAogICoKICAqIFNldHMgYW4gYWx0ZXJuYXRlIHRpdGxlIGZvciBA
d2ViSGlzdG9yeUl0ZW0KICAqLwotdm9pZCB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9zZXRfYWx0
ZXJuYXRlX3RpdGxlKFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSwgY29uc3Qg
Z2NoYXIqIHRpdGxlKSAKK3ZvaWQgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fc2V0X2FsdGVybmF0
ZV90aXRsZShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0sIGNvbnN0IGdjaGFy
KiB0aXRsZSkKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfSElTVE9SWV9J
VEVNKHdlYkhpc3RvcnlJdGVtKSk7CiAKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSA9
IGNvcmUoV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pKTsKKyAgICBXZWJD
b3JlOjpIaXN0b3J5SXRlbSogaXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOwogCi0gICAgY29u
c3QgV2ViQ29yZTo6U3RyaW5nIGFsdGVybmF0ZVRpdGxlID0gdGl0bGU7Ci0gICAgaXRlbS0+c2V0
QWx0ZXJuYXRlVGl0bGUoYWx0ZXJuYXRlVGl0bGUpOworICAgIGl0ZW0tPnNldEFsdGVybmF0ZVRp
dGxlKFdlYkNvcmU6OlN0cmluZzo6ZnJvbVVURjgodGl0bGUpKTsKIH0KLSAgICAKKwogLyoqCiAg
KiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdXJpOgogICogQHdlYkhpc3RvcnlJdGVtOiBh
ICNXZWJLaXRXZWJIaXN0b3J5SXRlbQpAQCAtMjU4LDEyICsyNTUsMTEgQEAgY29uc3QgZ2NoYXIq
IHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGl0
ZW0gIT0gTlVMTCwgTlVMTCk7CiAKICAgICBXZWJDb3JlOjpTdHJpbmcgdXJpID0gaXRlbS0+dXJs
U3RyaW5nKCk7CisgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlz
dG9yeUl0ZW0tPnByaXY7CisgICAgZ19mcmVlKHByaXYtPnVyaSk7CisgICAgcHJpdi0+dXJpID0g
Z19zdHJkdXAodXJpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgZ19mcmVlKHdlYkhpc3RvcnlJdGVt
LT5wcml2LT51cmkpOwotCi0gICAgd2ViSGlzdG9yeUl0ZW0tPnByaXYtPnVyaSA9IGdfc3RyZHVw
KHVyaS51dGY4KCkuZGF0YSgpKTsKLQotICAgIHJldHVybiB3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+
dXJpOworICAgIHJldHVybiBwcml2LT51cmk7CiB9CiAKIC8qKgpAQCAtMjgzLDExICsyNzksMTAg
QEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldAogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKGl0ZW0gIT0gTlVMTCwgTlVMTCk7CiAKICAgICBXZWJDb3JlOjpTdHJpbmcg
b3JpZ2luYWxVcmkgPSBpdGVtLT5vcmlnaW5hbFVSTFN0cmluZygpOworICAgIFdlYktpdFdlYkhp
c3RvcnlJdGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OworICAgIGdfZnJl
ZShwcml2LT5vcmlnaW5hbFVyaSk7CisgICAgcHJpdi0+b3JpZ2luYWxVcmkgPSBnX3N0cmR1cChv
cmlnaW5hbFVyaS51dGY4KCkuZGF0YSgpKTsKIAotICAgIGdfZnJlZSh3ZWJIaXN0b3J5SXRlbS0+
cHJpdi0+b3JpZ2luYWxVcmkpOwotCi0gICAgd2ViSGlzdG9yeUl0ZW0tPnByaXYtPm9yaWdpbmFs
VXJpID0gZ19zdHJkdXAob3JpZ2luYWxVcmkudXRmOCgpLmRhdGEoKSk7Ci0gICAgCiAgICAgcmV0
dXJuIHdlYkhpc3RvcnlJdGVtLT5wcml2LT5vcmlnaW5hbFVyaTsKIH0KIApAQCAtMzE2LDcgKzMx
MSw4IEBAIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBXZWJLaXQ6OmNvcmUoV2ViS2kKIHsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5
SXRlbSksIE5VTEwpOwogCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGhpc3RvcnlJdGVtID0g
d2ViSGlzdG9yeUl0ZW0tPnByaXYtPmhpc3RvcnlJdGVtOworICAgIFdlYktpdFdlYkhpc3RvcnlJ
dGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OworICAgIFdlYkNvcmU6Okhp
c3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9IHByaXYtPmhpc3RvcnlJdGVtOwogCiAgICAgcmV0dXJu
IGhpc3RvcnlJdGVtID8gaGlzdG9yeUl0ZW0gOiAwOwogfQpAQCAtMzI0LDcgKzMyMCw3IEBAIFdl
YkNvcmU6Okhpc3RvcnlJdGVtKiBXZWJLaXQ6OmNvcmUoV2ViS2kKIFdlYktpdFdlYkhpc3RvcnlJ
dGVtKiBXZWJLaXQ6OmtpdChXZWJDb3JlOjpIaXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0pCiB7CiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaGlzdG9yeUl0ZW0gIT0gTlVMTCwgTlVMTCk7Ci0gICAg
CisKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW07CiAgICAgR0hhc2hU
YWJsZSogdGFibGUgPSB3ZWJraXRfaGlzdG9yeV9pdGVtcygpOwogCkluZGV4OiBXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5jcHAJKFJldmlzaW9uIDI5OTI5
KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNwcAkoQXJi
ZWl0c2tvcGllKQpAQCAtNjMsMTIgKzYzLDEzIEBAIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCog
d2Via2l0X3dlYl9iYWMKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X1ZJRVcod2ViVmlldyksIE5VTEwpOwogCi0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHdlYlZp
ZXdEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwogICAgIFdlYktp
dFdlYkJhY2tGb3J3YXJkTGlzdCogd2ViQmFja0ZvcndhcmRMaXN0OwogCiAgICAgd2ViQmFja0Zv
cndhcmRMaXN0ID0gV0VCS0lUX1dFQl9CQUNLX0ZPUldBUkRfTElTVChnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCX0JBQ0tfRk9SV0FSRF9MSVNULCBOVUxMKSk7Ci0gICAgd2ViQmFja0Zvcndh
cmRMaXN0LT5wcml2LT5iYWNrRm9yd2FyZExpc3QgPSB3ZWJWaWV3RGF0YS0+Y29yZVBhZ2UtPmJh
Y2tGb3J3YXJkTGlzdCgpOwotICAgIHdlYkJhY2tGb3J3YXJkTGlzdC0+cHJpdi0+YmFja0Zvcndh
cmRMaXN0LT5zZXRFbmFibGVkKFRSVUUpOworICAgIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdFBy
aXZhdGUqIHByaXYgPSB3ZWJCYWNrRm9yd2FyZExpc3QtPnByaXY7CisKKyAgICBwcml2LT5iYWNr
Rm9yd2FyZExpc3QgPSBjb3JlKHdlYlZpZXcpLT5iYWNrRm9yd2FyZExpc3QoKTsKKyAgICBwcml2
LT5iYWNrRm9yd2FyZExpc3QtPnNldEVuYWJsZWQoVFJVRSk7CiAKICAgICByZXR1cm4gd2ViQmFj
a0ZvcndhcmRMaXN0OwogfQpAQCAtMTE2LDExICsxMTcsMTEgQEAgZ2Jvb2xlYW4gd2Via2l0X3dl
Yl9iYWNrX2ZvcndhcmRfbGlzdF9jbwogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfQkFDS19GT1JXQVJEX0xJU1Qod2ViQmFja0ZvcndhcmRMaXN0KSwgTlVMTCk7CiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lURU0od2ViSGlz
dG9yeUl0ZW0pLCBOVUxMKTsKLSAgICAKKwogICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBoaXN0
b3J5SXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOwogCiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoaGlzdG9yeUl0ZW0gIT0gTlVMTCwgRkFMU0UpOwotICAgIAorCiAgICAgV2ViQ29yZTo6QmFj
a0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QgPSBjb3JlKHdlYkJhY2tGb3J3YXJkTGlzdCk7
CiAKICAgICByZXR1cm4gKGJhY2tGb3J3YXJkTGlzdC0+ZW5hYmxlZCgpID8gYmFja0ZvcndhcmRM
aXN0LT5jb250YWluc0l0ZW0oaGlzdG9yeUl0ZW0pIDogRkFMU0UpOwpAQCAtMTY0LDkgKzE2NSw5
IEBAIEdMaXN0KiB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF8KIAogICAgIFdlYkNv
cmU6Okhpc3RvcnlJdGVtVmVjdG9yIGl0ZW1zKGxpbWl0KTsKICAgICBHTGlzdCogZm9yd2FyZEl0
ZW1zID0geyAwIH07Ci0gICAgCisKICAgICBiYWNrRm9yd2FyZExpc3QtPmZvcndhcmRMaXN0V2l0
aExpbWl0KGxpbWl0LCBpdGVtcyk7Ci0gICAKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBpdGVtcy5zaXplKCk7IGkrKykgewogICAgICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Vi
SGlzdG9yeUl0ZW0gPSB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0o
aXRlbXNbaV0uZ2V0KCkpOwogICAgICAgICBmb3J3YXJkSXRlbXMgPSBnX2xpc3RfcHJlcGVuZChm
b3J3YXJkSXRlbXMsIGdfb2JqZWN0X3JlZih3ZWJIaXN0b3J5SXRlbSkpOwpAQCAtMjE5LDcgKzIy
MCw3IEBAIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJraXRfd2ViX2JhY2tfZm8KICAgICBXZWJD
b3JlOjpCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUod2ViQmFja0Zvcndh
cmRMaXN0KTsKICAgICBpZiAoIWJhY2tGb3J3YXJkTGlzdCB8fCAhYmFja0ZvcndhcmRMaXN0LT5l
bmFibGVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIAorCiAgICAgV2ViQ29yZTo6SGlz
dG9yeUl0ZW0qIGhpc3RvcnlJdGVtID0gYmFja0ZvcndhcmRMaXN0LT5iYWNrSXRlbSgpOwogCiAg
ICAgcmV0dXJuIChoaXN0b3J5SXRlbSA/IGtpdChoaXN0b3J5SXRlbSkgOiBOVUxMKTsKQEAgLTI1
Nyw3ICsyNTgsNyBAQCBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Via2l0X3dlYl9iYWNrX2ZvCiAg
KiBSZXR1cm5zIGEgTlVMTCB2YWx1ZSBpZiB0aGVyZSBub3RoaW5nIHRoYXQgc3VjY2VlZHMgdGhl
IGN1cnJlbnQgaXRlbQogICoKICAqIFJldHVybiB2YWx1ZTogYSAjV2ViS2l0V2ViSGlzdG9yeUl0
ZW0KLSAqLyAgICAKKyAqLwogV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfYmFja19m
b3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfaXRlbShXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqIHdl
YkJhY2tGb3J3YXJkTGlzdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
V0VCX0JBQ0tfRk9SV0FSRF9MSVNUKHdlYkJhY2tGb3J3YXJkTGlzdCksIE5VTEwpOwpAQCAtMzEx
LDcgKzMxMiw3IEBAIGdpbnQgd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmEKIAog
ICAgIHJldHVybiBiYWNrRm9yd2FyZExpc3QtPmJhY2tMaXN0Q291bnQoKTsKIH0KLSAgICAKKwog
LyoqCiAgKiB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xlbmd0aDoK
ICAqIEB3ZWJCYWNrRm9yd2FyZExpc3Q6IGEgI1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdApAQCAt
MzI3LDcgKzMyOCw3IEBAIGdpbnQgd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm8K
ICAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUod2Vi
QmFja0ZvcndhcmRMaXN0KTsKICAgICBpZiAoIWJhY2tGb3J3YXJkTGlzdCB8fCAhYmFja0Zvcndh
cmRMaXN0LT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIAorCiAgICAgcmV0dXJu
IGJhY2tGb3J3YXJkTGlzdC0+Zm9yd2FyZExpc3RDb3VudCgpOwogfQogCkBAIC0zNDksNyArMzUw
LDcgQEAgZ2ludCB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9saQogCiAgICAgcmV0
dXJuIGJhY2tGb3J3YXJkTGlzdC0+Y2FwYWNpdHkoKTsKIH0KLSAgICAKKwogLyoqCiAgKiB3ZWJr
aXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X3NldF9saW1pdDoKICAqIEB3ZWJCYWNrRm9yd2FyZExp
c3Q6IGEgI1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdApAQCAtMzY3LDcgKzM2OCw3IEBAIHZvaWQg
d2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9zZXRfbGkKICAgICBpZiAoYmFja0ZvcndhcmRM
aXN0KQogICAgICAgICBiYWNrRm9yd2FyZExpc3QtPnNldENhcGFjaXR5KGxpbWl0KTsKIH0KLSAg
ICAKKwogfSAvKiBlbmQgZXh0ZXJuICJDIiAqLwogCiBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Qq
IFdlYktpdDo6Y29yZShXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqIHdlYkJhY2tGb3J3YXJkTGlz
dCkKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgJKFJldmlzaW9uIDI5OTI5KQorKysg
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCShBcmJlaXRza29waWUpCkBAIC0yMiw4
ICsyMiw3IEBACiAjZGVmaW5lIFdFQktJVF9QUklWQVRFX0gKIAogLyoKLSAqIEludGVybmFsIGNs
YXNzLiBUaGlzIGNsYXNzIGtub3dzIHRoZSBzaGFyZWQgc2VjcmV0IG9mIFdlYktpdFdlYkZyYW1l
LAotICogV2ViS2l0TmV0d29ya1JlcXVlc3QgYW5kIFdlYktpdFdlYlZpZXcuCisgKiBUaGlzIGZp
bGUga25vd3MgdGhlIHNoYXJlZCBzZWNyZXQgb2YgV2ViS2l0V2ViVmlldyBhbmQgV2ViS2l0V2Vi
RnJhbWUuCiAgKiBUaGV5IGFyZSB1c2luZyBXZWJDb3JlIHdoaWNoIG11c24ndCBiZSBleHBvc2Vk
IHRvIHRoZSBvdXRlciB3b3JsZC4KICAqLwogCkBAIC03NSw3ICs3NCw3IEBAIGV4dGVybiAiQyIg
ewogICAgICAgICBXZWJDb3JlOjpTdHJpbmcqIHVzZXJBZ2VudDsKIAogICAgICAgICBXZWJLaXRX
ZWJCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdDsKLSAgICAgICAgCisKICAgICAgICAg
Z2ludCBsYXN0UG9wdXBYUG9zaXRpb247CiAgICAgICAgIGdpbnQgbGFzdFBvcHVwWVBvc2l0aW9u
OwogCkBAIC05MCw3ICs4OSw3IEBAIGV4dGVybiAiQyIgewogICAgICNkZWZpbmUgV0VCS0lUX1dF
Ql9GUkFNRV9HRVRfUFJJVkFURShvYmopICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUo
KG9iaiksIFdFQktJVF9UWVBFX1dFQl9GUkFNRSwgV2ViS2l0V2ViRnJhbWVQcml2YXRlKSkKICAg
ICB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVQcml2YXRlIFdlYktpdFdlYkZyYW1lUHJp
dmF0ZTsKICAgICBzdHJ1Y3QgX1dlYktpdFdlYkZyYW1lUHJpdmF0ZSB7Ci0gICAgICAgIFdlYkNv
cmU6OkZyYW1lKiBmcmFtZTsKKyAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZTsKICAg
ICAgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQqIGNsaWVudDsKICAgICAgICAgV2ViS2l0
V2ViVmlldyogd2ViVmlldzsKIApAQCAtMTA1LDE1ICsxMDQsMTMgQEAgZXh0ZXJuICJDIiB7CiAg
ICAgICAgIGdjaGFyKiB1cmk7CiAgICAgfTsKIAotICAgIC8qIFdlYktpdFdlYkZyYW1lIHByaXZh
dGUgZnVuY3Rpb24gKi8KLSAgICBXZWJLaXRXZWJGcmFtZSogd2Via2l0X3dlYl9mcmFtZV9pbml0
X3dpdGhfd2ViX3ZpZXcoV2ViS2l0V2ViVmlldyosIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudCopOworICAgIFdlYktpdFdlYkZyYW1lKgorICAgIHdlYmtpdF93ZWJfZnJhbWVfaW5pdF93
aXRoX3dlYl92aWV3KFdlYktpdFdlYlZpZXcqLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1l
bnQqKTsKIAotICAgIC8qIFdlYktpdFdlYkhpc3RvcnlJdGVtIHByaXZhdGUgZnVuY3Rpb24gKi8K
LSAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dp
dGhfY29yZV9pdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7Ci0gICAgCisgICAgV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qCisgICAgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9p
dGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7CiAKLSAgICAvLyBUT0RPOiBNb3ZlIHRoZXNlIHRv
IHdlYmtpdHdlYmZyYW1lLmggb25jZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGZ1bGx5Ci0gICAgLy8g
aW1wbGVtZW50ZWQgYW5kIHRoZWlyIEFQSSBoYXMgYmVlbiBkaXNjdXNzZWQuCisgICAgLy8gRklY
TUU6IE1vdmUgdGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWlyIEFQSSBoYXMgYmVl
biBkaXNjdXNzZWQuCiAKICAgICBXRUJLSVRfQVBJIEdTTGlzdCoKICAgICB3ZWJraXRfd2ViX2Zy
YW1lX2dldF9jaGlsZHJlbiAoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKSW5kZXg6IFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRkZWZpbmVzLmgJKFJldmlzaW9uIDI5OTI5KQorKysgV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0ZGVmaW5lcy5oCShBcmJlaXRza29waWUpCkBAIC0zNSwyMCArMzUsMjkgQEAKICNlbmRp
ZgogCiAjaWZuZGVmIFdFQktJVF9BUEkKLSNkZWZpbmUgV0VCS0lUX0FQSQorICAgICNkZWZpbmUg
V0VCS0lUX0FQSQogI2VuZGlmCiAKIEdfQkVHSU5fREVDTFMKIAordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdE5ldHdvcmtSZXF1ZXN0IFdlYktpdE5ldHdvcmtSZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdE5ldHdvcmtSZXF1ZXN0Q2xhc3MgV2ViS2l0TmV0d29ya1JlcXVlc3RDbGFzczsKKwor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCBXZWJLaXRXZWJCYWNrRm9y
d2FyZExpc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3Mg
V2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3M7CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJIaXN0b3J5SXRlbSBXZWJLaXRXZWJIaXN0b3J5SXRlbTsKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJIaXN0b3J5SXRlbUNsYXNzIFdlYktpdFdlYkhpc3RvcnlJdGVtQ2xhc3M7CisKIHR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJGcmFtZSBXZWJLaXRXZWJGcmFtZTsKIHR5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJGcmFtZUNsYXNzIFdlYktpdFdlYkZyYW1lQ2xhc3M7CiAKK3R5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJTZXR0aW5ncyBXZWJLaXRXZWJTZXR0aW5nczsKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJTZXR0aW5nc0NsYXNzIFdlYktpdFdlYlNldHRpbmdzQ2xhc3M7CisKIHR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CiB0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2ViVmlld0NsYXNzIFdlYktpdFdlYlZpZXdDbGFzczsKIAotdHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdE5ldHdvcmtSZXF1ZXN0IFdlYktpdE5ldHdvcmtSZXF1ZXN0OwotdHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdE5ldHdvcmtSZXF1ZXN0Q2xhc3MgV2ViS2l0TmV0d29ya1JlcXVlc3RDbGFzczsK
LQogR19FTkRfREVDTFMKIAogI2VuZGlmCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJoaXN0b3J5aXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
Ymhpc3RvcnlpdGVtLmgJKFJldmlzaW9uIDI5OTI5KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2ViaGlzdG9yeWl0ZW0uaAkoQXJiZWl0c2tvcGllKQpAQCAtMzUsMjEgKzM1LDE2IEBAIEdf
QkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lURU1fQ0xBU1Moa2xh
c3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX0hJ
U1RPUllfSVRFTSkpCiAjZGVmaW5lIFdFQktJVF9XRUJfSElTVE9SWV9JVEVNX0dFVF9DTEFTUyhv
YmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9I
SVNUT1JZX0lURU0sIFdlYktpdFdlYkhpc3RvcnlJdGVtQ2xhc3MpKQogCi0KIHR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2
YXRlOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkhpc3RvcnlJdGVtIFdlYktpdFdlYkhpc3Rv
cnlJdGVtOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkhpc3RvcnlJdGVtQ2xhc3MgV2ViS2l0
V2ViSGlzdG9yeUl0ZW1DbGFzczsKLSAKIAogc3RydWN0IF9XZWJLaXRXZWJIaXN0b3J5SXRlbSB7
Ci0gICAgR09iamVjdCBwYXJlbnQ7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CiAKLSAg
ICAvKjwgcHJpdmF0ZSA+Ki8KICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUqIHByaXY7
CiB9OwogCiBzdHJ1Y3QgX1dlYktpdFdlYkhpc3RvcnlJdGVtQ2xhc3MgewotICAgIEdPYmplY3RD
bGFzcyBwYXJlbnQ7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKIH07CiAKIFdFQktJ
VF9BUEkgR1R5cGUKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJk
bGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3
YXJkbGlzdC5oCShSZXZpc2lvbiAyOTkyOSkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YmJhY2tmb3J3YXJkbGlzdC5oCShBcmJlaXRza29waWUpCkBAIC0zNSwyMSArMzUsMTYgQEAgR19C
RUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfSVNfV0VCX0JBQ0tfRk9SV0FSRF9MSVNUX0NMQVNT
KGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dF
Ql9CQUNLX0ZPUldBUkRfTElTVCkpCiAjZGVmaW5lIFdFQktJVF9XRUJfQkFDS19GT1JXQVJEX0xJ
U1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VC
S0lUX1RZUEVfV0VCX0JBQ0tfRk9SV0FSRF9MSVNULCBXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3RD
bGFzcykpCiAKLQogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdFByaXZh
dGUgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZTsKLXR5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJCYWNrRm9yd2FyZExpc3QgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0OwotdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdENsYXNzIFdlYktpdFdlYkJhY2tGb3J3YXJk
TGlzdENsYXNzOwotCiAKIHN0cnVjdCBfV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0IHsKLSAgICBH
T2JqZWN0IHBhcmVudDsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKIAotICAgIC8qPCBw
cml2YXRlID4qLwotICAgIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUgKnByaXY7Cisg
ICAgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZSogcHJpdjsKIH07CiAKIHN0cnVjdCBf
V2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3MgewotICAgIEdPYmplY3RDbGFzcyBwYXJlbnQ7
CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUK
</data>
<flag name="review"
          id="8241"
          type_id="1"
          status="+"
          setter="alp"
    />
          </attachment>
      

    </bug>

</bugzilla>