<?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>99101</bug_id>
          
          <creation_ts>2012-10-11 14:48:39 -0700</creation_ts>
          <short_desc>[EFL][WK2] Rename EflViewportHandler to PageViewportControllerClientEfl</short_desc>
          <delta_ts>2012-10-21 05:06:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yael">yael</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>joone</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>740276</commentid>
    <comment_count>0</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-11 14:48:39 -0700</bug_when>
    <thetext>EflViewportHandler should be renamed to PageViewportControllerClientEfl to be more inline with the Qt port. Subsequent patches should also update its functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745248</commentid>
    <comment_count>1</comment_count>
      <attachid>169410</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-18 07:46:21 -0700</bug_when>
    <thetext>Created attachment 169410
Patch

Rename EFlViewportHandler to PageViewportControllerClientEfl. Also, make it inherit from PageViewportControllerClient. The actual implementation of PageViewportControllerClient for Efl port will come in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745805</commentid>
    <comment_count>2</comment_count>
      <attachid>169410</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-18 17:53:11 -0700</bug_when>
    <thetext>Comment on attachment 169410
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:47
&gt; +EflViewportHandler::~EflViewportHandler()

I don&apos;t understand this file. Are you changing &quot;EflViewportHandler.cpp | h&quot; with &quot;PageViewportControllerClientEfl.cpp | h&quot; ? There are two PageViewportControllerClientEfl.cpp files in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745814</commentid>
    <comment_count>3</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-18 17:58:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 169410 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169410&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:47
&gt; &gt; +EflViewportHandler::~EflViewportHandler()
&gt; 
&gt; I don&apos;t understand this file. Are you changing &quot;EflViewportHandler.cpp | h&quot; with &quot;PageViewportControllerClientEfl.cpp | h&quot; ? There are two PageViewportControllerClientEfl.cpp files in this patch.

There are 2 files because I did &quot;svn rename&quot;.
One is a copy of the original file, and the other are changes I did inside the file, to rename the class and adjust the inheritance from PageViewportControllerClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745862</commentid>
    <comment_count>4</comment_count>
      <attachid>169410</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-18 18:34:17 -0700</bug_when>
    <thetext>Comment on attachment 169410
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:119
&gt; +    OwnPtr&lt;PageViewportControllerClientEfl&gt; viewportHandler;

Don&apos;t you need to change variable name according to new class name ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:120
&gt; +    OwnPtr&lt;PageViewportController&gt; pageViewportController;

What is purpose of pageViewportController ? It looks this member variable is not used in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745867</commentid>
    <comment_count>5</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-18 18:40:37 -0700</bug_when>
    <thetext>(In reply to comment #4)
Thanks for your review :)
&gt; (From update of attachment 169410 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169410&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:119
&gt; &gt; +    OwnPtr&lt;PageViewportControllerClientEfl&gt; viewportHandler;
&gt; 
&gt; Don&apos;t you need to change variable name according to new class name ?
&gt; 
Yes, I&apos;ll do that.
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:120
&gt; &gt; +    OwnPtr&lt;PageViewportController&gt; pageViewportController;
&gt; 
&gt; What is purpose of pageViewportController ? It looks this member variable is not used in this patch.
After renaming this class, it now becomes a client of PageViewportController, so I added pageViewportController, since it doesn&apos;t make sense to have a client without the class it is client of.
Subsequent patches will make use of pageViewportController. 
If you feel that pageViewportController should be added later, I can remove it from this patch and add it in a later patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745869</commentid>
    <comment_count>6</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-18 18:44:45 -0700</bug_when>
    <thetext>(In reply to comment #5)

&gt; &gt; What is purpose of pageViewportController ? It looks this member variable is not used in this patch.
&gt; After renaming this class, it now becomes a client of PageViewportController, so I added pageViewportController, since it doesn&apos;t make sense to have a client without the class it is client of.
&gt; Subsequent patches will make use of pageViewportController. 
&gt; If you feel that pageViewportController should be added later, I can remove it from this patch and add it in a later patch.

I prefer to add it when using actually. It would be good if you add it when you prepare new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745893</commentid>
    <comment_count>7</comment_count>
      <attachid>169533</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-18 19:13:28 -0700</bug_when>
    <thetext>Created attachment 169533
Patch

Address comments #4 and #6.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745897</commentid>
    <comment_count>8</comment_count>
      <attachid>169533</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-18 19:15:02 -0700</bug_when>
    <thetext>Comment on attachment 169533
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746159</commentid>
    <comment_count>9</comment_count>
      <attachid>169533</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-19 02:38:01 -0700</bug_when>
    <thetext>Comment on attachment 169533
Patch

Rejecting attachment 169533 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
D at 100.
4 out of 4 hunks FAILED -- saving rejects to file Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp.rej
patching file Source/WebKit2/UIProcess/API/efl/EflViewportHandler.h
rm &apos;Source/WebKit2/UIProcess/API/efl/EflViewportHandler.h&apos;
patching file Source/WebKit2/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Gyuyoung K...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/14424900</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746239</commentid>
    <comment_count>10</comment_count>
      <attachid>169603</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-19 05:34:32 -0700</bug_when>
    <thetext>Created attachment 169603
Patch for landing.

Rebased the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746251</commentid>
    <comment_count>11</comment_count>
      <attachid>169606</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-19 06:07:22 -0700</bug_when>
    <thetext>Created attachment 169606
Patch for landing.

Another rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746271</commentid>
    <comment_count>12</comment_count>
      <attachid>169606</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-19 06:48:04 -0700</bug_when>
    <thetext>Comment on attachment 169606
Patch for landing.

Rejecting attachment 169606 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/JavaScriptCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/14460464</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746277</commentid>
    <comment_count>13</comment_count>
      <attachid>169606</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-10-19 06:58:09 -0700</bug_when>
    <thetext>Comment on attachment 169606
Patch for landing.

Clearing flags on attachment: 169606

Committed r131896: &lt;http://trac.webkit.org/changeset/131896&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746279</commentid>
    <comment_count>14</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-10-19 06:58:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747070</commentid>
    <comment_count>15</comment_count>
      <attachid>169606</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-21 03:14:07 -0700</bug_when>
    <thetext>Comment on attachment 169606
Patch for landing.

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

&gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:40
&gt; +EflViewportHandler::EflViewportHandler(Evas_Object* viewWidget)

Shouldn&apos;t we rename these as well? :)

&gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.h:27
&gt; +#ifndef EflViewportHandler_h
&gt; +#define EflViewportHandler_h

And these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747078</commentid>
    <comment_count>16</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-21 05:06:10 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 169606 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169606&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:40
&gt; &gt; +EflViewportHandler::EflViewportHandler(Evas_Object* viewWidget)
&gt; 
&gt; Shouldn&apos;t we rename these as well? :)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.h:27
&gt; &gt; +#ifndef EflViewportHandler_h
&gt; &gt; +#define EflViewportHandler_h
&gt; 
&gt; And these?

The patch contains 2 versions of each file. One is an identical copy of the old file, and one is my modifications. You are looking at the copy which is identical to the old file, not at my modifications.
Please have a look at comment #2 and comment #3 .</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169410</attachid>
            <date>2012-10-18 07:46:21 -0700</date>
            <delta_ts>2012-10-18 19:13:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>99101.patch</filename>
            <type>text/plain</type>
            <size>28606</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTc0NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTEwLTE4ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIFJlbmFt
ZSBFZmxWaWV3cG9ydEhhbmRsZXIgdG8gUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkxMDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgRUZs
Vmlld3BvcnRIYW5kbGVyIHRvIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuCisgICAg
ICAgIEFsc28sIG1ha2UgaXQgaW5oZXJpdCBmcm9tIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnQuIFRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24KKyAgICAgICAgb2YgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudCBmb3IgRWZsIHBvcnQgd2lsbCBjb21lIGluIGEgc2VwYXJhdGUgcGF0Y2gu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FZmxWaWV3cG9ydEhhbmRsZXIuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VmbFZpZXdwb3J0SGFuZGxlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9FZmxWaWV3cG9ydEhhbmRsZXIuY3BwLgorICAgICAgICAoV2ViS2l0OjpQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6flBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkcmF3aW5nQXJlYSk6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFJlbmRlcmVyQWN0aXZlKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlzcGxheSk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnVwZGF0
ZVZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmw6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbDo6c2V0Vmlld3BvcnRQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRSZXN1bWVDb250ZW50KToK
KyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hh
bmdlVmlzaWJsZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Q29udHJvbGxlcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FZmxWaWV3
cG9ydEhhbmRsZXIuaC4KKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
ZmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAg
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfZXdrX3ZpZXdfaW5pdGlhbGl6ZSk6
CisgICAgICAgIChld2tfdmlld19zY2FsZV9zZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdl
Vmlld3BvcnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZVZpZXdwb3J0
Q29udHJvbGxlci5oOgorCiAyMDEyLTEwLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggR1RLKyBkZWJ1ZyBidWls
ZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzE3NDUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDYgKzIzNSw3IEBA
IFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5LmNwcAogCisgICAgVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIuY3BwCiAgICAgVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCiAgICAgVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkFwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyUHJveHkuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2
aXNpb24gMTMxNzQ1KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9CYXR0ZXJ5UHJvdmlkZXIuY3BwCi0gICAgVUlQcm9jZXNzL0FQSS9l
ZmwvRWZsVmlld3BvcnRIYW5kbGVyLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvTmV0d29y
a0luZm9Qcm92aWRlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9WaWJyYXRpb25Qcm92aWRlci5jcHAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDEzMTc0NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmll
d3BvcnRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKIAor
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKwogI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtMjg5LDMgKzI5MSw1IEBAIHZvaWQgUGFnZVZpZXdwb3J0
Q29udHJvbGxlcjo6dXBkYXRlTWluaW0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0
Q29udHJvbGxlci5oCShyZXZpc2lvbiAxMzE3NDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw4
IEBACiAjaWZuZGVmIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJfaAogI2RlZmluZSBQYWdlVmlld3Bv
cnRDb250cm9sbGVyX2gKIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKwogI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KQEAgLTE0MCw0ICsxNDIsNiBAQCBib29s
IGZ1enp5Q29tcGFyZShmbG9hdCwgZmxvYXQsIGZsb2F0IGVwCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCisjZW5kaWYKKwogI2VuZGlmIC8vIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJfaApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWZsVmlld3BvcnRIYW5kbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FZmxWaWV3
cG9ydEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxMzE3NDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9FZmxWaWV3cG9ydEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25p
Y3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJFZmxWaWV3cG9ydEhhbmRsZXIuaCIKLQotI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKLQotI2luY2x1ZGUgIkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaCIKLSNpbmNs
dWRlICJMYXllclRyZWVSZW5kZXJlci5oIgotI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4
LmgiCi0jaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgotCi11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLUVmbFZpZXdwb3J0SGFuZGxlcjo6RWZsVmll
d3BvcnRIYW5kbGVyKEV2YXNfT2JqZWN0KiB2aWV3V2lkZ2V0KQotICAgIDogbV92aWV3V2lkZ2V0
KHZpZXdXaWRnZXQpCi0gICAgLCBtX3NjYWxlRmFjdG9yKDEpCi17Ci0gICAgQVNTRVJUKG1fdmll
d1dpZGdldCk7Ci19Ci0KLUVmbFZpZXdwb3J0SGFuZGxlcjo6fkVmbFZpZXdwb3J0SGFuZGxlcigp
Ci17Ci19Ci0KLURyYXdpbmdBcmVhUHJveHkqIEVmbFZpZXdwb3J0SGFuZGxlcjo6ZHJhd2luZ0Fy
ZWEoKSBjb25zdAotewotICAgIHJldHVybiBld2tfdmlld19wYWdlX2dldChtX3ZpZXdXaWRnZXQp
LT5kcmF3aW5nQXJlYSgpOwotfQotCi12b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6c2V0UmVuZGVy
ZXJBY3RpdmUoYm9vbCBhY3RpdmUpCi17Ci0gICAgZHJhd2luZ0FyZWEoKS0+bGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eSgpLT5sYXllclRyZWVSZW5kZXJlcigpLT5zZXRBY3RpdmUoYWN0aXZlKTsK
LX0KLQotdm9pZCBFZmxWaWV3cG9ydEhhbmRsZXI6OmRpc3BsYXkoY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgSW50UG9pbnQmIHZpZXdQb3NpdGlvbikKLXsKLSAgICBXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtYXRyaXg7Ci0gICAgbWF0cml4LnNldE1hdHJpeChtX3NjYWxlRmFjdG9y
LCAwLCAwLCBtX3NjYWxlRmFjdG9yLCAtbV92aXNpYmxlQ29udGVudFJlY3QueCgpICsgdmlld1Bv
c2l0aW9uLngoKSwgLW1fdmlzaWJsZUNvbnRlbnRSZWN0LnkoKSArIHZpZXdQb3NpdGlvbi55KCkp
OwotCi0gICAgTGF5ZXJUcmVlUmVuZGVyZXIqIHJlbmRlcmVyID0gZHJhd2luZ0FyZWEoKS0+bGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSgpLT5sYXllclRyZWVSZW5kZXJlcigpOwotICAgIHJlbmRl
cmVyLT5zZXRBY3RpdmUodHJ1ZSk7Ci0gICAgcmVuZGVyZXItPnN5bmNSZW1vdGVDb250ZW50KCk7
Ci0gICAgSW50UmVjdCBjbGlwUmVjdChyZWN0KTsKLSAgICBjbGlwUmVjdC5tb3ZlKHZpZXdQb3Np
dGlvbi54KCksIHZpZXdQb3NpdGlvbi55KCkpOwotICAgIHJlbmRlcmVyLT5wYWludFRvQ3VycmVu
dEdMQ29udGV4dChtYXRyaXgsIDEsIGNsaXBSZWN0KTsKLX0KLQotdm9pZCBFZmxWaWV3cG9ydEhh
bmRsZXI6OnVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCi17
Ci0gICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7Ci0gICAgZXdrX3ZpZXdfcGFnZV9n
ZXQobV92aWV3V2lkZ2V0KS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7Ci0gICAgc2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpLCBtX3Nj
YWxlRmFjdG9yLCBGbG9hdFBvaW50KCkpOwotfQotCi12b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6
c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBJbnRQb2ludCYgbmV3U2Nyb2xsUG9zaXRpb24s
IGZsb2F0IG5ld1NjYWxlLCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5KQotewotICAgIG1f
c2NhbGVGYWN0b3IgPSBuZXdTY2FsZTsKLSAgICBtX3Zpc2libGVDb250ZW50UmVjdCA9IEludFJl
Y3QobmV3U2Nyb2xsUG9zaXRpb24sIG1fdmlld3BvcnRTaXplKTsKLQotICAgIC8vIE1vdmUgdmlz
aWJsZUNvbnRlbnRSZWN0IGluc2lkZSBjb250ZW50c1JlY3Qgd2hlbiB2aXNpYmxlQ29udGVudFJl
Y3QgZ29lcyBvdXRzaWRlIGNvbnRlbnRzUmVjdC4gCi0gICAgSW50U2l6ZSBjb250ZW50c1NpemUg
PSBtX2NvbnRlbnRzU2l6ZTsKLSAgICBjb250ZW50c1NpemUuc2NhbGUobV9zY2FsZUZhY3Rvcik7
Ci0gICAgaWYgKG1fdmlzaWJsZUNvbnRlbnRSZWN0LngoKSA+IGNvbnRlbnRzU2l6ZS53aWR0aCgp
IC0gbV92aXNpYmxlQ29udGVudFJlY3Qud2lkdGgoKSkKLSAgICAgICAgbV92aXNpYmxlQ29udGVu
dFJlY3Quc2V0WChjb250ZW50c1NpemUud2lkdGgoKSAtIG1fdmlzaWJsZUNvbnRlbnRSZWN0Lndp
ZHRoKCkpOwotICAgIGlmIChtX3Zpc2libGVDb250ZW50UmVjdC54KCkgPCAwKQotICAgICAgICBt
X3Zpc2libGVDb250ZW50UmVjdC5zZXRYKDApOwotICAgIGlmIChtX3Zpc2libGVDb250ZW50UmVj
dC55KCkgPiBjb250ZW50c1NpemUuaGVpZ2h0KCkgLSBtX3Zpc2libGVDb250ZW50UmVjdC5oZWln
aHQoKSkKLSAgICAgICAgbV92aXNpYmxlQ29udGVudFJlY3Quc2V0WShjb250ZW50c1NpemUuaGVp
Z2h0KCkgLSBtX3Zpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSk7Ci0gICAgaWYgKG1fdmlzaWJs
ZUNvbnRlbnRSZWN0LnkoKSA8IDApCi0gICAgICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0LnNldFko
MCk7Ci0KLSAgICBGbG9hdFJlY3QgbWFwUmVjdFRvV2ViQ29udGVudCA9IG1fdmlzaWJsZUNvbnRl
bnRSZWN0OwotICAgIG1hcFJlY3RUb1dlYkNvbnRlbnQuc2NhbGUoMSAvIG1fc2NhbGVGYWN0b3Ip
OwotICAgIGRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250ZW50c1JlY3QoZW5jbG9zaW5nSW50
UmVjdChtYXBSZWN0VG9XZWJDb250ZW50KSwgbV9zY2FsZUZhY3RvciwgdHJhamVjdG9yeSk7Ci19
Ci0KLXZvaWQgRWZsVmlld3BvcnRIYW5kbGVyOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBtX2NvbnRlbnRzU2l6ZSA9IHNpemU7Ci0g
ICAgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigp
LCBtX3NjYWxlRmFjdG9yLCBGbG9hdFBvaW50KCkpOwotICAgIGRyYXdpbmdBcmVhKCktPmxheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+c2V0Q29udGVudHNTaXplKFdlYkNvcmU6OkZsb2F0U2l6
ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0jZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FZmxWaWV3cG9ydEhhbmRsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FZmxWaWV3cG9ydEhhbmRsZXIu
aAkocmV2aXNpb24gMTMxNzQ1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RWZsVmlld3BvcnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEVmbFZpZXdwb3J0SGFuZGxlcl9oCi0jZGVmaW5l
IEVmbFZpZXdwb3J0SGFuZGxlcl9oCi0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0K
LSNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBFZmxWaWV3cG9ydEhhbmRsZXIgewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEVmbFZpZXdwb3J0SGFuZGxlcj4gY3JlYXRlKEV2
YXNfT2JqZWN0KiB2aWV3V2lkZ2V0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBFZmxWaWV3cG9ydEhhbmRsZXIodmlld1dpZGdldCkpOwotICAgIH0KLSAgICB+RWZsVmlld3Bv
cnRIYW5kbGVyKCk7Ci0KLSAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSgpIGNvbnN0
OwotICAgIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKSB7IHJldHVybiBtX3ZpZXdwb3J0U2l6
ZTsgfQotCi0gICAgdm9pZCBkaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiB2aWV3UG9zaXRpb24pOwotICAgIHZvaWQgdXBkYXRlVmll
d3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdwb3J0U2l6ZSk7Ci0gICAgdm9p
ZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgZmxvYXQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKLSAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRz
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKLSAgICB2b2lkIHNldFJlbmRlcmVy
QWN0aXZlKGJvb2wpOwotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBFZmxWaWV3cG9ydEhhbmRsZXIo
RXZhc19PYmplY3QqKTsKLQotICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXdXaWRnZXQ7Ci0gICAgV2Vi
Q29yZTo6SW50UmVjdCBtX3Zpc2libGVDb250ZW50UmVjdDsKLSAgICBXZWJDb3JlOjpJbnRTaXpl
IG1fY29udGVudHNTaXplOwotICAgIFdlYkNvcmU6OkludFNpemUgbV92aWV3cG9ydFNpemU7Ci0g
ICAgZmxvYXQgbV9zY2FsZUZhY3RvcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYKLQotI2VuZGlmIC8vIEVmbFZpZXdwb3J0SGFuZGxlcl9oCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTMxNzQ1KQkoZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FZmxWaWV3cG9ydEhhbmRsZXIuY3BwOjEzMTc0
NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFZmxWaWV3
cG9ydEhhbmRsZXIuaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2luY2x1
ZGUgIkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaCIKKyNpbmNsdWRlICJMYXllclRyZWVSZW5k
ZXJlci5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAiZXdr
X3ZpZXdfcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK0VmbFZpZXdwb3J0SGFuZGxlcjo6RWZsVmlld3BvcnRIYW5kbGVyKEV2YXNf
T2JqZWN0KiB2aWV3V2lkZ2V0KQorICAgIDogbV92aWV3V2lkZ2V0KHZpZXdXaWRnZXQpCisgICAg
LCBtX3NjYWxlRmFjdG9yKDEpCit7CisgICAgQVNTRVJUKG1fdmlld1dpZGdldCk7Cit9CisKK0Vm
bFZpZXdwb3J0SGFuZGxlcjo6fkVmbFZpZXdwb3J0SGFuZGxlcigpCit7Cit9CisKK0RyYXdpbmdB
cmVhUHJveHkqIEVmbFZpZXdwb3J0SGFuZGxlcjo6ZHJhd2luZ0FyZWEoKSBjb25zdAoreworICAg
IHJldHVybiBld2tfdmlld19wYWdlX2dldChtX3ZpZXdXaWRnZXQpLT5kcmF3aW5nQXJlYSgpOwor
fQorCit2b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6c2V0UmVuZGVyZXJBY3RpdmUoYm9vbCBhY3Rp
dmUpCit7CisgICAgZHJhd2luZ0FyZWEoKS0+bGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSgpLT5s
YXllclRyZWVSZW5kZXJlcigpLT5zZXRBY3RpdmUoYWN0aXZlKTsKK30KKwordm9pZCBFZmxWaWV3
cG9ydEhhbmRsZXI6OmRpc3BsYXkoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UG9pbnQm
IHZpZXdQb3NpdGlvbikKK3sKKyAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRy
aXg7CisgICAgbWF0cml4LnNldE1hdHJpeChtX3NjYWxlRmFjdG9yLCAwLCAwLCBtX3NjYWxlRmFj
dG9yLCAtbV92aXNpYmxlQ29udGVudFJlY3QueCgpICsgdmlld1Bvc2l0aW9uLngoKSwgLW1fdmlz
aWJsZUNvbnRlbnRSZWN0LnkoKSArIHZpZXdQb3NpdGlvbi55KCkpOworCisgICAgTGF5ZXJUcmVl
UmVuZGVyZXIqIHJlbmRlcmVyID0gZHJhd2luZ0FyZWEoKS0+bGF5ZXJUcmVlQ29vcmRpbmF0b3JQ
cm94eSgpLT5sYXllclRyZWVSZW5kZXJlcigpOworICAgIHJlbmRlcmVyLT5zZXRBY3RpdmUodHJ1
ZSk7CisgICAgcmVuZGVyZXItPnN5bmNSZW1vdGVDb250ZW50KCk7CisgICAgSW50UmVjdCBjbGlw
UmVjdChyZWN0KTsKKyAgICBjbGlwUmVjdC5tb3ZlKHZpZXdQb3NpdGlvbi54KCksIHZpZXdQb3Np
dGlvbi55KCkpOworICAgIHJlbmRlcmVyLT5wYWludFRvQ3VycmVudEdMQ29udGV4dChtYXRyaXgs
IDEsIGNsaXBSZWN0KTsKK30KKwordm9pZCBFZmxWaWV3cG9ydEhhbmRsZXI6OnVwZGF0ZVZpZXdw
b3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCit7CisgICAgbV92aWV3cG9ydFNp
emUgPSB2aWV3cG9ydFNpemU7CisgICAgZXdrX3ZpZXdfcGFnZV9nZXQobV92aWV3V2lkZ2V0KS0+
c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CisgICAgc2V0VmlzaWJsZUNvbnRlbnRzUmVj
dChtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpLCBtX3NjYWxlRmFjdG9yLCBGbG9hdFBv
aW50KCkpOworfQorCit2b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6c2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChjb25zdCBJbnRQb2ludCYgbmV3U2Nyb2xsUG9zaXRpb24sIGZsb2F0IG5ld1NjYWxlLCBj
b25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5KQoreworICAgIG1fc2NhbGVGYWN0b3IgPSBuZXdT
Y2FsZTsKKyAgICBtX3Zpc2libGVDb250ZW50UmVjdCA9IEludFJlY3QobmV3U2Nyb2xsUG9zaXRp
b24sIG1fdmlld3BvcnRTaXplKTsKKworICAgIC8vIE1vdmUgdmlzaWJsZUNvbnRlbnRSZWN0IGlu
c2lkZSBjb250ZW50c1JlY3Qgd2hlbiB2aXNpYmxlQ29udGVudFJlY3QgZ29lcyBvdXRzaWRlIGNv
bnRlbnRzUmVjdC4gCisgICAgSW50U2l6ZSBjb250ZW50c1NpemUgPSBtX2NvbnRlbnRzU2l6ZTsK
KyAgICBjb250ZW50c1NpemUuc2NhbGUobV9zY2FsZUZhY3Rvcik7CisgICAgaWYgKG1fdmlzaWJs
ZUNvbnRlbnRSZWN0LngoKSA+IGNvbnRlbnRzU2l6ZS53aWR0aCgpIC0gbV92aXNpYmxlQ29udGVu
dFJlY3Qud2lkdGgoKSkKKyAgICAgICAgbV92aXNpYmxlQ29udGVudFJlY3Quc2V0WChjb250ZW50
c1NpemUud2lkdGgoKSAtIG1fdmlzaWJsZUNvbnRlbnRSZWN0LndpZHRoKCkpOworICAgIGlmICht
X3Zpc2libGVDb250ZW50UmVjdC54KCkgPCAwKQorICAgICAgICBtX3Zpc2libGVDb250ZW50UmVj
dC5zZXRYKDApOworICAgIGlmIChtX3Zpc2libGVDb250ZW50UmVjdC55KCkgPiBjb250ZW50c1Np
emUuaGVpZ2h0KCkgLSBtX3Zpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSkKKyAgICAgICAgbV92
aXNpYmxlQ29udGVudFJlY3Quc2V0WShjb250ZW50c1NpemUuaGVpZ2h0KCkgLSBtX3Zpc2libGVD
b250ZW50UmVjdC5oZWlnaHQoKSk7CisgICAgaWYgKG1fdmlzaWJsZUNvbnRlbnRSZWN0LnkoKSA8
IDApCisgICAgICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0LnNldFkoMCk7CisKKyAgICBGbG9hdFJl
Y3QgbWFwUmVjdFRvV2ViQ29udGVudCA9IG1fdmlzaWJsZUNvbnRlbnRSZWN0OworICAgIG1hcFJl
Y3RUb1dlYkNvbnRlbnQuc2NhbGUoMSAvIG1fc2NhbGVGYWN0b3IpOworICAgIGRyYXdpbmdBcmVh
KCktPnNldFZpc2libGVDb250ZW50c1JlY3QoZW5jbG9zaW5nSW50UmVjdChtYXBSZWN0VG9XZWJD
b250ZW50KSwgbV9zY2FsZUZhY3RvciwgdHJhamVjdG9yeSk7Cit9CisKK3ZvaWQgRWZsVmlld3Bv
cnRIYW5kbGVyOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2l6ZSkKK3sKKyAgICBtX2NvbnRlbnRzU2l6ZSA9IHNpemU7CisgICAgc2V0VmlzaWJsZUNvbnRl
bnRzUmVjdChtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpLCBtX3NjYWxlRmFjdG9yLCBG
bG9hdFBvaW50KCkpOworICAgIGRyYXdpbmdBcmVhKCktPmxheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkoKS0+c2V0Q29udGVudHNTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisjZW5kaWYgLy8gVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQorCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTMxNzQ1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRWZsVmlld3BvcnRIYW5kbGVyLmgiCisjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbC5oIgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCkBAIC0z
NywyOCArMzcsMjkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1FZmxWaWV3cG9ydEhhbmRsZXI6OkVmbFZpZXdwb3J0SGFuZGxlcihFdmFzX09iamVj
dCogdmlld1dpZGdldCkKK1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXdXaWRnZXQpCiAgICAgOiBt
X3ZpZXdXaWRnZXQodmlld1dpZGdldCkKICAgICAsIG1fc2NhbGVGYWN0b3IoMSkKKyAgICAsIG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlcigwKQogewogICAgIEFTU0VSVChtX3ZpZXdXaWRnZXQpOwog
fQogCi1FZmxWaWV3cG9ydEhhbmRsZXI6On5FZmxWaWV3cG9ydEhhbmRsZXIoKQorUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbDo6flBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwo
KQogewogfQogCi1EcmF3aW5nQXJlYVByb3h5KiBFZmxWaWV3cG9ydEhhbmRsZXI6OmRyYXdpbmdB
cmVhKCkgY29uc3QKK0RyYXdpbmdBcmVhUHJveHkqIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OmRyYXdpbmdBcmVhKCkgY29uc3QKIHsKICAgICByZXR1cm4gZXdrX3ZpZXdfcGFnZV9n
ZXQobV92aWV3V2lkZ2V0KS0+ZHJhd2luZ0FyZWEoKTsKIH0KIAotdm9pZCBFZmxWaWV3cG9ydEhh
bmRsZXI6OnNldFJlbmRlcmVyQWN0aXZlKGJvb2wgYWN0aXZlKQordm9pZCBQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsOjpzZXRSZW5kZXJlckFjdGl2ZShib29sIGFjdGl2ZSkKIHsKICAg
ICBkcmF3aW5nQXJlYSgpLT5sYXllclRyZWVDb29yZGluYXRvclByb3h5KCktPmxheWVyVHJlZVJl
bmRlcmVyKCktPnNldEFjdGl2ZShhY3RpdmUpOwogfQogCi12b2lkIEVmbFZpZXdwb3J0SGFuZGxl
cjo6ZGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRQb2ludCYgdmlld1Bvc2l0
aW9uKQordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaXNwbGF5KGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFBvaW50JiB2aWV3UG9zaXRpb24pCiB7CiAgICAgV2Vi
Q29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OwogICAgIG1hdHJpeC5zZXRNYXRyaXgo
bV9zY2FsZUZhY3RvciwgMCwgMCwgbV9zY2FsZUZhY3RvciwgLW1fdmlzaWJsZUNvbnRlbnRSZWN0
LngoKSArIHZpZXdQb3NpdGlvbi54KCksIC1tX3Zpc2libGVDb250ZW50UmVjdC55KCkgKyB2aWV3
UG9zaXRpb24ueSgpKTsKQEAgLTcxLDE0ICs3MiwxNCBAQCB2b2lkIEVmbFZpZXdwb3J0SGFuZGxl
cjo6ZGlzcGxheShjb25zdCBJCiAgICAgcmVuZGVyZXItPnBhaW50VG9DdXJyZW50R0xDb250ZXh0
KG1hdHJpeCwgMSwgY2xpcFJlY3QpOwogfQogCi12b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6dXBk
YXRlVmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKK3ZvaWQgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IEludFNp
emUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsK
ICAgICBld2tfdmlld19wYWdlX2dldChtX3ZpZXdXaWRnZXQpLT5zZXRWaWV3cG9ydFNpemUodmll
d3BvcnRTaXplKTsKICAgICBzZXRWaXNpYmxlQ29udGVudHNSZWN0KG1fdmlzaWJsZUNvbnRlbnRS
ZWN0LmxvY2F0aW9uKCksIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7CiB9CiAKLXZvaWQg
RWZsVmlld3BvcnRIYW5kbGVyOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFBvaW50
JiBuZXdTY3JvbGxQb3NpdGlvbiwgZmxvYXQgbmV3U2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHRy
YWplY3RvcnkpCit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZpc2li
bGVDb250ZW50c1JlY3QoY29uc3QgSW50UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9uLCBmbG9hdCBu
ZXdTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeSkKIHsKICAgICBtX3NjYWxlRmFj
dG9yID0gbmV3U2NhbGU7CiAgICAgbV92aXNpYmxlQ29udGVudFJlY3QgPSBJbnRSZWN0KG5ld1Nj
cm9sbFBvc2l0aW9uLCBtX3ZpZXdwb3J0U2l6ZSk7CkBAIC0xMDAsMTMgKzEwMSwzOCBAQCB2b2lk
IEVmbFZpZXdwb3J0SGFuZGxlcjo6c2V0VmlzaWJsZUNvbnRlCiAgICAgZHJhd2luZ0FyZWEoKS0+
c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChlbmNsb3NpbmdJbnRSZWN0KG1hcFJlY3RUb1dlYkNvbnRl
bnQpLCBtX3NjYWxlRmFjdG9yLCB0cmFqZWN0b3J5KTsKIH0KIAotdm9pZCBFZmxWaWV3cG9ydEhh
bmRsZXI6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
KQordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50
c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKIHsKICAgICBtX2NvbnRlbnRzU2l6
ZSA9IHNpemU7CiAgICAgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChtX3Zpc2libGVDb250ZW50UmVj
dC5sb2NhdGlvbigpLCBtX3NjYWxlRmFjdG9yLCBGbG9hdFBvaW50KCkpOwogICAgIGRyYXdpbmdB
cmVhKCktPmxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+c2V0Q29udGVudHNTaXplKFdlYkNv
cmU6OkZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKIH0KIAordm9pZCBQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIC8qY29udGVudHNQb2ludCovKQoreworfQorCit2b2lkIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQsIGJv
b2wgLyp0cmVhdEFzSW5pdGlhbFZhbHVlKi8pCit7Cit9CisKK3ZvaWQgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbDo6ZGlkUmVzdW1lQ29udGVudCgpCit7Cit9CisKK3ZvaWQgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRzKCkKK3sK
K30KKwordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VWaWV3
cG9ydEF0dHJpYnV0ZXMoKQoreworfQorCit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OnNldENvbnRyb2xsZXIoUGFnZVZpZXdwb3J0Q29udHJvbGxlciogcGFnZVZpZXdwb3J0
Q29udHJvbGxlcikKK3sKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIgPSBwYWdlVmlld3Bv
cnRDb250cm9sbGVyOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKICNlbmRpZiAvLyBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsLmgJKHJldmlzaW9uIDEzMTc0NSkJKGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRWZsVmlld3BvcnRIYW5kbGVyLmg6MTMxNzQ1KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBFZmxWaWV3cG9ydEhhbmRsZXJfaAorI2RlZmluZSBFZmxWaWV3cG9ydEhhbmRsZXJfaAorCisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgRWZsVmlld3BvcnRIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxFZmxWaWV3cG9ydEhhbmRsZXI+IGNyZWF0ZShFdmFzX09iamVjdCogdmlld1dpZGdldCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRWZsVmlld3BvcnRIYW5kbGVyKHZpZXdX
aWRnZXQpKTsKKyAgICB9CisgICAgfkVmbFZpZXdwb3J0SGFuZGxlcigpOworCisgICAgRHJhd2lu
Z0FyZWFQcm94eSogZHJhd2luZ0FyZWEoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpJbnRTaXplIHZp
ZXdTaXplKCkgeyByZXR1cm4gbV92aWV3cG9ydFNpemU7IH0KKworICAgIHZvaWQgZGlzcGxheShj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmll
d1Bvc2l0aW9uKTsKKyAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiB2aWV3cG9ydFNpemUpOworICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGZsb2F0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
Jik7CisgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2l6ZSk7CisgICAgdm9pZCBzZXRSZW5kZXJlckFjdGl2ZShib29sKTsKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgRWZsVmlld3BvcnRIYW5kbGVyKEV2YXNfT2JqZWN0Kik7CisKKyAgICBFdmFz
X09iamVjdCogbV92aWV3V2lkZ2V0OworICAgIFdlYkNvcmU6OkludFJlY3QgbV92aXNpYmxlQ29u
dGVudFJlY3Q7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2NvbnRlbnRzU2l6ZTsKKyAgICBXZWJD
b3JlOjpJbnRTaXplIG1fdmlld3BvcnRTaXplOworICAgIGZsb2F0IG1fc2NhbGVGYWN0b3I7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCisKKyNlbmRpZiAvLyBFZmxWaWV3
cG9ydEhhbmRsZXJfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaAko
cmV2aXNpb24gMTMxNzQ1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywyMyAr
MjMsMjQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIEVmbFZpZXdwb3J0SGFuZGxlcl9oCi0jZGVmaW5lIEVmbFZpZXdwb3J0SGFuZGxlcl9oCisj
aWZuZGVmIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmxfaAorI2RlZmluZSBQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsX2gKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKIAogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1jbGFzcyBFZmxWaWV3cG9ydEhhbmRsZXIgeworY2xhc3MgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCA6IHB1YmxpYyBQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxFZmxWaWV3cG9ydEhhbmRs
ZXI+IGNyZWF0ZShFdmFzX09iamVjdCogdmlld1dpZGdldCkKKyAgICBzdGF0aWMgUGFzc093blB0
cjxQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsPiBjcmVhdGUoRXZhc19PYmplY3QqIHZp
ZXdXaWRnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEVmbFZpZXdwb3J0
SGFuZGxlcih2aWV3V2lkZ2V0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCh2aWV3V2lkZ2V0KSk7CiAgICAgfQotICAgIH5FZmxW
aWV3cG9ydEhhbmRsZXIoKTsKKyAgICB+UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCgp
OwogCiAgICAgRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEoKSBjb25zdDsKICAgICBXZWJD
b3JlOjpJbnRTaXplIHZpZXdTaXplKCkgeyByZXR1cm4gbV92aWV3cG9ydFNpemU7IH0KQEAgLTQ3
LDIwICs0OCwzMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwbGF5KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB2aWV3UG9zaXRpb24pOwogICAg
IHZvaWQgdXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdwb3J0
U2l6ZSk7CiAgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgZmxvYXQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKLSAgICB2b2lkIGRp
ZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKICAgICB2
b2lkIHNldFJlbmRlcmVyQWN0aXZlKGJvb2wpOworCisgICAgdmlydHVhbCB2b2lkIHNldFZpZXdw
b3J0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgY29udGVudHNQb2ludCk7Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQsIGJvb2wgdHJlYXRBc0luaXRp
YWxWYWx1ZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lQ29udGVudCgpOworICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udHJvbGxlcihQYWdlVmlld3BvcnRDb250cm9sbGVyKik7CisKIHByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgRWZsVmlld3BvcnRIYW5kbGVyKEV2YXNfT2JqZWN0Kik7CisgICAgZXhwbGlj
aXQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbChFdmFzX09iamVjdCopOwogCiAgICAg
RXZhc19PYmplY3QqIG1fdmlld1dpZGdldDsKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fdmlzaWJs
ZUNvbnRlbnRSZWN0OwogICAgIFdlYkNvcmU6OkludFNpemUgbV9jb250ZW50c1NpemU7CiAgICAg
V2ViQ29yZTo6SW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBmbG9hdCBtX3NjYWxlRmFjdG9y
OworICAgIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKIAotI2VuZGlmIC8vIEVmbFZp
ZXdwb3J0SGFuZGxlcl9oCisjZW5kaWYgLy8gUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwCShyZXZpc2lvbiAxMzE3NDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRl
ICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5o
IgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlJlZlB0ckVmbC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgogI2luY2x1ZGUgIldLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5oIgpAQCAtNzUsNyArNzYs
NyBAQAogI2VuZGlmCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0jaW5jbHVkZSAi
RWZsVmlld3BvcnRIYW5kbGVyLmgiCisjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbC5oIgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0xMTUsNyAr
MTE2LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZUZyb21QYWdlVmlld01hcAogc3RydWN0
IEV3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdl
Q2xpZW50OwogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICBPd25QdHI8RWZsVmll
d3BvcnRIYW5kbGVyPiB2aWV3cG9ydEhhbmRsZXI7CisgICAgT3duUHRyPFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmw+IHZpZXdwb3J0SGFuZGxlcjsKKyAgICBPd25QdHI8UGFnZVZpZXdw
b3J0Q29udHJvbGxlcj4gcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKICNlbmRpZgogICAgIFJlZlB0
cjxXZWJQYWdlUHJveHk+IHBhZ2VQcm94eTsKIApAQCAtODI0LDcgKzgyNiw4IEBAIHN0YXRpYyB2
b2lkIF9ld2tfdmlld19pbml0aWFsaXplKEV2YXNfT2IKICAgICBwcml2LT5jb250ZXh0ID0gZXdr
X2NvbnRleHRfcmVmKGNvbnRleHQpOwogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQot
ICAgIHByaXYtPnZpZXdwb3J0SGFuZGxlciA9IEVmbFZpZXdwb3J0SGFuZGxlcjo6Y3JlYXRlKGV3
a1ZpZXcpOworICAgIHByaXYtPnZpZXdwb3J0SGFuZGxlciA9IFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmw6OmNyZWF0ZShld2tWaWV3KTsKKyAgICBwcml2LT5wYWdlVmlld3BvcnRDb250
cm9sbGVyID0gYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIocHJpdi0+cGFnZVBy
b3h5LmdldCgpLCBwcml2LT52aWV3cG9ydEhhbmRsZXIuZ2V0KCkpKTsKICNlbmRpZgogCiAgICAg
V0tQYWdlUmVmIHdrUGFnZSA9IHRvQVBJKHByaXYtPnBhZ2VQcm94eS5nZXQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169533</attachid>
            <date>2012-10-18 19:13:28 -0700</date>
            <delta_ts>2012-10-19 05:34:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>99101.patch</filename>
            <type>text/plain</type>
            <size>19481</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAxMzE4MzcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIs
NyBAQAogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcAog
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvQmF0dGVyeVByb3ZpZGVyLmNwcAotICAgIFVJUHJvY2Vz
cy9BUEkvZWZsL0VmbFZpZXdwb3J0SGFuZGxlci5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9Q
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L05ldHdvcmtJbmZvUHJvdmlkZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVu
dEltcGwuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvVmlicmF0aW9uUHJvdmlkZXIuY3BwCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FZmxWaWV3cG9ydEhhbmRsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VmbFZp
ZXdwb3J0SGFuZGxlci5jcHAJKHJldmlzaW9uIDEzMTgzNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0VmbFZpZXdwb3J0SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJv
bmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkVmbFZpZXdwb3J0SGFuZGxlci5oIgotCi0jaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQotCi0jaW5jbHVkZSAiTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIgotI2lu
Y2x1ZGUgIkxheWVyVHJlZVJlbmRlcmVyLmgiCi0jaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKLSNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotRWZsVmlld3BvcnRIYW5kbGVyOjpFZmxW
aWV3cG9ydEhhbmRsZXIoRXZhc19PYmplY3QqIHZpZXdXaWRnZXQpCi0gICAgOiBtX3ZpZXdXaWRn
ZXQodmlld1dpZGdldCkKLSAgICAsIG1fc2NhbGVGYWN0b3IoMSkKLXsKLSAgICBBU1NFUlQobV92
aWV3V2lkZ2V0KTsKLX0KLQotRWZsVmlld3BvcnRIYW5kbGVyOjp+RWZsVmlld3BvcnRIYW5kbGVy
KCkKLXsKLX0KLQotRHJhd2luZ0FyZWFQcm94eSogRWZsVmlld3BvcnRIYW5kbGVyOjpkcmF3aW5n
QXJlYSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGV3a192aWV3X3BhZ2VfZ2V0KG1fdmlld1dpZGdl
dCktPmRyYXdpbmdBcmVhKCk7Ci19Ci0KLXZvaWQgRWZsVmlld3BvcnRIYW5kbGVyOjpzZXRSZW5k
ZXJlckFjdGl2ZShib29sIGFjdGl2ZSkKLXsKLSAgICBkcmF3aW5nQXJlYSgpLT5sYXllclRyZWVD
b29yZGluYXRvclByb3h5KCktPmxheWVyVHJlZVJlbmRlcmVyKCktPnNldEFjdGl2ZShhY3RpdmUp
OwotfQotCi12b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6ZGlzcGxheShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBJbnRQb2ludCYgdmlld1Bvc2l0aW9uKQotewotICAgIFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKLSAgICBtYXRyaXguc2V0TWF0cml4KG1fc2NhbGVGYWN0
b3IsIDAsIDAsIG1fc2NhbGVGYWN0b3IsIC1tX3Zpc2libGVDb250ZW50UmVjdC54KCkgKyB2aWV3
UG9zaXRpb24ueCgpLCAtbV92aXNpYmxlQ29udGVudFJlY3QueSgpICsgdmlld1Bvc2l0aW9uLnko
KSk7Ci0KLSAgICBMYXllclRyZWVSZW5kZXJlciogcmVuZGVyZXIgPSBkcmF3aW5nQXJlYSgpLT5s
YXllclRyZWVDb29yZGluYXRvclByb3h5KCktPmxheWVyVHJlZVJlbmRlcmVyKCk7Ci0gICAgcmVu
ZGVyZXItPnNldEFjdGl2ZSh0cnVlKTsKLSAgICByZW5kZXJlci0+c3luY1JlbW90ZUNvbnRlbnQo
KTsKLSAgICBJbnRSZWN0IGNsaXBSZWN0KHJlY3QpOwotICAgIGNsaXBSZWN0Lm1vdmUodmlld1Bv
c2l0aW9uLngoKSwgdmlld1Bvc2l0aW9uLnkoKSk7Ci0gICAgcmVuZGVyZXItPnBhaW50VG9DdXJy
ZW50R0xDb250ZXh0KG1hdHJpeCwgMSwgY2xpcFJlY3QpOwotfQotCi12b2lkIEVmbFZpZXdwb3J0
SGFuZGxlcjo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkK
LXsKLSAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAgICBld2tfdmlld19wYWdl
X2dldChtX3ZpZXdXaWRnZXQpLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKLSAgICBz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KG1fdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCksIG1f
c2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7Ci19Ci0KLXZvaWQgRWZsVmlld3BvcnRIYW5kbGVy
OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFBvaW50JiBuZXdTY3JvbGxQb3NpdGlv
biwgZmxvYXQgbmV3U2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnkpCi17Ci0gICAg
bV9zY2FsZUZhY3RvciA9IG5ld1NjYWxlOwotICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0ID0gSW50
UmVjdChuZXdTY3JvbGxQb3NpdGlvbiwgbV92aWV3cG9ydFNpemUpOwotCi0gICAgLy8gTW92ZSB2
aXNpYmxlQ29udGVudFJlY3QgaW5zaWRlIGNvbnRlbnRzUmVjdCB3aGVuIHZpc2libGVDb250ZW50
UmVjdCBnb2VzIG91dHNpZGUgY29udGVudHNSZWN0LiAKLSAgICBJbnRTaXplIGNvbnRlbnRzU2l6
ZSA9IG1fY29udGVudHNTaXplOwotICAgIGNvbnRlbnRzU2l6ZS5zY2FsZShtX3NjYWxlRmFjdG9y
KTsKLSAgICBpZiAobV92aXNpYmxlQ29udGVudFJlY3QueCgpID4gY29udGVudHNTaXplLndpZHRo
KCkgLSBtX3Zpc2libGVDb250ZW50UmVjdC53aWR0aCgpKQotICAgICAgICBtX3Zpc2libGVDb250
ZW50UmVjdC5zZXRYKGNvbnRlbnRzU2l6ZS53aWR0aCgpIC0gbV92aXNpYmxlQ29udGVudFJlY3Qu
d2lkdGgoKSk7Ci0gICAgaWYgKG1fdmlzaWJsZUNvbnRlbnRSZWN0LngoKSA8IDApCi0gICAgICAg
IG1fdmlzaWJsZUNvbnRlbnRSZWN0LnNldFgoMCk7Ci0gICAgaWYgKG1fdmlzaWJsZUNvbnRlbnRS
ZWN0LnkoKSA+IGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSAtIG1fdmlzaWJsZUNvbnRlbnRSZWN0Lmhl
aWdodCgpKQotICAgICAgICBtX3Zpc2libGVDb250ZW50UmVjdC5zZXRZKGNvbnRlbnRzU2l6ZS5o
ZWlnaHQoKSAtIG1fdmlzaWJsZUNvbnRlbnRSZWN0LmhlaWdodCgpKTsKLSAgICBpZiAobV92aXNp
YmxlQ29udGVudFJlY3QueSgpIDwgMCkKLSAgICAgICAgbV92aXNpYmxlQ29udGVudFJlY3Quc2V0
WSgwKTsKLQotICAgIEZsb2F0UmVjdCBtYXBSZWN0VG9XZWJDb250ZW50ID0gbV92aXNpYmxlQ29u
dGVudFJlY3Q7Ci0gICAgbWFwUmVjdFRvV2ViQ29udGVudC5zY2FsZSgxIC8gbV9zY2FsZUZhY3Rv
cik7Ci0gICAgZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChlbmNsb3NpbmdJ
bnRSZWN0KG1hcFJlY3RUb1dlYkNvbnRlbnQpLCBtX3NjYWxlRmFjdG9yLCB0cmFqZWN0b3J5KTsK
LX0KLQotdm9pZCBFZmxWaWV3cG9ydEhhbmRsZXI6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQotewotICAgIG1fY29udGVudHNTaXplID0gc2l6ZTsK
LSAgICBzZXRWaXNpYmxlQ29udGVudHNSZWN0KG1fdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9u
KCksIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7Ci0gICAgZHJhd2luZ0FyZWEoKS0+bGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSgpLT5zZXRDb250ZW50c1NpemUoV2ViQ29yZTo6RmxvYXRT
aXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLSNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
ZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgJKHJldmlzaW9uIDEzMTc0NSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
ZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMjMgKzIzLDI0IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBFZmxWaWV3cG9ydEhhbmRsZXJfaAot
I2RlZmluZSBFZmxWaWV3cG9ydEhhbmRsZXJfaAorI2lmbmRlZiBQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsX2gKKyNkZWZpbmUgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbF9o
CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRlICJQYWdlQ2xpZW50
SW1wbC5oIgorI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgRWZs
Vmlld3BvcnRIYW5kbGVyIHsKK2NsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwg
OiBwdWJsaWMgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8RWZsVmlld3BvcnRIYW5kbGVyPiBjcmVhdGUoRXZhc19PYmplY3QqIHZp
ZXdXaWRnZXQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbD4gY3JlYXRlKEV2YXNfT2JqZWN0KiB2aWV3V2lkZ2V0KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBFZmxWaWV3cG9ydEhhbmRsZXIodmlld1dpZGdldCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwo
dmlld1dpZGdldCkpOwogICAgIH0KLSAgICB+RWZsVmlld3BvcnRIYW5kbGVyKCk7CisgICAgflBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwoKTsKIAogICAgIERyYXdpbmdBcmVhUHJveHkq
IGRyYXdpbmdBcmVhKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIHsg
cmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CkBAIC00NywxMCArNDgsMjAgQEAKICAgICB2b2lkIGRp
c3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHZpZXdQb3NpdGlvbik7CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgdmlld3BvcnRTaXplKTsKICAgICB2b2lkIHNldFZpc2libGVDb250ZW50
c1JlY3QoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBmbG9hdCwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYpOwotICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHNpemUpOwogICAgIHZvaWQgc2V0UmVuZGVyZXJBY3RpdmUoYm9vbCk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3BvcnRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiBjb250ZW50c1BvaW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShm
bG9hdCwgYm9vbCB0cmVhdEFzSW5pdGlhbFZhbHVlKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZXN1bWVDb250ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpc2li
bGVDb250ZW50cygpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0
ZXMoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXIqKTsKKwogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBFZmxWaWV3cG9ydEhhbmRsZXIoRXZh
c19PYmplY3QqKTsKKyAgICBleHBsaWNpdCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
KEV2YXNfT2JqZWN0Kik7CiAKICAgICBFdmFzX09iamVjdCogbV92aWV3V2lkZ2V0OwogICAgIFdl
YkNvcmU6OkludFJlY3QgbV92aXNpYmxlQ29udGVudFJlY3Q7CkBAIC02Myw0ICs3NCw0IEBACiAK
ICNlbmRpZgogCi0jZW5kaWYgLy8gRWZsVmlld3BvcnRIYW5kbGVyX2gKKyNlbmRpZiAvLyBQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDEzMTgzNykKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKICNpbmNs
dWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIK
KyNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUmVmUHRyRWZs
LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tDb2xvclBpY2tlclJlc3Vs
dExpc3RlbmVyLmgiCkBAIC03NSw3ICs3Niw3IEBACiAjZW5kaWYKIAogI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKLSNpbmNsdWRlICJFZmxWaWV3cG9ydEhhbmRsZXIuaCIKKyNpbmNsdWRl
ICJQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCiAjZW5kaWYKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKQEAgLTExNSw3ICsxMTYsNyBAQAogc3RydWN0IEV3a19WaWV3X1ByaXZh
dGVfRGF0YSB7CiAgICAgT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OwogI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICBPd25QdHI8RWZsVmlld3BvcnRIYW5kbGVyPiB2
aWV3cG9ydEhhbmRsZXI7CisgICAgT3duUHRyPFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
Zmw+IHBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQ7CiAjZW5kaWYKICAgICBSZWZQdHI8V2Vi
UGFnZVByb3h5PiBwYWdlUHJveHk7CiAKQEAgLTYyMyw3ICs2MjQsNyBAQAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5zZXRSZW5kZXJl
ckFjdGl2ZSh0cnVlKTsKKyAgICBwcml2LT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT5z
ZXRSZW5kZXJlckFjdGl2ZSh0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjY3LDcg
KzY2OCw3IEBACiAKICAgICBpZiAoc21hcnREYXRhLT5jaGFuZ2VkLnNpemUpIHsKICNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgICAgIHByaXYtPnZpZXdwb3J0SGFuZGxlci0+dXBk
YXRlVmlld3BvcnRTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpOworICAgICAgICBwcml2LT5w
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT51cGRhdGVWaWV3cG9ydFNpemUoSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KSk7CiAjZW5kaWYKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAgICAgICAgIG5lZWRzTmV3U3VyZmFjZSA9IHByaXYtPmV2YXNHbFN1cmZhY2U7CkBAIC04MjQs
NyArODI1LDcgQEAKICAgICBwcml2LT5jb250ZXh0ID0gZXdrX2NvbnRleHRfcmVmKGNvbnRleHQp
OwogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIHByaXYtPnZpZXdwb3J0SGFu
ZGxlciA9IEVmbFZpZXdwb3J0SGFuZGxlcjo6Y3JlYXRlKGV3a1ZpZXcpOworICAgIHByaXYtPnBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQgPSBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsOjpjcmVhdGUoZXdrVmlldyk7CiAjZW5kaWYKIAogICAgIFdLUGFnZVJlZiB3a1BhZ2UgPSB0
b0FQSShwcml2LT5wYWdlUHJveHkuZ2V0KCkpOwpAQCAtMTI5NSw3ICsxMjk2LDcgQEAKICAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKIAogICAgIGV2YXNf
Z2xfbWFrZV9jdXJyZW50KHByaXYtPmV2YXNHbCwgcHJpdi0+ZXZhc0dsU3VyZmFjZSwgcHJpdi0+
ZXZhc0dsQ29udGV4dCk7Ci0gICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaXNwbGF5KHJlY3Qs
IEludFBvaW50KHNtYXJ0RGF0YS0+dmlldy54LCBzbWFydERhdGEtPnZpZXcueSkpOworICAgIHBy
aXYtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPmRpc3BsYXkocmVjdCwgSW50UG9pbnQo
c21hcnREYXRhLT52aWV3LngsIHNtYXJ0RGF0YS0+dmlldy55KSk7CiAjZW5kaWYKIAogICAgIGV2
YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzbWFydERhdGEtPmltYWdlLCByZWN0Lngo
KSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CkBAIC0xNzMzLDcgKzE3
MzQsNyBAQAogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKIAot
ICAgIHByaXYtPnZpZXdwb3J0SGFuZGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOwor
ICAgIHByaXYtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPmRpZENoYW5nZUNvbnRlbnRz
U2l6ZShzaXplKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwogICAgIFVOVVNF
RF9QQVJBTShzaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwu
Y3BwCShyZXZpc2lvbiAxMzE3NDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJFZmxW
aWV3cG9ydEhhbmRsZXIuaCIKKyNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsLmgiCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKQEAgLTM3LDI4ICszNywy
OCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotRWZsVmlld3BvcnRIYW5kbGVyOjpFZmxWaWV3
cG9ydEhhbmRsZXIoRXZhc19PYmplY3QqIHZpZXdXaWRnZXQpCitQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsOjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0
KiB2aWV3V2lkZ2V0KQogICAgIDogbV92aWV3V2lkZ2V0KHZpZXdXaWRnZXQpCiAgICAgLCBtX3Nj
YWxlRmFjdG9yKDEpCiB7CiAgICAgQVNTRVJUKG1fdmlld1dpZGdldCk7CiB9CiAKLUVmbFZpZXdw
b3J0SGFuZGxlcjo6fkVmbFZpZXdwb3J0SGFuZGxlcigpCitQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsOjp+UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCgpCiB7CiB9CiAKLURy
YXdpbmdBcmVhUHJveHkqIEVmbFZpZXdwb3J0SGFuZGxlcjo6ZHJhd2luZ0FyZWEoKSBjb25zdAor
RHJhd2luZ0FyZWFQcm94eSogUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZHJhd2lu
Z0FyZWEoKSBjb25zdAogewogICAgIHJldHVybiBld2tfdmlld19wYWdlX2dldChtX3ZpZXdXaWRn
ZXQpLT5kcmF3aW5nQXJlYSgpOwogfQogCi12b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6c2V0UmVu
ZGVyZXJBY3RpdmUoYm9vbCBhY3RpdmUpCit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OnNldFJlbmRlcmVyQWN0aXZlKGJvb2wgYWN0aXZlKQogewogICAgIGRyYXdpbmdBcmVh
KCktPmxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+bGF5ZXJUcmVlUmVuZGVyZXIoKS0+c2V0
QWN0aXZlKGFjdGl2ZSk7CiB9CiAKLXZvaWQgRWZsVmlld3BvcnRIYW5kbGVyOjpkaXNwbGF5KGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFBvaW50JiB2aWV3UG9zaXRpb24pCit2b2lkIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpc3BsYXkoY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgSW50UG9pbnQmIHZpZXdQb3NpdGlvbikKIHsKICAgICBXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtYXRyaXg7CiAgICAgbWF0cml4LnNldE1hdHJpeChtX3NjYWxlRmFjdG9y
LCAwLCAwLCBtX3NjYWxlRmFjdG9yLCAtbV92aXNpYmxlQ29udGVudFJlY3QueCgpICsgdmlld1Bv
c2l0aW9uLngoKSwgLW1fdmlzaWJsZUNvbnRlbnRSZWN0LnkoKSArIHZpZXdQb3NpdGlvbi55KCkp
OwpAQCAtNzEsMTQgKzcxLDE0IEBACiAgICAgcmVuZGVyZXItPnBhaW50VG9DdXJyZW50R0xDb250
ZXh0KG1hdHJpeCwgMSwgY2xpcFJlY3QpOwogfQogCi12b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6
dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKK3ZvaWQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6
ZTsKICAgICBld2tfdmlld19wYWdlX2dldChtX3ZpZXdXaWRnZXQpLT5zZXRWaWV3cG9ydFNpemUo
dmlld3BvcnRTaXplKTsKICAgICBzZXRWaXNpYmxlQ29udGVudHNSZWN0KG1fdmlzaWJsZUNvbnRl
bnRSZWN0LmxvY2F0aW9uKCksIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7CiB9CiAKLXZv
aWQgRWZsVmlld3BvcnRIYW5kbGVyOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFBv
aW50JiBuZXdTY3JvbGxQb3NpdGlvbiwgZmxvYXQgbmV3U2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQm
IHRyYWplY3RvcnkpCit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZp
c2libGVDb250ZW50c1JlY3QoY29uc3QgSW50UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9uLCBmbG9h
dCBuZXdTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeSkKIHsKICAgICBtX3NjYWxl
RmFjdG9yID0gbmV3U2NhbGU7CiAgICAgbV92aXNpYmxlQ29udGVudFJlY3QgPSBJbnRSZWN0KG5l
d1Njcm9sbFBvc2l0aW9uLCBtX3ZpZXdwb3J0U2l6ZSk7CkBAIC0xMDAsMTMgKzEwMCwzNyBAQAog
ICAgIGRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250ZW50c1JlY3QoZW5jbG9zaW5nSW50UmVj
dChtYXBSZWN0VG9XZWJDb250ZW50KSwgbV9zY2FsZUZhY3RvciwgdHJhamVjdG9yeSk7CiB9CiAK
LXZvaWQgRWZsVmlld3BvcnRIYW5kbGVyOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgc2l6ZSkKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCiB7
CiAgICAgbV9jb250ZW50c1NpemUgPSBzaXplOwogICAgIHNldFZpc2libGVDb250ZW50c1JlY3Qo
bV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSwgbV9zY2FsZUZhY3RvciwgRmxvYXRQb2lu
dCgpKTsKICAgICBkcmF3aW5nQXJlYSgpLT5sYXllclRyZWVDb29yZGluYXRvclByb3h5KCktPnNl
dENvbnRlbnRzU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpKSk7CiB9CiAKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Vmll
d3BvcnRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiAvKmNvbnRlbnRzUG9pbnQq
LykKK3sKK30KKwordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRDb250
ZW50c1NjYWxlKGZsb2F0LCBib29sIC8qdHJlYXRBc0luaXRpYWxWYWx1ZSovKQoreworfQorCit2
b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZFJlc3VtZUNvbnRlbnQoKQor
eworfQorCit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5nZVZp
c2libGVDb250ZW50cygpCit7Cit9CisKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbDo6ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKCkKK3sKK30KKwordm9pZCBQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRDb250cm9sbGVyKFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXIqIHBhZ2VWaWV3cG9ydENvbnRyb2xsZXIpCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWZsVmlld3BvcnRIYW5kbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWZsVmlld3BvcnRIYW5kbGVy
LmgJKHJldmlzaW9uIDEzMTgzNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0VmbFZpZXdwb3J0SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBFZmxWaWV3cG9ydEhhbmRsZXJfaAotI2RlZmlu
ZSBFZmxWaWV3cG9ydEhhbmRsZXJfaAotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQot
Ci0jaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgRWZsVmlld3BvcnRIYW5kbGVyIHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxFZmxWaWV3cG9ydEhhbmRsZXI+IGNyZWF0ZShF
dmFzX09iamVjdCogdmlld1dpZGdldCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgRWZsVmlld3BvcnRIYW5kbGVyKHZpZXdXaWRnZXQpKTsKLSAgICB9Ci0gICAgfkVmbFZpZXdw
b3J0SGFuZGxlcigpOwotCi0gICAgRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEoKSBjb25z
dDsKLSAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgeyByZXR1cm4gbV92aWV3cG9ydFNp
emU7IH0KLQotICAgIHZvaWQgZGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uKTsKLSAgICB2b2lkIHVwZGF0ZVZp
ZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3cG9ydFNpemUpOwotICAgIHZv
aWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGZsb2F0
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50
c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7Ci0gICAgdm9pZCBzZXRSZW5kZXJl
ckFjdGl2ZShib29sKTsKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRWZsVmlld3BvcnRIYW5kbGVy
KEV2YXNfT2JqZWN0Kik7Ci0KLSAgICBFdmFzX09iamVjdCogbV92aWV3V2lkZ2V0OwotICAgIFdl
YkNvcmU6OkludFJlY3QgbV92aXNpYmxlQ29udGVudFJlY3Q7Ci0gICAgV2ViQ29yZTo6SW50U2l6
ZSBtX2NvbnRlbnRzU2l6ZTsKLSAgICBXZWJDb3JlOjpJbnRTaXplIG1fdmlld3BvcnRTaXplOwot
ICAgIGZsb2F0IG1fc2NhbGVGYWN0b3I7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmCi0KLSNlbmRpZiAvLyBFZmxWaWV3cG9ydEhhbmRsZXJfaApJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMTMxODM3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTItMTAtMTggIFlhZWwgQWhhcm9uICA8eWFlbC5haGFy
b25AaW50ZWwuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gUmVuYW1lIEVmbFZpZXdwb3J0SGFu
ZGxlciB0byBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTEwMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBFRmxWaWV3cG9ydEhhbmRsZXIg
dG8gUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC4KKyAgICAgICAgQWxzbywgbWFrZSBp
dCBpbmhlcml0IGZyb20gUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC4gVGhlIGFjdHVhbCBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBvZiBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50IGZv
ciBFZmwgcG9ydCB3aWxsIGNvbWUgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KKworICAgICAgICAqIFBs
YXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VmbFZpZXdwb3J0
SGFuZGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRWZsVmll
d3BvcnRIYW5kbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VmbFZpZXdwb3J0SGFuZGxlci5jcHAuCisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OlBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsOjp+UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRyYXdpbmdBcmVhKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0UmVuZGVy
ZXJBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsOjpkaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbDo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5nZUNvbnRl
bnRzU2l6ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Q29udGVudHNTY2FsZSk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZFJl
c3VtZUNvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsOjpkaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWZs
Vmlld3BvcnRIYW5kbGVyLmguCisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmw6OmNyZWF0ZSk6CisgICAgICAgIChQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAg
ICAgIChFd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X2luaXRpYWxp
emUpOgorICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfc2V0KToKKwogMjAxMi0xMC0xOCAgQ2hyaXMg
RmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBDcmFzaGVzIGlu
IFdlYlByb2Nlc3MgYXQgY29tLmFwcGxlLldlYkNvcmU6IC1bQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgcmVtb3RlQWNjZXNzaWJpbGl0eVBhcmVudE9iamVjdF0gKyA3OAo=
</data>
<flag name="review"
          id="182873"
          type_id="1"
          status="+"
          setter="gyuyoung.kim"
    />
    <flag name="commit-queue"
          id="182874"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169603</attachid>
            <date>2012-10-19 05:34:32 -0700</date>
            <delta_ts>2012-10-19 06:07:22 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>99101.patch</filename>
            <type>text/plain</type>
            <size>19446</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VmbFZpZXdwb3J0SGFuZGxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VmbFZp
ZXdwb3J0SGFuZGxlci5oCShyZXZpc2lvbiAxMzE4ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9FZmxWaWV3cG9ydEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRWZsVmlld3BvcnRIYW5k
bGVyX2gKLSNkZWZpbmUgRWZsVmlld3BvcnRIYW5kbGVyX2gKLQotI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKLQotI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIEVmbFZpZXdwb3J0
SGFuZGxlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RWZsVmlld3BvcnRIYW5k
bGVyPiBjcmVhdGUoRXZhc19PYmplY3QqIHZpZXdXaWRnZXQpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEVmbFZpZXdwb3J0SGFuZGxlcih2aWV3V2lkZ2V0KSk7Ci0gICAgfQot
ICAgIH5FZmxWaWV3cG9ydEhhbmRsZXIoKTsKLQotICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdp
bmdBcmVhKCkgY29uc3Q7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIHsgcmV0dXJu
IG1fdmlld3BvcnRTaXplOyB9Ci0KLSAgICB2b2lkIGRpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHZpZXdQb3NpdGlvbik7Ci0gICAg
dm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld3BvcnRT
aXplKTsKLSAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBmbG9hdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwotICAgIHZvaWQgZGlk
Q2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOwotICAgIHZv
aWQgc2V0UmVuZGVyZXJBY3RpdmUoYm9vbCk7Ci1wcml2YXRlOgotICAgIGV4cGxpY2l0IEVmbFZp
ZXdwb3J0SGFuZGxlcihFdmFzX09iamVjdCopOwotCi0gICAgRXZhc19PYmplY3QqIG1fdmlld1dp
ZGdldDsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IG1fdmlzaWJsZUNvbnRlbnRSZWN0OwotICAgIFdl
YkNvcmU6OkludFNpemUgbV9jb250ZW50c1NpemU7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBtX3Zp
ZXdwb3J0U2l6ZTsKLSAgICBmbG9hdCBtX3NjYWxlRmFjdG9yOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gRWZsVmlld3BvcnRIYW5kbGVyX2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VmbFZpZXdwb3J0SGFuZGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWZsVmll
d3BvcnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMTMxODg3KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRWZsVmlld3BvcnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiRWZsVmlld3BvcnRIYW5kbGVyLmgiCi0KLSNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCi0KLSNpbmNsdWRlICJMYXllclRyZWVDb29yZGluYXRvclByb3h5LmgiCi0jaW5j
bHVkZSAiTGF5ZXJUcmVlUmVuZGVyZXIuaCIKLSNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oIgotI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1FZmxWaWV3cG9ydEhhbmRsZXI6OkVmbFZp
ZXdwb3J0SGFuZGxlcihFdmFzX09iamVjdCogdmlld1dpZGdldCkKLSAgICA6IG1fdmlld1dpZGdl
dCh2aWV3V2lkZ2V0KQotICAgICwgbV9zY2FsZUZhY3RvcigxKQotewotICAgIEFTU0VSVChtX3Zp
ZXdXaWRnZXQpOwotfQotCi1FZmxWaWV3cG9ydEhhbmRsZXI6On5FZmxWaWV3cG9ydEhhbmRsZXIo
KQotewotfQotCi1EcmF3aW5nQXJlYVByb3h5KiBFZmxWaWV3cG9ydEhhbmRsZXI6OmRyYXdpbmdB
cmVhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZXdrX3ZpZXdfcGFnZV9nZXQobV92aWV3V2lkZ2V0
KS0+ZHJhd2luZ0FyZWEoKTsKLX0KLQotdm9pZCBFZmxWaWV3cG9ydEhhbmRsZXI6OnNldFJlbmRl
cmVyQWN0aXZlKGJvb2wgYWN0aXZlKQotewotICAgIGRyYXdpbmdBcmVhKCktPmxheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHkoKS0+bGF5ZXJUcmVlUmVuZGVyZXIoKS0+c2V0QWN0aXZlKGFjdGl2ZSk7
Ci19Ci0KLXZvaWQgRWZsVmlld3BvcnRIYW5kbGVyOjpkaXNwbGF5KGNvbnN0IEludFJlY3QmIHJl
Y3QsIGNvbnN0IEludFBvaW50JiB2aWV3UG9zaXRpb24pCi17Ci0gICAgV2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXggbWF0cml4OwotICAgIG1hdHJpeC5zZXRNYXRyaXgobV9zY2FsZUZhY3Rv
ciwgMCwgMCwgbV9zY2FsZUZhY3RvciwgLW1fdmlzaWJsZUNvbnRlbnRSZWN0LngoKSArIHZpZXdQ
b3NpdGlvbi54KCksIC1tX3Zpc2libGVDb250ZW50UmVjdC55KCkgKyB2aWV3UG9zaXRpb24ueSgp
KTsKLQotICAgIExheWVyVHJlZVJlbmRlcmVyKiByZW5kZXJlciA9IGRyYXdpbmdBcmVhKCktPmxh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+bGF5ZXJUcmVlUmVuZGVyZXIoKTsKLSAgICByZW5k
ZXJlci0+c2V0QWN0aXZlKHRydWUpOwotICAgIHJlbmRlcmVyLT5zeW5jUmVtb3RlQ29udGVudCgp
OwotICAgIEludFJlY3QgY2xpcFJlY3QocmVjdCk7Ci0gICAgY2xpcFJlY3QubW92ZSh2aWV3UG9z
aXRpb24ueCgpLCB2aWV3UG9zaXRpb24ueSgpKTsKLSAgICByZW5kZXJlci0+cGFpbnRUb0N1cnJl
bnRHTENvbnRleHQobWF0cml4LCAxLCBjbGlwUmVjdCk7Ci19Ci0KLXZvaWQgRWZsVmlld3BvcnRI
YW5kbGVyOjp1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQot
ewotICAgIG1fdmlld3BvcnRTaXplID0gdmlld3BvcnRTaXplOwotICAgIGV3a192aWV3X3BhZ2Vf
Z2V0KG1fdmlld1dpZGdldCktPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOwotICAgIHNl
dFZpc2libGVDb250ZW50c1JlY3QobV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSwgbV9z
Y2FsZUZhY3RvciwgRmxvYXRQb2ludCgpKTsKLX0KLQotdm9pZCBFZmxWaWV3cG9ydEhhbmRsZXI6
OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgSW50UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9u
LCBmbG9hdCBuZXdTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeSkKLXsKLSAgICBt
X3NjYWxlRmFjdG9yID0gbmV3U2NhbGU7Ci0gICAgbV92aXNpYmxlQ29udGVudFJlY3QgPSBJbnRS
ZWN0KG5ld1Njcm9sbFBvc2l0aW9uLCBtX3ZpZXdwb3J0U2l6ZSk7Ci0KLSAgICAvLyBNb3ZlIHZp
c2libGVDb250ZW50UmVjdCBpbnNpZGUgY29udGVudHNSZWN0IHdoZW4gdmlzaWJsZUNvbnRlbnRS
ZWN0IGdvZXMgb3V0c2lkZSBjb250ZW50c1JlY3QuIAotICAgIEludFNpemUgY29udGVudHNTaXpl
ID0gbV9jb250ZW50c1NpemU7Ci0gICAgY29udGVudHNTaXplLnNjYWxlKG1fc2NhbGVGYWN0b3Ip
OwotICAgIGlmIChtX3Zpc2libGVDb250ZW50UmVjdC54KCkgPiBjb250ZW50c1NpemUud2lkdGgo
KSAtIG1fdmlzaWJsZUNvbnRlbnRSZWN0LndpZHRoKCkpCi0gICAgICAgIG1fdmlzaWJsZUNvbnRl
bnRSZWN0LnNldFgoY29udGVudHNTaXplLndpZHRoKCkgLSBtX3Zpc2libGVDb250ZW50UmVjdC53
aWR0aCgpKTsKLSAgICBpZiAobV92aXNpYmxlQ29udGVudFJlY3QueCgpIDwgMCkKLSAgICAgICAg
bV92aXNpYmxlQ29udGVudFJlY3Quc2V0WCgwKTsKLSAgICBpZiAobV92aXNpYmxlQ29udGVudFJl
Y3QueSgpID4gY29udGVudHNTaXplLmhlaWdodCgpIC0gbV92aXNpYmxlQ29udGVudFJlY3QuaGVp
Z2h0KCkpCi0gICAgICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0LnNldFkoY29udGVudHNTaXplLmhl
aWdodCgpIC0gbV92aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCkpOwotICAgIGlmIChtX3Zpc2li
bGVDb250ZW50UmVjdC55KCkgPCAwKQotICAgICAgICBtX3Zpc2libGVDb250ZW50UmVjdC5zZXRZ
KDApOwotCi0gICAgRmxvYXRSZWN0IG1hcFJlY3RUb1dlYkNvbnRlbnQgPSBtX3Zpc2libGVDb250
ZW50UmVjdDsKLSAgICBtYXBSZWN0VG9XZWJDb250ZW50LnNjYWxlKDEgLyBtX3NjYWxlRmFjdG9y
KTsKLSAgICBkcmF3aW5nQXJlYSgpLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KGVuY2xvc2luZ0lu
dFJlY3QobWFwUmVjdFRvV2ViQ29udGVudCksIG1fc2NhbGVGYWN0b3IsIHRyYWplY3RvcnkpOwot
fQotCi12b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHNpemUpCi17Ci0gICAgbV9jb250ZW50c1NpemUgPSBzaXplOwot
ICAgIHNldFZpc2libGVDb250ZW50c1JlY3QobV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24o
KSwgbV9zY2FsZUZhY3RvciwgRmxvYXRQb2ludCgpKTsKLSAgICBkcmF3aW5nQXJlYSgpLT5sYXll
clRyZWVDb29yZGluYXRvclByb3h5KCktPnNldENvbnRlbnRzU2l6ZShXZWJDb3JlOjpGbG9hdFNp
emUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaAkocmV2aXNpb24gMTMxNzQ1KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywyMyArMjMsMjQgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEVmbFZpZXdwb3J0SGFuZGxlcl9oCi0j
ZGVmaW5lIEVmbFZpZXdwb3J0SGFuZGxlcl9oCisjaWZuZGVmIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmxfaAorI2RlZmluZSBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsX2gK
IAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2luY2x1ZGUgIlBhZ2VDbGllbnRJ
bXBsLmgiCisjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBFZmxW
aWV3cG9ydEhhbmRsZXIgeworY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCA6
IHB1YmxpYyBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxFZmxWaWV3cG9ydEhhbmRsZXI+IGNyZWF0ZShFdmFzX09iamVjdCogdmll
d1dpZGdldCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsPiBjcmVhdGUoRXZhc19PYmplY3QqIHZpZXdXaWRnZXQpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEVmbFZpZXdwb3J0SGFuZGxlcih2aWV3V2lkZ2V0KSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCh2
aWV3V2lkZ2V0KSk7CiAgICAgfQotICAgIH5FZmxWaWV3cG9ydEhhbmRsZXIoKTsKKyAgICB+UGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCgpOwogCiAgICAgRHJhd2luZ0FyZWFQcm94eSog
ZHJhd2luZ0FyZWEoKSBjb25zdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgeyBy
ZXR1cm4gbV92aWV3cG9ydFNpemU7IH0KQEAgLTQ3LDEwICs0OCwyMCBAQAogICAgIHZvaWQgZGlz
cGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgdmlld1Bvc2l0aW9uKTsKICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiB2aWV3cG9ydFNpemUpOwogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGZsb2F0LCBjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50Jik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2l6ZSk7CiAgICAgdm9pZCBzZXRSZW5kZXJlckFjdGl2ZShib29sKTsKKworICAg
IHZpcnR1YWwgdm9pZCBzZXRWaWV3cG9ydFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmIGNvbnRlbnRzUG9pbnQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZs
b2F0LCBib29sIHRyZWF0QXNJbml0aWFsVmFsdWUpOworCisgICAgdmlydHVhbCB2b2lkIGRpZFJl
c3VtZUNvbnRlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlzaWJs
ZUNvbnRlbnRzKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRl
cygpOworCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIoUGFnZVZpZXdwb3J0Q29udHJv
bGxlciopOworCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEVmbFZpZXdwb3J0SGFuZGxlcihFdmFz
X09iamVjdCopOworICAgIGV4cGxpY2l0IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwo
RXZhc19PYmplY3QqKTsKIAogICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXdXaWRnZXQ7CiAgICAgV2Vi
Q29yZTo6SW50UmVjdCBtX3Zpc2libGVDb250ZW50UmVjdDsKQEAgLTYzLDQgKzc0LDQgQEAKIAog
I2VuZGlmCiAKLSNlbmRpZiAvLyBFZmxWaWV3cG9ydEhhbmRsZXJfaAorI2VuZGlmIC8vIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmxfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAkocmV2aXNpb24gMTMxODg3KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgogI2luY2x1
ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgor
I2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJSZWZQdHJFZmwu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0NvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXIuaCIKQEAgLTc1LDcgKzc2LDcgQEAKICNlbmRpZgogCiAjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQotI2luY2x1ZGUgIkVmbFZpZXdwb3J0SGFuZGxlci5oIgorI2luY2x1ZGUg
IlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaCIKICNlbmRpZgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwpAQCAtMTE1LDcgKzExNiw3IEBACiBzdHJ1Y3QgRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhIHsKICAgICBPd25QdHI8UGFnZUNsaWVudEltcGw+IHBhZ2VDbGllbnQ7CiAjaWYgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIE93blB0cjxFZmxWaWV3cG9ydEhhbmRsZXI+IHZp
ZXdwb3J0SGFuZGxlcjsKKyAgICBPd25QdHI8UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bD4gcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudDsKICNlbmRpZgogICAgIFJlZlB0cjxXZWJQ
YWdlUHJveHk+IHBhZ2VQcm94eTsKIApAQCAtNjIzLDcgKzYyNCw3IEBACiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBwcml2LT52aWV3cG9ydEhhbmRsZXItPnNldFJlbmRlcmVy
QWN0aXZlKHRydWUpOworICAgIHByaXYtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNl
dFJlbmRlcmVyQWN0aXZlKHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02NjcsNyAr
NjY4LDcgQEAKIAogICAgIGlmIChzbWFydERhdGEtPmNoYW5nZWQuc2l6ZSkgewogI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKLSAgICAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT51cGRh
dGVWaWV3cG9ydFNpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CisgICAgICAgIHByaXYtPnBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnVwZGF0ZVZpZXdwb3J0U2l6ZShJbnRTaXplKHdp
ZHRoLCBoZWlnaHQpKTsKICNlbmRpZgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ICAgICAgICAgbmVlZHNOZXdTdXJmYWNlID0gcHJpdi0+ZXZhc0dsU3VyZmFjZTsKQEAgLTgyNCw3
ICs4MjUsNyBAQAogICAgIHByaXYtPmNvbnRleHQgPSBld2tfY29udGV4dF9yZWYoY29udGV4dCk7
CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgcHJpdi0+dmlld3BvcnRIYW5k
bGVyID0gRWZsVmlld3BvcnRIYW5kbGVyOjpjcmVhdGUoZXdrVmlldyk7CisgICAgcHJpdi0+cGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCA9IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
Zmw6OmNyZWF0ZShld2tWaWV3KTsKICNlbmRpZgogCiAgICAgV0tQYWdlUmVmIHdrUGFnZSA9IHRv
QVBJKHByaXYtPnBhZ2VQcm94eS5nZXQoKSk7CkBAIC0xMjk1LDcgKzEyOTYsNyBAQAogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwogCiAgICAgZXZhc19n
bF9tYWtlX2N1cnJlbnQocHJpdi0+ZXZhc0dsLCBwcml2LT5ldmFzR2xTdXJmYWNlLCBwcml2LT5l
dmFzR2xDb250ZXh0KTsKLSAgICBwcml2LT52aWV3cG9ydEhhbmRsZXItPmRpc3BsYXkocmVjdCwg
SW50UG9pbnQoc21hcnREYXRhLT52aWV3LngsIHNtYXJ0RGF0YS0+dmlldy55KSk7CisgICAgcHJp
di0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlzcGxheShyZWN0LCBJbnRQb2ludChz
bWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3LnkpKTsKICNlbmRpZgogCiAgICAgZXZh
c19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkKHNtYXJ0RGF0YS0+aW1hZ2UsIHJlY3QueCgp
LCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKQEAgLTE3MzMsNyArMTcz
NCw3IEBACiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEp
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwogCi0g
ICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7Cisg
ICAgcHJpdi0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlkQ2hhbmdlQ29udGVudHNT
aXplKHNpemUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7CiAgICAgVU5VU0VE
X1BBUkFNKHNpemUpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5j
cHAJKHJldmlzaW9uIDEzMTc0NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVmbFZp
ZXdwb3J0SGFuZGxlci5oIgorI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
ZmwuaCIKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIApAQCAtMzcsMjggKzM3LDI4
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1FZmxWaWV3cG9ydEhhbmRsZXI6OkVmbFZpZXdw
b3J0SGFuZGxlcihFdmFzX09iamVjdCogdmlld1dpZGdldCkKK1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmw6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwoRXZhc19PYmplY3Qq
IHZpZXdXaWRnZXQpCiAgICAgOiBtX3ZpZXdXaWRnZXQodmlld1dpZGdldCkKICAgICAsIG1fc2Nh
bGVGYWN0b3IoMSkKIHsKICAgICBBU1NFUlQobV92aWV3V2lkZ2V0KTsKIH0KIAotRWZsVmlld3Bv
cnRIYW5kbGVyOjp+RWZsVmlld3BvcnRIYW5kbGVyKCkKK1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmw6On5QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKCkKIHsKIH0KIAotRHJh
d2luZ0FyZWFQcm94eSogRWZsVmlld3BvcnRIYW5kbGVyOjpkcmF3aW5nQXJlYSgpIGNvbnN0CitE
cmF3aW5nQXJlYVByb3h5KiBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkcmF3aW5n
QXJlYSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGV3a192aWV3X3BhZ2VfZ2V0KG1fdmlld1dpZGdl
dCktPmRyYXdpbmdBcmVhKCk7CiB9CiAKLXZvaWQgRWZsVmlld3BvcnRIYW5kbGVyOjpzZXRSZW5k
ZXJlckFjdGl2ZShib29sIGFjdGl2ZSkKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbDo6c2V0UmVuZGVyZXJBY3RpdmUoYm9vbCBhY3RpdmUpCiB7CiAgICAgZHJhd2luZ0FyZWEo
KS0+bGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSgpLT5sYXllclRyZWVSZW5kZXJlcigpLT5zZXRB
Y3RpdmUoYWN0aXZlKTsKIH0KIAotdm9pZCBFZmxWaWV3cG9ydEhhbmRsZXI6OmRpc3BsYXkoY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UG9pbnQmIHZpZXdQb3NpdGlvbikKK3ZvaWQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0
LCBjb25zdCBJbnRQb2ludCYgdmlld1Bvc2l0aW9uKQogewogICAgIFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4IG1hdHJpeDsKICAgICBtYXRyaXguc2V0TWF0cml4KG1fc2NhbGVGYWN0b3Is
IDAsIDAsIG1fc2NhbGVGYWN0b3IsIC1tX3Zpc2libGVDb250ZW50UmVjdC54KCkgKyB2aWV3UG9z
aXRpb24ueCgpLCAtbV92aXNpYmxlQ29udGVudFJlY3QueSgpICsgdmlld1Bvc2l0aW9uLnkoKSk7
CkBAIC03MSwxNCArNzEsMTQgQEAKICAgICByZW5kZXJlci0+cGFpbnRUb0N1cnJlbnRHTENvbnRl
eHQobWF0cml4LCAxLCBjbGlwUmVjdCk7CiB9CiAKLXZvaWQgRWZsVmlld3BvcnRIYW5kbGVyOjp1
cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQordm9pZCBQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjp1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgSW50
U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIG1fdmlld3BvcnRTaXplID0gdmlld3BvcnRTaXpl
OwogICAgIGV3a192aWV3X3BhZ2VfZ2V0KG1fdmlld1dpZGdldCktPnNldFZpZXdwb3J0U2l6ZSh2
aWV3cG9ydFNpemUpOwogICAgIHNldFZpc2libGVDb250ZW50c1JlY3QobV92aXNpYmxlQ29udGVu
dFJlY3QubG9jYXRpb24oKSwgbV9zY2FsZUZhY3RvciwgRmxvYXRQb2ludCgpKTsKIH0KIAotdm9p
ZCBFZmxWaWV3cG9ydEhhbmRsZXI6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgSW50UG9p
bnQmIG5ld1Njcm9sbFBvc2l0aW9uLCBmbG9hdCBuZXdTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYg
dHJhamVjdG9yeSkKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Vmlz
aWJsZUNvbnRlbnRzUmVjdChjb25zdCBJbnRQb2ludCYgbmV3U2Nyb2xsUG9zaXRpb24sIGZsb2F0
IG5ld1NjYWxlLCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5KQogewogICAgIG1fc2NhbGVG
YWN0b3IgPSBuZXdTY2FsZTsKICAgICBtX3Zpc2libGVDb250ZW50UmVjdCA9IEludFJlY3QobmV3
U2Nyb2xsUG9zaXRpb24sIG1fdmlld3BvcnRTaXplKTsKQEAgLTEwMCwxMyArMTAwLDM3IEBACiAg
ICAgZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChlbmNsb3NpbmdJbnRSZWN0
KG1hcFJlY3RUb1dlYkNvbnRlbnQpLCBtX3NjYWxlRmFjdG9yLCB0cmFqZWN0b3J5KTsKIH0KIAot
dm9pZCBFZmxWaWV3cG9ydEhhbmRsZXI6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBzaXplKQordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKIHsK
ICAgICBtX2NvbnRlbnRzU2l6ZSA9IHNpemU7CiAgICAgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdCht
X3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpLCBtX3NjYWxlRmFjdG9yLCBGbG9hdFBvaW50
KCkpOwogICAgIGRyYXdpbmdBcmVhKCktPmxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+c2V0
Q29udGVudHNTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCkpKTsKIH0KIAordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3
cG9ydFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIC8qY29udGVudHNQb2ludCov
KQoreworfQorCit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldENvbnRl
bnRzU2NhbGUoZmxvYXQsIGJvb2wgLyp0cmVhdEFzSW5pdGlhbFZhbHVlKi8pCit7Cit9CisKK3Zv
aWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkUmVzdW1lQ29udGVudCgpCit7
Cit9CisKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlz
aWJsZUNvbnRlbnRzKCkKK3sKK30KKwordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoKQoreworfQorCit2b2lkIFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldENvbnRyb2xsZXIoUGFnZVZpZXdwb3J0Q29udHJv
bGxlciogcGFnZVZpZXdwb3J0Q29udHJvbGxlcikKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzE4ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0MCBAQAorMjAxMi0xMC0xOCAgWWFlbCBBaGFyb24gIDx5YWVsLmFo
YXJvbkBpbnRlbC5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBSZW5hbWUgRWZsVmlld3BvcnRI
YW5kbGVyIHRvIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MTAxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgR3l1eW91bmcgS2ltLgorCisgICAgICAgIFJlbmFtZSBFRmxWaWV3cG9ydEhhbmRsZXIg
dG8gUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC4KKyAgICAgICAgQWxzbywgbWFrZSBp
dCBpbmhlcml0IGZyb20gUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC4gVGhlIGFjdHVhbCBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBvZiBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50IGZv
ciBFZmwgcG9ydCB3aWxsIGNvbWUgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KKworICAgICAgICAqIFBs
YXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VmbFZpZXdwb3J0
SGFuZGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRWZsVmll
d3BvcnRIYW5kbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VmbFZpZXdwb3J0SGFuZGxlci5jcHAuCisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OlBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsOjp+UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRyYXdpbmdBcmVhKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0UmVuZGVy
ZXJBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsOjpkaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbDo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5nZUNvbnRl
bnRzU2l6ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Q29udGVudHNTY2FsZSk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZFJl
c3VtZUNvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsOjpkaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWZs
Vmlld3BvcnRIYW5kbGVyLmguCisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmw6OmNyZWF0ZSk6CisgICAgICAgIChQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAg
ICAgIChFd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X2luaXRpYWxp
emUpOgorICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfc2V0KToKKwogMjAxMi0xMC0xOSAgQ3NhYmEg
T3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjEz
MTg0NCk6IEl0IGJyb2tlIHRoZSBidWlsZCBvbiAhRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
IHBsYXRmb3JtcwpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDEzMTg4
NykKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw3ICs0Miw3IEBACiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1h
bmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9CYXR0ZXJ5UHJvdmlkZXIuY3BwCi0g
ICAgVUlQcm9jZXNzL0FQSS9lZmwvRWZsVmlld3BvcnRIYW5kbGVyLmNwcAorICAgIFVJUHJvY2Vz
cy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvTmV0d29ya0luZm9Qcm92aWRlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9WaWJyYXRpb25Qcm92
aWRlci5jcHAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169606</attachid>
            <date>2012-10-19 06:07:22 -0700</date>
            <delta_ts>2012-10-21 03:14:07 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>99101.patch</filename>
            <type>text/plain</type>
            <size>27747</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTg4NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTEwLTE4ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIFJlbmFt
ZSBFZmxWaWV3cG9ydEhhbmRsZXIgdG8gUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkxMDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCisKKyAgICAgICAgUmVuYW1lIEVGbFZp
ZXdwb3J0SGFuZGxlciB0byBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLgorICAgICAg
ICBBbHNvLCBtYWtlIGl0IGluaGVyaXQgZnJvbSBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
LiBUaGUgYWN0dWFsIGltcGxlbWVudGF0aW9uCisgICAgICAgIG9mIFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnQgZm9yIEVmbCBwb3J0IHdpbGwgY29tZSBpbiBhIHNlcGFyYXRlIHBhdGNoLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRWZsVmlld3BvcnRIYW5kbGVyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FZmxWaWV3cG9ydEhhbmRsZXIuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRWZsVmlld3BvcnRIYW5kbGVyLmNwcC4KKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6On5QYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRSZW5kZXJlckFjdGl2ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpc3BsYXkpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjp1cGRhdGVW
aWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OnNldFZpZXdwb3J0UG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkUmVzdW1lQ29udGVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5n
ZVZpc2libGVDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmw6OmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldENvbnRyb2xsZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWZsVmlld3Bv
cnRIYW5kbGVyLmguCisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OmNyZWF0ZSk6CisgICAgICAgIChQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChF
d2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X2luaXRpYWxpemUpOgor
ICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfc2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZVZp
ZXdwb3J0Q29udHJvbGxlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENv
bnRyb2xsZXIuaDoKKwogMjAxMi0xMC0xOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjEzMTg0NCk6IEl0IGJyb2tlIHRoZSBidWls
ZCBvbiAhRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpIHBsYXRmb3JtcwpJbmRleDogU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDEzMTg4NykKKysrIFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIExJU1QoQVBQ
RU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVl
c3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvQmF0dGVyeVByb3ZpZGVyLmNw
cAotICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0VmbFZpZXdwb3J0SGFuZGxlci5jcHAKKyAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL05ldHdvcmtJbmZvUHJvdmlkZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQ
SS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvVmlicmF0aW9u
UHJvdmlkZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FZmxW
aWV3cG9ydEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0VmbFZpZXdwb3J0SGFuZGxlci5jcHAJKHJldmlzaW9uIDEzMTg4NykKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VmbFZpZXdwb3J0SGFuZGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVmbFZpZXdwb3J0SGFuZGxlci5oIgotCi0jaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotCi0jaW5jbHVkZSAiTGF5ZXJUcmVlQ29vcmRpbmF0
b3JQcm94eS5oIgotI2luY2x1ZGUgIkxheWVyVHJlZVJlbmRlcmVyLmgiCi0jaW5jbHVkZSAiVHJh
bnNmb3JtYXRpb25NYXRyaXguaCIKLSNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotRWZsVmlld3Bv
cnRIYW5kbGVyOjpFZmxWaWV3cG9ydEhhbmRsZXIoRXZhc19PYmplY3QqIHZpZXdXaWRnZXQpCi0g
ICAgOiBtX3ZpZXdXaWRnZXQodmlld1dpZGdldCkKLSAgICAsIG1fc2NhbGVGYWN0b3IoMSkKLXsK
LSAgICBBU1NFUlQobV92aWV3V2lkZ2V0KTsKLX0KLQotRWZsVmlld3BvcnRIYW5kbGVyOjp+RWZs
Vmlld3BvcnRIYW5kbGVyKCkKLXsKLX0KLQotRHJhd2luZ0FyZWFQcm94eSogRWZsVmlld3BvcnRI
YW5kbGVyOjpkcmF3aW5nQXJlYSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGV3a192aWV3X3BhZ2Vf
Z2V0KG1fdmlld1dpZGdldCktPmRyYXdpbmdBcmVhKCk7Ci19Ci0KLXZvaWQgRWZsVmlld3BvcnRI
YW5kbGVyOjpzZXRSZW5kZXJlckFjdGl2ZShib29sIGFjdGl2ZSkKLXsKLSAgICBkcmF3aW5nQXJl
YSgpLT5sYXllclRyZWVDb29yZGluYXRvclByb3h5KCktPmxheWVyVHJlZVJlbmRlcmVyKCktPnNl
dEFjdGl2ZShhY3RpdmUpOwotfQotCi12b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6ZGlzcGxheShj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRQb2ludCYgdmlld1Bvc2l0aW9uKQotewotICAg
IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKLSAgICBtYXRyaXguc2V0TWF0
cml4KG1fc2NhbGVGYWN0b3IsIDAsIDAsIG1fc2NhbGVGYWN0b3IsIC1tX3Zpc2libGVDb250ZW50
UmVjdC54KCkgKyB2aWV3UG9zaXRpb24ueCgpLCAtbV92aXNpYmxlQ29udGVudFJlY3QueSgpICsg
dmlld1Bvc2l0aW9uLnkoKSk7Ci0KLSAgICBMYXllclRyZWVSZW5kZXJlciogcmVuZGVyZXIgPSBk
cmF3aW5nQXJlYSgpLT5sYXllclRyZWVDb29yZGluYXRvclByb3h5KCktPmxheWVyVHJlZVJlbmRl
cmVyKCk7Ci0gICAgcmVuZGVyZXItPnNldEFjdGl2ZSh0cnVlKTsKLSAgICByZW5kZXJlci0+c3lu
Y1JlbW90ZUNvbnRlbnQoKTsKLSAgICBJbnRSZWN0IGNsaXBSZWN0KHJlY3QpOwotICAgIGNsaXBS
ZWN0Lm1vdmUodmlld1Bvc2l0aW9uLngoKSwgdmlld1Bvc2l0aW9uLnkoKSk7Ci0gICAgcmVuZGVy
ZXItPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KG1hdHJpeCwgMSwgY2xpcFJlY3QpOwotfQotCi12
b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IEludFNpemUm
IHZpZXdwb3J0U2l6ZSkKLXsKLSAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAg
ICBld2tfdmlld19wYWdlX2dldChtX3ZpZXdXaWRnZXQpLT5zZXRWaWV3cG9ydFNpemUodmlld3Bv
cnRTaXplKTsKLSAgICBzZXRWaXNpYmxlQ29udGVudHNSZWN0KG1fdmlzaWJsZUNvbnRlbnRSZWN0
LmxvY2F0aW9uKCksIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7Ci19Ci0KLXZvaWQgRWZs
Vmlld3BvcnRIYW5kbGVyOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFBvaW50JiBu
ZXdTY3JvbGxQb3NpdGlvbiwgZmxvYXQgbmV3U2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWpl
Y3RvcnkpCi17Ci0gICAgbV9zY2FsZUZhY3RvciA9IG5ld1NjYWxlOwotICAgIG1fdmlzaWJsZUNv
bnRlbnRSZWN0ID0gSW50UmVjdChuZXdTY3JvbGxQb3NpdGlvbiwgbV92aWV3cG9ydFNpemUpOwot
Ci0gICAgLy8gTW92ZSB2aXNpYmxlQ29udGVudFJlY3QgaW5zaWRlIGNvbnRlbnRzUmVjdCB3aGVu
IHZpc2libGVDb250ZW50UmVjdCBnb2VzIG91dHNpZGUgY29udGVudHNSZWN0LiAKLSAgICBJbnRT
aXplIGNvbnRlbnRzU2l6ZSA9IG1fY29udGVudHNTaXplOwotICAgIGNvbnRlbnRzU2l6ZS5zY2Fs
ZShtX3NjYWxlRmFjdG9yKTsKLSAgICBpZiAobV92aXNpYmxlQ29udGVudFJlY3QueCgpID4gY29u
dGVudHNTaXplLndpZHRoKCkgLSBtX3Zpc2libGVDb250ZW50UmVjdC53aWR0aCgpKQotICAgICAg
ICBtX3Zpc2libGVDb250ZW50UmVjdC5zZXRYKGNvbnRlbnRzU2l6ZS53aWR0aCgpIC0gbV92aXNp
YmxlQ29udGVudFJlY3Qud2lkdGgoKSk7Ci0gICAgaWYgKG1fdmlzaWJsZUNvbnRlbnRSZWN0Lngo
KSA8IDApCi0gICAgICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0LnNldFgoMCk7Ci0gICAgaWYgKG1f
dmlzaWJsZUNvbnRlbnRSZWN0LnkoKSA+IGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSAtIG1fdmlzaWJs
ZUNvbnRlbnRSZWN0LmhlaWdodCgpKQotICAgICAgICBtX3Zpc2libGVDb250ZW50UmVjdC5zZXRZ
KGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSAtIG1fdmlzaWJsZUNvbnRlbnRSZWN0LmhlaWdodCgpKTsK
LSAgICBpZiAobV92aXNpYmxlQ29udGVudFJlY3QueSgpIDwgMCkKLSAgICAgICAgbV92aXNpYmxl
Q29udGVudFJlY3Quc2V0WSgwKTsKLQotICAgIEZsb2F0UmVjdCBtYXBSZWN0VG9XZWJDb250ZW50
ID0gbV92aXNpYmxlQ29udGVudFJlY3Q7Ci0gICAgbWFwUmVjdFRvV2ViQ29udGVudC5zY2FsZSgx
IC8gbV9zY2FsZUZhY3Rvcik7Ci0gICAgZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1hcFJlY3RUb1dlYkNvbnRlbnQpLCBtX3NjYWxlRmFjdG9y
LCB0cmFqZWN0b3J5KTsKLX0KLQotdm9pZCBFZmxWaWV3cG9ydEhhbmRsZXI6OmRpZENoYW5nZUNv
bnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQotewotICAgIG1fY29udGVu
dHNTaXplID0gc2l6ZTsKLSAgICBzZXRWaXNpYmxlQ29udGVudHNSZWN0KG1fdmlzaWJsZUNvbnRl
bnRSZWN0LmxvY2F0aW9uKCksIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7Ci0gICAgZHJh
d2luZ0FyZWEoKS0+bGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSgpLT5zZXRDb250ZW50c1NpemUo
V2ViQ29yZTo6RmxvYXRTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLSNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
Ci0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VmbFZpZXdwb3J0SGFu
ZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0Vm
bFZpZXdwb3J0SGFuZGxlci5oCShyZXZpc2lvbiAxMzE4ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9FZmxWaWV3cG9ydEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25p
Y3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRWZsVmlld3BvcnRI
YW5kbGVyX2gKLSNkZWZpbmUgRWZsVmlld3BvcnRIYW5kbGVyX2gKLQotI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKLQotI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIEVmbFZpZXdw
b3J0SGFuZGxlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RWZsVmlld3BvcnRI
YW5kbGVyPiBjcmVhdGUoRXZhc19PYmplY3QqIHZpZXdXaWRnZXQpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEVmbFZpZXdwb3J0SGFuZGxlcih2aWV3V2lkZ2V0KSk7Ci0gICAg
fQotICAgIH5FZmxWaWV3cG9ydEhhbmRsZXIoKTsKLQotICAgIERyYXdpbmdBcmVhUHJveHkqIGRy
YXdpbmdBcmVhKCkgY29uc3Q7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIHsgcmV0
dXJuIG1fdmlld3BvcnRTaXplOyB9Ci0KLSAgICB2b2lkIGRpc3BsYXkoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHZpZXdQb3NpdGlvbik7Ci0g
ICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld3Bv
cnRTaXplKTsKLSAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCBmbG9hdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwotICAgIHZvaWQg
ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOwotICAg
IHZvaWQgc2V0UmVuZGVyZXJBY3RpdmUoYm9vbCk7Ci1wcml2YXRlOgotICAgIGV4cGxpY2l0IEVm
bFZpZXdwb3J0SGFuZGxlcihFdmFzX09iamVjdCopOwotCi0gICAgRXZhc19PYmplY3QqIG1fdmll
d1dpZGdldDsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IG1fdmlzaWJsZUNvbnRlbnRSZWN0OwotICAg
IFdlYkNvcmU6OkludFNpemUgbV9jb250ZW50c1NpemU7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBt
X3ZpZXdwb3J0U2l6ZTsKLSAgICBmbG9hdCBtX3NjYWxlRmFjdG9yOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gRWZsVmlld3BvcnRIYW5kbGVyX2gK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCShyZXZpc2lvbiAx
MzE4ODcpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VmbFZpZXdwb3J0
SGFuZGxlci5jcHA6MTMxODg3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmlj
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkVmbFZpZXdwb3J0SGFuZGxlci5oIgorCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQorCisjaW5jbHVkZSAiTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIgorI2luY2x1
ZGUgIkxheWVyVHJlZVJlbmRlcmVyLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworRWZsVmlld3BvcnRIYW5kbGVyOjpFZmxWaWV3
cG9ydEhhbmRsZXIoRXZhc19PYmplY3QqIHZpZXdXaWRnZXQpCisgICAgOiBtX3ZpZXdXaWRnZXQo
dmlld1dpZGdldCkKKyAgICAsIG1fc2NhbGVGYWN0b3IoMSkKK3sKKyAgICBBU1NFUlQobV92aWV3
V2lkZ2V0KTsKK30KKworRWZsVmlld3BvcnRIYW5kbGVyOjp+RWZsVmlld3BvcnRIYW5kbGVyKCkK
K3sKK30KKworRHJhd2luZ0FyZWFQcm94eSogRWZsVmlld3BvcnRIYW5kbGVyOjpkcmF3aW5nQXJl
YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV3a192aWV3X3BhZ2VfZ2V0KG1fdmlld1dpZGdldCkt
PmRyYXdpbmdBcmVhKCk7Cit9CisKK3ZvaWQgRWZsVmlld3BvcnRIYW5kbGVyOjpzZXRSZW5kZXJl
ckFjdGl2ZShib29sIGFjdGl2ZSkKK3sKKyAgICBkcmF3aW5nQXJlYSgpLT5sYXllclRyZWVDb29y
ZGluYXRvclByb3h5KCktPmxheWVyVHJlZVJlbmRlcmVyKCktPnNldEFjdGl2ZShhY3RpdmUpOwor
fQorCit2b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6ZGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0
LCBjb25zdCBJbnRQb2ludCYgdmlld1Bvc2l0aW9uKQoreworICAgIFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICBtYXRyaXguc2V0TWF0cml4KG1fc2NhbGVGYWN0b3Is
IDAsIDAsIG1fc2NhbGVGYWN0b3IsIC1tX3Zpc2libGVDb250ZW50UmVjdC54KCkgKyB2aWV3UG9z
aXRpb24ueCgpLCAtbV92aXNpYmxlQ29udGVudFJlY3QueSgpICsgdmlld1Bvc2l0aW9uLnkoKSk7
CisKKyAgICBMYXllclRyZWVSZW5kZXJlciogcmVuZGVyZXIgPSBkcmF3aW5nQXJlYSgpLT5sYXll
clRyZWVDb29yZGluYXRvclByb3h5KCktPmxheWVyVHJlZVJlbmRlcmVyKCk7CisgICAgcmVuZGVy
ZXItPnNldEFjdGl2ZSh0cnVlKTsKKyAgICByZW5kZXJlci0+c3luY1JlbW90ZUNvbnRlbnQoKTsK
KyAgICBJbnRSZWN0IGNsaXBSZWN0KHJlY3QpOworICAgIGNsaXBSZWN0Lm1vdmUodmlld1Bvc2l0
aW9uLngoKSwgdmlld1Bvc2l0aW9uLnkoKSk7CisgICAgcmVuZGVyZXItPnBhaW50VG9DdXJyZW50
R0xDb250ZXh0KG1hdHJpeCwgMSwgY2xpcFJlY3QpOworfQorCit2b2lkIEVmbFZpZXdwb3J0SGFu
ZGxlcjo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKK3sK
KyAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKKyAgICBld2tfdmlld19wYWdlX2dl
dChtX3ZpZXdXaWRnZXQpLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKKyAgICBzZXRW
aXNpYmxlQ29udGVudHNSZWN0KG1fdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCksIG1fc2Nh
bGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7Cit9CisKK3ZvaWQgRWZsVmlld3BvcnRIYW5kbGVyOjpz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFBvaW50JiBuZXdTY3JvbGxQb3NpdGlvbiwg
ZmxvYXQgbmV3U2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnkpCit7CisgICAgbV9z
Y2FsZUZhY3RvciA9IG5ld1NjYWxlOworICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0ID0gSW50UmVj
dChuZXdTY3JvbGxQb3NpdGlvbiwgbV92aWV3cG9ydFNpemUpOworCisgICAgLy8gTW92ZSB2aXNp
YmxlQ29udGVudFJlY3QgaW5zaWRlIGNvbnRlbnRzUmVjdCB3aGVuIHZpc2libGVDb250ZW50UmVj
dCBnb2VzIG91dHNpZGUgY29udGVudHNSZWN0LiAKKyAgICBJbnRTaXplIGNvbnRlbnRzU2l6ZSA9
IG1fY29udGVudHNTaXplOworICAgIGNvbnRlbnRzU2l6ZS5zY2FsZShtX3NjYWxlRmFjdG9yKTsK
KyAgICBpZiAobV92aXNpYmxlQ29udGVudFJlY3QueCgpID4gY29udGVudHNTaXplLndpZHRoKCkg
LSBtX3Zpc2libGVDb250ZW50UmVjdC53aWR0aCgpKQorICAgICAgICBtX3Zpc2libGVDb250ZW50
UmVjdC5zZXRYKGNvbnRlbnRzU2l6ZS53aWR0aCgpIC0gbV92aXNpYmxlQ29udGVudFJlY3Qud2lk
dGgoKSk7CisgICAgaWYgKG1fdmlzaWJsZUNvbnRlbnRSZWN0LngoKSA8IDApCisgICAgICAgIG1f
dmlzaWJsZUNvbnRlbnRSZWN0LnNldFgoMCk7CisgICAgaWYgKG1fdmlzaWJsZUNvbnRlbnRSZWN0
LnkoKSA+IGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSAtIG1fdmlzaWJsZUNvbnRlbnRSZWN0LmhlaWdo
dCgpKQorICAgICAgICBtX3Zpc2libGVDb250ZW50UmVjdC5zZXRZKGNvbnRlbnRzU2l6ZS5oZWln
aHQoKSAtIG1fdmlzaWJsZUNvbnRlbnRSZWN0LmhlaWdodCgpKTsKKyAgICBpZiAobV92aXNpYmxl
Q29udGVudFJlY3QueSgpIDwgMCkKKyAgICAgICAgbV92aXNpYmxlQ29udGVudFJlY3Quc2V0WSgw
KTsKKworICAgIEZsb2F0UmVjdCBtYXBSZWN0VG9XZWJDb250ZW50ID0gbV92aXNpYmxlQ29udGVu
dFJlY3Q7CisgICAgbWFwUmVjdFRvV2ViQ29udGVudC5zY2FsZSgxIC8gbV9zY2FsZUZhY3Rvcik7
CisgICAgZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChlbmNsb3NpbmdJbnRS
ZWN0KG1hcFJlY3RUb1dlYkNvbnRlbnQpLCBtX3NjYWxlRmFjdG9yLCB0cmFqZWN0b3J5KTsKK30K
Kwordm9pZCBFZmxWaWV3cG9ydEhhbmRsZXI6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplKQoreworICAgIG1fY29udGVudHNTaXplID0gc2l6ZTsKKyAg
ICBzZXRWaXNpYmxlQ29udGVudHNSZWN0KG1fdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCks
IG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7CisgICAgZHJhd2luZ0FyZWEoKS0+bGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eSgpLT5zZXRDb250ZW50c1NpemUoV2ViQ29yZTo6RmxvYXRTaXpl
KHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKyNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCShyZXZpc2lvbiAxMzE4ODcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJFZmxWaWV3cG9ydEhhbmRsZXIuaCIKKyNpbmNsdWRlICJQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCiAKICNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAKQEAgLTM3LDI4ICszNywyOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUVmbFZpZXdwb3J0SGFuZGxlcjo6RWZsVmlld3BvcnRI
YW5kbGVyKEV2YXNfT2JqZWN0KiB2aWV3V2lkZ2V0KQorUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbChFdmFzX09iamVjdCogdmll
d1dpZGdldCkKICAgICA6IG1fdmlld1dpZGdldCh2aWV3V2lkZ2V0KQogICAgICwgbV9zY2FsZUZh
Y3RvcigxKQogewogICAgIEFTU0VSVChtX3ZpZXdXaWRnZXQpOwogfQogCi1FZmxWaWV3cG9ydEhh
bmRsZXI6On5FZmxWaWV3cG9ydEhhbmRsZXIoKQorUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbDo6flBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwoKQogewogfQogCi1EcmF3aW5n
QXJlYVByb3h5KiBFZmxWaWV3cG9ydEhhbmRsZXI6OmRyYXdpbmdBcmVhKCkgY29uc3QKK0RyYXdp
bmdBcmVhUHJveHkqIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRyYXdpbmdBcmVh
KCkgY29uc3QKIHsKICAgICByZXR1cm4gZXdrX3ZpZXdfcGFnZV9nZXQobV92aWV3V2lkZ2V0KS0+
ZHJhd2luZ0FyZWEoKTsKIH0KIAotdm9pZCBFZmxWaWV3cG9ydEhhbmRsZXI6OnNldFJlbmRlcmVy
QWN0aXZlKGJvb2wgYWN0aXZlKQordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
OjpzZXRSZW5kZXJlckFjdGl2ZShib29sIGFjdGl2ZSkKIHsKICAgICBkcmF3aW5nQXJlYSgpLT5s
YXllclRyZWVDb29yZGluYXRvclByb3h5KCktPmxheWVyVHJlZVJlbmRlcmVyKCktPnNldEFjdGl2
ZShhY3RpdmUpOwogfQogCi12b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6ZGlzcGxheShjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBJbnRQb2ludCYgdmlld1Bvc2l0aW9uKQordm9pZCBQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaXNwbGF5KGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEludFBvaW50JiB2aWV3UG9zaXRpb24pCiB7CiAgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXggbWF0cml4OwogICAgIG1hdHJpeC5zZXRNYXRyaXgobV9zY2FsZUZhY3RvciwgMCwg
MCwgbV9zY2FsZUZhY3RvciwgLW1fdmlzaWJsZUNvbnRlbnRSZWN0LngoKSArIHZpZXdQb3NpdGlv
bi54KCksIC1tX3Zpc2libGVDb250ZW50UmVjdC55KCkgKyB2aWV3UG9zaXRpb24ueSgpKTsKQEAg
LTcxLDE0ICs3MSwxNCBAQCB2b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6ZGlzcGxheShjb25zdCBJ
CiAgICAgcmVuZGVyZXItPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KG1hdHJpeCwgMSwgY2xpcFJl
Y3QpOwogfQogCi12b2lkIEVmbFZpZXdwb3J0SGFuZGxlcjo6dXBkYXRlVmlld3BvcnRTaXplKGNv
bnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbDo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkK
IHsKICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKICAgICBld2tfdmlld19wYWdl
X2dldChtX3ZpZXdXaWRnZXQpLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKICAgICBz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KG1fdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCksIG1f
c2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7CiB9CiAKLXZvaWQgRWZsVmlld3BvcnRIYW5kbGVy
OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFBvaW50JiBuZXdTY3JvbGxQb3NpdGlv
biwgZmxvYXQgbmV3U2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnkpCit2b2lkIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29u
c3QgSW50UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9uLCBmbG9hdCBuZXdTY2FsZSwgY29uc3QgRmxv
YXRQb2ludCYgdHJhamVjdG9yeSkKIHsKICAgICBtX3NjYWxlRmFjdG9yID0gbmV3U2NhbGU7CiAg
ICAgbV92aXNpYmxlQ29udGVudFJlY3QgPSBJbnRSZWN0KG5ld1Njcm9sbFBvc2l0aW9uLCBtX3Zp
ZXdwb3J0U2l6ZSk7CkBAIC0xMDAsMTMgKzEwMCwzNyBAQCB2b2lkIEVmbFZpZXdwb3J0SGFuZGxl
cjo6c2V0VmlzaWJsZUNvbnRlCiAgICAgZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1hcFJlY3RUb1dlYkNvbnRlbnQpLCBtX3NjYWxlRmFjdG9y
LCB0cmFqZWN0b3J5KTsKIH0KIAotdm9pZCBFZmxWaWV3cG9ydEhhbmRsZXI6OmRpZENoYW5nZUNv
bnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQordm9pZCBQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgc2l6ZSkKIHsKICAgICBtX2NvbnRlbnRzU2l6ZSA9IHNpemU7CiAgICAgc2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpLCBtX3Nj
YWxlRmFjdG9yLCBGbG9hdFBvaW50KCkpOwogICAgIGRyYXdpbmdBcmVhKCktPmxheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHkoKS0+c2V0Q29udGVudHNTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKIH0KIAordm9pZCBQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmIC8qY29udGVudHNQb2ludCovKQoreworfQorCit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmw6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQsIGJvb2wgLyp0cmVhdEFzSW5pdGlh
bFZhbHVlKi8pCit7Cit9CisKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6
ZGlkUmVzdW1lQ29udGVudCgpCit7Cit9CisKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbDo6ZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRzKCkKK3sKK30KKwordm9pZCBQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoKQor
eworfQorCit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldENvbnRyb2xs
ZXIoUGFnZVZpZXdwb3J0Q29udHJvbGxlciogcGFnZVZpZXdwb3J0Q29udHJvbGxlcikKK3sKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oCShyZXZpc2lv
biAxMzE4ODcpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VmbFZpZXdw
b3J0SGFuZGxlci5oOjEzMTg4NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRWZsVmlld3BvcnRIYW5k
bGVyX2gKKyNkZWZpbmUgRWZsVmlld3BvcnRIYW5kbGVyX2gKKworI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKKworI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEVmbFZpZXdwb3J0
SGFuZGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RWZsVmlld3BvcnRIYW5k
bGVyPiBjcmVhdGUoRXZhc19PYmplY3QqIHZpZXdXaWRnZXQpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEVmbFZpZXdwb3J0SGFuZGxlcih2aWV3V2lkZ2V0KSk7CisgICAgfQor
ICAgIH5FZmxWaWV3cG9ydEhhbmRsZXIoKTsKKworICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdp
bmdBcmVhKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIHsgcmV0dXJu
IG1fdmlld3BvcnRTaXplOyB9CisKKyAgICB2b2lkIGRpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHZpZXdQb3NpdGlvbik7CisgICAg
dm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld3BvcnRT
aXplKTsKKyAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBmbG9hdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOworICAgIHZvaWQgZGlk
Q2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOworICAgIHZv
aWQgc2V0UmVuZGVyZXJBY3RpdmUoYm9vbCk7Citwcml2YXRlOgorICAgIGV4cGxpY2l0IEVmbFZp
ZXdwb3J0SGFuZGxlcihFdmFzX09iamVjdCopOworCisgICAgRXZhc19PYmplY3QqIG1fdmlld1dp
ZGdldDsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IG1fdmlzaWJsZUNvbnRlbnRSZWN0OworICAgIFdl
YkNvcmU6OkludFNpemUgbV9jb250ZW50c1NpemU7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3Zp
ZXdwb3J0U2l6ZTsKKyAgICBmbG9hdCBtX3NjYWxlRmFjdG9yOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgorCisjZW5kaWYgLy8gRWZsVmlld3BvcnRIYW5kbGVyX2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgJKHJldmlzaW9uIDEzMTg4NykK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMjMgKzIzLDI0IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBFZmxWaWV3cG9ydEhh
bmRsZXJfaAotI2RlZmluZSBFZmxWaWV3cG9ydEhhbmRsZXJfaAorI2lmbmRlZiBQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsX2gKKyNkZWZpbmUgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbF9oCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRlICJQ
YWdlQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
Y2xhc3MgRWZsVmlld3BvcnRIYW5kbGVyIHsKK2NsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmwgOiBwdWJsaWMgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RWZsVmlld3BvcnRIYW5kbGVyPiBjcmVhdGUoRXZhc19P
YmplY3QqIHZpZXdXaWRnZXQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbD4gY3JlYXRlKEV2YXNfT2JqZWN0KiB2aWV3V2lkZ2V0KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFZmxWaWV3cG9ydEhhbmRsZXIodmlld1dpZGdl
dCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmwodmlld1dpZGdldCkpOwogICAgIH0KLSAgICB+RWZsVmlld3BvcnRIYW5kbGVyKCk7
CisgICAgflBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwoKTsKIAogICAgIERyYXdpbmdB
cmVhUHJveHkqIGRyYXdpbmdBcmVhKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3
U2l6ZSgpIHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CkBAIC00NywxMCArNDgsMjAgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uKTsKICAgICB2b2lkIHVwZGF0ZVZpZXdw
b3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3cG9ydFNpemUpOwogICAgIHZvaWQg
c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGZsb2F0LCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1Np
emUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7CiAgICAgdm9pZCBzZXRSZW5kZXJlckFj
dGl2ZShib29sKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3cG9ydFBvc2l0aW9uKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRlbnRzUG9pbnQpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1NjYWxlKGZsb2F0LCBib29sIHRyZWF0QXNJbml0aWFsVmFsdWUpOworCisgICAg
dmlydHVhbCB2b2lkIGRpZFJlc3VtZUNvbnRlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRzKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZVZpZXdwb3J0QXR0cmlidXRlcygpOworCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIo
UGFnZVZpZXdwb3J0Q29udHJvbGxlciopOworCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEVmbFZp
ZXdwb3J0SGFuZGxlcihFdmFzX09iamVjdCopOworICAgIGV4cGxpY2l0IFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmwoRXZhc19PYmplY3QqKTsKIAogICAgIEV2YXNfT2JqZWN0KiBtX3Zp
ZXdXaWRnZXQ7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3Zpc2libGVDb250ZW50UmVjdDsKQEAg
LTYzLDQgKzc0LDQgQEAgcHJpdmF0ZToKIAogI2VuZGlmCiAKLSNlbmRpZiAvLyBFZmxWaWV3cG9y
dEhhbmRsZXJfaAorI2VuZGlmIC8vIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmxfaApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAko
cmV2aXNpb24gMTMxODg3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBACiAjZW5kaWYKIAogI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSNpbmNsdWRlICJFZmxWaWV3cG9ydEhhbmRsZXIu
aCIKKyNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCiAjZW5kaWYK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgcmVtb3ZlRnJvbVBhZ2VWaWV3TWFwCiBzdHJ1Y3QgRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhIHsKICAgICBPd25QdHI8UGFnZUNsaWVudEltcGw+IHBhZ2VDbGllbnQ7CiAjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQotICAgIE93blB0cjxFZmxWaWV3cG9ydEhhbmRsZXI+IHZpZXdw
b3J0SGFuZGxlcjsKKyAgICBPd25QdHI8UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbD4g
cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudDsKICNlbmRpZgogICAgIFJlZlB0cjxXZWJQYWdl
UHJveHk+IHBhZ2VQcm94eTsKIApAQCAtNjIzLDcgKzYyMyw3IEBAIGJvb2wgZXdrX3ZpZXdfYWNj
ZWxlcmF0ZWRfY29tcG9zaXRpbmdfbW8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIHByaXYtPnZpZXdwb3J0SGFuZGxlci0+c2V0UmVuZGVyZXJBY3RpdmUodHJ1ZSk7CisgICAg
cHJpdi0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+c2V0UmVuZGVyZXJBY3RpdmUodHJ1
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY2Nyw3ICs2NjcsNyBAQCBzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2CiAKICAgICBpZiAoc21hcnREYXRhLT5jaGFu
Z2VkLnNpemUpIHsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgICAgIHByaXYt
PnZpZXdwb3J0SGFuZGxlci0+dXBkYXRlVmlld3BvcnRTaXplKEludFNpemUod2lkdGgsIGhlaWdo
dCkpOworICAgICAgICBwcml2LT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT51cGRhdGVW
aWV3cG9ydFNpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAjZW5kaWYKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgIG5lZWRzTmV3U3VyZmFjZSA9IHByaXYtPmV2
YXNHbFN1cmZhY2U7CkBAIC04MjQsNyArODI0LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X2lu
aXRpYWxpemUoRXZhc19PYgogICAgIHByaXYtPmNvbnRleHQgPSBld2tfY29udGV4dF9yZWYoY29u
dGV4dCk7CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgcHJpdi0+dmlld3Bv
cnRIYW5kbGVyID0gRWZsVmlld3BvcnRIYW5kbGVyOjpjcmVhdGUoZXdrVmlldyk7CisgICAgcHJp
di0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCA9IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmw6OmNyZWF0ZShld2tWaWV3KTsKICNlbmRpZgogCiAgICAgV0tQYWdlUmVmIHdrUGFn
ZSA9IHRvQVBJKHByaXYtPnBhZ2VQcm94eS5nZXQoKSk7CkBAIC0xMjk1LDcgKzEyOTUsNyBAQCB2
b2lkIGV3a192aWV3X2Rpc3BsYXkoRXZhc19PYmplY3QqIGV3a1ZpCiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CiAKICAgICBldmFzX2dsX21ha2VfY3Vy
cmVudChwcml2LT5ldmFzR2wsIHByaXYtPmV2YXNHbFN1cmZhY2UsIHByaXYtPmV2YXNHbENvbnRl
eHQpOwotICAgIHByaXYtPnZpZXdwb3J0SGFuZGxlci0+ZGlzcGxheShyZWN0LCBJbnRQb2ludChz
bWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3LnkpKTsKKyAgICBwcml2LT5wYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50LT5kaXNwbGF5KHJlY3QsIEludFBvaW50KHNtYXJ0RGF0YS0+
dmlldy54LCBzbWFydERhdGEtPnZpZXcueSkpOwogI2VuZGlmCiAKICAgICBldmFzX29iamVjdF9p
bWFnZV9kYXRhX3VwZGF0ZV9hZGQoc21hcnREYXRhLT5pbWFnZSwgcmVjdC54KCksIHJlY3QueSgp
LCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwpAQCAtMTczMyw3ICsxNzMzLDcgQEAgdm9p
ZCBld2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQoY29ucwogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKIAotICAgIHByaXYtPnZpZXdwb3J0SGFuZGxlci0+
ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOworICAgIHByaXYtPnBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnQtPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGV3a1ZpZXcpOwogICAgIFVOVVNFRF9QQVJBTShzaXplKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>