<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>441447</bug_id>
          
          <creation_ts>2021-08-23 19:59:27 +0000</creation_ts>
          <short_desc>Consider reverting replacement of zoom buttons with background color selector</short_desc>
          <delta_ts>2022-02-14 17:53:19 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Applications</classification>
          <product>gwenview</product>
          <component>general</component>
          <version>unspecified</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>usability</keywords>
          <priority>NOR</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aurelien Gateau">agateau</reporter>
          <assigned_to name="Gwenview Bugs">gwenview-bugs-null</assigned_to>
          <cc>krystian.zajdel</cc>
    
    <cc>martin.sandsmark</cc>
    
    <cc>michael.hmich</cc>
    
    <cc>nate</cc>
    
    <cc>noahadvs</cc>
    
    <cc>vayu</cc>
    
    <cc>xnagytibor</cc>
          
          <cf_commitlink>https://invent.kde.org/graphics/gwenview/commit/a94fe7dde79fe1a3813564989faf55d5facaefc5</cf_commitlink>
          <cf_versionfixedin>22.04</cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>20</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2055690</commentid>
    <comment_count>0</comment_count>
    <who name="Aurelien Gateau">agateau</who>
    <bug_when>2021-08-23 19:59:27 +0000</bug_when>
    <thetext>SUMMARY

Since https://invent.kde.org/graphics/gwenview/-/merge_requests/54, the one-click zoom buttons of the status bar have been replaced with a combobox, and the freed space used to add a background color selector.

Following comments from Nate blog post about this change (https://pointieststick.com/2021/07/02/this-week-in-kde-gwenview-and-more/comment-page-1/#comment-22661), I am filling this bug report because I think this change makes the experience of most users worse.

As I wrote in one of the comments, switching between 100% &amp; fill is something I do sometimes multiple times per image. Changing the background color… I just don’t. If the option really has to be given a quicker access, I think the context menu would be more appropriate.

The MR implementing this feature mentions the use case of browsing icons, and I can see how it can be useful in this situation, but I believe this is a minority use case compared to browsing pictures.

SOFTWARE/OS VERSIONS

Linux/KDE Plasma: 21.08
KDE Plasma Version: 21.08</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2055694</commentid>
    <comment_count>1</comment_count>
    <who name="Nate Graham">nate</who>
    <bug_when>2021-08-23 20:17:43 +0000</bug_when>
    <thetext>CCing Noah, who made this change.

Note that Aurelien is the creator and former maintainer of Gwenview. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2055696</commentid>
    <comment_count>2</comment_count>
    <who name="Nate Graham">nate</who>
    <bug_when>2021-08-23 20:19:03 +0000</bug_when>
    <thetext>To be fair, I think I was actually the one who recommended this placement, and the original implementation was with a two-position toggle button on the toolbar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2055721</commentid>
    <comment_count>3</comment_count>
    <who name="Aurelien Gateau">agateau</who>
    <bug_when>2021-08-23 21:14:35 +0000</bug_when>
    <thetext>&gt; Note that Aurelien is the creator and former maintainer of Gwenview. :)

Also note that I do not expect any special treatment just because I am the former maintainer :) Those who do the work *nowadays* get to decide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2055740</commentid>
    <comment_count>4</comment_count>
    <who name="Noah Davis">noahadvs</who>
    <bug_when>2021-08-24 00:02:37 +0000</bug_when>
    <thetext>(In reply to Nate Graham from comment #1)
&gt; CCing Noah, who made this change.

I&apos;m not that attached to the change.

&gt; Changing the background color… I just don’t.

I suppose it depends on what kinds of images you frequently look at. With images that have transparent parts or consist of mostly one color, background color may have to be changed frequently and opening the settings dialog every time is just too slow.

&gt; If the option really has to be given a quicker access, I think the context menu would be more appropriate.

I suppose that would be fine. It&apos;s less discoverable, but at least it&apos;s better than a settings dialog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2056850</commentid>
    <comment_count>5</comment_count>
    <who name="Aurelien Gateau">agateau</who>
    <bug_when>2021-08-28 09:05:47 +0000</bug_when>
    <thetext>Sounds good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2066223</commentid>
    <comment_count>6</comment_count>
    <who name="Nate Graham">nate</who>
    <bug_when>2021-10-04 23:54:12 +0000</bug_when>
    <thetext>*** Bug 443281 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2067111</commentid>
    <comment_count>7</comment_count>
    <who name="Krystian">krystian.zajdel</who>
    <bug_when>2021-10-07 21:43:21 +0000</bug_when>
    <thetext>Just wanted to say that I really miss those zoom buttons. Personally, I&apos;ve used them a lot. The current solution is slow and kind of finicky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2069110</commentid>
    <comment_count>8</comment_count>
    <who name="Satyam">vayu</who>
    <bug_when>2021-10-16 20:08:42 +0000</bug_when>
    <thetext>Gwenview is a lot less handy for me with those buttons gone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2069222</commentid>
    <comment_count>9</comment_count>
    <who name="Michael">michael.hmich</who>
    <bug_when>2021-10-17 11:25:36 +0000</bug_when>
    <thetext>(In reply to Satyam from comment #8)
&gt; Gwenview is a lot less handy for me with those buttons gone.

&quot;those buttons&quot; are which buttons?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2069270</commentid>
    <comment_count>10</comment_count>
      <attachid>142533</attachid>
    <who name="Nagy Tibor">xnagytibor</who>
    <bug_when>2021-10-17 15:52:34 +0000</bug_when>
    <thetext>Created attachment 142533
These buttons

(In reply to Michael from comment #9)
&gt; (In reply to Satyam from comment #8)
&gt; &gt; Gwenview is a lot less handy for me with those buttons gone.
&gt; 
&gt; &quot;those buttons&quot; are which buttons?
Check my attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2069274</commentid>
    <comment_count>11</comment_count>
      <attachid>142534</attachid>
    <who name="Satyam">vayu</who>
    <bug_when>2021-10-17 16:00:40 +0000</bug_when>
    <thetext>Created attachment 142534
Fit, Fill 100% size buttons</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2069277</commentid>
    <comment_count>12</comment_count>
    <who name="Satyam">vayu</who>
    <bug_when>2021-10-17 16:05:59 +0000</bug_when>
    <thetext>(In reply to Nagy Tibor from comment #10)
&gt; Created attachment 142533 [details]
&gt; These buttons
&gt; 
&gt; (In reply to Michael from comment #9)
&gt; &gt; (In reply to Satyam from comment #8)
&gt; &gt; &gt; Gwenview is a lot less handy for me with those buttons gone.
&gt; &gt; 
&gt; &gt; &quot;those buttons&quot; are which buttons?
&gt; Check my attachment.

Not the background color buttons, the &quot;Fit, Fill, 100%&quot; view size buttons.  It&apos;s surprisingly effort-full to have to go to the drop down because I use those almost every time I look at an image.

I added an attachment of a locally modified Gwenview, that re-added those buttons and also kept the background color buttons.  They all fit pretty well. Though while I like the ability to choose background color, that&apos;s a setting I set once and rarely revisit again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2069334</commentid>
    <comment_count>13</comment_count>
    <who name="Michael">michael.hmich</who>
    <bug_when>2021-10-17 20:26:43 +0000</bug_when>
    <thetext>(In reply to Satyam from comment #12)
&gt; (In reply to Nagy Tibor from comment #10)
&gt; &gt; Created attachment 142533 [details]
&gt; &gt; These buttons
&gt; &gt; 
&gt; &gt; (In reply to Michael from comment #9)
&gt; &gt; &gt; (In reply to Satyam from comment #8)
&gt; &gt; &gt; &gt; Gwenview is a lot less handy for me with those buttons gone.
&gt; &gt; &gt; 
&gt; &gt; &gt; &quot;those buttons&quot; are which buttons?
&gt; &gt; Check my attachment.
&gt; 
&gt; Not the background color buttons, the &quot;Fit, Fill, 100%&quot; view size buttons. 
&gt; It&apos;s surprisingly effort-full to have to go to the drop down because I use
&gt; those almost every time I look at an image.
&gt; 
&gt; I added an attachment of a locally modified Gwenview, that re-added those
&gt; buttons and also kept the background color buttons.  They all fit pretty
&gt; well. Though while I like the ability to choose background color, that&apos;s a
&gt; setting I set once and rarely revisit again.


I tell why the background color bar is sensless, somebody make a comment about but also quiet sensless, when you zoom a picture in you don&apos;t see bacground and when not you probably chose fot or fill, means there are a couple of milimeters around the image nothing more ... for that we got the price of a &quot;limping&quot; interface to pay, its performance is horrible and it doesn&apos;t close when you hit the x button on top</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2069342</commentid>
    <comment_count>14</comment_count>
    <who name="Krystian">krystian.zajdel</who>
    <bug_when>2021-10-17 20:57:26 +0000</bug_when>
    <thetext>(In reply to Michael from comment #13)
&gt; I tell why the background color bar is sensless, somebody make a comment
&gt; about but also quiet sensless, when you zoom a picture in you don&apos;t see
&gt; bacground and when not you probably chose fot or fill, means there are a
&gt; couple of milimeters around the image nothing more ... for that we got the
&gt; price of a &quot;limping&quot; interface to pay, its performance is horrible and it
&gt; doesn&apos;t close when you hit the x button on top
 
Background color is probably useful for viewing icons with transparency. 
Still, gimping one workflow to enable another is not the way to go. Especially, considering how many people actually need to open icons vs those who view photos.


The current implementation is really finicky. Sometimes scrolling down takes you to &quot;Fill&quot; but other times to &quot;400%&quot;. Then you scroll down again and it something like &quot;95%&quot;. And then you scroll again and it&apos;s &quot;100%&quot; which is basically &quot;Fill&quot; again.
I keep second guessing myself and it&apos;s really not a good experience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2069396</commentid>
    <comment_count>15</comment_count>
    <who name="Satyam">vayu</who>
    <bug_when>2021-10-17 22:57:46 +0000</bug_when>
    <thetext>The modified version my son did looks and works great for me. Having both the colors and the Fit Fill 100% buttons doesn&apos;t strike me as cluttered or anything. How about both?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2072023</commentid>
    <comment_count>16</comment_count>
    <who name="Bug Janitor Service">bug-janitor</who>
    <bug_when>2021-10-25 15:50:25 +0000</bug_when>
    <thetext>A possibly relevant merge request was started @ https://invent.kde.org/graphics/gwenview/-/merge_requests/113</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2074453</commentid>
    <comment_count>17</comment_count>
    <who name="Martin Sandsmark">martin.sandsmark</who>
    <bug_when>2021-11-03 14:49:38 +0000</bug_when>
    <thetext>Apparently I wasn&apos;t the only one tearing my hear out over this change.

My idea (before looking for open bugs) was to turn the bottom bar into just another editable toolbar, and add the items currently there as default actions.

(I also don&apos;t think a combobox which automatically commits changes when moving the mouse over it is the right control for zoom level, though that&apos;s another discussion.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2074464</commentid>
    <comment_count>18</comment_count>
    <who name="Martin Sandsmark">martin.sandsmark</who>
    <bug_when>2021-11-03 15:27:33 +0000</bug_when>
    <thetext>FWIW, in case anyone else just want to quickly revert, last good commit was 976978b9eef6b809afc551289bf19d04c8ff094c (so if anyone uses the gwenview-git package on archlinux just add &quot;#commit=976978b9eef6b809afc551289bf19d04c8ff094c&quot; at the end of the source line).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2074478</commentid>
    <comment_count>19</comment_count>
    <who name="Nate Graham">nate</who>
    <bug_when>2021-11-03 15:52:28 +0000</bug_when>
    <thetext>(In reply to Martin Sandsmark from comment #17)
&gt; Apparently I wasn&apos;t the only one tearing my hear out over this change.
&gt; 
&gt; My idea (before looking for open bugs) was to turn the bottom bar into just
&gt; another editable toolbar, and add the items currently there as default
&gt; actions.
That seems like a reasonable idea to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2074479</commentid>
    <comment_count>20</comment_count>
      <attachid>143172</attachid>
    <who name="Martin Sandsmark">martin.sandsmark</who>
    <bug_when>2021-11-03 15:56:29 +0000</bug_when>
    <thetext>Created attachment 143172
Revert patch

Just a quick and dirty patch (wasn&apos;t straight forward because of the repo-wide code reformatting) if anyone else wants current master but with the old zoom buttons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2091886</commentid>
    <comment_count>21</comment_count>
    <who name="Bug Janitor Service">bug-janitor</who>
    <bug_when>2022-01-10 23:35:32 +0000</bug_when>
    <thetext>A possibly relevant merge request was started @ https://invent.kde.org/graphics/gwenview/-/merge_requests/130</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2093608</commentid>
    <comment_count>22</comment_count>
    <who name="Felix Ernst">felixernst</who>
    <bug_when>2022-01-14 12:08:52 +0000</bug_when>
    <thetext>Git commit 209c7284b0daea1b750e1cd01d4ee80dd050d172 by Felix Ernst.
Committed on 14/01/2022 at 12:08.
Pushed by felixernst into branch &apos;master&apos;.

Remove background color chooser widget

In e6241375e3ffecf0bfc0973b5e00dd193183eabb actions were added to
Gwenview which allowed easy changing of the background color. As
part of this change a widget was added to the status bar which
contains these new actions.

This commit removes the widget again while keeping the actions to
quickly change the background color of the view available both from
the menu bar and from the right-click context menu.

Having these actions always visible on the status bar doesn&apos;t seem
necessary because users generally seem to not be too interested in
switching the background color frequently.

This commit is kind of a requirement for adding other actions to
the status bar instead which users are vocally more interested in
having.

Most of the added lines were just moved from the widget class to the `documentviewcontroller`.

M  +5    -5    app/gvcore.cpp
M  +0    -5    app/viewmainpage.cpp
M  +0    -1    lib/CMakeLists.txt
D  +0    -283  lib/backgroundcolorwidget/backgroundcolorwidget.cpp
D  +0    -45   lib/backgroundcolorwidget/backgroundcolorwidget.h
M  +1    -1    lib/documentview/documentview.cpp
M  +4    -3    lib/documentview/documentview.h
M  +109  -58   lib/documentview/documentviewcontroller.cpp
M  +0    -3    lib/documentview/documentviewcontroller.h
M  +7    -7    lib/gwenviewconfig.kcfg

https://invent.kde.org/graphics/gwenview/commit/209c7284b0daea1b750e1cd01d4ee80dd050d172</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2104569</commentid>
    <comment_count>23</comment_count>
    <who name="Nate Graham">nate</who>
    <bug_when>2022-02-14 17:53:19 +0000</bug_when>
    <thetext>Git commit a94fe7dde79fe1a3813564989faf55d5facaefc5 by Nate Graham, on behalf of Felix Ernst.
Committed on 14/02/2022 at 17:53.
Pushed by ngraham into branch &apos;master&apos;.

Add a &quot;Fit&quot; button to the status bar

![2021-10-25_17-42-52](/uploads/07657e3e17892c39c02b183743725b12/2021-10-25_17-42-52.mp4)

The zoom actions for &quot;Fit&quot;, &quot;Fill&quot; and &quot;100%&quot; were recently moved
from status bar to a common popup also available on the status bar
in 2c829f4e.
There was some criticism of this change because users found it
unnecessarily cumbersome that they now needed an extra click to
invoke these common actions.

This commit re-adds a &quot;Fit&quot; button on the status bar. It is a
toggle button and unchecking it will switch to &quot;100%&quot;.

There is some criticism that this commit doesn&apos;t also re-add the
&quot;Fill&quot; and &quot;100%&quot; buttons. I will explain my reasons for not
adding them but this doesn&apos;t reflect a reached consensus and can
therefore not be a final decision.

I am interested in merging this as it is anyway because nobody
was against adding a &quot;Fit&quot; button.

The reasons why this commit re-adds a &quot;Fit&quot; button but neither a
&quot;Fill&quot; nor &quot;100%&quot; button are as follows:

&quot;Fit&quot; is the default way to view an image in Gwenview. It allows
users to get the full picture which in many cases is the most
important way to view an image. Whenever any zoom changes were done
this button will allow to quickly jump back to seeing the whole
image.

Zooming to &quot;100%&quot; is considered to be a lot less useful in many
situations. 1. The zoom value is identical to Fit for images
smaller than the view area. 2. Because of the previous, having
both a &quot;100%&quot; and &quot;Fit&quot; button can be confusing because changing
between them does seemingly nothing even though having these
buttons side by side implies that it would. 3. For pictures made
with typical cameras/phones nowadays 100% zoom is very zoomed in
and not automatically any more useful than e.g. 50% zoom.
For these reasons no &quot;100%&quot; button is added by this commit.
However the &quot;Fit&quot; action always worked in a way that unchecking it
zooms to 100% so zooming to 100% is now also only one click away
even though no explicit &quot;100%&quot; button is added.

Concerning the &quot;Fill&quot; action: I didn&apos;t see a lot of comments of
people being bothered by its removal from the status bar. Using it
might be an aquired taste and there might be some people that
use it a lot but it doesn&apos;t seem like it is very popular currently.
Users are encouraged to add a &quot;Fill&quot; button to their personal
toolbar or to &quot;scroll down&quot; on the new ZoomComboBox.

FIXED-IN: 22.04

cc @ndavis, @ngraham

M  +8    -0    lib/zoomwidget.cpp

https://invent.kde.org/graphics/gwenview/commit/a94fe7dde79fe1a3813564989faf55d5facaefc5</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>142533</attachid>
            <date>2021-10-17 15:52:34 +0000</date>
            <delta_ts>2021-10-17 15:52:34 +0000</delta_ts>
            <desc>These buttons</desc>
            <filename>these-buttons.png</filename>
            <type>image/png</type>
            <size>14724</size>
            <attacher name="Nagy Tibor">xnagytibor</attacher>
            
              <data encoding="base64">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
qk3Mpt+zAAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>142534</attachid>
            <date>2021-10-17 16:00:40 +0000</date>
            <delta_ts>2021-10-17 16:00:40 +0000</delta_ts>
            <desc>Fit, Fill 100% size buttons</desc>
            <filename>gwenview-buttons.png</filename>
            <type>image/png</type>
            <size>6403</size>
            <attacher name="Satyam">vayu</attacher>
            
              <data encoding="base64">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
ncvtblvrkQAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143172</attachid>
            <date>2021-11-03 15:56:29 +0000</date>
            <delta_ts>2021-11-03 15:56:29 +0000</delta_ts>
            <desc>Revert patch</desc>
            <filename>0001-Revert-ZoomComboBox-Don-t-switch-to-Browse-mode-by-p.patch</filename>
            <type>text/plain</type>
            <size>75003</size>
            <attacher name="Martin Sandsmark">martin.sandsmark</attacher>
            
              <data encoding="base64">RnJvbSBjNWQwNzc4MzRiMTk0NWI0MDg0MDJjOWQyM2M5OTNkMDRmOGI2Mzg2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiAiTWFydGluIFQuIEguIFNhbmRzbWFyayIgPG1hcnRpbi5zYW5k
c21hcmtAa2RlLm9yZz4KRGF0ZTogV2VkLCAzIE5vdiAyMDIxIDE2OjMxOjIwICswMTAwClN1Ympl
Y3Q6IFtQQVRDSF0gUmV2ZXJ0ICJbWm9vbUNvbWJvQm94XSBEb24ndCBzd2l0Y2ggdG8gQnJvd3Nl
IG1vZGUgYnkKIHByZXNzaW5nIEVzYyB3aGlsZSB0aGUgcG9wdXAgaXMgdmlzaWJsZSIKClRoaXMg
cmV2ZXJ0cyBjb21taXQgMDNlYTY1ZWViYjU5OTZlZGI3Njk5OTlkNGMxMWNiODBiZjFiZjMzMy4K
ClJldmVydCAiW1pvb21Db21ib0JveF0gT3ZlcnJpZGUgc2hvd1BvcHVwIGluc3RlYWQgb2YgbW91
c2VQcmVzc0V2ZW50IgoKVGhpcyByZXZlcnRzIGNvbW1pdCBkZjZiZGFkMDRjZWNlMTExM2UwOTNk
YmY1NGE2ZGJlM2RlZjM1NDQ4LgoKUmV2ZXJ0ICJVc2UgUVNpZ25hbEJsb2NrZXIgaW5zdGVhZCBv
ZiBkb2luZyBtYW51YWwgYmxvY2tpbmciCgpUaGlzIHJldmVydHMgY29tbWl0IDc3OTQ3ZjM0ZWYy
ZmEzNDkwZTAxZGJhY2I3ZjU0OTRiMWE0ODY5NjIuCgpSZXZlcnQgIkRvbid0IGNoYW5nZSB0aGUg
em9vbSB2YWx1ZSB1bmxlc3MgdGhlIHVzZXIgbWFkZSBhIHNlbGVjdGlvbiIKClRoaXMgcmV2ZXJ0
cyBjb21taXQgNTE0ZTM1YWU0YTIwNDk2ODJmYjY1ZjE4Y2UwM2MzNDQ4YzA4YzJiNi4KClJldmVy
dCAiQWxsb3cgdHlwaW5nIGEgem9vbSBsZXZlbCBpbiB0aGUgem9vbSBjb21ibyIKClRoaXMgcmV2
ZXJ0cyBjb21taXQgZThlZmUxMTg4YmU4NGViZjc2ZDJlYjM4YTMyODFhZmQ0ZWNlZmZkZi4KClJl
dmVydCAiRml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MiCgpUaGlzIHJldmVydHMgY29tbWl0IDU2
ODFjNTA0ODFjMzAzZDYwZjE1YTg3ODI5ZDVlMjUwNjlkZWM1MWUuCgpSZXZlcnQgIkFkZCBiYWNr
Z3JvdW5kIGNvbG9yIHN3aXRjaGluZyB3aWRnZXQgYW5kIHVzZSBjb2xvcnMgYmFzZWQgb24gdGhl
IGNvbG9yIHNjaGVtZSIKClRoaXMgcmV2ZXJ0cyBjb21taXQgZTYyNDEzNzVlM2ZmZWNmMGJmYzA5
NzNiNWUwMGRkMTkzMTgzZWFiYi4KClJldmVydCAiWm9vbVdpZGdldDogUmVtb3ZlIGJ1dHRvbnMs
IHVzZSBjb21ib2JveCBpbnN0ZWFkIG9mIHNwaW5ib3giCgpUaGlzIHJldmVydHMgY29tbWl0IDJj
ODI5ZjRlYmRmNGMyODEzNDdkNWFmYzAxMWE3MDliNGIwZWQ4YmMuCi0tLQogQ01ha2VMaXN0cy50
eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxIC0KIGFwcC9DTWFrZUxpc3Rz
LnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAtCiBhcHAvYnJvd3NlbWFpbnBh
Z2UuY3BwICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgLQogYXBwL2NvbmZpZ2RpYWxvZy5j
cHAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIwICsKIGFwcC9jb25maWdkaWFsb2cuaCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBhcHAvZ2VuZXJhbGNvbmZpZ3BhZ2Uu
dWkgICAgICAgICAgICAgICAgICAgICAgfCAxMDcgKysrKy0KIGFwcC9ndmNvcmUuY3BwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1MiArLS0KIGFwcC9nd2Vudmlld3VpLnJjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSAtCiBhcHAvc3RhcnRtYWlucGFnZS5jcHAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgLQogYXBwL3ZpZXdtYWlucGFnZS5jcHAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgIDIwICstCiBpbXBvcnRlci90aHVtYm5haWxwYWdlLmNw
cCAgICAgICAgICAgICAgICAgICAgfCAgMTIgKwogbGliL0NNYWtlTGlzdHMudHh0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAyIC0KIC4uLi9iYWNrZ3JvdW5kY29sb3J3aWRnZXQuY3Bw
ICAgICAgICAgICAgICAgICB8IDI4MyAtLS0tLS0tLS0tLS0tLQogLi4uL2JhY2tncm91bmRjb2xv
cndpZGdldC5oICAgICAgICAgICAgICAgICAgIHwgIDQ1IC0tLQogbGliL2RvY3VtZW50dmlldy9h
YnN0cmFjdGltYWdldmlldy5jcHAgICAgICAgIHwgICA3ICstCiBsaWIvZG9jdW1lbnR2aWV3L2Fi
c3RyYWN0aW1hZ2V2aWV3LmggICAgICAgICAgfCAgIDcgKy0KIGxpYi9kb2N1bWVudHZpZXcvZG9j
dW1lbnR2aWV3LmNwcCAgICAgICAgICAgICB8ICAgNiAtCiBsaWIvZG9jdW1lbnR2aWV3L2RvY3Vt
ZW50dmlldy5oICAgICAgICAgICAgICAgfCAgIDUgLQogbGliL2RvY3VtZW50dmlldy9kb2N1bWVu
dHZpZXdjb250cm9sbGVyLmNwcCAgIHwgIDkxICstLS0tCiBsaWIvZG9jdW1lbnR2aWV3L2RvY3Vt
ZW50dmlld2NvbnRyb2xsZXIuaCAgICAgfCAgIDMgLQogbGliL2d3ZW52aWV3Y29uZmlnLmtjZmcg
ICAgICAgICAgICAgICAgICAgICAgIHwgIDExICstCiBsaWIvem9vbWNvbWJvYm94L3pvb21jb21i
b2JveC5jcHAgICAgICAgICAgICAgfCAzNzAgLS0tLS0tLS0tLS0tLS0tLS0tCiBsaWIvem9vbWNv
bWJvYm94L3pvb21jb21ib2JveC5oICAgICAgICAgICAgICAgfCAgOTAgLS0tLS0KIGxpYi96b29t
Y29tYm9ib3gvem9vbWNvbWJvYm94X3AuaCAgICAgICAgICAgICB8ICA2MCAtLS0KIGxpYi96b29t
d2lkZ2V0LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4OSArKysrLQogbGliL3pv
b213aWRnZXQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiAyNiBmaWxl
cyBjaGFuZ2VkLCAyMjEgaW5zZXJ0aW9ucygrKSwgMTA4MSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBsaWIvYmFja2dyb3VuZGNvbG9yd2lkZ2V0L2JhY2tncm91bmRjb2xvcndpZGdl
dC5jcHAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBsaWIvYmFja2dyb3VuZGNvbG9yd2lkZ2V0L2JhY2tn
cm91bmRjb2xvcndpZGdldC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgbGliL3pvb21jb21ib2JveC96
b29tY29tYm9ib3guY3BwCiBkZWxldGUgbW9kZSAxMDA2NDQgbGliL3pvb21jb21ib2JveC96b29t
Y29tYm9ib3guaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGxpYi96b29tY29tYm9ib3gvem9vbWNvbWJv
Ym94X3AuaAoKZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5k
ZXggYjMwZTViMmYuLjhhMGIyNjU1IDEwMDY0NAotLS0gYS9DTWFrZUxpc3RzLnR4dAorKysgYi9D
TWFrZUxpc3RzLnR4dApAQCAtNjksNyArNjksNiBAQCBmaW5kX3BhY2thZ2UoS0Y1ICR7S0Y1X01J
Tl9WRVJTSU9OfSBSRVFVSVJFRCBDT01QT05FTlRTCiAgICAgTm90aWZpY2F0aW9ucwogICAgIEd1
aUFkZG9ucwogICAgIFdpZGdldHNBZGRvbnMKLSAgICBHdWlBZGRvbnMKICkKIGZpbmRfcGFja2Fn
ZShLRjUgJHtLRjVfTUlOX1ZFUlNJT059IE9QVElPTkFMX0NPTVBPTkVOVFMKICAgICBBY3Rpdml0
aWVzCmRpZmYgLS1naXQgYS9hcHAvQ01ha2VMaXN0cy50eHQgYi9hcHAvQ01ha2VMaXN0cy50eHQK
aW5kZXggOTRiMjJkNDUuLjQ0Njk1NDAwIDEwMDY0NAotLS0gYS9hcHAvQ01ha2VMaXN0cy50eHQK
KysrIGIvYXBwL0NNYWtlTGlzdHMudHh0CkBAIC04MSw3ICs4MSw2IEBAIHRhcmdldF9saW5rX2xp
YnJhcmllcyhnd2VudmlldwogICAgIEtGNTo6SXRlbU1vZGVscwogICAgIEtGNTo6Tm90aWZpY2F0
aW9ucwogICAgIEtGNTo6V2lkZ2V0c0FkZG9ucwotICAgIEtGNTo6R3VpQWRkb25zCiAgICAgZ3dl
bnZpZXdsaWIKICAgICApCiAKZGlmZiAtLWdpdCBhL2FwcC9icm93c2VtYWlucGFnZS5jcHAgYi9h
cHAvYnJvd3NlbWFpbnBhZ2UuY3BwCmluZGV4IDBhM2UyNmEzLi5kOTdhYTM4YSAxMDA2NDQKLS0t
IGEvYXBwL2Jyb3dzZW1haW5wYWdlLmNwcAorKysgYi9hcHAvYnJvd3NlbWFpbnBhZ2UuY3BwCkBA
IC0zMzMsMTAgKzMzMyw2IEBAIEJyb3dzZU1haW5QYWdlOjpCcm93c2VNYWluUGFnZShRV2lkZ2V0
ICpwYXJlbnQsIEtBY3Rpb25Db2xsZWN0aW9uICphY3Rpb25Db2xsZWN0CiAgICAgY29ubmVjdChk
LT5tRGlyTW9kZWwsICZTb3J0ZWREaXJNb2RlbDo6bW9kZWxSZXNldCwgdGhpcywgJkJyb3dzZU1h
aW5QYWdlOjpzbG90RGlyTW9kZWxSZXNldCk7CiAgICAgY29ubmVjdCh0aHVtYm5haWxWaWV3KCks
ICZUaHVtYm5haWxWaWV3OjpzZWxlY3Rpb25DaGFuZ2VkU2lnbmFsLCB0aGlzLCAmQnJvd3NlTWFp
blBhZ2U6OnNsb3RTZWxlY3Rpb25DaGFuZ2VkKTsKIAotICAgIGNvbm5lY3QocUFwcCwgJlFBcHBs
aWNhdGlvbjo6cGFsZXR0ZUNoYW5nZWQsIHRoaXMsIFt0aGlzXSgpIHsKLSAgICAgICAgZC0+YXBw
bHlQYWxldHRlKHdpbmRvdygpLT5pc0Z1bGxTY3JlZW4oKSk7Ci0gICAgfSk7Ci0KICAgICBpbnN0
YWxsRXZlbnRGaWx0ZXIodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL2FwcC9jb25maWdkaWFsb2cu
Y3BwIGIvYXBwL2NvbmZpZ2RpYWxvZy5jcHAKaW5kZXggYjBjMGE4ZjEuLmIzNWJmMDk5IDEwMDY0
NAotLS0gYS9hcHAvY29uZmlnZGlhbG9nLmNwcAorKysgYi9hcHAvY29uZmlnZGlhbG9nLmNwcApA
QCAtNzcsNyArNzcsOSBAQCBDb25maWdEaWFsb2c6OkNvbmZpZ0RpYWxvZyhRV2lkZ2V0ICpwYXJl
bnQpCiAgICAgY29ubmVjdChtR2VuZXJhbENvbmZpZ1BhZ2UuanBlZ1F1YWxpdHlTcGlubmVyLCBR
T3ZlcmxvYWQ8aW50Pjo6b2YoJlFTcGluQm94Ojp2YWx1ZUNoYW5nZWQpLCB0aGlzLCBbPV0oaW50
IHZhbHVlKSB7CiAgICAgICAgIG1HZW5lcmFsQ29uZmlnUGFnZS5rY2ZnX0pQRUdRdWFsaXR5LT5z
ZXRWYWx1ZSh2YWx1ZSk7CiAgICAgfSk7CisgICAgY29ubmVjdChtR2VuZXJhbENvbmZpZ1BhZ2Uu
a2NmZ19WaWV3QmFja2dyb3VuZFZhbHVlLCAmUUFic3RyYWN0U2xpZGVyOjp2YWx1ZUNoYW5nZWQs
IHRoaXMsICZDb25maWdEaWFsb2c6OnVwZGF0ZVZpZXdCYWNrZ3JvdW5kRnJhbWUpOwogICAgIG1H
ZW5lcmFsQ29uZmlnUGFnZS5qcGVnUXVhbGl0eVNwaW5uZXItPnNldFZhbHVlKG1HZW5lcmFsQ29u
ZmlnUGFnZS5rY2ZnX0pQRUdRdWFsaXR5LT52YWx1ZSgpKTsKKyAgICBtR2VuZXJhbENvbmZpZ1Bh
Z2UuYmFja2dyb3VuZFZhbHVlRnJhbWUtPnNldE1pbmltdW1XaWR0aChtR2VuZXJhbENvbmZpZ1Bh
Z2UuanBlZ1F1YWxpdHlTcGlubmVyLT53aWR0aCgpKTsKICAgICBtR2VuZXJhbENvbmZpZ1BhZ2Uu
bG9zc3lJbWFnZUZvcm1hdEhlbHBMYWJlbC0+c2V0Rm9udChRRm9udERhdGFiYXNlOjpzeXN0ZW1G
b250KFFGb250RGF0YWJhc2U6OlNtYWxsZXN0UmVhZGFibGVGb250KSk7CiAKICAgICBtR2VuZXJh
bENvbmZpZ1BhZ2Uua2NmZ19BdXRvcGxheVZpZGVvcy0+c2V0RW5hYmxlZChtR2VuZXJhbENvbmZp
Z1BhZ2Uua2NmZ19MaXN0VmlkZW9zLT5pc0NoZWNrZWQoKSk7CkBAIC0xMzksNiArMTQxLDI0IEBA
IENvbmZpZ0RpYWxvZzo6Q29uZmlnRGlhbG9nKFFXaWRnZXQgKnBhcmVudCkKICAgICBtQWR2YW5j
ZWRDb25maWdQYWdlLnBlcmNlcHR1YWxIZWxwTGFiZWwtPnNldEZvbnQoUUZvbnREYXRhYmFzZTo6
c3lzdGVtRm9udChRRm9udERhdGFiYXNlOjpTbWFsbGVzdFJlYWRhYmxlRm9udCkpOwogICAgIG1B
ZHZhbmNlZENvbmZpZ1BhZ2UucmVsYXRpdmVIZWxwTGFiZWwtPnNldEZvbnQoUUZvbnREYXRhYmFz
ZTo6c3lzdGVtRm9udChRRm9udERhdGFiYXNlOjpTbWFsbGVzdFJlYWRhYmxlRm9udCkpOwogICAg
IG1BZHZhbmNlZENvbmZpZ1BhZ2UuY29sb3JQcm9maWxlSGVscExhYmVsLT5zZXRGb250KFFGb250
RGF0YWJhc2U6OnN5c3RlbUZvbnQoUUZvbnREYXRhYmFzZTo6U21hbGxlc3RSZWFkYWJsZUZvbnQp
KTsKKworCisgICAgdXBkYXRlVmlld0JhY2tncm91bmRGcmFtZSgpOworfQorCit2b2lkIENvbmZp
Z0RpYWxvZzo6dXBkYXRlVmlld0JhY2tncm91bmRGcmFtZSgpCit7CisgICAgY29uc3QgUUNvbG9y
IGNvbG9yID0gUUNvbG9yOjpmcm9tSHN2KDAsIDAsIG1HZW5lcmFsQ29uZmlnUGFnZS5rY2ZnX1Zp
ZXdCYWNrZ3JvdW5kVmFsdWUtPnZhbHVlKCkpOworICAgIGNvbnN0IFFTdHJpbmcgY3NzID0KKyAg
ICAgICAgUVN0cmluZ0xpdGVyYWwoCisgICAgICAgICAgICAiYmFja2dyb3VuZC1jb2xvcjogJTE7
IgorICAgICAgICAgICAgImJvcmRlci1yYWRpdXM6IDVweDsiCisgICAgICAgICAgICAiYm9yZGVy
OiAxcHggc29saWQgJTE7IikKKyAgICAgICAgLmFyZyhjb2xvci5uYW1lKCkpOworICAgIC8vIFdo
ZW4gdXNpbmcgT3h5Z2VuLCBzZXR0aW5nIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHZpYSBwYWxldHRl
IGNhdXNlcyB0aGUKKyAgICAvLyBwaXhlbHMgb3V0c2lkZSB0aGUgZnJhbWUgdG8gYmUgcGFpbnRl
ZCB3aXRoIHRoZSBuZXcgYmFja2dyb3VuZCBjb2xvciBhcworICAgIC8vIHdlbGwuIFVzaW5nIENT
UyB3b3JrcyBtb3JlIGxpa2UgZXhwZWN0ZWQuCisgICAgbUdlbmVyYWxDb25maWdQYWdlLmJhY2tn
cm91bmRWYWx1ZUZyYW1lLT5zZXRTdHlsZVNoZWV0KGNzcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9hcHAvY29uZmlnZGlhbG9nLmggYi9hcHAvY29uZmlnZGlhbG9nLmgKaW5k
ZXggODE4YmJhNjQuLmQxOWQ4ZTFlIDEwMDY0NAotLS0gYS9hcHAvY29uZmlnZGlhbG9nLmgKKysr
IGIvYXBwL2NvbmZpZ2RpYWxvZy5oCkBAIC00MCw2ICs0MCw5IEBAIGNsYXNzIENvbmZpZ0RpYWxv
ZyA6IHB1YmxpYyBLQ29uZmlnRGlhbG9nCiBwdWJsaWM6CiAgICAgQ29uZmlnRGlhbG9nKFFXaWRn
ZXQgKnBhcmVudCk7CiAKK3ByaXZhdGUgUV9TTE9UUzoKKyAgICB2b2lkIHVwZGF0ZVZpZXdCYWNr
Z3JvdW5kRnJhbWUoKTsKKwogcHJpdmF0ZToKICAgICBJbnZpc2libGVCdXR0b25Hcm91cCAqbVdy
YXBOYXZpZ2F0aW9uQmVoYXZpb3JHcm91cCA9IG51bGxwdHI7CiAgICAgSW52aXNpYmxlQnV0dG9u
R3JvdXAgKm1BbHBoYUJhY2tncm91bmRNb2RlR3JvdXAgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
YXBwL2dlbmVyYWxjb25maWdwYWdlLnVpIGIvYXBwL2dlbmVyYWxjb25maWdwYWdlLnVpCmluZGV4
IGYxNTFhM2NiLi44OTk3ZTdjMyAxMDA2NDQKLS0tIGEvYXBwL2dlbmVyYWxjb25maWdwYWdlLnVp
CisrKyBiL2FwcC9nZW5lcmFsY29uZmlncGFnZS51aQpAQCAtODMsNiArODMsOTAgQEAKICAgICA8
L3NwYWNlcj4KICAgIDwvaXRlbT4KICAgIDxpdGVtIHJvdz0iNiIgY29sdW1uPSIwIj4KKyAgICA8
d2lkZ2V0IGNsYXNzPSJRTGFiZWwiIG5hbWU9ImxhYmVsXzIiPgorICAgICA8cHJvcGVydHkgbmFt
ZT0idGV4dCI+CisgICAgICA8c3RyaW5nPkJhY2tncm91bmQgY29sb3I6PC9zdHJpbmc+CisgICAg
IDwvcHJvcGVydHk+CisgICAgIDxwcm9wZXJ0eSBuYW1lPSJidWRkeSI+CisgICAgICA8Y3N0cmlu
Zz5rY2ZnX1ZpZXdCYWNrZ3JvdW5kVmFsdWU8L2NzdHJpbmc+CisgICAgIDwvcHJvcGVydHk+Cisg
ICAgPC93aWRnZXQ+CisgICA8L2l0ZW0+CisgICA8aXRlbSByb3c9IjYiIGNvbHVtbj0iMSI+Cisg
ICAgPGxheW91dCBjbGFzcz0iUUhCb3hMYXlvdXQiPgorICAgICA8aXRlbT4KKyAgICAgIDx3aWRn
ZXQgY2xhc3M9IlFTbGlkZXIiIG5hbWU9ImtjZmdfVmlld0JhY2tncm91bmRWYWx1ZSI+CisgICAg
ICAgPHByb3BlcnR5IG5hbWU9Im1pbmltdW1TaXplIj4KKyAgICAgICAgPHNpemU+CisgICAgICAg
ICA8d2lkdGg+MjU2PC93aWR0aD4KKyAgICAgICAgIDxoZWlnaHQ+MDwvaGVpZ2h0PgorICAgICAg
ICA8L3NpemU+CisgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICA8cHJvcGVydHkgbmFtZT0ibWF4
aW11bSI+CisgICAgICAgIDxudW1iZXI+MjU1PC9udW1iZXI+CisgICAgICAgPC9wcm9wZXJ0eT4K
KyAgICAgICA8cHJvcGVydHkgbmFtZT0ib3JpZW50YXRpb24iPgorICAgICAgICA8ZW51bT5RdDo6
SG9yaXpvbnRhbDwvZW51bT4KKyAgICAgICA8L3Byb3BlcnR5PgorICAgICAgPC93aWRnZXQ+Cisg
ICAgIDwvaXRlbT4KKyAgICAgPGl0ZW0+CisgICAgICA8d2lkZ2V0IGNsYXNzPSJRRnJhbWUiIG5h
bWU9ImJhY2tncm91bmRWYWx1ZUZyYW1lIj4KKyAgICAgICA8cHJvcGVydHkgbmFtZT0ic2l6ZVBv
bGljeSI+CisgICAgICAgIDxzaXplcG9saWN5IGhzaXpldHlwZT0iRml4ZWQiIHZzaXpldHlwZT0i
UHJlZmVycmVkIj4KKyAgICAgICAgIDxob3JzdHJldGNoPjA8L2hvcnN0cmV0Y2g+CisgICAgICAg
ICA8dmVyc3RyZXRjaD4wPC92ZXJzdHJldGNoPgorICAgICAgICA8L3NpemVwb2xpY3k+CisgICAg
ICAgPC9wcm9wZXJ0eT4KKyAgICAgICA8cHJvcGVydHkgbmFtZT0ibWluaW11bVNpemUiPgorICAg
ICAgICA8c2l6ZT4KKyAgICAgICAgIDx3aWR0aD43MDwvd2lkdGg+CisgICAgICAgICA8aGVpZ2h0
PjA8L2hlaWdodD4KKyAgICAgICAgPC9zaXplPgorICAgICAgIDwvcHJvcGVydHk+CisgICAgICAg
PHByb3BlcnR5IG5hbWU9ImF1dG9GaWxsQmFja2dyb3VuZCI+CisgICAgICAgIDxib29sPnRydWU8
L2Jvb2w+CisgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICA8cHJvcGVydHkgbmFtZT0iZnJhbWVT
aGFwZSI+CisgICAgICAgIDxlbnVtPlFGcmFtZTo6U3R5bGVkUGFuZWw8L2VudW0+CisgICAgICAg
PC9wcm9wZXJ0eT4KKyAgICAgICA8cHJvcGVydHkgbmFtZT0iZnJhbWVTaGFkb3ciPgorICAgICAg
ICA8ZW51bT5RRnJhbWU6OlN1bmtlbjwvZW51bT4KKyAgICAgICA8L3Byb3BlcnR5PgorICAgICAg
PC93aWRnZXQ+CisgICAgIDwvaXRlbT4KKyAgICAgPGl0ZW0+CisgICAgICA8c3BhY2VyPgorICAg
ICAgIDxwcm9wZXJ0eSBuYW1lPSJvcmllbnRhdGlvbiI+CisgICAgICAgIDxlbnVtPlF0OjpIb3Jp
em9udGFsPC9lbnVtPgorICAgICAgIDwvcHJvcGVydHk+CisgICAgICAgPHByb3BlcnR5IG5hbWU9
InNpemVIaW50IiBzdGRzZXQ9IjAiPgorICAgICAgICA8c2l6ZT4KKyAgICAgICAgIDx3aWR0aD40
MDwvd2lkdGg+CisgICAgICAgICA8aGVpZ2h0PjIwPC9oZWlnaHQ+CisgICAgICAgIDwvc2l6ZT4K
KyAgICAgICA8L3Byb3BlcnR5PgorICAgICAgPC9zcGFjZXI+CisgICAgIDwvaXRlbT4KKyAgICA8
L2xheW91dD4KKyAgIDwvaXRlbT4KKyAgIDxpdGVtIHJvdz0iNyIgY29sdW1uPSIxIj4KKyAgICA8
c3BhY2VyIG5hbWU9InZlcnRpY2FsU3BhY2VyXzIiPgorICAgICA8cHJvcGVydHkgbmFtZT0ib3Jp
ZW50YXRpb24iPgorICAgICAgPGVudW0+UXQ6OlZlcnRpY2FsPC9lbnVtPgorICAgICA8L3Byb3Bl
cnR5PgorICAgICA8cHJvcGVydHkgbmFtZT0ic2l6ZVR5cGUiPgorICAgICAgPGVudW0+UVNpemVQ
b2xpY3k6OkZpeGVkPC9lbnVtPgorICAgICA8L3Byb3BlcnR5PgorICAgICA8cHJvcGVydHkgbmFt
ZT0ic2l6ZUhpbnQiIHN0ZHNldD0iMCI+CisgICAgICA8c2l6ZT4KKyAgICAgICA8d2lkdGg+MjA8
L3dpZHRoPgorICAgICAgIDxoZWlnaHQ+MjA8L2hlaWdodD4KKyAgICAgIDwvc2l6ZT4KKyAgICAg
PC9wcm9wZXJ0eT4KKyAgICA8L3NwYWNlcj4KKyAgIDwvaXRlbT4KKyAgIDxpdGVtIHJvdz0iOCIg
Y29sdW1uPSIwIj4KICAgICA8d2lkZ2V0IGNsYXNzPSJRTGFiZWwiIG5hbWU9ImxhYmVsXzMiPgog
ICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCI+CiAgICAgICA8c3RyaW5nPkZ1bGxzY3JlZW4gYmFj
a2dyb3VuZDo8L3N0cmluZz4KQEAgLTkyLDIxICsxNzYsMjEgQEAKICAgICAgPC9wcm9wZXJ0eT4K
ICAgICA8L3dpZGdldD4KICAgIDwvaXRlbT4KLSAgIDxpdGVtIHJvdz0iNiIgY29sdW1uPSIxIj4K
KyAgIDxpdGVtIHJvdz0iOCIgY29sdW1uPSIxIj4KICAgICA8d2lkZ2V0IGNsYXNzPSJRUmFkaW9C
dXR0b24iIG5hbWU9ImZ1bGxzY3JlZW5CYWNrZ3JvdW5kSW1hZ2VSYWRpb0J1dHRvbiI+CiAgICAg
IDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KICAgICAgIDxzdHJpbmc+RGFyayBncmF5IHRleHR1cmU8
L3N0cmluZz4KICAgICAgPC9wcm9wZXJ0eT4KICAgICA8L3dpZGdldD4KICAgIDwvaXRlbT4KLSAg
IDxpdGVtIHJvdz0iNyIgY29sdW1uPSIxIj4KKyAgIDxpdGVtIHJvdz0iOSIgY29sdW1uPSIxIj4K
ICAgICA8d2lkZ2V0IGNsYXNzPSJRUmFkaW9CdXR0b24iIG5hbWU9ImZ1bGxzY3JlZW5CYWNrZ3Jv
dW5kQmxhY2tSYWRpb0J1dHRvbiI+CiAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KICAgICAg
IDxzdHJpbmc+QmxhY2s8L3N0cmluZz4KICAgICAgPC9wcm9wZXJ0eT4KICAgICA8L3dpZGdldD4K
ICAgIDwvaXRlbT4KLSAgIDxpdGVtIHJvdz0iOCIgY29sdW1uPSIxIj4KKyAgIDxpdGVtIHJvdz0i
MTAiIGNvbHVtbj0iMSI+CiAgICAgPHNwYWNlciBuYW1lPSJ2ZXJ0aWNhbFNwYWNlcl8zIj4KICAg
ICAgPHByb3BlcnR5IG5hbWU9Im9yaWVudGF0aW9uIj4KICAgICAgIDxlbnVtPlF0OjpWZXJ0aWNh
bDwvZW51bT4KQEAgLTEyMiw3ICsyMDYsNyBAQAogICAgICA8L3Byb3BlcnR5PgogICAgIDwvc3Bh
Y2VyPgogICAgPC9pdGVtPgotICAgPGl0ZW0gcm93PSI5IiBjb2x1bW49IjAiPgorICAgPGl0ZW0g
cm93PSIxMSIgY29sdW1uPSIwIj4KICAgICA8d2lkZ2V0IGNsYXNzPSJRTGFiZWwiIG5hbWU9Imxh
YmVsXzQiPgogICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCI+CiAgICAgICA8c3RyaW5nPkxvc3N5
IGltYWdlIHNhdmUgcXVhbGl0eTo8L3N0cmluZz4KQEAgLTEzMiw3ICsyMTYsNyBAQAogICAgICA8
L3Byb3BlcnR5PgogICAgIDwvd2lkZ2V0PgogICAgPC9pdGVtPgotICAgPGl0ZW0gcm93PSI5IiBj
b2x1bW49IjEiPgorICAgPGl0ZW0gcm93PSIxMSIgY29sdW1uPSIxIj4KICAgICA8bGF5b3V0IGNs
YXNzPSJRSEJveExheW91dCIgbmFtZT0iaG9yaXpvbnRhbExheW91dCI+CiAgICAgIDxpdGVtPgog
ICAgICAgPHdpZGdldCBjbGFzcz0iUVNsaWRlciIgbmFtZT0ia2NmZ19KUEVHUXVhbGl0eSI+CkBA
IC0xOTAsNyArMjc0LDcgQEAKICAgICAgPC9pdGVtPgogICAgIDwvbGF5b3V0PgogICAgPC9pdGVt
PgotICAgPGl0ZW0gcm93PSIxMCIgY29sdW1uPSIxIj4KKyAgIDxpdGVtIHJvdz0iMTIiIGNvbHVt
bj0iMSI+CiAgICAgPHdpZGdldCBjbGFzcz0iUUxhYmVsIiBuYW1lPSJsb3NzeUltYWdlRm9ybWF0
SGVscExhYmVsIj4KICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgogICAgICAgPHN0cmluZz5U
aGUgcXVhbGl0eSBsZXZlbCB3aGVuIHNhdmluZyBpbWFnZXMgdXNpbmcgbG9zc3kgaW1hZ2UgZm9y
bWF0cyBzdWNoIGFzIEpQRUcsIFdFQlAsIEFWSUYsIEhFSUYsIGFuZCBIRUlDLiBIaWdoZXIgcXVh
bGl0eSBpbmNyZWFzZXMgdGhlIGZpbGUgc2l6ZS48L3N0cmluZz4KQEAgLTIwMCw3ICsyODQsNyBA
QAogICAgICA8L3Byb3BlcnR5PgogICAgIDwvd2lkZ2V0PgogICAgPC9pdGVtPgotICAgPGl0ZW0g
cm93PSIxMSIgY29sdW1uPSIxIj4KKyAgIDxpdGVtIHJvdz0iMTMiIGNvbHVtbj0iMSI+CiAgICAg
PHNwYWNlciBuYW1lPSJ2ZXJ0aWNhbFNwYWNlcl80Ij4KICAgICAgPHByb3BlcnR5IG5hbWU9Im9y
aWVudGF0aW9uIj4KICAgICAgIDxlbnVtPlF0OjpWZXJ0aWNhbDwvZW51bT4KQEAgLTIxNiwyOCAr
MzAwLDI4IEBACiAgICAgIDwvcHJvcGVydHk+CiAgICAgPC9zcGFjZXI+CiAgICA8L2l0ZW0+Ci0g
ICA8aXRlbSByb3c9IjEyIiBjb2x1bW49IjAiPgorICAgPGl0ZW0gcm93PSIxNCIgY29sdW1uPSIw
Ij4KICAgICA8d2lkZ2V0IGNsYXNzPSJRTGFiZWwiIG5hbWU9ImxhYmVsXzUiPgogICAgICA8cHJv
cGVydHkgbmFtZT0idGV4dCI+CiAgICAgICA8c3RyaW5nPlRodW1ibmFpbCBhY3Rpb25zOjwvc3Ry
aW5nPgogICAgICA8L3Byb3BlcnR5PgogICAgIDwvd2lkZ2V0PgogICAgPC9pdGVtPgotICAgPGl0
ZW0gcm93PSIxMyIgY29sdW1uPSIxIj4KKyAgIDxpdGVtIHJvdz0iMTUiIGNvbHVtbj0iMSI+CiAg
ICAgPHdpZGdldCBjbGFzcz0iUVJhZGlvQnV0dG9uIiBuYW1lPSJhbGxCdXR0b25zVGh1bWJuYWls
QWN0aW9uc1JhZGlvQnV0dG9uIj4KICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgogICAgICAg
PHN0cmluZz5BbGwgYnV0dG9uczwvc3RyaW5nPgogICAgICA8L3Byb3BlcnR5PgogICAgIDwvd2lk
Z2V0PgogICAgPC9pdGVtPgotICAgPGl0ZW0gcm93PSIxNCIgY29sdW1uPSIxIj4KKyAgIDxpdGVt
IHJvdz0iMTYiIGNvbHVtbj0iMSI+CiAgICAgPHdpZGdldCBjbGFzcz0iUVJhZGlvQnV0dG9uIiBu
YW1lPSJzZWxlY3Rpb25Pbmx5VGh1bWJuYWlsQWN0aW9uc1JhZGlvQnV0dG9uIj4KICAgICAgPHBy
b3BlcnR5IG5hbWU9InRleHQiPgogICAgICAgPHN0cmluZz5TaG93IHNlbGVjdGlvbiBidXR0b24g
b25seTwvc3RyaW5nPgogICAgICA8L3Byb3BlcnR5PgogICAgIDwvd2lkZ2V0PgogICAgPC9pdGVt
PgotICAgPGl0ZW0gcm93PSIxNSIgY29sdW1uPSIxIj4KKyAgIDxpdGVtIHJvdz0iMTciIGNvbHVt
bj0iMSI+CiAgICAgPHdpZGdldCBjbGFzcz0iUVJhZGlvQnV0dG9uIiBuYW1lPSJub25lVGh1bWJu
YWlsQWN0aW9uc1JhZGlvQnV0dG9uIj4KICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgogICAg
ICAgPHN0cmluZz5Ob25lPC9zdHJpbmc+CkBAIC0yNTIsNiArMzM2LDcgQEAKICAgPHRhYnN0b3A+
bmV2ZXJTaG93V3JhcE5vdGljZVJhZGlvQnV0dG9uPC90YWJzdG9wPgogICA8dGFic3RvcD53cmFw
Tm90aWNlT25TbGlkZXNob3dSYWRpb0J1dHRvbjwvdGFic3RvcD4KICAgPHRhYnN0b3A+YWx3YXlz
U2hvd1dyYXBOb3RpY2VSYWRpb0J1dHRvbjwvdGFic3RvcD4KKyAgPHRhYnN0b3A+a2NmZ19WaWV3
QmFja2dyb3VuZFZhbHVlPC90YWJzdG9wPgogICA8dGFic3RvcD5mdWxsc2NyZWVuQmFja2dyb3Vu
ZEltYWdlUmFkaW9CdXR0b248L3RhYnN0b3A+CiAgIDx0YWJzdG9wPmZ1bGxzY3JlZW5CYWNrZ3Jv
dW5kQmxhY2tSYWRpb0J1dHRvbjwvdGFic3RvcD4KICAgPHRhYnN0b3A+a2NmZ19KUEVHUXVhbGl0
eTwvdGFic3RvcD4KZGlmZiAtLWdpdCBhL2FwcC9ndmNvcmUuY3BwIGIvYXBwL2d2Y29yZS5jcHAK
aW5kZXggZmZmMjU5MDcuLmIwZjMxMTk1IDEwMDY0NAotLS0gYS9hcHAvZ3Zjb3JlLmNwcAorKysg
Yi9hcHAvZ3Zjb3JlLmNwcApAQCAtMzMsNyArMzMsNiBAQCBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBDYW1icmlkZ2UsIE1BIDAyMTEwLTEzMDEsIFVT
QQogCiAvLyBLRgogI2luY2x1ZGUgPEtDb2xvclNjaGVtZT4KLSNpbmNsdWRlIDxLQ29sb3JVdGls
cz4KICNpbmNsdWRlIDxLRmlsZUN1c3RvbURpYWxvZz4KICNpbmNsdWRlIDxLRmlsZVdpZGdldD4K
ICNpbmNsdWRlIDxLTG9jYWxpemVkU3RyaW5nPgpAQCAtNDEsNyArNDAsNyBAQCBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBDYW1icmlkZ2UsIE1BIDAy
MTEwLTEzMDEsIFVTQQogCiAvLyBMb2NhbAogI2luY2x1ZGUgImd3ZW52aWV3X2FwcF9kZWJ1Zy5o
IgotI2luY2x1ZGUgPGxpYi9iYWNrZ3JvdW5kY29sb3J3aWRnZXQvYmFja2dyb3VuZGNvbG9yd2lk
Z2V0Lmg+CisjaW5jbHVkZSAiZGlhbG9nZ3VhcmQuaCIKICNpbmNsdWRlIDxsaWIvYmluZGVyLmg+
CiAjaW5jbHVkZSA8bGliL2RvY3VtZW50L2RvY3VtZW50ZmFjdG9yeS5oPgogI2luY2x1ZGUgPGxp
Yi9kb2N1bWVudC9kb2N1bWVudGpvYi5oPgpAQCAtMTM1LDQzICsxMzQsMTggQEAgc3RydWN0IEd2
Q29yZVByaXZhdGUgewogCiAgICAgdm9pZCBzZXR1cFBhbGV0dGVzKCkKICAgICB7CisgICAgICAg
IFFQYWxldHRlIHBhbDsKKyAgICAgICAgaW50IHZhbHVlID0gR3dlbnZpZXdDb25maWc6OnZpZXdC
YWNrZ3JvdW5kVmFsdWUoKTsKKyAgICAgICAgUUNvbG9yIGZnQ29sb3IgPSB2YWx1ZSA+IDEyOCA/
IFF0OjpibGFjayA6IFF0Ojp3aGl0ZTsKKwogICAgICAgICAvLyBOb3JtYWwKICAgICAgICAgS1No
YXJlZENvbmZpZ1B0ciBjb25maWcgPSBLU2hhcmVkQ29uZmlnOjpvcGVuQ29uZmlnKCk7CiAgICAg
ICAgIG1QYWxldHRlc1tHdkNvcmU6Ok5vcm1hbFBhbGV0dGVdID0gS0NvbG9yU2NoZW1lOjpjcmVh
dGVBcHBsaWNhdGlvblBhbGV0dGUoY29uZmlnKTsKLSAgICAgICAgUVBhbGV0dGUgdmlld1BhbGV0
dGUgPSBtUGFsZXR0ZXNbR3ZDb3JlOjpOb3JtYWxQYWxldHRlXTsKIAotICAgICAgICBCYWNrZ3Jv
dW5kQ29sb3JXaWRnZXQ6OkNvbG9yTW9kZSBjb2xvck1vZGUgPSBHd2Vudmlld0NvbmZpZzo6YmFj
a2dyb3VuZENvbG9yTW9kZSgpOwotICAgICAgICBib29sIHVzaW5nTGlnaHRUaGVtZSA9IEJhY2tn
cm91bmRDb2xvcldpZGdldDo6dXNpbmdMaWdodFRoZW1lKCk7Ci0KLSAgICAgICAgaWYgKCh1c2lu
Z0xpZ2h0VGhlbWUgJiYgY29sb3JNb2RlID09IEJhY2tncm91bmRDb2xvcldpZGdldDo6RGFyaykg
fHwgKCF1c2luZ0xpZ2h0VGhlbWUgJiYgY29sb3JNb2RlID09IEJhY2tncm91bmRDb2xvcldpZGdl
dDo6TGlnaHQpKSB7Ci0gICAgICAgICAgICB2aWV3UGFsZXR0ZS5zZXRDb2xvcihRUGFsZXR0ZTo6
QmFzZSwgbVBhbGV0dGVzW0d2Q29yZTo6Tm9ybWFsUGFsZXR0ZV0uY29sb3IoUVBhbGV0dGU6OlRl
eHQpKTsKLSAgICAgICAgICAgIHZpZXdQYWxldHRlLnNldENvbG9yKFFQYWxldHRlOjpUZXh0LCBt
UGFsZXR0ZXNbR3ZDb3JlOjpOb3JtYWxQYWxldHRlXS5jb2xvcihRUGFsZXR0ZTo6QmFzZSkpOwot
ICAgICAgICAgICAgdmlld1BhbGV0dGUuc2V0Q29sb3IoUVBhbGV0dGU6OldpbmRvdywgbVBhbGV0
dGVzW0d2Q29yZTo6Tm9ybWFsUGFsZXR0ZV0uY29sb3IoUVBhbGV0dGU6OldpbmRvd1RleHQpKTsK
LSAgICAgICAgICAgIHZpZXdQYWxldHRlLnNldENvbG9yKFFQYWxldHRlOjpXaW5kb3dUZXh0LCBt
UGFsZXR0ZXNbR3ZDb3JlOjpOb3JtYWxQYWxldHRlXS5jb2xvcihRUGFsZXR0ZTo6V2luZG93KSk7
Ci0gICAgICAgICAgICB2aWV3UGFsZXR0ZS5zZXRDb2xvcihRUGFsZXR0ZTo6QnV0dG9uLCBtUGFs
ZXR0ZXNbR3ZDb3JlOjpOb3JtYWxQYWxldHRlXS5jb2xvcihRUGFsZXR0ZTo6QnV0dG9uVGV4dCkp
OwotICAgICAgICAgICAgdmlld1BhbGV0dGUuc2V0Q29sb3IoUVBhbGV0dGU6OkJ1dHRvblRleHQs
IG1QYWxldHRlc1tHdkNvcmU6Ok5vcm1hbFBhbGV0dGVdLmNvbG9yKFFQYWxldHRlOjpCdXR0b24p
KTsKLSAgICAgICAgICAgIHZpZXdQYWxldHRlLnNldENvbG9yKFFQYWxldHRlOjpUb29sVGlwQmFz
ZSwgbVBhbGV0dGVzW0d2Q29yZTo6Tm9ybWFsUGFsZXR0ZV0uY29sb3IoUVBhbGV0dGU6OlRvb2xU
aXBUZXh0KSk7Ci0gICAgICAgICAgICB2aWV3UGFsZXR0ZS5zZXRDb2xvcihRUGFsZXR0ZTo6VG9v
bFRpcFRleHQsIG1QYWxldHRlc1tHdkNvcmU6Ok5vcm1hbFBhbGV0dGVdLmNvbG9yKFFQYWxldHRl
OjpUb29sVGlwQmFzZSkpOwotICAgICAgICB9IGVsc2UgaWYgKGNvbG9yTW9kZSA9PSBCYWNrZ3Jv
dW5kQ29sb3JXaWRnZXQ6Ok5ldXRyYWwpIHsKLSAgICAgICAgICAgIFFDb2xvciBiYXNlID0gS0Nv
bG9yVXRpbHM6Om1peChtUGFsZXR0ZXNbR3ZDb3JlOjpOb3JtYWxQYWxldHRlXS5jb2xvcihRUGFs
ZXR0ZTo6QmFzZSksIG1QYWxldHRlc1tHdkNvcmU6Ok5vcm1hbFBhbGV0dGVdLmNvbG9yKFFQYWxl
dHRlOjpUZXh0KSwgMC41KTsKLSAgICAgICAgICAgIFFDb2xvciB3aW5kb3cgPQotICAgICAgICAg
ICAgICAgIEtDb2xvclV0aWxzOjptaXgobVBhbGV0dGVzW0d2Q29yZTo6Tm9ybWFsUGFsZXR0ZV0u
Y29sb3IoUVBhbGV0dGU6OldpbmRvdyksIG1QYWxldHRlc1tHdkNvcmU6Ok5vcm1hbFBhbGV0dGVd
LmNvbG9yKFFQYWxldHRlOjpXaW5kb3dUZXh0KSwgMC41KTsKLSAgICAgICAgICAgIFFDb2xvciBi
dXR0b24gPQotICAgICAgICAgICAgICAgIEtDb2xvclV0aWxzOjptaXgobVBhbGV0dGVzW0d2Q29y
ZTo6Tm9ybWFsUGFsZXR0ZV0uY29sb3IoUVBhbGV0dGU6OkJ1dHRvbiksIG1QYWxldHRlc1tHdkNv
cmU6Ok5vcm1hbFBhbGV0dGVdLmNvbG9yKFFQYWxldHRlOjpCdXR0b25UZXh0KSwgMC41KTsKLSAg
ICAgICAgICAgIFFDb2xvciB0b29sVGlwQmFzZSA9IEtDb2xvclV0aWxzOjptaXgobVBhbGV0dGVz
W0d2Q29yZTo6Tm9ybWFsUGFsZXR0ZV0uY29sb3IoUVBhbGV0dGU6OlRvb2xUaXBCYXNlKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVBhbGV0dGVz
W0d2Q29yZTo6Tm9ybWFsUGFsZXR0ZV0uY29sb3IoUVBhbGV0dGU6OlRvb2xUaXBUZXh0KSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41KTsKLSAg
ICAgICAgICAgIHZpZXdQYWxldHRlLnNldENvbG9yKFFQYWxldHRlOjpCYXNlLCBiYXNlKTsKLSAg
ICAgICAgICAgIHZpZXdQYWxldHRlLnNldENvbG9yKFFQYWxldHRlOjpUZXh0LCBiYXNlLmxpZ2h0
bmVzc0YoKSA+IDAuNSA/IFF0OjpibGFjayA6IFF0Ojp3aGl0ZSk7Ci0gICAgICAgICAgICB2aWV3
UGFsZXR0ZS5zZXRDb2xvcihRUGFsZXR0ZTo6V2luZG93LCB3aW5kb3cpOwotICAgICAgICAgICAg
dmlld1BhbGV0dGUuc2V0Q29sb3IoUVBhbGV0dGU6OldpbmRvd1RleHQsIGJhc2UubGlnaHRuZXNz
RigpID4gMC41ID8gUXQ6OmJsYWNrIDogUXQ6OndoaXRlKTsKLSAgICAgICAgICAgIHZpZXdQYWxl
dHRlLnNldENvbG9yKFFQYWxldHRlOjpCdXR0b24sIGJ1dHRvbik7Ci0gICAgICAgICAgICB2aWV3
UGFsZXR0ZS5zZXRDb2xvcihRUGFsZXR0ZTo6QnV0dG9uVGV4dCwgYmFzZS5saWdodG5lc3NGKCkg
PiAwLjUgPyBRdDo6YmxhY2sgOiBRdDo6d2hpdGUpOwotICAgICAgICAgICAgdmlld1BhbGV0dGUu
c2V0Q29sb3IoUVBhbGV0dGU6OlRvb2xUaXBCYXNlLCB0b29sVGlwQmFzZSk7Ci0gICAgICAgICAg
ICB2aWV3UGFsZXR0ZS5zZXRDb2xvcihRUGFsZXR0ZTo6VG9vbFRpcFRleHQsIGJhc2UubGlnaHRu
ZXNzRigpID4gMC41ID8gUXQ6OmJsYWNrIDogUXQ6OndoaXRlKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIG1QYWxldHRlc1tHdkNvcmU6Ok5vcm1hbFZpZXdQYWxldHRlXSA9IHZpZXdQYWxldHRlOwor
ICAgICAgICBwYWwgPSBtUGFsZXR0ZXNbR3ZDb3JlOjpOb3JtYWxQYWxldHRlXTsKKyAgICAgICAg
cGFsLnNldENvbG9yKFFQYWxldHRlOjpCYXNlLCBRQ29sb3I6OmZyb21Ic3YoMCwgMCwgdmFsdWUp
KTsKKyAgICAgICAgcGFsLnNldENvbG9yKFFQYWxldHRlOjpUZXh0LCBmZ0NvbG9yKTsKKyAgICAg
ICAgbVBhbGV0dGVzW0d2Q29yZTo6Tm9ybWFsVmlld1BhbGV0dGVdID0gcGFsOwogCiAgICAgICAg
IC8vIEZ1bGxzY3JlZW4KICAgICAgICAgUVN0cmluZyBuYW1lID0gR3dlbnZpZXdDb25maWc6OmZ1
bGxTY3JlZW5Db2xvclNjaGVtZSgpOwpAQCAtMTk2LDE2ICsxNzAsMTYgQEAgc3RydWN0IEd2Q29y
ZVByaXZhdGUgewogICAgICAgICB9CiAKICAgICAgICAgLy8gRnVsbFNjcmVlblZpZXcgaGFzIGVp
dGhlciBhIHNvbGlkIGJsYWNrIGNvbG9yIG9yIGEgdGV4dHVyZWQgYmFja2dyb3VuZAotICAgICAg
ICB2aWV3UGFsZXR0ZSA9IG1QYWxldHRlc1tHdkNvcmU6OkZ1bGxTY3JlZW5QYWxldHRlXTsKLSAg
ICAgICAgUVBpeG1hcCBiZ1RleHR1cmUoMjU2LCAyNTYpOworICAgICAgICBwYWwgPSBtUGFsZXR0
ZXNbR3ZDb3JlOjpGdWxsU2NyZWVuUGFsZXR0ZV07CisgICAgICAgIFFQaXhtYXAgYmdUZXh0dXJl
KDI1NiwyNTYpOwogICAgICAgICBpZiAoR3dlbnZpZXc6Okd3ZW52aWV3Q29uZmlnOjpmdWxsU2Ny
ZWVuQmFja2dyb3VuZCgpID09IEd3ZW52aWV3OjpGdWxsU2NyZWVuQmFja2dyb3VuZDo6QmxhY2sp
IHsKICAgICAgICAgICAgIGJnVGV4dHVyZS5maWxsKFF0OjpibGFjayk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBRU3RhbmRhcmRQYXRoczo6bG9jYXRlKFFT
dGFuZGFyZFBhdGhzOjpBcHBEYXRhTG9jYXRpb24sIFFTdHJpbmdMaXRlcmFsKCJpbWFnZXMvYmFj
a2dyb3VuZC5wbmciKSk7CiAgICAgICAgICAgICBiZ1RleHR1cmUgPSBwYXRoOwogICAgICAgICB9
Ci0gICAgICAgIHZpZXdQYWxldHRlLnNldEJydXNoKFFQYWxldHRlOjpCYXNlLCBiZ1RleHR1cmUp
OwotICAgICAgICBtUGFsZXR0ZXNbR3ZDb3JlOjpGdWxsU2NyZWVuVmlld1BhbGV0dGVdID0gdmll
d1BhbGV0dGU7CisgICAgICAgIHBhbC5zZXRCcnVzaChRUGFsZXR0ZTo6QmFzZSwgYmdUZXh0dXJl
KTsKKyAgICAgICAgbVBhbGV0dGVzW0d2Q29yZTo6RnVsbFNjcmVlblZpZXdQYWxldHRlXSA9IHBh
bDsKICAgICB9CiAKICAgICB2b2lkIGFkanVzdERlZmF1bHRGdWxsU2NyZWVuUGFsZXR0ZSgpCmRp
ZmYgLS1naXQgYS9hcHAvZ3dlbnZpZXd1aS5yYyBiL2FwcC9nd2Vudmlld3VpLnJjCmluZGV4IGE2
M2QwNDkzLi4zOWUyYzc0MSAxMDA2NDQKLS0tIGEvYXBwL2d3ZW52aWV3dWkucmMKKysrIGIvYXBw
L2d3ZW52aWV3dWkucmMKQEAgLTMwLDExICszMCw2IEBACiAgICAgICAgIDxBY3Rpb24gbmFtZT0i
dmlld196b29tX291dCIvPgogICAgICAgICA8QWN0aW9uIG5hbWU9InZpZXdfdG9nZ2xlX2JpcmRl
eWV2aWV3Ii8+CiAgICAgICAgIDxTZXBhcmF0b3IvPgotICAgICAgICA8QWN0aW9uIG5hbWU9InZp
ZXdfYmFja2dyb3VuZF9jb2xvcm1vZGVfYXV0byIvPgotICAgICAgICA8QWN0aW9uIG5hbWU9InZp
ZXdfYmFja2dyb3VuZF9jb2xvcm1vZGVfbGlnaHQiLz4KLSAgICAgICAgPEFjdGlvbiBuYW1lPSJ2
aWV3X2JhY2tncm91bmRfY29sb3Jtb2RlX25ldXRyYWwiLz4KLSAgICAgICAgPEFjdGlvbiBuYW1l
PSJ2aWV3X2JhY2tncm91bmRfY29sb3Jtb2RlX2RhcmsiLz4KLSAgICAgICAgPFNlcGFyYXRvci8+
CiAgICAgICAgIDxBY3Rpb24gbmFtZT0ic29ydF9ieSIvPgogICAgICAgICA8QWN0aW9uIG5hbWU9
InRodW1ibmFpbF9kZXRhaWxzIi8+CiAgICAgICAgIDxTZXBhcmF0b3IvPgpkaWZmIC0tZ2l0IGEv
YXBwL3N0YXJ0bWFpbnBhZ2UuY3BwIGIvYXBwL3N0YXJ0bWFpbnBhZ2UuY3BwCmluZGV4IGNhMDZk
ZjBhLi5hNzQ4M2NjYiAxMDA2NDQKLS0tIGEvYXBwL3N0YXJ0bWFpbnBhZ2UuY3BwCisrKyBiL2Fw
cC9zdGFydG1haW5wYWdlLmNwcApAQCAtMTgzLDEwICsxODMsNiBAQCBTdGFydE1haW5QYWdlOjpT
dGFydE1haW5QYWdlKFFXaWRnZXQgKnBhcmVudCwgR3ZDb3JlICpndkNvcmUpCiAgICAgZC0+dXBk
YXRlSGlzdG9yeVRhYigpOwogICAgIGNvbm5lY3QoR3dlbnZpZXdDb25maWc6OnNlbGYoKSwgJkd3
ZW52aWV3Q29uZmlnOjpjb25maWdDaGFuZ2VkLCB0aGlzLCAmU3RhcnRNYWluUGFnZTo6bG9hZENv
bmZpZyk7CiAKLSAgICBjb25uZWN0KHFBcHAsICZRQXBwbGljYXRpb246OnBhbGV0dGVDaGFuZ2Vk
LCB0aGlzLCBbdGhpc10oKSB7Ci0gICAgICAgIGFwcGx5UGFsZXR0ZShkLT5tR3ZDb3JlLT5wYWxl
dHRlKEd2Q29yZTo6Tm9ybWFsVmlld1BhbGV0dGUpKTsKLSAgICB9KTsKLQogICAgIGQtPm1SZWNl
bnRGb2xkZXJzVmlldy0+c2V0Rm9jdXMoKTsKIAogICAgIFNjcm9sbGVyVXRpbHM6OnNldFFTY3Jv
bGxlcihkLT5tQm9va21hcmtzVmlldy0+dmlld3BvcnQoKSk7CmRpZmYgLS1naXQgYS9hcHAvdmll
d21haW5wYWdlLmNwcCBiL2FwcC92aWV3bWFpbnBhZ2UuY3BwCmluZGV4IGUzNGMxYjU3Li41NWNk
YThlMCAxMDA2NDQKLS0tIGEvYXBwL3ZpZXdtYWlucGFnZS5jcHAKKysrIGIvYXBwL3ZpZXdtYWlu
cGFnZS5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSwgVVNBLgogI2luY2x1
ZGUgImd3ZW52aWV3X2FwcF9kZWJ1Zy5oIgogI2luY2x1ZGUgInNwbGl0dGVyLmgiCiAjaW5jbHVk
ZSA8Z3Zjb3JlLmg+Ci0jaW5jbHVkZSA8bGliL2JhY2tncm91bmRjb2xvcndpZGdldC9iYWNrZ3Jv
dW5kY29sb3J3aWRnZXQuaD4KICNpbmNsdWRlIDxsaWIvZG9jdW1lbnR2aWV3L2Fic3RyYWN0ZG9j
dW1lbnR2aWV3YWRhcHRlci5oPgogI2luY2x1ZGUgPGxpYi9kb2N1bWVudHZpZXcvYWJzdHJhY3Ry
YXN0ZXJpbWFnZXZpZXd0b29sLmg+CiAjaW5jbHVkZSA8bGliL2RvY3VtZW50dmlldy9kb2N1bWVu
dHZpZXcuaD4KQEAgLTEyMCw3ICsxMTksNiBAQCBzdHJ1Y3QgVmlld01haW5QYWdlUHJpdmF0ZSB7
CiAgICAgRG9jdW1lbnRWaWV3U3luY2hyb25pemVyICptU3luY2hyb25pemVyOwogICAgIFFUb29s
QnV0dG9uICptVG9nZ2xlU2lkZUJhckJ1dHRvbjsKICAgICBRVG9vbEJ1dHRvbiAqbVRvZ2dsZVRo
dW1ibmFpbEJhckJ1dHRvbjsKLSAgICBCYWNrZ3JvdW5kQ29sb3JXaWRnZXQgKm1CYWNrZ3JvdW5k
Q29sb3JXaWRnZXQ7CiAgICAgWm9vbVdpZGdldCAqbVpvb21XaWRnZXQ7CiAgICAgRG9jdW1lbnRW
aWV3Q29udGFpbmVyICptRG9jdW1lbnRWaWV3Q29udGFpbmVyOwogICAgIFNsaWRlQ29udGFpbmVy
ICptVG9vbENvbnRhaW5lcjsKQEAgLTE1MSw3ICsxNDksNiBAQCBzdHJ1Y3QgVmlld01haW5QYWdl
UHJpdmF0ZSB7CiAgICAgICAgIG1TdGF0dXNCYXJDb250YWluZXItPnNldFNpemVQb2xpY3koUVNp
emVQb2xpY3k6OkV4cGFuZGluZywgUVNpemVQb2xpY3k6OkZpeGVkKTsKICAgICAgICAgbVRvZ2ds
ZVNpZGVCYXJCdXR0b24gPSBuZXcgU3RhdHVzQmFyVG9vbEJ1dHRvbjsKICAgICAgICAgbVRvZ2ds
ZVRodW1ibmFpbEJhckJ1dHRvbiA9IG5ldyBTdGF0dXNCYXJUb29sQnV0dG9uOwotICAgICAgICBt
QmFja2dyb3VuZENvbG9yV2lkZ2V0ID0gbmV3IEJhY2tncm91bmRDb2xvcldpZGdldDsKICAgICAg
ICAgbVpvb21XaWRnZXQgPSBuZXcgWm9vbVdpZGdldDsKICAgICAgICAgbVN5bmNocm9uaXplQ2hl
Y2tCb3ggPSBuZXcgUUNoZWNrQm94KGkxOG4oIlN5bmNocm9uaXplIikpOwogICAgICAgICBtU3lu
Y2hyb25pemVDaGVja0JveC0+aGlkZSgpOwpAQCAtMTc2LDcgKzE3Myw2IEBAIHN0cnVjdCBWaWV3
TWFpblBhZ2VQcml2YXRlIHsKICAgICAgICAgLy8gc28gaXRzIGF1dG9oaWRlIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgKHN0cmV0Y2ggZmFjdG9yID0gMSkKICAgICAgICAgc3RhdHVzQmFyQ29udGFp
bmVyTGF5b3V0LT5hZGRXaWRnZXQobURvY3VtZW50Q291bnRMYWJlbCwgMSk7CiAgICAgICAgIHN0
YXR1c0JhckNvbnRhaW5lckxheW91dC0+YWRkU3RyZXRjaCgpOwotICAgICAgICBzdGF0dXNCYXJD
b250YWluZXJMYXlvdXQtPmFkZFdpZGdldChtQmFja2dyb3VuZENvbG9yV2lkZ2V0KTsKICAgICAg
ICAgc3RhdHVzQmFyQ29udGFpbmVyTGF5b3V0LT5hZGRXaWRnZXQobVpvb21XaWRnZXQpOwogICAg
ICAgICAvLy0tCiAgICAgICAgIG1BZGFwdGVyQ29udGFpbmVyID0gbmV3IFFXaWRnZXQ7CkBAIC0y
MTUsNyArMjExLDYgQEAgc3RydWN0IFZpZXdNYWluUGFnZVByaXZhdGUgewogICAgICAgICB2aWV3
TWFpblBhZ2VMYXlvdXQtPmFkZFdpZGdldChtU3RhdHVzQmFyQ29udGFpbmVyKTsKICAgICAgICAg
Ly8tLQogICAgICAgICBtRG9jdW1lbnRWaWV3Q29udHJvbGxlciA9IG5ldyBEb2N1bWVudFZpZXdD
b250cm9sbGVyKG1BY3Rpb25Db2xsZWN0aW9uLCBxKTsKLSAgICAgICAgbURvY3VtZW50Vmlld0Nv
bnRyb2xsZXItPnNldEJhY2tncm91bmRDb2xvcldpZGdldChtQmFja2dyb3VuZENvbG9yV2lkZ2V0
KTsKICAgICAgICAgbURvY3VtZW50Vmlld0NvbnRyb2xsZXItPnNldFpvb21XaWRnZXQobVpvb21X
aWRnZXQpOwogICAgICAgICBtRG9jdW1lbnRWaWV3Q29udHJvbGxlci0+c2V0VG9vbENvbnRhaW5l
cihtVG9vbENvbnRhaW5lcik7CiAgICAgICAgIG1TeW5jaHJvbml6ZXIgPSBuZXcgRG9jdW1lbnRW
aWV3U3luY2hyb25pemVyKCZtRG9jdW1lbnRWaWV3cywgcSk7CkBAIC00NDAsMTAgKzQzNSw2IEBA
IFZpZXdNYWluUGFnZTo6Vmlld01haW5QYWdlKFFXaWRnZXQgKnBhcmVudCwgU2xpZGVTaG93ICpz
bGlkZVNob3csIEtBY3Rpb25Db2xsZWN0CiAgICAgY29ubmVjdChkLT5tVGh1bWJuYWlsQmFyLCAm
VGh1bWJuYWlsQmFyVmlldzo6cm93c0luc2VydGVkU2lnbmFsLCB0aGlzLCAmVmlld01haW5QYWdl
OjpzbG90RGlyTW9kZWxJdGVtc0FkZGVkT3JSZW1vdmVkKTsKICAgICBjb25uZWN0KGQtPm1UaHVt
Ym5haWxCYXIsICZUaHVtYm5haWxCYXJWaWV3Ojpyb3dzUmVtb3ZlZFNpZ25hbCwgdGhpcywgJlZp
ZXdNYWluUGFnZTo6c2xvdERpck1vZGVsSXRlbXNBZGRlZE9yUmVtb3ZlZCk7CiAKLSAgICBjb25u
ZWN0KHFBcHAsICZRQXBwbGljYXRpb246OnBhbGV0dGVDaGFuZ2VkLCB0aGlzLCBbdGhpc10oKSB7
Ci0gICAgICAgIGQtPmFwcGx5UGFsZXR0ZSh3aW5kb3coKS0+aXNGdWxsU2NyZWVuKCkpOwotICAg
IH0pOwotCiAgICAgaW5zdGFsbEV2ZW50RmlsdGVyKHRoaXMpOwogfQogCkBAIC01NTEsMTQgKzU0
Miw2IEBAIHZvaWQgVmlld01haW5QYWdlOjpzaG93Q29udGV4dE1lbnUoKQogICAgICAgICBhZGRB
Y3Rpb25Ub01lbnUoJm1lbnUsIGQtPm1BY3Rpb25Db2xsZWN0aW9uLCAidmlld196b29tX291dCIp
OwogICAgICAgICBhZGRBY3Rpb25Ub01lbnUoJm1lbnUsIGQtPm1BY3Rpb25Db2xsZWN0aW9uLCAi
dmlld190b2dnbGVfYmlyZGV5ZXZpZXciKTsKICAgICB9Ci0gICAgbWVudS5hZGRTZXBhcmF0b3Io
KTsKLSAgICBRTWVudSBiYWNrZ3JvdW5kQ29sb3JNb2RlTWVudShpMThuYygiQGl0ZW06aW5tZW51
IiwgIkJhY2tncm91bmQgQ29sb3IgTW9kZSIpLCB0aGlzKTsKLSAgICBhZGRBY3Rpb25Ub01lbnUo
JmJhY2tncm91bmRDb2xvck1vZGVNZW51LCBkLT5tQWN0aW9uQ29sbGVjdGlvbiwgInZpZXdfYmFj
a2dyb3VuZF9jb2xvcm1vZGVfYXV0byIpOwotICAgIGFkZEFjdGlvblRvTWVudSgmYmFja2dyb3Vu
ZENvbG9yTW9kZU1lbnUsIGQtPm1BY3Rpb25Db2xsZWN0aW9uLCAidmlld19iYWNrZ3JvdW5kX2Nv
bG9ybW9kZV9saWdodCIpOwotICAgIGFkZEFjdGlvblRvTWVudSgmYmFja2dyb3VuZENvbG9yTW9k
ZU1lbnUsIGQtPm1BY3Rpb25Db2xsZWN0aW9uLCAidmlld19iYWNrZ3JvdW5kX2NvbG9ybW9kZV9u
ZXV0cmFsIik7Ci0gICAgYWRkQWN0aW9uVG9NZW51KCZiYWNrZ3JvdW5kQ29sb3JNb2RlTWVudSwg
ZC0+bUFjdGlvbkNvbGxlY3Rpb24sICJ2aWV3X2JhY2tncm91bmRfY29sb3Jtb2RlX2RhcmsiKTsK
LSAgICBiYWNrZ3JvdW5kQ29sb3JNb2RlTWVudS5zZXRJY29uKGJhY2tncm91bmRDb2xvck1vZGVN
ZW51LmFjdGlvbnMoKS5hdCgwKS0+aWNvbigpKTsKLSAgICBtZW51LmFkZE1lbnUoJmJhY2tncm91
bmRDb2xvck1vZGVNZW51KTsKICAgICBpZiAoZC0+bUNvbXBhcmVNb2RlKSB7CiAgICAgICAgIG1l
bnUuYWRkU2VwYXJhdG9yKCk7CiAgICAgICAgIGFkZEFjdGlvblRvTWVudSgmbWVudSwgZC0+bUFj
dGlvbkNvbGxlY3Rpb24sICJzeW5jaHJvbml6ZV92aWV3cyIpOwpAQCAtNTcyLDcgKzU1NSw3IEBA
IHZvaWQgVmlld01haW5QYWdlOjpzaG93Q29udGV4dE1lbnUoKQogICAgIG1lbnUuYWRkU2VwYXJh
dG9yKCk7CiAgICAgYWRkQWN0aW9uVG9NZW51KCZtZW51LCBkLT5tQWN0aW9uQ29sbGVjdGlvbiwg
ImZpbGVfb3Blbl93aXRoIik7CiAgICAgYWRkQWN0aW9uVG9NZW51KCZtZW51LCBkLT5tQWN0aW9u
Q29sbGVjdGlvbiwgImZpbGVfb3Blbl9jb250YWluaW5nX2ZvbGRlciIpOwotCisgICAgCiAgICAg
bWVudS5leGVjKFFDdXJzb3I6OnBvcygpKTsKIH0KIApAQCAtNzg0LDYgKzc2Nyw3IEBAIHZvaWQg
Vmlld01haW5QYWdlOjpzbG90RW50ZXJQcmVzc2VkKCkKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KKyAgICBlbWl0IGdvVG9Ccm93c2VNb2RlUmVxdWVzdGVkKCk7CiB9CiAKIGJvb2wg
Vmlld01haW5QYWdlOjpldmVudEZpbHRlcihRT2JqZWN0ICp3YXRjaGVkLCBRRXZlbnQgKmV2ZW50
KQpkaWZmIC0tZ2l0IGEvaW1wb3J0ZXIvdGh1bWJuYWlscGFnZS5jcHAgYi9pbXBvcnRlci90aHVt
Ym5haWxwYWdlLmNwcAppbmRleCBiMmQ3OTQ4NS4uOTk0NjgyYTAgMTAwNjQ0Ci0tLSBhL2ltcG9y
dGVyL3RodW1ibmFpbHBhZ2UuY3BwCisrKyBiL2ltcG9ydGVyL3RodW1ibmFpbHBhZ2UuY3BwCkBA
IC0xNjYsOCArMTY2LDIwIEBAIHN0cnVjdCBUaHVtYm5haWxQYWdlUHJpdmF0ZSA6IHB1YmxpYyBV
aV9UaHVtYm5haWxQYWdlIHsKICAgICAgICAgZGVsZWdhdGUtPnNldENvbnRleHRCYXJBY3Rpb25z
KGFjdGlvbnMpOwogICAgICAgICBtVGh1bWJuYWlsVmlldy0+c2V0SXRlbURlbGVnYXRlKGRlbGVn
YXRlKTsKIAorICAgICAgICAvLyBDb2xvcnMKKyAgICAgICAgaW50IHZhbHVlID0gR3dlbnZpZXdD
b25maWc6OnZpZXdCYWNrZ3JvdW5kVmFsdWUoKTsKKyAgICAgICAgUUNvbG9yIGJnQ29sb3IgPSBR
Q29sb3I6OmZyb21Ic3YoMCwgMCwgdmFsdWUpOworICAgICAgICBRQ29sb3IgZmdDb2xvciA9IHZh
bHVlID4gMTI4ID8gUXQ6OmJsYWNrIDogUXQ6OndoaXRlOworCisgICAgICAgIFFQYWxldHRlIHBh
bCA9IG1UaHVtYm5haWxWaWV3LT5wYWxldHRlKCk7CisgICAgICAgIHBhbC5zZXRDb2xvcihRUGFs
ZXR0ZTo6QmFzZSwgYmdDb2xvcik7CisgICAgICAgIHBhbC5zZXRDb2xvcihRUGFsZXR0ZTo6VGV4
dCwgZmdDb2xvcik7CisKKyAgICAgICAgbVRodW1ibmFpbFZpZXctPnNldFBhbGV0dGUocGFsKTsK
KwogICAgICAgICBRT2JqZWN0Ojpjb25uZWN0KG1TbGlkZXIsICZab29tU2xpZGVyOjp2YWx1ZUNo
YW5nZWQsIG1UaHVtYm5haWxWaWV3LCAmVGh1bWJuYWlsVmlldzo6c2V0VGh1bWJuYWlsV2lkdGgp
OwogICAgICAgICBRT2JqZWN0Ojpjb25uZWN0KG1UaHVtYm5haWxWaWV3LCAmVGh1bWJuYWlsVmll
dzo6dGh1bWJuYWlsV2lkdGhDaGFuZ2VkLCBtU2xpZGVyLCAmWm9vbVNsaWRlcjo6c2V0VmFsdWUp
OworCiAgICAgICAgIGludCB0aHVtYm5haWxTaXplID0gREVGQVVMVF9USFVNQk5BSUxfU0laRTsK
ICAgICAgICAgbVNsaWRlci0+c2V0VmFsdWUodGh1bWJuYWlsU2l6ZSk7CiAgICAgICAgIG1TbGlk
ZXItPnVwZGF0ZVRvb2xUaXAoKTsKZGlmZiAtLWdpdCBhL2xpYi9DTWFrZUxpc3RzLnR4dCBiL2xp
Yi9DTWFrZUxpc3RzLnR4dAppbmRleCA3N2RhYzgxOS4uZTE0NDNmOTQgMTAwNjQ0Ci0tLSBhL2xp
Yi9DTWFrZUxpc3RzLnR4dAorKysgYi9saWIvQ01ha2VMaXN0cy50eHQKQEAgLTQxLDcgKzQxLDYg
QEAgaW5jbHVkZV9kaXJlY3RvcmllcygKICAgICApCiAKIHNldChnd2Vudmlld2xpYl9TUkNTCi0g
ICAgYmFja2dyb3VuZGNvbG9yd2lkZ2V0L2JhY2tncm91bmRjb2xvcndpZGdldC5jcHAKICAgICBj
bXMvaWNjanBlZy5jCiAgICAgY21zL2Ntc3Byb2ZpbGUuY3BwCiAgICAgY21zL2Ntc3Byb2ZpbGVf
cG5nLmNwcApAQCAtMTQxLDcgKzE0MCw2IEBAIHNldChnd2Vudmlld2xpYl9TUkNTCiAgICAgdHJh
bnNmb3JtaW1hZ2VvcGVyYXRpb24uY3BwCiAgICAgdXJsdXRpbHMuY3BwCiAgICAgd2lkZ2V0Zmxv
YXRlci5jcHAKLSAgICB6b29tY29tYm9ib3gvem9vbWNvbWJvYm94LmNwcAogICAgIHpvb21zbGlk
ZXIuY3BwCiAgICAgem9vbXdpZGdldC5jcHAKICAgICBzY3JvbGxlcnV0aWxzLmNwcApkaWZmIC0t
Z2l0IGEvbGliL2JhY2tncm91bmRjb2xvcndpZGdldC9iYWNrZ3JvdW5kY29sb3J3aWRnZXQuY3Bw
IGIvbGliL2JhY2tncm91bmRjb2xvcndpZGdldC9iYWNrZ3JvdW5kY29sb3J3aWRnZXQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2M1Yzg2OS4uMDAwMDAwMDAKLS0tIGEvbGli
L2JhY2tncm91bmRjb2xvcndpZGdldC9iYWNrZ3JvdW5kY29sb3J3aWRnZXQuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjgzICswLDAgQEAKLS8qIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMjEg
Tm9haCBEYXZpcyA8bm9haGFkdnNAZ21haWwuY29tPgotICogU1BEWC1MaWNlbnNlLUlkZW50aWZp
ZXI6IExHUEwtMi4xLW9yLWxhdGVyCi0gKi8KLQotI2luY2x1ZGUgImJhY2tncm91bmRjb2xvcndp
ZGdldC5oIgotCi0jaW5jbHVkZSA8bGliL2d3ZW52aWV3Y29uZmlnLmg+Ci0jaW5jbHVkZSA8bGli
L3N0YXR1c2JhcnRvb2xidXR0b24uaD4KLQotI2luY2x1ZGUgPEtDb2xvclV0aWxzPgotI2luY2x1
ZGUgPEtMb2NhbGl6ZWRTdHJpbmc+Ci0jaW5jbHVkZSA8S1NxdWVlemVkVGV4dExhYmVsPgotCi0j
aW5jbHVkZSA8UUFjdGlvbj4KLSNpbmNsdWRlIDxRQXBwbGljYXRpb24+Ci0jaW5jbHVkZSA8UUJ1
dHRvbkdyb3VwPgotI2luY2x1ZGUgPFFIQm94TGF5b3V0PgotI2luY2x1ZGUgPFFQYWludGVyPgot
I2luY2x1ZGUgPFFTdHlsZT4KLSNpbmNsdWRlIDxRU3R5bGVPcHRpb25Ub29sQnV0dG9uPgotCi11
c2luZyBuYW1lc3BhY2UgR3dlbnZpZXc7Ci0KLWNsYXNzIEd3ZW52aWV3OjpCYWNrZ3JvdW5kQ29s
b3JXaWRnZXRQcml2YXRlCi17Ci0gICAgUV9ERUNMQVJFX1BVQkxJQyhCYWNrZ3JvdW5kQ29sb3JX
aWRnZXQpCi1wdWJsaWM6Ci0gICAgQmFja2dyb3VuZENvbG9yV2lkZ2V0UHJpdmF0ZShCYWNrZ3Jv
dW5kQ29sb3JXaWRnZXQgKnEpOwotICAgIEJhY2tncm91bmRDb2xvcldpZGdldCAqY29uc3QgcV9w
dHI7Ci0KLSAgICB2b2lkIGluaXRDaGlsZFdpZGdldHMoKTsKLSAgICB2b2lkIGluaXRQaXhtYXBz
KCk7Ci0gICAgdm9pZCBwYWludFBpeG1hcChRUGl4bWFwICZwaXhtYXAsIGNvbnN0IFFDb2xvciAm
Y29sb3IpOwotICAgIHZvaWQgcGFpbnRBdXRvUGl4bWFwKFFQaXhtYXAgJnBpeG1hcCwgY29uc3Qg
UUNvbG9yICZsaWdodENvbG9yLCBjb25zdCBRQ29sb3IgJmRhcmtDb2xvcik7Ci0gICAgdm9pZCBz
ZXRJY29ucyhjb25zdCBRSWNvbiAmYXV0b0ljb24sIGNvbnN0IFFJY29uICZsaWdodEljb24sIGNv
bnN0IFFJY29uICZuZXV0cmFsSWNvbiwgY29uc3QgUUljb24gJmRhcmtJY29uKTsKLQotICAgIEJh
Y2tncm91bmRDb2xvcldpZGdldDo6Q29sb3JNb2RlIGNvbG9yTW9kZTsKLSAgICBib29sIG1pcnJv
cmVkOwotICAgIGJvb2wgdXNpbmdMaWdodFRoZW1lOwotCi0gICAgUUhCb3hMYXlvdXQgKmhCb3hM
YXlvdXQgPSBudWxscHRyOwotICAgIEtTcXVlZXplZFRleHRMYWJlbCAqbGFiZWwgPSBudWxscHRy
OwotICAgIFFCdXR0b25Hcm91cCAqYnV0dG9uR3JvdXAgPSBudWxscHRyOwotICAgIFN0YXR1c0Jh
clRvb2xCdXR0b24gKmF1dG9CdXR0b24gPSBudWxscHRyOwotICAgIFN0YXR1c0JhclRvb2xCdXR0
b24gKmxpZ2h0QnV0dG9uID0gbnVsbHB0cjsKLSAgICBTdGF0dXNCYXJUb29sQnV0dG9uICpuZXV0
cmFsQnV0dG9uID0gbnVsbHB0cjsKLSAgICBTdGF0dXNCYXJUb29sQnV0dG9uICpkYXJrQnV0dG9u
ID0gbnVsbHB0cjsKLQotICAgIFFBY3Rpb24gKmF1dG9Nb2RlID0gbnVsbHB0cjsKLSAgICBRQWN0
aW9uICpsaWdodE1vZGUgPSBudWxscHRyOwotICAgIFFBY3Rpb24gKm5ldXRyYWxNb2RlID0gbnVs
bHB0cjsKLSAgICBRQWN0aW9uICpkYXJrTW9kZSA9IG51bGxwdHI7Ci19OwotCi1CYWNrZ3JvdW5k
Q29sb3JXaWRnZXRQcml2YXRlOjpCYWNrZ3JvdW5kQ29sb3JXaWRnZXRQcml2YXRlKEJhY2tncm91
bmRDb2xvcldpZGdldCAqcSkKLSAgICA6IHFfcHRyKHEpCi0gICAgLCBjb2xvck1vZGUoR3dlbnZp
ZXdDb25maWc6OmJhY2tncm91bmRDb2xvck1vZGUoKSkKLSAgICAsIG1pcnJvcmVkKHFBcHAtPmlz
UmlnaHRUb0xlZnQoKSkKLSAgICAsIHVzaW5nTGlnaHRUaGVtZShxLT51c2luZ0xpZ2h0VGhlbWUo
KSkKLSAgICAsIGhCb3hMYXlvdXQobmV3IFFIQm94TGF5b3V0KHEpKQotICAgICwgbGFiZWwobmV3
IEtTcXVlZXplZFRleHRMYWJlbChxKSkKLSAgICAsIGJ1dHRvbkdyb3VwKG5ldyBRQnV0dG9uR3Jv
dXAocSkpCi0gICAgLCBhdXRvQnV0dG9uKG5ldyBTdGF0dXNCYXJUb29sQnV0dG9uKHEpKQotICAg
ICwgbGlnaHRCdXR0b24obmV3IFN0YXR1c0JhclRvb2xCdXR0b24ocSkpCi0gICAgLCBuZXV0cmFs
QnV0dG9uKG5ldyBTdGF0dXNCYXJUb29sQnV0dG9uKHEpKQotICAgICwgZGFya0J1dHRvbihuZXcg
U3RhdHVzQmFyVG9vbEJ1dHRvbihxKSkKLXsKLSAgICBpbml0Q2hpbGRXaWRnZXRzKCk7Ci19Owot
Ci12b2lkIEJhY2tncm91bmRDb2xvcldpZGdldFByaXZhdGU6OmluaXRDaGlsZFdpZGdldHMoKQot
ewotICAgIFFfUShCYWNrZ3JvdW5kQ29sb3JXaWRnZXQpOwotICAgIGhCb3hMYXlvdXQtPnNldENv
bnRlbnRzTWFyZ2lucygwLCAwLCAwLCAwKTsKLSAgICBoQm94TGF5b3V0LT5zZXRTcGFjaW5nKDAp
OwotCi0gICAgbGFiZWwtPnNldFRleHQoaTE4bmMoIkBsYWJlbDpjaG9vc2VyIERlc2NyaWJlcyB3
aGF0IGEgcm93IG9mIGJ1dHRvbnMgY29udHJvbCIsICJCYWNrZ3JvdW5kIGNvbG9yOiIpKTsKLSAg
ICAvLyA0IGlzIHRoZSBzYW1lIGFzIHRoZSBoYXJkY29kZWQgc3BhY2luZyBiZXR3ZWVuIGljb25z
IGFuZCBsYWJlbHMgZGVmaW5lZCBpbgotICAgIC8vIFFUb29sQnV0dG9uOjpzaXplSGludCgpIHdo
ZW4gdG9vbEJ1dHRvblN0eWxlID09IFRvb2xCdXR0b25UZXh0QmVzaWRlSWNvbi4KLSAgICBsYWJl
bC0+c2V0Q29udGVudHNNYXJnaW5zKDQsIDAsIDQsIDApOwotICAgIGxhYmVsLT5zZXRBbGlnbm1l
bnQoUXQ6OkFsaWduUmlnaHQgfCBRdDo6QWxpZ25WQ2VudGVyKTsKLSAgICBsYWJlbC0+c2V0VGV4
dEVsaWRlTW9kZShRdDo6RWxpZGVSaWdodCk7Ci0gICAgaEJveExheW91dC0+YWRkV2lkZ2V0KGxh
YmVsKTsKLQotICAgIGJ1dHRvbkdyb3VwLT5zZXRFeGNsdXNpdmUodHJ1ZSk7Ci0KLSAgICBmb3Ig
KGF1dG8gYnV0dG9uIDoge2F1dG9CdXR0b24sIGxpZ2h0QnV0dG9uLCBuZXV0cmFsQnV0dG9uLCBk
YXJrQnV0dG9ufSkgewotICAgICAgICBidXR0b24tPnNldFRvb2xCdXR0b25TdHlsZShRdDo6VG9v
bEJ1dHRvbkljb25Pbmx5KTsKLSAgICAgICAgYnV0dG9uLT5zZXRDaGVja2FibGUodHJ1ZSk7Ci0g
ICAgICAgIGJ1dHRvbkdyb3VwLT5hZGRCdXR0b24oYnV0dG9uKTsKLSAgICAgICAgaEJveExheW91
dC0+YWRkV2lkZ2V0KGJ1dHRvbik7Ci0gICAgfQotCi0gICAgYXV0b0J1dHRvbi0+c2V0R3JvdXBQ
b3NpdGlvbihtaXJyb3JlZCA/IFN0YXR1c0JhclRvb2xCdXR0b246Okdyb3VwUmlnaHQgOiBTdGF0
dXNCYXJUb29sQnV0dG9uOjpHcm91cExlZnQpOwotICAgIGF1dG9CdXR0b24tPnNldENoZWNrZWQo
Y29sb3JNb2RlID09IEJhY2tncm91bmRDb2xvcldpZGdldDo6QXV0byk7Ci0KLSAgICBsaWdodEJ1
dHRvbi0+c2V0R3JvdXBQb3NpdGlvbihTdGF0dXNCYXJUb29sQnV0dG9uOjpHcm91cENlbnRlcik7
Ci0gICAgbGlnaHRCdXR0b24tPnNldENoZWNrZWQoY29sb3JNb2RlID09IEJhY2tncm91bmRDb2xv
cldpZGdldDo6TGlnaHQpOwotCi0gICAgbmV1dHJhbEJ1dHRvbi0+c2V0R3JvdXBQb3NpdGlvbihT
dGF0dXNCYXJUb29sQnV0dG9uOjpHcm91cENlbnRlcik7Ci0gICAgbmV1dHJhbEJ1dHRvbi0+c2V0
Q2hlY2tlZChjb2xvck1vZGUgPT0gQmFja2dyb3VuZENvbG9yV2lkZ2V0OjpOZXV0cmFsKTsKLQot
ICAgIGRhcmtCdXR0b24tPnNldEdyb3VwUG9zaXRpb24obWlycm9yZWQgPyBTdGF0dXNCYXJUb29s
QnV0dG9uOjpHcm91cExlZnQgOiBTdGF0dXNCYXJUb29sQnV0dG9uOjpHcm91cFJpZ2h0KTsKLSAg
ICBkYXJrQnV0dG9uLT5zZXRDaGVja2VkKGNvbG9yTW9kZSA9PSBCYWNrZ3JvdW5kQ29sb3JXaWRn
ZXQ6OkRhcmspOwotCi0gICAgaW5pdFBpeG1hcHMoKTsKLX0KLQotdm9pZCBCYWNrZ3JvdW5kQ29s
b3JXaWRnZXRQcml2YXRlOjppbml0UGl4bWFwcygpCi17Ci0gICAgUVBpeG1hcCBsaWdodFBpeG1h
cChsaWdodEJ1dHRvbi0+aWNvblNpemUoKSAqIHFBcHAtPmRldmljZVBpeGVsUmF0aW8oKSk7Ci0g
ICAgUVBpeG1hcCBuZXV0cmFsUGl4bWFwKG5ldXRyYWxCdXR0b24tPmljb25TaXplKCkgKiBxQXBw
LT5kZXZpY2VQaXhlbFJhdGlvKCkpOwotICAgIFFQaXhtYXAgZGFya1BpeG1hcChkYXJrQnV0dG9u
LT5pY29uU2l6ZSgpICogcUFwcC0+ZGV2aWNlUGl4ZWxSYXRpbygpKTsKLSAgICBRUGl4bWFwIGF1
dG9QaXhtYXAoLyphdXRvQnV0dG9uKi8gZGFya0J1dHRvbi0+aWNvblNpemUoKSAqIHFBcHAtPmRl
dmljZVBpeGVsUmF0aW8oKSk7Ci0gICAgLy8gV2lwZSB0aGVtIGNsZWFuLiBJZiB3ZSBkb24ndCBk
byB0aGlzLCB0aGUgYmFja2dyb3VuZCB3aWxsIGhhdmUgYWxsIHNvcnRzIG9mIHdlaXJkIGFydGlm
YWN0cy4KLSAgICBsaWdodFBpeG1hcC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7Ci0gICAgbmV1dHJh
bFBpeG1hcC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7Ci0gICAgZGFya1BpeG1hcC5maWxsKFF0Ojp0
cmFuc3BhcmVudCk7Ci0gICAgYXV0b1BpeG1hcC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7Ci0KLSAg
ICBjb25zdCBRQ29sb3IgJmxpZ2h0Q29sb3IgPSB1c2luZ0xpZ2h0VGhlbWUgPyBxQXBwLT5wYWxl
dHRlKCkuYmFzZSgpLmNvbG9yKCkgOiBxQXBwLT5wYWxldHRlKCkudGV4dCgpLmNvbG9yKCk7Ci0g
ICAgY29uc3QgUUNvbG9yICZkYXJrQ29sb3IgPSB1c2luZ0xpZ2h0VGhlbWUgPyBxQXBwLT5wYWxl
dHRlKCkudGV4dCgpLmNvbG9yKCkgOiBxQXBwLT5wYWxldHRlKCkuYmFzZSgpLmNvbG9yKCk7Ci0g
ICAgUUNvbG9yIG5ldXRyYWxDb2xvciA9IEtDb2xvclV0aWxzOjptaXgobGlnaHRDb2xvciwgZGFy
a0NvbG9yLCAwLjUpOwotCi0gICAgcGFpbnRQaXhtYXAobGlnaHRQaXhtYXAsIGxpZ2h0Q29sb3Ip
OwotICAgIHBhaW50UGl4bWFwKG5ldXRyYWxQaXhtYXAsIG5ldXRyYWxDb2xvcik7Ci0gICAgcGFp
bnRQaXhtYXAoZGFya1BpeG1hcCwgZGFya0NvbG9yKTsKLSAgICBwYWludEF1dG9QaXhtYXAoYXV0
b1BpeG1hcCwgbGlnaHRDb2xvciwgZGFya0NvbG9yKTsKLQotICAgIHNldEljb25zKFFJY29uKGF1
dG9QaXhtYXApLCBRSWNvbihsaWdodFBpeG1hcCksIFFJY29uKG5ldXRyYWxQaXhtYXApLCBRSWNv
bihkYXJrUGl4bWFwKSk7Ci19Ci0KLXZvaWQgQmFja2dyb3VuZENvbG9yV2lkZ2V0UHJpdmF0ZTo6
cGFpbnRQaXhtYXAoUVBpeG1hcCAmcGl4bWFwLCBjb25zdCBRQ29sb3IgJmNvbG9yKQotewotICAg
IFFQYWludGVyIHBhaW50ZXI7Ci0gICAgcGFpbnRlci5iZWdpbigmcGl4bWFwKTsKLSAgICBwYWlu
dGVyLnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZyk7Ci0KLSAgICAvLyBRUGFp
bnRlciBpc24ndCBnb29kIGF0IGRyYXdpbmcgbGluZXMgdGhhdCBhcmUgZXhhY3RseSAxcHggdGhp
Y2suCi0gICAgcXJlYWwgcGVuV2lkdGggPSBxQXBwLT5kZXZpY2VQaXhlbFJhdGlvKCkgIT0gMSA/
IHFBcHAtPmRldmljZVBpeGVsUmF0aW8oKSA6IHFBcHAtPmRldmljZVBpeGVsUmF0aW8oKSArIDAu
MDAxOwotICAgIFFDb2xvciBwZW5Db2xvciA9IEtDb2xvclV0aWxzOjptaXgoY29sb3IsIHFBcHAt
PnBhbGV0dGUoKS50ZXh0KCkuY29sb3IoKSwgMC4zKTsKLSAgICBRUGVuIHBlbihwZW5Db2xvciwg
cGVuV2lkdGgpOwotICAgIHFyZWFsIG1hcmdpbiA9IHBlbi53aWR0aEYoKSAvIDIuMDsKLSAgICBR
TWFyZ2luc0YgcGVuTWFyZ2lucyhtYXJnaW4sIG1hcmdpbiwgbWFyZ2luLCBtYXJnaW4pOwotICAg
IFFSZWN0RiByZWN0ID0gcGl4bWFwLnJlY3QoKTsKLQotICAgIHBhaW50ZXIuc2V0QnJ1c2goY29s
b3IpOwotICAgIHBhaW50ZXIuc2V0UGVuKHBlbik7Ci0gICAgcGFpbnRlci5kcmF3RWxsaXBzZShy
ZWN0Lm1hcmdpbnNSZW1vdmVkKHBlbk1hcmdpbnMpKTsKLQotICAgIHBhaW50ZXIuZW5kKCk7Ci19
Ci0KLXZvaWQgQmFja2dyb3VuZENvbG9yV2lkZ2V0UHJpdmF0ZTo6cGFpbnRBdXRvUGl4bWFwKFFQ
aXhtYXAgJnBpeG1hcCwgY29uc3QgUUNvbG9yICZsaWdodENvbG9yLCBjb25zdCBRQ29sb3IgJmRh
cmtDb2xvcikKLXsKLSAgICBRUGFpbnRlciBwYWludGVyOwotICAgIHBhaW50ZXIuYmVnaW4oJnBp
eG1hcCk7Ci0gICAgcGFpbnRlci5zZXRSZW5kZXJIaW50KFFQYWludGVyOjpBbnRpYWxpYXNpbmcp
OwotCi0gICAgLy8gUVBhaW50ZXIgaXNuJ3QgZ29vZCBhdCBkcmF3aW5nIGxpbmVzIHRoYXQgYXJl
IGV4YWN0bHkgMXB4IHRoaWNrLgotICAgIHFyZWFsIHBlbldpZHRoID0gcUFwcC0+ZGV2aWNlUGl4
ZWxSYXRpbygpICE9IDEgPyBxQXBwLT5kZXZpY2VQaXhlbFJhdGlvKCkgOiBxQXBwLT5kZXZpY2VQ
aXhlbFJhdGlvKCkgKyAwLjAwMTsKLSAgICBRQ29sb3IgbGlnaHRQZW5Db2xvciA9IEtDb2xvclV0
aWxzOjptaXgobGlnaHRDb2xvciwgZGFya0NvbG9yLCAwLjMpOwotICAgIFFQZW4gbGlnaHRQZW4o
bGlnaHRQZW5Db2xvciwgcGVuV2lkdGgpOwotICAgIFFDb2xvciBkYXJrUGVuQ29sb3IgPSBLQ29s
b3JVdGlsczo6bWl4KGRhcmtDb2xvciwgbGlnaHRDb2xvciwgMC4zKTsKLSAgICBRUGVuIGRhcmtQ
ZW4oZGFya1BlbkNvbG9yLCBwZW5XaWR0aCk7Ci0KLSAgICBxcmVhbCBtYXJnaW4gPSBsaWdodFBl
bi53aWR0aEYoKSAvIDIuMDsKLSAgICBRTWFyZ2luc0YgcGVuTWFyZ2lucyhtYXJnaW4sIG1hcmdp
biwgbWFyZ2luLCBtYXJnaW4pOwotICAgIFFSZWN0RiByZWN0ID0gcGl4bWFwLnJlY3QoKTsKLSAg
ICByZWN0ID0gcmVjdC5tYXJnaW5zUmVtb3ZlZChwZW5NYXJnaW5zKTsKLSAgICBpbnQgbGlnaHRT
dGFydEFuZ2xlID0gNDUgKiAxNjsKLSAgICBpbnQgbGlnaHRTcGFuQW5nbGUgPSAxODAgKiAxNjsK
LSAgICBpbnQgZGFya1N0YXJ0QW5nbGUgPSAtMTM1ICogMTY7Ci0gICAgaW50IGRhcmtTcGFuQW5n
bGUgPSAxODAgKiAxNjsKLQotICAgIHBhaW50ZXIuc2V0QnJ1c2gobGlnaHRDb2xvcik7Ci0gICAg
cGFpbnRlci5zZXRQZW4obGlnaHRQZW4pOwotICAgIHBhaW50ZXIuZHJhd0Nob3JkKHJlY3QsIGxp
Z2h0U3RhcnRBbmdsZSwgbGlnaHRTcGFuQW5nbGUpOwotICAgIHBhaW50ZXIuc2V0QnJ1c2goZGFy
a0NvbG9yKTsKLSAgICBwYWludGVyLnNldFBlbihkYXJrUGVuKTsKLSAgICBwYWludGVyLmRyYXdD
aG9yZChyZWN0LCBkYXJrU3RhcnRBbmdsZSwgZGFya1NwYW5BbmdsZSk7Ci0KLSAgICBwYWludGVy
LmVuZCgpOwotfQotCi0vLyBUaGlzIGZ1bmN0aW9uIGlzIHdyaXR0ZW4gdGhpcyB3YXkgYmVjYXVz
ZSBleGlzdGluZyBHd2VudmlldyBjb2RlIHRlbmRzIHRvCi0vLyBkZWZpbmUgYWN0aW9ucyBpbiBh
IGNlbnRyYWwgbG9jYXRpb24gYW5kIHRoZW4gcGFzcyB0aGVtIGRvd24gdG8gY2hpbGRyZW4uCi0v
LyBUaGlzIGNvZGUgbWFrZXMgc3VyZSB0aGUgYnV0dG9ucyBzdGlsbCBoYXZlIGljb25zIGlmIHRo
ZSBhY3Rpb25zIGhhdmUgbm90Ci0vLyBiZWVuIHNldCB5ZXQuCi12b2lkIEJhY2tncm91bmRDb2xv
cldpZGdldFByaXZhdGU6OnNldEljb25zKGNvbnN0IFFJY29uICZhdXRvSWNvbiwgY29uc3QgUUlj
b24gJmxpZ2h0SWNvbiwgY29uc3QgUUljb24gJm5ldXRyYWxJY29uLCBjb25zdCBRSWNvbiAmZGFy
a0ljb24pCi17Ci0gICAgaWYgKGF1dG9Nb2RlKSB7Ci0gICAgICAgIGF1dG9Nb2RlLT5zZXRJY29u
KGF1dG9JY29uKTsKLSAgICB9IGVsc2UgewotICAgICAgICBhdXRvQnV0dG9uLT5zZXRJY29uKGF1
dG9JY29uKTsKLSAgICB9Ci0gICAgaWYgKGxpZ2h0TW9kZSkgewotICAgICAgICBsaWdodE1vZGUt
PnNldEljb24obGlnaHRJY29uKTsKLSAgICB9IGVsc2UgewotICAgICAgICBsaWdodEJ1dHRvbi0+
c2V0SWNvbihsaWdodEljb24pOwotICAgIH0KLSAgICBpZiAobmV1dHJhbE1vZGUpIHsKLSAgICAg
ICAgbmV1dHJhbE1vZGUtPnNldEljb24obmV1dHJhbEljb24pOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG5ldXRyYWxCdXR0b24tPnNldEljb24obmV1dHJhbEljb24pOwotICAgIH0KLSAgICBpZiAo
ZGFya01vZGUpIHsKLSAgICAgICAgZGFya01vZGUtPnNldEljb24oZGFya0ljb24pOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGRhcmtCdXR0b24tPnNldEljb24oZGFya0ljb24pOwotICAgIH0KLX0K
LQotQmFja2dyb3VuZENvbG9yV2lkZ2V0OjpCYWNrZ3JvdW5kQ29sb3JXaWRnZXQoUVdpZGdldCAq
cGFyZW50KQotICAgIDogUVdpZGdldChwYXJlbnQpCi0gICAgLCBkX3B0cihuZXcgQmFja2dyb3Vu
ZENvbG9yV2lkZ2V0UHJpdmF0ZSh0aGlzKSkKLXsKLSAgICBRX0QoQmFja2dyb3VuZENvbG9yV2lk
Z2V0KTsKLSAgICBjb25uZWN0KHFBcHAsICZRQXBwbGljYXRpb246OnBhbGV0dGVDaGFuZ2VkLCB0
aGlzLCBbZF0oKSB7Ci0gICAgICAgIGQtPnVzaW5nTGlnaHRUaGVtZSA9IHVzaW5nTGlnaHRUaGVt
ZSgpOwotICAgICAgICBkLT5pbml0UGl4bWFwcygpOwotICAgIH0pOwotICAgIGNvbm5lY3QocUFw
cCwgJlFBcHBsaWNhdGlvbjo6bGF5b3V0RGlyZWN0aW9uQ2hhbmdlZCwgdGhpcywgW2RdKCkgewot
ICAgICAgICBkLT5taXJyb3JlZCA9IHFBcHAtPmlzUmlnaHRUb0xlZnQoKTsKLSAgICAgICAgZC0+
YXV0b0J1dHRvbi0+c2V0R3JvdXBQb3NpdGlvbihkLT5taXJyb3JlZCA/IFN0YXR1c0JhclRvb2xC
dXR0b246Okdyb3VwUmlnaHQgOiBTdGF0dXNCYXJUb29sQnV0dG9uOjpHcm91cExlZnQpOwotICAg
ICAgICBkLT5kYXJrQnV0dG9uLT5zZXRHcm91cFBvc2l0aW9uKGQtPm1pcnJvcmVkID8gU3RhdHVz
QmFyVG9vbEJ1dHRvbjo6R3JvdXBMZWZ0IDogU3RhdHVzQmFyVG9vbEJ1dHRvbjo6R3JvdXBSaWdo
dCk7Ci0gICAgfSk7Ci19Ci0KLUJhY2tncm91bmRDb2xvcldpZGdldDo6fkJhY2tncm91bmRDb2xv
cldpZGdldCgpIG5vZXhjZXB0Ci17Ci19Ci0KLUJhY2tncm91bmRDb2xvcldpZGdldDo6Q29sb3JN
b2RlIEJhY2tncm91bmRDb2xvcldpZGdldDo6Y29sb3JNb2RlKCkgY29uc3QKLXsKLSAgICBRX0Qo
Y29uc3QgQmFja2dyb3VuZENvbG9yV2lkZ2V0KTsKLSAgICByZXR1cm4gZC0+Y29sb3JNb2RlOwot
fQotCi12b2lkIEJhY2tncm91bmRDb2xvcldpZGdldDo6c2V0Q29sb3JNb2RlKENvbG9yTW9kZSBj
b2xvck1vZGUpCi17Ci0gICAgUV9EKEJhY2tncm91bmRDb2xvcldpZGdldCk7Ci0gICAgaWYgKGQt
PmNvbG9yTW9kZSA9PSBjb2xvck1vZGUpIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGQtPmNvbG9yTW9kZSA9IGNvbG9yTW9kZTsKLSAgICBkLT5hdXRvQnV0dG9uLT5zZXRDaGVja2Vk
KGNvbG9yTW9kZSA9PSBCYWNrZ3JvdW5kQ29sb3JXaWRnZXQ6OkF1dG8pOwotICAgIGQtPmxpZ2h0
QnV0dG9uLT5zZXRDaGVja2VkKGNvbG9yTW9kZSA9PSBCYWNrZ3JvdW5kQ29sb3JXaWRnZXQ6Okxp
Z2h0KTsKLSAgICBkLT5uZXV0cmFsQnV0dG9uLT5zZXRDaGVja2VkKGNvbG9yTW9kZSA9PSBCYWNr
Z3JvdW5kQ29sb3JXaWRnZXQ6Ok5ldXRyYWwpOwotICAgIGQtPmRhcmtCdXR0b24tPnNldENoZWNr
ZWQoY29sb3JNb2RlID09IEJhY2tncm91bmRDb2xvcldpZGdldDo6RGFyayk7Ci0gICAgUV9FTUlU
IGNvbG9yTW9kZUNoYW5nZWQoY29sb3JNb2RlKTsKLX0KLQotdm9pZCBCYWNrZ3JvdW5kQ29sb3JX
aWRnZXQ6OnNldEFjdGlvbnMoUUFjdGlvbiAqYXV0b01vZGUsIFFBY3Rpb24gKmxpZ2h0TW9kZSwg
UUFjdGlvbiAqbmV1dHJhbE1vZGUsIFFBY3Rpb24gKmRhcmtNb2RlKQotewotICAgIFFfRChCYWNr
Z3JvdW5kQ29sb3JXaWRnZXQpOwotICAgIGF1dG9Nb2RlLT5zZXRJY29uKGQtPmF1dG9CdXR0b24t
Pmljb24oKSk7Ci0gICAgbGlnaHRNb2RlLT5zZXRJY29uKGQtPmxpZ2h0QnV0dG9uLT5pY29uKCkp
OwotICAgIG5ldXRyYWxNb2RlLT5zZXRJY29uKGQtPm5ldXRyYWxCdXR0b24tPmljb24oKSk7Ci0g
ICAgZGFya01vZGUtPnNldEljb24oZC0+ZGFya0J1dHRvbi0+aWNvbigpKTsKLSAgICBkLT5hdXRv
TW9kZSA9IGF1dG9Nb2RlOwotICAgIGQtPmxpZ2h0TW9kZSA9IGxpZ2h0TW9kZTsKLSAgICBkLT5u
ZXV0cmFsTW9kZSA9IG5ldXRyYWxNb2RlOwotICAgIGQtPmRhcmtNb2RlID0gZGFya01vZGU7Ci0K
LSAgICBkLT5hdXRvQnV0dG9uLT5zZXREZWZhdWx0QWN0aW9uKGF1dG9Nb2RlKTsKLSAgICBkLT5s
aWdodEJ1dHRvbi0+c2V0RGVmYXVsdEFjdGlvbihsaWdodE1vZGUpOwotICAgIGQtPm5ldXRyYWxC
dXR0b24tPnNldERlZmF1bHRBY3Rpb24obmV1dHJhbE1vZGUpOwotICAgIGQtPmRhcmtCdXR0b24t
PnNldERlZmF1bHRBY3Rpb24oZGFya01vZGUpOwotCi0gICAgUUFjdGlvbkdyb3VwICphY3Rpb25H
cm91cCA9IG5ldyBRQWN0aW9uR3JvdXAodGhpcyk7Ci0gICAgYWN0aW9uR3JvdXAtPmFkZEFjdGlv
bihhdXRvTW9kZSk7Ci0gICAgYWN0aW9uR3JvdXAtPmFkZEFjdGlvbihsaWdodE1vZGUpOwotICAg
IGFjdGlvbkdyb3VwLT5hZGRBY3Rpb24obmV1dHJhbE1vZGUpOwotICAgIGFjdGlvbkdyb3VwLT5h
ZGRBY3Rpb24oZGFya01vZGUpOwotICAgIGFjdGlvbkdyb3VwLT5zZXRFeGNsdXNpdmUodHJ1ZSk7
Ci19Ci0KLWJvb2wgQmFja2dyb3VuZENvbG9yV2lkZ2V0Ojp1c2luZ0xpZ2h0VGhlbWUoKQotewot
ICAgIHJldHVybiBxQXBwLT5wYWxldHRlKCkuYmFzZSgpLmNvbG9yKCkubGlnaHRuZXNzKCkgPiBx
QXBwLT5wYWxldHRlKCkudGV4dCgpLmNvbG9yKCkubGlnaHRuZXNzKCk7Ci19CmRpZmYgLS1naXQg
YS9saWIvYmFja2dyb3VuZGNvbG9yd2lkZ2V0L2JhY2tncm91bmRjb2xvcndpZGdldC5oIGIvbGli
L2JhY2tncm91bmRjb2xvcndpZGdldC9iYWNrZ3JvdW5kY29sb3J3aWRnZXQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNTZkYjkxMjMuLjAwMDAwMDAwCi0tLSBhL2xpYi9iYWNrZ3Jv
dW5kY29sb3J3aWRnZXQvYmFja2dyb3VuZGNvbG9yd2lkZ2V0LmgKKysrIC9kZXYvbnVsbApAQCAt
MSw0NSArMCwwIEBACi0vKiBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDIxIE5vYWggRGF2aXMg
PG5vYWhhZHZzQGdtYWlsLmNvbT4KLSAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIu
MS1vci1sYXRlcgotICovCi0KLSNpZm5kZWYgQkFDS0dST1VORENPTE9SV0lER0VUX0gKLSNkZWZp
bmUgQkFDS0dST1VORENPTE9SV0lER0VUX0gKLQotI2luY2x1ZGUgPFFXaWRnZXQ+Ci0jaW5jbHVk
ZSA8bGliL2d3ZW52aWV3bGliX2V4cG9ydC5oPgotCi1uYW1lc3BhY2UgR3dlbnZpZXcKLXsKLWNs
YXNzIEJhY2tncm91bmRDb2xvcldpZGdldFByaXZhdGU7Ci0KLWNsYXNzIEdXRU5WSUVXTElCX0VY
UE9SVCBCYWNrZ3JvdW5kQ29sb3JXaWRnZXQgOiBwdWJsaWMgUVdpZGdldAotewotICAgIFFfT0JK
RUNUCi0gICAgUV9QUk9QRVJUWShDb2xvck1vZGUgY29sb3JNb2RlIFJFQUQgY29sb3JNb2RlIFdS
SVRFIHNldENvbG9yTW9kZSBOT1RJRlkgY29sb3JNb2RlQ2hhbmdlZCkKLQotcHVibGljOgotICAg
IGV4cGxpY2l0IEJhY2tncm91bmRDb2xvcldpZGdldChRV2lkZ2V0ICpwYXJlbnQgPSBudWxscHRy
KTsKLSAgICB+QmFja2dyb3VuZENvbG9yV2lkZ2V0KCkgb3ZlcnJpZGU7Ci0KLSAgICBlbnVtIENv
bG9yTW9kZSB7IEF1dG8gPSAwLCBMaWdodCA9IDEsIE5ldXRyYWwgPSAyLCBEYXJrID0gMyB9Owot
ICAgIFFfRU5VTShDb2xvck1vZGUpCi0KLSAgICBDb2xvck1vZGUgY29sb3JNb2RlKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRDb2xvck1vZGUoQ29sb3JNb2RlIGNvbG9yTW9kZSk7Ci0KLSAgICB2b2lk
IHNldEFjdGlvbnMoUUFjdGlvbiAqYXV0b01vZGUsIFFBY3Rpb24gKmxpZ2h0TW9kZSwgUUFjdGlv
biAqbmV1dHJhbE1vZGUsIFFBY3Rpb24gKmRhcmtNb2RlKTsKLQotICAgIHN0YXRpYyBib29sIHVz
aW5nTGlnaHRUaGVtZSgpOwotCi1RX1NJR05BTFM6Ci0gICAgdm9pZCBjb2xvck1vZGVDaGFuZ2Vk
KENvbG9yTW9kZSBjb2xvck1vZGUpOwotCi1wcml2YXRlOgotICAgIGNvbnN0IHN0ZDo6dW5pcXVl
X3B0cjxCYWNrZ3JvdW5kQ29sb3JXaWRnZXRQcml2YXRlPiBkX3B0cjsKLSAgICBRX0RFQ0xBUkVf
UFJJVkFURShCYWNrZ3JvdW5kQ29sb3JXaWRnZXQpCi0gICAgUV9ESVNBQkxFX0NPUFkoQmFja2dy
b3VuZENvbG9yV2lkZ2V0KQotfTsKLQotfQotCi0jZW5kaWYgLy8gQkFDS0dST1VORENPTE9SV0lE
R0VUX0gKZGlmZiAtLWdpdCBhL2xpYi9kb2N1bWVudHZpZXcvYWJzdHJhY3RpbWFnZXZpZXcuY3Bw
IGIvbGliL2RvY3VtZW50dmlldy9hYnN0cmFjdGltYWdldmlldy5jcHAKaW5kZXggODMzMjM4ODQu
LmZjNDE5MjdlIDEwMDY0NAotLS0gYS9saWIvZG9jdW1lbnR2aWV3L2Fic3RyYWN0aW1hZ2V2aWV3
LmNwcAorKysgYi9saWIvZG9jdW1lbnR2aWV3L2Fic3RyYWN0aW1hZ2V2aWV3LmNwcApAQCAtMzQs
NiArMzQsNyBAQCBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBDYW1icmlkZ2UsIE1BIDAyMTEwLTEzMDEsIFVTQQogI2luY2x1ZGUgPFFHdWlBcHBsaWNh
dGlvbj4KICNpbmNsdWRlIDxRUGFpbnRlcj4KICNpbmNsdWRlIDxRU3RhbmRhcmRQYXRocz4KKwog
bmFtZXNwYWNlIEd3ZW52aWV3CiB7CiBzdGF0aWMgY29uc3QgaW50IFVOSVRfU1RFUCA9IDE2OwpA
QCAtMjY2LDkgKzI2Nyw2IEBAIGJvb2wgQWJzdHJhY3RJbWFnZVZpZXc6Onpvb21Ub0ZpbGwoKSBj
b25zdAogCiB2b2lkIEFic3RyYWN0SW1hZ2VWaWV3OjpzZXRab29tVG9GaXQoYm9vbCBvbikKIHsK
LSAgICBpZiAoZC0+bVpvb21Ub0ZpdCA9PSBvbikgewotICAgICAgICByZXR1cm47Ci0gICAgfQog
ICAgIGQtPm1ab29tVG9GaXQgPSBvbjsKICAgICBpZiAob24pIHsKICAgICAgICAgZC0+bVpvb21U
b0ZpbGwgPSBmYWxzZTsKQEAgLTI4Miw5ICsyODAsNiBAQCB2b2lkIEFic3RyYWN0SW1hZ2VWaWV3
OjpzZXRab29tVG9GaXQoYm9vbCBvbikKIAogdm9pZCBBYnN0cmFjdEltYWdlVmlldzo6c2V0Wm9v
bVRvRmlsbChib29sIG9uLCBjb25zdCBRUG9pbnRGICZjZW50ZXIpCiB7Ci0gICAgaWYgKGQtPm1a
b29tVG9GaWxsID09IG9uKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgZC0+bVpvb21U
b0ZpbGwgPSBvbjsKICAgICBpZiAob24pIHsKICAgICAgICAgZC0+bVpvb21Ub0ZpdCA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvbGliL2RvY3VtZW50dmlldy9hYnN0cmFjdGltYWdldmlldy5oIGIvbGli
L2RvY3VtZW50dmlldy9hYnN0cmFjdGltYWdldmlldy5oCmluZGV4IGM0M2MyMzExLi4yNDk3ZjUz
NiAxMDA2NDQKLS0tIGEvbGliL2RvY3VtZW50dmlldy9hYnN0cmFjdGltYWdldmlldy5oCisrKyBi
L2xpYi9kb2N1bWVudHZpZXcvYWJzdHJhY3RpbWFnZXZpZXcuaApAQCAtMzUsOSArMzUsNyBAQCBj
bGFzcyBBbHBoYUJhY2tncm91bmRJdGVtOwogCiBzdHJ1Y3QgQWJzdHJhY3RJbWFnZVZpZXdQcml2
YXRlOwogLyoqCi0gKiBUaGUgYWJzdHJhY3QgYmFzZSBjbGFzcyB1c2VkIHRvIGltcGxlbWVudCBj
b21tb24gZnVuY3Rpb25hbGl0eSBvZiByYXN0ZXIgYW5kIHZlY3RvciBpbWFnZSB2aWV3cwotICog
bGlrZSBmb3IgZXhhbXBsZSB6b29taW5nLCBjb21wdXRpbmcgdGhlIGFyZWEgd2hlcmUgdGhlIGlt
YWdlIHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSB2aWV3IGFuZAotICogZGVhbGluZyB3aXRoIGEg
YmFja2dyb3VuZCBmb3IgdHJhbnNwYXJlbnQgYXJlYXMuCisgKgogICovCiBjbGFzcyBBYnN0cmFj
dEltYWdlVmlldyA6IHB1YmxpYyBRR3JhcGhpY3NXaWRnZXQKIHsKQEAgLTEyOCwxMSArMTI2LDgg
QEAgcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCB1cGRhdGVDdXJzb3IoKTsKIAogUV9TSUdOQUxT
OgotICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHpvb20gbW9kZSBjaGFuZ2VzIHRvIG9yIGZyb20g
IkZpdCIuICovCiAgICAgdm9pZCB6b29tVG9GaXRDaGFuZ2VkKGJvb2wpOwotICAgIC8qKiBFbWl0
dGVkIHdoZW4gdGhlIHpvb20gbW9kZSBjaGFuZ2VzIHRvIG9yIGZyb20gIkZpbGwiLiAqLwogICAg
IHZvaWQgem9vbVRvRmlsbENoYW5nZWQoYm9vbCk7Ci0gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUg
em9vbSB2YWx1ZSBjaGFuZ2VzIGluIGFueSB3YXkuICovCiAgICAgdm9pZCB6b29tQ2hhbmdlZChx
cmVhbCk7CiAgICAgdm9pZCB6b29tSW5SZXF1ZXN0ZWQoY29uc3QgUVBvaW50RiAmKTsKICAgICB2
b2lkIHpvb21PdXRSZXF1ZXN0ZWQoY29uc3QgUVBvaW50RiAmKTsKZGlmZiAtLWdpdCBhL2xpYi9k
b2N1bWVudHZpZXcvZG9jdW1lbnR2aWV3LmNwcCBiL2xpYi9kb2N1bWVudHZpZXcvZG9jdW1lbnR2
aWV3LmNwcAppbmRleCA3NjYwNDUyMC4uMzIxOTZmOGQgMTAwNjQ0Ci0tLSBhL2xpYi9kb2N1bWVu
dHZpZXcvZG9jdW1lbnR2aWV3LmNwcAorKysgYi9saWIvZG9jdW1lbnR2aWV3L2RvY3VtZW50dmll
dy5jcHAKQEAgLTY2NiwxMiArNjY2LDYgQEAgdm9pZCBEb2N1bWVudFZpZXc6OnRvZ2dsZUJpcmRF
eWVWaWV3KCkKICAgICBHd2Vudmlld0NvbmZpZzo6c2V0QmlyZEV5ZVZpZXdFbmFibGVkKCFHd2Vu
dmlld0NvbmZpZzo6YmlyZEV5ZVZpZXdFbmFibGVkKCkpOwogfQogCi12b2lkIERvY3VtZW50Vmll
dzo6c2V0QmFja2dyb3VuZENvbG9yTW9kZShCYWNrZ3JvdW5kQ29sb3JXaWRnZXQ6OkNvbG9yTW9k
ZSBjb2xvck1vZGUpCi17Ci0gICAgR3dlbnZpZXdDb25maWc6OnNldEJhY2tncm91bmRDb2xvck1v
ZGUoY29sb3JNb2RlKTsKLSAgICBRX0VNSVQgYmFja2dyb3VuZENvbG9yTW9kZUNoYW5nZWQoY29s
b3JNb2RlKTsKLX0KLQogYm9vbCBEb2N1bWVudFZpZXc6Onpvb21Ub0ZpdCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGQtPm1BZGFwdGVyLT56b29tVG9GaXQoKTsKZGlmZiAtLWdpdCBhL2xpYi9kb2N1
bWVudHZpZXcvZG9jdW1lbnR2aWV3LmggYi9saWIvZG9jdW1lbnR2aWV3L2RvY3VtZW50dmlldy5o
CmluZGV4IDk4ODFlODgxLi40Yjg2YzE4MSAxMDA2NDQKLS0tIGEvbGliL2RvY3VtZW50dmlldy9k
b2N1bWVudHZpZXcuaAorKysgYi9saWIvZG9jdW1lbnR2aWV3L2RvY3VtZW50dmlldy5oCkBAIC0y
OSw3ICsyOSw2IEBAIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIENhbWJyaWRnZSwgTUEgMDIxMTAtMTMwMSwgVVNBCiAvLyBLRgogCiAvLyBMb2NhbAot
I2luY2x1ZGUgPGxpYi9iYWNrZ3JvdW5kY29sb3J3aWRnZXQvYmFja2dyb3VuZGNvbG9yd2lkZ2V0
Lmg+CiAjaW5jbHVkZSA8bGliL2RvY3VtZW50L2RvY3VtZW50Lmg+CiAKIGNsYXNzIFFQcm9wZXJ0
eUFuaW1hdGlvbjsKQEAgLTE1Nyw4ICsxNTYsNiBAQCBwdWJsaWMgUV9TTE9UUzoKIAogICAgIHZv
aWQgdG9nZ2xlQmlyZEV5ZVZpZXcoKTsKIAotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yTW9k
ZShCYWNrZ3JvdW5kQ29sb3JXaWRnZXQ6OkNvbG9yTW9kZSBjb2xvck1vZGUpOwotCiAgICAgdm9p
ZCBzZXRQb3NpdGlvbihjb25zdCBRUG9pbnQgJik7CiAKICAgICB2b2lkIGhpZGVBbmREZWxldGVM
YXRlcigpOwpAQCAtMTgzLDggKzE4MCw2IEBAIHB1YmxpYyBRX1NMT1RTOgogCiAgICAgdm9pZCB2
aWRlb0ZpbmlzaGVkKCk7CiAKLSAgICB2b2lkIGJhY2tncm91bmRDb2xvck1vZGVDaGFuZ2VkKEJh
Y2tncm91bmRDb2xvcldpZGdldDo6Q29sb3JNb2RlKTsKLQogICAgIHZvaWQgbWluaW11bVpvb21D
aGFuZ2VkKHFyZWFsKTsKIAogICAgIHZvaWQgem9vbUNoYW5nZWQocXJlYWwpOwpkaWZmIC0tZ2l0
IGEvbGliL2RvY3VtZW50dmlldy9kb2N1bWVudHZpZXdjb250cm9sbGVyLmNwcCBiL2xpYi9kb2N1
bWVudHZpZXcvZG9jdW1lbnR2aWV3Y29udHJvbGxlci5jcHAKaW5kZXggYmE1YzkyNmQuLjhlMTMy
OGY5IDEwMDY0NAotLS0gYS9saWIvZG9jdW1lbnR2aWV3L2RvY3VtZW50dmlld2NvbnRyb2xsZXIu
Y3BwCisrKyBiL2xpYi9kb2N1bWVudHZpZXcvZG9jdW1lbnR2aWV3Y29udHJvbGxlci5jcHAKQEAg
LTM2LDcgKzM2LDYgQEAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQ2FtYnJpZGdlLCBNQSAwMjExMC0xMzAxLCBVU0EKIAogLy8gUXQKICNpbmNsdWRl
IDxRQWN0aW9uPgotI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRSEJveExheW91
dD4KIAogbmFtZXNwYWNlIEd3ZW52aWV3CkBAIC00NSw3ICs0NCw2IEBAIHN0cnVjdCBEb2N1bWVu
dFZpZXdDb250cm9sbGVyUHJpdmF0ZSB7CiAgICAgRG9jdW1lbnRWaWV3Q29udHJvbGxlciAqcTsK
ICAgICBLQWN0aW9uQ29sbGVjdGlvbiAqbUFjdGlvbkNvbGxlY3Rpb247CiAgICAgRG9jdW1lbnRW
aWV3ICptVmlldzsKLSAgICBCYWNrZ3JvdW5kQ29sb3JXaWRnZXQgKm1CYWNrZ3JvdW5kQ29sb3JX
aWRnZXQ7CiAgICAgWm9vbVdpZGdldCAqbVpvb21XaWRnZXQ7CiAgICAgU2xpZGVDb250YWluZXIg
Km1Ub29sQ29udGFpbmVyOwogCkBAIC01NSwxMCArNTMsNiBAQCBzdHJ1Y3QgRG9jdW1lbnRWaWV3
Q29udHJvbGxlclByaXZhdGUgewogICAgIFFBY3Rpb24gKm1ab29tSW5BY3Rpb247CiAgICAgUUFj
dGlvbiAqbVpvb21PdXRBY3Rpb247CiAgICAgUUFjdGlvbiAqbVRvZ2dsZUJpcmRFeWVWaWV3QWN0
aW9uOwotICAgIFFBY3Rpb24gKm1CYWNrZ3JvdW5kQ29sb3JNb2RlQXV0bzsKLSAgICBRQWN0aW9u
ICptQmFja2dyb3VuZENvbG9yTW9kZUxpZ2h0OwotICAgIFFBY3Rpb24gKm1CYWNrZ3JvdW5kQ29s
b3JNb2RlTmV1dHJhbDsKLSAgICBRQWN0aW9uICptQmFja2dyb3VuZENvbG9yTW9kZURhcms7CiAg
ICAgUUxpc3Q8UUFjdGlvbiAqPiBtQWN0aW9uczsKIAogICAgIHZvaWQgc2V0dXBBY3Rpb25zKCkK
QEAgLTgzLDcgKzc3LDcgQEAgc3RydWN0IERvY3VtZW50Vmlld0NvbnRyb2xsZXJQcml2YXRlIHsK
ICAgICAgICAgbUFjdHVhbFNpemVBY3Rpb24gPSB2aWV3LT5hZGRBY3Rpb24oS1N0YW5kYXJkQWN0
aW9uOjpBY3R1YWxTaXplKTsKICAgICAgICAgbUFjdHVhbFNpemVBY3Rpb24tPnNldENoZWNrYWJs
ZSh0cnVlKTsKICAgICAgICAgbUFjdHVhbFNpemVBY3Rpb24tPnNldEljb24oUUljb246OmZyb21U
aGVtZShRU3RyaW5nTGl0ZXJhbCgiem9vbS1vcmlnaW5hbCIpKSk7Ci0gICAgICAgIG1BY3R1YWxT
aXplQWN0aW9uLT5zZXRJY29uVGV4dChRTG9jYWxlKCkudG9TdHJpbmcoMTAwKS5hcHBlbmQoUUxv
Y2FsZSgpLnBlcmNlbnQoKSkpOworICAgICAgICBtQWN0dWFsU2l6ZUFjdGlvbi0+c2V0SWNvblRl
eHQoaTE4bmMoIkBhY3Rpb246YnV0dG9uIFpvb20gdG8gb3JpZ2luYWwgc2l6ZSwgc2hvd24gaW4g
c3RhdHVzIGJhciwga2VlcCBpdCBzaG9ydCBwbGVhc2UiLCAiMTAwJSIpKTsKIAogICAgICAgICBt
Wm9vbUluQWN0aW9uID0gdmlldy0+YWRkQWN0aW9uKEtTdGFuZGFyZEFjdGlvbjo6Wm9vbUluKTsK
ICAgICAgICAgbVpvb21PdXRBY3Rpb24gPSB2aWV3LT5hZGRBY3Rpb24oS1N0YW5kYXJkQWN0aW9u
Ojpab29tT3V0KTsKQEAgLTk1LDQ2ICs4OSw3IEBAIHN0cnVjdCBEb2N1bWVudFZpZXdDb250cm9s
bGVyUHJpdmF0ZSB7CiAgICAgICAgIG1Ub2dnbGVCaXJkRXllVmlld0FjdGlvbi0+c2V0SWNvbihR
SWNvbjo6ZnJvbVRoZW1lKFFTdHJpbmdMaXRlcmFsKCJ6b29tIikpKTsKICAgICAgICAgbVRvZ2ds
ZUJpcmRFeWVWaWV3QWN0aW9uLT5zZXRFbmFibGVkKG1WaWV3ICE9IG51bGxwdHIpOwogCi0gICAg
ICAgIG1CYWNrZ3JvdW5kQ29sb3JNb2RlQXV0byA9IHZpZXctPmFkZEFjdGlvbihRU3RyaW5nTGl0
ZXJhbCgidmlld19iYWNrZ3JvdW5kX2NvbG9ybW9kZV9hdXRvIikpOwotICAgICAgICBtQmFja2dy
b3VuZENvbG9yTW9kZUF1dG8tPnNldENoZWNrYWJsZSh0cnVlKTsKLSAgICAgICAgbUJhY2tncm91
bmRDb2xvck1vZGVBdXRvLT5zZXRDaGVja2VkKEd3ZW52aWV3Q29uZmlnOjpiYWNrZ3JvdW5kQ29s
b3JNb2RlKCkgPT0gQmFja2dyb3VuZENvbG9yV2lkZ2V0OjpBdXRvKTsKLSAgICAgICAgbUJhY2tn
cm91bmRDb2xvck1vZGVBdXRvLT5zZXRUZXh0KGkxOG5jKCJAYWN0aW9uIiwgIkZvbGxvdyBjb2xv
ciBzY2hlbWUiKSk7Ci0gICAgICAgIG1CYWNrZ3JvdW5kQ29sb3JNb2RlQXV0by0+c2V0RW5hYmxl
ZChtVmlldyAhPSBudWxscHRyKTsKLSAgICAgICAgbUJhY2tncm91bmRDb2xvck1vZGVBdXRvLT5z
ZXRUb29sVGlwKG1CYWNrZ3JvdW5kQ29sb3JNb2RlQXV0by0+dGV4dCgpKTsKLQotICAgICAgICBt
QmFja2dyb3VuZENvbG9yTW9kZUxpZ2h0ID0gdmlldy0+YWRkQWN0aW9uKFFTdHJpbmdMaXRlcmFs
KCJ2aWV3X2JhY2tncm91bmRfY29sb3Jtb2RlX2xpZ2h0IikpOwotICAgICAgICBtQmFja2dyb3Vu
ZENvbG9yTW9kZUxpZ2h0LT5zZXRDaGVja2FibGUodHJ1ZSk7Ci0gICAgICAgIG1CYWNrZ3JvdW5k
Q29sb3JNb2RlTGlnaHQtPnNldENoZWNrZWQoR3dlbnZpZXdDb25maWc6OmJhY2tncm91bmRDb2xv
ck1vZGUoKSA9PSBCYWNrZ3JvdW5kQ29sb3JXaWRnZXQ6OkxpZ2h0KTsKLSAgICAgICAgbUJhY2tn
cm91bmRDb2xvck1vZGVMaWdodC0+c2V0VGV4dChpMThuYygiQGFjdGlvbiIsICJMaWdodCBNb2Rl
IikpOwotICAgICAgICBtQmFja2dyb3VuZENvbG9yTW9kZUxpZ2h0LT5zZXRFbmFibGVkKG1WaWV3
ICE9IG51bGxwdHIpOwotICAgICAgICBtQmFja2dyb3VuZENvbG9yTW9kZUxpZ2h0LT5zZXRUb29s
VGlwKG1CYWNrZ3JvdW5kQ29sb3JNb2RlTGlnaHQtPnRleHQoKSk7Ci0KLSAgICAgICAgbUJhY2tn
cm91bmRDb2xvck1vZGVOZXV0cmFsID0gdmlldy0+YWRkQWN0aW9uKFFTdHJpbmdMaXRlcmFsKCJ2
aWV3X2JhY2tncm91bmRfY29sb3Jtb2RlX25ldXRyYWwiKSk7Ci0gICAgICAgIG1CYWNrZ3JvdW5k
Q29sb3JNb2RlTmV1dHJhbC0+c2V0Q2hlY2thYmxlKHRydWUpOwotICAgICAgICBtQmFja2dyb3Vu
ZENvbG9yTW9kZU5ldXRyYWwtPnNldENoZWNrZWQoR3dlbnZpZXdDb25maWc6OmJhY2tncm91bmRD
b2xvck1vZGUoKSA9PSBCYWNrZ3JvdW5kQ29sb3JXaWRnZXQ6Ok5ldXRyYWwpOwotICAgICAgICBt
QmFja2dyb3VuZENvbG9yTW9kZU5ldXRyYWwtPnNldFRleHQoaTE4bmMoIkBhY3Rpb24iLCAiTmV1
dHJhbCBNb2RlIikpOwotICAgICAgICBtQmFja2dyb3VuZENvbG9yTW9kZU5ldXRyYWwtPnNldEVu
YWJsZWQobVZpZXcgIT0gbnVsbHB0cik7Ci0gICAgICAgIG1CYWNrZ3JvdW5kQ29sb3JNb2RlTmV1
dHJhbC0+c2V0VG9vbFRpcChtQmFja2dyb3VuZENvbG9yTW9kZU5ldXRyYWwtPnRleHQoKSk7Ci0K
LSAgICAgICAgbUJhY2tncm91bmRDb2xvck1vZGVEYXJrID0gdmlldy0+YWRkQWN0aW9uKFFTdHJp
bmdMaXRlcmFsKCJ2aWV3X2JhY2tncm91bmRfY29sb3Jtb2RlX2RhcmsiKSk7Ci0gICAgICAgIG1C
YWNrZ3JvdW5kQ29sb3JNb2RlRGFyay0+c2V0Q2hlY2thYmxlKHRydWUpOwotICAgICAgICBtQmFj
a2dyb3VuZENvbG9yTW9kZURhcmstPnNldENoZWNrZWQoR3dlbnZpZXdDb25maWc6OmJhY2tncm91
bmRDb2xvck1vZGUoKSA9PSBCYWNrZ3JvdW5kQ29sb3JXaWRnZXQ6OkRhcmspOwotICAgICAgICBt
QmFja2dyb3VuZENvbG9yTW9kZURhcmstPnNldFRleHQoaTE4bmMoIkBhY3Rpb24iLCAiRGFyayBN
b2RlIikpOwotICAgICAgICBtQmFja2dyb3VuZENvbG9yTW9kZURhcmstPnNldEVuYWJsZWQobVZp
ZXcgIT0gbnVsbHB0cik7Ci0gICAgICAgIG1CYWNrZ3JvdW5kQ29sb3JNb2RlRGFyay0+c2V0VG9v
bFRpcChtQmFja2dyb3VuZENvbG9yTW9kZURhcmstPnRleHQoKSk7Ci0KLSAgICAgICAgbUFjdGlv
bnMgPDwgbVpvb21Ub0ZpdEFjdGlvbiA8PCBtQWN0dWFsU2l6ZUFjdGlvbiA8PCBtWm9vbUluQWN0
aW9uIDw8IG1ab29tT3V0QWN0aW9uIDw8IG1ab29tVG9GaWxsQWN0aW9uIDw8IG1Ub2dnbGVCaXJk
RXllVmlld0FjdGlvbgotICAgICAgICAgICAgICAgICA8PCBtQmFja2dyb3VuZENvbG9yTW9kZUF1
dG8gPDwgbUJhY2tncm91bmRDb2xvck1vZGVMaWdodCA8PCBtQmFja2dyb3VuZENvbG9yTW9kZU5l
dXRyYWwgPDwgbUJhY2tncm91bmRDb2xvck1vZGVEYXJrOwotICAgIH0KLQotICAgIHZvaWQgY29u
bmVjdEJhY2tncm91bmRDb2xvcldpZGdldCgpCi0gICAgewotICAgICAgICBpZiAoIW1CYWNrZ3Jv
dW5kQ29sb3JXaWRnZXQgfHwgIW1WaWV3KSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBRT2JqZWN0Ojpjb25uZWN0KG1CYWNrZ3JvdW5kQ29sb3JXaWRnZXQsICZC
YWNrZ3JvdW5kQ29sb3JXaWRnZXQ6OmNvbG9yTW9kZUNoYW5nZWQsIG1WaWV3LCAmRG9jdW1lbnRW
aWV3OjpzZXRCYWNrZ3JvdW5kQ29sb3JNb2RlKTsKLSAgICAgICAgUU9iamVjdDo6Y29ubmVjdCht
VmlldywgJkRvY3VtZW50Vmlldzo6YmFja2dyb3VuZENvbG9yTW9kZUNoYW5nZWQsIG1CYWNrZ3Jv
dW5kQ29sb3JXaWRnZXQsICZCYWNrZ3JvdW5kQ29sb3JXaWRnZXQ6OnNldENvbG9yTW9kZSk7Cisg
ICAgICAgIG1BY3Rpb25zIDw8IG1ab29tVG9GaXRBY3Rpb24gPDwgbUFjdHVhbFNpemVBY3Rpb24g
PDwgbVpvb21JbkFjdGlvbiA8PCBtWm9vbU91dEFjdGlvbiA8PCBtWm9vbVRvRmlsbEFjdGlvbiA8
PCBtVG9nZ2xlQmlyZEV5ZVZpZXdBY3Rpb247CiAgICAgfQogCiAgICAgdm9pZCBjb25uZWN0Wm9v
bVdpZGdldCgpCkBAIC0xNDMsMTAgKzk4LDggQEAgc3RydWN0IERvY3VtZW50Vmlld0NvbnRyb2xs
ZXJQcml2YXRlIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIC8v
IGZyb20gbVpvb21XaWRnZXQgdG8gbVZpZXcKICAgICAgICAgUU9iamVjdDo6Y29ubmVjdChtWm9v
bVdpZGdldCwgJlpvb21XaWRnZXQ6Onpvb21DaGFuZ2VkLCBtVmlldywgJkRvY3VtZW50Vmlldzo6
c2V0Wm9vbSk7CiAKLSAgICAgICAgLy8gZnJvbSBtVmlldyB0byBtWm9vbVdpZGdldAogICAgICAg
ICBRT2JqZWN0Ojpjb25uZWN0KG1WaWV3LCAmRG9jdW1lbnRWaWV3OjptaW5pbXVtWm9vbUNoYW5n
ZWQsIG1ab29tV2lkZ2V0LCAmWm9vbVdpZGdldDo6c2V0TWluaW11bVpvb20pOwogICAgICAgICBR
T2JqZWN0Ojpjb25uZWN0KG1WaWV3LCAmRG9jdW1lbnRWaWV3Ojp6b29tQ2hhbmdlZCwgbVpvb21X
aWRnZXQsICZab29tV2lkZ2V0OjpzZXRab29tKTsKIApAQCAtMTc4LDcgKzEzMSw2IEBAIERvY3Vt
ZW50Vmlld0NvbnRyb2xsZXI6OkRvY3VtZW50Vmlld0NvbnRyb2xsZXIoS0FjdGlvbkNvbGxlY3Rp
b24gKmFjdGlvbkNvbGxlY3RpCiAgICAgZC0+cSA9IHRoaXM7CiAgICAgZC0+bUFjdGlvbkNvbGxl
Y3Rpb24gPSBhY3Rpb25Db2xsZWN0aW9uOwogICAgIGQtPm1WaWV3ID0gbnVsbHB0cjsKLSAgICBk
LT5tQmFja2dyb3VuZENvbG9yV2lkZ2V0ID0gbnVsbHB0cjsKICAgICBkLT5tWm9vbVdpZGdldCA9
IG51bGxwdHI7CiAgICAgZC0+bVRvb2xDb250YWluZXIgPSBudWxscHRyOwogCkBAIC0xOTksNyAr
MTUxLDYgQEAgdm9pZCBEb2N1bWVudFZpZXdDb250cm9sbGVyOjpzZXRWaWV3KERvY3VtZW50Vmll
dyAqdmlldykKICAgICAgICAgICAgIGRpc2Nvbm5lY3QoYWN0aW9uLCBudWxscHRyLCBkLT5tVmll
dywgbnVsbHB0cik7CiAgICAgICAgIH0KICAgICAgICAgZGlzY29ubmVjdChkLT5tWm9vbVdpZGdl
dCwgbnVsbHB0ciwgZC0+bVZpZXcsIG51bGxwdHIpOwotICAgICAgICBkaXNjb25uZWN0KGQtPm1C
YWNrZ3JvdW5kQ29sb3JXaWRnZXQsIG51bGxwdHIsIGQtPm1WaWV3LCBudWxscHRyKTsKICAgICB9
CiAKICAgICAvLyBDb25uZWN0IG5ldyB2aWV3CkBAIC0yMjAsMzEgKzE3MSwxMSBAQCB2b2lkIERv
Y3VtZW50Vmlld0NvbnRyb2xsZXI6OnNldFZpZXcoRG9jdW1lbnRWaWV3ICp2aWV3KQogCiAgICAg
Y29ubmVjdChkLT5tVG9nZ2xlQmlyZEV5ZVZpZXdBY3Rpb24sICZRQWN0aW9uOjp0cmlnZ2VyZWQs
IGQtPm1WaWV3LCAmRG9jdW1lbnRWaWV3Ojp0b2dnbGVCaXJkRXllVmlldyk7CiAKLSAgICBjb25u
ZWN0KGQtPm1CYWNrZ3JvdW5kQ29sb3JNb2RlQXV0bywgJlFBY3Rpb246OnRyaWdnZXJlZCwgdGhp
cywgW3RoaXNdKCkgewotICAgICAgICBkLT5tVmlldy0+c2V0QmFja2dyb3VuZENvbG9yTW9kZShC
YWNrZ3JvdW5kQ29sb3JXaWRnZXQ6OkF1dG8pOwotICAgICAgICBxQXBwLT5wYWxldHRlQ2hhbmdl
ZChxQXBwLT5wYWxldHRlKCkpOwotICAgIH0pOwotICAgIGNvbm5lY3QoZC0+bUJhY2tncm91bmRD
b2xvck1vZGVMaWdodCwgJlFBY3Rpb246OnRyaWdnZXJlZCwgdGhpcywgW3RoaXNdKCkgewotICAg
ICAgICBkLT5tVmlldy0+c2V0QmFja2dyb3VuZENvbG9yTW9kZShCYWNrZ3JvdW5kQ29sb3JXaWRn
ZXQ6OkxpZ2h0KTsKLSAgICAgICAgcUFwcC0+cGFsZXR0ZUNoYW5nZWQocUFwcC0+cGFsZXR0ZSgp
KTsKLSAgICB9KTsKLSAgICBjb25uZWN0KGQtPm1CYWNrZ3JvdW5kQ29sb3JNb2RlTmV1dHJhbCwg
JlFBY3Rpb246OnRyaWdnZXJlZCwgdGhpcywgW3RoaXNdKCkgewotICAgICAgICBkLT5tVmlldy0+
c2V0QmFja2dyb3VuZENvbG9yTW9kZShCYWNrZ3JvdW5kQ29sb3JXaWRnZXQ6Ok5ldXRyYWwpOwot
ICAgICAgICBxQXBwLT5wYWxldHRlQ2hhbmdlZChxQXBwLT5wYWxldHRlKCkpOwotICAgIH0pOwot
ICAgIGNvbm5lY3QoZC0+bUJhY2tncm91bmRDb2xvck1vZGVEYXJrLCAmUUFjdGlvbjo6dHJpZ2dl
cmVkLCB0aGlzLCBbdGhpc10oKSB7Ci0gICAgICAgIGQtPm1WaWV3LT5zZXRCYWNrZ3JvdW5kQ29s
b3JNb2RlKEJhY2tncm91bmRDb2xvcldpZGdldDo6RGFyayk7Ci0gICAgICAgIHFBcHAtPnBhbGV0
dGVDaGFuZ2VkKHFBcHAtPnBhbGV0dGUoKSk7Ci0gICAgfSk7Ci0KICAgICBkLT51cGRhdGVBY3Rp
b25zKCk7CiAgICAgdXBkYXRlWm9vbVRvRml0QWN0aW9uRnJvbVZpZXcoKTsKICAgICB1cGRhdGVa
b29tVG9GaWxsQWN0aW9uRnJvbVZpZXcoKTsKICAgICB1cGRhdGVUb29sKCk7CiAKLSAgICAvLyBT
eW5jIGJhY2tncm91bmQgY29sb3Igd2lkZ2V0Ci0gICAgZC0+Y29ubmVjdEJhY2tncm91bmRDb2xv
cldpZGdldCgpOwotCiAgICAgLy8gU3luYyB6b29tIHdpZGdldAogICAgIGQtPmNvbm5lY3Rab29t
V2lkZ2V0KCk7CiAgICAgZC0+dXBkYXRlWm9vbVdpZGdldFZpc2liaWxpdHkoKTsKQEAgLTI1NSwy
NCArMTg2LDYgQEAgRG9jdW1lbnRWaWV3ICpEb2N1bWVudFZpZXdDb250cm9sbGVyOjp2aWV3KCkg
Y29uc3QKICAgICByZXR1cm4gZC0+bVZpZXc7CiB9CiAKLXZvaWQgRG9jdW1lbnRWaWV3Q29udHJv
bGxlcjo6c2V0QmFja2dyb3VuZENvbG9yV2lkZ2V0KEJhY2tncm91bmRDb2xvcldpZGdldCAqd2lk
Z2V0KQotewotICAgIGQtPm1CYWNrZ3JvdW5kQ29sb3JXaWRnZXQgPSB3aWRnZXQ7Ci0KLSAgICBk
LT5tQmFja2dyb3VuZENvbG9yV2lkZ2V0LT5zZXRBY3Rpb25zKGQtPm1CYWNrZ3JvdW5kQ29sb3JN
b2RlQXV0bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPm1C
YWNrZ3JvdW5kQ29sb3JNb2RlTGlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkLT5tQmFja2dyb3VuZENvbG9yTW9kZU5ldXRyYWwsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5tQmFja2dyb3VuZENvbG9yTW9kZURhcmsp
OwotCi0gICAgZC0+Y29ubmVjdEJhY2tncm91bmRDb2xvcldpZGdldCgpOwotICAgIGQtPm1CYWNr
Z3JvdW5kQ29sb3JXaWRnZXQtPnNldFZpc2libGUodHJ1ZSk7Ci19Ci0KLUJhY2tncm91bmRDb2xv
cldpZGdldCAqRG9jdW1lbnRWaWV3Q29udHJvbGxlcjo6YmFja2dyb3VuZENvbG9yV2lkZ2V0KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gZC0+bUJhY2tncm91bmRDb2xvcldpZGdldDsKLX0KLQogdm9p
ZCBEb2N1bWVudFZpZXdDb250cm9sbGVyOjpzZXRab29tV2lkZ2V0KFpvb21XaWRnZXQgKndpZGdl
dCkKIHsKICAgICBkLT5tWm9vbVdpZGdldCA9IHdpZGdldDsKZGlmZiAtLWdpdCBhL2xpYi9kb2N1
bWVudHZpZXcvZG9jdW1lbnR2aWV3Y29udHJvbGxlci5oIGIvbGliL2RvY3VtZW50dmlldy9kb2N1
bWVudHZpZXdjb250cm9sbGVyLmgKaW5kZXggOWRiYzhkYzcuLjQxNGFmOWM3IDEwMDY0NAotLS0g
YS9saWIvZG9jdW1lbnR2aWV3L2RvY3VtZW50dmlld2NvbnRyb2xsZXIuaAorKysgYi9saWIvZG9j
dW1lbnR2aWV3L2RvY3VtZW50dmlld2NvbnRyb2xsZXIuaApAQCAtMzYsNyArMzYsNiBAQCBuYW1l
c3BhY2UgR3dlbnZpZXcKIHsKIGNsYXNzIERvY3VtZW50VmlldzsKIGNsYXNzIFNsaWRlQ29udGFp
bmVyOwotY2xhc3MgQmFja2dyb3VuZENvbG9yV2lkZ2V0OwogY2xhc3MgWm9vbVdpZGdldDsKIAog
c3RydWN0IERvY3VtZW50Vmlld0NvbnRyb2xsZXJQcml2YXRlOwpAQCAtNTMsMTEgKzUyLDkgQEAg
Y2xhc3MgR1dFTlZJRVdMSUJfRVhQT1JUIERvY3VtZW50Vmlld0NvbnRyb2xsZXIgOiBwdWJsaWMg
UU9iamVjdAogICAgIH5Eb2N1bWVudFZpZXdDb250cm9sbGVyKCkgb3ZlcnJpZGU7CiAKICAgICBE
b2N1bWVudFZpZXcgKnZpZXcoKSBjb25zdDsKLSAgICBCYWNrZ3JvdW5kQ29sb3JXaWRnZXQgKmJh
Y2tncm91bmRDb2xvcldpZGdldCgpIGNvbnN0OwogICAgIFpvb21XaWRnZXQgKnpvb21XaWRnZXQo
KSBjb25zdDsKIAogICAgIHZvaWQgc2V0VmlldyhEb2N1bWVudFZpZXcgKik7Ci0gICAgdm9pZCBz
ZXRCYWNrZ3JvdW5kQ29sb3JXaWRnZXQoQmFja2dyb3VuZENvbG9yV2lkZ2V0ICp3aWRnZXQpOwog
ICAgIHZvaWQgc2V0Wm9vbVdpZGdldChab29tV2lkZ2V0ICp3aWRnZXQpOwogCiAgICAgdm9pZCBz
ZXRUb29sQ29udGFpbmVyKFNsaWRlQ29udGFpbmVyICpjb250YWluZXIpOwpkaWZmIC0tZ2l0IGEv
bGliL2d3ZW52aWV3Y29uZmlnLmtjZmcgYi9saWIvZ3dlbnZpZXdjb25maWcua2NmZwppbmRleCAx
YjBlMmQxNS4uYjE1MTAxMjMgMTAwNjQ0Ci0tLSBhL2xpYi9nd2Vudmlld2NvbmZpZy5rY2ZnCisr
KyBiL2xpYi9nd2Vudmlld2NvbmZpZy5rY2ZnCkBAIC0xNCw3ICsxNCw2IEBACiAgICAgPGluY2x1
ZGU+bGliL2RvY3VtZW50dmlldy9yYXN0ZXJpbWFnZXZpZXcuaDwvaW5jbHVkZT4KICAgICA8aW5j
bHVkZT5saWIvcHJpbnQvcHJpbnRvcHRpb25zcGFnZS5oPC9pbmNsdWRlPgogICAgIDxpbmNsdWRl
PmxpYi9yZW5kZXJpbmdpbnRlbnQuaDwvaW5jbHVkZT4KLSAgICA8aW5jbHVkZT5saWIvYmFja2dy
b3VuZGNvbG9yd2lkZ2V0L2JhY2tncm91bmRjb2xvcndpZGdldC5oPC9pbmNsdWRlPgogICAgIDxr
Y2ZnZmlsZSBuYW1lPSJnd2Vudmlld3JjIi8+CiAgICAgPGdyb3VwIG5hbWU9IlNpZGVCYXIiPgog
ICAgICAgICA8ZW50cnkgbmFtZT0iUHJlZmVycmVkTWV0YUluZm9LZXlMaXN0IiB0eXBlPSJTdHJp
bmdMaXN0Ij4KQEAgLTM3LDE0ICszNiw4IEBACiAgICAgICAgICAgICA8ZGVmYXVsdD50cnVlPC9k
ZWZhdWx0PgogICAgICAgICA8L2VudHJ5PgogCi0gICAgICAgIDxlbnRyeSBuYW1lPSJCYWNrZ3Jv
dW5kQ29sb3JNb2RlIiB0eXBlPSJFbnVtIj4KLSAgICAgICAgICAgIDxjaG9pY2VzIG5hbWU9Ikd3
ZW52aWV3OjpCYWNrZ3JvdW5kQ29sb3JXaWRnZXQ6OkNvbG9yTW9kZSI+Ci0gICAgICAgICAgICAg
ICAgPGNob2ljZSBuYW1lPSJCYWNrZ3JvdW5kQ29sb3JXaWRnZXQ6OkF1dG8iLz4KLSAgICAgICAg
ICAgICAgICA8Y2hvaWNlIG5hbWU9IkJhY2tncm91bmRDb2xvcldpZGdldDo6TGlnaHQiLz4KLSAg
ICAgICAgICAgICAgICA8Y2hvaWNlIG5hbWU9IkJhY2tncm91bmRDb2xvcldpZGdldDo6TmV1dHJh
bCIvPgotICAgICAgICAgICAgICAgIDxjaG9pY2UgbmFtZT0iQmFja2dyb3VuZENvbG9yV2lkZ2V0
OjpEYXJrIi8+Ci0gICAgICAgICAgICA8L2Nob2ljZXM+Ci0gICAgICAgICAgICA8ZGVmYXVsdD5C
YWNrZ3JvdW5kQ29sb3JXaWRnZXQ6OkF1dG88L2RlZmF1bHQ+CisgICAgICAgIDxlbnRyeSBuYW1l
PSJWaWV3QmFja2dyb3VuZFZhbHVlIiB0eXBlPSJJbnQiPgorICAgICAgICAgICAgPGRlZmF1bHQ+
MTAwPC9kZWZhdWx0PgogICAgICAgICA8L2VudHJ5PgogCiAgICAgICAgIDxlbnRyeSBuYW1lPSJI
aXN0b3J5RW5hYmxlZCIgdHlwZT0iQm9vbCI+CmRpZmYgLS1naXQgYS9saWIvem9vbWNvbWJvYm94
L3pvb21jb21ib2JveC5jcHAgYi9saWIvem9vbWNvbWJvYm94L3pvb21jb21ib2JveC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiM2RmMTdiLi4wMDAwMDAwMAotLS0gYS9saWIv
em9vbWNvbWJvYm94L3pvb21jb21ib2JveC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNzAgKzAs
MCBAQAotLy8gU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogMjAyMSBOb2FoIERhdmlzIDxub2FoYWR2
c0BnbWFpbC5jb20+Ci0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQTC0yLjEtb3ItbGF0
ZXIKLQotI2luY2x1ZGUgInpvb21jb21ib2JveC5oIgotI2luY2x1ZGUgInpvb21jb21ib2JveF9w
LmgiCi0KLSNpbmNsdWRlIDxRQWJzdHJhY3RJdGVtVmlldz4KLSNpbmNsdWRlIDxRQWN0aW9uPgot
I2luY2x1ZGUgPFFFdmVudD4KLSNpbmNsdWRlIDxRTGluZUVkaXQ+Ci0jaW5jbHVkZSA8UU1vdXNl
RXZlbnQ+Ci0jaW5jbHVkZSA8UVNpZ25hbEJsb2NrZXI+Ci0KLSNpbmNsdWRlIDxjbWF0aD4KLQot
dXNpbmcgbmFtZXNwYWNlIEd3ZW52aWV3OwotCi1ab29tVmFsaWRhdG9yOjpab29tVmFsaWRhdG9y
KHFyZWFsIG1pbmltdW0sIHFyZWFsIG1heGltdW0sIFpvb21Db21ib0JveCAqcSwgWm9vbUNvbWJv
Qm94UHJpdmF0ZSAqZCwgUVdpZGdldCAqcGFyZW50KQotICAgIDogUVZhbGlkYXRvcihwYXJlbnQp
Ci0gICAgLCBtX21pbmltdW0obWluaW11bSkKLSAgICAsIG1fbWF4aW11bShtYXhpbXVtKQotICAg
ICwgbV96b29tQ29tYm9Cb3gocSkKLSAgICAsIG1fem9vbUNvbWJvQm94UHJpdmF0ZShkKQotewot
fQotCi1ab29tVmFsaWRhdG9yOjp+Wm9vbVZhbGlkYXRvcigpIG5vZXhjZXB0Ci17Ci19Ci0KLXFy
ZWFsIFpvb21WYWxpZGF0b3I6Om1pbmltdW0oKSBjb25zdAotewotICAgIHJldHVybiBtX21pbmlt
dW07Ci19Ci0KLXZvaWQgWm9vbVZhbGlkYXRvcjo6c2V0TWluaW11bShjb25zdCBxcmVhbCBtaW5p
bXVtKQotewotICAgIGlmIChtX21pbmltdW0gPT0gbWluaW11bSkgewotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIG1fbWluaW11bSA9IG1pbmltdW07Ci0gICAgUV9FTUlUIGNoYW5nZWQoKTsK
LX0KLQotcXJlYWwgWm9vbVZhbGlkYXRvcjo6bWF4aW11bSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fbWF4aW11bTsKLX0KLQotdm9pZCBab29tVmFsaWRhdG9yOjpzZXRNYXhpbXVtKGNvbnN0IHFy
ZWFsIG1heGltdW0pCi17Ci0gICAgaWYgKG1fbWF4aW11bSA9PSBtYXhpbXVtKSB7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgbV9tYXhpbXVtID0gbWF4aW11bTsKLSAgICBRX0VNSVQgY2hh
bmdlZCgpOwotfQotCi1RVmFsaWRhdG9yOjpTdGF0ZSBab29tVmFsaWRhdG9yOjp2YWxpZGF0ZShR
U3RyaW5nICZpbnB1dCwgaW50ICZwb3MpIGNvbnN0Ci17Ci0gICAgUV9VTlVTRUQocG9zKQotICAg
IGlmIChtX3pvb21Db21ib0JveC0+ZmluZFRleHQoaW5wdXQsIFF0OjpNYXRjaEZpeGVkU3RyaW5n
KSA+IC0xKSB7Ci0gICAgICAgIHJldHVybiBRVmFsaWRhdG9yOjpBY2NlcHRhYmxlOwotICAgIH0K
LQotICAgIFFTdHJpbmcgY29weSA9IGlucHV0LnRyaW1tZWQoKTsKLSAgICBjb3B5LnJlbW92ZShs
b2NhbGUoKS5ncm91cFNlcGFyYXRvcigpKTsKLSAgICBjb3B5LnJlbW92ZShsb2NhbGUoKS5wZXJj
ZW50KCkpOwotICAgIGNvbnN0IGJvb2wgc3RhcnRzV2l0aE51bWJlciA9IGNvcHkuY29uc3RCZWdp
bigpLT5pc051bWJlcigpOwotCi0gICAgaWYgKHN0YXJ0c1dpdGhOdW1iZXIgfHwgY29weS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgcmV0dXJuIFFWYWxpZGF0b3I6OkludGVybWVkaWF0ZTsKLSAgICB9
Ci0KLSAgICBRVmFsaWRhdG9yOjpTdGF0ZSBzdGF0ZTsKLSAgICBib29sIG9rID0gZmFsc2U7Ci0g
ICAgaW50IHZhbHVlID0gbG9jYWxlKCkudG9JbnQoY29weSwgJm9rKTsKLSAgICBpZiAoIW9rIHx8
IHZhbHVlIDwgc3RkOjpjZWlsKG1fbWluaW11bSAqIDEwMCkgfHwgdmFsdWUgPiBzdGQ6OmZsb29y
KG1fbWF4aW11bSAqIDEwMCkpIHsKLSAgICAgICAgc3RhdGUgPSBRVmFsaWRhdG9yOjpJbnRlcm1l
ZGlhdGU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc3RhdGUgPSBRVmFsaWRhdG9yOjpBY2NlcHRh
YmxlOwotICAgIH0KLSAgICByZXR1cm4gc3RhdGU7Ci19Ci0KLVpvb21Db21ib0JveFByaXZhdGU6
Olpvb21Db21ib0JveFByaXZhdGUoWm9vbUNvbWJvQm94ICpxKQotICAgIDogcV9wdHIocSkKLSAg
ICAsIHZhbGlkYXRvcihuZXcgWm9vbVZhbGlkYXRvcigwLCAwLCBxLCB0aGlzKSkKLXsKLX0KLQot
Wm9vbUNvbWJvQm94Ojpab29tQ29tYm9Cb3goUVdpZGdldCAqcGFyZW50KQotICAgIDogUUNvbWJv
Qm94KHBhcmVudCkKLSAgICAsIGRfcHRyKG5ldyBab29tQ29tYm9Cb3hQcml2YXRlKHRoaXMpKQot
ewotICAgIFFfRChab29tQ29tYm9Cb3gpOwotCi0gICAgZC0+dmFsaWRhdG9yLT5zZXRPYmplY3RO
YW1lKFFMYXRpbjFTdHJpbmcoInpvb21WYWxpZGF0b3IiKSk7Ci0gICAgc2V0VmFsaWRhdG9yKGQt
PnZhbGlkYXRvcik7Ci0KLSAgICBzZXRFZGl0YWJsZSh0cnVlKTsKLSAgICBzZXRJbnNlcnRQb2xp
Y3koUUNvbWJvQm94OjpOb0luc2VydCk7Ci0gICAgLy8gUUxvY2FsZTo6cGVyY2VudCgpIHdpbGwg
cmV0dXJuIGEgUVN0cmluZyBpbiBRdCA2LgotICAgIC8vIFF0IGVuY291cmFnZXMgdXNpbmcgUVN0
cmluZyhsb2NhbGUoKS5wZXJjZW50KCkpIGluIFFMb2NhbGUgZG9jdW1lbnRhdGlvbi4KLSAgICBp
bnQgcGVyY2VudExlbmd0aCA9IFFTdHJpbmcobG9jYWxlKCkucGVyY2VudCgpKS5sZW5ndGgoKTsK
LSAgICBzZXRNaW5pbXVtQ29udGVudHNMZW5ndGgobG9jYWxlKCkudG9TdHJpbmcoOTk5OSkubGVu
Z3RoKCkgKyBwZXJjZW50TGVuZ3RoKTsKLQotICAgIGNvbm5lY3QobGluZUVkaXQoKSwgJlFMaW5l
RWRpdDo6dGV4dEVkaXRlZCwgdGhpcywgW3RoaXMsIGRdKGNvbnN0IFFTdHJpbmcgJnRleHQpIHsK
LSAgICAgICAgY29uc3QgYm9vbCBzdGFydHNXaXRoTnVtYmVyID0gdGV4dC5jb25zdEJlZ2luKCkt
PmlzTnVtYmVyKCk7Ci0gICAgICAgIGludCBtYXRjaGVzID0gMDsKLSAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBjb3VudCgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChpdGVtVGV4dChpKS5z
dGFydHNXaXRoKHRleHQsIFF0OjpDYXNlSW5zZW5zaXRpdmUpKSB7Ci0gICAgICAgICAgICAgICAg
bWF0Y2hlcyArPSAxOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFF0OjpNYXRj
aEZsYWdzIG1hdGNoRmxhZ3MgPSBzdGFydHNXaXRoTnVtYmVyIHx8IG1hdGNoZXMgPiAxID8gUXQ6
Ok1hdGNoRml4ZWRTdHJpbmcgOiBRdDo6TWF0Y2hTdGFydHNXaXRoOwotICAgICAgICBjb25zdCBp
bnQgdGV4dEluZGV4ID0gZmluZFRleHQodGV4dCwgbWF0Y2hGbGFncyk7Ci0gICAgICAgIGlmICh0
ZXh0SW5kZXggPCAwKSB7Ci0gICAgICAgICAgICBkLT52YWx1ZSA9IHZhbHVlRnJvbVRleHQodGV4
dCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRleHRJbmRleCA+PSAwIHx8IGQtPnZhbHVlID49
IG1pbmltdW0oKSkgewotICAgICAgICAgICAgLy8gdXBkYXRlIG9ubHkgd2hlbiBkb2luZyBzbyB3
b3VsZCBub3QgY2hhbmdlIHRoZSB0eXBlZCB0ZXh0IGR1ZQotICAgICAgICAgICAgLy8gdG8gYmVp
bmcgYmVsb3cgdGhlIG1pbmludW0gYXMgdGhhdCBtZWFucyB3ZSBjYW4ndCB0eXBlIGEgbmV3IHBl
cmNlbnRhZ2UKLSAgICAgICAgICAgIC8vIG9uZSBrZXkgYXQgYSB0aW1lLgotICAgICAgICAgICAg
aWYgKHRleHRJbmRleCA8IDApCi0gICAgICAgICAgICAgICAgZC0+bGFzdEN1c3RvbVpvb21WYWx1
ZSA9IGQtPnZhbHVlOwotICAgICAgICAgICAgdXBkYXRlRGlzcGxheWVkVGV4dCgpOwotICAgICAg
ICAgICAgYWN0aXZhdGVBbmRDaGFuZ2Vab29tVG8odGV4dEluZGV4KTsKLSAgICAgICAgICAgIGxp
bmVFZGl0KCktPnNldEN1cnNvclBvc2l0aW9uKGxpbmVFZGl0KCktPmN1cnNvclBvc2l0aW9uKCkg
LSAxKTsKLSAgICAgICAgfQotICAgIH0pOwotICAgIGNvbm5lY3QodGhpcywgcU92ZXJsb2FkPGlu
dD4oJlpvb21Db21ib0JveDo6aGlnaGxpZ2h0ZWQpLCB0aGlzLCAmWm9vbUNvbWJvQm94OjpjaGFu
Z2Vab29tVG8pOwotICAgIHZpZXcoKS0+aW5zdGFsbEV2ZW50RmlsdGVyKHRoaXMpOwotICAgIGNv
bm5lY3QodGhpcywgcU92ZXJsb2FkPGludD4oJlpvb21Db21ib0JveDo6YWN0aXZhdGVkKSwgdGhp
cywgJlpvb21Db21ib0JveDo6YWN0aXZhdGVBbmRDaGFuZ2Vab29tVG8pOwotfQotCi1ab29tQ29t
Ym9Cb3g6On5ab29tQ29tYm9Cb3goKSBub2V4Y2VwdAotewotfQotCi12b2lkIFpvb21Db21ib0Jv
eDo6c2V0QWN0aW9ucyhRQWN0aW9uICp6b29tVG9GaXRBY3Rpb24sIFFBY3Rpb24gKnpvb21Ub0Zp
bGxBY3Rpb24sIFFBY3Rpb24gKmFjdHVhbFNpemVBY3Rpb24pCi17Ci0gICAgUV9EKFpvb21Db21i
b0JveCk7Ci0gICAgZC0+c2V0QWN0aW9ucyh6b29tVG9GaXRBY3Rpb24sIHpvb21Ub0ZpbGxBY3Rp
b24sIGFjdHVhbFNpemVBY3Rpb24pOwotCi0gICAgY29ubmVjdCh6b29tVG9GaXRBY3Rpb24sICZR
QWN0aW9uOjp0b2dnbGVkLCB0aGlzLCAmWm9vbUNvbWJvQm94Ojp1cGRhdGVEaXNwbGF5ZWRUZXh0
KTsKLSAgICBjb25uZWN0KHpvb21Ub0ZpbGxBY3Rpb24sICZRQWN0aW9uOjp0b2dnbGVkLCB0aGlz
LCAmWm9vbUNvbWJvQm94Ojp1cGRhdGVEaXNwbGF5ZWRUZXh0KTsKLX0KLQotdm9pZCBab29tQ29t
Ym9Cb3hQcml2YXRlOjpzZXRBY3Rpb25zKFFBY3Rpb24gKnpvb21Ub0ZpdEFjdGlvbiwgUUFjdGlv
biAqem9vbVRvRmlsbEFjdGlvbiwgUUFjdGlvbiAqYWN0dWFsU2l6ZUFjdGlvbikKLXsKLSAgICBR
X1EoWm9vbUNvbWJvQm94KTsKLSAgICBxLT5jbGVhcigpOwotICAgIHEtPmFkZEl0ZW0oem9vbVRv
Rml0QWN0aW9uLT5pY29uVGV4dCgpLCBRVmFyaWFudDo6ZnJvbVZhbHVlKHpvb21Ub0ZpdEFjdGlv
bikpOyAvLyBpbmRleCA9IDAKLSAgICBxLT5hZGRJdGVtKHpvb21Ub0ZpbGxBY3Rpb24tPmljb25U
ZXh0KCksIFFWYXJpYW50Ojpmcm9tVmFsdWUoem9vbVRvRmlsbEFjdGlvbikpOyAvLyBpbmRleCA9
IDEKLSAgICBxLT5hZGRJdGVtKGFjdHVhbFNpemVBY3Rpb24tPmljb25UZXh0KCksIFFWYXJpYW50
Ojpmcm9tVmFsdWUoYWN0dWFsU2l6ZUFjdGlvbikpOyAvLyBpbmRleCA9IDIKLQotICAgIG1ab29t
VG9GaXRBY3Rpb24gPSB6b29tVG9GaXRBY3Rpb247Ci0gICAgbVpvb21Ub0ZpbGxBY3Rpb24gPSB6
b29tVG9GaWxsQWN0aW9uOwotICAgIG1BY3R1YWxTaXplQWN0aW9uID0gYWN0dWFsU2l6ZUFjdGlv
bjsKLX0KLQotcXJlYWwgWm9vbUNvbWJvQm94Ojp2YWx1ZSgpIGNvbnN0Ci17Ci0gICAgUV9EKGNv
bnN0IFpvb21Db21ib0JveCk7Ci0gICAgcmV0dXJuIGQtPnZhbHVlOwotfQotCi12b2lkIFpvb21D
b21ib0JveDo6c2V0VmFsdWUocXJlYWwgdmFsdWUpCi17Ci0gICAgUV9EKFpvb21Db21ib0JveCk7
Ci0gICAgZC0+dmFsdWUgPSB2YWx1ZTsKLQotICAgIHVwZGF0ZURpc3BsYXllZFRleHQoKTsKLX0K
LQotcXJlYWwgWm9vbUNvbWJvQm94OjptaW5pbXVtKCkgY29uc3QKLXsKLSAgICBRX0QoY29uc3Qg
Wm9vbUNvbWJvQm94KTsKLSAgICByZXR1cm4gZC0+dmFsaWRhdG9yLT5taW5pbXVtKCk7Ci19Ci0K
LXZvaWQgWm9vbUNvbWJvQm94OjpzZXRNaW5pbXVtKHFyZWFsIG1pbmltdW0pCi17Ci0gICAgUV9E
KFpvb21Db21ib0JveCk7Ci0gICAgaWYgKHRoaXMtPm1pbmltdW0oKSA9PSBtaW5pbXVtKSB7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZC0+dmFsaWRhdG9yLT5zZXRNaW5pbXVtKG1pbmlt
dW0pOwotICAgIHNldFZhbHVlKHFNYXgobWluaW11bSwgZC0+dmFsdWUpKTsKLSAgICAvLyBHZW5l
cmF0ZSB6b29tIHByZXNldHMgYmVsb3cgMTAwJQotICAgIC8vIEZJWE1FOiBjb21ib2JveCB2YWx1
ZSBnZXRzIHJlc2V0IHRvIGxhc3QgaW5kZXggdmFsdWUgd2hlbiB0aGlzIGNvZGUgcnVucwotICAg
IGNvbnN0IGludCB6b29tVG9GaWxsQWN0aW9uSW5kZXggPSBmaW5kRGF0YShRVmFyaWFudDo6ZnJv
bVZhbHVlKGQtPm1ab29tVG9GaWxsQWN0aW9uKSk7Ci0gICAgY29uc3QgaW50IGFjdHVhbFNpemVB
Y3Rpb25JbmRleCA9IGZpbmREYXRhKFFWYXJpYW50Ojpmcm9tVmFsdWUoZC0+bUFjdHVhbFNpemVB
Y3Rpb24pKTsKLSAgICBmb3IgKGludCBpID0gYWN0dWFsU2l6ZUFjdGlvbkluZGV4IC0gMTsgaSA+
IHpvb21Ub0ZpbGxBY3Rpb25JbmRleDsgLS1pKSB7Ci0gICAgICAgIHJlbW92ZUl0ZW0oaSk7Ci0g
ICAgfQotICAgIHFyZWFsIHZhbHVlID0gbWluaW11bTsKLSAgICBmb3IgKGludCBpID0gem9vbVRv
RmlsbEFjdGlvbkluZGV4ICsgMTsgdmFsdWUgPCAxLjA7ICsraSkgewotICAgICAgICBpbnNlcnRJ
dGVtKGksIHRleHRGcm9tVmFsdWUodmFsdWUpLCBRVmFyaWFudDo6ZnJvbVZhbHVlKHZhbHVlKSk7
Ci0gICAgICAgIHZhbHVlICo9IDI7Ci0gICAgfQotfQotCi1xcmVhbCBab29tQ29tYm9Cb3g6Om1h
eGltdW0oKSBjb25zdAotewotICAgIFFfRChjb25zdCBab29tQ29tYm9Cb3gpOwotICAgIHJldHVy
biBkLT52YWxpZGF0b3ItPm1heGltdW0oKTsKLX0KLQotdm9pZCBab29tQ29tYm9Cb3g6OnNldE1h
eGltdW0ocXJlYWwgbWF4aW11bSkKLXsKLSAgICBRX0QoWm9vbUNvbWJvQm94KTsKLSAgICBpZiAo
dGhpcy0+bWF4aW11bSgpID09IG1heGltdW0pIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBkLT52YWxpZGF0b3ItPnNldE1heGltdW0obWF4aW11bSk7Ci0gICAgc2V0VmFsdWUocU1pbihk
LT52YWx1ZSwgbWF4aW11bSkpOwotICAgIC8vIEdlbmVyYXRlIHpvb20gcHJlc2V0cyBhYm92ZSAx
MDAlCi0gICAgLy8gTk9URTogVGhpcyBwcm9iYWJseSBoYXMgdGhlIHNhbWUgcHJvYmxlbSBhcyBz
ZXRNaW5pbXVtKCksCi0gICAgLy8gYnV0IHRoZSBwcm9ibGVtIGlzIG5ldmVyIGVub3VudGVyZWQg
c2luY2UgbWF4IHpvb20gZG9lc24ndCBhY3R1YWxseSBjaGFuZ2UKLSAgICBjb25zdCBpbnQgYWN0
dWFsU2l6ZUFjdGlvbkluZGV4ID0gZmluZERhdGEoUVZhcmlhbnQ6OmZyb21WYWx1ZShkLT5tQWN0
dWFsU2l6ZUFjdGlvbikpOwotICAgIGNvbnN0IGludCBjb3VudCA9IHRoaXMtPmNvdW50KCk7Ci0g
ICAgZm9yIChpbnQgaSA9IGFjdHVhbFNpemVBY3Rpb25JbmRleCArIDE7IGkgPCBjb3VudDsgKytp
KSB7Ci0gICAgICAgIHJlbW92ZUl0ZW0oaSk7Ci0gICAgfQotICAgIHFyZWFsIHZhbHVlID0gMi4w
OwotICAgIHdoaWxlICh2YWx1ZSA8IG1heGltdW0pIHsKLSAgICAgICAgYWRkSXRlbSh0ZXh0RnJv
bVZhbHVlKHZhbHVlKSwgUVZhcmlhbnQ6OmZyb21WYWx1ZSh2YWx1ZSkpOwotICAgICAgICB2YWx1
ZSAqPSAyOwotICAgIH0KLSAgICBpZiAodmFsdWUgPj0gbWF4aW11bSkgewotICAgICAgICBhZGRJ
dGVtKHRleHRGcm9tVmFsdWUobWF4aW11bSksIFFWYXJpYW50Ojpmcm9tVmFsdWUobWF4aW11bSkp
OwotICAgIH0KLX0KLQotcXJlYWwgWm9vbUNvbWJvQm94Ojp2YWx1ZUZyb21UZXh0KGNvbnN0IFFT
dHJpbmcgJnRleHQsIGJvb2wgKm9rKSBjb25zdAotewotICAgIFFfRChjb25zdCBab29tQ29tYm9C
b3gpOwotICAgIFFTdHJpbmcgY29weSA9IHRleHQ7Ci0gICAgY29weS5yZW1vdmUobG9jYWxlKCku
Z3JvdXBTZXBhcmF0b3IoKSk7Ci0gICAgY29weS5yZW1vdmUobG9jYWxlKCkucGVyY2VudCgpKTsK
LSAgICByZXR1cm4gcXJlYWwobG9jYWxlKCkudG9JbnQoY29weSwgb2spKSAvIDEwMC4wOwotfQot
Ci1RU3RyaW5nIFpvb21Db21ib0JveDo6dGV4dEZyb21WYWx1ZShjb25zdCBxcmVhbCB2YWx1ZSkg
Y29uc3QKLXsKLSAgICBRX0QoY29uc3QgWm9vbUNvbWJvQm94KTsKLSAgICBRU3RyaW5nIHRleHQg
PSBsb2NhbGUoKS50b1N0cmluZyhxUm91bmQodmFsdWUgKiAxMDApKTsKLSAgICBkLT52YWxpZGF0
b3ItPmZpeHVwKHRleHQpOwotICAgIHRleHQucmVtb3ZlKGxvY2FsZSgpLmdyb3VwU2VwYXJhdG9y
KCkpOwotICAgIHJldHVybiB0ZXh0LmFwcGVuZChsb2NhbGUoKS5wZXJjZW50KCkpOwotfQotCi12
b2lkIFpvb21Db21ib0JveDo6dXBkYXRlRGlzcGxheWVkVGV4dCgpCi17Ci0gICAgUV9EKFpvb21D
b21ib0JveCk7Ci0gICAgaWYgKGQtPm1ab29tVG9GaXRBY3Rpb24tPmlzQ2hlY2tlZCgpKSB7Ci0g
ICAgICAgIGxpbmVFZGl0KCktPnNldFRleHQoZC0+bVpvb21Ub0ZpdEFjdGlvbi0+aWNvblRleHQo
KSk7Ci0gICAgfSBlbHNlIGlmIChkLT5tWm9vbVRvRmlsbEFjdGlvbi0+aXNDaGVja2VkKCkpIHsK
LSAgICAgICAgbGluZUVkaXQoKS0+c2V0VGV4dChkLT5tWm9vbVRvRmlsbEFjdGlvbi0+aWNvblRl
eHQoKSk7Ci0gICAgfSBlbHNlIGlmIChkLT5tQWN0dWFsU2l6ZUFjdGlvbi0+aXNDaGVja2VkKCkp
IHsKLSAgICAgICAgbGluZUVkaXQoKS0+c2V0VGV4dChkLT5tQWN0dWFsU2l6ZUFjdGlvbi0+aWNv
blRleHQoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbGluZUVkaXQoKS0+c2V0VGV4dCh0ZXh0
RnJvbVZhbHVlKGQtPnZhbHVlKSk7Ci0gICAgfQotfQotCi12b2lkIEd3ZW52aWV3Ojpab29tQ29t
Ym9Cb3g6OnNob3dQb3B1cCgpCi17Ci0gICAgUV9EKFpvb21Db21ib0JveCk7Ci0KLSAgICBpZiAo
ZC0+bVpvb21Ub0ZpdEFjdGlvbi0+aXNDaGVja2VkKCkpIHsKLSAgICAgICAgc2V0Q3VycmVudElu
ZGV4KDApOwotICAgICAgICBkLT5sYXN0U2VsZWN0ZWRJbmRleCA9IDA7Ci0gICAgfSBlbHNlIGlm
IChkLT5tWm9vbVRvRmlsbEFjdGlvbi0+aXNDaGVja2VkKCkpIHsKLSAgICAgICAgc2V0Q3VycmVu
dEluZGV4KDEpOwotICAgICAgICBkLT5sYXN0U2VsZWN0ZWRJbmRleCA9IDE7Ci0gICAgfSBlbHNl
IGlmIChkLT5tQWN0dWFsU2l6ZUFjdGlvbi0+aXNDaGVja2VkKCkpIHsKLSAgICAgICAgY29uc3Qg
aW50IGFjdHVhbFNpemVBY3Rpb25JbmRleCA9IGZpbmREYXRhKFFWYXJpYW50Ojpmcm9tVmFsdWUo
ZC0+bUFjdHVhbFNpemVBY3Rpb24pKTsKLSAgICAgICAgc2V0Q3VycmVudEluZGV4KGFjdHVhbFNp
emVBY3Rpb25JbmRleCk7Ci0gICAgICAgIGQtPmxhc3RTZWxlY3RlZEluZGV4ID0gYWN0dWFsU2l6
ZUFjdGlvbkluZGV4OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIE5vdyBpcyBhIGdvb2QgdGlt
ZSB0byBzYXZlIHRoZSB6b29tIHZhbHVlIHRoYXQgd2FzIHNlbGVjdGVkIGJlZm9yZSB0aGUgdXNl
ciBjaGFuZ2VzIGl0IHRocm91Z2ggdGhlIHBvcHVwLgotICAgICAgICBkLT5sYXN0Q3VzdG9tWm9v
bVZhbHVlID0gZC0+dmFsdWU7Ci0KLSAgICAgICAgLy8gSGlnaGxpZ2h0IHRoZSBjb3JyZWN0IGlu
ZGV4IGlmIHRoZSBjdXJyZW50IHpvb20gdmFsdWUgZXhpc3RzIGFzIGFuIG9wdGlvbiBpbiB0aGUg
cG9wdXAuCi0gICAgICAgIC8vIElmIGl0IGRvZXNuJ3QgZXhpc3QsIGl0IGlzIHNldCB0byAtMS4K
LSAgICAgICAgZC0+bGFzdFNlbGVjdGVkSW5kZXggPSBmaW5kVGV4dCh0ZXh0RnJvbVZhbHVlKGQt
PnZhbHVlKSk7Ci0gICAgICAgIHNldEN1cnJlbnRJbmRleChkLT5sYXN0U2VsZWN0ZWRJbmRleCk7
Ci0gICAgfQotCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBlbWl0IGEgUUNvbWJvQm94OjpoaWdo
bGlnaHRlZCBldmVudCBqdXN0IGJlY2F1c2UgdGhlIHBvcHVwIGlzIG9wZW5lZC4KLSAgICBjb25z
dCBRU2lnbmFsQmxvY2tlciBibG9ja2VyKHRoaXMpOwotCi0gICAgUUNvbWJvQm94OjpzaG93UG9w
dXAoKTsKLX0KLQotYm9vbCBab29tQ29tYm9Cb3g6OmV2ZW50RmlsdGVyKFFPYmplY3QgKndhdGNo
ZWQsIFFFdmVudCAqZXZlbnQpCi17Ci0gICAgaWYgKHdhdGNoZWQgPT0gdmlldygpKSB7Ci0gICAg
ICAgIHN3aXRjaCAoZXZlbnQtPnR5cGUoKSkgewotICAgICAgICBjYXNlIFFFdmVudDo6SGlkZTog
ewotICAgICAgICAgICAgUV9EKFpvb21Db21ib0JveCk7Ci0gICAgICAgICAgICBjaGFuZ2Vab29t
VG8oZC0+bGFzdFNlbGVjdGVkSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBRRXZlbnQ6OlNob3J0Y3V0T3ZlcnJpZGU6IHsKLSAgICAgICAgICAgIGlm
ICh2aWV3KCktPmlzVmlzaWJsZVRvKHRoaXMpKSB7Ci0gICAgICAgICAgICAgICAgUUtleUV2ZW50
ICprZXlFdmVudCA9IHN0YXRpY19jYXN0PFFLZXlFdmVudCAqPihldmVudCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGtleUV2ZW50LT5rZXkoKSA9PSBRdDo6S2V5X0VzY2FwZSkgewotICAgICAgICAg
ICAgICAgICAgICBldmVudC0+YWNjZXB0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIFFDb21ib0Jv
eDo6ZXZlbnRGaWx0ZXIod2F0Y2hlZCwgZXZlbnQpOwotfQotCi12b2lkIFpvb21Db21ib0JveDo6
Zm9jdXNPdXRFdmVudChRRm9jdXNFdmVudCAqKQotewotICAgIFFfRChab29tQ29tYm9Cb3gpOwot
ICAgIC8vIFNob3VsZCB0aGUgdXNlciBoYXZlIHN0YXJ0ZWQgdHlwaW5nIGEgY3VzdG9tIHZhbHVl
Ci0gICAgLy8gdGhhdCB3YXMgb3V0IG9mIG91ciByYW5nZSwgdGhlbiB3ZSBoYXZlIGEgdGVtcG9y
YXJ5Ci0gICAgLy8gc3RhdGUgdGhhdCBpcyBpbGxlZ2FsLiBUaGlzIGlzIG5lZWRlZCB0byBhbGxv
dyBhIHVzZXIKLSAgICAvLyB0byB0eXBlIGEgem9vbSB3aXRoIG11bHRpcGxlIGtleXN0cm9rZXMs
IGJ1dCB3aGVuIHRoZQotICAgIC8vIHVzZXIgbGVhdmVzIGZvY3VzIHdlIHNob3VsZCByZXNldCB0
byB0aGUgbGFzdCBrbm93biAnZ29vZCcKLSAgICAvLyB6b29tIHZhbHVlLgotICAgIGlmIChkLT5s
YXN0U2VsZWN0ZWRJbmRleCA9PSAtMSkKLSAgICAgICAgc2V0VmFsdWUoZC0+bGFzdEN1c3RvbVpv
b21WYWx1ZSk7Ci19Ci0KLXZvaWQgWm9vbUNvbWJvQm94OjpjaGFuZ2Vab29tVG8oaW50IGluZGV4
KQotewotICAgIGlmIChpbmRleCA8IDApIHsKLSAgICAgICAgUV9EKFpvb21Db21ib0JveCk7Ci0g
ICAgICAgIFFfRU1JVCB6b29tQ2hhbmdlZChkLT5sYXN0Q3VzdG9tWm9vbVZhbHVlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIFFWYXJpYW50IGl0ZW1EYXRhID0gdGhpcy0+aXRlbURh
dGEoaW5kZXgpOwotICAgIFFBY3Rpb24gKmFjdGlvbiA9IGl0ZW1EYXRhLnZhbHVlPFFBY3Rpb24g
Kj4oKTsKLSAgICBpZiAoYWN0aW9uKSB7Ci0gICAgICAgIGlmICghYWN0aW9uLT5pc0NoZWNrYWJs
ZSgpIHx8ICFhY3Rpb24tPmlzQ2hlY2tlZCgpKSB7Ci0gICAgICAgICAgICBhY3Rpb24tPnRyaWdn
ZXIoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaXRlbURhdGEuY2FuQ29udmVydChRTWV0
YVR5cGU6OlFSZWFsKSkgewotICAgICAgICBRX0VNSVQgem9vbUNoYW5nZWQoaXRlbURhdGEudG9S
ZWFsKCkpOwotICAgIH0KLX0KLQotdm9pZCBab29tQ29tYm9Cb3g6OmFjdGl2YXRlQW5kQ2hhbmdl
Wm9vbVRvKGludCBpbmRleCkKLXsKLSAgICBRX0QoWm9vbUNvbWJvQm94KTsKLSAgICBkLT5sYXN0
U2VsZWN0ZWRJbmRleCA9IGluZGV4OwotCi0gICAgLy8gVGhlIHVzZXIgaGFzIGV4cGxpY2l0bHkg
c2VsZWN0ZWQgdGhpcyB6b29tIHZhbHVlIHNvIHdlCi0gICAgLy8gcmVtZW1iZXIgaXQgdGhlIHNh
bWUgd2F5IGFzIGlmIHRoZXkgaGFkIHR5cGVkIGl0IHRoZW1zZWx2ZXMuCi0gICAgUVZhcmlhbnQg
aXRlbURhdGEgPSB0aGlzLT5pdGVtRGF0YShpbmRleCk7Ci0gICAgaWYgKCFpdGVtRGF0YS52YWx1
ZTxRQWN0aW9uICo+KCkgJiYgaXRlbURhdGEuY2FuQ29udmVydChRTWV0YVR5cGU6OlFSZWFsKSkg
ewotICAgICAgICBkLT5sYXN0Q3VzdG9tWm9vbVZhbHVlID0gaXRlbURhdGEudG9SZWFsKCk7Ci0g
ICAgfQotCi0gICAgY2hhbmdlWm9vbVRvKGluZGV4KTsKLX0KZGlmZiAtLWdpdCBhL2xpYi96b29t
Y29tYm9ib3gvem9vbWNvbWJvYm94LmggYi9saWIvem9vbWNvbWJvYm94L3pvb21jb21ib2JveC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDg2OTU0Zi4uMDAwMDAwMDAKLS0tIGEv
bGliL3pvb21jb21ib2JveC96b29tY29tYm9ib3guaAorKysgL2Rldi9udWxsCkBAIC0xLDkwICsw
LDAgQEAKLS8vIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMjEgTm9haCBEYXZpcyA8bm9haGFk
dnNAZ21haWwuY29tPgotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4xLW9yLWxh
dGVyCi0KLSNpZm5kZWYgR1dFTlZJRVdfWk9PTUNPTUJPQk9YX0gKLSNkZWZpbmUgR1dFTlZJRVdf
Wk9PTUNPTUJPQk9YX0gKLQotI2luY2x1ZGUgPFFDb21ib0JveD4KLSNpbmNsdWRlIDxsaWIvZ3dl
bnZpZXdsaWJfZXhwb3J0Lmg+Ci0KLW5hbWVzcGFjZSBHd2VudmlldwotewotY2xhc3MgWm9vbUNv
bWJvQm94UHJpdmF0ZTsKLQotLyoqCi0gKiBRQ29tYm9Cb3ggc3ViY2xhc3MgZGVzaWduZWQgdG8g
YmUgc29tZXdoYXQgc2ltaWxhciB0byBRU3BpbkJveC4KLSAqIEFsbG93cyB0aGUgdXNlciB0byB1
c2Ugbm9uLWludGVnZXIgY29tYm9ib3ggbGlzdCBpdGVtcywKLSAqIGJ1dCBvbmx5IGFjY2VwdHMg
aW50ZWdlcnMgYXMgY3VzdG9tIGlucHV0LgotICoKLSAqIFRoaXMgY2xhc3MgaXMgc3RydWN0dXJl
ZCBpbiBhIHdheSBzbyB0aGF0IGNoYW5nZXMgdG8gdGhlIHpvb20gZG9uZSB0aHJvdWdoCi0gKiB1
c2VyIGludGVyYWN0aW9uIGFyZSBzaWduYWxsZWQgdG8gdGhlIG91dHNpZGUuIE9uIHRoZSBvdGhl
ciBoYW5kIGNoYW5nZXMKLSAqIGRvbmUgdG8gdGhlIHZpc3VhbCBzdGF0ZSBvZiB0aGlzIGNsYXNz
IHdpdGhvdXQgdXNlciBpbnRlcmFjdGlvbiB3aWxsIG5vdAotICogbGVhZCB0byBlbWl0dGVkIHpv
b20gY2hhbmdlcy9zaWduYWxzIGZyb20gdGhpcyBjbGFzcy4KLSAqLwotY2xhc3MgR1dFTlZJRVdM
SUJfRVhQT1JUIFpvb21Db21ib0JveCA6IHB1YmxpYyBRQ29tYm9Cb3gKLXsKLSAgICBRX09CSkVD
VAotICAgIFFfUFJPUEVSVFkocXJlYWwgdmFsdWUgUkVBRCB2YWx1ZSBXUklURSBzZXRWYWx1ZSkK
LSAgICBRX1BST1BFUlRZKHFyZWFsIG1pbmltdW0gUkVBRCBtaW5pbXVtIFdSSVRFIHNldE1pbmlt
dW0pCi0gICAgUV9QUk9QRVJUWShxcmVhbCBtYXhpbXVtIFJFQUQgbWF4aW11bSBXUklURSBzZXRN
YXhpbXVtKQotCi1wdWJsaWM6Ci0gICAgZXhwbGljaXQgWm9vbUNvbWJvQm94KFFXaWRnZXQgKnBh
cmVudCA9IG51bGxwdHIpOwotICAgIH5ab29tQ29tYm9Cb3goKSBvdmVycmlkZTsKLQotICAgIHZv
aWQgc2V0QWN0aW9ucyhRQWN0aW9uICp6b29tVG9GaXRBY3Rpb24sIFFBY3Rpb24gKnpvb21Ub0Zp
bGxBY3Rpb24sIFFBY3Rpb24gKmFjdHVhbFNpemVBY3Rpb24pOwotCi0gICAgcXJlYWwgdmFsdWUo
KSBjb25zdDsKLSAgICAvKioKLSAgICAgKiBDYWxsZWQgd2hlbiB0aGUgdmFsdWUgdGhhdCBpcyBi
ZWluZyBkaXNwbGF5ZWQgc2hvdWxkIGNoYW5nZS4KLSAgICAgKiBDYWxsaW5nIHRoaXMgbWV0aG9k
IGRvZXNuJ3QgYWZmZWN0IHRoZSB6b29tIG9mIHRoZSBjdXJyZW50bHkgdmlld2VkIGltYWdlLgot
ICAgICAqLwotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgcXJlYWwgdmFsdWUpOwotCi0gICAgcXJl
YWwgbWluaW11bSgpIGNvbnN0OwotICAgIHZvaWQgc2V0TWluaW11bShjb25zdCBxcmVhbCBtaW5p
bXVtKTsKLQotICAgIHFyZWFsIG1heGltdW0oKSBjb25zdDsKLSAgICB2b2lkIHNldE1heGltdW0o
Y29uc3QgcXJlYWwgbWF4aW11bSk7Ci0KLSAgICAvLy8gR2V0cyBhbiBpbnRlZ2VyIHZhbHVlIGZy
b20gdGV4dC4KLSAgICBxcmVhbCB2YWx1ZUZyb21UZXh0KGNvbnN0IFFTdHJpbmcgJnRleHQsIGJv
b2wgKm9rID0gbnVsbHB0cikgY29uc3Q7Ci0KLSAgICAvLy8gR2V0cyBhcHByb3ByaWF0ZWx5IGRl
Y29yYXRlZCB0ZXh0IGZyb20gYW4gaW50ZWdlciB2YWx1ZS4KLSAgICBRU3RyaW5nIHRleHRGcm9t
VmFsdWUoY29uc3QgcXJlYWwgdmFsdWUpIGNvbnN0OwotCi0gICAgdm9pZCB1cGRhdGVEaXNwbGF5
ZWRUZXh0KCk7Ci0KLSAgICB2b2lkIHNob3dQb3B1cCgpIG92ZXJyaWRlOwotCi1RX1NJR05BTFM6
Ci0gICAgdm9pZCB6b29tQ2hhbmdlZChxcmVhbCB6b29tKTsKLQotcHJvdGVjdGVkOgotICAgIGJv
b2wgZXZlbnRGaWx0ZXIoUU9iamVjdCAqd2F0Y2hlZCwgUUV2ZW50ICpldmVudCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBmb2N1c091dEV2ZW50KFFGb2N1c0V2ZW50ICpldmVudCkgb3ZlcnJpZGU7Ci0K
LXByaXZhdGUgUV9TTE9UUzoKLSAgICAvKioKLSAgICAgKiBUaGlzIG1ldGhvZCBjaGFuZ2VzIHRo
ZSB6b29tIG1vZGUgb3IgdmFsdWUgb2YgdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgaW1hZ2UgaW4g
cmVzcG9uc2UgdG8KLSAgICAgKiB1c2VyIGludGVyYWN0aW9uIHdpdGggdGhlIENvbWJvYm94JyBk
cm9wZG93biBtZW51LgotICAgICAqIEBwYXJhbSBpbmRleCBvZiB0aGUgem9vbSBtb2RlIG9yIHZh
bHVlIHRoYXQgdGhlIHVzZXIgaW50ZXJhY3RlZCB3aXRoLgotICAgICAqLwotICAgIHZvaWQgY2hh
bmdlWm9vbVRvKGludCBpbmRleCk7Ci0KLSAgICAvKioKLSAgICAgKiBTZXRzIHRoZSBpbmRleCBh
cyB0aGUgZmFsbGJhY2sgd2hlbiB0aGUgcG9wdXAgbWVudSBpcyBjbG9zZWQgd2l0aG91dCBzZWxl
Y3Rpb24gaW4gdGhlCi0gICAgICogZnV0dXJlIGFuZCB0aGVuIGNhbGxzIGNoYW5nZVpvb21Ubygp
LgotICAgICAqIEBzZWUgY2hhbmdlWm9vbVRvKCkKLSAgICAgKi8KLSAgICB2b2lkIGFjdGl2YXRl
QW5kQ2hhbmdlWm9vbVRvKGludCBpbmRleCk7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPFpvb21Db21ib0JveFByaXZhdGU+IGRfcHRyOwotICAgIFFfREVDTEFSRV9QUklW
QVRFKFpvb21Db21ib0JveCkKLSAgICBRX0RJU0FCTEVfQ09QWShab29tQ29tYm9Cb3gpCi19Owot
Ci19Ci0KLSNlbmRpZiAvLyBHV0VOVklFV19aT09NQ09NQk9CT1hfSApkaWZmIC0tZ2l0IGEvbGli
L3pvb21jb21ib2JveC96b29tY29tYm9ib3hfcC5oIGIvbGliL3pvb21jb21ib2JveC96b29tY29t
Ym9ib3hfcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODRkYzRhZS4uMDAwMDAw
MDAKLS0tIGEvbGliL3pvb21jb21ib2JveC96b29tY29tYm9ib3hfcC5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjAgKzAsMCBAQAotLy8gU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogMjAyMSBOb2FoIERh
dmlzIDxub2FoYWR2c0BnbWFpbC5jb20+Ci0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQ
TC0yLjEtb3ItbGF0ZXIKLQotI2lmbmRlZiBHV0VOVklFV19aT09NQ09NQk9CT1hfUF9ICi0jZGVm
aW5lIEdXRU5WSUVXX1pPT01DT01CT0JPWF9QX0gKLQotI2luY2x1ZGUgInpvb21jb21ib2JveC5o
IgotCi1uYW1lc3BhY2UgR3dlbnZpZXcKLXsKLWNsYXNzIFpvb21WYWxpZGF0b3IgOiBwdWJsaWMg
UVZhbGlkYXRvcgotewotICAgIFFfT0JKRUNUCi0gICAgUV9QUk9QRVJUWShxcmVhbCBtaW5pbXVt
IFJFQUQgbWluaW11bSBXUklURSBzZXRNaW5pbXVtIE5PVElGWSBjaGFuZ2VkKQotICAgIFFfUFJP
UEVSVFkocXJlYWwgbWF4aW11bSBSRUFEIG1heGltdW0gV1JJVEUgc2V0TWF4aW11bSBOT1RJRlkg
Y2hhbmdlZCkKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBab29tVmFsaWRhdG9yKHFyZWFsIG1pbmlt
dW0sIHFyZWFsIG1heGltdW0sIFpvb21Db21ib0JveCAqcSwgWm9vbUNvbWJvQm94UHJpdmF0ZSAq
ZCwgUVdpZGdldCAqcGFyZW50ID0gbnVsbHB0cik7Ci0gICAgflpvb21WYWxpZGF0b3IoKSBvdmVy
cmlkZTsKLQotICAgIHFyZWFsIG1pbmltdW0oKSBjb25zdDsKLSAgICB2b2lkIHNldE1pbmltdW0o
Y29uc3QgcXJlYWwgbWluaW11bSk7Ci0KLSAgICBxcmVhbCBtYXhpbXVtKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRNYXhpbXVtKGNvbnN0IHFyZWFsIG1heGltdW0pOwotCi0gICAgUVZhbGlkYXRvcjo6
U3RhdGUgdmFsaWRhdGUoUVN0cmluZyAmaW5wdXQsIGludCAmcG9zKSBjb25zdCBvdmVycmlkZTsK
LQotcHJpdmF0ZToKLSAgICBxcmVhbCBtX21pbmltdW07Ci0gICAgcXJlYWwgbV9tYXhpbXVtOwot
ICAgIFpvb21Db21ib0JveCAqbV96b29tQ29tYm9Cb3g7Ci0gICAgWm9vbUNvbWJvQm94UHJpdmF0
ZSAqbV96b29tQ29tYm9Cb3hQcml2YXRlOwotICAgIFFfRElTQUJMRV9DT1BZKFpvb21WYWxpZGF0
b3IpCi19OwotCi1jbGFzcyBab29tQ29tYm9Cb3hQcml2YXRlCi17Ci0gICAgUV9ERUNMQVJFX1BV
QkxJQyhab29tQ29tYm9Cb3gpCi0KLXB1YmxpYzoKLSAgICBab29tQ29tYm9Cb3hQcml2YXRlKFpv
b21Db21ib0JveCAqcSk7Ci0KLSAgICB2b2lkIHNldEFjdGlvbnMoUUFjdGlvbiAqem9vbVRvRml0
QWN0aW9uLCBRQWN0aW9uICp6b29tVG9GaWxsQWN0aW9uLCBRQWN0aW9uICphY3R1YWxTaXplQWN0
aW9uKTsKLQotcHVibGljOgotICAgIFpvb21Db21ib0JveCAqY29uc3QgcV9wdHI7Ci0KLSAgICBR
QWN0aW9uICptWm9vbVRvRml0QWN0aW9uID0gbnVsbHB0cjsKLSAgICBRQWN0aW9uICptWm9vbVRv
RmlsbEFjdGlvbiA9IG51bGxwdHI7Ci0gICAgUUFjdGlvbiAqbUFjdHVhbFNpemVBY3Rpb24gPSBu
dWxscHRyOwotCi0gICAgcXJlYWwgdmFsdWUgPSAxLjA7Ci0gICAgWm9vbVZhbGlkYXRvciAqdmFs
aWRhdG9yID0gbnVsbHB0cjsKLSAgICBpbnQgbGFzdFNlbGVjdGVkSW5kZXggPSAwOwotICAgIHFy
ZWFsIGxhc3RDdXN0b21ab29tVmFsdWUgPSAxLjA7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBHV0VO
VklFV19aT09NQ09NQk9CT1hfUF9ICmRpZmYgLS1naXQgYS9saWIvem9vbXdpZGdldC5jcHAgYi9s
aWIvem9vbXdpZGdldC5jcHAKaW5kZXggZGYwYTNkOTguLjgxNDY4YzVjIDEwMDY0NAotLS0gYS9s
aWIvem9vbXdpZGdldC5jcHAKKysrIGIvbGliL3pvb213aWRnZXQuY3BwCkBAIC0yNiwxNCArMjYs
MTYgQEAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg
Q2FtYnJpZGdlLCBNQSAwMjExMC0xMzAxLCBVU0EKIAogLy8gUXQKICNpbmNsdWRlIDxRQWN0aW9u
PgorI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRU3BpbkJveD4KICNpbmNsdWRl
IDxRSEJveExheW91dD4KICNpbmNsdWRlIDxRU2xpZGVyPgogLy8gS0YKIAogLy8gTG9jYWwKLSNp
bmNsdWRlICJzaWduYWxibG9ja2VyLmgiCi0jaW5jbHVkZSAiem9vbWNvbWJvYm94L3pvb21jb21i
b2JveC5oIgogI2luY2x1ZGUgInpvb21zbGlkZXIuaCIKKyNpbmNsdWRlICJzaWduYWxibG9ja2Vy
LmgiCisjaW5jbHVkZSAic3RhdHVzYmFydG9vbGJ1dHRvbi5oIgogCiBuYW1lc3BhY2UgR3dlbnZp
ZXcKIHsKQEAgLTUzLDkgKzU1LDE0IEBAIGlubGluZSBxcmVhbCB6b29tRm9yU2xpZGVyVmFsdWUo
aW50IHNsaWRlclZhbHVlKQogc3RydWN0IFpvb21XaWRnZXRQcml2YXRlIHsKICAgICBab29tV2lk
Z2V0ICpxOwogCi0gICAgWm9vbVNsaWRlciAqbVpvb21TbGlkZXI7Ci0gICAgWm9vbUNvbWJvQm94
ICptWm9vbUNvbWJvQm94OwotICAgIFFBY3Rpb24gKm1BY3R1YWxTaXplQWN0aW9uID0gbnVsbHB0
cjsKKyAgICBTdGF0dXNCYXJUb29sQnV0dG9uKiBtWm9vbVRvRml0QnV0dG9uOworICAgIFN0YXR1
c0JhclRvb2xCdXR0b24qIG1BY3R1YWxTaXplQnV0dG9uOworICAgIFN0YXR1c0JhclRvb2xCdXR0
b24qIG1ab29tVG9GaWxsQnV0dG9uOworICAgIFpvb21TbGlkZXIqIG1ab29tU2xpZGVyOworICAg
IFFTcGluQm94KiBtWm9vbVNwaW5Cb3g7CisgICAgUUFjdGlvbiogbVpvb21Ub0ZpdEFjdGlvbjsK
KyAgICBRQWN0aW9uKiBtQWN0dWFsU2l6ZUFjdGlvbjsKKyAgICBRQWN0aW9uKiBtWm9vbVRvRmls
bEFjdGlvbjsKIAogICAgIGJvb2wgbVpvb21VcGRhdGVkQnlTbGlkZXI7CiAKQEAgLTgwLDIxICs4
Nyw0NSBAQCBab29tV2lkZ2V0Ojpab29tV2lkZ2V0KFFXaWRnZXQgKnBhcmVudCkKIAogICAgIHNl
dFNpemVQb2xpY3koUVNpemVQb2xpY3k6OkZpeGVkLCBRU2l6ZVBvbGljeTo6TWluaW11bSk7CiAK
KyAgICBkLT5tWm9vbVRvRml0QnV0dG9uID0gbmV3IFN0YXR1c0JhclRvb2xCdXR0b247CisgICAg
ZC0+bUFjdHVhbFNpemVCdXR0b24gPSBuZXcgU3RhdHVzQmFyVG9vbEJ1dHRvbjsKKyAgICBkLT5t
Wm9vbVRvRmlsbEJ1dHRvbiA9IG5ldyBTdGF0dXNCYXJUb29sQnV0dG9uOworICAgIGQtPm1ab29t
VG9GaXRCdXR0b24tPnNldENoZWNrYWJsZSh0cnVlKTsKKyAgICBkLT5tQWN0dWFsU2l6ZUJ1dHRv
bi0+c2V0Q2hlY2thYmxlKHRydWUpOworICAgIGQtPm1ab29tVG9GaWxsQnV0dG9uLT5zZXRDaGVj
a2FibGUodHJ1ZSk7CisgICAgZC0+bVpvb21Ub0ZpdEJ1dHRvbi0+c2V0Q2hlY2tlZCh0cnVlKTsK
KworICAgIGlmIChRQXBwbGljYXRpb246OmlzTGVmdFRvUmlnaHQoKSkgeworICAgICAgICBkLT5t
Wm9vbVRvRml0QnV0dG9uLT5zZXRHcm91cFBvc2l0aW9uKFN0YXR1c0JhclRvb2xCdXR0b246Okdy
b3VwTGVmdCk7CisgICAgICAgIGQtPm1ab29tVG9GaWxsQnV0dG9uLT5zZXRHcm91cFBvc2l0aW9u
KFN0YXR1c0JhclRvb2xCdXR0b246Okdyb3VwQ2VudGVyKTsKKyAgICAgICAgZC0+bUFjdHVhbFNp
emVCdXR0b24tPnNldEdyb3VwUG9zaXRpb24oU3RhdHVzQmFyVG9vbEJ1dHRvbjo6R3JvdXBSaWdo
dCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZC0+bUFjdHVhbFNpemVCdXR0b24tPnNldEdyb3Vw
UG9zaXRpb24oU3RhdHVzQmFyVG9vbEJ1dHRvbjo6R3JvdXBMZWZ0KTsKKyAgICAgICAgZC0+bVpv
b21Ub0ZpbGxCdXR0b24tPnNldEdyb3VwUG9zaXRpb24oU3RhdHVzQmFyVG9vbEJ1dHRvbjo6R3Jv
dXBDZW50ZXIpOworICAgICAgICBkLT5tWm9vbVRvRml0QnV0dG9uLT5zZXRHcm91cFBvc2l0aW9u
KFN0YXR1c0JhclRvb2xCdXR0b246Okdyb3VwUmlnaHQpOworICAgIH0KKwogICAgIGQtPm1ab29t
U2xpZGVyID0gbmV3IFpvb21TbGlkZXI7CiAgICAgZC0+bVpvb21TbGlkZXItPnNldE1pbmltdW1X
aWR0aCgxNTApOwogICAgIGQtPm1ab29tU2xpZGVyLT5zbGlkZXIoKS0+c2V0U2luZ2xlU3RlcChp
bnQoUFJFQ0lTSU9OKSk7CiAgICAgZC0+bVpvb21TbGlkZXItPnNsaWRlcigpLT5zZXRQYWdlU3Rl
cCgzICogaW50KFBSRUNJU0lPTikpOwogICAgIGNvbm5lY3QoZC0+bVpvb21TbGlkZXItPnNsaWRl
cigpLCAmUUFic3RyYWN0U2xpZGVyOjphY3Rpb25UcmlnZ2VyZWQsIHRoaXMsICZab29tV2lkZ2V0
OjpzbG90Wm9vbVNsaWRlckFjdGlvblRyaWdnZXJlZCk7CiAKLSAgICBkLT5tWm9vbUNvbWJvQm94
ID0gbmV3IFpvb21Db21ib0JveDsKLSAgICBjb25uZWN0KGQtPm1ab29tQ29tYm9Cb3gsICZab29t
Q29tYm9Cb3g6Onpvb21DaGFuZ2VkLCB0aGlzLCAmWm9vbVdpZGdldDo6em9vbUNoYW5nZWQpOwor
ICAgIGQtPm1ab29tU3BpbkJveCA9IG5ldyBRU3BpbkJveDsKKyAgICBkLT5tWm9vbVNwaW5Cb3gt
PnNldEZpeGVkV2lkdGgoZC0+bVpvb21TcGluQm94LT5mb250TWV0cmljcygpLmJvdW5kaW5nUmVj
dChRU3RyaW5nTGl0ZXJhbCgiICAgICAgMTAwMCUgICAgICAiKSkud2lkdGgoKSk7CisgICAgZC0+
bVpvb21TcGluQm94LT5zZXRBbGlnbm1lbnQoUXQ6OkFsaWduQ2VudGVyKTsKKyAgICBkLT5tWm9v
bVNwaW5Cb3gtPnNldFN1ZmZpeChRTGF0aW4xU3RyaW5nKCIlIikpOworICAgIGNvbm5lY3QoZC0+
bVpvb21TcGluQm94LCBRT3ZlcmxvYWQ8aW50Pjo6b2YoJlFTcGluQm94Ojp2YWx1ZUNoYW5nZWQp
LCBbPV0oaW50IGkpeyBzZXRDdXN0b21ab29tRnJvbVNwaW5Cb3goc3RhdGljX2Nhc3Q8cXJlYWw+
KGkpKTsgfSk7CiAKICAgICAvLyBMYXlvdXQKICAgICBhdXRvICpsYXlvdXQgPSBuZXcgUUhCb3hM
YXlvdXQodGhpcyk7CiAgICAgbGF5b3V0LT5zZXRDb250ZW50c01hcmdpbnMoMCwgMCwgMCwgMCk7
CiAgICAgbGF5b3V0LT5zZXRTcGFjaW5nKDApOworICAgIGxheW91dC0+YWRkV2lkZ2V0KGQtPm1a
b29tVG9GaXRCdXR0b24pOworICAgIGxheW91dC0+YWRkV2lkZ2V0KGQtPm1ab29tVG9GaWxsQnV0
dG9uKTsKKyAgICBsYXlvdXQtPmFkZFdpZGdldChkLT5tQWN0dWFsU2l6ZUJ1dHRvbik7CiAgICAg
bGF5b3V0LT5hZGRXaWRnZXQoZC0+bVpvb21TbGlkZXIpOwotICAgIGxheW91dC0+YWRkV2lkZ2V0
KGQtPm1ab29tQ29tYm9Cb3gpOworICAgIGxheW91dC0+YWRkV2lkZ2V0KGQtPm1ab29tU3BpbkJv
eCk7CiB9CiAKIFpvb21XaWRnZXQ6On5ab29tV2lkZ2V0KCkKQEAgLTEwNCwxOCArMTM1LDI4IEBA
IFpvb21XaWRnZXQ6On5ab29tV2lkZ2V0KCkKIAogdm9pZCBab29tV2lkZ2V0OjpzZXRBY3Rpb25z
KFFBY3Rpb24gKnpvb21Ub0ZpdEFjdGlvbiwgUUFjdGlvbiAqYWN0dWFsU2l6ZUFjdGlvbiwgUUFj
dGlvbiAqem9vbUluQWN0aW9uLCBRQWN0aW9uICp6b29tT3V0QWN0aW9uLCBRQWN0aW9uICp6b29t
VG9GaWxsQWN0aW9uKQogeworICAgIGQtPm1ab29tVG9GaXRBY3Rpb24gPSB6b29tVG9GaXRBY3Rp
b247CisgICAgZC0+bUFjdHVhbFNpemVBY3Rpb24gPSBhY3R1YWxTaXplQWN0aW9uOworICAgIGQt
Pm1ab29tVG9GaWxsQWN0aW9uID0gem9vbVRvRmlsbEFjdGlvbjsKKworICAgIGQtPm1ab29tVG9G
aXRCdXR0b24tPnNldERlZmF1bHRBY3Rpb24oem9vbVRvRml0QWN0aW9uKTsKKyAgICBkLT5tQWN0
dWFsU2l6ZUJ1dHRvbi0+c2V0RGVmYXVsdEFjdGlvbihhY3R1YWxTaXplQWN0aW9uKTsKKyAgICBk
LT5tWm9vbVRvRmlsbEJ1dHRvbi0+c2V0RGVmYXVsdEFjdGlvbih6b29tVG9GaWxsQWN0aW9uKTsK
KwogICAgIGQtPm1ab29tU2xpZGVyLT5zZXRab29tSW5BY3Rpb24oem9vbUluQWN0aW9uKTsKICAg
ICBkLT5tWm9vbVNsaWRlci0+c2V0Wm9vbU91dEFjdGlvbih6b29tT3V0QWN0aW9uKTsKIAotICAg
IGQtPm1ab29tQ29tYm9Cb3gtPnNldEFjdGlvbnMoem9vbVRvRml0QWN0aW9uLCB6b29tVG9GaWxs
QWN0aW9uLCBhY3R1YWxTaXplQWN0aW9uKTsKLQogICAgIGF1dG8gKmFjdGlvbkdyb3VwID0gbmV3
IFFBY3Rpb25Hcm91cChkLT5xKTsKLSAgICBhY3Rpb25Hcm91cC0+YWRkQWN0aW9uKHpvb21Ub0Zp
dEFjdGlvbik7Ci0gICAgYWN0aW9uR3JvdXAtPmFkZEFjdGlvbih6b29tVG9GaWxsQWN0aW9uKTsK
LSAgICBhY3Rpb25Hcm91cC0+YWRkQWN0aW9uKGFjdHVhbFNpemVBY3Rpb24pOwotICAgIGFjdGlv
bkdyb3VwLT5zZXRFeGNsdXNpb25Qb2xpY3koUUFjdGlvbkdyb3VwOjpFeGNsdXNpb25Qb2xpY3k6
OkV4Y2x1c2l2ZU9wdGlvbmFsKTsKKyAgICBhY3Rpb25Hcm91cC0+YWRkQWN0aW9uKGQtPm1ab29t
VG9GaXRBY3Rpb24pOworICAgIGFjdGlvbkdyb3VwLT5hZGRBY3Rpb24oZC0+bVpvb21Ub0ZpbGxB
Y3Rpb24pOworICAgIGFjdGlvbkdyb3VwLT5hZGRBY3Rpb24oZC0+bUFjdHVhbFNpemVBY3Rpb24p
OworICAgIGFjdGlvbkdyb3VwLT5zZXRFeGNsdXNpdmUodHJ1ZSk7CiAKLSAgICBkLT5tQWN0dWFs
U2l6ZUFjdGlvbiA9IGFjdHVhbFNpemVBY3Rpb247CisgICAgLy8gQWRqdXN0IHNpemVzCisgICAg
aW50IHdpZHRoID0gc3RkOjptYXgoe2QtPm1ab29tVG9GaXRCdXR0b24tPnNpemVIaW50KCkud2lk
dGgoKSwgZC0+bUFjdHVhbFNpemVCdXR0b24tPnNpemVIaW50KCkud2lkdGgoKSwgZC0+bVpvb21U
b0ZpbGxCdXR0b24tPnNpemVIaW50KCkud2lkdGgoKX0pOworICAgIGQtPm1ab29tVG9GaXRCdXR0
b24tPnNldEZpeGVkV2lkdGgod2lkdGgpOworICAgIGQtPm1BY3R1YWxTaXplQnV0dG9uLT5zZXRG
aXhlZFdpZHRoKHdpZHRoKTsKKyAgICBkLT5tWm9vbVRvRmlsbEJ1dHRvbi0+c2V0Rml4ZWRXaWR0
aCh3aWR0aCk7CiB9CiAKIHZvaWQgWm9vbVdpZGdldDo6c2xvdFpvb21TbGlkZXJBY3Rpb25Ucmln
Z2VyZWQoKQpAQCAtMTI3LDEwICsxNjgsNyBAQCB2b2lkIFpvb21XaWRnZXQ6OnNsb3Rab29tU2xp
ZGVyQWN0aW9uVHJpZ2dlcmVkKCkKIAogdm9pZCBab29tV2lkZ2V0OjpzZXRab29tKHFyZWFsIHpv
b20pCiB7Ci0gICAgaWYgKHpvb20gIT0gMS4wKSB7Ci0gICAgICAgIGQtPm1BY3R1YWxTaXplQWN0
aW9uLT5zZXRDaGVja2VkKGZhbHNlKTsKLSAgICB9Ci0gICAgZC0+bVpvb21Db21ib0JveC0+c2V0
VmFsdWUoem9vbSk7CisgICAgZC0+bVpvb21TcGluQm94LT5zZXRWYWx1ZShxUm91bmQoem9vbSAq
IFBSRUNJU0lPTikpOwogCiAgICAgLy8gRG9uJ3QgY2hhbmdlIHNsaWRlciB2YWx1ZSBpZiB3ZSBj
b21lIGhlcmUgYmVjYXVzZSB0aGUgc2xpZGVyIGNoYW5nZSwKICAgICAvLyBhdm9pZHMgY2hvcHB5
IHNsaWRpbmcgc2Nyb2xsLgpAQCAtMTQ4LDE2ICsxODYsMjUgQEAgdm9pZCBab29tV2lkZ2V0Ojpz
ZXRab29tKHFyZWFsIHpvb20pCiAgICAgfQogfQogCit2b2lkIFpvb21XaWRnZXQ6OnNldEN1c3Rv
bVpvb21Gcm9tU3BpbkJveChxcmVhbCB6b29tKQoreworICAgIHNldFpvb20oem9vbSAvIFBSRUNJ
U0lPTik7CisgICAgaWYgKGQtPm1ab29tU3BpbkJveC0+aGFzRm9jdXMoKSkgeworICAgICAgICBk
LT5lbWl0Wm9vbUNoYW5nZWQoKTsKKyAgICB9Cit9CisKIHZvaWQgWm9vbVdpZGdldDo6c2V0TWlu
aW11bVpvb20ocXJlYWwgbWluaW11bVpvb20pCiB7CiAgICAgZC0+bVpvb21TbGlkZXItPnNldE1p
bmltdW0oc2xpZGVyVmFsdWVGb3Jab29tKG1pbmltdW1ab29tKSk7Ci0gICAgZC0+bVpvb21Db21i
b0JveC0+c2V0TWluaW11bShtaW5pbXVtWm9vbSk7CisgICAgZC0+bVpvb21TcGluQm94LT5zZXRN
aW5pbXVtKHFSb3VuZChtaW5pbXVtWm9vbSAqIFBSRUNJU0lPTikpOworICAgIGQtPm1ab29tU3Bp
bkJveC0+c2V0VmFsdWUobWluaW11bVpvb20gKiBQUkVDSVNJT04pOwogfQogCiB2b2lkIFpvb21X
aWRnZXQ6OnNldE1heGltdW1ab29tKHFyZWFsIHpvb20pCiB7CiAgICAgZC0+bVpvb21TbGlkZXIt
PnNldE1heGltdW0oc2xpZGVyVmFsdWVGb3Jab29tKHpvb20pKTsKLSAgICBkLT5tWm9vbUNvbWJv
Qm94LT5zZXRNYXhpbXVtKHpvb20pOworICAgIGQtPm1ab29tU3BpbkJveC0+c2V0TWF4aW11bShx
Um91bmQoem9vbSAqIFBSRUNJU0lPTikpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvbGliL3pvb213aWRnZXQuaCBiL2xpYi96b29td2lkZ2V0LmgKaW5kZXggMzYzZDU0NTkuLjVj
Y2Q5NmNjIDEwMDY0NAotLS0gYS9saWIvem9vbXdpZGdldC5oCisrKyBiL2xpYi96b29td2lkZ2V0
LmgKQEAgLTQ1LDkgKzQ1LDYgQEAgY2xhc3MgR1dFTlZJRVdMSUJfRVhQT1JUIFpvb21XaWRnZXQg
OiBwdWJsaWMgUUZyYW1lCiAgICAgdm9pZCBzZXRBY3Rpb25zKFFBY3Rpb24gKnpvb21Ub0ZpdEFj
dGlvbiwgUUFjdGlvbiAqYWN0dWFsU2l6ZUFjdGlvbiwgUUFjdGlvbiAqem9vbUluQWN0aW9uLCBR
QWN0aW9uICp6b29tT3V0QWN0aW9uLCBRQWN0aW9uICp6b29tVG9GaWxsQWN0aW9uKTsKIAogcHVi
bGljIFFfU0xPVFM6Ci0gICAgLyoqCi0gICAgICogQ2FsbGVkIHdoZW4gdGhlIHpvb20gdmFsdWUg
aGFzIGJlZW4gY2hhbmdlZCBmcm9tIG91dHNpZGUgdGhlIFpvb21XaWRnZXQuCi0gICAgICovCiAg
ICAgdm9pZCBzZXRab29tKHFyZWFsIHpvb20pOwogCiAgICAgdm9pZCBzZXRNaW5pbXVtWm9vbShx
cmVhbCB6b29tKTsKQEAgLTU4LDYgKzU1LDcgQEAgcHVibGljIFFfU0xPVFM6CiAKIHByaXZhdGUg
UV9TTE9UUzoKICAgICB2b2lkIHNsb3Rab29tU2xpZGVyQWN0aW9uVHJpZ2dlcmVkKCk7CisgICAg
dm9pZCBzZXRDdXN0b21ab29tRnJvbVNwaW5Cb3gocXJlYWwgem9vbSk7CiAKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIHN0cnVjdCBab29tV2lkZ2V0UHJpdmF0ZTsKLS0gCjIuMzMuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>