<?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>110216</bug_id>
          
          <creation_ts>2013-02-19 06:43:05 -0800</creation_ts>
          <short_desc>[WK2][EFL] Move AC code from EwkView to WebView</short_desc>
          <delta_ts>2013-02-22 00:54:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>107657</blocked>
    
    <blocked>107662</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Pozdnyakov">mikhail.pozdnyakov</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>836340</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-19 06:43:05 -0800</bug_when>
    <thetext>SSIA. The goal is to stop direct accessing to coord graphics scene from EwkView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836705</commentid>
    <comment_count>1</comment_count>
      <attachid>189149</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-19 13:10:23 -0800</bug_when>
    <thetext>Created attachment 189149
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836713</commentid>
    <comment_count>2</comment_count>
      <attachid>189149</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-19 13:24:31 -0800</bug_when>
    <thetext>Comment on attachment 189149
WIP patch

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

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.cpp:61
&gt; +void WKViewSetUserViewportTransformation(WKViewRef viewRef, const WKViewMatrix* userViewportTransformation)

I think &quot;transformation&quot; would be fine here...

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.cpp:63
&gt; +    WebCore::TransformationMatrix transform(userViewportTransformation-&gt;xx, userViewportTransformation-&gt;yx,

I could just call it matrix

matrix(transformation-&gt;xx,...

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:78
&gt; +WK_EXPORT void WKViewSetUserViewportTransformation(WKViewRef, const WKViewMatrix* userViewportTransformation);

no need to add userView...

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:269
&gt; -    if (behavior == DefaultBehavior) {
&gt; -        coordinatedGraphicsScene()-&gt;setActive(true);
&gt; -        WKPageSetUseFixedLayout(wkPage(), true);
&gt; -    }
&gt; +    WKPageSetUseFixedLayout(wkPage(), behavior == DefaultBehavior);

Are you sure it should not be active?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836735</commentid>
    <comment_count>3</comment_count>
      <attachid>189149</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-19 13:42:44 -0800</bug_when>
    <thetext>Comment on attachment 189149
WIP patch

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

&gt; Source/WebKit2/UIProcess/efl/WebView.cpp:109
&gt; +    RefPtr&lt;cairo_t&gt; graphicsContext = adoptRef(cairo_create(surface));
&gt; +
&gt; +    const FloatPoint&amp; pagePosition = m_ewkView-&gt;pagePosition();
&gt; +    cairo_translate(graphicsContext.get(), - pagePosition.x(), - pagePosition.y());
&gt; +    cairo_scale(graphicsContext.get(), m_ewkView-&gt;pageScaleFactor(), m_ewkView-&gt;pageScaleFactor());
&gt; +    cairo_scale(graphicsContext.get(), m_page-&gt;deviceScaleFactor(), m_page-&gt;deviceScaleFactor());

can we do this smarter with a matrix instead? like one operation?

&gt; Source/WebKit2/UIProcess/efl/WebView.cpp:218
&gt; +    WebKit::CoordinatedLayerTreeHostProxy* coordinatedLayerTreeHostProxy = drawingArea-&gt;coordinatedLayerTreeHostProxy();
&gt; +    if (!coordinatedLayerTreeHostProxy)

wouldnt calling it laterTreeHostProxy not be sufficient

&gt; Source/WebKit2/UIProcess/efl/WebView.h:93
&gt; +    // FIXME: Should be private.
&gt; +    WebCore::AffineTransform transformFromScene() const;
&gt; +    WebCore::AffineTransform transformToScene() const;
&gt; +

why are they not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837293</commentid>
    <comment_count>4</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-20 02:45:32 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 189149 [details])
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:269
&gt; &gt; -    if (behavior == DefaultBehavior) {
&gt; &gt; -        coordinatedGraphicsScene()-&gt;setActive(true);
&gt; &gt; -        WKPageSetUseFixedLayout(wkPage(), true);
&gt; &gt; -    }
&gt; &gt; +    WKPageSetUseFixedLayout(wkPage(), behavior == DefaultBehavior);
&gt; 
&gt; Are you sure it should not be active?

It is set in WebView::initialize() now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837295</commentid>
    <comment_count>5</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-20 02:47:31 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebKit2/UIProcess/efl/WebView.h:93
&gt; &gt; +    // FIXME: Should be private.
&gt; &gt; +    WebCore::AffineTransform transformFromScene() const;
&gt; &gt; +    WebCore::AffineTransform transformToScene() const;
&gt; &gt; +
&gt; 
&gt; why are they not?

Unfortunately they are used in EwkView so far :/ (until we move event handling to web view where it should be).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837309</commentid>
    <comment_count>6</comment_count>
      <attachid>189276</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-20 03:25:21 -0800</bug_when>
    <thetext>Created attachment 189276
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837310</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-20 03:26:37 -0800</bug_when>
    <thetext>Attachment 189276 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKView.h&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/EwkView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/EwkView.h&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebView.h&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/API/C/efl/WKView.h:42:  More than one command on the same line  [whitespace/newline] [4]
Source/WebKit2/UIProcess/API/C/efl/WKView.h:43:  More than one command on the same line  [whitespace/newline] [4]
Source/WebKit2/UIProcess/API/C/efl/WKView.h:44:  More than one command on the same line  [whitespace/newline] [4]
Source/WebKit2/UIProcess/API/C/efl/WKView.cpp:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/C/efl/WKView.cpp:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837331</commentid>
    <comment_count>8</comment_count>
      <attachid>189276</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-20 04:16:07 -0800</bug_when>
    <thetext>Comment on attachment 189276
patch

LGTM, maybe let cmarcelo have a look</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837355</commentid>
    <comment_count>9</comment_count>
      <attachid>189276</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2013-02-20 04:53:04 -0800</bug_when>
    <thetext>Comment on attachment 189276
patch

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

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:73
&gt; +WK_EXPORT void WKViewSetUserViewportTransformation(WKViewRef, const WKViewMatrix* transformation);
&gt; +WK_EXPORT WKPoint WKViewUserViewportToContents(WKViewRef, WKPoint);

Question: does arbitrary matrices work correctly here? What about start smaller and support vertical and horizontal displacement and then we change to use matrices when we have means to test this? That would spare us having this WKViewMatrix type for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837361</commentid>
    <comment_count>10</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-20 05:01:03 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 189276 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189276&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:73
&gt; &gt; +WK_EXPORT void WKViewSetUserViewportTransformation(WKViewRef, const WKViewMatrix* transformation);
&gt; &gt; +WK_EXPORT WKPoint WKViewUserViewportToContents(WKViewRef, WKPoint);
&gt; 
&gt; Question: does arbitrary matrices work correctly here? What about start smaller and support vertical and horizontal displacement and then we change to use matrices when we have means to test this? That would spare us having this WKViewMatrix type for now.

makes sense to me, having just viewport translation api looks sufficient at the moment. Kenneth, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837362</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-20 05:01:49 -0800</bug_when>
    <thetext>fine with me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837374</commentid>
    <comment_count>12</comment_count>
      <attachid>189293</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-20 05:28:21 -0800</bug_when>
    <thetext>Created attachment 189293
patch v2

Updated due to cmarcelo comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837383</commentid>
    <comment_count>13</comment_count>
      <attachid>189293</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-20 05:38:07 -0800</bug_when>
    <thetext>Comment on attachment 189293
patch v2

Anyway to unit test this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837391</commentid>
    <comment_count>14</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-20 05:53:57 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 189293 [details])
&gt; Anyway to unit test this?

WKView is now used as middle layer for ewk_view, so WKView&apos;s functionality is covered by ewk tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837404</commentid>
    <comment_count>15</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2013-02-20 06:13:36 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (From update of attachment 189293 [details] [details])
&gt; &gt; Anyway to unit test this?
&gt; 
&gt; WKView is now used as middle layer for ewk_view, so WKView&apos;s functionality is covered by ewk tests.

In the future we should import the API tests we created for NIXView, but renaming to WKView. They are in our github branch inside Tools/TestWebKitAPI/Tests/nix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837431</commentid>
    <comment_count>16</comment_count>
      <attachid>189310</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-20 06:49:41 -0800</bug_when>
    <thetext>Created attachment 189310
patch v3

WKViewTranslateUserViewport -&gt; WKViewSetUserViewportTranslation (after talking to cmarcelo on irc)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837432</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-20 06:52:58 -0800</bug_when>
    <thetext>Attachment 189310 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKView.h&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/EwkView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/EwkView.h&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebView.h&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/efl/WebView.cpp:227:  Extra space after ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837440</commentid>
    <comment_count>18</comment_count>
      <attachid>189313</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-20 06:58:48 -0800</bug_when>
    <thetext>Created attachment 189313
patch v4

fixed style nit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837483</commentid>
    <comment_count>19</comment_count>
      <attachid>189313</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2013-02-20 08:25:19 -0800</bug_when>
    <thetext>Comment on attachment 189313
patch v4

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

LGTM with comments.

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:269
&gt; -    if (behavior == DefaultBehavior) {
&gt; -        coordinatedGraphicsScene()-&gt;setActive(true);
&gt; -        WKPageSetUseFixedLayout(wkPage(), true);
&gt; -    }
&gt; +    WKPageSetUseFixedLayout(wkPage(), behavior == DefaultBehavior);

Do we need to set use fixed layout when behavior != DefaultBehavior?

&gt; Source/WebKit2/UIProcess/efl/WebView.h:97
&gt; +    // FIXME: Should be private.

Explain here what is preventing to become private, and how we fix. It seems to me they are not private yet for the sake of creating Events, which will be moved later on to WKView too. Is that correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838181</commentid>
    <comment_count>20</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-21 00:08:00 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 189313 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189313&amp;action=review
&gt; 
&gt; LGTM with comments.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:269
&gt; &gt; -    if (behavior == DefaultBehavior) {
&gt; &gt; -        coordinatedGraphicsScene()-&gt;setActive(true);
&gt; &gt; -        WKPageSetUseFixedLayout(wkPage(), true);
&gt; &gt; -    }
&gt; &gt; +    WKPageSetUseFixedLayout(wkPage(), behavior == DefaultBehavior);
&gt; 
&gt; Do we need to set use fixed layout when behavior != DefaultBehavior?
In principal we should not, as web page does not use fixed layout by default.

However WKPageSetUseFixedLayout(wkPage(), behavior == DefaultBehavior); does not hurt because WebPageProxy::setUseFixedLayout checks whether the current value is equal to the new one and returns if it is.

I prefer WKPageSetUseFixedLayout(wkPage(), behavior == DefaultBehavior); to 

if (behavior == DefaultBehavior)
    WKPageSetUseFixedLayout(wkPage(), true);

for the sake of code compactness.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebView.h:97
&gt; &gt; +    // FIXME: Should be private.
&gt; 
&gt; Explain here what is preventing to become private, and how we fix. It seems to me they are not private yet for the sake of creating Events, which will be moved later on to WKView too. Is that correct?

Absolutely correct. I&apos;ll improve the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838185</commentid>
    <comment_count>21</comment_count>
      <attachid>189466</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-21 00:25:08 -0800</bug_when>
    <thetext>Created attachment 189466
patch v5

Improved code comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838343</commentid>
    <comment_count>22</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2013-02-21 04:46:36 -0800</bug_when>
    <thetext>LGTM, needs someone from WK2 to look at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838541</commentid>
    <comment_count>23</comment_count>
      <attachid>189466</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 10:07:09 -0800</bug_when>
    <thetext>Comment on attachment 189466
patch v5

Rejecting attachment 189466 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;--bot-id=gce-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 189466, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
nk #5 succeeded at 413 (offset -3 lines).
patching file Source/WebKit2/UIProcess/efl/WebView.h
Hunk #1 succeeded at 31 with fuzz 1.
Hunk #2 succeeded at 55 (offset -3 lines).
Hunk #3 succeeded at 91 (offset -3 lines).
Hunk #4 FAILED at 181.
1 out of 4 hunks FAILED -- saving rejects to file Source/WebKit2/UIProcess/efl/WebView.h.rej

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

Full output: http://queues.webkit.org/results/16696169</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839328</commentid>
    <comment_count>24</comment_count>
      <attachid>189707</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-22 00:35:07 -0800</bug_when>
    <thetext>Created attachment 189707
to be landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839338</commentid>
    <comment_count>25</comment_count>
      <attachid>189707</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-22 00:54:22 -0800</bug_when>
    <thetext>Comment on attachment 189707
to be landed

Clearing flags on attachment: 189707

Committed r143699: &lt;http://trac.webkit.org/changeset/143699&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839339</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-22 00:54:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189149</attachid>
            <date>2013-02-19 13:10:23 -0800</date>
            <delta_ts>2013-02-20 03:25:21 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug110216_WIP</filename>
            <type>text/plain</type>
            <size>19884</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDg2YmIyZDUwMGZkYjhmMzg1NTU1MmI0ODQwZGM4NjNiNTZjYzUwOTMKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIEZlYiAxOSAyMzowMjoxMiAyMDEzICswMjAwCgogICAgYnVnMTEwMjE2CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCmluZGV4IDIxMGYyZTIuLmYz
ZWQ0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5j
cHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC01Nyw2ICs1OCwzMCBAQCB2b2lkIFdLVmlld1NldFZpZXdDbGllbnQo
V0tWaWV3UmVmIHZpZXdSZWYsIGNvbnN0IFdLVmlld0NsaWVudCogY2xpZW50KQogICAgIHRvSW1w
bCh2aWV3UmVmKS0+aW5pdGlhbGl6ZUNsaWVudChjbGllbnQpOwogfQogCit2b2lkIFdLVmlld1Nl
dFVzZXJWaWV3cG9ydFRyYW5zZm9ybWF0aW9uKFdLVmlld1JlZiB2aWV3UmVmLCBjb25zdCBXS1Zp
ZXdNYXRyaXgqIHVzZXJWaWV3cG9ydFRyYW5zZm9ybWF0aW9uKQoreworICAgIFdlYkNvcmU6OlRy
YW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSh1c2VyVmlld3BvcnRUcmFuc2Zvcm1hdGlvbi0+
eHgsIHVzZXJWaWV3cG9ydFRyYW5zZm9ybWF0aW9uLT55eCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXNlclZpZXdwb3J0VHJhbnNmb3JtYXRpb24tPnh5LCB1
c2VyVmlld3BvcnRUcmFuc2Zvcm1hdGlvbi0+eXksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVzZXJWaWV3cG9ydFRyYW5zZm9ybWF0aW9uLT54MCwgdXNlclZp
ZXdwb3J0VHJhbnNmb3JtYXRpb24tPnkwKTsKKyAgICB0b0ltcGwodmlld1JlZiktPnNldFVzZXJW
aWV3cG9ydFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworfQorCitXS1BvaW50IFdLVmlld1VzZXJWaWV3
cG9ydFRvQ29udGVudHMoV0tWaWV3UmVmIHZpZXdSZWYsIFdLUG9pbnQgcG9pbnQpCit7CisgICAg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHJlc3VsdCA9IHRvSW1wbCh2aWV3UmVmKS0+dXNlclZp
ZXdwb3J0VG9Db250ZW50cyh0b0ludFBvaW50KHBvaW50KSk7CisgICAgcmV0dXJuIFdLUG9pbnRN
YWtlKHJlc3VsdC54KCksIHJlc3VsdC55KCkpOworfQorCit2b2lkIFdLVmlld1BhaW50VG9DdXJy
ZW50R0xDb250ZXh0KFdLVmlld1JlZiB2aWV3UmVmKQoreworICAgIHRvSW1wbCh2aWV3UmVmKS0+
cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKK30KKwordm9pZCBXS1ZpZXdQYWludFRvQ2Fpcm9T
dXJmYWNlKFdLVmlld1JlZiB2aWV3UmVmLCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCit7Cisg
ICAgdG9JbXBsKHZpZXdSZWYpLT5wYWludFRvQ2Fpcm9TdXJmYWNlKHN1cmZhY2UpOworfQorCiBX
S1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1JlZikKIHsKICAgICByZXR1cm4g
dG9JbXBsKHZpZXdSZWYpLT5wYWdlUmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1ZpZXcuaAppbmRleCAzMjU0NmM2Li5mYzZiYjVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKQEAgLTEsNSArMSw2IEBACi0vKgorLyog
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICogQ29weXJpZ2h0
IChDKSAyMDEzIEludGVsIENvcnBvcmF0aW9uCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMxLDEw
ICszMiwyNyBAQCB0eXBlZGVmIHN0cnVjdCBfRXZhcyBFdmFzOwogdHlwZWRlZiBzdHJ1Y3QgX0V2
YXNfT2JqZWN0IEV2YXNfT2JqZWN0OwogI2VuZGlmCiAKK3R5cGVkZWYgc3RydWN0IF9jYWlyb19z
dXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMi
IHsKICNlbmRpZgogCitzdHJ1Y3QgV0tWaWV3TWF0cml4IHsKKyAgICBkb3VibGUgeHg7IGRvdWJs
ZSB5eDsKKyAgICBkb3VibGUgeHk7IGRvdWJsZSB5eTsKKyAgICBkb3VibGUgeDA7IGRvdWJsZSB5
MDsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1ZpZXdNYXRyaXggV0tWaWV3TWF0cml4OworCitXS19J
TkxJTkUgV0tWaWV3TWF0cml4IFdLVmlld01hdHJpeE1ha2VUcmFuc2xhdGlvbihkb3VibGUgeDAs
IGRvdWJsZSB5MCkKK3sKKyAgICBXS1ZpZXdNYXRyaXggbTsKKyAgICBtLnh4ID0gMTsgbS54eSA9
IDA7IG0ueDAgPSB4MDsKKyAgICBtLnl4ID0gMDsgbS55eSA9IDE7IG0ueTAgPSB5MDsKKyAgICBy
ZXR1cm4gbTsKK30KKwogdHlwZWRlZiB2b2lkICgqV0tWaWV3Vmlld05lZWRzRGlzcGxheUNhbGxi
YWNrKShXS1ZpZXdSZWYgdmlldywgV0tSZWN0IGFyZWEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwogdHlwZWRlZiB2b2lkICgqV0tWaWV3UGFnZURpZENoYW5nZUNvbnRlbnRzU2l6ZUNhbGxiYWNr
KShXS1ZpZXdSZWYgdmlldywgV0tTaXplIHNpemUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwog
CkBAIC01Nyw2ICs3NSwxMiBAQCBXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZVdpdGhG
aXhlZExheW91dChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBjb250ZQogV0tfRVhQT1JUIHZv
aWQgV0tWaWV3SW5pdGlhbGl6ZShXS1ZpZXdSZWYpOwogV0tfRVhQT1JUIHZvaWQgV0tWaWV3U2V0
Vmlld0NsaWVudChXS1ZpZXdSZWYsIGNvbnN0IFdLVmlld0NsaWVudCopOwogCitXS19FWFBPUlQg
dm9pZCBXS1ZpZXdTZXRVc2VyVmlld3BvcnRUcmFuc2Zvcm1hdGlvbihXS1ZpZXdSZWYsIGNvbnN0
IFdLVmlld01hdHJpeCogdXNlclZpZXdwb3J0VHJhbnNmb3JtYXRpb24pOworV0tfRVhQT1JUIFdL
UG9pbnQgV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cyhXS1ZpZXdSZWYsIFdLUG9pbnQpOwor
CitXS19FWFBPUlQgdm9pZCBXS1ZpZXdQYWludFRvQ3VycmVudEdMQ29udGV4dChXS1ZpZXdSZWYp
OworV0tfRVhQT1JUIHZvaWQgV0tWaWV3UGFpbnRUb0NhaXJvU3VyZmFjZShXS1ZpZXdSZWYsIGNh
aXJvX3N1cmZhY2VfdCopOworCiBXS19FWFBPUlQgV0tQYWdlUmVmIFdLVmlld0dldFBhZ2UoV0tW
aWV3UmVmKTsKIAogV0tfRVhQT1JUIHZvaWQgV0tWaWV3U2V0VGhlbWVQYXRoKFdLVmlld1JlZiwg
V0tTdHJpbmdSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
LmNwcAppbmRleCAwYWU2YzU2Li44YjI4ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtMjIsNyArMjIsNiBAQAogI2luY2x1ZGUgIkV3a1Zp
ZXcuaCIKIAogI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCIKICNpbmNsdWRlICJFZmxTY3JlZW5VdGlsaXRp
ZXMuaCIKICNpbmNsdWRlICJGaW5kQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiRm9ybUNsaWVudEVm
bC5oIgpAQCAtNjQsOSArNjMsNyBAQAogI2luY2x1ZGUgPEVkamUuaD4KICNpbmNsdWRlIDxFdmFz
X0dMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllc0VmbC5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
dXJzb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAjaW5j
bHVkZSA8V2ViS2l0Mi9XS0ltYWdlQ2Fpcm8uaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogCkBAIC0yNjksMTAgKzI2Niw3IEBAIEV3a1ZpZXc6OkV3a1ZpZXcoRXZhc19PYmplY3QqIGV2
YXNPYmplY3QsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgV0tQYWdlCiAKICAgICBX
S1ZpZXdJbml0aWFsaXplKHdrVmlldygpKTsKIAotICAgIGlmIChiZWhhdmlvciA9PSBEZWZhdWx0
QmVoYXZpb3IpIHsKLSAgICAgICAgY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCktPnNldEFjdGl2
ZSh0cnVlKTsKLSAgICAgICAgV0tQYWdlU2V0VXNlRml4ZWRMYXlvdXQod2tQYWdlKCksIHRydWUp
OwotICAgIH0KKyAgICBXS1BhZ2VTZXRVc2VGaXhlZExheW91dCh3a1BhZ2UoKSwgYmVoYXZpb3Ig
PT0gRGVmYXVsdEJlaGF2aW9yKTsKIAogICAgIFdLUGFnZUdyb3VwUmVmIHdrUGFnZUdyb3VwID0g
V0tQYWdlR2V0UGFnZUdyb3VwKHdrUGFnZSgpKTsKICAgICBXS1ByZWZlcmVuY2VzUmVmIHdrUHJl
ZmVyZW5jZXMgPSBXS1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKHdrUGFnZUdyb3VwKTsKQEAgLTQ3
MywyMiArNDY3LDYgQEAgdm9pZCBFd2tWaWV3OjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUp
CiAgICAgd2ViVmlldygpLT51cGRhdGVWaWV3cG9ydFNpemUoKTsKIH0KIAotQWZmaW5lVHJhbnNm
b3JtIEV3a1ZpZXc6OnRyYW5zZm9ybUZyb21TY2VuZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRy
YW5zZm9ybVRvU2NlbmUoKS5pbnZlcnNlKCk7Ci19Ci0KLUFmZmluZVRyYW5zZm9ybSBFd2tWaWV3
Ojp0cmFuc2Zvcm1Ub1NjZW5lKCkgY29uc3QKLXsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
cmFuc2Zvcm0gPSB1c2VyVmlld3BvcnRUcmFuc2Zvcm0oKTsKLQotICAgIHRyYW5zZm9ybS50cmFu
c2xhdGUoLXBhZ2VQb3NpdGlvbigpLngoKSwgLXBhZ2VQb3NpdGlvbigpLnkoKSk7Ci0gICAgdHJh
bnNmb3JtLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIHRyYW5zZm9ybS5zY2FsZShw
YWdlU2NhbGVGYWN0b3IoKSk7Ci0KLSAgICByZXR1cm4gdHJhbnNmb3JtLnRvQWZmaW5lVHJhbnNm
b3JtKCk7Ci19Ci0KIEFmZmluZVRyYW5zZm9ybSBFd2tWaWV3Ojp0cmFuc2Zvcm1Ub1NjcmVlbigp
IGNvbnN0CiB7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKQEAgLTUyMiw1MiArNTAw
LDExIEBAIEFmZmluZVRyYW5zZm9ybSBFd2tWaWV3Ojp0cmFuc2Zvcm1Ub1NjcmVlbigpIGNvbnN0
CiAgICAgcmV0dXJuIHRyYW5zZm9ybTsKIH0KIAotQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBF
d2tWaWV3Ojpjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKQotewotICAgIERyYXdpbmdBcmVhUHJv
eHkqIGRyYXdpbmdBcmVhID0gcGFnZSgpLT5kcmF3aW5nQXJlYSgpOwotICAgIGlmICghZHJhd2lu
Z0FyZWEpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgV2ViS2l0OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eSogY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgPSBkcmF3aW5nQXJl
YS0+Y29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkoKTsKLSAgICBpZiAoIWNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBjb29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS0+Y29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7Ci19
Ci0KIGlubGluZSBFd2tfVmlld19TbWFydF9EYXRhKiBFd2tWaWV3OjpzbWFydERhdGEoKSBjb25z
dAogewogICAgIHJldHVybiB0b1NtYXJ0RGF0YShtX2V2YXNPYmplY3QpOwogfQogCi12b2lkIEV3
a1ZpZXc6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KCkKLXsKLSAgICBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmUqIHNjZW5lID0gY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7Ci0gICAgaWYgKCFz
Y2VuZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gY2xlYW4g
dXAgdGhpcyBjb2RlIGFzIGl0IGlzIHNwbGl0IG92ZXIgQ29vcmRHZnggYW5kIFBhZ2UuCi0gICAg
c2NlbmUtPnNldERyYXdzQmFja2dyb3VuZChXS1ZpZXdHZXREcmF3c0JhY2tncm91bmQod2tWaWV3
KCkpKTsKLQotICAgIEZsb2F0UmVjdCB2aWV3cG9ydCA9IHVzZXJWaWV3cG9ydFRyYW5zZm9ybSgp
Lm1hcFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBzaXplKCkpKTsKLSAgICBzY2VuZS0+cGFpbnRU
b0N1cnJlbnRHTENvbnRleHQodHJhbnNmb3JtVG9TY2VuZSgpLnRvVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgLyogb3BhY2l0eSAqLyAxLCB2aWV3cG9ydCk7Ci19Ci0KLXZvaWQgRXdrVmlldzo6cGFp
bnRUb0NhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCi17Ci0gICAgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwot
ICAgIGlmICghc2NlbmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxjYWlyb190PiBn
cmFwaGljc0NvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoc3VyZmFjZSkpOwotCi0gICAg
Y2Fpcm9fdHJhbnNsYXRlKGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgLSBwYWdlUG9zaXRpb24oKS54
KCksIC0gcGFnZVBvc2l0aW9uKCkueSgpKTsKLSAgICBjYWlyb19zY2FsZShncmFwaGljc0NvbnRl
eHQuZ2V0KCksIHBhZ2VTY2FsZUZhY3RvcigpLCBwYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgY2Fp
cm9fc2NhbGUoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBkZXZpY2VTY2FsZUZhY3RvcigpLCBkZXZp
Y2VTY2FsZUZhY3RvcigpKTsKLQotICAgIHNjZW5lLT5wYWludFRvR3JhcGhpY3NDb250ZXh0KGdy
YXBoaWNzQ29udGV4dC5nZXQoKSk7Ci19Ci0KIHZvaWQgRXdrVmlldzo6ZGlzcGxheVRpbWVyRmly
ZWQoVGltZXI8RXdrVmlldz4qKQogewogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21h
cnREYXRhKCk7CkBAIC01ODUsMTQgKzUyMiwxNCBAQCB2b2lkIEV3a1ZpZXc6OmRpc3BsYXlUaW1l
ckZpcmVkKFRpbWVyPEV3a1ZpZXc+KikKICAgICAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIHBhaW50VG9DYWlyb1N1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7
CisgICAgICAgIFdLVmlld1BhaW50VG9DYWlyb1N1cmZhY2Uod2tWaWV3KCksIHN1cmZhY2UuZ2V0
KCkpOwogICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQoc2QtPmltYWdl
LCAwLCAwLCBzZC0+dmlldy53LCBzZC0+dmlldy5oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGV2YXNfZ2xfbWFrZV9jdXJyZW50KG1fZXZhc0dMLmdldCgpLCBtX2V2YXNHTFN1cmZh
Y2UtPnN1cmZhY2UoKSwgbV9ldmFzR0xDb250ZXh0LT5jb250ZXh0KCkpOwogCi0gICAgcGFpbnRU
b0N1cnJlbnRHTENvbnRleHQoKTsKKyAgICBXS1ZpZXdQYWludFRvQ3VycmVudEdMQ29udGV4dCh3
a1ZpZXcoKSk7CiAKICAgICAvLyBzZC0+aW1hZ2UgaXMgdGllZCB0byBhIG5hdGl2ZSBzdXJmYWNl
LCB3aGljaCBpcyBpbiB0aGUgcGFyZW50J3MgY29vcmRpbmF0ZXMuCiAgICAgZXZhc19vYmplY3Rf
aW1hZ2VfZGF0YV91cGRhdGVfYWRkKHNkLT5pbWFnZSwgc2QtPnZpZXcueCwgc2QtPnZpZXcueSwg
c2QtPnZpZXcudywgc2QtPnZpZXcuaCk7CkBAIC04MDUsNDAgKzc0MiwxNCBAQCBib29sIEV3a1Zp
ZXc6OmNyZWF0ZUdMU3VyZmFjZSgpCiAKICAgICBFdmFzX0dMX0FQSSogZ2wgPSBldmFzX2dsX2Fw
aV9nZXQobV9ldmFzR0wuZ2V0KCkpOwogCi0gICAgSW50UG9pbnQgYm91bmRzRW5kID0gdXNlclZp
ZXdwb3J0VHJhbnNmb3JtKCkubWFwUG9pbnQoSW50UG9pbnQoc2l6ZSgpKSk7Ci0gICAgZ2wtPmds
Vmlld3BvcnQoMCwgMCwgYm91bmRzRW5kLngoKSwgYm91bmRzRW5kLnkoKSk7CisgICAgY29uc3Qg
V0tQb2ludCYgYm91bmRzRW5kID0gV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cyh3a1ZpZXco
KSwgV0tQb2ludE1ha2Uoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOworICAgIGds
LT5nbFZpZXdwb3J0KDAsIDAsIGJvdW5kc0VuZC54LCBib3VuZHNFbmQueSk7CiAgICAgZ2wtPmds
Q2xlYXJDb2xvcigxLjAsIDEuMCwgMS4wLCAwKTsKICAgICBnbC0+Z2xDbGVhcihHTF9DT0xPUl9C
VUZGRVJfQklUKTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEV3a1ZpZXc6OmVudGVy
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQotewotICAgIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKLSAgICBpZiAoIXNjZW5l
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzY2VuZS0+c2V0QWN0aXZlKHRydWUpOwot
Ci0gICAgaWYgKG1faXNBY2NlbGVyYXRlZCAmJiAhbV9ldmFzR0xTdXJmYWNlICYmICFjcmVhdGVH
TFN1cmZhY2UoKSkgewotICAgICAgICBXQVJOKCJGYWlsZWQgdG8gY3JlYXRlIEdMU3VyZmFjZS4i
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIEV3a1ZpZXc6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCi17Ci0gICAg
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZSgpOwotICAgIGlmICghc2NlbmUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNjZW5l
LT5zZXRBY3RpdmUoZmFsc2UpOwotICAgIHJldHVybiB0cnVlOwotfQotCiAjaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCiAvKioKICAqIEBpbnRlcm5hbApAQCAtMTE3NCw3ICsxMDg1LDggQEAg
dm9pZCBFd2tWaWV3OjpoYW5kbGVFdmFzT2JqZWN0Q2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBldmFz
T2JqZWN0KQogICAgICAgICBzbWFydERhdGEtPnZpZXcueSA9IHk7CiAgICAgICAgIGV2YXNfb2Jq
ZWN0X21vdmUoc21hcnREYXRhLT5pbWFnZSwgeCwgeSk7CiAKLSAgICAgICAgc2VsZi0+c2V0VXNl
clZpZXdwb3J0VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkudHJhbnNsYXRlKHgsIHkp
KTsKKyAgICAgICAgY29uc3QgV0tWaWV3TWF0cml4JiB0cmFuc2Zvcm0gPSBXS1ZpZXdNYXRyaXhN
YWtlVHJhbnNsYXRpb24oeCwgeSk7CisgICAgICAgIFdLVmlld1NldFVzZXJWaWV3cG9ydFRyYW5z
Zm9ybWF0aW9uKHNlbGYtPndrVmlldygpLCAmdHJhbnNmb3JtKTsKICAgICB9CiAKICAgICBpZiAo
c21hcnREYXRhLT5jaGFuZ2VkLnNpemUpIHsKQEAgLTEyNDEsMjEgKzExNTMsMjEgQEAgRWluYV9C
b29sIEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdGb2N1c091dChFd2tfVmlld19TbWFydF9EYXRhKiBz
bWFydERhdGEpCiBFaW5hX0Jvb2wgRXdrVmlldzo6aGFuZGxlRXdrVmlld01vdXNlV2hlZWwoRXdr
X1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVs
KiB3aGVlbEV2ZW50KQogewogICAgIEV3a1ZpZXcqIHNlbGYgPSB0b0V3a1ZpZXcoc21hcnREYXRh
KTsKLSAgICBzZWxmLT5wYWdlKCktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVu
dCh3aGVlbEV2ZW50LCBzZWxmLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+dHJhbnNmb3Jt
VG9TY3JlZW4oKSkpOworICAgIHNlbGYtPnBhZ2UoKS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVX
ZWJXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIHNlbGYtPndlYlZpZXcoKS0+dHJhbnNmb3JtRnJvbVNj
ZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogRWluYV9Cb29sIEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZURvd24oRXdrX1ZpZXdfU21h
cnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGRvd25FdmVu
dCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0gdG9Fd2tWaWV3KHNtYXJ0RGF0YSk7Ci0gICAgc2Vs
Zi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZG93bkV2ZW50
LCBzZWxmLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+dHJhbnNmb3JtVG9TY3JlZW4oKSkp
OworICAgIHNlbGYtPnBhZ2UoKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50
KGRvd25FdmVudCwgc2VsZi0+d2ViVmlldygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+
dHJhbnNmb3JtVG9TY3JlZW4oKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wg
RXdrVmlldzo6aGFuZGxlRXdrVmlld01vdXNlVXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiB1cEV2ZW50KQogewogICAgIEV3a1ZpZXcq
IHNlbGYgPSB0b0V3a1ZpZXcoc21hcnREYXRhKTsKLSAgICBzZWxmLT5wYWdlKCktPmhhbmRsZU1v
dXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCBzZWxmLT50cmFuc2Zvcm1Gcm9t
U2NlbmUoKSwgc2VsZi0+dHJhbnNmb3JtVG9TY3JlZW4oKSkpOworICAgIHNlbGYtPnBhZ2UoKS0+
aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KHVwRXZlbnQsIHNlbGYtPndlYlZp
ZXcoKS0+dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsK
IAogICAgIGlmIChJbnB1dE1ldGhvZENvbnRleHRFZmwqIGlucHV0TWV0aG9kQ29udGV4dCA9IHNl
bGYtPmlucHV0TWV0aG9kQ29udGV4dCgpKQogICAgICAgICBpbnB1dE1ldGhvZENvbnRleHQtPmhh
bmRsZU1vdXNlVXBFdmVudCh1cEV2ZW50KTsKQEAgLTEyNjYsNyArMTE3OCw3IEBAIEVpbmFfQm9v
bCBFd2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91c2VVcChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFy
dERhdGEsIGNvbnN0IEV2CiBFaW5hX0Jvb2wgRXdrVmlldzo6aGFuZGxlRXdrVmlld01vdXNlTW92
ZShFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
TW92ZSogbW92ZUV2ZW50KQogewogICAgIEV3a1ZpZXcqIHNlbGYgPSB0b0V3a1ZpZXcoc21hcnRE
YXRhKTsKLSAgICBzZWxmLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VF
dmVudChtb3ZlRXZlbnQsIHNlbGYtPnRyYW5zZm9ybUZyb21TY2VuZSgpLCBzZWxmLT50cmFuc2Zv
cm1Ub1NjcmVlbigpKSk7CisgICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2
ZVdlYk1vdXNlRXZlbnQobW92ZUV2ZW50LCBzZWxmLT53ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21T
Y2VuZSgpLCBzZWxmLT50cmFuc2Zvcm1Ub1NjcmVlbigpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAppbmRleCA0MjJl
OThmLi5iNjNjOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
dy5oCkBAIC0xMzIsMTIgKzEzMiw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNpemUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2l6ZTsgfQogCi0gICAgdm9pZCBzZXRVc2VyVmlld3BvcnRUcmFuc2Zvcm0oY29u
c3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkgeyBtX3VzZXJWaWV3
cG9ydFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsgfQotICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4IHVzZXJWaWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclZpZXdw
b3J0VHJhbnNmb3JtOyB9Ci0KLSAgICAvLyBGSVhNRTogQ29udmVydCB0byBUcmFuc2Zvcm1hdGlv
bk1hdHJpeC4KLSAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtVG9TY2VuZSgp
IGNvbnN0OwotICAgIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1Gcm9tU2NlbmUo
KSBjb25zdDsKICAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtVG9TY3JlZW4o
KSBjb25zdDsKIAogICAgIHZvaWQgcGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKQEAgLTE3NCw4
ICsxNjgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXaW5kb3dHZW9tZXRyeShjb25zdCBXS1Jl
Y3QmKTsKIAogICAgIGJvb2wgY3JlYXRlR0xTdXJmYWNlKCk7Ci0gICAgYm9vbCBlbnRlckFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7Ci0gICAgYm9vbCBleGl0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUoKTsKICAgICB2b2lkIHNldE5lZWRzU3VyZmFjZVJlc2l6ZSgpIHsgbV9wZW5kaW5n
U3VyZmFjZVJlc2l6ZSA9IHRydWU7IH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpA
QCAtMjI4LDggKzIyMCw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc3BsYXlUaW1lckZpcmVk
KFdlYkNvcmU6OlRpbWVyPEV3a1ZpZXc+Kik7CiAKLSAgICBXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmUqIGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwotCiAgICAgLy8gRXZhc19T
bWFydF9DbGFzcyBjYWxsYmFjayBpbnRlcmZhY2U6CiAgICAgc3RhdGljIHZvaWQgaGFuZGxlRXZh
c09iamVjdEFkZChFdmFzX09iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIGhhbmRsZUV2YXNPYmpl
Y3REZWxldGUoRXZhc19PYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcAppbmRleCBjOTFkN2I4Li4yMzU0ZWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAg
RWluYV9Cb29sIGV3a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IEV3a19Ub3VjaF9FdmVudF9UeXBlIHQKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwocG9pbnRzLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIGltcGwsIGZhbHNlKTsKIAotICAgIGltcGwtPnBhZ2UoKS0+aGFuZGxlVG91Y2hFdmVudChO
YXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJzLCBpbXBsLT50cmFuc2Zv
cm1Gcm9tU2NlbmUoKSwgaW1wbC0+dHJhbnNmb3JtVG9TY3JlZW4oKSwgZWNvcmVfdGltZV9nZXQo
KSkpOworICAgIGltcGwtPnBhZ2UoKS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2
ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJzLCBpbXBsLT53ZWJWaWV3KCktPnRyYW5zZm9ybUZy
b21TY2VuZSgpLCBpbXBsLT50cmFuc2Zvcm1Ub1NjcmVlbigpLCBlY29yZV90aW1lX2dldCgpKSk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJWaWV3LmNwcAppbmRleCBjM2MwNjY2Li45NjVlNGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViVmlldy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAKKyNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlckVmbC5oIgogI2luY2x1ZGUg
IkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCiAjaW5jbHVkZSAiRXdrVmlldy5oIgpAQCAtMzgsNiAr
MzksNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVu
dUxpc3RlbmVyRWZsLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg+CiAKICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgpAQCAt
NzYsNiArNzgsNDIgQEAgV2ViVmlldzo6fldlYlZpZXcoKQogdm9pZCBXZWJWaWV3Ojppbml0aWFs
aXplKCkKIHsKICAgICBtX3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKCk7CisgICAgaWYgKENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKSkK
KyAgICAgICAgc2NlbmUtPnNldEFjdGl2ZSh0cnVlKTsKK30KKwordm9pZCBXZWJWaWV3OjpwYWlu
dFRvQ3VycmVudEdMQ29udGV4dCgpCit7CisgICAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBz
Y2VuZSA9IGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOworICAgIGlmICghc2NlbmUpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGNsZWFuIHVwIHRoaXMgY29k
ZSBhcyBpdCBpcyBzcGxpdCBvdmVyIENvb3JkR2Z4IGFuZCBQYWdlLgorICAgIHNjZW5lLT5zZXRE
cmF3c0JhY2tncm91bmQobV9wYWdlLT5kcmF3c0JhY2tncm91bmQoKSk7CisKKyAgICBGbG9hdFJl
Y3Qgdmlld3BvcnQgPSBtX3VzZXJWaWV3cG9ydFRyYW5zZm9ybS5tYXBSZWN0KEludFJlY3QoSW50
UG9pbnQoKSwgbV9ld2tWaWV3LT5zaXplKCkpKTsKKyAgICBzY2VuZS0+cGFpbnRUb0N1cnJlbnRH
TENvbnRleHQodHJhbnNmb3JtVG9TY2VuZSgpLnRvVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgLyog
b3BhY2l0eSAqLyAxLCB2aWV3cG9ydCk7Cit9CisKK3ZvaWQgV2ViVmlldzo6cGFpbnRUb0NhaXJv
U3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCit7CisgICAgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOworICAgIGlmICgh
c2NlbmUpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxjYWlyb190PiBncmFwaGljc0Nv
bnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoc3VyZmFjZSkpOworCisgICAgY29uc3QgRmxv
YXRQb2ludCYgcGFnZVBvc2l0aW9uID0gbV9ld2tWaWV3LT5wYWdlUG9zaXRpb24oKTsKKyAgICBj
YWlyb190cmFuc2xhdGUoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCAtIHBhZ2VQb3NpdGlvbi54KCks
IC0gcGFnZVBvc2l0aW9uLnkoKSk7CisgICAgY2Fpcm9fc2NhbGUoZ3JhcGhpY3NDb250ZXh0Lmdl
dCgpLCBtX2V3a1ZpZXctPnBhZ2VTY2FsZUZhY3RvcigpLCBtX2V3a1ZpZXctPnBhZ2VTY2FsZUZh
Y3RvcigpKTsKKyAgICBjYWlyb19zY2FsZShncmFwaGljc0NvbnRleHQuZ2V0KCksIG1fcGFnZS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKworICAg
IHNjZW5lLT5wYWludFRvR3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29udGV4dC5nZXQoKSk7Cit9
CisKK0ludFBvaW50IFdlYlZpZXc6OnVzZXJWaWV3cG9ydFRvQ29udGVudHMoY29uc3QgSW50UG9p
bnQmIHBvaW50KSBjb25zdAoreworICAgIHJldHVybiBtX3VzZXJWaWV3cG9ydFRyYW5zZm9ybS5t
YXBQb2ludChwb2ludCk7CiB9CiAKIEV2YXNfT2JqZWN0KiBXZWJWaWV3OjpldmFzT2JqZWN0KCkK
QEAgLTE1Myw2ICsxOTEsMzYgQEAgdm9pZCBXZWJWaWV3OjpkaWRDaGFuZ2VDb250ZW50c1NpemUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDb250
ZW50c1NpemUodGhpcywgc2l6ZSk7CiB9CiAKK0FmZmluZVRyYW5zZm9ybSBXZWJWaWV3Ojp0cmFu
c2Zvcm1Gcm9tU2NlbmUoKSBjb25zdAoreworICAgIHJldHVybiB0cmFuc2Zvcm1Ub1NjZW5lKCku
aW52ZXJzZSgpOworfQorCitBZmZpbmVUcmFuc2Zvcm0gV2ViVmlldzo6dHJhbnNmb3JtVG9TY2Vu
ZSgpIGNvbnN0Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV91c2Vy
Vmlld3BvcnRUcmFuc2Zvcm07CisKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwYWdlUG9zaXRpb24g
PSBtX2V3a1ZpZXctPnBhZ2VQb3NpdGlvbigpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUocGFn
ZVBvc2l0aW9uLngoKSwgcGFnZVBvc2l0aW9uLnkoKSk7CisgICAgdHJhbnNmb3JtLnNjYWxlKG1f
cGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgdHJhbnNmb3JtLnNjYWxlKG1fZXdrVmll
dy0+cGFnZVNjYWxlRmFjdG9yKCkpOworCisgICAgcmV0dXJuIHRyYW5zZm9ybS50b0FmZmluZVRy
YW5zZm9ybSgpOworfQorCitDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIFdlYlZpZXc6OmNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZSgpCit7CisgICAgRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0Fy
ZWEgPSBtX3BhZ2UtPmRyYXdpbmdBcmVhKCk7CisgICAgaWYgKCFkcmF3aW5nQXJlYSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
KiBjb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSA9IGRyYXdpbmdBcmVhLT5jb29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eSgpOworICAgIGlmICghY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5LT5jb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKK30KKwogLy8gUGFnZSBD
bGllbnQKIAogUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBXZWJWaWV3OjpjcmVhdGVEcmF3
aW5nQXJlYVByb3h5KCkKQEAgLTMyNSwxMiArMzkzLDE0IEBAIHZvaWQgV2ViVmlldzo6c2V0Rmlu
ZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29sLCBib29sKQogCiB2b2lk
IFdlYlZpZXc6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVl
Q29udGV4dCYpCiB7Ci0gICAgbV9ld2tWaWV3LT5lbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKCk7CisgICAgaWYgKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUoKSkKKyAgICAgICAgc2NlbmUtPnNldEFjdGl2ZSh0cnVlKTsKIH0K
IAogdm9pZCBXZWJWaWV3OjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQogewotICAg
IG1fZXdrVmlldy0+ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CisgICAgaWYgKENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUo
KSkKKyAgICAgICAgc2NlbmUtPnNldEFjdGl2ZShmYWxzZSk7CiB9CiAKIHZvaWQgV2ViVmlldzo6
dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCmluZGV4IGFiMjI4YjAuLjk2MGM2
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCkBAIC0zMSwxMyArMzEs
MTkgQEAKICNpbmNsdWRlICJEZWZhdWx0VW5kb0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdlb21ldHJ5
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50Lmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogCiBjbGFzcyBFd2tW
aWV3OwogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQYWdlVmlld3BvcnRDb250cm9s
bGVyOwpAQCAtNTIsNiArNTgsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbml0aWFsaXplKCk7
CiAKKyAgICB2b2lkIHNldFVzZXJWaWV3cG9ydFRyYW5zZm9ybShjb25zdCBXZWJDb3JlOjpUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdXNlclZpZXdwb3J0VHJhbnNmb3JtKSB7IG1fdXNlclZpZXdwb3J0
VHJhbnNmb3JtID0gdXNlclZpZXdwb3J0VHJhbnNmb3JtOyB9CisgICAgV2ViQ29yZTo6SW50UG9p
bnQgdXNlclZpZXdwb3J0VG9Db250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0
OworCisgICAgdm9pZCBwYWludFRvQ3VycmVudEdMQ29udGV4dCgpOworICAgIHZvaWQgcGFpbnRU
b0NhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqKTsKKwogICAgIFdLUGFnZVJlZiBwYWdlUmVm
KCkgY29uc3QgeyByZXR1cm4gdG9BUEkobV9wYWdlLmdldCgpKTsgfQogCiAgICAgdm9pZCBzZXRE
cmF3c0JhY2tncm91bmQoYm9vbCk7CkBAIC03NSw3ICs4NywxMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB1cGRhdGVWaWV3cG9ydFNpemUoKTsKICAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKKyAgICAvLyBGSVhNRTogU2hvdWxkIGJlIHByaXZh
dGUuCisgICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybUZyb21TY2VuZSgpIGNv
bnN0OworICAgIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1Ub1NjZW5lKCkgY29u
c3Q7CisKIHByaXZhdGU6CisgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBj
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKKwogICAgIC8vIFBhZ2VDbGllbnQKICAgICBQYXNz
T3duUHRyPERyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKSBPVkVSUklE
RTsKIApAQCAtMTU2LDYgKzE3NCw3IEBAIHByaXZhdGU6CiAgICAgRXdrVmlldyogbV9ld2tWaWV3
OwogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IG1fcGFnZTsKICAgICBEZWZhdWx0VW5kb0NvbnRy
b2xsZXIgbV91bmRvQ29udHJvbGxlcjsKKyAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBtX3VzZXJWaWV3cG9ydFRyYW5zZm9ybTsKICAgICAvLyBGSVhNRTogUmVtb3ZlIHdoZW4gcG9z
c2libGUuCiAgICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bD4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6OlBh
Z2VWaWV3cG9ydENvbnRyb2xsZXI+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189276</attachid>
            <date>2013-02-20 03:25:21 -0800</date>
            <delta_ts>2013-02-20 05:28:21 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug110216</filename>
            <type>text/plain</type>
            <size>21772</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGZmM2RhYjZkNDdiNDdmN2Y5MGQ5MTkzZDBlMjc4MTgwZjA3ZWJjMWEKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIEZlYiAyMCAxMzoxMjo0NiAyMDEzICswMjAwCgogICAgYnVnMTEwMjE2CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGRhYmQ3ZmIuLjQ3ZmVmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMy0w
Mi0yMCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbV0syXVtFRkxdIE1vdmUgQUMgY29kZSBmcm9tIEV3a1ZpZXcgdG8gV2ViVmll
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZWxl
cmF0ZWQgY29tcG9zaXRpbmcgY29kZSBpcyBtb3ZlZCBmcm9tIEV3a1ZpZXcgdG8gV2ViVmlldy4K
KyAgICAgICAgQWRkZWQgbmV3IFdLVmlldyBBUEkgdG8gYmUgdXNlZCBmcm9tIEV3a1ZpZXcgaW5z
dGVhZCBvZiBkaXJlY3QgYWNjZXNzaW5nCisgICAgICAgIHRvIGNvb3JkaW5hdGVkIGdyYXBoaWNz
IHNjZW5lLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAg
ICAgICAoV0tWaWV3U2V0VXNlclZpZXdwb3J0VHJhbnNmb3JtYXRpb24pOgorICAgICAgICAoV0tW
aWV3VXNlclZpZXdwb3J0VG9Db250ZW50cyk6CisgICAgICAgIChXS1ZpZXdQYWludFRvQ3VycmVu
dEdMQ29udGV4dCk6CisgICAgICAgIChXS1ZpZXdQYWludFRvQ2Fpcm9TdXJmYWNlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oOgorCisgICAgICAgICAgICBBZGRlZCBX
S1ZpZXcgQVBJIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgIEFkZGVkIFdLVmlld01hdHJpeCB0eXBl
IHRvIHJlcHJlc2VudCBXS1ZpZXcgdHJhbnNmb3JtYXRpb24gbWF0cml4LgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpFd2tWaWV3
KToKKyAgICAgICAgKEV3a1ZpZXc6OmRpc3BsYXlUaW1lckZpcmVkKToKKyAgICAgICAgKEV3a1Zp
ZXc6OmZlZWRUb3VjaEV2ZW50KToKKyAgICAgICAgKEV3a1ZpZXc6OmNyZWF0ZUdMU3VyZmFjZSk6
CisgICAgICAgIChFd2tWaWV3OjpoYW5kbGVFdmFzT2JqZWN0Q2FsY3VsYXRlKToKKyAgICAgICAg
KEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZVdoZWVsKToKKyAgICAgICAgKEV3a1ZpZXc6Omhh
bmRsZUV3a1ZpZXdNb3VzZURvd24pOgorICAgICAgICAoRXdrVmlldzo6aGFuZGxlRXdrVmlld01v
dXNlVXApOgorICAgICAgICAoRXdrVmlldzo6aGFuZGxlRXdrVmlld01vdXNlTW92ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAoRXdrVmlldyk6CisK
KyAgICAgICAgICAgIFVzaW5nIG5ldyBXS1ZpZXcgQVBJLgorCisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpwYWludFRvQ3Vy
cmVudEdMQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnBhaW50VG9DYWlyb1N1
cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojp1c2VyVmlld3BvcnRUb0NvbnRlbnRz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6dHJhbnNmb3JtVG9TY2VuZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXc6OmNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3OjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvV2ViVmlldy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXc6OnNldFVzZXJWaWV3cG9ydFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJWaWV3
KToKKworICAgICAgICAgICAgQWRkZWQgV2ViVmlldyBtZXRob2RzIHRvIHN1cHBvcnQgbmV3IFdL
VmlldyBBUEkuCisKIDIwMTMtMDItMTkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ2xhcmlmeSBpc0luV2luZG93IHZzLiBpc1Zpc2libGUgcGF0aCB0
aHJvdWdoIHRvIFJlbmRlckxheWVyQ29tcG9zaXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCmluZGV4IDc2ZWQ5ZGYuLjE2MTU1OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTcsNiArNTgsMzAgQEAgdm9pZCBXS1ZpZXdTZXRWaWV3
Q2xpZW50KFdLVmlld1JlZiB2aWV3UmVmLCBjb25zdCBXS1ZpZXdDbGllbnQqIGNsaWVudCkKICAg
ICB0b0ltcGwodmlld1JlZiktPmluaXRpYWxpemVDbGllbnQoY2xpZW50KTsKIH0KIAordm9pZCBX
S1ZpZXdTZXRVc2VyVmlld3BvcnRUcmFuc2Zvcm1hdGlvbihXS1ZpZXdSZWYgdmlld1JlZiwgY29u
c3QgV0tWaWV3TWF0cml4KiB0cmFuc2Zvcm1hdGlvbikKK3sKKyAgICBXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtYXRyaXgodHJhbnNmb3JtYXRpb24tPnh4LCB0cmFuc2Zvcm1hdGlvbi0+
eXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWF0
aW9uLT54eSwgdHJhbnNmb3JtYXRpb24tPnl5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFuc2Zvcm1hdGlvbi0+eDAsIHRyYW5zZm9ybWF0aW9uLT55MCk7Cisg
ICAgdG9JbXBsKHZpZXdSZWYpLT5zZXRVc2VyVmlld3BvcnRUcmFuc2Zvcm0obWF0cml4KTsKK30K
KworV0tQb2ludCBXS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzKFdLVmlld1JlZiB2aWV3UmVm
LCBXS1BvaW50IHBvaW50KQoreworICAgIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiByZXN1bHQg
PSB0b0ltcGwodmlld1JlZiktPnVzZXJWaWV3cG9ydFRvQ29udGVudHModG9JbnRQb2ludChwb2lu
dCkpOworICAgIHJldHVybiBXS1BvaW50TWFrZShyZXN1bHQueCgpLCByZXN1bHQueSgpKTsKK30K
Kwordm9pZCBXS1ZpZXdQYWludFRvQ3VycmVudEdMQ29udGV4dChXS1ZpZXdSZWYgdmlld1JlZikK
K3sKKyAgICB0b0ltcGwodmlld1JlZiktPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KCk7Cit9CisK
K3ZvaWQgV0tWaWV3UGFpbnRUb0NhaXJvU3VyZmFjZShXS1ZpZXdSZWYgdmlld1JlZiwgY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlKQoreworICAgIHRvSW1wbCh2aWV3UmVmKS0+cGFpbnRUb0NhaXJv
U3VyZmFjZShzdXJmYWNlKTsKK30KKwogV0tQYWdlUmVmIFdLVmlld0dldFBhZ2UoV0tWaWV3UmVm
IHZpZXdSZWYpCiB7CiAgICAgcmV0dXJuIHRvSW1wbCh2aWV3UmVmKS0+cGFnZVJlZigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKaW5kZXggYjQyYjIyNy4u
MTAwYjVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5o
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0
cm9uaWNzCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMxLDEwICszMiwyMSBAQCB0eXBl
ZGVmIHN0cnVjdCBfRXZhcyBFdmFzOwogdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNf
T2JqZWN0OwogI2VuZGlmCiAKK3R5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1
cmZhY2VfdDsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitz
dHJ1Y3QgV0tWaWV3TWF0cml4IHsKKyAgICBkb3VibGUgeHg7IGRvdWJsZSB5eDsKKyAgICBkb3Vi
bGUgeHk7IGRvdWJsZSB5eTsKKyAgICBkb3VibGUgeDA7IGRvdWJsZSB5MDsKK307Cit0eXBlZGVm
IHN0cnVjdCBXS1ZpZXdNYXRyaXggV0tWaWV3TWF0cml4OworCitXS19JTkxJTkUgV0tWaWV3TWF0
cml4IFdLVmlld01hdHJpeE1ha2VUcmFuc2xhdGlvbihkb3VibGUgeDAsIGRvdWJsZSB5MCkgeyBy
ZXR1cm4gKFdLVmlld01hdHJpeCkgeyAxLCAwLCAwLCAxLCB4MCwgeTAgfTsgfQorCiB0eXBlZGVm
IHZvaWQgKCpXS1ZpZXdWaWV3TmVlZHNEaXNwbGF5Q2FsbGJhY2spKFdLVmlld1JlZiB2aWV3LCBX
S1JlY3QgYXJlYSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1Zp
ZXdQYWdlRGlkQ2hhbmdlQ29udGVudHNTaXplQ2FsbGJhY2spKFdLVmlld1JlZiB2aWV3LCBXS1Np
emUgc2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKQEAgLTU3LDYgKzY5LDEyIEBAIFdL
X0VYUE9SVCBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlV2l0aEZpeGVkTGF5b3V0KEV2YXMqIGNhbnZh
cywgV0tDb250ZXh0UmVmIGNvbnRlCiBXS19FWFBPUlQgdm9pZCBXS1ZpZXdJbml0aWFsaXplKFdL
Vmlld1JlZik7CiBXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZXRWaWV3Q2xpZW50KFdLVmlld1JlZiwg
Y29uc3QgV0tWaWV3Q2xpZW50Kik7CiAKK1dLX0VYUE9SVCB2b2lkIFdLVmlld1NldFVzZXJWaWV3
cG9ydFRyYW5zZm9ybWF0aW9uKFdLVmlld1JlZiwgY29uc3QgV0tWaWV3TWF0cml4KiB0cmFuc2Zv
cm1hdGlvbik7CitXS19FWFBPUlQgV0tQb2ludCBXS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRz
KFdLVmlld1JlZiwgV0tQb2ludCk7CisKK1dLX0VYUE9SVCB2b2lkIFdLVmlld1BhaW50VG9DdXJy
ZW50R0xDb250ZXh0KFdLVmlld1JlZik7CitXS19FWFBPUlQgdm9pZCBXS1ZpZXdQYWludFRvQ2Fp
cm9TdXJmYWNlKFdLVmlld1JlZiwgY2Fpcm9fc3VyZmFjZV90Kik7CisKIFdLX0VYUE9SVCBXS1Bh
Z2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYpOwogCiBXS19FWFBPUlQgdm9pZCBXS1ZpZXdT
ZXRUaGVtZVBhdGgoV0tWaWV3UmVmLCBXS1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCmluZGV4IDdjMDQ2NGMuLjI0ZjJkNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC0yMiw3ICsy
Miw2IEBACiAjaW5jbHVkZSAiRXdrVmlldy5oIgogCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGll
bnRFZmwuaCIKLSNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIgogI2lu
Y2x1ZGUgIkVmbFNjcmVlblV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkZpbmRDbGllbnRFZmwuaCIK
ICNpbmNsdWRlICJGb3JtQ2xpZW50RWZsLmgiCkBAIC02NCw5ICs2Myw3IEBACiAjaW5jbHVkZSA8
RWRqZS5oPgogI2luY2x1ZGUgPEV2YXNfR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRp
bGl0aWVzRWZsLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNm
b3JtYXRpb25NYXRyaXguaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2VDYWlyby5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTI2OSwxMCArMjY2LDcgQEAgRXdrVmlldzo6
RXdrVmlldyhFdmFzX09iamVjdCogZXZhc09iamVjdCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBj
b250ZXh0LCBXS1BhZ2UKIAogICAgIFdLVmlld0luaXRpYWxpemUod2tWaWV3KCkpOwogCi0gICAg
aWYgKGJlaGF2aW9yID09IERlZmF1bHRCZWhhdmlvcikgewotICAgICAgICBjb29yZGluYXRlZEdy
YXBoaWNzU2NlbmUoKS0+c2V0QWN0aXZlKHRydWUpOwotICAgICAgICBXS1BhZ2VTZXRVc2VGaXhl
ZExheW91dCh3a1BhZ2UoKSwgdHJ1ZSk7Ci0gICAgfQorICAgIFdLUGFnZVNldFVzZUZpeGVkTGF5
b3V0KHdrUGFnZSgpLCBiZWhhdmlvciA9PSBEZWZhdWx0QmVoYXZpb3IpOwogCiAgICAgV0tQYWdl
R3JvdXBSZWYgd2tQYWdlR3JvdXAgPSBXS1BhZ2VHZXRQYWdlR3JvdXAod2tQYWdlKCkpOwogICAg
IFdLUHJlZmVyZW5jZXNSZWYgd2tQcmVmZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5j
ZXMod2tQYWdlR3JvdXApOwpAQCAtNDczLDIyICs0NjcsNiBAQCB2b2lkIEV3a1ZpZXc6OnNldFNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICB3ZWJWaWV3KCktPnVwZGF0ZVZpZXdwb3J0U2l6
ZSgpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gRXdrVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gdHJhbnNmb3JtVG9TY2VuZSgpLmludmVyc2UoKTsKLX0KLQot
QWZmaW5lVHJhbnNmb3JtIEV3a1ZpZXc6OnRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdAotewotICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IHVzZXJWaWV3cG9ydFRyYW5zZm9ybSgp
OwotCi0gICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtcGFnZVBvc2l0aW9uKCkueCgpLCAtcGFnZVBv
c2l0aW9uKCkueSgpKTsKLSAgICB0cmFuc2Zvcm0uc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IoKSk7
Ci0gICAgdHJhbnNmb3JtLnNjYWxlKHBhZ2VTY2FsZUZhY3RvcigpKTsKLQotICAgIHJldHVybiB0
cmFuc2Zvcm0udG9BZmZpbmVUcmFuc2Zvcm0oKTsKLX0KLQogQWZmaW5lVHJhbnNmb3JtIEV3a1Zp
ZXc6OnRyYW5zZm9ybVRvU2NyZWVuKCkgY29uc3QKIHsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJh
bnNmb3JtOwpAQCAtNTIyLDUyICs1MDAsMTEgQEAgQWZmaW5lVHJhbnNmb3JtIEV3a1ZpZXc6OnRy
YW5zZm9ybVRvU2NyZWVuKCkgY29uc3QKICAgICByZXR1cm4gdHJhbnNmb3JtOwogfQogCi1Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUqIEV3a1ZpZXc6OmNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgp
Ci17Ci0gICAgRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEgPSBwYWdlKCktPmRyYXdpbmdB
cmVhKCk7Ci0gICAgaWYgKCFkcmF3aW5nQXJlYSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBX
ZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KiBjb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eSA9IGRyYXdpbmdBcmVhLT5jb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSgp
OwotICAgIGlmICghY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgcmV0dXJuIGNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LT5jb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUoKTsKLX0KLQogaW5saW5lIEV3a19WaWV3X1NtYXJ0X0RhdGEqIEV3
a1ZpZXc6OnNtYXJ0RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRvU21hcnREYXRhKG1fZXZh
c09iamVjdCk7CiB9CiAKLXZvaWQgRXdrVmlldzo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKQot
ewotICAgIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBo
aWNzU2NlbmUoKTsKLSAgICBpZiAoIXNjZW5lKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBG
SVhNRTogV2UgbmVlZCB0byBjbGVhbiB1cCB0aGlzIGNvZGUgYXMgaXQgaXMgc3BsaXQgb3ZlciBD
b29yZEdmeCBhbmQgUGFnZS4KLSAgICBzY2VuZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKFdLVmlld0dl
dERyYXdzQmFja2dyb3VuZCh3a1ZpZXcoKSkpOwotCi0gICAgRmxvYXRSZWN0IHZpZXdwb3J0ID0g
dXNlclZpZXdwb3J0VHJhbnNmb3JtKCkubWFwUmVjdChJbnRSZWN0KEludFBvaW50KCksIHNpemUo
KSkpOwotICAgIHNjZW5lLT5wYWludFRvQ3VycmVudEdMQ29udGV4dCh0cmFuc2Zvcm1Ub1NjZW5l
KCkudG9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCAvKiBvcGFjaXR5ICovIDEsIHZpZXdwb3J0KTsK
LX0KLQotdm9pZCBFd2tWaWV3OjpwYWludFRvQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCog
c3VyZmFjZSkKLXsKLSAgICBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIHNjZW5lID0gY29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lKCk7Ci0gICAgaWYgKCFzY2VuZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgUmVmUHRyPGNhaXJvX3Q+IGdyYXBoaWNzQ29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2Ny
ZWF0ZShzdXJmYWNlKSk7Ci0KLSAgICBjYWlyb190cmFuc2xhdGUoZ3JhcGhpY3NDb250ZXh0Lmdl
dCgpLCAtIHBhZ2VQb3NpdGlvbigpLngoKSwgLSBwYWdlUG9zaXRpb24oKS55KCkpOwotICAgIGNh
aXJvX3NjYWxlKGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgcGFnZVNjYWxlRmFjdG9yKCksIHBhZ2VT
Y2FsZUZhY3RvcigpKTsKLSAgICBjYWlyb19zY2FsZShncmFwaGljc0NvbnRleHQuZ2V0KCksIGRl
dmljZVNjYWxlRmFjdG9yKCksIGRldmljZVNjYWxlRmFjdG9yKCkpOwotCi0gICAgc2NlbmUtPnBh
aW50VG9HcmFwaGljc0NvbnRleHQoZ3JhcGhpY3NDb250ZXh0LmdldCgpKTsKLX0KLQogdm9pZCBF
d2tWaWV3OjpkaXNwbGF5VGltZXJGaXJlZChUaW1lcjxFd2tWaWV3PiopCiB7CiAgICAgRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsKQEAgLTU4NSwxNCArNTIyLDE0IEBAIHZv
aWQgRXdrVmlldzo6ZGlzcGxheVRpbWVyRmlyZWQoVGltZXI8RXdrVmlldz4qKQogICAgICAgICBp
ZiAoIXN1cmZhY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgcGFpbnRUb0NhaXJv
U3VyZmFjZShzdXJmYWNlLmdldCgpKTsKKyAgICAgICAgV0tWaWV3UGFpbnRUb0NhaXJvU3VyZmFj
ZSh3a1ZpZXcoKSwgc3VyZmFjZS5nZXQoKSk7CiAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2Rh
dGFfdXBkYXRlX2FkZChzZC0+aW1hZ2UsIDAsIDAsIHNkLT52aWV3LncsIHNkLT52aWV3LmgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFz
R0wuZ2V0KCksIG1fZXZhc0dMU3VyZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHTENvbnRleHQtPmNv
bnRleHQoKSk7CiAKLSAgICBwYWludFRvQ3VycmVudEdMQ29udGV4dCgpOworICAgIFdLVmlld1Bh
aW50VG9DdXJyZW50R0xDb250ZXh0KHdrVmlldygpKTsKIAogICAgIC8vIHNkLT5pbWFnZSBpcyB0
aWVkIHRvIGEgbmF0aXZlIHN1cmZhY2UsIHdoaWNoIGlzIGluIHRoZSBwYXJlbnQncyBjb29yZGlu
YXRlcy4KICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQoc2QtPmltYWdlLCBz
ZC0+dmlldy54LCBzZC0+dmlldy55LCBzZC0+dmlldy53LCBzZC0+dmlldy5oKTsKQEAgLTc1MCw3
ICs2ODcsNyBAQCB2b2lkIEV3a1ZpZXc6OnNldE1vdXNlRXZlbnRzRW5hYmxlZChib29sIGVuYWJs
ZWQpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgRXdrVmlldzo6ZmVlZFRvdWNoRXZl
bnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNv
bnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycykKIHsKLSAgICBwYWdlKCktPmhhbmRsZVRvdWNo
RXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgdHJhbnNm
b3JtRnJvbVNjZW5lKCksIHRyYW5zZm9ybVRvU2NyZWVuKCksIGVjb3JlX3RpbWVfZ2V0KCkpKTsK
KyAgICBwYWdlKCktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudCh0eXBlLCBw
b2ludHMsIG1vZGlmaWVycywgd2ViVmlldygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgdHJhbnNm
b3JtVG9TY3JlZW4oKSwgZWNvcmVfdGltZV9nZXQoKSkpOwogfQogCiB2b2lkIEV3a1ZpZXc6OnNl
dFRvdWNoRXZlbnRzRW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC04MTAsNDAgKzc0NywxNCBAQCBi
b29sIEV3a1ZpZXc6OmNyZWF0ZUdMU3VyZmFjZSgpCiAKICAgICBFdmFzX0dMX0FQSSogZ2wgPSBl
dmFzX2dsX2FwaV9nZXQobV9ldmFzR0wuZ2V0KCkpOwogCi0gICAgSW50UG9pbnQgYm91bmRzRW5k
ID0gdXNlclZpZXdwb3J0VHJhbnNmb3JtKCkubWFwUG9pbnQoSW50UG9pbnQoc2l6ZSgpKSk7Ci0g
ICAgZ2wtPmdsVmlld3BvcnQoMCwgMCwgYm91bmRzRW5kLngoKSwgYm91bmRzRW5kLnkoKSk7Cisg
ICAgY29uc3QgV0tQb2ludCYgYm91bmRzRW5kID0gV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50
cyh3a1ZpZXcoKSwgV0tQb2ludE1ha2Uoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkp
OworICAgIGdsLT5nbFZpZXdwb3J0KDAsIDAsIGJvdW5kc0VuZC54LCBib3VuZHNFbmQueSk7CiAg
ICAgZ2wtPmdsQ2xlYXJDb2xvcigxLjAsIDEuMCwgMS4wLCAwKTsKICAgICBnbC0+Z2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUKTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEV3a1Zp
ZXc6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQotewotICAgIENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKLSAgICBp
ZiAoIXNjZW5lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzY2VuZS0+c2V0QWN0aXZl
KHRydWUpOwotCi0gICAgaWYgKG1faXNBY2NlbGVyYXRlZCAmJiAhbV9ldmFzR0xTdXJmYWNlICYm
ICFjcmVhdGVHTFN1cmZhY2UoKSkgewotICAgICAgICBXQVJOKCJGYWlsZWQgdG8gY3JlYXRlIEdM
U3VyZmFjZS4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0
cnVlOwotfQotCi1ib29sIEV3a1ZpZXc6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgp
Ci17Ci0gICAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZSgpOwotICAgIGlmICghc2NlbmUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHNjZW5lLT5zZXRBY3RpdmUoZmFsc2UpOwotICAgIHJldHVybiB0cnVlOwotfQotCiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAvKioKICAqIEBpbnRlcm5hbApAQCAtMTE3OSw3ICsx
MDkwLDggQEAgdm9pZCBFd2tWaWV3OjpoYW5kbGVFdmFzT2JqZWN0Q2FsY3VsYXRlKEV2YXNfT2Jq
ZWN0KiBldmFzT2JqZWN0KQogICAgICAgICBzbWFydERhdGEtPnZpZXcueSA9IHk7CiAgICAgICAg
IGV2YXNfb2JqZWN0X21vdmUoc21hcnREYXRhLT5pbWFnZSwgeCwgeSk7CiAKLSAgICAgICAgc2Vs
Zi0+c2V0VXNlclZpZXdwb3J0VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkudHJhbnNs
YXRlKHgsIHkpKTsKKyAgICAgICAgY29uc3QgV0tWaWV3TWF0cml4JiB0cmFuc2Zvcm0gPSBXS1Zp
ZXdNYXRyaXhNYWtlVHJhbnNsYXRpb24oeCwgeSk7CisgICAgICAgIFdLVmlld1NldFVzZXJWaWV3
cG9ydFRyYW5zZm9ybWF0aW9uKHNlbGYtPndrVmlldygpLCAmdHJhbnNmb3JtKTsKICAgICB9CiAK
ICAgICBpZiAoc21hcnREYXRhLT5jaGFuZ2VkLnNpemUpIHsKQEAgLTEyNDYsMjEgKzExNTgsMjEg
QEAgRWluYV9Cb29sIEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdGb2N1c091dChFd2tfVmlld19TbWFy
dF9EYXRhKiBzbWFydERhdGEpCiBFaW5hX0Jvb2wgRXdrVmlldzo6aGFuZGxlRXdrVmlld01vdXNl
V2hlZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01v
dXNlX1doZWVsKiB3aGVlbEV2ZW50KQogewogICAgIEV3a1ZpZXcqIHNlbGYgPSB0b0V3a1ZpZXco
c21hcnREYXRhKTsKLSAgICBzZWxmLT5wYWdlKCktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2Vi
V2hlZWxFdmVudCh3aGVlbEV2ZW50LCBzZWxmLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+
dHJhbnNmb3JtVG9TY3JlZW4oKSkpOworICAgIHNlbGYtPnBhZ2UoKS0+aGFuZGxlV2hlZWxFdmVu
dChOYXRpdmVXZWJXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIHNlbGYtPndlYlZpZXcoKS0+dHJhbnNm
b3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogRWluYV9Cb29sIEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZURvd24oRXdr
X1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24q
IGRvd25FdmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0gdG9Fd2tWaWV3KHNtYXJ0RGF0YSk7
Ci0gICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQo
ZG93bkV2ZW50LCBzZWxmLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+dHJhbnNmb3JtVG9T
Y3JlZW4oKSkpOworICAgIHNlbGYtPnBhZ2UoKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJN
b3VzZUV2ZW50KGRvd25FdmVudCwgc2VsZi0+d2ViVmlldygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUo
KSwgc2VsZi0+dHJhbnNmb3JtVG9TY3JlZW4oKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBF
aW5hX0Jvb2wgRXdrVmlldzo6aGFuZGxlRXdrVmlld01vdXNlVXAoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiB1cEV2ZW50KQogewogICAg
IEV3a1ZpZXcqIHNlbGYgPSB0b0V3a1ZpZXcoc21hcnREYXRhKTsKLSAgICBzZWxmLT5wYWdlKCkt
PmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCBzZWxmLT50cmFu
c2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+dHJhbnNmb3JtVG9TY3JlZW4oKSkpOworICAgIHNlbGYt
PnBhZ2UoKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KHVwRXZlbnQsIHNl
bGYtPndlYlZpZXcoKS0+dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2Ny
ZWVuKCkpKTsKIAogICAgIGlmIChJbnB1dE1ldGhvZENvbnRleHRFZmwqIGlucHV0TWV0aG9kQ29u
dGV4dCA9IHNlbGYtPmlucHV0TWV0aG9kQ29udGV4dCgpKQogICAgICAgICBpbnB1dE1ldGhvZENv
bnRleHQtPmhhbmRsZU1vdXNlVXBFdmVudCh1cEV2ZW50KTsKQEAgLTEyNzEsNyArMTE4Myw3IEBA
IEVpbmFfQm9vbCBFd2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91c2VVcChFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEsIGNvbnN0IEV2CiBFaW5hX0Jvb2wgRXdrVmlldzo6aGFuZGxlRXdrVmll
d01vdXNlTW92ZShFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IEV2YXNfRXZl
bnRfTW91c2VfTW92ZSogbW92ZUV2ZW50KQogewogICAgIEV3a1ZpZXcqIHNlbGYgPSB0b0V3a1Zp
ZXcoc21hcnREYXRhKTsKLSAgICBzZWxmLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZl
V2ViTW91c2VFdmVudChtb3ZlRXZlbnQsIHNlbGYtPnRyYW5zZm9ybUZyb21TY2VuZSgpLCBzZWxm
LT50cmFuc2Zvcm1Ub1NjcmVlbigpKSk7CisgICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2
ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQobW92ZUV2ZW50LCBzZWxmLT53ZWJWaWV3KCktPnRyYW5z
Zm9ybUZyb21TY2VuZSgpLCBzZWxmLT50cmFuc2Zvcm1Ub1NjcmVlbigpKSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApp
bmRleCBiOTQ2NjA4Li42MjllMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlldy5oCkBAIC0xMzIsMTIgKzEzMiw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNp
emUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCi0gICAgdm9pZCBzZXRVc2VyVmlld3BvcnRUcmFu
c2Zvcm0oY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkgeyBt
X3VzZXJWaWV3cG9ydFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsgfQotICAgIFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4IHVzZXJWaWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlclZpZXdwb3J0VHJhbnNmb3JtOyB9Ci0KLSAgICAvLyBGSVhNRTogQ29udmVydCB0byBUcmFu
c2Zvcm1hdGlvbk1hdHJpeC4KLSAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3Jt
VG9TY2VuZSgpIGNvbnN0OwotICAgIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1G
cm9tU2NlbmUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3Jt
VG9TY3JlZW4oKSBjb25zdDsKIAogICAgIHZvaWQgcGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsK
QEAgLTE3NSw4ICsxNjksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXaW5kb3dHZW9tZXRyeShj
b25zdCBXS1JlY3QmKTsKIAogICAgIGJvb2wgY3JlYXRlR0xTdXJmYWNlKCk7Ci0gICAgYm9vbCBl
bnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7Ci0gICAgYm9vbCBleGl0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoKTsKICAgICB2b2lkIHNldE5lZWRzU3VyZmFjZVJlc2l6ZSgpIHsg
bV9wZW5kaW5nU3VyZmFjZVJlc2l6ZSA9IHRydWU7IH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQpAQCAtMjI5LDggKzIyMSw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc3BsYXlU
aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPEV3a1ZpZXc+Kik7CiAKLSAgICBXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUqIGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwotCiAgICAg
Ly8gRXZhc19TbWFydF9DbGFzcyBjYWxsYmFjayBpbnRlcmZhY2U6CiAgICAgc3RhdGljIHZvaWQg
aGFuZGxlRXZhc09iamVjdEFkZChFdmFzX09iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIGhhbmRs
ZUV2YXNPYmplY3REZWxldGUoRXZhc19PYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlZpZXcuY3BwCmluZGV4IDEwYTM4NTEuLjYwNTRmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKIAorI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyRWZsLmgiCiAjaW5j
bHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJFd2tWaWV3LmgiCkBAIC0z
OCw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUG9w
dXBNZW51TGlzdGVuZXJFZmwuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaD4KIAogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lmgi
CkBAIC03Niw2ICs3OCw0MyBAQCBXZWJWaWV3Ojp+V2ViVmlldygpCiB2b2lkIFdlYlZpZXc6Omlu
aXRpYWxpemUoKQogewogICAgIG1fcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKKyAgICBpZiAo
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZSgpKQorICAgICAgICBzY2VuZS0+c2V0QWN0aXZlKHRydWUpOworfQorCit2b2lkIFdlYlZpZXc6
OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KCkKK3sKKyAgICBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUqIHNjZW5lID0gY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7CisgICAgaWYgKCFzY2VuZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gY2xlYW4gdXAgdGhp
cyBjb2RlIGFzIGl0IGlzIHNwbGl0IG92ZXIgQ29vcmRHZnggYW5kIFBhZ2UuCisgICAgc2NlbmUt
PnNldERyYXdzQmFja2dyb3VuZChtX3BhZ2UtPmRyYXdzQmFja2dyb3VuZCgpKTsKKworICAgIEZs
b2F0UmVjdCB2aWV3cG9ydCA9IG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtLm1hcFJlY3QoSW50UmVj
dChJbnRQb2ludCgpLCBtX2V3a1ZpZXctPnNpemUoKSkpOworICAgIHNjZW5lLT5wYWludFRvQ3Vy
cmVudEdMQ29udGV4dCh0cmFuc2Zvcm1Ub1NjZW5lKCkudG9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCAvKiBvcGFjaXR5ICovIDEsIHZpZXdwb3J0KTsKK30KKwordm9pZCBXZWJWaWV3OjpwYWludFRv
Q2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKK3sKKyAgICBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUqIHNjZW5lID0gY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7CisgICAg
aWYgKCFzY2VuZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPGNhaXJvX3Q+IGdyYXBo
aWNzQ29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShzdXJmYWNlKSk7CisKKyAgICBjb25z
dCBGbG9hdFBvaW50JiBwYWdlUG9zaXRpb24gPSBtX2V3a1ZpZXctPnBhZ2VQb3NpdGlvbigpOwor
ICAgIGRvdWJsZSBlZmZlY3RpdmVTY2FsZSA9IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSAq
IG1fZXdrVmlldy0+cGFnZVNjYWxlRmFjdG9yKCk7CisKKyAgICBjYWlyb19tYXRyaXhfdCB0cmFu
c2Zvcm0gPSB7IGVmZmVjdGl2ZVNjYWxlLCAwLCAwLCBlZmZlY3RpdmVTY2FsZSwgLSBwYWdlUG9z
aXRpb24ueCgpLCAtIHBhZ2VQb3NpdGlvbi55KCkgfTsKKyAgICBjYWlyb19zZXRfbWF0cml4KGdy
YXBoaWNzQ29udGV4dC5nZXQoKSwgJnRyYW5zZm9ybSk7CisKKyAgICBzY2VuZS0+cGFpbnRUb0dy
YXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQuZ2V0KCkpOworfQorCitJbnRQb2ludCBXZWJW
aWV3Ojp1c2VyVmlld3BvcnRUb0NvbnRlbnRzKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV91c2VyVmlld3BvcnRUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQpOwog
fQogCiBFdmFzX09iamVjdCogV2ViVmlldzo6ZXZhc09iamVjdCgpCkBAIC0xNzAsNiArMjA5LDM2
IEBAIHZvaWQgV2ViVmlldzo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHNpemUpCiAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ29udGVudHNTaXplKHRoaXMsIHNp
emUpOwogfQogCitBZmZpbmVUcmFuc2Zvcm0gV2ViVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gdHJhbnNmb3JtVG9TY2VuZSgpLmludmVyc2UoKTsKK30KKwor
QWZmaW5lVHJhbnNmb3JtIFdlYlZpZXc6OnRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdAoreworICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IG1fdXNlclZpZXdwb3J0VHJhbnNmb3Jt
OworCisgICAgY29uc3QgRmxvYXRQb2ludCYgcGFnZVBvc2l0aW9uID0gbV9ld2tWaWV3LT5wYWdl
UG9zaXRpb24oKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKHBhZ2VQb3NpdGlvbi54KCksIHBh
Z2VQb3NpdGlvbi55KCkpOworICAgIHRyYW5zZm9ybS5zY2FsZShtX3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCkpOworICAgIHRyYW5zZm9ybS5zY2FsZShtX2V3a1ZpZXctPnBhZ2VTY2FsZUZhY3Rv
cigpKTsKKworICAgIHJldHVybiB0cmFuc2Zvcm0udG9BZmZpbmVUcmFuc2Zvcm0oKTsKK30KKwor
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBXZWJWaWV3Ojpjb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUoKQoreworICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gbV9wYWdlLT5kcmF3
aW5nQXJlYSgpOworICAgIGlmICghZHJhd2luZ0FyZWEpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSogbGF5ZXJUcmVlSG9zdFBy
b3h5ID0gZHJhd2luZ0FyZWEtPmNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KCk7CisgICAg
aWYgKCFsYXllclRyZWVIb3N0UHJveHkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IGxheWVyVHJlZUhvc3RQcm94eS0+Y29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7Cit9CisKIC8v
IFBhZ2UgQ2xpZW50CiAKIFBhc3NPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gV2ViVmlldzo6Y3Jl
YXRlRHJhd2luZ0FyZWFQcm94eSgpCkBAIC0zNDIsMTIgKzQxMSwxNCBAQCB2b2lkIFdlYlZpZXc6
OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCwgYm9vbCkK
IAogdm9pZCBXZWJWaWV3OjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExh
eWVyVHJlZUNvbnRleHQmKQogewotICAgIG1fZXdrVmlldy0+ZW50ZXJBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSgpOworICAgIGlmIChDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIHNjZW5lID0g
Y29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCkpCisgICAgICAgIHNjZW5lLT5zZXRBY3RpdmUodHJ1
ZSk7CiB9CiAKIHZvaWQgV2ViVmlldzo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkK
IHsKLSAgICBtX2V3a1ZpZXctPmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOworICAg
IGlmIChDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIHNjZW5lID0gY29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lKCkpCisgICAgICAgIHNjZW5lLT5zZXRBY3RpdmUoZmFsc2UpOwogfQogCiB2b2lkIFdl
YlZpZXc6OnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNv
bnRleHQmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaAppbmRleCA0NGVlOWQ3
Li5kZDliYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaApAQCAtMzEs
MTMgKzMxLDE5IEBACiAjaW5jbHVkZSAiRGVmYXVsdFVuZG9Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJH
ZW9tZXRyeS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViVmlld0Ns
aWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIAogY2xh
c3MgRXdrVmlldzsKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUGFnZVZpZXdwb3J0
Q29udHJvbGxlcjsKQEAgLTUyLDYgKzU4LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdGlh
bGl6ZSgpOwogCisgICAgdm9pZCBzZXRVc2VyVmlld3BvcnRUcmFuc2Zvcm0oY29uc3QgV2ViQ29y
ZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmIHVzZXJWaWV3cG9ydFRyYW5zZm9ybSkgeyBtX3VzZXJW
aWV3cG9ydFRyYW5zZm9ybSA9IHVzZXJWaWV3cG9ydFRyYW5zZm9ybTsgfQorICAgIFdlYkNvcmU6
OkludFBvaW50IHVzZXJWaWV3cG9ydFRvQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KSBjb25zdDsKKworICAgIHZvaWQgcGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKKyAgICB2b2lk
IHBhaW50VG9DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90Kik7CisKICAgICBXS1BhZ2VSZWYg
cGFnZVJlZigpIGNvbnN0IHsgcmV0dXJuIHRvQVBJKG1fcGFnZS5nZXQoKSk7IH0KIAogICAgIHZv
aWQgc2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wpOwpAQCAtODIsNyArOTQsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgdXBkYXRlVmlld3BvcnRTaXplKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50
c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogCisgICAgLy8gRklYTUU6IFNob3VsZCBi
ZSBwcml2YXRlLgorICAgIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1Gcm9tU2Nl
bmUoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtVG9TY2Vu
ZSgpIGNvbnN0OworCiBwcml2YXRlOgorICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZSogY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7CisKICAgICAvLyBQYWdlQ2xpZW50CiAg
ICAgUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkg
T1ZFUlJJREU7CiAKQEAgLTE2Myw2ICsxODEsNyBAQCBwcml2YXRlOgogICAgIEV3a1ZpZXcqIG1f
ZXdrVmlldzsKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2U7CiAgICAgRGVmYXVsdFVu
ZG9Db250cm9sbGVyIG1fdW5kb0NvbnRyb2xsZXI7CisgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXggbV91c2VyVmlld3BvcnRUcmFuc2Zvcm07CiAgICAgLy8gRklYTUU6IFJlbW92ZSB3
aGVuIHBvc3NpYmxlLgogICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmw+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudDsKICAgICBPd25QdHI8V2Vi
S2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyPiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189293</attachid>
            <date>2013-02-20 05:28:21 -0800</date>
            <delta_ts>2013-02-20 06:49:41 -0800</delta_ts>
            <desc>patch v2</desc>
            <filename>bug110216_v2</filename>
            <type>text/plain</type>
            <size>20853</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDI5ZjU2OWU4ZTU5N2FmODI5N2NmNGI3Yzg1ZmNkOTk1ODNlODY0YzUKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIEZlYiAyMCAxMzoxMjo0NiAyMDEzICswMjAwCgogICAgYnVnMTEwMjE2CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGRhYmQ3ZmIuLmM0NjlkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxMy0w
Mi0yMCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbV0syXVtFRkxdIE1vdmUgQUMgY29kZSBmcm9tIEV3a1ZpZXcgdG8gV2ViVmll
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZWxl
cmF0ZWQgY29tcG9zaXRpbmcgY29kZSBpcyBtb3ZlZCBmcm9tIEV3a1ZpZXcgdG8gV2ViVmlldy4K
KyAgICAgICAgQWRkZWQgbmV3IFdLVmlldyBBUEkgdG8gYmUgdXNlZCBmcm9tIEV3a1ZpZXcgaW5z
dGVhZCBvZiBkaXJlY3QgYWNjZXNzaW5nCisgICAgICAgIHRvIGNvb3JkaW5hdGVkIGdyYXBoaWNz
IHNjZW5lLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAg
ICAgICAoV0tWaWV3VHJhbnNsYXRlVXNlclZpZXdwb3J0KToKKyAgICAgICAgKFdLVmlld1VzZXJW
aWV3cG9ydFRvQ29udGVudHMpOgorICAgICAgICAoV0tWaWV3UGFpbnRUb0N1cnJlbnRHTENvbnRl
eHQpOgorICAgICAgICAoV0tWaWV3UGFpbnRUb0NhaXJvU3VyZmFjZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaDoKKworICAgICAgICAgICAgQWRkZWQgV0tWaWV3IEFQ
SSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcDoK
KyAgICAgICAgKEV3a1ZpZXc6OkV3a1ZpZXcpOgorICAgICAgICAoRXdrVmlldzo6ZGlzcGxheVRp
bWVyRmlyZWQpOgorICAgICAgICAoRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQpOgorICAgICAgICAo
RXdrVmlldzo6Y3JlYXRlR0xTdXJmYWNlKToKKyAgICAgICAgKEV3a1ZpZXc6OmhhbmRsZUV2YXNP
YmplY3RDYWxjdWxhdGUpOgorICAgICAgICAoRXdrVmlldzo6aGFuZGxlRXdrVmlld01vdXNlV2hl
ZWwpOgorICAgICAgICAoRXdrVmlldzo6aGFuZGxlRXdrVmlld01vdXNlRG93bik6CisgICAgICAg
IChFd2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91c2VVcCk6CisgICAgICAgIChFd2tWaWV3OjpoYW5k
bGVFd2tWaWV3TW91c2VNb3ZlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
Lmg6CisgICAgICAgIChFd2tWaWV3KToKKworICAgICAgICAgICAgVXNpbmcgbmV3IFdLVmlldyBB
UEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlldzo6cGFpbnRUb0NhaXJvU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXc6OnVzZXJWaWV3cG9ydFRvQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojp0
cmFuc2Zvcm1Gcm9tU2NlbmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojp0cmFuc2Zvcm1U
b1NjZW5lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmV4aXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3Lmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6dHJhbnNsYXRlVXNlclZpZXdw
b3J0KToKKyAgICAgICAgKFdlYlZpZXcpOgorCisgICAgICAgICAgICBBZGRlZCBXZWJWaWV3IG1l
dGhvZHMgdG8gc3VwcG9ydCBuZXcgV0tWaWV3IEFQSS4KKwogMjAxMy0wMi0xOSAgVGltIEhvcnRv
biAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGFyaWZ5IGlzSW5XaW5k
b3cgdnMuIGlzVmlzaWJsZSBwYXRoIHRocm91Z2ggdG8gUmVuZGVyTGF5ZXJDb21wb3NpdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKaW5kZXggNzZl
ZDlkZi4uYjVhMWFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tWaWV3LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcworICogQ29weXJpZ2h0IChDKSAyMDEzIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Nyw2ICs1OCwy
NyBAQCB2b2lkIFdLVmlld1NldFZpZXdDbGllbnQoV0tWaWV3UmVmIHZpZXdSZWYsIGNvbnN0IFdL
Vmlld0NsaWVudCogY2xpZW50KQogICAgIHRvSW1wbCh2aWV3UmVmKS0+aW5pdGlhbGl6ZUNsaWVu
dChjbGllbnQpOwogfQogCit2b2lkIFdLVmlld1RyYW5zbGF0ZVVzZXJWaWV3cG9ydChXS1ZpZXdS
ZWYgdmlld1JlZiwgZG91YmxlIHR4LCBkb3VibGUgdHkpCit7CisgICAgdG9JbXBsKHZpZXdSZWYp
LT50cmFuc2xhdGVVc2VyVmlld3BvcnQodHgsIHR5KTsKK30KKworV0tQb2ludCBXS1ZpZXdVc2Vy
Vmlld3BvcnRUb0NvbnRlbnRzKFdLVmlld1JlZiB2aWV3UmVmLCBXS1BvaW50IHBvaW50KQorewor
ICAgIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiByZXN1bHQgPSB0b0ltcGwodmlld1JlZiktPnVz
ZXJWaWV3cG9ydFRvQ29udGVudHModG9JbnRQb2ludChwb2ludCkpOworICAgIHJldHVybiBXS1Bv
aW50TWFrZShyZXN1bHQueCgpLCByZXN1bHQueSgpKTsKK30KKwordm9pZCBXS1ZpZXdQYWludFRv
Q3VycmVudEdMQ29udGV4dChXS1ZpZXdSZWYgdmlld1JlZikKK3sKKyAgICB0b0ltcGwodmlld1Jl
ZiktPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KCk7Cit9CisKK3ZvaWQgV0tWaWV3UGFpbnRUb0Nh
aXJvU3VyZmFjZShXS1ZpZXdSZWYgdmlld1JlZiwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQor
eworICAgIHRvSW1wbCh2aWV3UmVmKS0+cGFpbnRUb0NhaXJvU3VyZmFjZShzdXJmYWNlKTsKK30K
KwogV0tQYWdlUmVmIFdLVmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXdSZWYpCiB7CiAgICAgcmV0
dXJuIHRvSW1wbCh2aWV3UmVmKS0+cGFnZVJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9lZmwvV0tWaWV3LmgKaW5kZXggYjQyYjIyNy4uOGVmMDVhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTMxLDYgKzMyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgX0V2YXMgRXZhczsK
IHR5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKICNlbmRpZgogCit0eXBl
ZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7CisKICNpZmRlZiBfX2Nw
bHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKQEAgLTU3LDYgKzYwLDEyIEBAIFdLX0VYUE9S
VCBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlV2l0aEZpeGVkTGF5b3V0KEV2YXMqIGNhbnZhcywgV0tD
b250ZXh0UmVmIGNvbnRlCiBXS19FWFBPUlQgdm9pZCBXS1ZpZXdJbml0aWFsaXplKFdLVmlld1Jl
Zik7CiBXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZXRWaWV3Q2xpZW50KFdLVmlld1JlZiwgY29uc3Qg
V0tWaWV3Q2xpZW50Kik7CiAKK1dLX0VYUE9SVCB2b2lkIFdLVmlld1RyYW5zbGF0ZVVzZXJWaWV3
cG9ydChXS1ZpZXdSZWYsIGRvdWJsZSB0eCwgZG91YmxlIHR5KTsKK1dLX0VYUE9SVCBXS1BvaW50
IFdLVmlld1VzZXJWaWV3cG9ydFRvQ29udGVudHMoV0tWaWV3UmVmLCBXS1BvaW50KTsKKworV0tf
RVhQT1JUIHZvaWQgV0tWaWV3UGFpbnRUb0N1cnJlbnRHTENvbnRleHQoV0tWaWV3UmVmKTsKK1dL
X0VYUE9SVCB2b2lkIFdLVmlld1BhaW50VG9DYWlyb1N1cmZhY2UoV0tWaWV3UmVmLCBjYWlyb19z
dXJmYWNlX3QqKTsKKwogV0tfRVhQT1JUIFdLUGFnZVJlZiBXS1ZpZXdHZXRQYWdlKFdLVmlld1Jl
Zik7CiAKIFdLX0VYUE9SVCB2b2lkIFdLVmlld1NldFRoZW1lUGF0aChXS1ZpZXdSZWYsIFdLU3Ry
aW5nUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAK
aW5kZXggN2MwNDY0Yy4uMzU4MTY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJFd2tWaWV3Lmgi
CiAKICNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudEVmbC5oIgotI2luY2x1ZGUgIkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgiCiAjaW5jbHVkZSAiRWZsU2NyZWVuVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiRmluZENsaWVudEVmbC5oIgogI2luY2x1ZGUgIkZvcm1DbGllbnRFZmwuaCIK
QEAgLTY0LDkgKzYzLDcgQEAKICNpbmNsdWRlIDxFZGplLmg+CiAjaW5jbHVkZSA8RXZhc19HTC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXNFZmwuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29y
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUg
PFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIApA
QCAtMjY5LDEwICsyNjYsNyBAQCBFd2tWaWV3OjpFd2tWaWV3KEV2YXNfT2JqZWN0KiBldmFzT2Jq
ZWN0LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFdLUGFnZQogCiAgICAgV0tWaWV3
SW5pdGlhbGl6ZSh3a1ZpZXcoKSk7CiAKLSAgICBpZiAoYmVoYXZpb3IgPT0gRGVmYXVsdEJlaGF2
aW9yKSB7Ci0gICAgICAgIGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpLT5zZXRBY3RpdmUodHJ1
ZSk7Ci0gICAgICAgIFdLUGFnZVNldFVzZUZpeGVkTGF5b3V0KHdrUGFnZSgpLCB0cnVlKTsKLSAg
ICB9CisgICAgV0tQYWdlU2V0VXNlRml4ZWRMYXlvdXQod2tQYWdlKCksIGJlaGF2aW9yID09IERl
ZmF1bHRCZWhhdmlvcik7CiAKICAgICBXS1BhZ2VHcm91cFJlZiB3a1BhZ2VHcm91cCA9IFdLUGFn
ZUdldFBhZ2VHcm91cCh3a1BhZ2UoKSk7CiAgICAgV0tQcmVmZXJlbmNlc1JlZiB3a1ByZWZlcmVu
Y2VzID0gV0tQYWdlR3JvdXBHZXRQcmVmZXJlbmNlcyh3a1BhZ2VHcm91cCk7CkBAIC00NzMsMjIg
KzQ2Nyw2IEBAIHZvaWQgRXdrVmlldzo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IHdlYlZpZXcoKS0+dXBkYXRlVmlld3BvcnRTaXplKCk7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBF
d2tWaWV3Ojp0cmFuc2Zvcm1Gcm9tU2NlbmUoKSBjb25zdAotewotICAgIHJldHVybiB0cmFuc2Zv
cm1Ub1NjZW5lKCkuaW52ZXJzZSgpOwotfQotCi1BZmZpbmVUcmFuc2Zvcm0gRXdrVmlldzo6dHJh
bnNmb3JtVG9TY2VuZSgpIGNvbnN0Ci17Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNm
b3JtID0gdXNlclZpZXdwb3J0VHJhbnNmb3JtKCk7Ci0KLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRl
KC1wYWdlUG9zaXRpb24oKS54KCksIC1wYWdlUG9zaXRpb24oKS55KCkpOwotICAgIHRyYW5zZm9y
bS5zY2FsZShkZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICB0cmFuc2Zvcm0uc2NhbGUocGFnZVNj
YWxlRmFjdG9yKCkpOwotCi0gICAgcmV0dXJuIHRyYW5zZm9ybS50b0FmZmluZVRyYW5zZm9ybSgp
OwotfQotCiBBZmZpbmVUcmFuc2Zvcm0gRXdrVmlldzo6dHJhbnNmb3JtVG9TY3JlZW4oKSBjb25z
dAogewogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CkBAIC01MjIsNTIgKzUwMCwxMSBA
QCBBZmZpbmVUcmFuc2Zvcm0gRXdrVmlldzo6dHJhbnNmb3JtVG9TY3JlZW4oKSBjb25zdAogICAg
IHJldHVybiB0cmFuc2Zvcm07CiB9CiAKLUNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogRXdrVmll
dzo6Y29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCkKLXsKLSAgICBEcmF3aW5nQXJlYVByb3h5KiBk
cmF3aW5nQXJlYSA9IHBhZ2UoKS0+ZHJhd2luZ0FyZWEoKTsKLSAgICBpZiAoIWRyYXdpbmdBcmVh
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkqIGNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5ID0gZHJhd2luZ0FyZWEtPmNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KCk7Ci0gICAgaWYgKCFjb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gY29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHktPmNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwotfQotCiBp
bmxpbmUgRXdrX1ZpZXdfU21hcnRfRGF0YSogRXdrVmlldzo6c21hcnREYXRhKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gdG9TbWFydERhdGEobV9ldmFzT2JqZWN0KTsKIH0KIAotdm9pZCBFd2tWaWV3
OjpwYWludFRvQ3VycmVudEdMQ29udGV4dCgpCi17Ci0gICAgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwotICAgIGlmICghc2NlbmUp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGNsZWFuIHVwIHRo
aXMgY29kZSBhcyBpdCBpcyBzcGxpdCBvdmVyIENvb3JkR2Z4IGFuZCBQYWdlLgotICAgIHNjZW5l
LT5zZXREcmF3c0JhY2tncm91bmQoV0tWaWV3R2V0RHJhd3NCYWNrZ3JvdW5kKHdrVmlldygpKSk7
Ci0KLSAgICBGbG9hdFJlY3Qgdmlld3BvcnQgPSB1c2VyVmlld3BvcnRUcmFuc2Zvcm0oKS5tYXBS
ZWN0KEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSgpKSk7Ci0gICAgc2NlbmUtPnBhaW50VG9DdXJy
ZW50R0xDb250ZXh0KHRyYW5zZm9ybVRvU2NlbmUoKS50b1RyYW5zZm9ybWF0aW9uTWF0cml4KCks
IC8qIG9wYWNpdHkgKi8gMSwgdmlld3BvcnQpOwotfQotCi12b2lkIEV3a1ZpZXc6OnBhaW50VG9D
YWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQotewotICAgIENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKLSAgICBp
ZiAoIXNjZW5lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8Y2Fpcm9fdD4gZ3JhcGhp
Y3NDb250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHN1cmZhY2UpKTsKLQotICAgIGNhaXJv
X3RyYW5zbGF0ZShncmFwaGljc0NvbnRleHQuZ2V0KCksIC0gcGFnZVBvc2l0aW9uKCkueCgpLCAt
IHBhZ2VQb3NpdGlvbigpLnkoKSk7Ci0gICAgY2Fpcm9fc2NhbGUoZ3JhcGhpY3NDb250ZXh0Lmdl
dCgpLCBwYWdlU2NhbGVGYWN0b3IoKSwgcGFnZVNjYWxlRmFjdG9yKCkpOwotICAgIGNhaXJvX3Nj
YWxlKGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSwgZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7Ci0KLSAgICBzY2VuZS0+cGFpbnRUb0dyYXBoaWNzQ29udGV4dChncmFwaGlj
c0NvbnRleHQuZ2V0KCkpOwotfQotCiB2b2lkIEV3a1ZpZXc6OmRpc3BsYXlUaW1lckZpcmVkKFRp
bWVyPEV3a1ZpZXc+KikKIHsKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0
YSgpOwpAQCAtNTg1LDE0ICs1MjIsMTQgQEAgdm9pZCBFd2tWaWV3OjpkaXNwbGF5VGltZXJGaXJl
ZChUaW1lcjxFd2tWaWV3PiopCiAgICAgICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBwYWludFRvQ2Fpcm9TdXJmYWNlKHN1cmZhY2UuZ2V0KCkpOworICAg
ICAgICBXS1ZpZXdQYWludFRvQ2Fpcm9TdXJmYWNlKHdrVmlldygpLCBzdXJmYWNlLmdldCgpKTsK
ICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkKHNkLT5pbWFnZSwgMCwg
MCwgc2QtPnZpZXcudywgc2QtPnZpZXcuaCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBldmFzX2dsX21ha2VfY3VycmVudChtX2V2YXNHTC5nZXQoKSwgbV9ldmFzR0xTdXJmYWNlLT5z
dXJmYWNlKCksIG1fZXZhc0dMQ29udGV4dC0+Y29udGV4dCgpKTsKIAotICAgIHBhaW50VG9DdXJy
ZW50R0xDb250ZXh0KCk7CisgICAgV0tWaWV3UGFpbnRUb0N1cnJlbnRHTENvbnRleHQod2tWaWV3
KCkpOwogCiAgICAgLy8gc2QtPmltYWdlIGlzIHRpZWQgdG8gYSBuYXRpdmUgc3VyZmFjZSwgd2hp
Y2ggaXMgaW4gdGhlIHBhcmVudCdzIGNvb3JkaW5hdGVzLgogICAgIGV2YXNfb2JqZWN0X2ltYWdl
X2RhdGFfdXBkYXRlX2FkZChzZC0+aW1hZ2UsIHNkLT52aWV3LngsIHNkLT52aWV3LnksIHNkLT52
aWV3LncsIHNkLT52aWV3LmgpOwpAQCAtNzUwLDcgKzY4Nyw3IEBAIHZvaWQgRXdrVmlldzo6c2V0
TW91c2VFdmVudHNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogdm9pZCBFd2tWaWV3OjpmZWVkVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBl
LCBjb25zdCBFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciogbW9kaWZpZXJz
KQogewotICAgIHBhZ2UoKS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHR5
cGUsIHBvaW50cywgbW9kaWZpZXJzLCB0cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgdHJhbnNmb3JtVG9T
Y3JlZW4oKSwgZWNvcmVfdGltZV9nZXQoKSkpOworICAgIHBhZ2UoKS0+aGFuZGxlVG91Y2hFdmVu
dChOYXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJzLCB3ZWJWaWV3KCkt
PnRyYW5zZm9ybUZyb21TY2VuZSgpLCB0cmFuc2Zvcm1Ub1NjcmVlbigpLCBlY29yZV90aW1lX2dl
dCgpKSk7CiB9CiAKIHZvaWQgRXdrVmlldzo6c2V0VG91Y2hFdmVudHNFbmFibGVkKGJvb2wgZW5h
YmxlZCkKQEAgLTgxMCw0MCArNzQ3LDE0IEBAIGJvb2wgRXdrVmlldzo6Y3JlYXRlR0xTdXJmYWNl
KCkKIAogICAgIEV2YXNfR0xfQVBJKiBnbCA9IGV2YXNfZ2xfYXBpX2dldChtX2V2YXNHTC5nZXQo
KSk7CiAKLSAgICBJbnRQb2ludCBib3VuZHNFbmQgPSB1c2VyVmlld3BvcnRUcmFuc2Zvcm0oKS5t
YXBQb2ludChJbnRQb2ludChzaXplKCkpKTsKLSAgICBnbC0+Z2xWaWV3cG9ydCgwLCAwLCBib3Vu
ZHNFbmQueCgpLCBib3VuZHNFbmQueSgpKTsKKyAgICBjb25zdCBXS1BvaW50JiBib3VuZHNFbmQg
PSBXS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzKHdrVmlldygpLCBXS1BvaW50TWFrZShzaXpl
KCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CisgICAgZ2wtPmdsVmlld3BvcnQoMCwgMCwg
Ym91bmRzRW5kLngsIGJvdW5kc0VuZC55KTsKICAgICBnbC0+Z2xDbGVhckNvbG9yKDEuMCwgMS4w
LCAxLjAsIDApOwogICAgIGdsLT5nbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwogCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXdrVmlldzo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSgpCi17Ci0gICAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSA9IGNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZSgpOwotICAgIGlmICghc2NlbmUpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHNjZW5lLT5zZXRBY3RpdmUodHJ1ZSk7Ci0KLSAgICBpZiAobV9pc0FjY2Vs
ZXJhdGVkICYmICFtX2V2YXNHTFN1cmZhY2UgJiYgIWNyZWF0ZUdMU3VyZmFjZSgpKSB7Ci0gICAg
ICAgIFdBUk4oIkZhaWxlZCB0byBjcmVhdGUgR0xTdXJmYWNlLiIpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRXdrVmlldzo6ZXhp
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKLXsKLSAgICBDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmUqIHNjZW5lID0gY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7Ci0gICAgaWYgKCFzY2Vu
ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc2NlbmUtPnNldEFjdGl2ZShmYWxzZSk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIC8q
KgogICogQGludGVybmFsCkBAIC0xMTc4LDggKzEwODksNyBAQCB2b2lkIEV3a1ZpZXc6OmhhbmRs
ZUV2YXNPYmplY3RDYWxjdWxhdGUoRXZhc19PYmplY3QqIGV2YXNPYmplY3QpCiAgICAgICAgIHNt
YXJ0RGF0YS0+dmlldy54ID0geDsKICAgICAgICAgc21hcnREYXRhLT52aWV3LnkgPSB5OwogICAg
ICAgICBldmFzX29iamVjdF9tb3ZlKHNtYXJ0RGF0YS0+aW1hZ2UsIHgsIHkpOwotCi0gICAgICAg
IHNlbGYtPnNldFVzZXJWaWV3cG9ydFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLnRy
YW5zbGF0ZSh4LCB5KSk7CisgICAgICAgIFdLVmlld1RyYW5zbGF0ZVVzZXJWaWV3cG9ydChzZWxm
LT53a1ZpZXcoKSwgeCwgeSk7CiAgICAgfQogCiAgICAgaWYgKHNtYXJ0RGF0YS0+Y2hhbmdlZC5z
aXplKSB7CkBAIC0xMjQ2LDIxICsxMTU2LDIxIEBAIEVpbmFfQm9vbCBFd2tWaWV3OjpoYW5kbGVF
d2tWaWV3Rm9jdXNPdXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogRWluYV9Cb29s
IEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZVdoZWVsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogd2hlZWxFdmVudCkKIHsKICAg
ICBFd2tWaWV3KiBzZWxmID0gdG9Fd2tWaWV3KHNtYXJ0RGF0YSk7Ci0gICAgc2VsZi0+cGFnZSgp
LT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQod2hlZWxFdmVudCwgc2VsZi0+
dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKKyAgICBz
ZWxmLT5wYWdlKCktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudCh3aGVlbEV2
ZW50LCBzZWxmLT53ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZSgpLCBzZWxmLT50cmFuc2Zv
cm1Ub1NjcmVlbigpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBFd2tWaWV3
OjpoYW5kbGVFd2tWaWV3TW91c2VEb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwg
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBkb3duRXZlbnQpCiB7CiAgICAgRXdrVmlldyog
c2VsZiA9IHRvRXdrVmlldyhzbWFydERhdGEpOwotICAgIHNlbGYtPnBhZ2UoKS0+aGFuZGxlTW91
c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGRvd25FdmVudCwgc2VsZi0+dHJhbnNmb3JtRnJv
bVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKKyAgICBzZWxmLT5wYWdlKCkt
PmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChkb3duRXZlbnQsIHNlbGYtPndl
YlZpZXcoKS0+dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkp
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIEV3a1ZpZXc6OmhhbmRsZUV3a1Zp
ZXdNb3VzZVVwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9VcCogdXBFdmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0gdG9Fd2tWaWV3KHNt
YXJ0RGF0YSk7Ci0gICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1v
dXNlRXZlbnQodXBFdmVudCwgc2VsZi0+dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5z
Zm9ybVRvU2NyZWVuKCkpKTsKKyAgICBzZWxmLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0
aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCBzZWxmLT53ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21T
Y2VuZSgpLCBzZWxmLT50cmFuc2Zvcm1Ub1NjcmVlbigpKSk7CiAKICAgICBpZiAoSW5wdXRNZXRo
b2RDb250ZXh0RWZsKiBpbnB1dE1ldGhvZENvbnRleHQgPSBzZWxmLT5pbnB1dE1ldGhvZENvbnRl
eHQoKSkKICAgICAgICAgaW5wdXRNZXRob2RDb250ZXh0LT5oYW5kbGVNb3VzZVVwRXZlbnQodXBF
dmVudCk7CkBAIC0xMjcxLDcgKzExODEsNyBAQCBFaW5hX0Jvb2wgRXdrVmlldzo6aGFuZGxlRXdr
Vmlld01vdXNlVXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdgogRWlu
YV9Cb29sIEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZU1vdmUoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUqIG1vdmVFdmVudCkKIHsK
ICAgICBFd2tWaWV3KiBzZWxmID0gdG9Fd2tWaWV3KHNtYXJ0RGF0YSk7Ci0gICAgc2VsZi0+cGFn
ZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQobW92ZUV2ZW50LCBzZWxm
LT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+dHJhbnNmb3JtVG9TY3JlZW4oKSkpOworICAg
IHNlbGYtPnBhZ2UoKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KG1vdmVF
dmVudCwgc2VsZi0+d2ViVmlldygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+dHJhbnNm
b3JtVG9TY3JlZW4oKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggYjk0NjYwOC4uNjI5ZTM3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAtMTMyLDEyICsxMzIs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
ICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAot
ICAgIHZvaWQgc2V0VXNlclZpZXdwb3J0VHJhbnNmb3JtKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pIHsgbV91c2VyVmlld3BvcnRUcmFuc2Zvcm0gPSB0cmFu
c2Zvcm07IH0KLSAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCB1c2VyVmlld3BvcnRU
cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3VzZXJWaWV3cG9ydFRyYW5zZm9ybTsgfQotCi0g
ICAgLy8gRklYTUU6IENvbnZlcnQgdG8gVHJhbnNmb3JtYXRpb25NYXRyaXguCi0gICAgV2ViQ29y
ZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdDsKLSAgICBXZWJDb3Jl
OjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3Q7CiAgICAgV2ViQ29y
ZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybVRvU2NyZWVuKCkgY29uc3Q7CiAKICAgICB2b2lk
IHBhaW50VG9DdXJyZW50R0xDb250ZXh0KCk7CkBAIC0xNzUsOCArMTY5LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0V2luZG93R2VvbWV0cnkoY29uc3QgV0tSZWN0Jik7CiAKICAgICBib29sIGNy
ZWF0ZUdMU3VyZmFjZSgpOwotICAgIGJvb2wgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZSgpOwotICAgIGJvb2wgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CiAgICAgdm9p
ZCBzZXROZWVkc1N1cmZhY2VSZXNpemUoKSB7IG1fcGVuZGluZ1N1cmZhY2VSZXNpemUgPSB0cnVl
OyB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKQEAgLTIyOSw4ICsyMjEsNiBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBkaXNwbGF5VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxFd2tW
aWV3PiopOwogCi0gICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBjb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUoKTsKLQogICAgIC8vIEV2YXNfU21hcnRfQ2xhc3MgY2FsbGJhY2sg
aW50ZXJmYWNlOgogICAgIHN0YXRpYyB2b2lkIGhhbmRsZUV2YXNPYmplY3RBZGQoRXZhc19PYmpl
Y3QqKTsKICAgICBzdGF0aWMgdm9pZCBoYW5kbGVFdmFzT2JqZWN0RGVsZXRlKEV2YXNfT2JqZWN0
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAppbmRleCAxMGEzODUx
Li42ZDM0NWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJWaWV3Lmgi
CiAKKyNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIgogI2luY2x1ZGUg
IkRvd25sb2FkTWFuYWdlckVmbC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgi
CiAjaW5jbHVkZSAiRXdrVmlldy5oIgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudUxpc3RlbmVyRWZsLmgiCiAjaW5jbHVk
ZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmg+CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAjaW5jbHVkZSAi
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgpAQCAtNzYsNiArNzgsNDggQEAgV2ViVmlldzo6
fldlYlZpZXcoKQogdm9pZCBXZWJWaWV3Ojppbml0aWFsaXplKCkKIHsKICAgICBtX3BhZ2UtPmlu
aXRpYWxpemVXZWJQYWdlKCk7CisgICAgaWYgKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2Nl
bmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKSkKKyAgICAgICAgc2NlbmUtPnNldEFjdGl2
ZSh0cnVlKTsKK30KKwordm9pZCBXZWJWaWV3Ojp0cmFuc2xhdGVVc2VyVmlld3BvcnQoZG91Ymxl
IHR4LCBkb3VibGUgdHkpCit7CisgICAgbV91c2VyVmlld3BvcnRUcmFuc2Zvcm0udHJhbnNsYXRl
KHR4LCB0eSk7Cit9CisKK0ludFBvaW50IFdlYlZpZXc6OnVzZXJWaWV3cG9ydFRvQ29udGVudHMo
Y29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIHJldHVybiBtX3VzZXJWaWV3cG9y
dFRyYW5zZm9ybS5tYXBQb2ludChwb2ludCk7Cit9CisKK3ZvaWQgV2ViVmlldzo6cGFpbnRUb0N1
cnJlbnRHTENvbnRleHQoKQoreworICAgIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUg
PSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKKyAgICBpZiAoIXNjZW5lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBjbGVhbiB1cCB0aGlzIGNvZGUgYXMg
aXQgaXMgc3BsaXQgb3ZlciBDb29yZEdmeCBhbmQgUGFnZS4KKyAgICBzY2VuZS0+c2V0RHJhd3NC
YWNrZ3JvdW5kKG1fcGFnZS0+ZHJhd3NCYWNrZ3JvdW5kKCkpOworCisgICAgRmxvYXRSZWN0IHZp
ZXdwb3J0ID0gbV91c2VyVmlld3BvcnRUcmFuc2Zvcm0ubWFwUmVjdChJbnRSZWN0KEludFBvaW50
KCksIG1fZXdrVmlldy0+c2l6ZSgpKSk7CisgICAgc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250
ZXh0KHRyYW5zZm9ybVRvU2NlbmUoKS50b1RyYW5zZm9ybWF0aW9uTWF0cml4KCksIC8qIG9wYWNp
dHkgKi8gMSwgdmlld3BvcnQpOworfQorCit2b2lkIFdlYlZpZXc6OnBhaW50VG9DYWlyb1N1cmZh
Y2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQoreworICAgIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKKyAgICBpZiAoIXNjZW5l
KQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gZ3JhcGhpY3NDb250ZXh0
ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHN1cmZhY2UpKTsKKworICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBhZ2VQb3NpdGlvbiA9IG1fZXdrVmlldy0+cGFnZVBvc2l0aW9uKCk7CisgICAgZG91Ymxl
IGVmZmVjdGl2ZVNjYWxlID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpICogbV9ld2tWaWV3
LT5wYWdlU2NhbGVGYWN0b3IoKTsKKworICAgIGNhaXJvX21hdHJpeF90IHRyYW5zZm9ybSA9IHsg
ZWZmZWN0aXZlU2NhbGUsIDAsIDAsIGVmZmVjdGl2ZVNjYWxlLCAtIHBhZ2VQb3NpdGlvbi54KCks
IC0gcGFnZVBvc2l0aW9uLnkoKSB9OworICAgIGNhaXJvX3NldF9tYXRyaXgoZ3JhcGhpY3NDb250
ZXh0LmdldCgpLCAmdHJhbnNmb3JtKTsKKworICAgIHNjZW5lLT5wYWludFRvR3JhcGhpY3NDb250
ZXh0KGdyYXBoaWNzQ29udGV4dC5nZXQoKSk7CiB9CiAKIEV2YXNfT2JqZWN0KiBXZWJWaWV3Ojpl
dmFzT2JqZWN0KCkKQEAgLTE3MCw2ICsyMTQsMzYgQEAgdm9pZCBXZWJWaWV3OjpkaWRDaGFuZ2VD
b250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKICAgICBtX2NsaWVudC5k
aWRDaGFuZ2VDb250ZW50c1NpemUodGhpcywgc2l6ZSk7CiB9CiAKK0FmZmluZVRyYW5zZm9ybSBX
ZWJWaWV3Ojp0cmFuc2Zvcm1Gcm9tU2NlbmUoKSBjb25zdAoreworICAgIHJldHVybiB0cmFuc2Zv
cm1Ub1NjZW5lKCkuaW52ZXJzZSgpOworfQorCitBZmZpbmVUcmFuc2Zvcm0gV2ViVmlldzo6dHJh
bnNmb3JtVG9TY2VuZSgpIGNvbnN0Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNm
b3JtID0gbV91c2VyVmlld3BvcnRUcmFuc2Zvcm07CisKKyAgICBjb25zdCBGbG9hdFBvaW50JiBw
YWdlUG9zaXRpb24gPSBtX2V3a1ZpZXctPnBhZ2VQb3NpdGlvbigpOworICAgIHRyYW5zZm9ybS50
cmFuc2xhdGUocGFnZVBvc2l0aW9uLngoKSwgcGFnZVBvc2l0aW9uLnkoKSk7CisgICAgdHJhbnNm
b3JtLnNjYWxlKG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgdHJhbnNmb3JtLnNj
YWxlKG1fZXdrVmlldy0+cGFnZVNjYWxlRmFjdG9yKCkpOworCisgICAgcmV0dXJuIHRyYW5zZm9y
bS50b0FmZmluZVRyYW5zZm9ybSgpOworfQorCitDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIFdl
YlZpZXc6OmNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpCit7CisgICAgRHJhd2luZ0FyZWFQcm94
eSogZHJhd2luZ0FyZWEgPSBtX3BhZ2UtPmRyYXdpbmdBcmVhKCk7CisgICAgaWYgKCFkcmF3aW5n
QXJlYSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5KiBsYXllclRyZWVIb3N0UHJveHkgPSBkcmF3aW5nQXJlYS0+Y29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkoKTsKKyAgICBpZiAoIWxheWVyVHJlZUhvc3RQcm94eSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbGF5ZXJUcmVlSG9zdFByb3h5LT5jb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUoKTsKK30KKwogLy8gUGFnZSBDbGllbnQKIAogUGFzc093blB0cjxE
cmF3aW5nQXJlYVByb3h5PiBXZWJWaWV3OjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkKQEAgLTM0
MiwxMiArNDE2LDE0IEBAIHZvaWQgV2ViVmlldzo6c2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRy
PEZpbmRJbmRpY2F0b3I+LCBib29sLCBib29sKQogCiB2b2lkIFdlYlZpZXc6OmVudGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpCiB7Ci0gICAgbV9l
d2tWaWV3LT5lbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CisgICAgaWYgKENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKSkK
KyAgICAgICAgc2NlbmUtPnNldEFjdGl2ZSh0cnVlKTsKIH0KIAogdm9pZCBXZWJWaWV3OjpleGl0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQogewotICAgIG1fZXdrVmlldy0+ZXhpdEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CisgICAgaWYgKENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKSkKKyAgICAgICAgc2NlbmUtPnNl
dEFjdGl2ZShmYWxzZSk7CiB9CiAKIHZvaWQgV2ViVmlldzo6dXBkYXRlQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlldy5oCmluZGV4IDQ0ZWU5ZDcuLjU5MDMyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViVmlldy5oCkBAIC0zMSwxMyArMzEsMTkgQEAKICNpbmNsdWRlICJEZWZh
dWx0VW5kb0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVy
ZW5jZXMuaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9U
cmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogCiBjbGFzcyBFd2tWaWV3OwogCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU7Cit9CisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBQYWdlVmlld3BvcnRDb250cm9sbGVyOwpAQCAtNTIsNiArNTgsMTIg
QEAgcHVibGljOgogCiAgICAgdm9pZCBpbml0aWFsaXplKCk7CiAKKyAgICB2b2lkIHRyYW5zbGF0
ZVVzZXJWaWV3cG9ydChkb3VibGUgdHgsIGRvdWJsZSB0eSk7CisgICAgV2ViQ29yZTo6SW50UG9p
bnQgdXNlclZpZXdwb3J0VG9Db250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0
OworCisgICAgdm9pZCBwYWludFRvQ3VycmVudEdMQ29udGV4dCgpOworICAgIHZvaWQgcGFpbnRU
b0NhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqKTsKKwogICAgIFdLUGFnZVJlZiBwYWdlUmVm
KCkgY29uc3QgeyByZXR1cm4gdG9BUEkobV9wYWdlLmdldCgpKTsgfQogCiAgICAgdm9pZCBzZXRE
cmF3c0JhY2tncm91bmQoYm9vbCk7CkBAIC04Miw3ICs5NCwxMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB1cGRhdGVWaWV3cG9ydFNpemUoKTsKICAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKKyAgICAvLyBGSVhNRTogU2hvdWxkIGJlIHByaXZh
dGUuCisgICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybUZyb21TY2VuZSgpIGNv
bnN0OworICAgIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1Ub1NjZW5lKCkgY29u
c3Q7CisKIHByaXZhdGU6CisgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBj
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKKwogICAgIC8vIFBhZ2VDbGllbnQKICAgICBQYXNz
T3duUHRyPERyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKSBPVkVSUklE
RTsKIApAQCAtMTYzLDYgKzE4MSw3IEBAIHByaXZhdGU6CiAgICAgRXdrVmlldyogbV9ld2tWaWV3
OwogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IG1fcGFnZTsKICAgICBEZWZhdWx0VW5kb0NvbnRy
b2xsZXIgbV91bmRvQ29udHJvbGxlcjsKKyAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBtX3VzZXJWaWV3cG9ydFRyYW5zZm9ybTsKICAgICAvLyBGSVhNRTogUmVtb3ZlIHdoZW4gcG9z
c2libGUuCiAgICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bD4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6OlBh
Z2VWaWV3cG9ydENvbnRyb2xsZXI+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189310</attachid>
            <date>2013-02-20 06:49:41 -0800</date>
            <delta_ts>2013-02-20 06:58:48 -0800</delta_ts>
            <desc>patch v3</desc>
            <filename>bug110216_v3</filename>
            <type>text/plain</type>
            <size>20903</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDUwMjI2N2EzMzEyOTdmMGQ3NjkxNTFjNjZhNWMzOTI4MDc0NWI3YzEKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIEZlYiAyMCAxMzoxMjo0NiAyMDEzICswMjAwCgogICAgYnVnMTEwMjE2CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDM2NDRjZDIuLmVjMmRmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxMy0w
Mi0yMCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbV0syXVtFRkxdIE1vdmUgQUMgY29kZSBmcm9tIEV3a1ZpZXcgdG8gV2ViVmll
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZWxl
cmF0ZWQgY29tcG9zaXRpbmcgY29kZSBpcyBtb3ZlZCBmcm9tIEV3a1ZpZXcgdG8gV2ViVmlldy4K
KyAgICAgICAgQWRkZWQgbmV3IFdLVmlldyBBUEkgdG8gYmUgdXNlZCBmcm9tIEV3a1ZpZXcgaW5z
dGVhZCBvZiBkaXJlY3QgYWNjZXNzaW5nCisgICAgICAgIHRvIGNvb3JkaW5hdGVkIGdyYXBoaWNz
IHNjZW5lLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAg
ICAgICAoV0tWaWV3U2V0VXNlclZpZXdwb3J0VHJhbnNsYXRpb24pOgorICAgICAgICAoV0tWaWV3
VXNlclZpZXdwb3J0VG9Db250ZW50cyk6CisgICAgICAgIChXS1ZpZXdQYWludFRvQ3VycmVudEdM
Q29udGV4dCk6CisgICAgICAgIChXS1ZpZXdQYWludFRvQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oOgorCisgICAgICAgICAgICBBZGRlZCBXS1Zp
ZXcgQVBJIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcu
Y3BwOgorICAgICAgICAoRXdrVmlldzo6RXdrVmlldyk6CisgICAgICAgIChFd2tWaWV3OjpkaXNw
bGF5VGltZXJGaXJlZCk6CisgICAgICAgIChFd2tWaWV3OjpmZWVkVG91Y2hFdmVudCk6CisgICAg
ICAgIChFd2tWaWV3OjpjcmVhdGVHTFN1cmZhY2UpOgorICAgICAgICAoRXdrVmlldzo6aGFuZGxl
RXZhc09iamVjdENhbGN1bGF0ZSk6CisgICAgICAgIChFd2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91
c2VXaGVlbCk6CisgICAgICAgIChFd2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91c2VEb3duKToKKyAg
ICAgICAgKEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZVVwKToKKyAgICAgICAgKEV3a1ZpZXc6
OmhhbmRsZUV3a1ZpZXdNb3VzZU1vdmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXcuaDoKKyAgICAgICAgKEV3a1ZpZXcpOgorCisgICAgICAgICAgICBVc2luZyBuZXcgV0tW
aWV3IEFQSS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXc6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3OjpwYWludFRvQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6dXNlclZpZXdwb3J0VG9Db250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXc6OnRyYW5zZm9ybUZyb21TY2VuZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnRyYW5z
Zm9ybVRvU2NlbmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojpjb29yZGluYXRlZEdyYXBo
aWNzU2NlbmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjplbnRlckFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6ZXhpdEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzZXRVc2VyVmlld3Bv
cnRUcmFuc2xhdGlvbik6CisgICAgICAgIChXZWJWaWV3KToKKworICAgICAgICAgICAgQWRkZWQg
V2ViVmlldyBtZXRob2RzIHRvIHN1cHBvcnQgbmV3IFdLVmlldyBBUEkuCisKIDIwMTMtMDItMjAg
IENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtFRkxdW1dLMl0gUG9ydCBFd2tQb3B1cE1lbnVJdGVtIHRvIHRoZSBDIEFQSQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCmluZGV4IDc2ZWQ5ZGYuLjE3
NzkxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5j
cHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTcsNiArNTgsMjcgQEAgdm9p
ZCBXS1ZpZXdTZXRWaWV3Q2xpZW50KFdLVmlld1JlZiB2aWV3UmVmLCBjb25zdCBXS1ZpZXdDbGll
bnQqIGNsaWVudCkKICAgICB0b0ltcGwodmlld1JlZiktPmluaXRpYWxpemVDbGllbnQoY2xpZW50
KTsKIH0KIAordm9pZCBXS1ZpZXdTZXRVc2VyVmlld3BvcnRUcmFuc2xhdGlvbihXS1ZpZXdSZWYg
dmlld1JlZiwgZG91YmxlIHR4LCBkb3VibGUgdHkpCit7CisgICAgdG9JbXBsKHZpZXdSZWYpLT5z
ZXRVc2VyVmlld3BvcnRUcmFuc2xhdGlvbih0eCwgdHkpOworfQorCitXS1BvaW50IFdLVmlld1Vz
ZXJWaWV3cG9ydFRvQ29udGVudHMoV0tWaWV3UmVmIHZpZXdSZWYsIFdLUG9pbnQgcG9pbnQpCit7
CisgICAgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHJlc3VsdCA9IHRvSW1wbCh2aWV3UmVmKS0+
dXNlclZpZXdwb3J0VG9Db250ZW50cyh0b0ludFBvaW50KHBvaW50KSk7CisgICAgcmV0dXJuIFdL
UG9pbnRNYWtlKHJlc3VsdC54KCksIHJlc3VsdC55KCkpOworfQorCit2b2lkIFdLVmlld1BhaW50
VG9DdXJyZW50R0xDb250ZXh0KFdLVmlld1JlZiB2aWV3UmVmKQoreworICAgIHRvSW1wbCh2aWV3
UmVmKS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKK30KKwordm9pZCBXS1ZpZXdQYWludFRv
Q2Fpcm9TdXJmYWNlKFdLVmlld1JlZiB2aWV3UmVmLCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Up
Cit7CisgICAgdG9JbXBsKHZpZXdSZWYpLT5wYWludFRvQ2Fpcm9TdXJmYWNlKHN1cmZhY2UpOwor
fQorCiBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1JlZikKIHsKICAgICBy
ZXR1cm4gdG9JbXBsKHZpZXdSZWYpLT5wYWdlUmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAppbmRleCBiNDJiMjI3Li43MzQ1NTY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMzEsNiArMzIsOCBAQCB0eXBlZGVmIHN0cnVjdCBfRXZhcyBFdmFz
OwogdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OwogI2VuZGlmCiAKK3R5
cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKKwogI2lmZGVmIF9f
Y3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgpAQCAtNTcsNiArNjAsMTIgQEAgV0tfRVhQ
T1JUIFdLVmlld1JlZiBXS1ZpZXdDcmVhdGVXaXRoRml4ZWRMYXlvdXQoRXZhcyogY2FudmFzLCBX
S0NvbnRleHRSZWYgY29udGUKIFdLX0VYUE9SVCB2b2lkIFdLVmlld0luaXRpYWxpemUoV0tWaWV3
UmVmKTsKIFdLX0VYUE9SVCB2b2lkIFdLVmlld1NldFZpZXdDbGllbnQoV0tWaWV3UmVmLCBjb25z
dCBXS1ZpZXdDbGllbnQqKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tWaWV3U2V0VXNlclZpZXdwb3J0
VHJhbnNsYXRpb24oV0tWaWV3UmVmLCBkb3VibGUgdHgsIGRvdWJsZSB0eSk7CitXS19FWFBPUlQg
V0tQb2ludCBXS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzKFdLVmlld1JlZiwgV0tQb2ludCk7
CisKK1dLX0VYUE9SVCB2b2lkIFdLVmlld1BhaW50VG9DdXJyZW50R0xDb250ZXh0KFdLVmlld1Jl
Zik7CitXS19FWFBPUlQgdm9pZCBXS1ZpZXdQYWludFRvQ2Fpcm9TdXJmYWNlKFdLVmlld1JlZiwg
Y2Fpcm9fc3VyZmFjZV90Kik7CisKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShX
S1ZpZXdSZWYpOwogCiBXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZXRUaGVtZVBhdGgoV0tWaWV3UmVm
LCBXS1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuY3BwCmluZGV4IDdjMDQ2NGMuLjM5MDI0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAiRXdr
Vmlldy5oIgogCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRFZmwuaCIKLSNpbmNsdWRlICJD
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIgogI2luY2x1ZGUgIkVmbFNjcmVlblV0aWxp
dGllcy5oIgogI2luY2x1ZGUgIkZpbmRDbGllbnRFZmwuaCIKICNpbmNsdWRlICJGb3JtQ2xpZW50
RWZsLmgiCkBAIC02NCw5ICs2Myw3IEBACiAjaW5jbHVkZSA8RWRqZS5oPgogI2luY2x1ZGUgPEV2
YXNfR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzRWZsLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0N1cnNvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNp
bmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2VDYWlyby5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAKQEAgLTI2OSwxMCArMjY2LDcgQEAgRXdrVmlldzo6RXdrVmlldyhFdmFzX09iamVjdCog
ZXZhc09iamVjdCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1BhZ2UKIAogICAg
IFdLVmlld0luaXRpYWxpemUod2tWaWV3KCkpOwogCi0gICAgaWYgKGJlaGF2aW9yID09IERlZmF1
bHRCZWhhdmlvcikgewotICAgICAgICBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKS0+c2V0QWN0
aXZlKHRydWUpOwotICAgICAgICBXS1BhZ2VTZXRVc2VGaXhlZExheW91dCh3a1BhZ2UoKSwgdHJ1
ZSk7Ci0gICAgfQorICAgIFdLUGFnZVNldFVzZUZpeGVkTGF5b3V0KHdrUGFnZSgpLCBiZWhhdmlv
ciA9PSBEZWZhdWx0QmVoYXZpb3IpOwogCiAgICAgV0tQYWdlR3JvdXBSZWYgd2tQYWdlR3JvdXAg
PSBXS1BhZ2VHZXRQYWdlR3JvdXAod2tQYWdlKCkpOwogICAgIFdLUHJlZmVyZW5jZXNSZWYgd2tQ
cmVmZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMod2tQYWdlR3JvdXApOwpAQCAt
NDczLDIyICs0NjcsNiBAQCB2b2lkIEV3a1ZpZXc6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKICAgICB3ZWJWaWV3KCktPnVwZGF0ZVZpZXdwb3J0U2l6ZSgpOwogfQogCi1BZmZpbmVUcmFu
c2Zvcm0gRXdrVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
dHJhbnNmb3JtVG9TY2VuZSgpLmludmVyc2UoKTsKLX0KLQotQWZmaW5lVHJhbnNmb3JtIEV3a1Zp
ZXc6OnRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdAotewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybSA9IHVzZXJWaWV3cG9ydFRyYW5zZm9ybSgpOwotCi0gICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZSgtcGFnZVBvc2l0aW9uKCkueCgpLCAtcGFnZVBvc2l0aW9uKCkueSgpKTsKLSAgICB0
cmFuc2Zvcm0uc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgdHJhbnNmb3JtLnNjYWxl
KHBhZ2VTY2FsZUZhY3RvcigpKTsKLQotICAgIHJldHVybiB0cmFuc2Zvcm0udG9BZmZpbmVUcmFu
c2Zvcm0oKTsKLX0KLQogQWZmaW5lVHJhbnNmb3JtIEV3a1ZpZXc6OnRyYW5zZm9ybVRvU2NyZWVu
KCkgY29uc3QKIHsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwpAQCAtNTIyLDUyICs1
MDAsMTEgQEAgQWZmaW5lVHJhbnNmb3JtIEV3a1ZpZXc6OnRyYW5zZm9ybVRvU2NyZWVuKCkgY29u
c3QKICAgICByZXR1cm4gdHJhbnNmb3JtOwogfQogCi1Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUq
IEV3a1ZpZXc6OmNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpCi17Ci0gICAgRHJhd2luZ0FyZWFQ
cm94eSogZHJhd2luZ0FyZWEgPSBwYWdlKCktPmRyYXdpbmdBcmVhKCk7Ci0gICAgaWYgKCFkcmF3
aW5nQXJlYSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5KiBjb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSA9IGRyYXdpbmdB
cmVhLT5jb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSgpOwotICAgIGlmICghY29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LT5jb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsK
LX0KLQogaW5saW5lIEV3a19WaWV3X1NtYXJ0X0RhdGEqIEV3a1ZpZXc6OnNtYXJ0RGF0YSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHRvU21hcnREYXRhKG1fZXZhc09iamVjdCk7CiB9CiAKLXZvaWQg
RXdrVmlldzo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKQotewotICAgIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKLSAgICBpZiAo
IXNjZW5lKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBjbGVh
biB1cCB0aGlzIGNvZGUgYXMgaXQgaXMgc3BsaXQgb3ZlciBDb29yZEdmeCBhbmQgUGFnZS4KLSAg
ICBzY2VuZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKFdLVmlld0dldERyYXdzQmFja2dyb3VuZCh3a1Zp
ZXcoKSkpOwotCi0gICAgRmxvYXRSZWN0IHZpZXdwb3J0ID0gdXNlclZpZXdwb3J0VHJhbnNmb3Jt
KCkubWFwUmVjdChJbnRSZWN0KEludFBvaW50KCksIHNpemUoKSkpOwotICAgIHNjZW5lLT5wYWlu
dFRvQ3VycmVudEdMQ29udGV4dCh0cmFuc2Zvcm1Ub1NjZW5lKCkudG9UcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCAvKiBvcGFjaXR5ICovIDEsIHZpZXdwb3J0KTsKLX0KLQotdm9pZCBFd2tWaWV3Ojpw
YWludFRvQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKLXsKLSAgICBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUqIHNjZW5lID0gY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7
Ci0gICAgaWYgKCFzY2VuZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPGNhaXJvX3Q+
IGdyYXBoaWNzQ29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShzdXJmYWNlKSk7Ci0KLSAg
ICBjYWlyb190cmFuc2xhdGUoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCAtIHBhZ2VQb3NpdGlvbigp
LngoKSwgLSBwYWdlUG9zaXRpb24oKS55KCkpOwotICAgIGNhaXJvX3NjYWxlKGdyYXBoaWNzQ29u
dGV4dC5nZXQoKSwgcGFnZVNjYWxlRmFjdG9yKCksIHBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICBj
YWlyb19zY2FsZShncmFwaGljc0NvbnRleHQuZ2V0KCksIGRldmljZVNjYWxlRmFjdG9yKCksIGRl
dmljZVNjYWxlRmFjdG9yKCkpOwotCi0gICAgc2NlbmUtPnBhaW50VG9HcmFwaGljc0NvbnRleHQo
Z3JhcGhpY3NDb250ZXh0LmdldCgpKTsKLX0KLQogdm9pZCBFd2tWaWV3OjpkaXNwbGF5VGltZXJG
aXJlZChUaW1lcjxFd2tWaWV3PiopCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBz
bWFydERhdGEoKTsKQEAgLTU4NSwxNCArNTIyLDE0IEBAIHZvaWQgRXdrVmlldzo6ZGlzcGxheVRp
bWVyRmlyZWQoVGltZXI8RXdrVmlldz4qKQogICAgICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgcGFpbnRUb0NhaXJvU3VyZmFjZShzdXJmYWNlLmdldCgp
KTsKKyAgICAgICAgV0tWaWV3UGFpbnRUb0NhaXJvU3VyZmFjZSh3a1ZpZXcoKSwgc3VyZmFjZS5n
ZXQoKSk7CiAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzZC0+aW1h
Z2UsIDAsIDAsIHNkLT52aWV3LncsIHNkLT52aWV3LmgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR0wuZ2V0KCksIG1fZXZhc0dMU3Vy
ZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHTENvbnRleHQtPmNvbnRleHQoKSk7CiAKLSAgICBwYWlu
dFRvQ3VycmVudEdMQ29udGV4dCgpOworICAgIFdLVmlld1BhaW50VG9DdXJyZW50R0xDb250ZXh0
KHdrVmlldygpKTsKIAogICAgIC8vIHNkLT5pbWFnZSBpcyB0aWVkIHRvIGEgbmF0aXZlIHN1cmZh
Y2UsIHdoaWNoIGlzIGluIHRoZSBwYXJlbnQncyBjb29yZGluYXRlcy4KICAgICBldmFzX29iamVj
dF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQoc2QtPmltYWdlLCBzZC0+dmlldy54LCBzZC0+dmlldy55
LCBzZC0+dmlldy53LCBzZC0+dmlldy5oKTsKQEAgLTc1MCw3ICs2ODcsNyBAQCB2b2lkIEV3a1Zp
ZXc6OnNldE1vdXNlRXZlbnRzRW5hYmxlZChib29sIGVuYWJsZWQpCiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKIHZvaWQgRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5
cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1v
ZGlmaWVycykKIHsKLSAgICBwYWdlKCktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hF
dmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgdHJhbnNmb3JtRnJvbVNjZW5lKCksIHRyYW5z
Zm9ybVRvU2NyZWVuKCksIGVjb3JlX3RpbWVfZ2V0KCkpKTsKKyAgICBwYWdlKCktPmhhbmRsZVRv
dWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgd2Vi
VmlldygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgdHJhbnNmb3JtVG9TY3JlZW4oKSwgZWNvcmVf
dGltZV9nZXQoKSkpOwogfQogCiB2b2lkIEV3a1ZpZXc6OnNldFRvdWNoRXZlbnRzRW5hYmxlZChi
b29sIGVuYWJsZWQpCkBAIC04MTAsNDAgKzc0NywxNCBAQCBib29sIEV3a1ZpZXc6OmNyZWF0ZUdM
U3VyZmFjZSgpCiAKICAgICBFdmFzX0dMX0FQSSogZ2wgPSBldmFzX2dsX2FwaV9nZXQobV9ldmFz
R0wuZ2V0KCkpOwogCi0gICAgSW50UG9pbnQgYm91bmRzRW5kID0gdXNlclZpZXdwb3J0VHJhbnNm
b3JtKCkubWFwUG9pbnQoSW50UG9pbnQoc2l6ZSgpKSk7Ci0gICAgZ2wtPmdsVmlld3BvcnQoMCwg
MCwgYm91bmRzRW5kLngoKSwgYm91bmRzRW5kLnkoKSk7CisgICAgY29uc3QgV0tQb2ludCYgYm91
bmRzRW5kID0gV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cyh3a1ZpZXcoKSwgV0tQb2ludE1h
a2Uoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOworICAgIGdsLT5nbFZpZXdwb3J0
KDAsIDAsIGJvdW5kc0VuZC54LCBib3VuZHNFbmQueSk7CiAgICAgZ2wtPmdsQ2xlYXJDb2xvcigx
LjAsIDEuMCwgMS4wLCAwKTsKICAgICBnbC0+Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsK
IAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEV3a1ZpZXc6OmVudGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoKQotewotICAgIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUg
PSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKLSAgICBpZiAoIXNjZW5lKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBzY2VuZS0+c2V0QWN0aXZlKHRydWUpOwotCi0gICAgaWYgKG1f
aXNBY2NlbGVyYXRlZCAmJiAhbV9ldmFzR0xTdXJmYWNlICYmICFjcmVhdGVHTFN1cmZhY2UoKSkg
ewotICAgICAgICBXQVJOKCJGYWlsZWQgdG8gY3JlYXRlIEdMU3VyZmFjZS4iKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEV3a1Zp
ZXc6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCi17Ci0gICAgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwotICAgIGlm
ICghc2NlbmUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNjZW5lLT5zZXRBY3RpdmUo
ZmFsc2UpOwotICAgIHJldHVybiB0cnVlOwotfQotCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCiAvKioKICAqIEBpbnRlcm5hbApAQCAtMTE3OCw4ICsxMDg5LDcgQEAgdm9pZCBFd2tWaWV3
OjpoYW5kbGVFdmFzT2JqZWN0Q2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0KQogICAg
ICAgICBzbWFydERhdGEtPnZpZXcueCA9IHg7CiAgICAgICAgIHNtYXJ0RGF0YS0+dmlldy55ID0g
eTsKICAgICAgICAgZXZhc19vYmplY3RfbW92ZShzbWFydERhdGEtPmltYWdlLCB4LCB5KTsKLQot
ICAgICAgICBzZWxmLT5zZXRVc2VyVmlld3BvcnRUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRy
aXgoKS50cmFuc2xhdGUoeCwgeSkpOworICAgICAgICBXS1ZpZXdTZXRVc2VyVmlld3BvcnRUcmFu
c2xhdGlvbihzZWxmLT53a1ZpZXcoKSwgeCwgeSk7CiAgICAgfQogCiAgICAgaWYgKHNtYXJ0RGF0
YS0+Y2hhbmdlZC5zaXplKSB7CkBAIC0xMjQ2LDIxICsxMTU2LDIxIEBAIEVpbmFfQm9vbCBFd2tW
aWV3OjpoYW5kbGVFd2tWaWV3Rm9jdXNPdXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
KQogRWluYV9Cb29sIEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZVdoZWVsKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogd2hlZWxF
dmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0gdG9Fd2tWaWV3KHNtYXJ0RGF0YSk7Ci0gICAg
c2VsZi0+cGFnZSgpLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQod2hlZWxF
dmVudCwgc2VsZi0+dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVu
KCkpKTsKKyAgICBzZWxmLT5wYWdlKCktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxF
dmVudCh3aGVlbEV2ZW50LCBzZWxmLT53ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZSgpLCBz
ZWxmLT50cmFuc2Zvcm1Ub1NjcmVlbigpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFf
Qm9vbCBFd2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91c2VEb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBkb3duRXZlbnQpCiB7CiAg
ICAgRXdrVmlldyogc2VsZiA9IHRvRXdrVmlldyhzbWFydERhdGEpOwotICAgIHNlbGYtPnBhZ2Uo
KS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGRvd25FdmVudCwgc2VsZi0+
dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKKyAgICBz
ZWxmLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChkb3duRXZl
bnQsIHNlbGYtPndlYlZpZXcoKS0+dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9y
bVRvU2NyZWVuKCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIEV3a1ZpZXc6
OmhhbmRsZUV3a1ZpZXdNb3VzZVVwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29u
c3QgRXZhc19FdmVudF9Nb3VzZV9VcCogdXBFdmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0g
dG9Fd2tWaWV3KHNtYXJ0RGF0YSk7Ci0gICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50
KE5hdGl2ZVdlYk1vdXNlRXZlbnQodXBFdmVudCwgc2VsZi0+dHJhbnNmb3JtRnJvbVNjZW5lKCks
IHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKKyAgICBzZWxmLT5wYWdlKCktPmhhbmRsZU1v
dXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCBzZWxmLT53ZWJWaWV3KCktPnRy
YW5zZm9ybUZyb21TY2VuZSgpLCBzZWxmLT50cmFuc2Zvcm1Ub1NjcmVlbigpKSk7CiAKICAgICBp
ZiAoSW5wdXRNZXRob2RDb250ZXh0RWZsKiBpbnB1dE1ldGhvZENvbnRleHQgPSBzZWxmLT5pbnB1
dE1ldGhvZENvbnRleHQoKSkKICAgICAgICAgaW5wdXRNZXRob2RDb250ZXh0LT5oYW5kbGVNb3Vz
ZVVwRXZlbnQodXBFdmVudCk7CkBAIC0xMjcxLDcgKzExODEsNyBAQCBFaW5hX0Jvb2wgRXdrVmll
dzo6aGFuZGxlRXdrVmlld01vdXNlVXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBj
b25zdCBFdgogRWluYV9Cb29sIEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZU1vdmUoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUqIG1v
dmVFdmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0gdG9Fd2tWaWV3KHNtYXJ0RGF0YSk7Ci0g
ICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQobW92
ZUV2ZW50LCBzZWxmLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+dHJhbnNmb3JtVG9TY3Jl
ZW4oKSkpOworICAgIHNlbGYtPnBhZ2UoKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3Vz
ZUV2ZW50KG1vdmVFdmVudCwgc2VsZi0+d2ViVmlldygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwg
c2VsZi0+dHJhbnNmb3JtVG9TY3JlZW4oKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggYjk0NjYwOC4uNjI5
ZTM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAt
MTMyLDEyICsxMzIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKTsKICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KIAotICAgIHZvaWQgc2V0VXNlclZpZXdwb3J0VHJhbnNmb3JtKGNvbnN0IFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pIHsgbV91c2VyVmlld3BvcnRUcmFu
c2Zvcm0gPSB0cmFuc2Zvcm07IH0KLSAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCB1
c2VyVmlld3BvcnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3VzZXJWaWV3cG9ydFRyYW5z
Zm9ybTsgfQotCi0gICAgLy8gRklYTUU6IENvbnZlcnQgdG8gVHJhbnNmb3JtYXRpb25NYXRyaXgu
Ci0gICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdDsK
LSAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3Q7
CiAgICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybVRvU2NyZWVuKCkgY29uc3Q7
CiAKICAgICB2b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KCk7CkBAIC0xNzUsOCArMTY5LDYg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0V2luZG93R2VvbWV0cnkoY29uc3QgV0tSZWN0Jik7CiAK
ICAgICBib29sIGNyZWF0ZUdMU3VyZmFjZSgpOwotICAgIGJvb2wgZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSgpOwotICAgIGJvb2wgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KCk7CiAgICAgdm9pZCBzZXROZWVkc1N1cmZhY2VSZXNpemUoKSB7IG1fcGVuZGluZ1N1cmZhY2VS
ZXNpemUgPSB0cnVlOyB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKQEAgLTIyOSw4
ICsyMjEsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwbGF5VGltZXJGaXJlZChXZWJDb3Jl
OjpUaW1lcjxFd2tWaWV3PiopOwogCi0gICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lKiBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKLQogICAgIC8vIEV2YXNfU21hcnRfQ2xh
c3MgY2FsbGJhY2sgaW50ZXJmYWNlOgogICAgIHN0YXRpYyB2b2lkIGhhbmRsZUV2YXNPYmplY3RB
ZGQoRXZhc19PYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCBoYW5kbGVFdmFzT2JqZWN0RGVsZXRl
KEV2YXNfT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApp
bmRleCAxMGEzODUxLi41NWZiYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Vmlldy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXZWJWaWV3LmgiCiAKKyNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5o
IgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlckVmbC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVh
UHJveHlJbXBsLmgiCiAjaW5jbHVkZSAiRXdrVmlldy5oIgpAQCAtMzgsNiArMzksNyBAQAogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudUxpc3RlbmVyRWZs
LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg+CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgpAQCAtNzYsNiArNzgsNDgg
QEAgV2ViVmlldzo6fldlYlZpZXcoKQogdm9pZCBXZWJWaWV3Ojppbml0aWFsaXplKCkKIHsKICAg
ICBtX3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKCk7CisgICAgaWYgKENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKSkKKyAgICAgICAgc2Nl
bmUtPnNldEFjdGl2ZSh0cnVlKTsKK30KKwordm9pZCBXZWJWaWV3OjpzZXRVc2VyVmlld3BvcnRU
cmFuc2xhdGlvbihkb3VibGUgdHgsIGRvdWJsZSB0eSkKK3sKKyAgICBtX3VzZXJWaWV3cG9ydFRy
YW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkudHJhbnNsYXRlKHR4LCB0eSk7Cit9CisK
K0ludFBvaW50IFdlYlZpZXc6OnVzZXJWaWV3cG9ydFRvQ29udGVudHMoY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdAoreworICAgIHJldHVybiBtX3VzZXJWaWV3cG9ydFRyYW5zZm9ybS5tYXBQ
b2ludChwb2ludCk7Cit9CisKK3ZvaWQgV2ViVmlldzo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQo
KQoreworICAgIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdy
YXBoaWNzU2NlbmUoKTsKKyAgICBpZiAoIXNjZW5lKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBGSVhNRTogV2UgbmVlZCB0byBjbGVhbiB1cCB0aGlzIGNvZGUgYXMgaXQgaXMgc3BsaXQgb3Zl
ciBDb29yZEdmeCBhbmQgUGFnZS4KKyAgICBzY2VuZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKG1fcGFn
ZS0+ZHJhd3NCYWNrZ3JvdW5kKCkpOworCisgICAgRmxvYXRSZWN0IHZpZXdwb3J0ID0gbV91c2Vy
Vmlld3BvcnRUcmFuc2Zvcm0ubWFwUmVjdChJbnRSZWN0KEludFBvaW50KCksIG1fZXdrVmlldy0+
c2l6ZSgpKSk7CisgICAgc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHRyYW5zZm9ybVRv
U2NlbmUoKS50b1RyYW5zZm9ybWF0aW9uTWF0cml4KCksIC8qIG9wYWNpdHkgKi8gMSwgdmlld3Bv
cnQpOworfQorCit2b2lkIFdlYlZpZXc6OnBhaW50VG9DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlKQoreworICAgIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBj
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKKyAgICBpZiAoIXNjZW5lKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gZ3JhcGhpY3NDb250ZXh0ID0gYWRvcHRSZWYoY2Fp
cm9fY3JlYXRlKHN1cmZhY2UpKTsKKworICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBhZ2VQb3NpdGlv
biA9IG1fZXdrVmlldy0+cGFnZVBvc2l0aW9uKCk7CisgICAgZG91YmxlIGVmZmVjdGl2ZVNjYWxl
ID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpICogbV9ld2tWaWV3LT5wYWdlU2NhbGVGYWN0
b3IoKTsKKworICAgIGNhaXJvX21hdHJpeF90IHRyYW5zZm9ybSA9IHsgZWZmZWN0aXZlU2NhbGUs
IDAsIDAsIGVmZmVjdGl2ZVNjYWxlLCAtIHBhZ2VQb3NpdGlvbi54KCksIC0gcGFnZVBvc2l0aW9u
LnkoKSB9OworICAgIGNhaXJvX3NldF9tYXRyaXgoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCAmdHJh
bnNmb3JtKTsKKworICAgIHNjZW5lLT5wYWludFRvR3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29u
dGV4dC5nZXQoKSk7CiB9CiAKIEV2YXNfT2JqZWN0KiBXZWJWaWV3OjpldmFzT2JqZWN0KCkKQEAg
LTE3MCw2ICsyMTQsMzYgQEAgdm9pZCBXZWJWaWV3OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDb250ZW50
c1NpemUodGhpcywgc2l6ZSk7CiB9CiAKK0FmZmluZVRyYW5zZm9ybSBXZWJWaWV3Ojp0cmFuc2Zv
cm1Gcm9tU2NlbmUoKSBjb25zdAoreworICAgIHJldHVybiB0cmFuc2Zvcm1Ub1NjZW5lKCkuaW52
ZXJzZSgpOworfQorCitBZmZpbmVUcmFuc2Zvcm0gV2ViVmlldzo6dHJhbnNmb3JtVG9TY2VuZSgp
IGNvbnN0Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV91c2VyVmll
d3BvcnRUcmFuc2Zvcm07CisKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwYWdlUG9zaXRpb24gPSBt
X2V3a1ZpZXctPnBhZ2VQb3NpdGlvbigpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoIC1wYWdl
UG9zaXRpb24ueCgpLCAtcGFnZVBvc2l0aW9uLnkoKSk7CisgICAgdHJhbnNmb3JtLnNjYWxlKG1f
cGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgdHJhbnNmb3JtLnNjYWxlKG1fZXdrVmll
dy0+cGFnZVNjYWxlRmFjdG9yKCkpOworCisgICAgcmV0dXJuIHRyYW5zZm9ybS50b0FmZmluZVRy
YW5zZm9ybSgpOworfQorCitDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIFdlYlZpZXc6OmNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZSgpCit7CisgICAgRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0Fy
ZWEgPSBtX3BhZ2UtPmRyYXdpbmdBcmVhKCk7CisgICAgaWYgKCFkcmF3aW5nQXJlYSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
KiBsYXllclRyZWVIb3N0UHJveHkgPSBkcmF3aW5nQXJlYS0+Y29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkoKTsKKyAgICBpZiAoIWxheWVyVHJlZUhvc3RQcm94eSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICByZXR1cm4gbGF5ZXJUcmVlSG9zdFByb3h5LT5jb29yZGluYXRlZEdyYXBoaWNz
U2NlbmUoKTsKK30KKwogLy8gUGFnZSBDbGllbnQKIAogUGFzc093blB0cjxEcmF3aW5nQXJlYVBy
b3h5PiBXZWJWaWV3OjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkKQEAgLTM0MiwxMiArNDE2LDE0
IEBAIHZvaWQgV2ViVmlldzo6c2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0
b3I+LCBib29sLCBib29sKQogCiB2b2lkIFdlYlZpZXc6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpCiB7Ci0gICAgbV9ld2tWaWV3LT5lbnRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CisgICAgaWYgKENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKSkKKyAgICAgICAgc2Nl
bmUtPnNldEFjdGl2ZSh0cnVlKTsKIH0KIAogdm9pZCBXZWJWaWV3OjpleGl0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoKQogewotICAgIG1fZXdrVmlldy0+ZXhpdEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKCk7CisgICAgaWYgKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBj
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKSkKKyAgICAgICAgc2NlbmUtPnNldEFjdGl2ZShmYWxz
ZSk7CiB9CiAKIHZvaWQgV2ViVmlldzo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmll
dy5oCmluZGV4IDQ0ZWU5ZDcuLjk0OGVlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlldy5oCkBAIC0zMSwxMyArMzEsMTkgQEAKICNpbmNsdWRlICJEZWZhdWx0VW5kb0NvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5o
IgorI2luY2x1ZGUgIldlYkdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNp
bmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oPgogCiBjbGFzcyBFd2tWaWV3OwogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBQYWdlVmlld3BvcnRDb250cm9sbGVyOwpAQCAtNTIsNiArNTgsMTIgQEAgcHVibGljOgog
CiAgICAgdm9pZCBpbml0aWFsaXplKCk7CiAKKyAgICB2b2lkIHNldFVzZXJWaWV3cG9ydFRyYW5z
bGF0aW9uKGRvdWJsZSB0eCwgZG91YmxlIHR5KTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCB1c2Vy
Vmlld3BvcnRUb0NvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Q7CisKKyAg
ICB2b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KCk7CisgICAgdm9pZCBwYWludFRvQ2Fpcm9T
dXJmYWNlKGNhaXJvX3N1cmZhY2VfdCopOworCiAgICAgV0tQYWdlUmVmIHBhZ2VSZWYoKSBjb25z
dCB7IHJldHVybiB0b0FQSShtX3BhZ2UuZ2V0KCkpOyB9CiAKICAgICB2b2lkIHNldERyYXdzQmFj
a2dyb3VuZChib29sKTsKQEAgLTgyLDcgKzk0LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0
ZVZpZXdwb3J0U2l6ZSgpOwogICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKTsKIAorICAgIC8vIEZJWE1FOiBTaG91bGQgYmUgcHJpdmF0ZS4KKyAg
ICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3Q7Cisg
ICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdDsKKwog
cHJpdmF0ZToKKyAgICBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIGNvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZSgpOworCiAgICAgLy8gUGFnZUNsaWVudAogICAgIFBhc3NPd25QdHI8
RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpIE9WRVJSSURFOwogCkBA
IC0xNjMsNiArMTgxLDcgQEAgcHJpdmF0ZToKICAgICBFd2tWaWV3KiBtX2V3a1ZpZXc7CiAgICAg
UmVmUHRyPFdlYlBhZ2VQcm94eT4gbV9wYWdlOwogICAgIERlZmF1bHRVbmRvQ29udHJvbGxlciBt
X3VuZG9Db250cm9sbGVyOworICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdXNl
clZpZXdwb3J0VHJhbnNmb3JtOwogICAgIC8vIEZJWE1FOiBSZW1vdmUgd2hlbiBwb3NzaWJsZS4K
ICAgICBPd25QdHI8V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsPiBtX3Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQ7CiAgICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdw
b3J0Q29udHJvbGxlcj4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189313</attachid>
            <date>2013-02-20 06:58:48 -0800</date>
            <delta_ts>2013-02-21 00:25:08 -0800</delta_ts>
            <desc>patch v4</desc>
            <filename>bug110216_v4</filename>
            <type>text/plain</type>
            <size>20902</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDFmMmRhOTZlZjc2YTMwYjkxNGZiNDMyMmI5NmJkNzJkYzU3NDY2NjIKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIEZlYiAyMCAxMzoxMjo0NiAyMDEzICswMjAwCgogICAgYnVnMTEwMjE2CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDM2NDRjZDIuLmVjMmRmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxMy0w
Mi0yMCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbV0syXVtFRkxdIE1vdmUgQUMgY29kZSBmcm9tIEV3a1ZpZXcgdG8gV2ViVmll
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZWxl
cmF0ZWQgY29tcG9zaXRpbmcgY29kZSBpcyBtb3ZlZCBmcm9tIEV3a1ZpZXcgdG8gV2ViVmlldy4K
KyAgICAgICAgQWRkZWQgbmV3IFdLVmlldyBBUEkgdG8gYmUgdXNlZCBmcm9tIEV3a1ZpZXcgaW5z
dGVhZCBvZiBkaXJlY3QgYWNjZXNzaW5nCisgICAgICAgIHRvIGNvb3JkaW5hdGVkIGdyYXBoaWNz
IHNjZW5lLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAg
ICAgICAoV0tWaWV3U2V0VXNlclZpZXdwb3J0VHJhbnNsYXRpb24pOgorICAgICAgICAoV0tWaWV3
VXNlclZpZXdwb3J0VG9Db250ZW50cyk6CisgICAgICAgIChXS1ZpZXdQYWludFRvQ3VycmVudEdM
Q29udGV4dCk6CisgICAgICAgIChXS1ZpZXdQYWludFRvQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oOgorCisgICAgICAgICAgICBBZGRlZCBXS1Zp
ZXcgQVBJIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcu
Y3BwOgorICAgICAgICAoRXdrVmlldzo6RXdrVmlldyk6CisgICAgICAgIChFd2tWaWV3OjpkaXNw
bGF5VGltZXJGaXJlZCk6CisgICAgICAgIChFd2tWaWV3OjpmZWVkVG91Y2hFdmVudCk6CisgICAg
ICAgIChFd2tWaWV3OjpjcmVhdGVHTFN1cmZhY2UpOgorICAgICAgICAoRXdrVmlldzo6aGFuZGxl
RXZhc09iamVjdENhbGN1bGF0ZSk6CisgICAgICAgIChFd2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91
c2VXaGVlbCk6CisgICAgICAgIChFd2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91c2VEb3duKToKKyAg
ICAgICAgKEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZVVwKToKKyAgICAgICAgKEV3a1ZpZXc6
OmhhbmRsZUV3a1ZpZXdNb3VzZU1vdmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXcuaDoKKyAgICAgICAgKEV3a1ZpZXcpOgorCisgICAgICAgICAgICBVc2luZyBuZXcgV0tW
aWV3IEFQSS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXc6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3OjpwYWludFRvQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6dXNlclZpZXdwb3J0VG9Db250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXc6OnRyYW5zZm9ybUZyb21TY2VuZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnRyYW5z
Zm9ybVRvU2NlbmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojpjb29yZGluYXRlZEdyYXBo
aWNzU2NlbmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjplbnRlckFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6ZXhpdEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzZXRVc2VyVmlld3Bv
cnRUcmFuc2xhdGlvbik6CisgICAgICAgIChXZWJWaWV3KToKKworICAgICAgICAgICAgQWRkZWQg
V2ViVmlldyBtZXRob2RzIHRvIHN1cHBvcnQgbmV3IFdLVmlldyBBUEkuCisKIDIwMTMtMDItMjAg
IENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtFRkxdW1dLMl0gUG9ydCBFd2tQb3B1cE1lbnVJdGVtIHRvIHRoZSBDIEFQSQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCmluZGV4IDc2ZWQ5ZGYuLjE3
NzkxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5j
cHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTcsNiArNTgsMjcgQEAgdm9p
ZCBXS1ZpZXdTZXRWaWV3Q2xpZW50KFdLVmlld1JlZiB2aWV3UmVmLCBjb25zdCBXS1ZpZXdDbGll
bnQqIGNsaWVudCkKICAgICB0b0ltcGwodmlld1JlZiktPmluaXRpYWxpemVDbGllbnQoY2xpZW50
KTsKIH0KIAordm9pZCBXS1ZpZXdTZXRVc2VyVmlld3BvcnRUcmFuc2xhdGlvbihXS1ZpZXdSZWYg
dmlld1JlZiwgZG91YmxlIHR4LCBkb3VibGUgdHkpCit7CisgICAgdG9JbXBsKHZpZXdSZWYpLT5z
ZXRVc2VyVmlld3BvcnRUcmFuc2xhdGlvbih0eCwgdHkpOworfQorCitXS1BvaW50IFdLVmlld1Vz
ZXJWaWV3cG9ydFRvQ29udGVudHMoV0tWaWV3UmVmIHZpZXdSZWYsIFdLUG9pbnQgcG9pbnQpCit7
CisgICAgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHJlc3VsdCA9IHRvSW1wbCh2aWV3UmVmKS0+
dXNlclZpZXdwb3J0VG9Db250ZW50cyh0b0ludFBvaW50KHBvaW50KSk7CisgICAgcmV0dXJuIFdL
UG9pbnRNYWtlKHJlc3VsdC54KCksIHJlc3VsdC55KCkpOworfQorCit2b2lkIFdLVmlld1BhaW50
VG9DdXJyZW50R0xDb250ZXh0KFdLVmlld1JlZiB2aWV3UmVmKQoreworICAgIHRvSW1wbCh2aWV3
UmVmKS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKK30KKwordm9pZCBXS1ZpZXdQYWludFRv
Q2Fpcm9TdXJmYWNlKFdLVmlld1JlZiB2aWV3UmVmLCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Up
Cit7CisgICAgdG9JbXBsKHZpZXdSZWYpLT5wYWludFRvQ2Fpcm9TdXJmYWNlKHN1cmZhY2UpOwor
fQorCiBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1JlZikKIHsKICAgICBy
ZXR1cm4gdG9JbXBsKHZpZXdSZWYpLT5wYWdlUmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAppbmRleCBiNDJiMjI3Li43MzQ1NTY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMzEsNiArMzIsOCBAQCB0eXBlZGVmIHN0cnVjdCBfRXZhcyBFdmFz
OwogdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OwogI2VuZGlmCiAKK3R5
cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKKwogI2lmZGVmIF9f
Y3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgpAQCAtNTcsNiArNjAsMTIgQEAgV0tfRVhQ
T1JUIFdLVmlld1JlZiBXS1ZpZXdDcmVhdGVXaXRoRml4ZWRMYXlvdXQoRXZhcyogY2FudmFzLCBX
S0NvbnRleHRSZWYgY29udGUKIFdLX0VYUE9SVCB2b2lkIFdLVmlld0luaXRpYWxpemUoV0tWaWV3
UmVmKTsKIFdLX0VYUE9SVCB2b2lkIFdLVmlld1NldFZpZXdDbGllbnQoV0tWaWV3UmVmLCBjb25z
dCBXS1ZpZXdDbGllbnQqKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tWaWV3U2V0VXNlclZpZXdwb3J0
VHJhbnNsYXRpb24oV0tWaWV3UmVmLCBkb3VibGUgdHgsIGRvdWJsZSB0eSk7CitXS19FWFBPUlQg
V0tQb2ludCBXS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzKFdLVmlld1JlZiwgV0tQb2ludCk7
CisKK1dLX0VYUE9SVCB2b2lkIFdLVmlld1BhaW50VG9DdXJyZW50R0xDb250ZXh0KFdLVmlld1Jl
Zik7CitXS19FWFBPUlQgdm9pZCBXS1ZpZXdQYWludFRvQ2Fpcm9TdXJmYWNlKFdLVmlld1JlZiwg
Y2Fpcm9fc3VyZmFjZV90Kik7CisKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShX
S1ZpZXdSZWYpOwogCiBXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZXRUaGVtZVBhdGgoV0tWaWV3UmVm
LCBXS1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuY3BwCmluZGV4IDdjMDQ2NGMuLjM5MDI0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAiRXdr
Vmlldy5oIgogCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRFZmwuaCIKLSNpbmNsdWRlICJD
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIgogI2luY2x1ZGUgIkVmbFNjcmVlblV0aWxp
dGllcy5oIgogI2luY2x1ZGUgIkZpbmRDbGllbnRFZmwuaCIKICNpbmNsdWRlICJGb3JtQ2xpZW50
RWZsLmgiCkBAIC02NCw5ICs2Myw3IEBACiAjaW5jbHVkZSA8RWRqZS5oPgogI2luY2x1ZGUgPEV2
YXNfR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzRWZsLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0N1cnNvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNp
bmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2VDYWlyby5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAKQEAgLTI2OSwxMCArMjY2LDcgQEAgRXdrVmlldzo6RXdrVmlldyhFdmFzX09iamVjdCog
ZXZhc09iamVjdCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1BhZ2UKIAogICAg
IFdLVmlld0luaXRpYWxpemUod2tWaWV3KCkpOwogCi0gICAgaWYgKGJlaGF2aW9yID09IERlZmF1
bHRCZWhhdmlvcikgewotICAgICAgICBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKS0+c2V0QWN0
aXZlKHRydWUpOwotICAgICAgICBXS1BhZ2VTZXRVc2VGaXhlZExheW91dCh3a1BhZ2UoKSwgdHJ1
ZSk7Ci0gICAgfQorICAgIFdLUGFnZVNldFVzZUZpeGVkTGF5b3V0KHdrUGFnZSgpLCBiZWhhdmlv
ciA9PSBEZWZhdWx0QmVoYXZpb3IpOwogCiAgICAgV0tQYWdlR3JvdXBSZWYgd2tQYWdlR3JvdXAg
PSBXS1BhZ2VHZXRQYWdlR3JvdXAod2tQYWdlKCkpOwogICAgIFdLUHJlZmVyZW5jZXNSZWYgd2tQ
cmVmZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMod2tQYWdlR3JvdXApOwpAQCAt
NDczLDIyICs0NjcsNiBAQCB2b2lkIEV3a1ZpZXc6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKICAgICB3ZWJWaWV3KCktPnVwZGF0ZVZpZXdwb3J0U2l6ZSgpOwogfQogCi1BZmZpbmVUcmFu
c2Zvcm0gRXdrVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
dHJhbnNmb3JtVG9TY2VuZSgpLmludmVyc2UoKTsKLX0KLQotQWZmaW5lVHJhbnNmb3JtIEV3a1Zp
ZXc6OnRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdAotewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybSA9IHVzZXJWaWV3cG9ydFRyYW5zZm9ybSgpOwotCi0gICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZSgtcGFnZVBvc2l0aW9uKCkueCgpLCAtcGFnZVBvc2l0aW9uKCkueSgpKTsKLSAgICB0
cmFuc2Zvcm0uc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgdHJhbnNmb3JtLnNjYWxl
KHBhZ2VTY2FsZUZhY3RvcigpKTsKLQotICAgIHJldHVybiB0cmFuc2Zvcm0udG9BZmZpbmVUcmFu
c2Zvcm0oKTsKLX0KLQogQWZmaW5lVHJhbnNmb3JtIEV3a1ZpZXc6OnRyYW5zZm9ybVRvU2NyZWVu
KCkgY29uc3QKIHsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwpAQCAtNTIyLDUyICs1
MDAsMTEgQEAgQWZmaW5lVHJhbnNmb3JtIEV3a1ZpZXc6OnRyYW5zZm9ybVRvU2NyZWVuKCkgY29u
c3QKICAgICByZXR1cm4gdHJhbnNmb3JtOwogfQogCi1Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUq
IEV3a1ZpZXc6OmNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpCi17Ci0gICAgRHJhd2luZ0FyZWFQ
cm94eSogZHJhd2luZ0FyZWEgPSBwYWdlKCktPmRyYXdpbmdBcmVhKCk7Ci0gICAgaWYgKCFkcmF3
aW5nQXJlYSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5KiBjb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSA9IGRyYXdpbmdB
cmVhLT5jb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSgpOwotICAgIGlmICghY29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LT5jb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsK
LX0KLQogaW5saW5lIEV3a19WaWV3X1NtYXJ0X0RhdGEqIEV3a1ZpZXc6OnNtYXJ0RGF0YSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHRvU21hcnREYXRhKG1fZXZhc09iamVjdCk7CiB9CiAKLXZvaWQg
RXdrVmlldzo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKQotewotICAgIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKLSAgICBpZiAo
IXNjZW5lKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBjbGVh
biB1cCB0aGlzIGNvZGUgYXMgaXQgaXMgc3BsaXQgb3ZlciBDb29yZEdmeCBhbmQgUGFnZS4KLSAg
ICBzY2VuZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKFdLVmlld0dldERyYXdzQmFja2dyb3VuZCh3a1Zp
ZXcoKSkpOwotCi0gICAgRmxvYXRSZWN0IHZpZXdwb3J0ID0gdXNlclZpZXdwb3J0VHJhbnNmb3Jt
KCkubWFwUmVjdChJbnRSZWN0KEludFBvaW50KCksIHNpemUoKSkpOwotICAgIHNjZW5lLT5wYWlu
dFRvQ3VycmVudEdMQ29udGV4dCh0cmFuc2Zvcm1Ub1NjZW5lKCkudG9UcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCAvKiBvcGFjaXR5ICovIDEsIHZpZXdwb3J0KTsKLX0KLQotdm9pZCBFd2tWaWV3Ojpw
YWludFRvQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKLXsKLSAgICBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUqIHNjZW5lID0gY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7
Ci0gICAgaWYgKCFzY2VuZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPGNhaXJvX3Q+
IGdyYXBoaWNzQ29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShzdXJmYWNlKSk7Ci0KLSAg
ICBjYWlyb190cmFuc2xhdGUoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCAtIHBhZ2VQb3NpdGlvbigp
LngoKSwgLSBwYWdlUG9zaXRpb24oKS55KCkpOwotICAgIGNhaXJvX3NjYWxlKGdyYXBoaWNzQ29u
dGV4dC5nZXQoKSwgcGFnZVNjYWxlRmFjdG9yKCksIHBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICBj
YWlyb19zY2FsZShncmFwaGljc0NvbnRleHQuZ2V0KCksIGRldmljZVNjYWxlRmFjdG9yKCksIGRl
dmljZVNjYWxlRmFjdG9yKCkpOwotCi0gICAgc2NlbmUtPnBhaW50VG9HcmFwaGljc0NvbnRleHQo
Z3JhcGhpY3NDb250ZXh0LmdldCgpKTsKLX0KLQogdm9pZCBFd2tWaWV3OjpkaXNwbGF5VGltZXJG
aXJlZChUaW1lcjxFd2tWaWV3PiopCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBz
bWFydERhdGEoKTsKQEAgLTU4NSwxNCArNTIyLDE0IEBAIHZvaWQgRXdrVmlldzo6ZGlzcGxheVRp
bWVyRmlyZWQoVGltZXI8RXdrVmlldz4qKQogICAgICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgcGFpbnRUb0NhaXJvU3VyZmFjZShzdXJmYWNlLmdldCgp
KTsKKyAgICAgICAgV0tWaWV3UGFpbnRUb0NhaXJvU3VyZmFjZSh3a1ZpZXcoKSwgc3VyZmFjZS5n
ZXQoKSk7CiAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzZC0+aW1h
Z2UsIDAsIDAsIHNkLT52aWV3LncsIHNkLT52aWV3LmgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR0wuZ2V0KCksIG1fZXZhc0dMU3Vy
ZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHTENvbnRleHQtPmNvbnRleHQoKSk7CiAKLSAgICBwYWlu
dFRvQ3VycmVudEdMQ29udGV4dCgpOworICAgIFdLVmlld1BhaW50VG9DdXJyZW50R0xDb250ZXh0
KHdrVmlldygpKTsKIAogICAgIC8vIHNkLT5pbWFnZSBpcyB0aWVkIHRvIGEgbmF0aXZlIHN1cmZh
Y2UsIHdoaWNoIGlzIGluIHRoZSBwYXJlbnQncyBjb29yZGluYXRlcy4KICAgICBldmFzX29iamVj
dF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQoc2QtPmltYWdlLCBzZC0+dmlldy54LCBzZC0+dmlldy55
LCBzZC0+dmlldy53LCBzZC0+dmlldy5oKTsKQEAgLTc1MCw3ICs2ODcsNyBAQCB2b2lkIEV3a1Zp
ZXc6OnNldE1vdXNlRXZlbnRzRW5hYmxlZChib29sIGVuYWJsZWQpCiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKIHZvaWQgRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5
cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1v
ZGlmaWVycykKIHsKLSAgICBwYWdlKCktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hF
dmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgdHJhbnNmb3JtRnJvbVNjZW5lKCksIHRyYW5z
Zm9ybVRvU2NyZWVuKCksIGVjb3JlX3RpbWVfZ2V0KCkpKTsKKyAgICBwYWdlKCktPmhhbmRsZVRv
dWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgd2Vi
VmlldygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgdHJhbnNmb3JtVG9TY3JlZW4oKSwgZWNvcmVf
dGltZV9nZXQoKSkpOwogfQogCiB2b2lkIEV3a1ZpZXc6OnNldFRvdWNoRXZlbnRzRW5hYmxlZChi
b29sIGVuYWJsZWQpCkBAIC04MTAsNDAgKzc0NywxNCBAQCBib29sIEV3a1ZpZXc6OmNyZWF0ZUdM
U3VyZmFjZSgpCiAKICAgICBFdmFzX0dMX0FQSSogZ2wgPSBldmFzX2dsX2FwaV9nZXQobV9ldmFz
R0wuZ2V0KCkpOwogCi0gICAgSW50UG9pbnQgYm91bmRzRW5kID0gdXNlclZpZXdwb3J0VHJhbnNm
b3JtKCkubWFwUG9pbnQoSW50UG9pbnQoc2l6ZSgpKSk7Ci0gICAgZ2wtPmdsVmlld3BvcnQoMCwg
MCwgYm91bmRzRW5kLngoKSwgYm91bmRzRW5kLnkoKSk7CisgICAgY29uc3QgV0tQb2ludCYgYm91
bmRzRW5kID0gV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cyh3a1ZpZXcoKSwgV0tQb2ludE1h
a2Uoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOworICAgIGdsLT5nbFZpZXdwb3J0
KDAsIDAsIGJvdW5kc0VuZC54LCBib3VuZHNFbmQueSk7CiAgICAgZ2wtPmdsQ2xlYXJDb2xvcigx
LjAsIDEuMCwgMS4wLCAwKTsKICAgICBnbC0+Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsK
IAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEV3a1ZpZXc6OmVudGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoKQotewotICAgIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUg
PSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKLSAgICBpZiAoIXNjZW5lKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBzY2VuZS0+c2V0QWN0aXZlKHRydWUpOwotCi0gICAgaWYgKG1f
aXNBY2NlbGVyYXRlZCAmJiAhbV9ldmFzR0xTdXJmYWNlICYmICFjcmVhdGVHTFN1cmZhY2UoKSkg
ewotICAgICAgICBXQVJOKCJGYWlsZWQgdG8gY3JlYXRlIEdMU3VyZmFjZS4iKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEV3a1Zp
ZXc6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCi17Ci0gICAgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwotICAgIGlm
ICghc2NlbmUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNjZW5lLT5zZXRBY3RpdmUo
ZmFsc2UpOwotICAgIHJldHVybiB0cnVlOwotfQotCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCiAvKioKICAqIEBpbnRlcm5hbApAQCAtMTE3OCw4ICsxMDg5LDcgQEAgdm9pZCBFd2tWaWV3
OjpoYW5kbGVFdmFzT2JqZWN0Q2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0KQogICAg
ICAgICBzbWFydERhdGEtPnZpZXcueCA9IHg7CiAgICAgICAgIHNtYXJ0RGF0YS0+dmlldy55ID0g
eTsKICAgICAgICAgZXZhc19vYmplY3RfbW92ZShzbWFydERhdGEtPmltYWdlLCB4LCB5KTsKLQot
ICAgICAgICBzZWxmLT5zZXRVc2VyVmlld3BvcnRUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRy
aXgoKS50cmFuc2xhdGUoeCwgeSkpOworICAgICAgICBXS1ZpZXdTZXRVc2VyVmlld3BvcnRUcmFu
c2xhdGlvbihzZWxmLT53a1ZpZXcoKSwgeCwgeSk7CiAgICAgfQogCiAgICAgaWYgKHNtYXJ0RGF0
YS0+Y2hhbmdlZC5zaXplKSB7CkBAIC0xMjQ2LDIxICsxMTU2LDIxIEBAIEVpbmFfQm9vbCBFd2tW
aWV3OjpoYW5kbGVFd2tWaWV3Rm9jdXNPdXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
KQogRWluYV9Cb29sIEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZVdoZWVsKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogd2hlZWxF
dmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0gdG9Fd2tWaWV3KHNtYXJ0RGF0YSk7Ci0gICAg
c2VsZi0+cGFnZSgpLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQod2hlZWxF
dmVudCwgc2VsZi0+dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVu
KCkpKTsKKyAgICBzZWxmLT5wYWdlKCktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxF
dmVudCh3aGVlbEV2ZW50LCBzZWxmLT53ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZSgpLCBz
ZWxmLT50cmFuc2Zvcm1Ub1NjcmVlbigpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFf
Qm9vbCBFd2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91c2VEb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBkb3duRXZlbnQpCiB7CiAg
ICAgRXdrVmlldyogc2VsZiA9IHRvRXdrVmlldyhzbWFydERhdGEpOwotICAgIHNlbGYtPnBhZ2Uo
KS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGRvd25FdmVudCwgc2VsZi0+
dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKKyAgICBz
ZWxmLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChkb3duRXZl
bnQsIHNlbGYtPndlYlZpZXcoKS0+dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9y
bVRvU2NyZWVuKCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIEV3a1ZpZXc6
OmhhbmRsZUV3a1ZpZXdNb3VzZVVwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29u
c3QgRXZhc19FdmVudF9Nb3VzZV9VcCogdXBFdmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0g
dG9Fd2tWaWV3KHNtYXJ0RGF0YSk7Ci0gICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50
KE5hdGl2ZVdlYk1vdXNlRXZlbnQodXBFdmVudCwgc2VsZi0+dHJhbnNmb3JtRnJvbVNjZW5lKCks
IHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKKyAgICBzZWxmLT5wYWdlKCktPmhhbmRsZU1v
dXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCBzZWxmLT53ZWJWaWV3KCktPnRy
YW5zZm9ybUZyb21TY2VuZSgpLCBzZWxmLT50cmFuc2Zvcm1Ub1NjcmVlbigpKSk7CiAKICAgICBp
ZiAoSW5wdXRNZXRob2RDb250ZXh0RWZsKiBpbnB1dE1ldGhvZENvbnRleHQgPSBzZWxmLT5pbnB1
dE1ldGhvZENvbnRleHQoKSkKICAgICAgICAgaW5wdXRNZXRob2RDb250ZXh0LT5oYW5kbGVNb3Vz
ZVVwRXZlbnQodXBFdmVudCk7CkBAIC0xMjcxLDcgKzExODEsNyBAQCBFaW5hX0Jvb2wgRXdrVmll
dzo6aGFuZGxlRXdrVmlld01vdXNlVXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBj
b25zdCBFdgogRWluYV9Cb29sIEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZU1vdmUoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUqIG1v
dmVFdmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0gdG9Fd2tWaWV3KHNtYXJ0RGF0YSk7Ci0g
ICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQobW92
ZUV2ZW50LCBzZWxmLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+dHJhbnNmb3JtVG9TY3Jl
ZW4oKSkpOworICAgIHNlbGYtPnBhZ2UoKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3Vz
ZUV2ZW50KG1vdmVFdmVudCwgc2VsZi0+d2ViVmlldygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwg
c2VsZi0+dHJhbnNmb3JtVG9TY3JlZW4oKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggYjk0NjYwOC4uNjI5
ZTM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAt
MTMyLDEyICsxMzIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKTsKICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KIAotICAgIHZvaWQgc2V0VXNlclZpZXdwb3J0VHJhbnNmb3JtKGNvbnN0IFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pIHsgbV91c2VyVmlld3BvcnRUcmFu
c2Zvcm0gPSB0cmFuc2Zvcm07IH0KLSAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCB1
c2VyVmlld3BvcnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3VzZXJWaWV3cG9ydFRyYW5z
Zm9ybTsgfQotCi0gICAgLy8gRklYTUU6IENvbnZlcnQgdG8gVHJhbnNmb3JtYXRpb25NYXRyaXgu
Ci0gICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdDsK
LSAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3Q7
CiAgICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybVRvU2NyZWVuKCkgY29uc3Q7
CiAKICAgICB2b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KCk7CkBAIC0xNzUsOCArMTY5LDYg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0V2luZG93R2VvbWV0cnkoY29uc3QgV0tSZWN0Jik7CiAK
ICAgICBib29sIGNyZWF0ZUdMU3VyZmFjZSgpOwotICAgIGJvb2wgZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSgpOwotICAgIGJvb2wgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KCk7CiAgICAgdm9pZCBzZXROZWVkc1N1cmZhY2VSZXNpemUoKSB7IG1fcGVuZGluZ1N1cmZhY2VS
ZXNpemUgPSB0cnVlOyB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKQEAgLTIyOSw4
ICsyMjEsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwbGF5VGltZXJGaXJlZChXZWJDb3Jl
OjpUaW1lcjxFd2tWaWV3PiopOwogCi0gICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lKiBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKLQogICAgIC8vIEV2YXNfU21hcnRfQ2xh
c3MgY2FsbGJhY2sgaW50ZXJmYWNlOgogICAgIHN0YXRpYyB2b2lkIGhhbmRsZUV2YXNPYmplY3RB
ZGQoRXZhc19PYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCBoYW5kbGVFdmFzT2JqZWN0RGVsZXRl
KEV2YXNfT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApp
bmRleCAxMGEzODUxLi45Yjk2OTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Vmlldy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXZWJWaWV3LmgiCiAKKyNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5o
IgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlckVmbC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVh
UHJveHlJbXBsLmgiCiAjaW5jbHVkZSAiRXdrVmlldy5oIgpAQCAtMzgsNiArMzksNyBAQAogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudUxpc3RlbmVyRWZs
LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg+CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgpAQCAtNzYsNiArNzgsNDgg
QEAgV2ViVmlldzo6fldlYlZpZXcoKQogdm9pZCBXZWJWaWV3Ojppbml0aWFsaXplKCkKIHsKICAg
ICBtX3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKCk7CisgICAgaWYgKENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKSkKKyAgICAgICAgc2Nl
bmUtPnNldEFjdGl2ZSh0cnVlKTsKK30KKwordm9pZCBXZWJWaWV3OjpzZXRVc2VyVmlld3BvcnRU
cmFuc2xhdGlvbihkb3VibGUgdHgsIGRvdWJsZSB0eSkKK3sKKyAgICBtX3VzZXJWaWV3cG9ydFRy
YW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkudHJhbnNsYXRlKHR4LCB0eSk7Cit9CisK
K0ludFBvaW50IFdlYlZpZXc6OnVzZXJWaWV3cG9ydFRvQ29udGVudHMoY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdAoreworICAgIHJldHVybiBtX3VzZXJWaWV3cG9ydFRyYW5zZm9ybS5tYXBQ
b2ludChwb2ludCk7Cit9CisKK3ZvaWQgV2ViVmlldzo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQo
KQoreworICAgIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdy
YXBoaWNzU2NlbmUoKTsKKyAgICBpZiAoIXNjZW5lKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBGSVhNRTogV2UgbmVlZCB0byBjbGVhbiB1cCB0aGlzIGNvZGUgYXMgaXQgaXMgc3BsaXQgb3Zl
ciBDb29yZEdmeCBhbmQgUGFnZS4KKyAgICBzY2VuZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKG1fcGFn
ZS0+ZHJhd3NCYWNrZ3JvdW5kKCkpOworCisgICAgRmxvYXRSZWN0IHZpZXdwb3J0ID0gbV91c2Vy
Vmlld3BvcnRUcmFuc2Zvcm0ubWFwUmVjdChJbnRSZWN0KEludFBvaW50KCksIG1fZXdrVmlldy0+
c2l6ZSgpKSk7CisgICAgc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHRyYW5zZm9ybVRv
U2NlbmUoKS50b1RyYW5zZm9ybWF0aW9uTWF0cml4KCksIC8qIG9wYWNpdHkgKi8gMSwgdmlld3Bv
cnQpOworfQorCit2b2lkIFdlYlZpZXc6OnBhaW50VG9DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlKQoreworICAgIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBj
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKKyAgICBpZiAoIXNjZW5lKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gZ3JhcGhpY3NDb250ZXh0ID0gYWRvcHRSZWYoY2Fp
cm9fY3JlYXRlKHN1cmZhY2UpKTsKKworICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBhZ2VQb3NpdGlv
biA9IG1fZXdrVmlldy0+cGFnZVBvc2l0aW9uKCk7CisgICAgZG91YmxlIGVmZmVjdGl2ZVNjYWxl
ID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpICogbV9ld2tWaWV3LT5wYWdlU2NhbGVGYWN0
b3IoKTsKKworICAgIGNhaXJvX21hdHJpeF90IHRyYW5zZm9ybSA9IHsgZWZmZWN0aXZlU2NhbGUs
IDAsIDAsIGVmZmVjdGl2ZVNjYWxlLCAtIHBhZ2VQb3NpdGlvbi54KCksIC0gcGFnZVBvc2l0aW9u
LnkoKSB9OworICAgIGNhaXJvX3NldF9tYXRyaXgoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCAmdHJh
bnNmb3JtKTsKKworICAgIHNjZW5lLT5wYWludFRvR3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29u
dGV4dC5nZXQoKSk7CiB9CiAKIEV2YXNfT2JqZWN0KiBXZWJWaWV3OjpldmFzT2JqZWN0KCkKQEAg
LTE3MCw2ICsyMTQsMzYgQEAgdm9pZCBXZWJWaWV3OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDb250ZW50
c1NpemUodGhpcywgc2l6ZSk7CiB9CiAKK0FmZmluZVRyYW5zZm9ybSBXZWJWaWV3Ojp0cmFuc2Zv
cm1Gcm9tU2NlbmUoKSBjb25zdAoreworICAgIHJldHVybiB0cmFuc2Zvcm1Ub1NjZW5lKCkuaW52
ZXJzZSgpOworfQorCitBZmZpbmVUcmFuc2Zvcm0gV2ViVmlldzo6dHJhbnNmb3JtVG9TY2VuZSgp
IGNvbnN0Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV91c2VyVmll
d3BvcnRUcmFuc2Zvcm07CisKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwYWdlUG9zaXRpb24gPSBt
X2V3a1ZpZXctPnBhZ2VQb3NpdGlvbigpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLXBhZ2VQ
b3NpdGlvbi54KCksIC1wYWdlUG9zaXRpb24ueSgpKTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUobV9w
YWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUobV9ld2tWaWV3
LT5wYWdlU2NhbGVGYWN0b3IoKSk7CisKKyAgICByZXR1cm4gdHJhbnNmb3JtLnRvQWZmaW5lVHJh
bnNmb3JtKCk7Cit9CisKK0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogV2ViVmlldzo6Y29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lKCkKK3sKKyAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJl
YSA9IG1fcGFnZS0+ZHJhd2luZ0FyZWEoKTsKKyAgICBpZiAoIWRyYXdpbmdBcmVhKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkq
IGxheWVyVHJlZUhvc3RQcm94eSA9IGRyYXdpbmdBcmVhLT5jb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eSgpOworICAgIGlmICghbGF5ZXJUcmVlSG9zdFByb3h5KQorICAgICAgICByZXR1cm4g
MDsKKworICAgIHJldHVybiBsYXllclRyZWVIb3N0UHJveHktPmNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZSgpOworfQorCiAvLyBQYWdlIENsaWVudAogCiBQYXNzT3duUHRyPERyYXdpbmdBcmVhUHJv
eHk+IFdlYlZpZXc6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKQpAQCAtMzQyLDEyICs0MTYsMTQg
QEAgdm9pZCBXZWJWaWV3OjpzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRv
cj4sIGJvb2wsIGJvb2wpCiAKIHZvaWQgV2ViVmlldzo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JikKIHsKLSAgICBtX2V3a1ZpZXctPmVudGVy
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKKyAgICBpZiAoQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpKQorICAgICAgICBzY2Vu
ZS0+c2V0QWN0aXZlKHRydWUpOwogfQogCiB2b2lkIFdlYlZpZXc6OmV4aXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSgpCiB7Ci0gICAgbV9ld2tWaWV3LT5leGl0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUoKTsKKyAgICBpZiAoQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSA9IGNv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpKQorICAgICAgICBzY2VuZS0+c2V0QWN0aXZlKGZhbHNl
KTsKIH0KIAogdm9pZCBXZWJWaWV3Ojp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShj
b25zdCBMYXllclRyZWVDb250ZXh0JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3
LmgKaW5kZXggNDRlZTlkNy4uOTQ4ZWUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJWaWV3LmgKQEAgLTMxLDEzICszMSwxOSBAQAogI2luY2x1ZGUgIkRlZmF1bHRVbmRvQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViR2VvbWV0cnkuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2lu
Y2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9u
TWF0cml4Lmg+CiAKIGNsYXNzIEV3a1ZpZXc7CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI7CkBAIC01Miw2ICs1OCwxMiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGluaXRpYWxpemUoKTsKIAorICAgIHZvaWQgc2V0VXNlclZpZXdwb3J0VHJhbnNs
YXRpb24oZG91YmxlIHR4LCBkb3VibGUgdHkpOworICAgIFdlYkNvcmU6OkludFBvaW50IHVzZXJW
aWV3cG9ydFRvQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdDsKKworICAg
IHZvaWQgcGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKKyAgICB2b2lkIHBhaW50VG9DYWlyb1N1
cmZhY2UoY2Fpcm9fc3VyZmFjZV90Kik7CisKICAgICBXS1BhZ2VSZWYgcGFnZVJlZigpIGNvbnN0
IHsgcmV0dXJuIHRvQVBJKG1fcGFnZS5nZXQoKSk7IH0KIAogICAgIHZvaWQgc2V0RHJhd3NCYWNr
Z3JvdW5kKGJvb2wpOwpAQCAtODIsNyArOTQsMTMgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRl
Vmlld3BvcnRTaXplKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYpOwogCisgICAgLy8gRklYTUU6IFNob3VsZCBiZSBwcml2YXRlLgorICAg
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1Gcm9tU2NlbmUoKSBjb25zdDsKKyAg
ICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtVG9TY2VuZSgpIGNvbnN0OworCiBw
cml2YXRlOgorICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogY29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lKCk7CisKICAgICAvLyBQYWdlQ2xpZW50CiAgICAgUGFzc093blB0cjxE
cmF3aW5nQXJlYVByb3h5PiBjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkgT1ZFUlJJREU7CiAKQEAg
LTE2Myw2ICsxODEsNyBAQCBwcml2YXRlOgogICAgIEV3a1ZpZXcqIG1fZXdrVmlldzsKICAgICBS
ZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2U7CiAgICAgRGVmYXVsdFVuZG9Db250cm9sbGVyIG1f
dW5kb0NvbnRyb2xsZXI7CisgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggbV91c2Vy
Vmlld3BvcnRUcmFuc2Zvcm07CiAgICAgLy8gRklYTUU6IFJlbW92ZSB3aGVuIHBvc3NpYmxlLgog
ICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw+IG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudDsKICAgICBPd25QdHI8V2ViS2l0OjpQYWdlVmlld3Bv
cnRDb250cm9sbGVyPiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189466</attachid>
            <date>2013-02-21 00:25:08 -0800</date>
            <delta_ts>2013-02-22 00:35:07 -0800</delta_ts>
            <desc>patch v5</desc>
            <filename>bug110216_v5</filename>
            <type>text/plain</type>
            <size>20951</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGMxNGI1N2NlZGM0YzkyMTg1OTJiNjA2NTI2ZDA3ZDc4MTJmYjRiNGIKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIEZlYiAyMCAxMzoxMjo0NiAyMDEzICswMjAwCgogICAgYnVnMTEwMjE2CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDM2NDRjZDIuLmVjMmRmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxMy0w
Mi0yMCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbV0syXVtFRkxdIE1vdmUgQUMgY29kZSBmcm9tIEV3a1ZpZXcgdG8gV2ViVmll
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZWxl
cmF0ZWQgY29tcG9zaXRpbmcgY29kZSBpcyBtb3ZlZCBmcm9tIEV3a1ZpZXcgdG8gV2ViVmlldy4K
KyAgICAgICAgQWRkZWQgbmV3IFdLVmlldyBBUEkgdG8gYmUgdXNlZCBmcm9tIEV3a1ZpZXcgaW5z
dGVhZCBvZiBkaXJlY3QgYWNjZXNzaW5nCisgICAgICAgIHRvIGNvb3JkaW5hdGVkIGdyYXBoaWNz
IHNjZW5lLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAg
ICAgICAoV0tWaWV3U2V0VXNlclZpZXdwb3J0VHJhbnNsYXRpb24pOgorICAgICAgICAoV0tWaWV3
VXNlclZpZXdwb3J0VG9Db250ZW50cyk6CisgICAgICAgIChXS1ZpZXdQYWludFRvQ3VycmVudEdM
Q29udGV4dCk6CisgICAgICAgIChXS1ZpZXdQYWludFRvQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oOgorCisgICAgICAgICAgICBBZGRlZCBXS1Zp
ZXcgQVBJIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcu
Y3BwOgorICAgICAgICAoRXdrVmlldzo6RXdrVmlldyk6CisgICAgICAgIChFd2tWaWV3OjpkaXNw
bGF5VGltZXJGaXJlZCk6CisgICAgICAgIChFd2tWaWV3OjpmZWVkVG91Y2hFdmVudCk6CisgICAg
ICAgIChFd2tWaWV3OjpjcmVhdGVHTFN1cmZhY2UpOgorICAgICAgICAoRXdrVmlldzo6aGFuZGxl
RXZhc09iamVjdENhbGN1bGF0ZSk6CisgICAgICAgIChFd2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91
c2VXaGVlbCk6CisgICAgICAgIChFd2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91c2VEb3duKToKKyAg
ICAgICAgKEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZVVwKToKKyAgICAgICAgKEV3a1ZpZXc6
OmhhbmRsZUV3a1ZpZXdNb3VzZU1vdmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXcuaDoKKyAgICAgICAgKEV3a1ZpZXcpOgorCisgICAgICAgICAgICBVc2luZyBuZXcgV0tW
aWV3IEFQSS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXc6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3OjpwYWludFRvQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6dXNlclZpZXdwb3J0VG9Db250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXc6OnRyYW5zZm9ybUZyb21TY2VuZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnRyYW5z
Zm9ybVRvU2NlbmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojpjb29yZGluYXRlZEdyYXBo
aWNzU2NlbmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjplbnRlckFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6ZXhpdEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzZXRVc2VyVmlld3Bv
cnRUcmFuc2xhdGlvbik6CisgICAgICAgIChXZWJWaWV3KToKKworICAgICAgICAgICAgQWRkZWQg
V2ViVmlldyBtZXRob2RzIHRvIHN1cHBvcnQgbmV3IFdLVmlldyBBUEkuCisKIDIwMTMtMDItMjAg
IENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtFRkxdW1dLMl0gUG9ydCBFd2tQb3B1cE1lbnVJdGVtIHRvIHRoZSBDIEFQSQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCmluZGV4IDc2ZWQ5ZGYuLjE3
NzkxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5j
cHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTcsNiArNTgsMjcgQEAgdm9p
ZCBXS1ZpZXdTZXRWaWV3Q2xpZW50KFdLVmlld1JlZiB2aWV3UmVmLCBjb25zdCBXS1ZpZXdDbGll
bnQqIGNsaWVudCkKICAgICB0b0ltcGwodmlld1JlZiktPmluaXRpYWxpemVDbGllbnQoY2xpZW50
KTsKIH0KIAordm9pZCBXS1ZpZXdTZXRVc2VyVmlld3BvcnRUcmFuc2xhdGlvbihXS1ZpZXdSZWYg
dmlld1JlZiwgZG91YmxlIHR4LCBkb3VibGUgdHkpCit7CisgICAgdG9JbXBsKHZpZXdSZWYpLT5z
ZXRVc2VyVmlld3BvcnRUcmFuc2xhdGlvbih0eCwgdHkpOworfQorCitXS1BvaW50IFdLVmlld1Vz
ZXJWaWV3cG9ydFRvQ29udGVudHMoV0tWaWV3UmVmIHZpZXdSZWYsIFdLUG9pbnQgcG9pbnQpCit7
CisgICAgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHJlc3VsdCA9IHRvSW1wbCh2aWV3UmVmKS0+
dXNlclZpZXdwb3J0VG9Db250ZW50cyh0b0ludFBvaW50KHBvaW50KSk7CisgICAgcmV0dXJuIFdL
UG9pbnRNYWtlKHJlc3VsdC54KCksIHJlc3VsdC55KCkpOworfQorCit2b2lkIFdLVmlld1BhaW50
VG9DdXJyZW50R0xDb250ZXh0KFdLVmlld1JlZiB2aWV3UmVmKQoreworICAgIHRvSW1wbCh2aWV3
UmVmKS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKK30KKwordm9pZCBXS1ZpZXdQYWludFRv
Q2Fpcm9TdXJmYWNlKFdLVmlld1JlZiB2aWV3UmVmLCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Up
Cit7CisgICAgdG9JbXBsKHZpZXdSZWYpLT5wYWludFRvQ2Fpcm9TdXJmYWNlKHN1cmZhY2UpOwor
fQorCiBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1JlZikKIHsKICAgICBy
ZXR1cm4gdG9JbXBsKHZpZXdSZWYpLT5wYWdlUmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAppbmRleCBiNDJiMjI3Li43MzQ1NTY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMzEsNiArMzIsOCBAQCB0eXBlZGVmIHN0cnVjdCBfRXZhcyBFdmFz
OwogdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OwogI2VuZGlmCiAKK3R5
cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKKwogI2lmZGVmIF9f
Y3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgpAQCAtNTcsNiArNjAsMTIgQEAgV0tfRVhQ
T1JUIFdLVmlld1JlZiBXS1ZpZXdDcmVhdGVXaXRoRml4ZWRMYXlvdXQoRXZhcyogY2FudmFzLCBX
S0NvbnRleHRSZWYgY29udGUKIFdLX0VYUE9SVCB2b2lkIFdLVmlld0luaXRpYWxpemUoV0tWaWV3
UmVmKTsKIFdLX0VYUE9SVCB2b2lkIFdLVmlld1NldFZpZXdDbGllbnQoV0tWaWV3UmVmLCBjb25z
dCBXS1ZpZXdDbGllbnQqKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tWaWV3U2V0VXNlclZpZXdwb3J0
VHJhbnNsYXRpb24oV0tWaWV3UmVmLCBkb3VibGUgdHgsIGRvdWJsZSB0eSk7CitXS19FWFBPUlQg
V0tQb2ludCBXS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzKFdLVmlld1JlZiwgV0tQb2ludCk7
CisKK1dLX0VYUE9SVCB2b2lkIFdLVmlld1BhaW50VG9DdXJyZW50R0xDb250ZXh0KFdLVmlld1Jl
Zik7CitXS19FWFBPUlQgdm9pZCBXS1ZpZXdQYWludFRvQ2Fpcm9TdXJmYWNlKFdLVmlld1JlZiwg
Y2Fpcm9fc3VyZmFjZV90Kik7CisKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShX
S1ZpZXdSZWYpOwogCiBXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZXRUaGVtZVBhdGgoV0tWaWV3UmVm
LCBXS1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuY3BwCmluZGV4IDdjMDQ2NGMuLjM5MDI0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAiRXdr
Vmlldy5oIgogCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRFZmwuaCIKLSNpbmNsdWRlICJD
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIgogI2luY2x1ZGUgIkVmbFNjcmVlblV0aWxp
dGllcy5oIgogI2luY2x1ZGUgIkZpbmRDbGllbnRFZmwuaCIKICNpbmNsdWRlICJGb3JtQ2xpZW50
RWZsLmgiCkBAIC02NCw5ICs2Myw3IEBACiAjaW5jbHVkZSA8RWRqZS5oPgogI2luY2x1ZGUgPEV2
YXNfR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzRWZsLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0N1cnNvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNp
bmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2VDYWlyby5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAKQEAgLTI2OSwxMCArMjY2LDcgQEAgRXdrVmlldzo6RXdrVmlldyhFdmFzX09iamVjdCog
ZXZhc09iamVjdCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1BhZ2UKIAogICAg
IFdLVmlld0luaXRpYWxpemUod2tWaWV3KCkpOwogCi0gICAgaWYgKGJlaGF2aW9yID09IERlZmF1
bHRCZWhhdmlvcikgewotICAgICAgICBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKS0+c2V0QWN0
aXZlKHRydWUpOwotICAgICAgICBXS1BhZ2VTZXRVc2VGaXhlZExheW91dCh3a1BhZ2UoKSwgdHJ1
ZSk7Ci0gICAgfQorICAgIFdLUGFnZVNldFVzZUZpeGVkTGF5b3V0KHdrUGFnZSgpLCBiZWhhdmlv
ciA9PSBEZWZhdWx0QmVoYXZpb3IpOwogCiAgICAgV0tQYWdlR3JvdXBSZWYgd2tQYWdlR3JvdXAg
PSBXS1BhZ2VHZXRQYWdlR3JvdXAod2tQYWdlKCkpOwogICAgIFdLUHJlZmVyZW5jZXNSZWYgd2tQ
cmVmZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMod2tQYWdlR3JvdXApOwpAQCAt
NDczLDIyICs0NjcsNiBAQCB2b2lkIEV3a1ZpZXc6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKICAgICB3ZWJWaWV3KCktPnVwZGF0ZVZpZXdwb3J0U2l6ZSgpOwogfQogCi1BZmZpbmVUcmFu
c2Zvcm0gRXdrVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
dHJhbnNmb3JtVG9TY2VuZSgpLmludmVyc2UoKTsKLX0KLQotQWZmaW5lVHJhbnNmb3JtIEV3a1Zp
ZXc6OnRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdAotewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybSA9IHVzZXJWaWV3cG9ydFRyYW5zZm9ybSgpOwotCi0gICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZSgtcGFnZVBvc2l0aW9uKCkueCgpLCAtcGFnZVBvc2l0aW9uKCkueSgpKTsKLSAgICB0
cmFuc2Zvcm0uc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgdHJhbnNmb3JtLnNjYWxl
KHBhZ2VTY2FsZUZhY3RvcigpKTsKLQotICAgIHJldHVybiB0cmFuc2Zvcm0udG9BZmZpbmVUcmFu
c2Zvcm0oKTsKLX0KLQogQWZmaW5lVHJhbnNmb3JtIEV3a1ZpZXc6OnRyYW5zZm9ybVRvU2NyZWVu
KCkgY29uc3QKIHsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwpAQCAtNTIyLDUyICs1
MDAsMTEgQEAgQWZmaW5lVHJhbnNmb3JtIEV3a1ZpZXc6OnRyYW5zZm9ybVRvU2NyZWVuKCkgY29u
c3QKICAgICByZXR1cm4gdHJhbnNmb3JtOwogfQogCi1Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUq
IEV3a1ZpZXc6OmNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpCi17Ci0gICAgRHJhd2luZ0FyZWFQ
cm94eSogZHJhd2luZ0FyZWEgPSBwYWdlKCktPmRyYXdpbmdBcmVhKCk7Ci0gICAgaWYgKCFkcmF3
aW5nQXJlYSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5KiBjb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSA9IGRyYXdpbmdB
cmVhLT5jb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSgpOwotICAgIGlmICghY29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LT5jb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsK
LX0KLQogaW5saW5lIEV3a19WaWV3X1NtYXJ0X0RhdGEqIEV3a1ZpZXc6OnNtYXJ0RGF0YSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHRvU21hcnREYXRhKG1fZXZhc09iamVjdCk7CiB9CiAKLXZvaWQg
RXdrVmlldzo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKQotewotICAgIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKLSAgICBpZiAo
IXNjZW5lKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBjbGVh
biB1cCB0aGlzIGNvZGUgYXMgaXQgaXMgc3BsaXQgb3ZlciBDb29yZEdmeCBhbmQgUGFnZS4KLSAg
ICBzY2VuZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKFdLVmlld0dldERyYXdzQmFja2dyb3VuZCh3a1Zp
ZXcoKSkpOwotCi0gICAgRmxvYXRSZWN0IHZpZXdwb3J0ID0gdXNlclZpZXdwb3J0VHJhbnNmb3Jt
KCkubWFwUmVjdChJbnRSZWN0KEludFBvaW50KCksIHNpemUoKSkpOwotICAgIHNjZW5lLT5wYWlu
dFRvQ3VycmVudEdMQ29udGV4dCh0cmFuc2Zvcm1Ub1NjZW5lKCkudG9UcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCAvKiBvcGFjaXR5ICovIDEsIHZpZXdwb3J0KTsKLX0KLQotdm9pZCBFd2tWaWV3Ojpw
YWludFRvQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKLXsKLSAgICBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUqIHNjZW5lID0gY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7
Ci0gICAgaWYgKCFzY2VuZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPGNhaXJvX3Q+
IGdyYXBoaWNzQ29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShzdXJmYWNlKSk7Ci0KLSAg
ICBjYWlyb190cmFuc2xhdGUoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCAtIHBhZ2VQb3NpdGlvbigp
LngoKSwgLSBwYWdlUG9zaXRpb24oKS55KCkpOwotICAgIGNhaXJvX3NjYWxlKGdyYXBoaWNzQ29u
dGV4dC5nZXQoKSwgcGFnZVNjYWxlRmFjdG9yKCksIHBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICBj
YWlyb19zY2FsZShncmFwaGljc0NvbnRleHQuZ2V0KCksIGRldmljZVNjYWxlRmFjdG9yKCksIGRl
dmljZVNjYWxlRmFjdG9yKCkpOwotCi0gICAgc2NlbmUtPnBhaW50VG9HcmFwaGljc0NvbnRleHQo
Z3JhcGhpY3NDb250ZXh0LmdldCgpKTsKLX0KLQogdm9pZCBFd2tWaWV3OjpkaXNwbGF5VGltZXJG
aXJlZChUaW1lcjxFd2tWaWV3PiopCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBz
bWFydERhdGEoKTsKQEAgLTU4NSwxNCArNTIyLDE0IEBAIHZvaWQgRXdrVmlldzo6ZGlzcGxheVRp
bWVyRmlyZWQoVGltZXI8RXdrVmlldz4qKQogICAgICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgcGFpbnRUb0NhaXJvU3VyZmFjZShzdXJmYWNlLmdldCgp
KTsKKyAgICAgICAgV0tWaWV3UGFpbnRUb0NhaXJvU3VyZmFjZSh3a1ZpZXcoKSwgc3VyZmFjZS5n
ZXQoKSk7CiAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzZC0+aW1h
Z2UsIDAsIDAsIHNkLT52aWV3LncsIHNkLT52aWV3LmgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR0wuZ2V0KCksIG1fZXZhc0dMU3Vy
ZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHTENvbnRleHQtPmNvbnRleHQoKSk7CiAKLSAgICBwYWlu
dFRvQ3VycmVudEdMQ29udGV4dCgpOworICAgIFdLVmlld1BhaW50VG9DdXJyZW50R0xDb250ZXh0
KHdrVmlldygpKTsKIAogICAgIC8vIHNkLT5pbWFnZSBpcyB0aWVkIHRvIGEgbmF0aXZlIHN1cmZh
Y2UsIHdoaWNoIGlzIGluIHRoZSBwYXJlbnQncyBjb29yZGluYXRlcy4KICAgICBldmFzX29iamVj
dF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQoc2QtPmltYWdlLCBzZC0+dmlldy54LCBzZC0+dmlldy55
LCBzZC0+dmlldy53LCBzZC0+dmlldy5oKTsKQEAgLTc1MCw3ICs2ODcsNyBAQCB2b2lkIEV3a1Zp
ZXc6OnNldE1vdXNlRXZlbnRzRW5hYmxlZChib29sIGVuYWJsZWQpCiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKIHZvaWQgRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5
cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1v
ZGlmaWVycykKIHsKLSAgICBwYWdlKCktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hF
dmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgdHJhbnNmb3JtRnJvbVNjZW5lKCksIHRyYW5z
Zm9ybVRvU2NyZWVuKCksIGVjb3JlX3RpbWVfZ2V0KCkpKTsKKyAgICBwYWdlKCktPmhhbmRsZVRv
dWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgd2Vi
VmlldygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgdHJhbnNmb3JtVG9TY3JlZW4oKSwgZWNvcmVf
dGltZV9nZXQoKSkpOwogfQogCiB2b2lkIEV3a1ZpZXc6OnNldFRvdWNoRXZlbnRzRW5hYmxlZChi
b29sIGVuYWJsZWQpCkBAIC04MTAsNDAgKzc0NywxNCBAQCBib29sIEV3a1ZpZXc6OmNyZWF0ZUdM
U3VyZmFjZSgpCiAKICAgICBFdmFzX0dMX0FQSSogZ2wgPSBldmFzX2dsX2FwaV9nZXQobV9ldmFz
R0wuZ2V0KCkpOwogCi0gICAgSW50UG9pbnQgYm91bmRzRW5kID0gdXNlclZpZXdwb3J0VHJhbnNm
b3JtKCkubWFwUG9pbnQoSW50UG9pbnQoc2l6ZSgpKSk7Ci0gICAgZ2wtPmdsVmlld3BvcnQoMCwg
MCwgYm91bmRzRW5kLngoKSwgYm91bmRzRW5kLnkoKSk7CisgICAgY29uc3QgV0tQb2ludCYgYm91
bmRzRW5kID0gV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cyh3a1ZpZXcoKSwgV0tQb2ludE1h
a2Uoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOworICAgIGdsLT5nbFZpZXdwb3J0
KDAsIDAsIGJvdW5kc0VuZC54LCBib3VuZHNFbmQueSk7CiAgICAgZ2wtPmdsQ2xlYXJDb2xvcigx
LjAsIDEuMCwgMS4wLCAwKTsKICAgICBnbC0+Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsK
IAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEV3a1ZpZXc6OmVudGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoKQotewotICAgIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUg
PSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKLSAgICBpZiAoIXNjZW5lKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBzY2VuZS0+c2V0QWN0aXZlKHRydWUpOwotCi0gICAgaWYgKG1f
aXNBY2NlbGVyYXRlZCAmJiAhbV9ldmFzR0xTdXJmYWNlICYmICFjcmVhdGVHTFN1cmZhY2UoKSkg
ewotICAgICAgICBXQVJOKCJGYWlsZWQgdG8gY3JlYXRlIEdMU3VyZmFjZS4iKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEV3a1Zp
ZXc6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCi17Ci0gICAgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwotICAgIGlm
ICghc2NlbmUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNjZW5lLT5zZXRBY3RpdmUo
ZmFsc2UpOwotICAgIHJldHVybiB0cnVlOwotfQotCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCiAvKioKICAqIEBpbnRlcm5hbApAQCAtMTE3OCw4ICsxMDg5LDcgQEAgdm9pZCBFd2tWaWV3
OjpoYW5kbGVFdmFzT2JqZWN0Q2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0KQogICAg
ICAgICBzbWFydERhdGEtPnZpZXcueCA9IHg7CiAgICAgICAgIHNtYXJ0RGF0YS0+dmlldy55ID0g
eTsKICAgICAgICAgZXZhc19vYmplY3RfbW92ZShzbWFydERhdGEtPmltYWdlLCB4LCB5KTsKLQot
ICAgICAgICBzZWxmLT5zZXRVc2VyVmlld3BvcnRUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRy
aXgoKS50cmFuc2xhdGUoeCwgeSkpOworICAgICAgICBXS1ZpZXdTZXRVc2VyVmlld3BvcnRUcmFu
c2xhdGlvbihzZWxmLT53a1ZpZXcoKSwgeCwgeSk7CiAgICAgfQogCiAgICAgaWYgKHNtYXJ0RGF0
YS0+Y2hhbmdlZC5zaXplKSB7CkBAIC0xMjQ2LDIxICsxMTU2LDIxIEBAIEVpbmFfQm9vbCBFd2tW
aWV3OjpoYW5kbGVFd2tWaWV3Rm9jdXNPdXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
KQogRWluYV9Cb29sIEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZVdoZWVsKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogd2hlZWxF
dmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0gdG9Fd2tWaWV3KHNtYXJ0RGF0YSk7Ci0gICAg
c2VsZi0+cGFnZSgpLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQod2hlZWxF
dmVudCwgc2VsZi0+dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVu
KCkpKTsKKyAgICBzZWxmLT5wYWdlKCktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxF
dmVudCh3aGVlbEV2ZW50LCBzZWxmLT53ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZSgpLCBz
ZWxmLT50cmFuc2Zvcm1Ub1NjcmVlbigpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFf
Qm9vbCBFd2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91c2VEb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBkb3duRXZlbnQpCiB7CiAg
ICAgRXdrVmlldyogc2VsZiA9IHRvRXdrVmlldyhzbWFydERhdGEpOwotICAgIHNlbGYtPnBhZ2Uo
KS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGRvd25FdmVudCwgc2VsZi0+
dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKKyAgICBz
ZWxmLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChkb3duRXZl
bnQsIHNlbGYtPndlYlZpZXcoKS0+dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9y
bVRvU2NyZWVuKCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIEV3a1ZpZXc6
OmhhbmRsZUV3a1ZpZXdNb3VzZVVwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29u
c3QgRXZhc19FdmVudF9Nb3VzZV9VcCogdXBFdmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0g
dG9Fd2tWaWV3KHNtYXJ0RGF0YSk7Ci0gICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50
KE5hdGl2ZVdlYk1vdXNlRXZlbnQodXBFdmVudCwgc2VsZi0+dHJhbnNmb3JtRnJvbVNjZW5lKCks
IHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKKyAgICBzZWxmLT5wYWdlKCktPmhhbmRsZU1v
dXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCBzZWxmLT53ZWJWaWV3KCktPnRy
YW5zZm9ybUZyb21TY2VuZSgpLCBzZWxmLT50cmFuc2Zvcm1Ub1NjcmVlbigpKSk7CiAKICAgICBp
ZiAoSW5wdXRNZXRob2RDb250ZXh0RWZsKiBpbnB1dE1ldGhvZENvbnRleHQgPSBzZWxmLT5pbnB1
dE1ldGhvZENvbnRleHQoKSkKICAgICAgICAgaW5wdXRNZXRob2RDb250ZXh0LT5oYW5kbGVNb3Vz
ZVVwRXZlbnQodXBFdmVudCk7CkBAIC0xMjcxLDcgKzExODEsNyBAQCBFaW5hX0Jvb2wgRXdrVmll
dzo6aGFuZGxlRXdrVmlld01vdXNlVXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBj
b25zdCBFdgogRWluYV9Cb29sIEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZU1vdmUoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUqIG1v
dmVFdmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0gdG9Fd2tWaWV3KHNtYXJ0RGF0YSk7Ci0g
ICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQobW92
ZUV2ZW50LCBzZWxmLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+dHJhbnNmb3JtVG9TY3Jl
ZW4oKSkpOworICAgIHNlbGYtPnBhZ2UoKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3Vz
ZUV2ZW50KG1vdmVFdmVudCwgc2VsZi0+d2ViVmlldygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwg
c2VsZi0+dHJhbnNmb3JtVG9TY3JlZW4oKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggYjk0NjYwOC4uNjI5
ZTM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAt
MTMyLDEyICsxMzIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKTsKICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KIAotICAgIHZvaWQgc2V0VXNlclZpZXdwb3J0VHJhbnNmb3JtKGNvbnN0IFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pIHsgbV91c2VyVmlld3BvcnRUcmFu
c2Zvcm0gPSB0cmFuc2Zvcm07IH0KLSAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCB1
c2VyVmlld3BvcnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3VzZXJWaWV3cG9ydFRyYW5z
Zm9ybTsgfQotCi0gICAgLy8gRklYTUU6IENvbnZlcnQgdG8gVHJhbnNmb3JtYXRpb25NYXRyaXgu
Ci0gICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdDsK
LSAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3Q7
CiAgICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybVRvU2NyZWVuKCkgY29uc3Q7
CiAKICAgICB2b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KCk7CkBAIC0xNzUsOCArMTY5LDYg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0V2luZG93R2VvbWV0cnkoY29uc3QgV0tSZWN0Jik7CiAK
ICAgICBib29sIGNyZWF0ZUdMU3VyZmFjZSgpOwotICAgIGJvb2wgZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSgpOwotICAgIGJvb2wgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KCk7CiAgICAgdm9pZCBzZXROZWVkc1N1cmZhY2VSZXNpemUoKSB7IG1fcGVuZGluZ1N1cmZhY2VS
ZXNpemUgPSB0cnVlOyB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKQEAgLTIyOSw4
ICsyMjEsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwbGF5VGltZXJGaXJlZChXZWJDb3Jl
OjpUaW1lcjxFd2tWaWV3PiopOwogCi0gICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lKiBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKLQogICAgIC8vIEV2YXNfU21hcnRfQ2xh
c3MgY2FsbGJhY2sgaW50ZXJmYWNlOgogICAgIHN0YXRpYyB2b2lkIGhhbmRsZUV2YXNPYmplY3RB
ZGQoRXZhc19PYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCBoYW5kbGVFdmFzT2JqZWN0RGVsZXRl
KEV2YXNfT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApp
bmRleCAxMGEzODUxLi45Yjk2OTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Vmlldy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXZWJWaWV3LmgiCiAKKyNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5o
IgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlckVmbC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVh
UHJveHlJbXBsLmgiCiAjaW5jbHVkZSAiRXdrVmlldy5oIgpAQCAtMzgsNiArMzksNyBAQAogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudUxpc3RlbmVyRWZs
LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg+CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgpAQCAtNzYsNiArNzgsNDgg
QEAgV2ViVmlldzo6fldlYlZpZXcoKQogdm9pZCBXZWJWaWV3Ojppbml0aWFsaXplKCkKIHsKICAg
ICBtX3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKCk7CisgICAgaWYgKENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKSkKKyAgICAgICAgc2Nl
bmUtPnNldEFjdGl2ZSh0cnVlKTsKK30KKwordm9pZCBXZWJWaWV3OjpzZXRVc2VyVmlld3BvcnRU
cmFuc2xhdGlvbihkb3VibGUgdHgsIGRvdWJsZSB0eSkKK3sKKyAgICBtX3VzZXJWaWV3cG9ydFRy
YW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkudHJhbnNsYXRlKHR4LCB0eSk7Cit9CisK
K0ludFBvaW50IFdlYlZpZXc6OnVzZXJWaWV3cG9ydFRvQ29udGVudHMoY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdAoreworICAgIHJldHVybiBtX3VzZXJWaWV3cG9ydFRyYW5zZm9ybS5tYXBQ
b2ludChwb2ludCk7Cit9CisKK3ZvaWQgV2ViVmlldzo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQo
KQoreworICAgIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdy
YXBoaWNzU2NlbmUoKTsKKyAgICBpZiAoIXNjZW5lKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBGSVhNRTogV2UgbmVlZCB0byBjbGVhbiB1cCB0aGlzIGNvZGUgYXMgaXQgaXMgc3BsaXQgb3Zl
ciBDb29yZEdmeCBhbmQgUGFnZS4KKyAgICBzY2VuZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKG1fcGFn
ZS0+ZHJhd3NCYWNrZ3JvdW5kKCkpOworCisgICAgRmxvYXRSZWN0IHZpZXdwb3J0ID0gbV91c2Vy
Vmlld3BvcnRUcmFuc2Zvcm0ubWFwUmVjdChJbnRSZWN0KEludFBvaW50KCksIG1fZXdrVmlldy0+
c2l6ZSgpKSk7CisgICAgc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHRyYW5zZm9ybVRv
U2NlbmUoKS50b1RyYW5zZm9ybWF0aW9uTWF0cml4KCksIC8qIG9wYWNpdHkgKi8gMSwgdmlld3Bv
cnQpOworfQorCit2b2lkIFdlYlZpZXc6OnBhaW50VG9DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlKQoreworICAgIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBj
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKKyAgICBpZiAoIXNjZW5lKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gZ3JhcGhpY3NDb250ZXh0ID0gYWRvcHRSZWYoY2Fp
cm9fY3JlYXRlKHN1cmZhY2UpKTsKKworICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBhZ2VQb3NpdGlv
biA9IG1fZXdrVmlldy0+cGFnZVBvc2l0aW9uKCk7CisgICAgZG91YmxlIGVmZmVjdGl2ZVNjYWxl
ID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpICogbV9ld2tWaWV3LT5wYWdlU2NhbGVGYWN0
b3IoKTsKKworICAgIGNhaXJvX21hdHJpeF90IHRyYW5zZm9ybSA9IHsgZWZmZWN0aXZlU2NhbGUs
IDAsIDAsIGVmZmVjdGl2ZVNjYWxlLCAtIHBhZ2VQb3NpdGlvbi54KCksIC0gcGFnZVBvc2l0aW9u
LnkoKSB9OworICAgIGNhaXJvX3NldF9tYXRyaXgoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCAmdHJh
bnNmb3JtKTsKKworICAgIHNjZW5lLT5wYWludFRvR3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29u
dGV4dC5nZXQoKSk7CiB9CiAKIEV2YXNfT2JqZWN0KiBXZWJWaWV3OjpldmFzT2JqZWN0KCkKQEAg
LTE3MCw2ICsyMTQsMzYgQEAgdm9pZCBXZWJWaWV3OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDb250ZW50
c1NpemUodGhpcywgc2l6ZSk7CiB9CiAKK0FmZmluZVRyYW5zZm9ybSBXZWJWaWV3Ojp0cmFuc2Zv
cm1Gcm9tU2NlbmUoKSBjb25zdAoreworICAgIHJldHVybiB0cmFuc2Zvcm1Ub1NjZW5lKCkuaW52
ZXJzZSgpOworfQorCitBZmZpbmVUcmFuc2Zvcm0gV2ViVmlldzo6dHJhbnNmb3JtVG9TY2VuZSgp
IGNvbnN0Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV91c2VyVmll
d3BvcnRUcmFuc2Zvcm07CisKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwYWdlUG9zaXRpb24gPSBt
X2V3a1ZpZXctPnBhZ2VQb3NpdGlvbigpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLXBhZ2VQ
b3NpdGlvbi54KCksIC1wYWdlUG9zaXRpb24ueSgpKTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUobV9w
YWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUobV9ld2tWaWV3
LT5wYWdlU2NhbGVGYWN0b3IoKSk7CisKKyAgICByZXR1cm4gdHJhbnNmb3JtLnRvQWZmaW5lVHJh
bnNmb3JtKCk7Cit9CisKK0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogV2ViVmlldzo6Y29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lKCkKK3sKKyAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJl
YSA9IG1fcGFnZS0+ZHJhd2luZ0FyZWEoKTsKKyAgICBpZiAoIWRyYXdpbmdBcmVhKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkq
IGxheWVyVHJlZUhvc3RQcm94eSA9IGRyYXdpbmdBcmVhLT5jb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eSgpOworICAgIGlmICghbGF5ZXJUcmVlSG9zdFByb3h5KQorICAgICAgICByZXR1cm4g
MDsKKworICAgIHJldHVybiBsYXllclRyZWVIb3N0UHJveHktPmNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZSgpOworfQorCiAvLyBQYWdlIENsaWVudAogCiBQYXNzT3duUHRyPERyYXdpbmdBcmVhUHJv
eHk+IFdlYlZpZXc6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKQpAQCAtMzQyLDEyICs0MTYsMTQg
QEAgdm9pZCBXZWJWaWV3OjpzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRv
cj4sIGJvb2wsIGJvb2wpCiAKIHZvaWQgV2ViVmlldzo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JikKIHsKLSAgICBtX2V3a1ZpZXctPmVudGVy
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKKyAgICBpZiAoQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpKQorICAgICAgICBzY2Vu
ZS0+c2V0QWN0aXZlKHRydWUpOwogfQogCiB2b2lkIFdlYlZpZXc6OmV4aXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSgpCiB7Ci0gICAgbV9ld2tWaWV3LT5leGl0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUoKTsKKyAgICBpZiAoQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSA9IGNv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpKQorICAgICAgICBzY2VuZS0+c2V0QWN0aXZlKGZhbHNl
KTsKIH0KIAogdm9pZCBXZWJWaWV3Ojp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShj
b25zdCBMYXllclRyZWVDb250ZXh0JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3
LmgKaW5kZXggNDRlZTlkNy4uNWQ4ZjA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJWaWV3LmgKQEAgLTMxLDEzICszMSwxOSBAQAogI2luY2x1ZGUgIkRlZmF1bHRVbmRvQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViR2VvbWV0cnkuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2lu
Y2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9u
TWF0cml4Lmg+CiAKIGNsYXNzIEV3a1ZpZXc7CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI7CkBAIC01Miw2ICs1OCwxMiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGluaXRpYWxpemUoKTsKIAorICAgIHZvaWQgc2V0VXNlclZpZXdwb3J0VHJhbnNs
YXRpb24oZG91YmxlIHR4LCBkb3VibGUgdHkpOworICAgIFdlYkNvcmU6OkludFBvaW50IHVzZXJW
aWV3cG9ydFRvQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdDsKKworICAg
IHZvaWQgcGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKKyAgICB2b2lkIHBhaW50VG9DYWlyb1N1
cmZhY2UoY2Fpcm9fc3VyZmFjZV90Kik7CisKICAgICBXS1BhZ2VSZWYgcGFnZVJlZigpIGNvbnN0
IHsgcmV0dXJuIHRvQVBJKG1fcGFnZS5nZXQoKSk7IH0KIAogICAgIHZvaWQgc2V0RHJhd3NCYWNr
Z3JvdW5kKGJvb2wpOwpAQCAtODIsNyArOTQsMTMgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRl
Vmlld3BvcnRTaXplKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYpOwogCisgICAgLy8gRklYTUU6IFNob3VsZCBiZWNvbWUgcHJpdmF0ZSB3
aGVuIFdlYiBFdmVudHMgY3JlYXRpb24gaXMgbW92ZWQgdG8gV2ViVmlldy4KKyAgICBXZWJDb3Jl
OjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3Q7CisgICAgV2ViQ29y
ZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdDsKKwogcHJpdmF0ZToK
KyAgICBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIGNvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZSgpOworCiAgICAgLy8gUGFnZUNsaWVudAogICAgIFBhc3NPd25QdHI8RHJhd2luZ0Fy
ZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpIE9WRVJSSURFOwogCkBAIC0xNjMsNiAr
MTgxLDcgQEAgcHJpdmF0ZToKICAgICBFd2tWaWV3KiBtX2V3a1ZpZXc7CiAgICAgUmVmUHRyPFdl
YlBhZ2VQcm94eT4gbV9wYWdlOwogICAgIERlZmF1bHRVbmRvQ29udHJvbGxlciBtX3VuZG9Db250
cm9sbGVyOworICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdXNlclZpZXdwb3J0
VHJhbnNmb3JtOwogICAgIC8vIEZJWE1FOiBSZW1vdmUgd2hlbiBwb3NzaWJsZS4KICAgICBPd25Q
dHI8V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsPiBtX3BhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnQ7CiAgICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJv
bGxlcj4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyOwo=
</data>
<flag name="review"
          id="209877"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="209991"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189707</attachid>
            <date>2013-02-22 00:35:07 -0800</date>
            <delta_ts>2013-02-22 00:54:22 -0800</delta_ts>
            <desc>to be landed</desc>
            <filename>bug110216_to_land</filename>
            <type>text/plain</type>
            <size>20776</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGZiMWNkMDM5MTY2YmU3YTA5YjU4ZThlNjMyMDNhZTY3M2VlNzUyMWEKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIEZlYiAyMCAxMzoxMjo0NiAyMDEzICswMjAwCgogICAgYnVnMTEwMjE2CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGQ5NGMxMGUuLmNiNDE2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxMy0w
Mi0yMCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbV0syXVtFRkxdIE1vdmUgQUMgY29kZSBmcm9tIEV3a1ZpZXcgdG8gV2ViVmll
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgorCisgICAgICAgIEFjY2Vs
ZXJhdGVkIGNvbXBvc2l0aW5nIGNvZGUgaXMgbW92ZWQgZnJvbSBFd2tWaWV3IHRvIFdlYlZpZXcu
CisgICAgICAgIEFkZGVkIG5ldyBXS1ZpZXcgQVBJIHRvIGJlIHVzZWQgZnJvbSBFd2tWaWV3IGlu
c3RlYWQgb2YgZGlyZWN0IGFjY2Vzc2luZworICAgICAgICB0byBjb29yZGluYXRlZCBncmFwaGlj
cyBzY2VuZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcDoKKyAg
ICAgICAgKFdLVmlld1NldFVzZXJWaWV3cG9ydFRyYW5zbGF0aW9uKToKKyAgICAgICAgKFdLVmll
d1VzZXJWaWV3cG9ydFRvQ29udGVudHMpOgorICAgICAgICAoV0tWaWV3UGFpbnRUb0N1cnJlbnRH
TENvbnRleHQpOgorICAgICAgICAoV0tWaWV3UGFpbnRUb0NhaXJvU3VyZmFjZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaDoKKworICAgICAgICAgICAgQWRkZWQgV0tW
aWV3IEFQSSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
LmNwcDoKKyAgICAgICAgKEV3a1ZpZXc6OkV3a1ZpZXcpOgorICAgICAgICAoRXdrVmlldzo6ZGlz
cGxheVRpbWVyRmlyZWQpOgorICAgICAgICAoRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQpOgorICAg
ICAgICAoRXdrVmlldzo6Y3JlYXRlR0xTdXJmYWNlKToKKyAgICAgICAgKEV3a1ZpZXc6OmhhbmRs
ZUV2YXNPYmplY3RDYWxjdWxhdGUpOgorICAgICAgICAoRXdrVmlldzo6aGFuZGxlRXdrVmlld01v
dXNlV2hlZWwpOgorICAgICAgICAoRXdrVmlldzo6aGFuZGxlRXdrVmlld01vdXNlRG93bik6Cisg
ICAgICAgIChFd2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91c2VVcCk6CisgICAgICAgIChFd2tWaWV3
OjpoYW5kbGVFd2tWaWV3TW91c2VNb3ZlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3Lmg6CisgICAgICAgIChFd2tWaWV3KToKKworICAgICAgICAgICAgVXNpbmcgbmV3IFdL
VmlldyBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXc6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlldzo6cGFpbnRUb0NhaXJvU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXc6OnVzZXJWaWV3cG9ydFRvQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3Ojp0cmFuc2Zvcm1Gcm9tU2NlbmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojp0cmFu
c2Zvcm1Ub1NjZW5lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6ZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmV4aXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2V0VXNlclZpZXdw
b3J0VHJhbnNsYXRpb24pOgorICAgICAgICAoV2ViVmlldyk6CisKKyAgICAgICAgICAgIEFkZGVk
IFdlYlZpZXcgbWV0aG9kcyB0byBzdXBwb3J0IG5ldyBXS1ZpZXcgQVBJLgorCiAyMDEzLTAyLTIx
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLiBGaXggbWFrZSBkaXN0Y2hlY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKaW5kZXggNzZlZDlkZi4uMTc3OTExZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcApAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICogQ29w
eXJpZ2h0IChDKSAyMDEzIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Nyw2ICs1OCwyNyBAQCB2b2lkIFdLVmlld1NldFZpZXdD
bGllbnQoV0tWaWV3UmVmIHZpZXdSZWYsIGNvbnN0IFdLVmlld0NsaWVudCogY2xpZW50KQogICAg
IHRvSW1wbCh2aWV3UmVmKS0+aW5pdGlhbGl6ZUNsaWVudChjbGllbnQpOwogfQogCit2b2lkIFdL
Vmlld1NldFVzZXJWaWV3cG9ydFRyYW5zbGF0aW9uKFdLVmlld1JlZiB2aWV3UmVmLCBkb3VibGUg
dHgsIGRvdWJsZSB0eSkKK3sKKyAgICB0b0ltcGwodmlld1JlZiktPnNldFVzZXJWaWV3cG9ydFRy
YW5zbGF0aW9uKHR4LCB0eSk7Cit9CisKK1dLUG9pbnQgV0tWaWV3VXNlclZpZXdwb3J0VG9Db250
ZW50cyhXS1ZpZXdSZWYgdmlld1JlZiwgV0tQb2ludCBwb2ludCkKK3sKKyAgICBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcmVzdWx0ID0gdG9JbXBsKHZpZXdSZWYpLT51c2VyVmlld3BvcnRUb0Nv
bnRlbnRzKHRvSW50UG9pbnQocG9pbnQpKTsKKyAgICByZXR1cm4gV0tQb2ludE1ha2UocmVzdWx0
LngoKSwgcmVzdWx0LnkoKSk7Cit9CisKK3ZvaWQgV0tWaWV3UGFpbnRUb0N1cnJlbnRHTENvbnRl
eHQoV0tWaWV3UmVmIHZpZXdSZWYpCit7CisgICAgdG9JbXBsKHZpZXdSZWYpLT5wYWludFRvQ3Vy
cmVudEdMQ29udGV4dCgpOworfQorCit2b2lkIFdLVmlld1BhaW50VG9DYWlyb1N1cmZhY2UoV0tW
aWV3UmVmIHZpZXdSZWYsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKK3sKKyAgICB0b0ltcGwo
dmlld1JlZiktPnBhaW50VG9DYWlyb1N1cmZhY2Uoc3VyZmFjZSk7Cit9CisKIFdLUGFnZVJlZiBX
S1ZpZXdHZXRQYWdlKFdLVmlld1JlZiB2aWV3UmVmKQogewogICAgIHJldHVybiB0b0ltcGwodmll
d1JlZiktPnBhZ2VSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
Vmlldy5oCmluZGV4IGI0MmIyMjcuLjczNDU1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICogQ29weXJpZ2h0IChDKSAyMDEzIEludGVs
IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0zMSw2ICszMiw4IEBAIHR5cGVkZWYgc3RydWN0IF9FdmFzIEV2YXM7CiB0eXBlZGVmIHN0cnVj
dCBfRXZhc19PYmplY3QgRXZhc19PYmplY3Q7CiAjZW5kaWYKIAordHlwZWRlZiBzdHJ1Y3QgX2Nh
aXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OworCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVy
biAiQyIgewogI2VuZGlmCkBAIC01Nyw2ICs2MCwxMiBAQCBXS19FWFBPUlQgV0tWaWV3UmVmIFdL
Vmlld0NyZWF0ZVdpdGhGaXhlZExheW91dChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBjb250
ZQogV0tfRVhQT1JUIHZvaWQgV0tWaWV3SW5pdGlhbGl6ZShXS1ZpZXdSZWYpOwogV0tfRVhQT1JU
IHZvaWQgV0tWaWV3U2V0Vmlld0NsaWVudChXS1ZpZXdSZWYsIGNvbnN0IFdLVmlld0NsaWVudCop
OwogCitXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZXRVc2VyVmlld3BvcnRUcmFuc2xhdGlvbihXS1Zp
ZXdSZWYsIGRvdWJsZSB0eCwgZG91YmxlIHR5KTsKK1dLX0VYUE9SVCBXS1BvaW50IFdLVmlld1Vz
ZXJWaWV3cG9ydFRvQ29udGVudHMoV0tWaWV3UmVmLCBXS1BvaW50KTsKKworV0tfRVhQT1JUIHZv
aWQgV0tWaWV3UGFpbnRUb0N1cnJlbnRHTENvbnRleHQoV0tWaWV3UmVmKTsKK1dLX0VYUE9SVCB2
b2lkIFdLVmlld1BhaW50VG9DYWlyb1N1cmZhY2UoV0tWaWV3UmVmLCBjYWlyb19zdXJmYWNlX3Qq
KTsKKwogV0tfRVhQT1JUIFdLUGFnZVJlZiBXS1ZpZXdHZXRQYWdlKFdLVmlld1JlZik7CiAKIFdL
X0VYUE9SVCB2b2lkIFdLVmlld1NldFRoZW1lUGF0aChXS1ZpZXdSZWYsIFdLU3RyaW5nUmVmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggMGQz
OTUwZS4uYTczZjljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlldy5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJFd2tWaWV3LmgiCiAKICNpbmNs
dWRlICJDb250ZXh0TWVudUNsaWVudEVmbC5oIgotI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5LmgiCiAjaW5jbHVkZSAiRWZsU2NyZWVuVXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAiRmluZENsaWVudEVmbC5oIgogI2luY2x1ZGUgIkZvcm1DbGllbnRFZmwuaCIKQEAgLTY2LDkg
KzY1LDcgQEAKICNpbmNsdWRlIDxFZGplLmg+CiAjaW5jbHVkZSA8RXZhc19HTC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXNFZmwuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUgPFdlYktpdDIv
V0tJbWFnZUNhaXJvLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIApAQCAtMjczLDEw
ICsyNzAsNyBAQCBFd2tWaWV3OjpFd2tWaWV3KEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0LCBQYXNz
UmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFdLUGFnZQogCiAgICAgV0tWaWV3SW5pdGlhbGl6
ZSh3a1ZpZXcoKSk7CiAKLSAgICBpZiAoYmVoYXZpb3IgPT0gRGVmYXVsdEJlaGF2aW9yKSB7Ci0g
ICAgICAgIGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpLT5zZXRBY3RpdmUodHJ1ZSk7Ci0gICAg
ICAgIFdLUGFnZVNldFVzZUZpeGVkTGF5b3V0KHdrUGFnZSgpLCB0cnVlKTsKLSAgICB9CisgICAg
V0tQYWdlU2V0VXNlRml4ZWRMYXlvdXQod2tQYWdlKCksIGJlaGF2aW9yID09IERlZmF1bHRCZWhh
dmlvcik7CiAKICAgICBXS1BhZ2VHcm91cFJlZiB3a1BhZ2VHcm91cCA9IFdLUGFnZUdldFBhZ2VH
cm91cCh3a1BhZ2UoKSk7CiAgICAgV0tQcmVmZXJlbmNlc1JlZiB3a1ByZWZlcmVuY2VzID0gV0tQ
YWdlR3JvdXBHZXRQcmVmZXJlbmNlcyh3a1BhZ2VHcm91cCk7CkBAIC00NzcsMjIgKzQ3MSw2IEBA
IHZvaWQgRXdrVmlldzo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHdlYlZpZXco
KS0+dXBkYXRlVmlld3BvcnRTaXplKCk7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBFd2tWaWV3Ojp0
cmFuc2Zvcm1Gcm9tU2NlbmUoKSBjb25zdAotewotICAgIHJldHVybiB0cmFuc2Zvcm1Ub1NjZW5l
KCkuaW52ZXJzZSgpOwotfQotCi1BZmZpbmVUcmFuc2Zvcm0gRXdrVmlldzo6dHJhbnNmb3JtVG9T
Y2VuZSgpIGNvbnN0Ci17Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gdXNl
clZpZXdwb3J0VHJhbnNmb3JtKCk7Ci0KLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1wYWdlUG9z
aXRpb24oKS54KCksIC1wYWdlUG9zaXRpb24oKS55KCkpOwotICAgIHRyYW5zZm9ybS5zY2FsZShk
ZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICB0cmFuc2Zvcm0uc2NhbGUocGFnZVNjYWxlRmFjdG9y
KCkpOwotCi0gICAgcmV0dXJuIHRyYW5zZm9ybS50b0FmZmluZVRyYW5zZm9ybSgpOwotfQotCiBB
ZmZpbmVUcmFuc2Zvcm0gRXdrVmlldzo6dHJhbnNmb3JtVG9TY3JlZW4oKSBjb25zdAogewogICAg
IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CkBAIC01MjYsNTIgKzUwNCwxMSBAQCBBZmZpbmVU
cmFuc2Zvcm0gRXdrVmlldzo6dHJhbnNmb3JtVG9TY3JlZW4oKSBjb25zdAogICAgIHJldHVybiB0
cmFuc2Zvcm07CiB9CiAKLUNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogRXdrVmlldzo6Y29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lKCkKLXsKLSAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJl
YSA9IHBhZ2UoKS0+ZHJhd2luZ0FyZWEoKTsKLSAgICBpZiAoIWRyYXdpbmdBcmVhKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkq
IGNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5ID0gZHJhd2luZ0FyZWEtPmNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5KCk7Ci0gICAgaWYgKCFjb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gY29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHktPmNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwotfQotCiBpbmxpbmUgRXdr
X1ZpZXdfU21hcnRfRGF0YSogRXdrVmlldzo6c21hcnREYXRhKCkgY29uc3QKIHsKICAgICByZXR1
cm4gdG9TbWFydERhdGEobV9ldmFzT2JqZWN0KTsKIH0KIAotdm9pZCBFd2tWaWV3OjpwYWludFRv
Q3VycmVudEdMQ29udGV4dCgpCi17Ci0gICAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBzY2Vu
ZSA9IGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwotICAgIGlmICghc2NlbmUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGNsZWFuIHVwIHRoaXMgY29kZSBh
cyBpdCBpcyBzcGxpdCBvdmVyIENvb3JkR2Z4IGFuZCBQYWdlLgotICAgIHNjZW5lLT5zZXREcmF3
c0JhY2tncm91bmQoV0tWaWV3R2V0RHJhd3NCYWNrZ3JvdW5kKHdrVmlldygpKSk7Ci0KLSAgICBG
bG9hdFJlY3Qgdmlld3BvcnQgPSB1c2VyVmlld3BvcnRUcmFuc2Zvcm0oKS5tYXBSZWN0KEludFJl
Y3QoSW50UG9pbnQoKSwgc2l6ZSgpKSk7Ci0gICAgc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250
ZXh0KHRyYW5zZm9ybVRvU2NlbmUoKS50b1RyYW5zZm9ybWF0aW9uTWF0cml4KCksIC8qIG9wYWNp
dHkgKi8gMSwgdmlld3BvcnQpOwotfQotCi12b2lkIEV3a1ZpZXc6OnBhaW50VG9DYWlyb1N1cmZh
Y2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQotewotICAgIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKLSAgICBpZiAoIXNjZW5l
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8Y2Fpcm9fdD4gZ3JhcGhpY3NDb250ZXh0
ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHN1cmZhY2UpKTsKLQotICAgIGNhaXJvX3RyYW5zbGF0
ZShncmFwaGljc0NvbnRleHQuZ2V0KCksIC0gcGFnZVBvc2l0aW9uKCkueCgpLCAtIHBhZ2VQb3Np
dGlvbigpLnkoKSk7Ci0gICAgY2Fpcm9fc2NhbGUoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBwYWdl
U2NhbGVGYWN0b3IoKSwgcGFnZVNjYWxlRmFjdG9yKCkpOwotICAgIGNhaXJvX3NjYWxlKGdyYXBo
aWNzQ29udGV4dC5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSwgZGV2aWNlU2NhbGVGYWN0b3Io
KSk7Ci0KLSAgICBzY2VuZS0+cGFpbnRUb0dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQu
Z2V0KCkpOwotfQotCiB2b2lkIEV3a1ZpZXc6OmRpc3BsYXlUaW1lckZpcmVkKFRpbWVyPEV3a1Zp
ZXc+KikKIHsKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwpAQCAt
NTg5LDE0ICs1MjYsMTQgQEAgdm9pZCBFd2tWaWV3OjpkaXNwbGF5VGltZXJGaXJlZChUaW1lcjxF
d2tWaWV3PiopCiAgICAgICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBwYWludFRvQ2Fpcm9TdXJmYWNlKHN1cmZhY2UuZ2V0KCkpOworICAgICAgICBXS1Zp
ZXdQYWludFRvQ2Fpcm9TdXJmYWNlKHdrVmlldygpLCBzdXJmYWNlLmdldCgpKTsKICAgICAgICAg
ZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkKHNkLT5pbWFnZSwgMCwgMCwgc2QtPnZp
ZXcudywgc2QtPnZpZXcuaCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBldmFzX2ds
X21ha2VfY3VycmVudChtX2V2YXNHTC5nZXQoKSwgbV9ldmFzR0xTdXJmYWNlLT5zdXJmYWNlKCks
IG1fZXZhc0dMQ29udGV4dC0+Y29udGV4dCgpKTsKIAotICAgIHBhaW50VG9DdXJyZW50R0xDb250
ZXh0KCk7CisgICAgV0tWaWV3UGFpbnRUb0N1cnJlbnRHTENvbnRleHQod2tWaWV3KCkpOwogCiAg
ICAgLy8gc2QtPmltYWdlIGlzIHRpZWQgdG8gYSBuYXRpdmUgc3VyZmFjZSwgd2hpY2ggaXMgaW4g
dGhlIHBhcmVudCdzIGNvb3JkaW5hdGVzLgogICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBk
YXRlX2FkZChzZC0+aW1hZ2UsIHNkLT52aWV3LngsIHNkLT52aWV3LnksIHNkLT52aWV3LncsIHNk
LT52aWV3LmgpOwpAQCAtNzU0LDcgKzY5MSw3IEBAIHZvaWQgRXdrVmlldzo6c2V0TW91c2VFdmVu
dHNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogdm9pZCBF
d2tWaWV3OjpmZWVkVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlLCBjb25zdCBF
aW5hX0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciogbW9kaWZpZXJzKQogewotICAg
IHBhZ2UoKS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50
cywgbW9kaWZpZXJzLCB0cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgdHJhbnNmb3JtVG9TY3JlZW4oKSwg
ZWNvcmVfdGltZV9nZXQoKSkpOworICAgIHBhZ2UoKS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVX
ZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJzLCB3ZWJWaWV3KCktPnRyYW5zZm9y
bUZyb21TY2VuZSgpLCB0cmFuc2Zvcm1Ub1NjcmVlbigpLCBlY29yZV90aW1lX2dldCgpKSk7CiB9
CiAKIHZvaWQgRXdrVmlldzo6c2V0VG91Y2hFdmVudHNFbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAg
LTgxNCw0MCArNzUxLDE0IEBAIGJvb2wgRXdrVmlldzo6Y3JlYXRlR0xTdXJmYWNlKCkKIAogICAg
IEV2YXNfR0xfQVBJKiBnbCA9IGV2YXNfZ2xfYXBpX2dldChtX2V2YXNHTC5nZXQoKSk7CiAKLSAg
ICBJbnRQb2ludCBib3VuZHNFbmQgPSB1c2VyVmlld3BvcnRUcmFuc2Zvcm0oKS5tYXBQb2ludChJ
bnRQb2ludChzaXplKCkpKTsKLSAgICBnbC0+Z2xWaWV3cG9ydCgwLCAwLCBib3VuZHNFbmQueCgp
LCBib3VuZHNFbmQueSgpKTsKKyAgICBjb25zdCBXS1BvaW50JiBib3VuZHNFbmQgPSBXS1ZpZXdV
c2VyVmlld3BvcnRUb0NvbnRlbnRzKHdrVmlldygpLCBXS1BvaW50TWFrZShzaXplKCkud2lkdGgo
KSwgc2l6ZSgpLmhlaWdodCgpKSk7CisgICAgZ2wtPmdsVmlld3BvcnQoMCwgMCwgYm91bmRzRW5k
LngsIGJvdW5kc0VuZC55KTsKICAgICBnbC0+Z2xDbGVhckNvbG9yKDEuMCwgMS4wLCAxLjAsIDAp
OwogICAgIGdsLT5nbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgRXdrVmlldzo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgp
Ci17Ci0gICAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZSgpOwotICAgIGlmICghc2NlbmUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHNjZW5lLT5zZXRBY3RpdmUodHJ1ZSk7Ci0KLSAgICBpZiAobV9pc0FjY2VsZXJhdGVkICYm
ICFtX2V2YXNHTFN1cmZhY2UgJiYgIWNyZWF0ZUdMU3VyZmFjZSgpKSB7Ci0gICAgICAgIFdBUk4o
IkZhaWxlZCB0byBjcmVhdGUgR0xTdXJmYWNlLiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRXdrVmlldzo6ZXhpdEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKCkKLXsKLSAgICBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIHNj
ZW5lID0gY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7Ci0gICAgaWYgKCFzY2VuZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc2NlbmUtPnNldEFjdGl2ZShmYWxzZSk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIC8qKgogICogQGlu
dGVybmFsCkBAIC0xMTgyLDggKzEwOTMsNyBAQCB2b2lkIEV3a1ZpZXc6OmhhbmRsZUV2YXNPYmpl
Y3RDYWxjdWxhdGUoRXZhc19PYmplY3QqIGV2YXNPYmplY3QpCiAgICAgICAgIHNtYXJ0RGF0YS0+
dmlldy54ID0geDsKICAgICAgICAgc21hcnREYXRhLT52aWV3LnkgPSB5OwogICAgICAgICBldmFz
X29iamVjdF9tb3ZlKHNtYXJ0RGF0YS0+aW1hZ2UsIHgsIHkpOwotCi0gICAgICAgIHNlbGYtPnNl
dFVzZXJWaWV3cG9ydFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLnRyYW5zbGF0ZSh4
LCB5KSk7CisgICAgICAgIFdLVmlld1NldFVzZXJWaWV3cG9ydFRyYW5zbGF0aW9uKHNlbGYtPndr
VmlldygpLCB4LCB5KTsKICAgICB9CiAKICAgICBpZiAoc21hcnREYXRhLT5jaGFuZ2VkLnNpemUp
IHsKQEAgLTEyNTAsMjEgKzExNjAsMjEgQEAgRWluYV9Cb29sIEV3a1ZpZXc6OmhhbmRsZUV3a1Zp
ZXdGb2N1c091dChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiBFaW5hX0Jvb2wgRXdr
Vmlldzo6aGFuZGxlRXdrVmlld01vdXNlV2hlZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiB3aGVlbEV2ZW50KQogewogICAgIEV3
a1ZpZXcqIHNlbGYgPSB0b0V3a1ZpZXcoc21hcnREYXRhKTsKLSAgICBzZWxmLT5wYWdlKCktPmhh
bmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBzZWxmLT50cmFu
c2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+dHJhbnNmb3JtVG9TY3JlZW4oKSkpOworICAgIHNlbGYt
PnBhZ2UoKS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KHdoZWVsRXZlbnQs
IHNlbGYtPndlYlZpZXcoKS0+dHJhbnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRv
U2NyZWVuKCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIEV3a1ZpZXc6Omhh
bmRsZUV3a1ZpZXdNb3VzZURvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25z
dCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGRvd25FdmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxm
ID0gdG9Fd2tWaWV3KHNtYXJ0RGF0YSk7Ci0gICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2
ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZG93bkV2ZW50LCBzZWxmLT50cmFuc2Zvcm1Gcm9tU2Nl
bmUoKSwgc2VsZi0+dHJhbnNmb3JtVG9TY3JlZW4oKSkpOworICAgIHNlbGYtPnBhZ2UoKS0+aGFu
ZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGRvd25FdmVudCwgc2VsZi0+d2ViVmll
dygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+dHJhbnNmb3JtVG9TY3JlZW4oKSkpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgRXdrVmlldzo6aGFuZGxlRXdrVmlld01v
dXNlVXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01v
dXNlX1VwKiB1cEV2ZW50KQogewogICAgIEV3a1ZpZXcqIHNlbGYgPSB0b0V3a1ZpZXcoc21hcnRE
YXRhKTsKLSAgICBzZWxmLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VF
dmVudCh1cEV2ZW50LCBzZWxmLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+dHJhbnNmb3Jt
VG9TY3JlZW4oKSkpOworICAgIHNlbGYtPnBhZ2UoKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVX
ZWJNb3VzZUV2ZW50KHVwRXZlbnQsIHNlbGYtPndlYlZpZXcoKS0+dHJhbnNmb3JtRnJvbVNjZW5l
KCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKIAogICAgIGlmIChJbnB1dE1ldGhvZENv
bnRleHRFZmwqIGlucHV0TWV0aG9kQ29udGV4dCA9IHNlbGYtPmlucHV0TWV0aG9kQ29udGV4dCgp
KQogICAgICAgICBpbnB1dE1ldGhvZENvbnRleHQtPmhhbmRsZU1vdXNlVXBFdmVudCh1cEV2ZW50
KTsKQEAgLTEyNzUsNyArMTE4NSw3IEBAIEVpbmFfQm9vbCBFd2tWaWV3OjpoYW5kbGVFd2tWaWV3
TW91c2VVcChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IEV2CiBFaW5hX0Jv
b2wgRXdrVmlldzo6aGFuZGxlRXdrVmlld01vdXNlTW92ZShFd2tfVmlld19TbWFydF9EYXRhKiBz
bWFydERhdGEsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogbW92ZUV2ZW50KQogewogICAg
IEV3a1ZpZXcqIHNlbGYgPSB0b0V3a1ZpZXcoc21hcnREYXRhKTsKLSAgICBzZWxmLT5wYWdlKCkt
PmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChtb3ZlRXZlbnQsIHNlbGYtPnRy
YW5zZm9ybUZyb21TY2VuZSgpLCBzZWxmLT50cmFuc2Zvcm1Ub1NjcmVlbigpKSk7CisgICAgc2Vs
Zi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQobW92ZUV2ZW50
LCBzZWxmLT53ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZSgpLCBzZWxmLT50cmFuc2Zvcm1U
b1NjcmVlbigpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAppbmRleCAxNzA2M2NmLi5jNzY4OTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCkBAIC0xMzYsMTIgKzEzNiw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAg
IFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCi0gICAg
dm9pZCBzZXRVc2VyVmlld3BvcnRUcmFuc2Zvcm0oY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSkgeyBtX3VzZXJWaWV3cG9ydFRyYW5zZm9ybSA9IHRyYW5zZm9y
bTsgfQotICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IHVzZXJWaWV3cG9ydFRyYW5z
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtOyB9Ci0KLSAgICAv
LyBGSVhNRTogQ29udmVydCB0byBUcmFuc2Zvcm1hdGlvbk1hdHJpeC4KLSAgICBXZWJDb3JlOjpB
ZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtVG9TY2VuZSgpIGNvbnN0OwotICAgIFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1Gcm9tU2NlbmUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpB
ZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtVG9TY3JlZW4oKSBjb25zdDsKIAogICAgIHZvaWQgcGFp
bnRUb0N1cnJlbnRHTENvbnRleHQoKTsKQEAgLTE3OSw4ICsxNzMsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRXaW5kb3dHZW9tZXRyeShjb25zdCBXS1JlY3QmKTsKIAogICAgIGJvb2wgY3JlYXRl
R0xTdXJmYWNlKCk7Ci0gICAgYm9vbCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7
Ci0gICAgYm9vbCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKICAgICB2b2lkIHNl
dE5lZWRzU3VyZmFjZVJlc2l6ZSgpIHsgbV9wZW5kaW5nU3VyZmFjZVJlc2l6ZSA9IHRydWU7IH0K
IAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpAQCAtMjMzLDggKzIyNSw2IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRpc3BsYXlUaW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPEV3a1ZpZXc+
Kik7CiAKLSAgICBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIGNvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZSgpOwotCiAgICAgLy8gRXZhc19TbWFydF9DbGFzcyBjYWxsYmFjayBpbnRl
cmZhY2U6CiAgICAgc3RhdGljIHZvaWQgaGFuZGxlRXZhc09iamVjdEFkZChFdmFzX09iamVjdCop
OwogICAgIHN0YXRpYyB2b2lkIGhhbmRsZUV2YXNPYmplY3REZWxldGUoRXZhc19PYmplY3QqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCmluZGV4IDZiNDlkODcuLmYw
ZmJiZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKIAor
I2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgiCiAjaW5jbHVkZSAiRG93
bmxvYWRNYW5hZ2VyRWZsLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNp
bmNsdWRlICJFd2tWaWV3LmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51TGlzdGVuZXJFZmwuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuaD4KIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICNpbmNsdWRlICJXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCkBAIC03Niw2ICs3OCw0OCBAQCBXZWJWaWV3Ojp+V2Vi
VmlldygpCiB2b2lkIFdlYlZpZXc6OmluaXRpYWxpemUoKQogewogICAgIG1fcGFnZS0+aW5pdGlh
bGl6ZVdlYlBhZ2UoKTsKKyAgICBpZiAoQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSA9
IGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpKQorICAgICAgICBzY2VuZS0+c2V0QWN0aXZlKHRy
dWUpOworfQorCit2b2lkIFdlYlZpZXc6OnNldFVzZXJWaWV3cG9ydFRyYW5zbGF0aW9uKGRvdWJs
ZSB0eCwgZG91YmxlIHR5KQoreworICAgIG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtID0gVHJhbnNm
b3JtYXRpb25NYXRyaXgoKS50cmFuc2xhdGUodHgsIHR5KTsKK30KKworSW50UG9pbnQgV2ViVmll
dzo6dXNlclZpZXdwb3J0VG9Db250ZW50cyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtLm1hcFBvaW50KHBvaW50KTsKK30K
Kwordm9pZCBXZWJWaWV3OjpwYWludFRvQ3VycmVudEdMQ29udGV4dCgpCit7CisgICAgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwor
ICAgIGlmICghc2NlbmUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBXZSBuZWVk
IHRvIGNsZWFuIHVwIHRoaXMgY29kZSBhcyBpdCBpcyBzcGxpdCBvdmVyIENvb3JkR2Z4IGFuZCBQ
YWdlLgorICAgIHNjZW5lLT5zZXREcmF3c0JhY2tncm91bmQobV9wYWdlLT5kcmF3c0JhY2tncm91
bmQoKSk7CisKKyAgICBGbG9hdFJlY3Qgdmlld3BvcnQgPSBtX3VzZXJWaWV3cG9ydFRyYW5zZm9y
bS5tYXBSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbV9ld2tWaWV3LT5zaXplKCkpKTsKKyAgICBz
Y2VuZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQodHJhbnNmb3JtVG9TY2VuZSgpLnRvVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgLyogb3BhY2l0eSAqLyAxLCB2aWV3cG9ydCk7Cit9CisKK3ZvaWQg
V2ViVmlldzo6cGFpbnRUb0NhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCit7
CisgICAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZSgpOworICAgIGlmICghc2NlbmUpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0
cjxjYWlyb190PiBncmFwaGljc0NvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoc3VyZmFj
ZSkpOworCisgICAgY29uc3QgRmxvYXRQb2ludCYgcGFnZVBvc2l0aW9uID0gbV9ld2tWaWV3LT5w
YWdlUG9zaXRpb24oKTsKKyAgICBkb3VibGUgZWZmZWN0aXZlU2NhbGUgPSBtX3BhZ2UtPmRldmlj
ZVNjYWxlRmFjdG9yKCkgKiBtX2V3a1ZpZXctPnBhZ2VTY2FsZUZhY3RvcigpOworCisgICAgY2Fp
cm9fbWF0cml4X3QgdHJhbnNmb3JtID0geyBlZmZlY3RpdmVTY2FsZSwgMCwgMCwgZWZmZWN0aXZl
U2NhbGUsIC0gcGFnZVBvc2l0aW9uLngoKSwgLSBwYWdlUG9zaXRpb24ueSgpIH07CisgICAgY2Fp
cm9fc2V0X21hdHJpeChncmFwaGljc0NvbnRleHQuZ2V0KCksICZ0cmFuc2Zvcm0pOworCisgICAg
c2NlbmUtPnBhaW50VG9HcmFwaGljc0NvbnRleHQoZ3JhcGhpY3NDb250ZXh0LmdldCgpKTsKIH0K
IAogRXZhc19PYmplY3QqIFdlYlZpZXc6OmV2YXNPYmplY3QoKQpAQCAtMTY3LDYgKzIxMSwzNiBA
QCB2b2lkIFdlYlZpZXc6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBzaXplKQogICAgIG1fY2xpZW50LmRpZENoYW5nZUNvbnRlbnRzU2l6ZSh0aGlzLCBzaXpl
KTsKIH0KIAorQWZmaW5lVHJhbnNmb3JtIFdlYlZpZXc6OnRyYW5zZm9ybUZyb21TY2VuZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHRyYW5zZm9ybVRvU2NlbmUoKS5pbnZlcnNlKCk7Cit9CisKK0Fm
ZmluZVRyYW5zZm9ybSBXZWJWaWV3Ojp0cmFuc2Zvcm1Ub1NjZW5lKCkgY29uc3QKK3sKKyAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBtX3VzZXJWaWV3cG9ydFRyYW5zZm9ybTsK
KworICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBhZ2VQb3NpdGlvbiA9IG1fZXdrVmlldy0+cGFnZVBv
c2l0aW9uKCk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtcGFnZVBvc2l0aW9uLngoKSwgLXBh
Z2VQb3NpdGlvbi55KCkpOworICAgIHRyYW5zZm9ybS5zY2FsZShtX3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCkpOworICAgIHRyYW5zZm9ybS5zY2FsZShtX2V3a1ZpZXctPnBhZ2VTY2FsZUZhY3Rv
cigpKTsKKworICAgIHJldHVybiB0cmFuc2Zvcm0udG9BZmZpbmVUcmFuc2Zvcm0oKTsKK30KKwor
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBXZWJWaWV3Ojpjb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUoKQoreworICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gbV9wYWdlLT5kcmF3
aW5nQXJlYSgpOworICAgIGlmICghZHJhd2luZ0FyZWEpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSogbGF5ZXJUcmVlSG9zdFBy
b3h5ID0gZHJhd2luZ0FyZWEtPmNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KCk7CisgICAg
aWYgKCFsYXllclRyZWVIb3N0UHJveHkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IGxheWVyVHJlZUhvc3RQcm94eS0+Y29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7Cit9CisKIC8v
IFBhZ2UgQ2xpZW50CiAKIFBhc3NPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gV2ViVmlldzo6Y3Jl
YXRlRHJhd2luZ0FyZWFQcm94eSgpCkBAIC0zMzksMTIgKzQxMywxNCBAQCB2b2lkIFdlYlZpZXc6
OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCwgYm9vbCkK
IAogdm9pZCBXZWJWaWV3OjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExh
eWVyVHJlZUNvbnRleHQmKQogewotICAgIG1fZXdrVmlldy0+ZW50ZXJBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSgpOworICAgIGlmIChDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIHNjZW5lID0g
Y29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCkpCisgICAgICAgIHNjZW5lLT5zZXRBY3RpdmUodHJ1
ZSk7CiB9CiAKIHZvaWQgV2ViVmlldzo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkK
IHsKLSAgICBtX2V3a1ZpZXctPmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOworICAg
IGlmIChDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIHNjZW5lID0gY29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lKCkpCisgICAgICAgIHNjZW5lLT5zZXRBY3RpdmUoZmFsc2UpOwogfQogCiB2b2lkIFdl
YlZpZXc6OnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNv
bnRleHQmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaAppbmRleCA4NWI2MTYw
Li40MmM4ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaApAQCAtMzEs
MTMgKzMxLDE5IEBACiAjaW5jbHVkZSAiRGVmYXVsdFVuZG9Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJH
ZW9tZXRyeS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViVmlld0Ns
aWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIAogY2xh
c3MgRXdrVmlldzsKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViVmlldyA6IHB1
YmxpYyBBUElPYmplY3QsIHB1YmxpYyBQYWdlQ2xpZW50IHsKQEAgLTQ5LDYgKzU1LDEyIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogCisgICAgdm9pZCBzZXRVc2VyVmlld3Bv
cnRUcmFuc2xhdGlvbihkb3VibGUgdHgsIGRvdWJsZSB0eSk7CisgICAgV2ViQ29yZTo6SW50UG9p
bnQgdXNlclZpZXdwb3J0VG9Db250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0
OworCisgICAgdm9pZCBwYWludFRvQ3VycmVudEdMQ29udGV4dCgpOworICAgIHZvaWQgcGFpbnRU
b0NhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqKTsKKwogICAgIFdLUGFnZVJlZiBwYWdlUmVm
KCkgY29uc3QgeyByZXR1cm4gdG9BUEkobV9wYWdlLmdldCgpKTsgfQogCiAgICAgdm9pZCBzZXRE
cmF3c0JhY2tncm91bmQoYm9vbCk7CkBAIC03OSw3ICs5MSwxMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB1cGRhdGVWaWV3cG9ydFNpemUoKTsKICAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKKyAgICAvLyBGSVhNRTogU2hvdWxkIGJlY29tZSBw
cml2YXRlIHdoZW4gV2ViIEV2ZW50cyBjcmVhdGlvbiBpcyBtb3ZlZCB0byBXZWJWaWV3LgorICAg
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1Gcm9tU2NlbmUoKSBjb25zdDsKKyAg
ICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtVG9TY2VuZSgpIGNvbnN0OworCiBw
cml2YXRlOgorICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogY29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lKCk7CisKICAgICAvLyBQYWdlQ2xpZW50CiAgICAgUGFzc093blB0cjxE
cmF3aW5nQXJlYVByb3h5PiBjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkgT1ZFUlJJREU7CiAKQEAg
LTE2MCw2ICsxNzgsNyBAQCBwcml2YXRlOgogICAgIEV3a1ZpZXcqIG1fZXdrVmlldzsKICAgICBS
ZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2U7CiAgICAgRGVmYXVsdFVuZG9Db250cm9sbGVyIG1f
dW5kb0NvbnRyb2xsZXI7CisgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggbV91c2Vy
Vmlld3BvcnRUcmFuc2Zvcm07CiB9OwogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>