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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>35347</bug_id>
          
          <creation_ts>2010-02-24 08:50:25 -0800</creation_ts>
          <short_desc>Convert the zoom mode into a proper enum</short_desc>
          <delta_ts>2010-03-01 16:56:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Frames</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jakob Petsovits">jpetsovits</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>levin</cc>
    
    <cc>mitz</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>193381</commentid>
    <comment_count>0</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-24 08:50:25 -0800</bug_when>
    <thetext>&quot;setZoomFactor(0.8, false)&quot; has annoyed me since I first saw it. Unless you&apos;re really familiar with the code or able to deduct it from the bug title, you have little chance of knowing what the &quot;false&quot; argument means. The Qt &quot;how to design good APIs&quot; guide specifically mentions vague boolean arguments like this one as example of not to design APIs. Unfortunately, most ports have already adopted this argument style. That doesn&apos;t mean, though, that we shouldn&apos;t fix it in the internal WebCore API, as it still makes for vastly better readability.

So, the patch below replaces the boolean argument by an enum called ZoomMode, and adapts all ports without changing their public APIs (I&apos;ll leave that decision to the respective port maintainers and their ABI policies). Hopefully I didn&apos;t miss any occurrence, let&apos;s see what the bots say. Please review, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193383</commentid>
    <comment_count>1</comment_count>
      <attachid>49401</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-24 08:56:33 -0800</bug_when>
    <thetext>Created attachment 49401
Convert the zoom mode into a proper enum</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193387</commentid>
    <comment_count>2</comment_count>
      <attachid>49401</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2010-02-24 09:12:40 -0800</bug_when>
    <thetext>Comment on attachment 49401
Convert the zoom mode into a proper enum

&gt; +2010-02-24  Jakob Petsovits  &lt;jakob.petsovits@torchmobile.com&gt;

Please change to correct email address.

&gt; diff --git a/WebCore/page/Settings.cpp b/WebCore/page/Settings.cpp
&gt; index cc8f7af..a9f6c5c 100644
&gt; --- a/WebCore/page/Settings.cpp
&gt; +++ b/WebCore/page/Settings.cpp
&gt; @@ -102,7 +102,7 @@ Settings::Settings(Page* page)
&gt;      , m_inApplicationChromeMode(false)
&gt;      , m_offlineWebApplicationCacheEnabled(false)
&gt;      , m_shouldPaintCustomScrollbars(false)
&gt; -    , m_zoomsTextOnly(false)
&gt; +    , m_zoomMode(ZoomPage)

...

&gt; @@ -309,6 +314,7 @@ namespace WebCore {
&gt;          size_t m_maximumDecodedImageSize;
&gt;          unsigned m_localStorageQuota;
&gt;          unsigned m_pluginAllowedRunTime;
&gt; +        ZoomMode m_zoomMode;
&gt;          bool m_isJavaEnabled : 1;
&gt;          bool m_loadsImagesAutomatically : 1;
&gt;          bool m_privateBrowsingEnabled : 1;
&gt; @@ -347,7 +353,6 @@ namespace WebCore {
&gt;          bool m_inApplicationChromeMode : 1;
&gt;          bool m_offlineWebApplicationCacheEnabled : 1;
&gt;          bool m_shouldPaintCustomScrollbars : 1;
&gt; -        bool m_zoomsTextOnly : 1;
&gt;          bool m_enforceCSSMIMETypeInStrictMode : 1;
&gt;          bool m_usesEncodingDetector : 1;
&gt;          bool m_allowScriptsToCloseWindows : 1;

Incorrect initialization order...

Please update and fix above to produce a new patch.  Since this touches most ports it&apos;d be nice if the bots were working to check the build with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193388</commentid>
    <comment_count>3</comment_count>
      <attachid>49402</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-24 09:16:24 -0800</bug_when>
    <thetext>Created attachment 49402
Convert the zoom mode into a proper enum (try 2)

Fixes email address and initialization order. Hope the bots will work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193389</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-02-24 09:22:18 -0800</bug_when>
    <thetext>&gt; +++ b/WebCore/page/Frame.h
&gt; @@ -37,6 +37,7 @@
&gt; #include &quot;ScriptController.h&quot;
&gt; #include &quot;ScrollBehavior.h&quot;
&gt; #include &quot;SelectionController.h&quot;
&gt; +#include &quot;Settings.h&quot;

This is unfortunate. Have you considered putting the enum in a separate header file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193400</commentid>
    <comment_count>5</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-24 10:11:51 -0800</bug_when>
    <thetext>I have, and it seemed kind of overkill to me so I thought I&apos;d wait whether it&apos;s an issue for the reviewers. Seems it is, so let&apos;s make it a separate header... or maybe there&apos;s a better place to add it to? Maybe not. Anyways, I&apos;ll have a look and change the patch accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193411</commentid>
    <comment_count>6</comment_count>
      <attachid>49410</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-24 10:42:47 -0800</bug_when>
    <thetext>Created attachment 49410
Convert the zoom mode into a proper enum (try 3)

Adding WebCore/page/ZoomMode.h and including that instead of the whole Settings.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193416</commentid>
    <comment_count>7</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-02-24 10:52:32 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=49410) [details]
&gt; Convert the zoom mode into a proper enum (try 3)
&gt; 
&gt; Adding WebCore/page/ZoomMode.h and including that instead of the whole
&gt; Settings.h.

A few notes/nits that you may want to fix:
1. Your copyright says 2009. It should be 2010.
2. The newly added file doesn&apos;t have header guards. (ifndef/define/endif).
3. The header file wasn&apos;t added to xcode project file WebCore.xcodeproj/project.pbxproj</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193418</commentid>
    <comment_count>8</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-24 10:56:18 -0800</bug_when>
    <thetext>1. and 2. blargh, let me fix that right away.
3. There&apos;s no way I can add that without having a Mac with XCode. You can&apos;t seriously expect me to generate hashs manually?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193419</commentid>
    <comment_count>9</comment_count>
      <attachid>49413</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-24 10:59:30 -0800</bug_when>
    <thetext>Created attachment 49413
Convert the zoom mode into a proper enum (try 4)

Updated patch with David Levin&apos;s points 1. and 2., XCode project file still untouched.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193467</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-24 12:55:43 -0800</bug_when>
    <thetext>Attachment 49413 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/308039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193468</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-24 13:02:54 -0800</bug_when>
    <thetext>Attachment 49413 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/309045</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193538</commentid>
    <comment_count>12</comment_count>
      <attachid>49446</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-24 15:02:12 -0800</bug_when>
    <thetext>Created attachment 49446
Convert the zoom mode into a proper enum (try 5)

Yay for bots! This one should fix GTK, Qt, and even Wx.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193730</commentid>
    <comment_count>13</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-25 08:23:21 -0800</bug_when>
    <thetext>Bots are all green, except for mac which hasn&apos;t run yet. Hope that doesn&apos;t take too long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193736</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-02-25 08:28:11 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Bots are all green, except for mac which hasn&apos;t run yet. Hope that doesn&apos;t take
&gt; too long.

Mac EWS is different and won&apos;t run unless the patch is put up for review by a certain set of people. Adam Barth set it up and knows the details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193737</commentid>
    <comment_count>15</comment_count>
      <attachid>49446</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-02-25 08:30:00 -0800</bug_when>
    <thetext>Comment on attachment 49446
Convert the zoom mode into a proper enum (try 5)

&gt; -    return _private-&gt;page-&gt;settings()-&gt;zoomsTextOnly();
&gt; +    return _private-&gt;page-&gt;settings()-&gt;zoomMode() == ZoomTextOnly ? YES : NO;

The &quot;? YES : NO&quot; here is not needed or helpful.

Someone will have to make the Xcode project changes.

The patch seems fine. r=me if it builds on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193760</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-25 09:15:15 -0800</bug_when>
    <thetext>The mac-ews is stuck unable to build.  Eric, can you kick it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193768</commentid>
    <comment_count>17</comment_count>
      <attachid>49498</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-02-25 09:36:56 -0800</bug_when>
    <thetext>Created attachment 49498
Patch

Added ZoomMode.h to Xcode project and made change as per Darin&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193769</commentid>
    <comment_count>18</comment_count>
      <attachid>49498</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-25 09:38:40 -0800</bug_when>
    <thetext>Comment on attachment 49498
Patch

Forwarding Darin&apos;s review.  The commit-queue will ensure that this builds on Mac before landing, completing the last of Darin&apos;s requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193875</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-25 14:10:01 -0800</bug_when>
    <thetext>The mac-ews bot has been kicked, but it has some back-log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194075</commentid>
    <comment_count>20</comment_count>
      <attachid>49498</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-26 06:52:18 -0800</bug_when>
    <thetext>Comment on attachment 49498
Patch

Rejecting patch 49498 from commit-queue.

Unexpected failure when landing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--no-update&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, &apos;49498&apos;]&quot; exit_code: 1
Last 500 characters of output:
ebkitpy/statusserver.py&quot;, line 87, in update_status
    return NetworkTransaction().run(lambda: self._post_to_server(queue_name, status, patch, results_file))
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/networktransaction.py&quot;, line 52, in run
    self._check_for_timeout()
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/networktransaction.py&quot;, line 58, in _check_for_timeout
    raise NetworkTimeout()
webkitpy.networktransaction.NetworkTimeout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194078</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-26 07:11:20 -0800</bug_when>
    <thetext>Sorry for the commit-queue spew.  Normally that means that this patch fails to build on Mac in such a way that the build log is so huge the commit-queue is having trouble uploading it. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194082</commentid>
    <comment_count>22</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-26 07:20:53 -0800</bug_when>
    <thetext>So... where do we go from here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194085</commentid>
    <comment_count>23</comment_count>
      <attachid>49498</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-26 07:27:08 -0800</bug_when>
    <thetext>Comment on attachment 49498
Patch

We mark it for review again and see if the mac EWS barfs similarly.  Or someone with a mac box tries to manually download the patch and builds it and reports back the error.  Eventually we&apos;ll fix the commit-queue. :)

http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/statusserver.py#L67
is the code that&apos;s failing.  It probably just needs to be smart enough to only upload the last 500k of the file or similar.  Or more likely that method should warn for large files and the callsites should be restricting the upload size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194481</commentid>
    <comment_count>24</comment_count>
      <attachid>49498</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-27 02:09:13 -0800</bug_when>
    <thetext>Comment on attachment 49498
Patch

This patch doesn&apos;t build on Mac:

Undefined symbols:
  &quot;__ZN7WebCore5Frame13setZoomFactorEfb&quot;, referenced from:
     -exported_symbols_list command line option
  &quot;__ZN7WebCore8Settings16setZoomsTextOnlyEb&quot;, referenced from:
     -exported_symbols_list command line option
ld: symbol(s) not found
collect2: ld returned 1 exit status
** BUILD FAILED **</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194513</commentid>
    <comment_count>25</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-02-27 11:07:17 -0800</bug_when>
    <thetext>Thanks everyone. I&apos;ll investigate what I might have forgotten to change, but chances are I&apos;ll need help from someone with a Mac build to get this working. Let&apos;s see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194718</commentid>
    <comment_count>26</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-03-01 09:04:36 -0800</bug_when>
    <thetext>It seems to me like the only occurrences of these functions are in WebCore/WebCore.base.exp and WebCore/WebCore.order. Those files probably only need to be regenerated, any idea on how to do that? (Given that I&apos;m not a mangling expert, I think I shouldn&apos;t try to do it without the proper script.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194722</commentid>
    <comment_count>27</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-01 09:38:26 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; It seems to me like the only occurrences of these functions are in
&gt; WebCore/WebCore.base.exp and WebCore/WebCore.order. Those files probably only
&gt; need to be regenerated, any idea on how to do that? (Given that I&apos;m not a
&gt; mangling expert, I think I shouldn&apos;t try to do it without the proper script.)

WebCore.order should be left alone.

WebCore.base.exp can be updated based on build failure messages by someone with a Mac. First remove the old symbols so WebCore builds, then build again and add the new symbols based on the failure in the WebKit build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194789</commentid>
    <comment_count>28</comment_count>
      <attachid>49746</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-01 13:07:28 -0800</bug_when>
    <thetext>Created attachment 49746
Patch

Substituted symbols __ZN7WebCore5Frame13setZoomFactorEfNS_8ZoomModeE and __ZN7WebCore8Settings11setZoomModeENS_8ZoomModeE for __ZN7WebCore5Frame13setZoomFactorEfb and __ZN7WebCore8Settings16setZoomsTextOnlyEb, respectively.

Set role of ZoomMode.h to private in Xcode project.

Resolved compiler error in [-WebView _setZoomMultiplier:isTextOnly] caused by using the old prototype for Frame::setZoomFactor (which took a boolean type for the second argument). Instead, the second argument is now an enum value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194806</commentid>
    <comment_count>29</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-03-01 14:00:21 -0800</bug_when>
    <thetext>Thanks Dan, I really appreciate it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194875</commentid>
    <comment_count>30</comment_count>
      <attachid>49746</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-01 16:56:11 -0800</bug_when>
    <thetext>Comment on attachment 49746
Patch

Clearing flags on attachment: 49746

Committed r55387: &lt;http://trac.webkit.org/changeset/55387&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194876</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-01 16:56:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49401</attachid>
            <date>2010-02-24 08:56:33 -0800</date>
            <delta_ts>2010-02-24 10:42:47 -0800</delta_ts>
            <desc>Convert the zoom mode into a proper enum</desc>
            <filename>zoommode-enum.patch</filename>
            <type>text/plain</type>
            <size>18875</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2Q4NWFjMi4uMjgwYjZkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wMi0yNCAgSmFrb2IgUGV0c292
aXRzICA8amFrb2IucGV0c292aXRzQHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IHRoZSB6b29tIG1vZGUgKHBh
Z2UgdnMuIHRleHQtb25seSkgaW50byBhIHByb3BlciBlbnVtLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUzNDcKKworICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Onpvb21Nb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lOjpzaG91bGRBcHBseVRleHRab29tKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpzaG91bGRBcHBseVBhZ2Vab29tKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRa
b29tRmFjdG9yKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9TZXR0
aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAg
ICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldFpvb21Nb2RlKToKKyAgICAgICAgKiBwYWdlL1NldHRp
bmdzLmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
Onpvb21Nb2RlKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzZXRDdXJyZW50U2NhbGUpOgorCiAyMDEwLTAyLTIzICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBU
aW0gSGF0Y2hlciBhbmQgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDI2MmM1NmMuLjdkMGM4Mzkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcApAQCAtNzEsNyArNzEsNiBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIK
LSNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1
ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBhdHRl
cm4uaCIKQEAgLTY2MSwyOCArNjYwLDI0IEBAIGZsb2F0IEZyYW1lOjp6b29tRmFjdG9yKCkgY29u
c3QKICAgICByZXR1cm4gbV96b29tRmFjdG9yOwogfQogCi1ib29sIEZyYW1lOjppc1pvb21GYWN0
b3JUZXh0T25seSgpIGNvbnN0Citab29tTW9kZSBGcmFtZTo6em9vbU1vZGUoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21zVGV4dE9ubHkoKTsKKyAgICByZXR1
cm4gbV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgpOwogfQogCiBib29sIEZyYW1lOjpzaG91
bGRBcHBseVRleHRab29tKCkgY29uc3QKIHsKLSAgICBpZiAobV96b29tRmFjdG9yID09IDEuMGYg
fHwgIWlzWm9vbUZhY3RvclRleHRPbmx5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbV96b29tRmFjdG9yICE9IDEuMGYgJiYgem9vbU1vZGUo
KSA9PSBab29tVGV4dE9ubHk7CiB9CiAKIGJvb2wgRnJhbWU6OnNob3VsZEFwcGx5UGFnZVpvb20o
KSBjb25zdAogewotICAgIGlmIChtX3pvb21GYWN0b3IgPT0gMS4wZiB8fCBpc1pvb21GYWN0b3JU
ZXh0T25seSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIG1fem9vbUZhY3RvciAhPSAxLjBmICYmIHpvb21Nb2RlKCkgPT0gWm9vbVBhZ2U7CiB9
CiAKLXZvaWQgRnJhbWU6OnNldFpvb21GYWN0b3IoZmxvYXQgcGVyY2VudCwgYm9vbCBpc1RleHRP
bmx5KQordm9pZCBGcmFtZTo6c2V0Wm9vbUZhY3RvcihmbG9hdCBwZXJjZW50LCBab29tTW9kZSBt
b2RlKQogewotICAgIGlmIChtX3pvb21GYWN0b3IgPT0gcGVyY2VudCAmJiBpc1pvb21GYWN0b3JU
ZXh0T25seSgpID09IGlzVGV4dE9ubHkpCisgICAgaWYgKG1fem9vbUZhY3RvciA9PSBwZXJjZW50
ICYmIHpvb21Nb2RlKCkgPT0gbW9kZSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKFNW
RykKQEAgLTY5Niw3ICs2OTEsNyBAQCB2b2lkIEZyYW1lOjpzZXRab29tRmFjdG9yKGZsb2F0IHBl
cmNlbnQsIGJvb2wgaXNUZXh0T25seSkKICAgICB9CiAjZW5kaWYKIAotICAgIGlmICghaXNUZXh0
T25seSkgeworICAgIGlmIChtb2RlID09IFpvb21QYWdlKSB7CiAgICAgICAgIC8vIFVwZGF0ZSB0
aGUgc2Nyb2xsIHBvc2l0aW9uIHdoZW4gZG9pbmcgYSBmdWxsIHBhZ2Ugem9vbSwgc28gdGhlIGNv
bnRlbnQgc3RheXMgaW4gcmVsYXRpdmVseSB0aGUgc2FtZSBwb3NpdGlvbi4KICAgICAgICAgSW50
UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSB2aWV3KCktPnNjcm9sbFBvc2l0aW9uKCk7CiAgICAgICAg
IGZsb2F0IHBlcmNlbnREaWZmZXJlbmNlID0gKHBlcmNlbnQgLyBtX3pvb21GYWN0b3IpOwpAQCAt
NzA0LDEyICs2OTksMTIgQEAgdm9pZCBGcmFtZTo6c2V0Wm9vbUZhY3RvcihmbG9hdCBwZXJjZW50
LCBib29sIGlzVGV4dE9ubHkpCiAgICAgfQogCiAgICAgbV96b29tRmFjdG9yID0gcGVyY2VudDsK
LSAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFpvb21zVGV4dE9ubHkoaXNUZXh0T25seSk7Cisg
ICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRab29tTW9kZShtb2RlKTsKIAogICAgIG1fZG9jLT5y
ZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CiAKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IHRyZWUo
KS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGlu
ZygpKQotICAgICAgICBjaGlsZC0+c2V0Wm9vbUZhY3RvcihtX3pvb21GYWN0b3IsIGlzVGV4dE9u
bHkpOworICAgICAgICBjaGlsZC0+c2V0Wm9vbUZhY3RvcihtX3pvb21GYWN0b3IsIG1vZGUpOwog
CiAgICAgaWYgKG1fZG9jLT5yZW5kZXJlcigpICYmIG1fZG9jLT5yZW5kZXJlcigpLT5uZWVkc0xh
eW91dCgpICYmIHZpZXcoKS0+ZGlkRmlyc3RMYXlvdXQoKSkKICAgICAgICAgdmlldygpLT5sYXlv
dXQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKaW5kZXggMjZkMWVmYS4uMGE3ZDc2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsQmVoYXZpb3IuaCIKICNp
bmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTE2OSw5
ICsxNzAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gPT09IHRvIGJlIG1vdmVkIGlu
dG8gRnJhbWVWaWV3CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQgc2V0Wm9vbUZhY3Rvcihm
bG9hdCBzY2FsZSwgYm9vbCBpc1RleHRPbmx5KTsKKyAgICAgICAgdm9pZCBzZXRab29tRmFjdG9y
KGZsb2F0IHNjYWxlLCBab29tTW9kZSk7CiAgICAgICAgIGZsb2F0IHpvb21GYWN0b3IoKSBjb25z
dDsKLSAgICAgICAgYm9vbCBpc1pvb21GYWN0b3JUZXh0T25seSgpIGNvbnN0OworICAgICAgICBa
b29tTW9kZSB6b29tTW9kZSgpIGNvbnN0OwogICAgICAgICBib29sIHNob3VsZEFwcGx5VGV4dFpv
b20oKSBjb25zdDsKICAgICAgICAgYm9vbCBzaG91bGRBcHBseVBhZ2Vab29tKCkgY29uc3Q7CiAg
ICAgICAgIGZsb2F0IHBhZ2Vab29tRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gc2hvdWxkQXBwbHlQ
YWdlWm9vbSgpID8gem9vbUZhY3RvcigpIDogMS4wZjsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcCBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggY2M4Zjdh
Zi4uYTlmNmM1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgU2V0dGluZ3M6OlNl
dHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2luQXBwbGljYXRpb25DaHJvbWVNb2RlKGZhbHNl
KQogICAgICwgbV9vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoZmFsc2UpCiAgICAg
LCBtX3Nob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyhmYWxzZSkKLSAgICAsIG1fem9vbXNUZXh0
T25seShmYWxzZSkKKyAgICAsIG1fem9vbU1vZGUoWm9vbVBhZ2UpCiAgICAgLCBtX2VuZm9yY2VD
U1NNSU1FVHlwZUluU3RyaWN0TW9kZSh0cnVlKQogICAgICwgbV91c2VzRW5jb2RpbmdEZXRlY3Rv
cihmYWxzZSkKICAgICAsIG1fYWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MoZmFsc2UpCkBAIC00
NjcsMTIgKzQ2NywxMiBAQCB2b2lkIFNldHRpbmdzOjpzZXRTaG91bGRQYWludEN1c3RvbVNjcm9s
bGJhcnMoYm9vbCBzaG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnMpCiAgICAgbV9zaG91bGRQYWlu
dEN1c3RvbVNjcm9sbGJhcnMgPSBzaG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnM7CiB9CiAKLXZv
aWQgU2V0dGluZ3M6OnNldFpvb21zVGV4dE9ubHkoYm9vbCB6b29tc1RleHRPbmx5KQordm9pZCBT
ZXR0aW5nczo6c2V0Wm9vbU1vZGUoWm9vbU1vZGUgbW9kZSkKIHsKLSAgICBpZiAoem9vbXNUZXh0
T25seSA9PSBtX3pvb21zVGV4dE9ubHkpCisgICAgaWYgKG1vZGUgPT0gbV96b29tTW9kZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fem9vbXNUZXh0T25seSA9IHpvb21zVGV4dE9ubHk7
CisgICAgbV96b29tTW9kZSA9IG1vZGU7CiAgICAgc2V0TmVlZHNSZWFwcGx5U3R5bGVzSW5BbGxG
cmFtZXMobV9wYWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgg
Yi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCAwNmY0NTcwLi40ODU1ZmE5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
aApAQCAtNDksNiArNDksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUZXh0RGly
ZWN0aW9uU3VibWVudUFsd2F5c0luY2x1ZGVkCiAgICAgfTsKIAorICAgIGVudW0gWm9vbU1vZGUg
eworICAgICAgICBab29tUGFnZSwKKyAgICAgICAgWm9vbVRleHRPbmx5CisgICAgfTsKKwogICAg
IC8vIFRoZXJlIGFyZSBtdWx0aXBsZSBlZGl0aW5nIGRldGFpbHMgdGhhdCBhcmUgZGlmZmVyZW50
IG9uIFdpbmRvd3MgdGhhbiBNYWNpbnRvc2guCiAgICAgLy8gV2UgdXNlIGEgc2luZ2xlIHN3aXRj
aCBmb3IgYWxsIG9mIHRoZW0uIFNvbWUgZXhhbXBsZXM6CiAgICAgLy8KQEAgLTIzNCw4ICsyMzks
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0U2hvdWxkUGFpbnRDdXN0
b21TY3JvbGxiYXJzKGJvb2wpOwogICAgICAgICBib29sIHNob3VsZFBhaW50Q3VzdG9tU2Nyb2xs
YmFycygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUGFpbnRDdXN0b21TY3JvbGxiYXJzOyB9CiAK
LSAgICAgICAgdm9pZCBzZXRab29tc1RleHRPbmx5KGJvb2wpOwotICAgICAgICBib29sIHpvb21z
VGV4dE9ubHkoKSBjb25zdCB7IHJldHVybiBtX3pvb21zVGV4dE9ubHk7IH0KKyAgICAgICAgdm9p
ZCBzZXRab29tTW9kZShab29tTW9kZSk7CisgICAgICAgIFpvb21Nb2RlIHpvb21Nb2RlKCkgY29u
c3QgeyByZXR1cm4gbV96b29tTW9kZTsgfQogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRFbmZv
cmNlQ1NTTUlNRVR5cGVJblN0cmljdE1vZGUoYm9vbCk7CiAgICAgICAgIGJvb2wgZW5mb3JjZUNT
U01JTUVUeXBlSW5TdHJpY3RNb2RlKCkgeyByZXR1cm4gbV9lbmZvcmNlQ1NTTUlNRVR5cGVJblN0
cmljdE1vZGU7IH0KQEAgLTMwOSw2ICszMTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHNpemVfdCBtX21heGltdW1EZWNvZGVkSW1hZ2VTaXplOwogICAgICAgICB1bnNpZ25lZCBt
X2xvY2FsU3RvcmFnZVF1b3RhOwogICAgICAgICB1bnNpZ25lZCBtX3BsdWdpbkFsbG93ZWRSdW5U
aW1lOworICAgICAgICBab29tTW9kZSBtX3pvb21Nb2RlOwogICAgICAgICBib29sIG1faXNKYXZh
RW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgOiAx
OwogICAgICAgICBib29sIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA6IDE7CkBAIC0zNDcsNyAr
MzUzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1faW5BcHBsaWNhdGlv
bkNocm9tZU1vZGUgOiAxOwogICAgICAgICBib29sIG1fb2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2Fj
aGVFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX3Nob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFy
cyA6IDE7Ci0gICAgICAgIGJvb2wgbV96b29tc1RleHRPbmx5IDogMTsKICAgICAgICAgYm9vbCBt
X2VuZm9yY2VDU1NNSU1FVHlwZUluU3RyaWN0TW9kZSA6IDE7CiAgICAgICAgIGJvb2wgbV91c2Vz
RW5jb2RpbmdEZXRlY3RvciA6IDE7CiAgICAgICAgIGJvb2wgbV9hbGxvd1NjcmlwdHNUb0Nsb3Nl
V2luZG93cyA6IDE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBi
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IGZmMjRjNGYuLjdhNmRiODQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBTVkdTVkdFbGVtZW50
OjpzZXRDdXJyZW50U2NhbGUoZmxvYXQgc2NhbGUpCiAgICAgICAgIC8vIENhbGxpbmcgc2V0Q3Vy
cmVudFNjYWxlKCkgb24gdGhlIG91dGVybW9zdCA8c3ZnPiBlbGVtZW50IGluIGEgc3RhbmRhbG9u
ZSBTVkcgZG9jdW1lbnQKICAgICAgICAgLy8gaXMgYWxsb3dlZCB0byBjaGFuZ2UgdGhlIHBhZ2Ug
em9vbSBmYWN0b3IsIGluZmx1ZW5jaW5nIHRoZSBkb2N1bWVudCBzaXplLCBzY3JvbGxiYXJzIGV0
Yy4KICAgICAgICAgaWYgKHBhcmVudE5vZGUoKSA9PSBkb2N1bWVudCgpKQotICAgICAgICAgICAg
ZnJhbWUtPnNldFpvb21GYWN0b3Ioc2NhbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZyYW1lLT5z
ZXRab29tRmFjdG9yKHNjYWxlLCBab29tUGFnZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDkyOGQ0M2EuLjQyN2Y3MDIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDEwLTAyLTI0ICBKYWtvYiBQZXRzb3ZpdHMgIDxqYWtvYi5wZXRzb3ZpdHNAdG9y
Y2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkYXB0IHRvIHRoZSBuZXcgWm9vbU1vZGUgZW51bS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MzQ3CisKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVs
KToKKwogMjAxMC0wMi0yMyAgSmFtZXMgSGF3a2lucyAgPGpoYXdraW5zQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCmluZGV4IDk3NjY1ZDQuLjcyZmJiZDUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCkBAIC0xMzAyLDcgKzEzMDIsNyBAQCBpbnQgV2ViVmlld0ltcGw6OnNldFpvb21M
ZXZlbChib29sIHRleHRPbmx5LCBpbnQgem9vbUxldmVsKQogICAgIEZyYW1lKiBmcmFtZSA9IG1h
aW5GcmFtZUltcGwoKS0+ZnJhbWUoKTsKICAgICBpZiAoem9vbUZhY3RvciAhPSBmcmFtZS0+em9v
bUZhY3RvcigpKSB7CiAgICAgICAgIG1fem9vbUxldmVsID0gem9vbUxldmVsOwotICAgICAgICBm
cmFtZS0+c2V0Wm9vbUZhY3Rvcih6b29tRmFjdG9yLCB0ZXh0T25seSk7CisgICAgICAgIGZyYW1l
LT5zZXRab29tRmFjdG9yKHpvb21GYWN0b3IsIHRleHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9v
bVBhZ2UpOwogICAgIH0KICAgICByZXR1cm4gbV96b29tTGV2ZWw7CiB9CmRpZmYgLS1naXQgYS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDVjNDk5YjEu
LjhmM2UxYTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDItMjQgIEpha29iIFBldHNvdml0
cyAgPGpha29iLnBldHNvdml0c0B0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRhcHQgdG8gdGhlIG5ldyBab29tTW9kZSBl
bnVtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUz
NDcKKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
cHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9z
ZXRab29tTXVsdGlwbGllcjppc1RleHRPbmx5Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9yZWFs
Wm9vbU11bHRpcGxpZXJJc1RleHRPbmx5XSk6CisKIDIwMTAtMDItMjMgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyIGFu
ZCBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiZTAzNWIyLi5jODQ3YWU5
IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTMzOSw3ICsxMzM5LDcgQEAgc3RhdGljIGJvb2wg
ZmFzdERvY3VtZW50VGVhcmRvd25FbmFibGVkKCkKICAgICBzZXR0aW5ncy0+c2V0V2ViQXJjaGl2
ZURlYnVnTW9kZUVuYWJsZWQoW3ByZWZlcmVuY2VzIHdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVk
XSk7CiAgICAgc2V0dGluZ3MtPnNldExvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoW3By
ZWZlcmVuY2VzIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWRdKTsKICAgICBzZXR0aW5n
cy0+c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKFtwcmVmZXJlbmNlcyBvZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWRdKTsKLSAgICBzZXR0aW5ncy0+c2V0Wm9vbXNU
ZXh0T25seShbcHJlZmVyZW5jZXMgem9vbXNUZXh0T25seV0pOworICAgIHNldHRpbmdzLT5zZXRa
b29tTW9kZShbcHJlZmVyZW5jZXMgem9vbXNUZXh0T25seV0gPyBab29tVGV4dE9ubHkgOiBab29t
UGFnZSk7CiAgICAgc2V0dGluZ3MtPnNldFhTU0F1ZGl0b3JFbmFibGVkKFtwcmVmZXJlbmNlcyBp
c1hTU0F1ZGl0b3JFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldEVuZm9yY2VDU1NNSU1FVHlw
ZUluU3RyaWN0TW9kZSghV0tBcHBWZXJzaW9uQ2hlY2tMZXNzVGhhbihAImNvbS5hcHBsZS5pV2Vi
IiwgLTEsIDIuMSkpOwogICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5h
YmxlZChjb3JlVmlkZW9IYXM3MjI4ODM2Rml4KCkgJiYgW3ByZWZlcmVuY2VzIGFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkXSk7CkBAIC0zMTE1LDcgKzMxMTUsNyBAQCBzdGF0aWMgYm9vbCBu
ZWVkc1dlYlZpZXdJbml0VGhyZWFkV29ya2Fyb3VuZCgpCiAgICAgX3ByaXZhdGUtPnpvb21NdWx0
aXBsaWVyID0gbTsKICAgICBBU1NFUlQoX3ByaXZhdGUtPnBhZ2UpOwogICAgIGlmIChfcHJpdmF0
ZS0+cGFnZSkKLSAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCktPnNldFpvb21zVGV4
dE9ubHkoaXNUZXh0T25seSk7CisgICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLT5z
ZXRab29tTW9kZShpc1RleHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwogICAgIAog
ICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuaWNlIHRvIHJld29yayB0aGlzIGNvZGUgc28gdGhh
dCBfcHJpdmF0ZS0+em9vbU11bHRpcGxpZXIgZG9lc24ndCBleGlzdCBhbmQgY2FsbGVycwogICAg
IC8vIGFsbCBhY2Nlc3MgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuCkBAIC0zMTQxLDcgKzMx
NDEsNyBAQCBzdGF0aWMgYm9vbCBuZWVkc1dlYlZpZXdJbml0VGhyZWFkV29ya2Fyb3VuZCgpCiAg
ICAgaWYgKCFfcHJpdmF0ZS0+cGFnZSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIAotICAgIHJl
dHVybiBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS0+em9vbXNUZXh0T25seSgpOworICAgIHJl
dHVybiBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKSA9PSBab29tVGV4dE9u
bHkgPyBZRVMgOiBOTzsKIH0KIAogI2RlZmluZSBNaW5pbXVtWm9vbU11bHRpcGxpZXIgICAgICAg
MC41ZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvV2ViS2l0L3F0
L0FwaS9xd2ViZnJhbWUuY3BwCmluZGV4IDE1YjVjMDAuLjljZmM1OGYgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5j
cHAKQEAgLTEyNDUsNyArMTI0NSw3IEBAIHZvaWQgUVdlYkZyYW1lOjpyZW5kZXIoUVBhaW50ZXIq
IHBhaW50ZXIpCiAqLwogdm9pZCBRV2ViRnJhbWU6OnNldFRleHRTaXplTXVsdGlwbGllcihxcmVh
bCBmYWN0b3IpCiB7Ci0gICAgZC0+ZnJhbWUtPnNldFpvb21GYWN0b3IoZmFjdG9yLCAvKmlzVGV4
dE9ubHkqL3RydWUpOworICAgIGQtPmZyYW1lLT5zZXRab29tRmFjdG9yKGZhY3RvciwgWm9vbVRl
eHRPbmx5KTsKIH0KIAogLyohCkBAIC0xMjY0LDcgKzEyNjQsNyBAQCBxcmVhbCBRV2ViRnJhbWU6
OnRleHRTaXplTXVsdGlwbGllcigpIGNvbnN0CiAKIHZvaWQgUVdlYkZyYW1lOjpzZXRab29tRmFj
dG9yKHFyZWFsIGZhY3RvcikKIHsKLSAgICBkLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihmYWN0b3Is
IGQtPmZyYW1lLT5pc1pvb21GYWN0b3JUZXh0T25seSgpKTsKKyAgICBkLT5mcmFtZS0+c2V0Wm9v
bUZhY3RvcihmYWN0b3IsIGQtPmZyYW1lLT56b29tTW9kZSgpKTsKIH0KIAogcXJlYWwgUVdlYkZy
YW1lOjp6b29tRmFjdG9yKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnNl
dHRpbmdzLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAppbmRleCBkNjBmMDlj
Li4xZTNjOTRhIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysr
IGIvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9p
ZCBRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSgpCiAKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1
dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Wm9vbVRleHRPbmx5LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Wm9v
bVRleHRPbmx5KSk7Ci0gICAgICAgIHNldHRpbmdzLT5zZXRab29tc1RleHRPbmx5KHZhbHVlKTsK
KyAgICAgICAgc2V0dGluZ3MtPnNldFpvb21Nb2RlKHZhbHVlID8gWm9vbVRleHRPbmx5IDogWm9v
bVBhZ2UpOwogCiAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6
OlByaW50RWxlbWVudEJhY2tncm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpQcmludEVsZW1l
bnRCYWNrZ3JvdW5kcykpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktp
dC9xdC9DaGFuZ2VMb2cKaW5kZXggMmQxYTQ4My4uZGM5NmQ0OCAxMDA2NDQKLS0tIGEvV2ViS2l0
L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDItMjQgIEpha29iIFBldHNvdml0cyAgPGpha29iLnBldHNvdml0c0B0b3JjaG1vYmls
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRhcHQgdG8gdGhlIG5ldyBab29tTW9kZSBlbnVtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUzNDcKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRUZXh0U2l6ZU11bHRpcGxpZXIpOgorICAgICAg
ICAoUVdlYkZyYW1lOjpzZXRab29tRmFjdG9yKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdz
LmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKwogMjAxMC0wMi0y
MyAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dl
YktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDc2YjE0NTAuLjA3ZmYxMGIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTAtMDItMjQgIEpha29iIFBldHNvdml0cyAgPGpha29iLnBldHNvdml0c0B0b3Jj
aG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRhcHQgdG8gdGhlIG5ldyBab29tTW9kZSBlbnVtLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUzNDcKKworICAgICAgICAqIFdlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpzZXRUZXh0U2l6ZU11bHRpcGxpZXIpOgorICAgICAg
ICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2V0Wm9vbU11bHRpcGxpZXIpOgor
ICAgICAgICAoV2ViVmlldzo6em9vbU11bHRpcGxpZXIpOgorICAgICAgICAoV2ViVmlldzo6Y2Fu
TWFrZVRleHRMYXJnZXIpOgorICAgICAgICAoV2ViVmlldzo6bWFrZVRleHRMYXJnZXIpOgorICAg
ICAgICAoV2ViVmlldzo6Y2FuTWFrZVRleHRTbWFsbGVyKToKKyAgICAgICAgKFdlYlZpZXc6Om1h
a2VUZXh0U21hbGxlcik6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5n
ZWQpOgorCiAyMDEwLTAyLTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlciBhbmQgUGF2ZWwgRmVsZG1hbi4KZGlmZiAt
LWdpdCBhL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAK
aW5kZXggOGUwMzc5NC4uOGI3ZTBmZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJGcmFtZS5j
cHAKKysrIGIvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTEwNzQsNyArMTA3NCw3IEBAIHZv
aWQgV2ViRnJhbWU6OnNldFRleHRTaXplTXVsdGlwbGllcihmbG9hdCBtdWx0aXBsaWVyKQogewog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwogICAgIEFTU0VSVChjb3JlRnJhbWUp
OwotICAgIGNvcmVGcmFtZS0+c2V0Wm9vbUZhY3RvcihtdWx0aXBsaWVyLCB0cnVlKTsKKyAgICBj
b3JlRnJhbWUtPnNldFpvb21GYWN0b3IobXVsdGlwbGllciwgWm9vbVRleHRPbmx5KTsKIH0KIAog
SFJFU1VMVCBXZWJGcmFtZTo6aW5WaWV3U291cmNlTW9kZShCT09MKiBmbGFnKQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXgg
NzgxMzgxMS4uNTM4OWQwNSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysg
Yi9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0yODc5LDkgKzI4NzksOSBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldFBhZ2VTaXplTXVsdGlwbGllcigKIHZvaWQgV2Vi
Vmlldzo6c2V0Wm9vbU11bHRpcGxpZXIoZmxvYXQgbXVsdGlwbGllciwgYm9vbCBpc1RleHRPbmx5
KQogewogICAgIG1fem9vbU11bHRpcGxpZXIgPSBtdWx0aXBsaWVyOwotICAgIG1fcGFnZS0+c2V0
dGluZ3MoKS0+c2V0Wm9vbXNUZXh0T25seShpc1RleHRPbmx5KTsKKyAgICBtX3BhZ2UtPnNldHRp
bmdzKCktPnNldFpvb21Nb2RlKGlzVGV4dE9ubHkgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7
CiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fbWFpbkZyYW1lKSkKLSAgICAgICAg
Y29yZUZyYW1lLT5zZXRab29tRmFjdG9yKG11bHRpcGxpZXIsIGlzVGV4dE9ubHkpOworICAgICAg
ICBjb3JlRnJhbWUtPnNldFpvb21GYWN0b3IobXVsdGlwbGllciwgaXNUZXh0T25seSA/IFpvb21U
ZXh0T25seSA6IFpvb21QYWdlKTsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3Ojp0ZXh0U2l6ZU11bHRpcGxpZXIoIApAQCAtMjkwMCw3ICsyOTAwLDggQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpwYWdlU2l6ZU11bHRpcGxpZXIoCiAKIGZsb2F0IFdl
YlZpZXc6Onpvb21NdWx0aXBsaWVyKGJvb2wgaXNUZXh0T25seSkKIHsKLSAgICBpZiAoaXNUZXh0
T25seSAhPSBtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21zVGV4dE9ubHkoKSkKKyAgICBab29tTW9k
ZSB6b29tTW9kZSA9IGlzVGV4dE9ubHkgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZTsKKyAgICBp
ZiAoem9vbU1vZGUgIT0gbV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgpKQogICAgICAgICBy
ZXR1cm4gMS4wZjsKICAgICByZXR1cm4gbV96b29tTXVsdGlwbGllcjsKIH0KQEAgLTM2ODAsNyAr
MzY4MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y2FuTWFrZVRleHRM
YXJnZXIoCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8sCiAgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KQogewotICAgIGJvb2wgY2FuR3Jvd01v
cmUgPSBjYW5ab29tSW4obV9wYWdlLT5zZXR0aW5ncygpLT56b29tc1RleHRPbmx5KCkpOworICAg
IGJvb2wgY2FuR3Jvd01vcmUgPSBjYW5ab29tSW4obV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9k
ZSgpID09IFpvb21UZXh0T25seSk7CiAgICAgKnJlc3VsdCA9IGNhbkdyb3dNb3JlID8gVFJVRSA6
IEZBTFNFOwogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzcwMiw3ICszNzAzLDcgQEAgYm9vbCBX
ZWJWaWV3OjpjYW5ab29tSW4oYm9vbCBpc1RleHRPbmx5KQogSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJWaWV3OjptYWtlVGV4dExhcmdlciggCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25v
d24qIC8qc2VuZGVyKi8pCiB7Ci0gICAgcmV0dXJuIHpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCkt
Pnpvb21zVGV4dE9ubHkoKSk7CisgICAgcmV0dXJuIHpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCkt
Pnpvb21Nb2RlKCkgPT0gWm9vbVRleHRPbmx5KTsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJWaWV3Ojp6b29tUGFnZUluKCAKQEAgLTM3MjMsNyArMzcyNCw3IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y2FuTWFrZVRleHRTbWFsbGVyKAogICAgICAgICAv
KiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovLAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJPT0wqIHJlc3VsdCkKIHsKLSAgICBib29sIGNhblNocmlua01vcmUgPSBjYW5ab29tT3V0
KG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbXNUZXh0T25seSgpKTsKKyAgICBib29sIGNhblNocmlu
a01vcmUgPSBjYW5ab29tT3V0KG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKSA9PSBab29t
VGV4dE9ubHkpOwogICAgICpyZXN1bHQgPSBjYW5TaHJpbmtNb3JlID8gVFJVRSA6IEZBTFNFOwog
ICAgIHJldHVybiBTX09LOwogfQpAQCAtMzc0NSw3ICszNzQ2LDcgQEAgYm9vbCBXZWJWaWV3Ojpj
YW5ab29tT3V0KGJvb2wgaXNUZXh0T25seSkKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6bWFrZVRleHRTbWFsbGVyKCAKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypz
ZW5kZXIqLykKIHsKLSAgICByZXR1cm4gem9vbU91dChtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21z
VGV4dE9ubHkoKSk7CisgICAgcmV0dXJuIHpvb21PdXQobV9wYWdlLT5zZXR0aW5ncygpLT56b29t
TW9kZSgpID09IFpvb21UZXh0T25seSk7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVmlldzo6em9vbVBhZ2VPdXQoIApAQCAtNDU3Niw3ICs0NTc3LDcgQEAgSFJFU1VMVCBXZWJW
aWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0
aW9uKQogICAgIGhyID0gcHJlZmVyZW5jZXMtPnpvb21zVGV4dE9ubHkoJmVuYWJsZWQpOwogICAg
IGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7Ci0gICAgc2V0dGluZ3MtPnNldFpv
b21zVGV4dE9ubHkoISFlbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0Wm9vbU1vZGUoZW5hYmxl
ZCA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKIAogICAgIHNldHRpbmdzLT5zZXRTaG93c1VS
THNJblRvb2xUaXBzKGZhbHNlKTsKICAgICBzZXR0aW5ncy0+c2V0Rm9yY2VGVFBEaXJlY3RvcnlM
aXN0aW5ncyh0cnVlKTsKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9XZWJLaXQv
d3gvQ2hhbmdlTG9nCmluZGV4IGFkOGRmMTIuLjE2MDY1NTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93
eC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEwLTAyLTI0ICBKYWtvYiBQZXRzb3ZpdHMgIDxqYWtvYi5wZXRzb3ZpdHNAdG9yY2htb2JpbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
YXB0IHRvIHRoZSBuZXcgWm9vbU1vZGUgZW51bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MzQ3CisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6Cisg
ICAgICAgICh3eFdlYkZyYW1lOjpJbmNyZWFzZVRleHRTaXplKToKKyAgICAgICAgKHd4V2ViRnJh
bWU6OkRlY3JlYXNlVGV4dFNpemUpOgorICAgICAgICAod3hXZWJGcmFtZTo6UmVzZXRUZXh0U2l6
ZSk6CisKIDIwMTAtMDItMjMgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4
L1dlYkZyYW1lLmNwcCBiL1dlYktpdC93eC9XZWJGcmFtZS5jcHAKaW5kZXggNmNkYTE5Ny4uMDYy
NjhhZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAorKysgYi9XZWJLaXQvd3gv
V2ViRnJhbWUuY3BwCkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCB3eFdlYkZyYW1lOjpJbmNyZWFz
ZVRleHRTaXplKCkKIHsKICAgICBpZiAoQ2FuSW5jcmVhc2VUZXh0U2l6ZSgpKSB7CiAgICAgICAg
IG1fdGV4dE1hZ25pZmllciA9IG1fdGV4dE1hZ25pZmllcipUZXh0U2l6ZU11bHRpcGxpZXJSYXRp
bzsKLSAgICAgICAgbV9pbXBsLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIs
IHRydWUpOworICAgICAgICBtX2ltcGwtPmZyYW1lLT5zZXRab29tRmFjdG9yKG1fdGV4dE1hZ25p
ZmllciwgWm9vbVRleHRPbmx5KTsKICAgICB9CiB9CiAKQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lk
IHd4V2ViRnJhbWU6OkRlY3JlYXNlVGV4dFNpemUoKQogeyAgICAgICAgCiAgICAgaWYgKENhbkRl
Y3JlYXNlVGV4dFNpemUoKSkgewogICAgICAgICBtX3RleHRNYWduaWZpZXIgPSBtX3RleHRNYWdu
aWZpZXIvVGV4dFNpemVNdWx0aXBsaWVyUmF0aW87Ci0gICAgICAgIG1faW1wbC0+ZnJhbWUtPnNl
dFpvb21GYWN0b3IobV90ZXh0TWFnbmlmaWVyLCB0cnVlKTsKKyAgICAgICAgbV9pbXBsLT5mcmFt
ZS0+c2V0Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIsIFpvb21UZXh0T25seSk7CiAgICAgfQog
fQogCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCB3eFdlYkZyYW1lOjpSZXNldFRleHRTaXplKCkK
IHsKICAgICBtX3RleHRNYWduaWZpZXIgPSAxLjA7CiAgICAgaWYgKG1faW1wbC0+ZnJhbWUpCi0g
ICAgICAgIG1faW1wbC0+ZnJhbWUtPnNldFpvb21GYWN0b3IobV90ZXh0TWFnbmlmaWVyLCB0cnVl
KTsKKyAgICAgICAgbV9pbXBsLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIs
IFpvb21UZXh0T25seSk7CiB9CiAKIHZvaWQgd3hXZWJGcmFtZTo6TWFrZUVkaXRhYmxlKGJvb2wg
ZW5hYmxlKQo=
</data>
<flag name="review"
          id="32256"
          type_id="1"
          status="-"
          setter="manyoso"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49402</attachid>
            <date>2010-02-24 09:16:24 -0800</date>
            <delta_ts>2010-02-24 10:42:47 -0800</delta_ts>
            <desc>Convert the zoom mode into a proper enum (try 2)</desc>
            <filename>zoommode-enum.patch</filename>
            <type>text/plain</type>
            <size>19160</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2Q4NWFjMi4uMTQwZDJmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wMi0yNCAgSmFrb2IgUGV0c292
aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgdGhlIHpvb20gbW9kZSAocGFnZSB2cy4gdGV4dC1v
bmx5KSBpbnRvIGEgcHJvcGVyIGVudW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNTM0NworCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6em9vbU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6
OnNob3VsZEFwcGx5VGV4dFpvb20pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNob3VsZEFw
cGx5UGFnZVpvb20pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldFpvb21GYWN0b3IpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6c2V0Wm9vbU1vZGUpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6em9vbU1vZGUpOgor
ICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NW
R0VsZW1lbnQ6OnNldEN1cnJlbnRTY2FsZSk6CisKIDIwMTAtMDItMjMgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyIGFu
ZCBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjYyYzU2Yy4uN2QwYzgzOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03
MSw3ICs3MSw2IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNj
cmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgpAQCAtNjYx
LDI4ICs2NjAsMjQgQEAgZmxvYXQgRnJhbWU6Onpvb21GYWN0b3IoKSBjb25zdAogICAgIHJldHVy
biBtX3pvb21GYWN0b3I7CiB9CiAKLWJvb2wgRnJhbWU6OmlzWm9vbUZhY3RvclRleHRPbmx5KCkg
Y29uc3QKK1pvb21Nb2RlIEZyYW1lOjp6b29tTW9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cGFnZS0+c2V0dGluZ3MoKS0+em9vbXNUZXh0T25seSgpOworICAgIHJldHVybiBtX3BhZ2UtPnNl
dHRpbmdzKCktPnpvb21Nb2RlKCk7CiB9CiAKIGJvb2wgRnJhbWU6OnNob3VsZEFwcGx5VGV4dFpv
b20oKSBjb25zdAogewotICAgIGlmIChtX3pvb21GYWN0b3IgPT0gMS4wZiB8fCAhaXNab29tRmFj
dG9yVGV4dE9ubHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBtX3pvb21GYWN0b3IgIT0gMS4wZiAmJiB6b29tTW9kZSgpID09IFpvb21UZXh0
T25seTsKIH0KIAogYm9vbCBGcmFtZTo6c2hvdWxkQXBwbHlQYWdlWm9vbSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKG1fem9vbUZhY3RvciA9PSAxLjBmIHx8IGlzWm9vbUZhY3RvclRleHRPbmx5KCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbV96b29t
RmFjdG9yICE9IDEuMGYgJiYgem9vbU1vZGUoKSA9PSBab29tUGFnZTsKIH0KIAotdm9pZCBGcmFt
ZTo6c2V0Wm9vbUZhY3RvcihmbG9hdCBwZXJjZW50LCBib29sIGlzVGV4dE9ubHkpCit2b2lkIEZy
YW1lOjpzZXRab29tRmFjdG9yKGZsb2F0IHBlcmNlbnQsIFpvb21Nb2RlIG1vZGUpCiB7Ci0gICAg
aWYgKG1fem9vbUZhY3RvciA9PSBwZXJjZW50ICYmIGlzWm9vbUZhY3RvclRleHRPbmx5KCkgPT0g
aXNUZXh0T25seSkKKyAgICBpZiAobV96b29tRmFjdG9yID09IHBlcmNlbnQgJiYgem9vbU1vZGUo
KSA9PSBtb2RlKQogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoU1ZHKQpAQCAtNjk2LDcg
KzY5MSw3IEBAIHZvaWQgRnJhbWU6OnNldFpvb21GYWN0b3IoZmxvYXQgcGVyY2VudCwgYm9vbCBp
c1RleHRPbmx5KQogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKCFpc1RleHRPbmx5KSB7CisgICAg
aWYgKG1vZGUgPT0gWm9vbVBhZ2UpIHsKICAgICAgICAgLy8gVXBkYXRlIHRoZSBzY3JvbGwgcG9z
aXRpb24gd2hlbiBkb2luZyBhIGZ1bGwgcGFnZSB6b29tLCBzbyB0aGUgY29udGVudCBzdGF5cyBp
biByZWxhdGl2ZWx5IHRoZSBzYW1lIHBvc2l0aW9uLgogICAgICAgICBJbnRQb2ludCBzY3JvbGxQ
b3NpdGlvbiA9IHZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKTsKICAgICAgICAgZmxvYXQgcGVyY2Vu
dERpZmZlcmVuY2UgPSAocGVyY2VudCAvIG1fem9vbUZhY3Rvcik7CkBAIC03MDQsMTIgKzY5OSwx
MiBAQCB2b2lkIEZyYW1lOjpzZXRab29tRmFjdG9yKGZsb2F0IHBlcmNlbnQsIGJvb2wgaXNUZXh0
T25seSkKICAgICB9CiAKICAgICBtX3pvb21GYWN0b3IgPSBwZXJjZW50OwotICAgIG1fcGFnZS0+
c2V0dGluZ3MoKS0+c2V0Wm9vbXNUZXh0T25seShpc1RleHRPbmx5KTsKKyAgICBtX3BhZ2UtPnNl
dHRpbmdzKCktPnNldFpvb21Nb2RlKG1vZGUpOwogCiAgICAgbV9kb2MtPnJlY2FsY1N0eWxlKE5v
ZGU6OkZvcmNlKTsKIAogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gdHJlZSgpLT5maXJzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCi0gICAgICAg
IGNoaWxkLT5zZXRab29tRmFjdG9yKG1fem9vbUZhY3RvciwgaXNUZXh0T25seSk7CisgICAgICAg
IGNoaWxkLT5zZXRab29tRmFjdG9yKG1fem9vbUZhY3RvciwgbW9kZSk7CiAKICAgICBpZiAobV9k
b2MtPnJlbmRlcmVyKCkgJiYgbV9kb2MtPnJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkgJiYgdmll
dygpLT5kaWRGaXJzdExheW91dCgpKQogICAgICAgICB2aWV3KCktPmxheW91dCgpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCAy
NmQxZWZhLi4wYTdkNzY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9X
ZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxCZWhhdmlvci5oIgogI2luY2x1ZGUgIlNlbGVj
dGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVzZXJT
Y3JpcHRUeXBlcy5oIgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTY5LDkgKzE3MCw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyA9PT0gdG8gYmUgbW92ZWQgaW50byBGcmFtZVZpZXcK
IAogICAgIHB1YmxpYzoKLSAgICAgICAgdm9pZCBzZXRab29tRmFjdG9yKGZsb2F0IHNjYWxlLCBi
b29sIGlzVGV4dE9ubHkpOworICAgICAgICB2b2lkIHNldFpvb21GYWN0b3IoZmxvYXQgc2NhbGUs
IFpvb21Nb2RlKTsKICAgICAgICAgZmxvYXQgem9vbUZhY3RvcigpIGNvbnN0OwotICAgICAgICBi
b29sIGlzWm9vbUZhY3RvclRleHRPbmx5KCkgY29uc3Q7CisgICAgICAgIFpvb21Nb2RlIHpvb21N
b2RlKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgc2hvdWxkQXBwbHlUZXh0Wm9vbSgpIGNvbnN0Owog
ICAgICAgICBib29sIHNob3VsZEFwcGx5UGFnZVpvb20oKSBjb25zdDsKICAgICAgICAgZmxvYXQg
cGFnZVpvb21GYWN0b3IoKSBjb25zdCB7IHJldHVybiBzaG91bGRBcHBseVBhZ2Vab29tKCkgPyB6
b29tRmFjdG9yKCkgOiAxLjBmOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBjYzhmN2FmLi41N2YzY2RkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBh
Z2UpCiAgICAgLCBtX21heGltdW1EZWNvZGVkSW1hZ2VTaXplKG51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpKQogICAgICwgbV9sb2NhbFN0b3JhZ2VRdW90YSg1ICogMTAyNCAqIDEwMjQpICAv
LyBTdWdnZXN0ZWQgYnkgdGhlIEhUTUw1IHNwZWMuCiAgICAgLCBtX3BsdWdpbkFsbG93ZWRSdW5U
aW1lKG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgLCBtX3pvb21Nb2RlKFpv
b21QYWdlKQogICAgICwgbV9pc0phdmFFbmFibGVkKGZhbHNlKQogICAgICwgbV9sb2Fkc0ltYWdl
c0F1dG9tYXRpY2FsbHkoZmFsc2UpCiAgICAgLCBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQoZmFs
c2UpCkBAIC0xMDIsNyArMTAzLDYgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAg
ICAgLCBtX2luQXBwbGljYXRpb25DaHJvbWVNb2RlKGZhbHNlKQogICAgICwgbV9vZmZsaW5lV2Vi
QXBwbGljYXRpb25DYWNoZUVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFBhaW50Q3VzdG9t
U2Nyb2xsYmFycyhmYWxzZSkKLSAgICAsIG1fem9vbXNUZXh0T25seShmYWxzZSkKICAgICAsIG1f
ZW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKHRydWUpCiAgICAgLCBtX3VzZXNFbmNvZGlu
Z0RldGVjdG9yKGZhbHNlKQogICAgICwgbV9hbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyhmYWxz
ZSkKQEAgLTQ2NywxMiArNDY3LDEyIEBAIHZvaWQgU2V0dGluZ3M6OnNldFNob3VsZFBhaW50Q3Vz
dG9tU2Nyb2xsYmFycyhib29sIHNob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycykKICAgICBtX3No
b3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyA9IHNob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFyczsK
IH0KIAotdm9pZCBTZXR0aW5nczo6c2V0Wm9vbXNUZXh0T25seShib29sIHpvb21zVGV4dE9ubHkp
Cit2b2lkIFNldHRpbmdzOjpzZXRab29tTW9kZShab29tTW9kZSBtb2RlKQogewotICAgIGlmICh6
b29tc1RleHRPbmx5ID09IG1fem9vbXNUZXh0T25seSkKKyAgICBpZiAobW9kZSA9PSBtX3pvb21N
b2RlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV96b29tc1RleHRPbmx5ID0gem9vbXNU
ZXh0T25seTsKKyAgICBtX3pvb21Nb2RlID0gbW9kZTsKICAgICBzZXROZWVkc1JlYXBwbHlTdHls
ZXNJbkFsbEZyYW1lcyhtX3BhZ2UpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaCBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IDA2ZjQ1NzAuLjQ4NTVmYTkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oCkBAIC00OSw2ICs0OSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFRleHREaXJlY3Rpb25TdWJtZW51QWx3YXlzSW5jbHVkZWQKICAgICB9OwogCisgICAgZW51bSBa
b29tTW9kZSB7CisgICAgICAgIFpvb21QYWdlLAorICAgICAgICBab29tVGV4dE9ubHkKKyAgICB9
OworCiAgICAgLy8gVGhlcmUgYXJlIG11bHRpcGxlIGVkaXRpbmcgZGV0YWlscyB0aGF0IGFyZSBk
aWZmZXJlbnQgb24gV2luZG93cyB0aGFuIE1hY2ludG9zaC4KICAgICAvLyBXZSB1c2UgYSBzaW5n
bGUgc3dpdGNoIGZvciBhbGwgb2YgdGhlbS4gU29tZSBleGFtcGxlczoKICAgICAvLwpAQCAtMjM0
LDggKzIzOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRTaG91bGRQ
YWludEN1c3RvbVNjcm9sbGJhcnMoYm9vbCk7CiAgICAgICAgIGJvb2wgc2hvdWxkUGFpbnRDdXN0
b21TY3JvbGxiYXJzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRQYWludEN1c3RvbVNjcm9sbGJh
cnM7IH0KIAotICAgICAgICB2b2lkIHNldFpvb21zVGV4dE9ubHkoYm9vbCk7Ci0gICAgICAgIGJv
b2wgem9vbXNUZXh0T25seSgpIGNvbnN0IHsgcmV0dXJuIG1fem9vbXNUZXh0T25seTsgfQorICAg
ICAgICB2b2lkIHNldFpvb21Nb2RlKFpvb21Nb2RlKTsKKyAgICAgICAgWm9vbU1vZGUgem9vbU1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX3pvb21Nb2RlOyB9CiAgICAgICAgIAogICAgICAgICB2b2lk
IHNldEVuZm9yY2VDU1NNSU1FVHlwZUluU3RyaWN0TW9kZShib29sKTsKICAgICAgICAgYm9vbCBl
bmZvcmNlQ1NTTUlNRVR5cGVJblN0cmljdE1vZGUoKSB7IHJldHVybiBtX2VuZm9yY2VDU1NNSU1F
VHlwZUluU3RyaWN0TW9kZTsgfQpAQCAtMzA5LDYgKzMxNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgc2l6ZV90IG1fbWF4aW11bURlY29kZWRJbWFnZVNpemU7CiAgICAgICAgIHVu
c2lnbmVkIG1fbG9jYWxTdG9yYWdlUXVvdGE7CiAgICAgICAgIHVuc2lnbmVkIG1fcGx1Z2luQWxs
b3dlZFJ1blRpbWU7CisgICAgICAgIFpvb21Nb2RlIG1fem9vbU1vZGU7CiAgICAgICAgIGJvb2wg
bV9pc0phdmFFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseSA6IDE7CiAgICAgICAgIGJvb2wgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkIDogMTsKQEAg
LTM0Nyw3ICszNTMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9pbkFw
cGxpY2F0aW9uQ2hyb21lTW9kZSA6IDE7CiAgICAgICAgIGJvb2wgbV9vZmZsaW5lV2ViQXBwbGlj
YXRpb25DYWNoZUVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fc2hvdWxkUGFpbnRDdXN0b21T
Y3JvbGxiYXJzIDogMTsKLSAgICAgICAgYm9vbCBtX3pvb21zVGV4dE9ubHkgOiAxOwogICAgICAg
ICBib29sIG1fZW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlIDogMTsKICAgICAgICAgYm9v
bCBtX3VzZXNFbmNvZGluZ0RldGVjdG9yIDogMTsKICAgICAgICAgYm9vbCBtX2FsbG93U2NyaXB0
c1RvQ2xvc2VXaW5kb3dzIDogMTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggZmYyNGM0Zi4uN2E2
ZGI4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIFNWR1NW
R0VsZW1lbnQ6OnNldEN1cnJlbnRTY2FsZShmbG9hdCBzY2FsZSkKICAgICAgICAgLy8gQ2FsbGlu
ZyBzZXRDdXJyZW50U2NhbGUoKSBvbiB0aGUgb3V0ZXJtb3N0IDxzdmc+IGVsZW1lbnQgaW4gYSBz
dGFuZGFsb25lIFNWRyBkb2N1bWVudAogICAgICAgICAvLyBpcyBhbGxvd2VkIHRvIGNoYW5nZSB0
aGUgcGFnZSB6b29tIGZhY3RvciwgaW5mbHVlbmNpbmcgdGhlIGRvY3VtZW50IHNpemUsIHNjcm9s
bGJhcnMgZXRjLgogICAgICAgICBpZiAocGFyZW50Tm9kZSgpID09IGRvY3VtZW50KCkpCi0gICAg
ICAgICAgICBmcmFtZS0+c2V0Wm9vbUZhY3RvcihzY2FsZSwgZmFsc2UpOworICAgICAgICAgICAg
ZnJhbWUtPnNldFpvb21GYWN0b3Ioc2NhbGUsIFpvb21QYWdlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTI4ZDQzYS4uNjczZjA3MSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTAtMDItMjQgIEpha29iIFBldHNvdml0cyAgPGpwZXRzb3ZpdHNA
cmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGFwdCB0byB0aGUgbmV3IFpvb21Nb2RlIGVudW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTM0NworCisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFpvb21MZXZlbCk6CisK
IDIwMTAtMDItMjMgIEphbWVzIEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAppbmRleCA5NzY2NWQ0Li43MmZiYmQ1IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcApAQCAtMTMwMiw3ICsxMzAyLDcgQEAgaW50IFdlYlZpZXdJbXBsOjpzZXRab29tTGV2ZWwo
Ym9vbCB0ZXh0T25seSwgaW50IHpvb21MZXZlbCkKICAgICBGcmFtZSogZnJhbWUgPSBtYWluRnJh
bWVJbXBsKCktPmZyYW1lKCk7CiAgICAgaWYgKHpvb21GYWN0b3IgIT0gZnJhbWUtPnpvb21GYWN0
b3IoKSkgewogICAgICAgICBtX3pvb21MZXZlbCA9IHpvb21MZXZlbDsKLSAgICAgICAgZnJhbWUt
PnNldFpvb21GYWN0b3Ioem9vbUZhY3RvciwgdGV4dE9ubHkpOworICAgICAgICBmcmFtZS0+c2V0
Wm9vbUZhY3Rvcih6b29tRmFjdG9yLCB0ZXh0T25seSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdl
KTsKICAgICB9CiAgICAgcmV0dXJuIG1fem9vbUxldmVsOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA1YzQ5OWIxLi4xNTkz
OWRkIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEwLTAyLTI0ICBKYWtvYiBQZXRzb3ZpdHMgIDxq
cGV0c292aXRzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRhcHQgdG8gdGhlIG5ldyBab29tTW9kZSBlbnVtLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUzNDcKKworICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2Vk
Tm90aWZpY2F0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRab29tTXVsdGlwbGllcjpp
c1RleHRPbmx5Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9yZWFsWm9vbU11bHRpcGxpZXJJc1Rl
eHRPbmx5XSk6CisKIDIwMTAtMDItMjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyIGFuZCBQYXZlbCBGZWxkbWFuLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQppbmRleCBiZTAzNWIyLi5jODQ3YWU5IDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQpAQCAtMTMzOSw3ICsxMzM5LDcgQEAgc3RhdGljIGJvb2wgZmFzdERvY3VtZW50VGVhcmRv
d25FbmFibGVkKCkKICAgICBzZXR0aW5ncy0+c2V0V2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWQo
W3ByZWZlcmVuY2VzIHdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Mt
PnNldExvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGxvY2FsRmls
ZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0T2ZmbGluZVdlYkFw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkKFtwcmVmZXJlbmNlcyBvZmZsaW5lV2ViQXBwbGljYXRpb25D
YWNoZUVuYWJsZWRdKTsKLSAgICBzZXR0aW5ncy0+c2V0Wm9vbXNUZXh0T25seShbcHJlZmVyZW5j
ZXMgem9vbXNUZXh0T25seV0pOworICAgIHNldHRpbmdzLT5zZXRab29tTW9kZShbcHJlZmVyZW5j
ZXMgem9vbXNUZXh0T25seV0gPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CiAgICAgc2V0dGlu
Z3MtPnNldFhTU0F1ZGl0b3JFbmFibGVkKFtwcmVmZXJlbmNlcyBpc1hTU0F1ZGl0b3JFbmFibGVk
XSk7CiAgICAgc2V0dGluZ3MtPnNldEVuZm9yY2VDU1NNSU1FVHlwZUluU3RyaWN0TW9kZSghV0tB
cHBWZXJzaW9uQ2hlY2tMZXNzVGhhbihAImNvbS5hcHBsZS5pV2ViIiwgLTEsIDIuMSkpOwogICAg
IHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChjb3JlVmlkZW9IYXM3
MjI4ODM2Rml4KCkgJiYgW3ByZWZlcmVuY2VzIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
XSk7CkBAIC0zMTE1LDcgKzMxMTUsNyBAQCBzdGF0aWMgYm9vbCBuZWVkc1dlYlZpZXdJbml0VGhy
ZWFkV29ya2Fyb3VuZCgpCiAgICAgX3ByaXZhdGUtPnpvb21NdWx0aXBsaWVyID0gbTsKICAgICBB
U1NFUlQoX3ByaXZhdGUtPnBhZ2UpOwogICAgIGlmIChfcHJpdmF0ZS0+cGFnZSkKLSAgICAgICAg
X3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCktPnNldFpvb21zVGV4dE9ubHkoaXNUZXh0T25seSk7
CisgICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLT5zZXRab29tTW9kZShpc1RleHRP
bmx5ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwogICAgIAogICAgIC8vIEZJWE1FOiBpdCB3
b3VsZCBiZSBuaWNlIHRvIHJld29yayB0aGlzIGNvZGUgc28gdGhhdCBfcHJpdmF0ZS0+em9vbU11
bHRpcGxpZXIgZG9lc24ndCBleGlzdCBhbmQgY2FsbGVycwogICAgIC8vIGFsbCBhY2Nlc3MgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuCkBAIC0zMTQxLDcgKzMxNDEsNyBAQCBzdGF0aWMgYm9v
bCBuZWVkc1dlYlZpZXdJbml0VGhyZWFkV29ya2Fyb3VuZCgpCiAgICAgaWYgKCFfcHJpdmF0ZS0+
cGFnZSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIAotICAgIHJldHVybiBfcHJpdmF0ZS0+cGFn
ZS0+c2V0dGluZ3MoKS0+em9vbXNUZXh0T25seSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+cGFn
ZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKSA9PSBab29tVGV4dE9ubHkgPyBZRVMgOiBOTzsKIH0K
IAogI2RlZmluZSBNaW5pbXVtWm9vbU11bHRpcGxpZXIgICAgICAgMC41ZgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3Bw
CmluZGV4IDE1YjVjMDAuLjljZmM1OGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYmZy
YW1lLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKQEAgLTEyNDUsNyArMTI0
NSw3IEBAIHZvaWQgUVdlYkZyYW1lOjpyZW5kZXIoUVBhaW50ZXIqIHBhaW50ZXIpCiAqLwogdm9p
ZCBRV2ViRnJhbWU6OnNldFRleHRTaXplTXVsdGlwbGllcihxcmVhbCBmYWN0b3IpCiB7Ci0gICAg
ZC0+ZnJhbWUtPnNldFpvb21GYWN0b3IoZmFjdG9yLCAvKmlzVGV4dE9ubHkqL3RydWUpOworICAg
IGQtPmZyYW1lLT5zZXRab29tRmFjdG9yKGZhY3RvciwgWm9vbVRleHRPbmx5KTsKIH0KIAogLyoh
CkBAIC0xMjY0LDcgKzEyNjQsNyBAQCBxcmVhbCBRV2ViRnJhbWU6OnRleHRTaXplTXVsdGlwbGll
cigpIGNvbnN0CiAKIHZvaWQgUVdlYkZyYW1lOjpzZXRab29tRmFjdG9yKHFyZWFsIGZhY3RvcikK
IHsKLSAgICBkLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihmYWN0b3IsIGQtPmZyYW1lLT5pc1pvb21G
YWN0b3JUZXh0T25seSgpKTsKKyAgICBkLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihmYWN0b3IsIGQt
PmZyYW1lLT56b29tTW9kZSgpKTsKIH0KIAogcXJlYWwgUVdlYkZyYW1lOjp6b29tRmFjdG9yKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcCBiL1dlYktp
dC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAppbmRleCBkNjBmMDljLi4xZTNjOTRhIDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9x
d2Vic2V0dGluZ3MuY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2
YXRlOjphcHBseSgpCiAKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0
aW5nczo6Wm9vbVRleHRPbmx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Wm9vbVRleHRPbmx5KSk7Ci0gICAg
ICAgIHNldHRpbmdzLT5zZXRab29tc1RleHRPbmx5KHZhbHVlKTsKKyAgICAgICAgc2V0dGluZ3Mt
PnNldFpvb21Nb2RlKHZhbHVlID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwogCiAgICAgICAg
IHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OlByaW50RWxlbWVudEJhY2tn
cm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0
dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpQcmludEVsZW1lbnRCYWNrZ3JvdW5kcykpOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5k
ZXggMmQxYTQ4My4uZTllNjA1OCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDItMjQgIEpha29i
IFBldHNvdml0cyAgPGpwZXRzb3ZpdHNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGFwdCB0byB0aGUgbmV3IFpvb21Nb2RlIGVudW0u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTM0Nwor
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OnNldFRl
eHRTaXplTXVsdGlwbGllcik6CisgICAgICAgIChRV2ViRnJhbWU6OnNldFpvb21GYWN0b3IpOgor
ICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJp
dmF0ZTo6YXBwbHkpOgorCiAyMDEwLTAyLTIzICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBh
L1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNzZiMTQ1
MC4uNjY3ZThlZSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMi0yNCAgSmFrb2IgUGV0c292
aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkYXB0IHRvIHRoZSBuZXcgWm9vbU1vZGUgZW51bS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MzQ3CisKKyAgICAg
ICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6c2V0VGV4dFNpemVNdWx0aXBs
aWVyKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnNldFpvb21N
dWx0aXBsaWVyKToKKyAgICAgICAgKFdlYlZpZXc6Onpvb21NdWx0aXBsaWVyKToKKyAgICAgICAg
KFdlYlZpZXc6OmNhbk1ha2VUZXh0TGFyZ2VyKToKKyAgICAgICAgKFdlYlZpZXc6Om1ha2VUZXh0
TGFyZ2VyKToKKyAgICAgICAgKFdlYlZpZXc6OmNhbk1ha2VUZXh0U21hbGxlcik6CisgICAgICAg
IChXZWJWaWV3OjptYWtlVGV4dFNtYWxsZXIpOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJl
ZmVyZW5jZXNDaGFuZ2VkKToKKwogMjAxMC0wMi0yMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhhdGNoZXIgYW5kIFBhdmVsIEZl
bGRtYW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1dlYktpdC93aW4v
V2ViRnJhbWUuY3BwCmluZGV4IDhlMDM3OTQuLjhiN2UwZmQgMTAwNjQ0Ci0tLSBhL1dlYktpdC93
aW4vV2ViRnJhbWUuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBAIC0xMDc0LDcg
KzEwNzQsNyBAQCB2b2lkIFdlYkZyYW1lOjpzZXRUZXh0U2l6ZU11bHRpcGxpZXIoZmxvYXQgbXVs
dGlwbGllcikKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKICAgICBBU1NF
UlQoY29yZUZyYW1lKTsKLSAgICBjb3JlRnJhbWUtPnNldFpvb21GYWN0b3IobXVsdGlwbGllciwg
dHJ1ZSk7CisgICAgY29yZUZyYW1lLT5zZXRab29tRmFjdG9yKG11bHRpcGxpZXIsIFpvb21UZXh0
T25seSk7CiB9CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmluVmlld1NvdXJjZU1vZGUoQk9PTCogZmxh
ZykKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCmluZGV4IDc4MTM4MTEuLjUzODlkMDUgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtMjg3OSw5ICsyODc5LDkg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRQYWdlU2l6ZU11bHRpcGxp
ZXIoCiB2b2lkIFdlYlZpZXc6OnNldFpvb21NdWx0aXBsaWVyKGZsb2F0IG11bHRpcGxpZXIsIGJv
b2wgaXNUZXh0T25seSkKIHsKICAgICBtX3pvb21NdWx0aXBsaWVyID0gbXVsdGlwbGllcjsKLSAg
ICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFpvb21zVGV4dE9ubHkoaXNUZXh0T25seSk7CisgICAg
bV9wYWdlLT5zZXR0aW5ncygpLT5zZXRab29tTW9kZShpc1RleHRPbmx5ID8gWm9vbVRleHRPbmx5
IDogWm9vbVBhZ2UpOwogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShtX21haW5GcmFt
ZSkpCi0gICAgICAgIGNvcmVGcmFtZS0+c2V0Wm9vbUZhY3RvcihtdWx0aXBsaWVyLCBpc1RleHRP
bmx5KTsKKyAgICAgICAgY29yZUZyYW1lLT5zZXRab29tRmFjdG9yKG11bHRpcGxpZXIsIGlzVGV4
dE9ubHkgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViVmlldzo6dGV4dFNpemVNdWx0aXBsaWVyKCAKQEAgLTI5MDAsNyArMjkwMCw4
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cGFnZVNpemVNdWx0aXBsaWVy
KAogCiBmbG9hdCBXZWJWaWV3Ojp6b29tTXVsdGlwbGllcihib29sIGlzVGV4dE9ubHkpCiB7Ci0g
ICAgaWYgKGlzVGV4dE9ubHkgIT0gbV9wYWdlLT5zZXR0aW5ncygpLT56b29tc1RleHRPbmx5KCkp
CisgICAgWm9vbU1vZGUgem9vbU1vZGUgPSBpc1RleHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9v
bVBhZ2U7CisgICAgaWYgKHpvb21Nb2RlICE9IG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUo
KSkKICAgICAgICAgcmV0dXJuIDEuMGY7CiAgICAgcmV0dXJuIG1fem9vbU11bHRpcGxpZXI7CiB9
CkBAIC0zNjgwLDcgKzM2ODEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OmNhbk1ha2VUZXh0TGFyZ2VyKAogICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRl
ciovLAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKIHsKLSAgICBi
b29sIGNhbkdyb3dNb3JlID0gY2FuWm9vbUluKG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbXNUZXh0
T25seSgpKTsKKyAgICBib29sIGNhbkdyb3dNb3JlID0gY2FuWm9vbUluKG1fcGFnZS0+c2V0dGlu
Z3MoKS0+em9vbU1vZGUoKSA9PSBab29tVGV4dE9ubHkpOwogICAgICpyZXN1bHQgPSBjYW5Hcm93
TW9yZSA/IFRSVUUgOiBGQUxTRTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTM3MDIsNyArMzcw
Myw3IEBAIGJvb2wgV2ViVmlldzo6Y2FuWm9vbUluKGJvb2wgaXNUZXh0T25seSkKIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bWFrZVRleHRMYXJnZXIoIAogICAgICAgICAvKiBb
aW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQogewotICAgIHJldHVybiB6b29tSW4obV9wYWdl
LT5zZXR0aW5ncygpLT56b29tc1RleHRPbmx5KCkpOworICAgIHJldHVybiB6b29tSW4obV9wYWdl
LT5zZXR0aW5ncygpLT56b29tTW9kZSgpID09IFpvb21UZXh0T25seSk7CiB9CiAKIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6em9vbVBhZ2VJbiggCkBAIC0zNzIzLDcgKzM3MjQs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNhbk1ha2VUZXh0U21hbGxl
cigKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLywKICAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCiB7Ci0gICAgYm9vbCBjYW5TaHJpbmtNb3Jl
ID0gY2FuWm9vbU91dChtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21zVGV4dE9ubHkoKSk7CisgICAg
Ym9vbCBjYW5TaHJpbmtNb3JlID0gY2FuWm9vbU91dChtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21N
b2RlKCkgPT0gWm9vbVRleHRPbmx5KTsKICAgICAqcmVzdWx0ID0gY2FuU2hyaW5rTW9yZSA/IFRS
VUUgOiBGQUxTRTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTM3NDUsNyArMzc0Niw3IEBAIGJv
b2wgV2ViVmlldzo6Y2FuWm9vbU91dChib29sIGlzVGV4dE9ubHkpCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlZpZXc6Om1ha2VUZXh0U21hbGxlciggCiAgICAgICAgIC8qIFtpbl0gKi8g
SVVua25vd24qIC8qc2VuZGVyKi8pCiB7Ci0gICAgcmV0dXJuIHpvb21PdXQobV9wYWdlLT5zZXR0
aW5ncygpLT56b29tc1RleHRPbmx5KCkpOworICAgIHJldHVybiB6b29tT3V0KG1fcGFnZS0+c2V0
dGluZ3MoKS0+em9vbU1vZGUoKSA9PSBab29tVGV4dE9ubHkpOwogfQogCiBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlZpZXc6Onpvb21QYWdlT3V0KCAKQEAgLTQ1NzYsNyArNDU3Nyw3IEBA
IEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbikKICAgICBociA9IHByZWZlcmVuY2VzLT56b29tc1RleHRPbmx5KCZl
bmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotICAgIHNl
dHRpbmdzLT5zZXRab29tc1RleHRPbmx5KCEhZW5hYmxlZCk7CisgICAgc2V0dGluZ3MtPnNldFpv
b21Nb2RlKGVuYWJsZWQgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CiAKICAgICBzZXR0aW5n
cy0+c2V0U2hvd3NVUkxzSW5Ub29sVGlwcyhmYWxzZSk7CiAgICAgc2V0dGluZ3MtPnNldEZvcmNl
RlRQRGlyZWN0b3J5TGlzdGluZ3ModHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvQ2hhbmdl
TG9nIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCBhZDhkZjEyLi5iMDYzOWE0IDEwMDY0NAot
LS0gYS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMC0wMi0yNCAgSmFrb2IgUGV0c292aXRzICA8anBldHNvdml0c0ByaW0u
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
YXB0IHRvIHRoZSBuZXcgWm9vbU1vZGUgZW51bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MzQ3CisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6Cisg
ICAgICAgICh3eFdlYkZyYW1lOjpJbmNyZWFzZVRleHRTaXplKToKKyAgICAgICAgKHd4V2ViRnJh
bWU6OkRlY3JlYXNlVGV4dFNpemUpOgorICAgICAgICAod3hXZWJGcmFtZTo6UmVzZXRUZXh0U2l6
ZSk6CisKIDIwMTAtMDItMjMgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4
L1dlYkZyYW1lLmNwcCBiL1dlYktpdC93eC9XZWJGcmFtZS5jcHAKaW5kZXggNmNkYTE5Ny4uMDYy
NjhhZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAorKysgYi9XZWJLaXQvd3gv
V2ViRnJhbWUuY3BwCkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCB3eFdlYkZyYW1lOjpJbmNyZWFz
ZVRleHRTaXplKCkKIHsKICAgICBpZiAoQ2FuSW5jcmVhc2VUZXh0U2l6ZSgpKSB7CiAgICAgICAg
IG1fdGV4dE1hZ25pZmllciA9IG1fdGV4dE1hZ25pZmllcipUZXh0U2l6ZU11bHRpcGxpZXJSYXRp
bzsKLSAgICAgICAgbV9pbXBsLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIs
IHRydWUpOworICAgICAgICBtX2ltcGwtPmZyYW1lLT5zZXRab29tRmFjdG9yKG1fdGV4dE1hZ25p
ZmllciwgWm9vbVRleHRPbmx5KTsKICAgICB9CiB9CiAKQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lk
IHd4V2ViRnJhbWU6OkRlY3JlYXNlVGV4dFNpemUoKQogeyAgICAgICAgCiAgICAgaWYgKENhbkRl
Y3JlYXNlVGV4dFNpemUoKSkgewogICAgICAgICBtX3RleHRNYWduaWZpZXIgPSBtX3RleHRNYWdu
aWZpZXIvVGV4dFNpemVNdWx0aXBsaWVyUmF0aW87Ci0gICAgICAgIG1faW1wbC0+ZnJhbWUtPnNl
dFpvb21GYWN0b3IobV90ZXh0TWFnbmlmaWVyLCB0cnVlKTsKKyAgICAgICAgbV9pbXBsLT5mcmFt
ZS0+c2V0Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIsIFpvb21UZXh0T25seSk7CiAgICAgfQog
fQogCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCB3eFdlYkZyYW1lOjpSZXNldFRleHRTaXplKCkK
IHsKICAgICBtX3RleHRNYWduaWZpZXIgPSAxLjA7CiAgICAgaWYgKG1faW1wbC0+ZnJhbWUpCi0g
ICAgICAgIG1faW1wbC0+ZnJhbWUtPnNldFpvb21GYWN0b3IobV90ZXh0TWFnbmlmaWVyLCB0cnVl
KTsKKyAgICAgICAgbV9pbXBsLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIs
IFpvb21UZXh0T25seSk7CiB9CiAKIHZvaWQgd3hXZWJGcmFtZTo6TWFrZUVkaXRhYmxlKGJvb2wg
ZW5hYmxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49410</attachid>
            <date>2010-02-24 10:42:47 -0800</date>
            <delta_ts>2010-02-24 10:59:30 -0800</delta_ts>
            <desc>Convert the zoom mode into a proper enum (try 3)</desc>
            <filename>zoommode-enum.patch</filename>
            <type>text/plain</type>
            <size>21714</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2Q4NWFjMi4uMzBkZjFjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0wMi0yNCAgSmFrb2IgUGV0c292
aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgdGhlIHpvb20gbW9kZSAocGFnZSB2cy4gdGV4dC1v
bmx5KSBpbnRvIGEgcHJvcGVyIGVudW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNTM0NworCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Onpvb21Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpzaG91bGRBcHBseVRleHRab29tKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzaG91
bGRBcHBseVBhZ2Vab29tKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRab29tRmFjdG9y
KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OnNldFpvb21Nb2RlKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6em9vbU1vZGUpOgorICAgICAgICAqIHBhZ2UvWm9v
bU1vZGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHN2Zy9TVkdT
VkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnNldEN1cnJl
bnRTY2FsZSk6CisKIDIwMTAtMDItMjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyIGFuZCBQYXZlbCBGZWxkbWFuLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggMjk3NWZmZS4uMDdiOWU3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xNDI0LDYgKzE0MjQsNyBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5oIFwKIAlX
ZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAgXAogCVdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmgg
XAorCVdlYkNvcmUvcGFnZS9ab29tTW9kZS5oIFwKIAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkJhc2UuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
aCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcCBcCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDllNmE5YTcuLmY2YTE0YzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xODg5LDYgKzE4ODksNyBAQAogICAgICAgICAg
ICAgJ3BhZ2UvV29ya2VyTmF2aWdhdG9yLmgnLAogICAgICAgICAgICAgJ3BhZ2UvWFNTQXVkaXRv
ci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvWFNTQXVkaXRvci5oJywKKyAgICAgICAgICAgICdw
YWdlL1pvb21Nb2RlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0LmNwcCcsCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBj
NjI1MjI0Li5lYzY1MzRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS5wcm8KQEAgLTE0NzgsNiArMTQ3OCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IHBhZ2UvV2luZG93RmVhdHVyZXMuaCBcCiAgICAgcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaCBcCiAg
ICAgcGFnZS9YU1NBdWRpdG9yLmggXAorICAgIHBhZ2UvWm9vbU1vZGUuaCBcCiAgICAgcGxhdGZv
cm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0
aW9uTGlzdC5oIFwKICAgICBwbGF0Zm9ybS9BcmVuYS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDhkNmI1NTcuLjQwMTgzZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMjEwMjQsNiArMjEwMjQsMTAgQEAKIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBhZ2VcWFNTQXVkaXRvci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxab29tTW9kZS5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KIAkJCTxGaWx0ZXINCiAJCQkJTmFtZT0id2luIg0KIAkJCQk+DQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjYy
YzU2Yy4uNTQ4YWI0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC02NjEsMjggKzY2MSwyNCBAQCBmbG9hdCBGcmFtZTo6
em9vbUZhY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fem9vbUZhY3RvcjsKIH0KIAotYm9vbCBG
cmFtZTo6aXNab29tRmFjdG9yVGV4dE9ubHkoKSBjb25zdAorWm9vbU1vZGUgRnJhbWU6Onpvb21N
b2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wYWdlLT5zZXR0aW5ncygpLT56b29tc1RleHRP
bmx5KCk7CisgICAgcmV0dXJuIG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKTsKIH0KIAog
Ym9vbCBGcmFtZTo6c2hvdWxkQXBwbHlUZXh0Wm9vbSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fem9v
bUZhY3RvciA9PSAxLjBmIHx8ICFpc1pvb21GYWN0b3JUZXh0T25seSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIG1fem9vbUZhY3RvciAhPSAx
LjBmICYmIHpvb21Nb2RlKCkgPT0gWm9vbVRleHRPbmx5OwogfQogCiBib29sIEZyYW1lOjpzaG91
bGRBcHBseVBhZ2Vab29tKCkgY29uc3QKIHsKLSAgICBpZiAobV96b29tRmFjdG9yID09IDEuMGYg
fHwgaXNab29tRmFjdG9yVGV4dE9ubHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBtX3pvb21GYWN0b3IgIT0gMS4wZiAmJiB6b29tTW9kZSgp
ID09IFpvb21QYWdlOwogfQogCi12b2lkIEZyYW1lOjpzZXRab29tRmFjdG9yKGZsb2F0IHBlcmNl
bnQsIGJvb2wgaXNUZXh0T25seSkKK3ZvaWQgRnJhbWU6OnNldFpvb21GYWN0b3IoZmxvYXQgcGVy
Y2VudCwgWm9vbU1vZGUgbW9kZSkKIHsKLSAgICBpZiAobV96b29tRmFjdG9yID09IHBlcmNlbnQg
JiYgaXNab29tRmFjdG9yVGV4dE9ubHkoKSA9PSBpc1RleHRPbmx5KQorICAgIGlmIChtX3pvb21G
YWN0b3IgPT0gcGVyY2VudCAmJiB6b29tTW9kZSgpID09IG1vZGUpCiAgICAgICAgIHJldHVybjsK
IAogI2lmIEVOQUJMRShTVkcpCkBAIC02OTYsNyArNjkyLDcgQEAgdm9pZCBGcmFtZTo6c2V0Wm9v
bUZhY3RvcihmbG9hdCBwZXJjZW50LCBib29sIGlzVGV4dE9ubHkpCiAgICAgfQogI2VuZGlmCiAK
LSAgICBpZiAoIWlzVGV4dE9ubHkpIHsKKyAgICBpZiAobW9kZSA9PSBab29tUGFnZSkgewogICAg
ICAgICAvLyBVcGRhdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiB3aGVuIGRvaW5nIGEgZnVsbCBwYWdl
IHpvb20sIHNvIHRoZSBjb250ZW50IHN0YXlzIGluIHJlbGF0aXZlbHkgdGhlIHNhbWUgcG9zaXRp
b24uCiAgICAgICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uID0gdmlldygpLT5zY3JvbGxQb3Np
dGlvbigpOwogICAgICAgICBmbG9hdCBwZXJjZW50RGlmZmVyZW5jZSA9IChwZXJjZW50IC8gbV96
b29tRmFjdG9yKTsKQEAgLTcwNCwxMiArNzAwLDEyIEBAIHZvaWQgRnJhbWU6OnNldFpvb21GYWN0
b3IoZmxvYXQgcGVyY2VudCwgYm9vbCBpc1RleHRPbmx5KQogICAgIH0KIAogICAgIG1fem9vbUZh
Y3RvciA9IHBlcmNlbnQ7Ci0gICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRab29tc1RleHRPbmx5
KGlzVGV4dE9ubHkpOworICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0Wm9vbU1vZGUobW9kZSk7
CiAKICAgICBtX2RvYy0+cmVjYWxjU3R5bGUoTm9kZTo6Rm9yY2UpOwogCiAgICAgZm9yIChGcmFt
ZSogY2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRy
ZWUoKS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgY2hpbGQtPnNldFpvb21GYWN0b3IobV96b29t
RmFjdG9yLCBpc1RleHRPbmx5KTsKKyAgICAgICAgY2hpbGQtPnNldFpvb21GYWN0b3IobV96b29t
RmFjdG9yLCBtb2RlKTsKIAogICAgIGlmIChtX2RvYy0+cmVuZGVyZXIoKSAmJiBtX2RvYy0+cmVu
ZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSAmJiB2aWV3KCktPmRpZEZpcnN0TGF5b3V0KCkpCiAgICAg
ICAgIHZpZXcoKS0+bGF5b3V0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBi
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDI2ZDFlZmEuLjNjZTM2NzUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0zOCw2
ICszOCw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsQmVoYXZpb3IuaCIKICNpbmNsdWRlICJTZWxlY3Rp
b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCisjaW5jbHVkZSAi
Wm9vbU1vZGUuaCIKIAogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlICJGcmFtZVdpbi5oIgpA
QCAtMTY5LDkgKzE3MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyA9PT0gdG8gYmUg
bW92ZWQgaW50byBGcmFtZVZpZXcKIAogICAgIHB1YmxpYzoKLSAgICAgICAgdm9pZCBzZXRab29t
RmFjdG9yKGZsb2F0IHNjYWxlLCBib29sIGlzVGV4dE9ubHkpOworICAgICAgICB2b2lkIHNldFpv
b21GYWN0b3IoZmxvYXQgc2NhbGUsIFpvb21Nb2RlKTsKICAgICAgICAgZmxvYXQgem9vbUZhY3Rv
cigpIGNvbnN0OwotICAgICAgICBib29sIGlzWm9vbUZhY3RvclRleHRPbmx5KCkgY29uc3Q7Cisg
ICAgICAgIFpvb21Nb2RlIHpvb21Nb2RlKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgc2hvdWxkQXBw
bHlUZXh0Wm9vbSgpIGNvbnN0OwogICAgICAgICBib29sIHNob3VsZEFwcGx5UGFnZVpvb20oKSBj
b25zdDsKICAgICAgICAgZmxvYXQgcGFnZVpvb21GYWN0b3IoKSBjb25zdCB7IHJldHVybiBzaG91
bGRBcHBseVBhZ2Vab29tKCkgPyB6b29tRmFjdG9yKCkgOiAxLjBmOyB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRl
eCBjYzhmN2FmLi41N2YzY2RkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgU2V0dGlu
Z3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX21heGltdW1EZWNvZGVkSW1hZ2VTaXpl
KG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKQogICAgICwgbV9sb2NhbFN0b3JhZ2VRdW90
YSg1ICogMTAyNCAqIDEwMjQpICAvLyBTdWdnZXN0ZWQgYnkgdGhlIEhUTUw1IHNwZWMuCiAgICAg
LCBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lKG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
CisgICAgLCBtX3pvb21Nb2RlKFpvb21QYWdlKQogICAgICwgbV9pc0phdmFFbmFibGVkKGZhbHNl
KQogICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpCiAgICAgLCBtX3ByaXZh
dGVCcm93c2luZ0VuYWJsZWQoZmFsc2UpCkBAIC0xMDIsNyArMTAzLDYgQEAgU2V0dGluZ3M6OlNl
dHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2luQXBwbGljYXRpb25DaHJvbWVNb2RlKGZhbHNl
KQogICAgICwgbV9vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoZmFsc2UpCiAgICAg
LCBtX3Nob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyhmYWxzZSkKLSAgICAsIG1fem9vbXNUZXh0
T25seShmYWxzZSkKICAgICAsIG1fZW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKHRydWUp
CiAgICAgLCBtX3VzZXNFbmNvZGluZ0RldGVjdG9yKGZhbHNlKQogICAgICwgbV9hbGxvd1Njcmlw
dHNUb0Nsb3NlV2luZG93cyhmYWxzZSkKQEAgLTQ2NywxMiArNDY3LDEyIEBAIHZvaWQgU2V0dGlu
Z3M6OnNldFNob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyhib29sIHNob3VsZFBhaW50Q3VzdG9t
U2Nyb2xsYmFycykKICAgICBtX3Nob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyA9IHNob3VsZFBh
aW50Q3VzdG9tU2Nyb2xsYmFyczsKIH0KIAotdm9pZCBTZXR0aW5nczo6c2V0Wm9vbXNUZXh0T25s
eShib29sIHpvb21zVGV4dE9ubHkpCit2b2lkIFNldHRpbmdzOjpzZXRab29tTW9kZShab29tTW9k
ZSBtb2RlKQogewotICAgIGlmICh6b29tc1RleHRPbmx5ID09IG1fem9vbXNUZXh0T25seSkKKyAg
ICBpZiAobW9kZSA9PSBtX3pvb21Nb2RlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV96
b29tc1RleHRPbmx5ID0gem9vbXNUZXh0T25seTsKKyAgICBtX3pvb21Nb2RlID0gbW9kZTsKICAg
ICBzZXROZWVkc1JlYXBwbHlTdHlsZXNJbkFsbEZyYW1lcyhtX3BhZ2UpOwogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmlu
ZGV4IDA2ZjQ1NzAuLmFiNmMxZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5o
CisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVkZSAiRm9udFJlbmRlcmluZ01vZGUuaCIKICNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiWm9vbU1vZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0yMzQsOCArMjM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IHNldFNob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyhib29sKTsKICAgICAgICAgYm9vbCBzaG91
bGRQYWludEN1c3RvbVNjcm9sbGJhcnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFBhaW50Q3Vz
dG9tU2Nyb2xsYmFyczsgfQogCi0gICAgICAgIHZvaWQgc2V0Wm9vbXNUZXh0T25seShib29sKTsK
LSAgICAgICAgYm9vbCB6b29tc1RleHRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV96b29tc1RleHRP
bmx5OyB9CisgICAgICAgIHZvaWQgc2V0Wm9vbU1vZGUoWm9vbU1vZGUpOworICAgICAgICBab29t
TW9kZSB6b29tTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fem9vbU1vZGU7IH0KICAgICAgICAgCiAg
ICAgICAgIHZvaWQgc2V0RW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKGJvb2wpOwogICAg
ICAgICBib29sIGVuZm9yY2VDU1NNSU1FVHlwZUluU3RyaWN0TW9kZSgpIHsgcmV0dXJuIG1fZW5m
b3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlOyB9CkBAIC0zMDksNiArMzEwLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBzaXplX3QgbV9tYXhpbXVtRGVjb2RlZEltYWdlU2l6ZTsK
ICAgICAgICAgdW5zaWduZWQgbV9sb2NhbFN0b3JhZ2VRdW90YTsKICAgICAgICAgdW5zaWduZWQg
bV9wbHVnaW5BbGxvd2VkUnVuVGltZTsKKyAgICAgICAgWm9vbU1vZGUgbV96b29tTW9kZTsKICAg
ICAgICAgYm9vbCBtX2lzSmF2YUVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5IDogMTsKICAgICAgICAgYm9vbCBtX3ByaXZhdGVCcm93c2luZ0VuYWJs
ZWQgOiAxOwpAQCAtMzQ3LDcgKzM0OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBtX2luQXBwbGljYXRpb25DaHJvbWVNb2RlIDogMTsKICAgICAgICAgYm9vbCBtX29mZmxp
bmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9zaG91bGRQ
YWludEN1c3RvbVNjcm9sbGJhcnMgOiAxOwotICAgICAgICBib29sIG1fem9vbXNUZXh0T25seSA6
IDE7CiAgICAgICAgIGJvb2wgbV9lbmZvcmNlQ1NTTUlNRVR5cGVJblN0cmljdE1vZGUgOiAxOwog
ICAgICAgICBib29sIG1fdXNlc0VuY29kaW5nRGV0ZWN0b3IgOiAxOwogICAgICAgICBib29sIG1f
YWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MgOiAxOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L1pvb21Nb2RlLmggYi9XZWJDb3JlL3BhZ2UvWm9vbU1vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5hMjYzMzMzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdl
L1pvb21Nb2RlLmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBS
ZXNlYXJjaCBpbiBNb3Rpb24gTHRkLiBodHRwOi8vd3d3LnJpbS5jb20vCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworZW51bSBab29tTW9kZSB7CisgICAgWm9vbVBhZ2UsCisgICAgWm9vbVRleHRPbmx5
Cit9OworCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1dl
YkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IGZmMjRjNGYuLjdhNmRiODQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBTVkdTVkdFbGVtZW50Ojpz
ZXRDdXJyZW50U2NhbGUoZmxvYXQgc2NhbGUpCiAgICAgICAgIC8vIENhbGxpbmcgc2V0Q3VycmVu
dFNjYWxlKCkgb24gdGhlIG91dGVybW9zdCA8c3ZnPiBlbGVtZW50IGluIGEgc3RhbmRhbG9uZSBT
VkcgZG9jdW1lbnQKICAgICAgICAgLy8gaXMgYWxsb3dlZCB0byBjaGFuZ2UgdGhlIHBhZ2Ugem9v
bSBmYWN0b3IsIGluZmx1ZW5jaW5nIHRoZSBkb2N1bWVudCBzaXplLCBzY3JvbGxiYXJzIGV0Yy4K
ICAgICAgICAgaWYgKHBhcmVudE5vZGUoKSA9PSBkb2N1bWVudCgpKQotICAgICAgICAgICAgZnJh
bWUtPnNldFpvb21GYWN0b3Ioc2NhbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZyYW1lLT5zZXRa
b29tRmFjdG9yKHNjYWxlLCBab29tUGFnZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDkyOGQ0M2EuLjY3M2YwNzEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDEwLTAyLTI0ICBKYWtvYiBQZXRzb3ZpdHMgIDxqcGV0c292aXRzQHJpbS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRhcHQgdG8g
dGhlIG5ldyBab29tTW9kZSBlbnVtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzUzNDcKKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRab29tTGV2ZWwpOgorCiAyMDEwLTAyLTIz
ICBKYW1lcyBIYXdraW5zICA8amhhd2tpbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXgg
OTc2NjVkNC4uNzJmYmJkNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTEz
MDIsNyArMTMwMiw3IEBAIGludCBXZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVsKGJvb2wgdGV4dE9u
bHksIGludCB6b29tTGV2ZWwpCiAgICAgRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lSW1wbCgpLT5m
cmFtZSgpOwogICAgIGlmICh6b29tRmFjdG9yICE9IGZyYW1lLT56b29tRmFjdG9yKCkpIHsKICAg
ICAgICAgbV96b29tTGV2ZWwgPSB6b29tTGV2ZWw7Ci0gICAgICAgIGZyYW1lLT5zZXRab29tRmFj
dG9yKHpvb21GYWN0b3IsIHRleHRPbmx5KTsKKyAgICAgICAgZnJhbWUtPnNldFpvb21GYWN0b3Io
em9vbUZhY3RvciwgdGV4dE9ubHkgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CiAgICAgfQog
ICAgIHJldHVybiBtX3pvb21MZXZlbDsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNWM0OTliMS4uMTU5MzlkZCAxMDA2NDQK
LS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxMC0wMi0yNCAgSmFrb2IgUGV0c292aXRzICA8anBldHNvdml0c0By
aW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkYXB0IHRvIHRoZSBuZXcgWm9vbU1vZGUgZW51bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MzQ3CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlv
bjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0Wm9vbU11bHRpcGxpZXI6aXNUZXh0T25seTpd
KToKKyAgICAgICAgKC1bV2ViVmlldyBfcmVhbFpvb21NdWx0aXBsaWVySXNUZXh0T25seV0pOgor
CiAyMDEwLTAyLTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlciBhbmQgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBh
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KaW5kZXggYmUwMzViMi4uYzg0N2FlOSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEz
MzksNyArMTMzOSw3IEBAIHN0YXRpYyBib29sIGZhc3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgp
CiAgICAgc2V0dGluZ3MtPnNldFdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVkKFtwcmVmZXJlbmNl
cyB3ZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRMb2NhbEZp
bGVDb250ZW50U25pZmZpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBsb2NhbEZpbGVDb250ZW50U25p
ZmZpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNh
Y2hlRW5hYmxlZChbcHJlZmVyZW5jZXMgb2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVk
XSk7Ci0gICAgc2V0dGluZ3MtPnNldFpvb21zVGV4dE9ubHkoW3ByZWZlcmVuY2VzIHpvb21zVGV4
dE9ubHldKTsKKyAgICBzZXR0aW5ncy0+c2V0Wm9vbU1vZGUoW3ByZWZlcmVuY2VzIHpvb21zVGV4
dE9ubHldID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwogICAgIHNldHRpbmdzLT5zZXRYU1NB
dWRpdG9yRW5hYmxlZChbcHJlZmVyZW5jZXMgaXNYU1NBdWRpdG9yRW5hYmxlZF0pOwogICAgIHNl
dHRpbmdzLT5zZXRFbmZvcmNlQ1NTTUlNRVR5cGVJblN0cmljdE1vZGUoIVdLQXBwVmVyc2lvbkNo
ZWNrTGVzc1RoYW4oQCJjb20uYXBwbGUuaVdlYiIsIC0xLCAyLjEpKTsKICAgICBzZXR0aW5ncy0+
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoY29yZVZpZGVvSGFzNzIyODgzNkZpeCgp
ICYmIFtwcmVmZXJlbmNlcyBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZF0pOwpAQCAtMzEx
NSw3ICszMTE1LDcgQEAgc3RhdGljIGJvb2wgbmVlZHNXZWJWaWV3SW5pdFRocmVhZFdvcmthcm91
bmQoKQogICAgIF9wcml2YXRlLT56b29tTXVsdGlwbGllciA9IG07CiAgICAgQVNTRVJUKF9wcml2
YXRlLT5wYWdlKTsKICAgICBpZiAoX3ByaXZhdGUtPnBhZ2UpCi0gICAgICAgIF9wcml2YXRlLT5w
YWdlLT5zZXR0aW5ncygpLT5zZXRab29tc1RleHRPbmx5KGlzVGV4dE9ubHkpOworICAgICAgICBf
cHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS0+c2V0Wm9vbU1vZGUoaXNUZXh0T25seSA/IFpvb21U
ZXh0T25seSA6IFpvb21QYWdlKTsKICAgICAKICAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgbmlj
ZSB0byByZXdvcmsgdGhpcyBjb2RlIHNvIHRoYXQgX3ByaXZhdGUtPnpvb21NdWx0aXBsaWVyIGRv
ZXNuJ3QgZXhpc3QgYW5kIGNhbGxlcnMKICAgICAvLyBhbGwgYWNjZXNzIF9wcml2YXRlLT5wYWdl
LT5zZXR0aW5ncygpLgpAQCAtMzE0MSw3ICszMTQxLDcgQEAgc3RhdGljIGJvb2wgbmVlZHNXZWJW
aWV3SW5pdFRocmVhZFdvcmthcm91bmQoKQogICAgIGlmICghX3ByaXZhdGUtPnBhZ2UpCiAgICAg
ICAgIHJldHVybiBOTzsKICAgICAKLSAgICByZXR1cm4gX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdz
KCktPnpvb21zVGV4dE9ubHkoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdz
KCktPnpvb21Nb2RlKCkgPT0gWm9vbVRleHRPbmx5ID8gWUVTIDogTk87CiB9CiAKICNkZWZpbmUg
TWluaW11bVpvb21NdWx0aXBsaWVyICAgICAgIDAuNWYKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9B
cGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAppbmRleCAxNWI1
YzAwLi45Y2ZjNThmIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysr
IGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0xMjQ1LDcgKzEyNDUsNyBAQCB2b2lk
IFFXZWJGcmFtZTo6cmVuZGVyKFFQYWludGVyKiBwYWludGVyKQogKi8KIHZvaWQgUVdlYkZyYW1l
OjpzZXRUZXh0U2l6ZU11bHRpcGxpZXIocXJlYWwgZmFjdG9yKQogewotICAgIGQtPmZyYW1lLT5z
ZXRab29tRmFjdG9yKGZhY3RvciwgLyppc1RleHRPbmx5Ki90cnVlKTsKKyAgICBkLT5mcmFtZS0+
c2V0Wm9vbUZhY3RvcihmYWN0b3IsIFpvb21UZXh0T25seSk7CiB9CiAKIC8qIQpAQCAtMTI2NCw3
ICsxMjY0LDcgQEAgcXJlYWwgUVdlYkZyYW1lOjp0ZXh0U2l6ZU11bHRpcGxpZXIoKSBjb25zdAog
CiB2b2lkIFFXZWJGcmFtZTo6c2V0Wm9vbUZhY3RvcihxcmVhbCBmYWN0b3IpCiB7Ci0gICAgZC0+
ZnJhbWUtPnNldFpvb21GYWN0b3IoZmFjdG9yLCBkLT5mcmFtZS0+aXNab29tRmFjdG9yVGV4dE9u
bHkoKSk7CisgICAgZC0+ZnJhbWUtPnNldFpvb21GYWN0b3IoZmFjdG9yLCBkLT5mcmFtZS0+em9v
bU1vZGUoKSk7CiB9CiAKIHFyZWFsIFFXZWJGcmFtZTo6em9vbUZhY3RvcigpIGNvbnN0CmRpZmYg
LS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3
ZWJzZXR0aW5ncy5jcHAKaW5kZXggZDYwZjA5Yy4uMWUzYzk0YSAxMDA2NDQKLS0tIGEvV2ViS2l0
L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdz
LmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHko
KQogCiAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Olpvb21U
ZXh0T25seSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmli
dXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Olpvb21UZXh0T25seSkpOwotICAgICAgICBzZXR0aW5n
cy0+c2V0Wm9vbXNUZXh0T25seSh2YWx1ZSk7CisgICAgICAgIHNldHRpbmdzLT5zZXRab29tTW9k
ZSh2YWx1ZSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKIAogICAgICAgICB2YWx1ZSA9IGF0
dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpQcmludEVsZW1lbnRCYWNrZ3JvdW5kcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZh
bHVlKFFXZWJTZXR0aW5nczo6UHJpbnRFbGVtZW50QmFja2dyb3VuZHMpKTsKZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDJkMWE0ODMu
LmU5ZTYwNTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTAyLTI0ICBKYWtvYiBQZXRzb3ZpdHMg
IDxqcGV0c292aXRzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRhcHQgdG8gdGhlIG5ldyBab29tTW9kZSBlbnVtLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUzNDcKKworICAgICAgICAq
IEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRUZXh0U2l6ZU11bHRp
cGxpZXIpOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRab29tRmFjdG9yKToKKyAgICAgICAgKiBB
cGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5
KToKKwogMjAxMC0wMi0yMyAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvd2lu
L0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDc2YjE0NTAuLjY2N2U4ZWUg
MTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDItMjQgIEpha29iIFBldHNvdml0cyAgPGpwZXRz
b3ZpdHNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGFwdCB0byB0aGUgbmV3IFpvb21Nb2RlIGVudW0uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTM0NworCisgICAgICAgICogV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnNldFRleHRTaXplTXVsdGlwbGllcik6CisgICAg
ICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpzZXRab29tTXVsdGlwbGllcik6
CisgICAgICAgIChXZWJWaWV3Ojp6b29tTXVsdGlwbGllcik6CisgICAgICAgIChXZWJWaWV3Ojpj
YW5NYWtlVGV4dExhcmdlcik6CisgICAgICAgIChXZWJWaWV3OjptYWtlVGV4dExhcmdlcik6Cisg
ICAgICAgIChXZWJWaWV3OjpjYW5NYWtlVGV4dFNtYWxsZXIpOgorICAgICAgICAoV2ViVmlldzo6
bWFrZVRleHRTbWFsbGVyKToKKyAgICAgICAgKFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hh
bmdlZCk6CisKIDIwMTAtMDItMjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyIGFuZCBQYXZlbCBGZWxkbWFuLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9XZWJLaXQvd2luL1dlYkZyYW1lLmNw
cAppbmRleCA4ZTAzNzk0Li44YjdlMGZkIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkZyYW1l
LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApAQCAtMTA3NCw3ICsxMDc0LDcgQEAg
dm9pZCBXZWJGcmFtZTo6c2V0VGV4dFNpemVNdWx0aXBsaWVyKGZsb2F0IG11bHRpcGxpZXIpCiB7
CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7CiAgICAgQVNTRVJUKGNvcmVGcmFt
ZSk7Ci0gICAgY29yZUZyYW1lLT5zZXRab29tRmFjdG9yKG11bHRpcGxpZXIsIHRydWUpOworICAg
IGNvcmVGcmFtZS0+c2V0Wm9vbUZhY3RvcihtdWx0aXBsaWVyLCBab29tVGV4dE9ubHkpOwogfQog
CiBIUkVTVUxUIFdlYkZyYW1lOjppblZpZXdTb3VyY2VNb2RlKEJPT0wqIGZsYWcpCmRpZmYgLS1n
aXQgYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRl
eCA3ODEzODExLi41Mzg5ZDA1IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisr
KyBiL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTI4NzksOSArMjg3OSw5IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0UGFnZVNpemVNdWx0aXBsaWVyKAogdm9pZCBX
ZWJWaWV3OjpzZXRab29tTXVsdGlwbGllcihmbG9hdCBtdWx0aXBsaWVyLCBib29sIGlzVGV4dE9u
bHkpCiB7CiAgICAgbV96b29tTXVsdGlwbGllciA9IG11bHRpcGxpZXI7Ci0gICAgbV9wYWdlLT5z
ZXR0aW5ncygpLT5zZXRab29tc1RleHRPbmx5KGlzVGV4dE9ubHkpOworICAgIG1fcGFnZS0+c2V0
dGluZ3MoKS0+c2V0Wm9vbU1vZGUoaXNUZXh0T25seSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdl
KTsKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobV9tYWluRnJhbWUpKQotICAgICAg
ICBjb3JlRnJhbWUtPnNldFpvb21GYWN0b3IobXVsdGlwbGllciwgaXNUZXh0T25seSk7CisgICAg
ICAgIGNvcmVGcmFtZS0+c2V0Wm9vbUZhY3RvcihtdWx0aXBsaWVyLCBpc1RleHRPbmx5ID8gWm9v
bVRleHRPbmx5IDogWm9vbVBhZ2UpOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlZpZXc6OnRleHRTaXplTXVsdGlwbGllciggCkBAIC0yOTAwLDcgKzI5MDAsOCBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnBhZ2VTaXplTXVsdGlwbGllcigKIAogZmxvYXQg
V2ViVmlldzo6em9vbU11bHRpcGxpZXIoYm9vbCBpc1RleHRPbmx5KQogewotICAgIGlmIChpc1Rl
eHRPbmx5ICE9IG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbXNUZXh0T25seSgpKQorICAgIFpvb21N
b2RlIHpvb21Nb2RlID0gaXNUZXh0T25seSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlOworICAg
IGlmICh6b29tTW9kZSAhPSBtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkpCiAgICAgICAg
IHJldHVybiAxLjBmOwogICAgIHJldHVybiBtX3pvb21NdWx0aXBsaWVyOwogfQpAQCAtMzY4MCw3
ICszNjgxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjYW5NYWtlVGV4
dExhcmdlcigKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLywKICAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCiB7Ci0gICAgYm9vbCBjYW5Hcm93
TW9yZSA9IGNhblpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21zVGV4dE9ubHkoKSk7Cisg
ICAgYm9vbCBjYW5Hcm93TW9yZSA9IGNhblpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21N
b2RlKCkgPT0gWm9vbVRleHRPbmx5KTsKICAgICAqcmVzdWx0ID0gY2FuR3Jvd01vcmUgPyBUUlVF
IDogRkFMU0U7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zNzAyLDcgKzM3MDMsNyBAQCBib29s
IFdlYlZpZXc6OmNhblpvb21Jbihib29sIGlzVGV4dE9ubHkpCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6Om1ha2VUZXh0TGFyZ2VyKCAKICAgICAgICAgLyogW2luXSAqLyBJVW5r
bm93biogLypzZW5kZXIqLykKIHsKLSAgICByZXR1cm4gem9vbUluKG1fcGFnZS0+c2V0dGluZ3Mo
KS0+em9vbXNUZXh0T25seSgpKTsKKyAgICByZXR1cm4gem9vbUluKG1fcGFnZS0+c2V0dGluZ3Mo
KS0+em9vbU1vZGUoKSA9PSBab29tVGV4dE9ubHkpOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6Onpvb21QYWdlSW4oIApAQCAtMzcyMyw3ICszNzI0LDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjYW5NYWtlVGV4dFNtYWxsZXIoCiAgICAgICAg
IC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8sCiAgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQk9PTCogcmVzdWx0KQogewotICAgIGJvb2wgY2FuU2hyaW5rTW9yZSA9IGNhblpvb21P
dXQobV9wYWdlLT5zZXR0aW5ncygpLT56b29tc1RleHRPbmx5KCkpOworICAgIGJvb2wgY2FuU2hy
aW5rTW9yZSA9IGNhblpvb21PdXQobV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgpID09IFpv
b21UZXh0T25seSk7CiAgICAgKnJlc3VsdCA9IGNhblNocmlua01vcmUgPyBUUlVFIDogRkFMU0U7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zNzQ1LDcgKzM3NDYsNyBAQCBib29sIFdlYlZpZXc6
OmNhblpvb21PdXQoYm9vbCBpc1RleHRPbmx5KQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJWaWV3OjptYWtlVGV4dFNtYWxsZXIoIAogICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAv
KnNlbmRlciovKQogewotICAgIHJldHVybiB6b29tT3V0KG1fcGFnZS0+c2V0dGluZ3MoKS0+em9v
bXNUZXh0T25seSgpKTsKKyAgICByZXR1cm4gem9vbU91dChtX3BhZ2UtPnNldHRpbmdzKCktPnpv
b21Nb2RlKCkgPT0gWm9vbVRleHRPbmx5KTsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3Ojp6b29tUGFnZU91dCggCkBAIC00NTc2LDcgKzQ1NzcsNyBAQCBIUkVTVUxUIFdl
YlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pCiAgICAgaHIgPSBwcmVmZXJlbmNlcy0+em9vbXNUZXh0T25seSgmZW5hYmxlZCk7CiAg
ICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKLSAgICBzZXR0aW5ncy0+c2V0
Wm9vbXNUZXh0T25seSghIWVuYWJsZWQpOworICAgIHNldHRpbmdzLT5zZXRab29tTW9kZShlbmFi
bGVkID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwogCiAgICAgc2V0dGluZ3MtPnNldFNob3dz
VVJMc0luVG9vbFRpcHMoZmFsc2UpOwogICAgIHNldHRpbmdzLT5zZXRGb3JjZUZUUERpcmVjdG9y
eUxpc3RpbmdzKHRydWUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1dlYktp
dC93eC9DaGFuZ2VMb2cKaW5kZXggYWQ4ZGYxMi4uYjA2MzlhNCAxMDA2NDQKLS0tIGEvV2ViS2l0
L3d4L0NoYW5nZUxvZworKysgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDItMjQgIEpha29iIFBldHNvdml0cyAgPGpwZXRzb3ZpdHNAcmltLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGFwdCB0byB0aGUg
bmV3IFpvb21Nb2RlIGVudW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNTM0NworCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAod3hX
ZWJGcmFtZTo6SW5jcmVhc2VUZXh0U2l6ZSk6CisgICAgICAgICh3eFdlYkZyYW1lOjpEZWNyZWFz
ZVRleHRTaXplKToKKyAgICAgICAgKHd4V2ViRnJhbWU6OlJlc2V0VGV4dFNpemUpOgorCiAyMDEw
LTAyLTIzICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJGcmFtZS5j
cHAgYi9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCmluZGV4IDZjZGExOTcuLjA2MjY4YWQgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93eC9XZWJGcmFtZS5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYkZyYW1lLmNw
cApAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgd3hXZWJGcmFtZTo6SW5jcmVhc2VUZXh0U2l6ZSgp
CiB7CiAgICAgaWYgKENhbkluY3JlYXNlVGV4dFNpemUoKSkgewogICAgICAgICBtX3RleHRNYWdu
aWZpZXIgPSBtX3RleHRNYWduaWZpZXIqVGV4dFNpemVNdWx0aXBsaWVyUmF0aW87Ci0gICAgICAg
IG1faW1wbC0+ZnJhbWUtPnNldFpvb21GYWN0b3IobV90ZXh0TWFnbmlmaWVyLCB0cnVlKTsKKyAg
ICAgICAgbV9pbXBsLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIsIFpvb21U
ZXh0T25seSk7CiAgICAgfQogfQogCkBAIC0zMzMsNyArMzMzLDcgQEAgdm9pZCB3eFdlYkZyYW1l
OjpEZWNyZWFzZVRleHRTaXplKCkKIHsgICAgICAgIAogICAgIGlmIChDYW5EZWNyZWFzZVRleHRT
aXplKCkpIHsKICAgICAgICAgbV90ZXh0TWFnbmlmaWVyID0gbV90ZXh0TWFnbmlmaWVyL1RleHRT
aXplTXVsdGlwbGllclJhdGlvOwotICAgICAgICBtX2ltcGwtPmZyYW1lLT5zZXRab29tRmFjdG9y
KG1fdGV4dE1hZ25pZmllciwgdHJ1ZSk7CisgICAgICAgIG1faW1wbC0+ZnJhbWUtPnNldFpvb21G
YWN0b3IobV90ZXh0TWFnbmlmaWVyLCBab29tVGV4dE9ubHkpOwogICAgIH0KIH0KIApAQCAtMzQx
LDcgKzM0MSw3IEBAIHZvaWQgd3hXZWJGcmFtZTo6UmVzZXRUZXh0U2l6ZSgpCiB7CiAgICAgbV90
ZXh0TWFnbmlmaWVyID0gMS4wOwogICAgIGlmIChtX2ltcGwtPmZyYW1lKQotICAgICAgICBtX2lt
cGwtPmZyYW1lLT5zZXRab29tRmFjdG9yKG1fdGV4dE1hZ25pZmllciwgdHJ1ZSk7CisgICAgICAg
IG1faW1wbC0+ZnJhbWUtPnNldFpvb21GYWN0b3IobV90ZXh0TWFnbmlmaWVyLCBab29tVGV4dE9u
bHkpOwogfQogCiB2b2lkIHd4V2ViRnJhbWU6Ok1ha2VFZGl0YWJsZShib29sIGVuYWJsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49413</attachid>
            <date>2010-02-24 10:59:30 -0800</date>
            <delta_ts>2010-02-24 15:02:12 -0800</delta_ts>
            <desc>Convert the zoom mode into a proper enum (try 4)</desc>
            <filename>zoommode-enum.patch</filename>
            <type>text/plain</type>
            <size>21766</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2Q4NWFjMi4uMzBkZjFjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0wMi0yNCAgSmFrb2IgUGV0c292
aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgdGhlIHpvb20gbW9kZSAocGFnZSB2cy4gdGV4dC1v
bmx5KSBpbnRvIGEgcHJvcGVyIGVudW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNTM0NworCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Onpvb21Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpzaG91bGRBcHBseVRleHRab29tKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzaG91
bGRBcHBseVBhZ2Vab29tKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRab29tRmFjdG9y
KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OnNldFpvb21Nb2RlKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6em9vbU1vZGUpOgorICAgICAgICAqIHBhZ2UvWm9v
bU1vZGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHN2Zy9TVkdT
VkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnNldEN1cnJl
bnRTY2FsZSk6CisKIDIwMTAtMDItMjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyIGFuZCBQYXZlbCBGZWxkbWFuLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggMjk3NWZmZS4uMDdiOWU3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xNDI0LDYgKzE0MjQsNyBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5oIFwKIAlX
ZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAgXAogCVdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmgg
XAorCVdlYkNvcmUvcGFnZS9ab29tTW9kZS5oIFwKIAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkJhc2UuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
aCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcCBcCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDllNmE5YTcuLmY2YTE0YzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xODg5LDYgKzE4ODksNyBAQAogICAgICAgICAg
ICAgJ3BhZ2UvV29ya2VyTmF2aWdhdG9yLmgnLAogICAgICAgICAgICAgJ3BhZ2UvWFNTQXVkaXRv
ci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvWFNTQXVkaXRvci5oJywKKyAgICAgICAgICAgICdw
YWdlL1pvb21Nb2RlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0LmNwcCcsCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBj
NjI1MjI0Li5lYzY1MzRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS5wcm8KQEAgLTE0NzgsNiArMTQ3OCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IHBhZ2UvV2luZG93RmVhdHVyZXMuaCBcCiAgICAgcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaCBcCiAg
ICAgcGFnZS9YU1NBdWRpdG9yLmggXAorICAgIHBhZ2UvWm9vbU1vZGUuaCBcCiAgICAgcGxhdGZv
cm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0
aW9uTGlzdC5oIFwKICAgICBwbGF0Zm9ybS9BcmVuYS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDhkNmI1NTcuLjQwMTgzZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMjEwMjQsNiArMjEwMjQsMTAgQEAKIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBhZ2VcWFNTQXVkaXRvci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxab29tTW9kZS5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KIAkJCTxGaWx0ZXINCiAJCQkJTmFtZT0id2luIg0KIAkJCQk+DQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjYy
YzU2Yy4uNTQ4YWI0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC02NjEsMjggKzY2MSwyNCBAQCBmbG9hdCBGcmFtZTo6
em9vbUZhY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fem9vbUZhY3RvcjsKIH0KIAotYm9vbCBG
cmFtZTo6aXNab29tRmFjdG9yVGV4dE9ubHkoKSBjb25zdAorWm9vbU1vZGUgRnJhbWU6Onpvb21N
b2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wYWdlLT5zZXR0aW5ncygpLT56b29tc1RleHRP
bmx5KCk7CisgICAgcmV0dXJuIG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKTsKIH0KIAog
Ym9vbCBGcmFtZTo6c2hvdWxkQXBwbHlUZXh0Wm9vbSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fem9v
bUZhY3RvciA9PSAxLjBmIHx8ICFpc1pvb21GYWN0b3JUZXh0T25seSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIG1fem9vbUZhY3RvciAhPSAx
LjBmICYmIHpvb21Nb2RlKCkgPT0gWm9vbVRleHRPbmx5OwogfQogCiBib29sIEZyYW1lOjpzaG91
bGRBcHBseVBhZ2Vab29tKCkgY29uc3QKIHsKLSAgICBpZiAobV96b29tRmFjdG9yID09IDEuMGYg
fHwgaXNab29tRmFjdG9yVGV4dE9ubHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBtX3pvb21GYWN0b3IgIT0gMS4wZiAmJiB6b29tTW9kZSgp
ID09IFpvb21QYWdlOwogfQogCi12b2lkIEZyYW1lOjpzZXRab29tRmFjdG9yKGZsb2F0IHBlcmNl
bnQsIGJvb2wgaXNUZXh0T25seSkKK3ZvaWQgRnJhbWU6OnNldFpvb21GYWN0b3IoZmxvYXQgcGVy
Y2VudCwgWm9vbU1vZGUgbW9kZSkKIHsKLSAgICBpZiAobV96b29tRmFjdG9yID09IHBlcmNlbnQg
JiYgaXNab29tRmFjdG9yVGV4dE9ubHkoKSA9PSBpc1RleHRPbmx5KQorICAgIGlmIChtX3pvb21G
YWN0b3IgPT0gcGVyY2VudCAmJiB6b29tTW9kZSgpID09IG1vZGUpCiAgICAgICAgIHJldHVybjsK
IAogI2lmIEVOQUJMRShTVkcpCkBAIC02OTYsNyArNjkyLDcgQEAgdm9pZCBGcmFtZTo6c2V0Wm9v
bUZhY3RvcihmbG9hdCBwZXJjZW50LCBib29sIGlzVGV4dE9ubHkpCiAgICAgfQogI2VuZGlmCiAK
LSAgICBpZiAoIWlzVGV4dE9ubHkpIHsKKyAgICBpZiAobW9kZSA9PSBab29tUGFnZSkgewogICAg
ICAgICAvLyBVcGRhdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiB3aGVuIGRvaW5nIGEgZnVsbCBwYWdl
IHpvb20sIHNvIHRoZSBjb250ZW50IHN0YXlzIGluIHJlbGF0aXZlbHkgdGhlIHNhbWUgcG9zaXRp
b24uCiAgICAgICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uID0gdmlldygpLT5zY3JvbGxQb3Np
dGlvbigpOwogICAgICAgICBmbG9hdCBwZXJjZW50RGlmZmVyZW5jZSA9IChwZXJjZW50IC8gbV96
b29tRmFjdG9yKTsKQEAgLTcwNCwxMiArNzAwLDEyIEBAIHZvaWQgRnJhbWU6OnNldFpvb21GYWN0
b3IoZmxvYXQgcGVyY2VudCwgYm9vbCBpc1RleHRPbmx5KQogICAgIH0KIAogICAgIG1fem9vbUZh
Y3RvciA9IHBlcmNlbnQ7Ci0gICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRab29tc1RleHRPbmx5
KGlzVGV4dE9ubHkpOworICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0Wm9vbU1vZGUobW9kZSk7
CiAKICAgICBtX2RvYy0+cmVjYWxjU3R5bGUoTm9kZTo6Rm9yY2UpOwogCiAgICAgZm9yIChGcmFt
ZSogY2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRy
ZWUoKS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgY2hpbGQtPnNldFpvb21GYWN0b3IobV96b29t
RmFjdG9yLCBpc1RleHRPbmx5KTsKKyAgICAgICAgY2hpbGQtPnNldFpvb21GYWN0b3IobV96b29t
RmFjdG9yLCBtb2RlKTsKIAogICAgIGlmIChtX2RvYy0+cmVuZGVyZXIoKSAmJiBtX2RvYy0+cmVu
ZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSAmJiB2aWV3KCktPmRpZEZpcnN0TGF5b3V0KCkpCiAgICAg
ICAgIHZpZXcoKS0+bGF5b3V0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBi
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDI2ZDFlZmEuLjNjZTM2NzUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0zOCw2
ICszOCw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsQmVoYXZpb3IuaCIKICNpbmNsdWRlICJTZWxlY3Rp
b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCisjaW5jbHVkZSAi
Wm9vbU1vZGUuaCIKIAogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlICJGcmFtZVdpbi5oIgpA
QCAtMTY5LDkgKzE3MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyA9PT0gdG8gYmUg
bW92ZWQgaW50byBGcmFtZVZpZXcKIAogICAgIHB1YmxpYzoKLSAgICAgICAgdm9pZCBzZXRab29t
RmFjdG9yKGZsb2F0IHNjYWxlLCBib29sIGlzVGV4dE9ubHkpOworICAgICAgICB2b2lkIHNldFpv
b21GYWN0b3IoZmxvYXQgc2NhbGUsIFpvb21Nb2RlKTsKICAgICAgICAgZmxvYXQgem9vbUZhY3Rv
cigpIGNvbnN0OwotICAgICAgICBib29sIGlzWm9vbUZhY3RvclRleHRPbmx5KCkgY29uc3Q7Cisg
ICAgICAgIFpvb21Nb2RlIHpvb21Nb2RlKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgc2hvdWxkQXBw
bHlUZXh0Wm9vbSgpIGNvbnN0OwogICAgICAgICBib29sIHNob3VsZEFwcGx5UGFnZVpvb20oKSBj
b25zdDsKICAgICAgICAgZmxvYXQgcGFnZVpvb21GYWN0b3IoKSBjb25zdCB7IHJldHVybiBzaG91
bGRBcHBseVBhZ2Vab29tKCkgPyB6b29tRmFjdG9yKCkgOiAxLjBmOyB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRl
eCBjYzhmN2FmLi41N2YzY2RkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgU2V0dGlu
Z3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX21heGltdW1EZWNvZGVkSW1hZ2VTaXpl
KG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKQogICAgICwgbV9sb2NhbFN0b3JhZ2VRdW90
YSg1ICogMTAyNCAqIDEwMjQpICAvLyBTdWdnZXN0ZWQgYnkgdGhlIEhUTUw1IHNwZWMuCiAgICAg
LCBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lKG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
CisgICAgLCBtX3pvb21Nb2RlKFpvb21QYWdlKQogICAgICwgbV9pc0phdmFFbmFibGVkKGZhbHNl
KQogICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpCiAgICAgLCBtX3ByaXZh
dGVCcm93c2luZ0VuYWJsZWQoZmFsc2UpCkBAIC0xMDIsNyArMTAzLDYgQEAgU2V0dGluZ3M6OlNl
dHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2luQXBwbGljYXRpb25DaHJvbWVNb2RlKGZhbHNl
KQogICAgICwgbV9vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoZmFsc2UpCiAgICAg
LCBtX3Nob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyhmYWxzZSkKLSAgICAsIG1fem9vbXNUZXh0
T25seShmYWxzZSkKICAgICAsIG1fZW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKHRydWUp
CiAgICAgLCBtX3VzZXNFbmNvZGluZ0RldGVjdG9yKGZhbHNlKQogICAgICwgbV9hbGxvd1Njcmlw
dHNUb0Nsb3NlV2luZG93cyhmYWxzZSkKQEAgLTQ2NywxMiArNDY3LDEyIEBAIHZvaWQgU2V0dGlu
Z3M6OnNldFNob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyhib29sIHNob3VsZFBhaW50Q3VzdG9t
U2Nyb2xsYmFycykKICAgICBtX3Nob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyA9IHNob3VsZFBh
aW50Q3VzdG9tU2Nyb2xsYmFyczsKIH0KIAotdm9pZCBTZXR0aW5nczo6c2V0Wm9vbXNUZXh0T25s
eShib29sIHpvb21zVGV4dE9ubHkpCit2b2lkIFNldHRpbmdzOjpzZXRab29tTW9kZShab29tTW9k
ZSBtb2RlKQogewotICAgIGlmICh6b29tc1RleHRPbmx5ID09IG1fem9vbXNUZXh0T25seSkKKyAg
ICBpZiAobW9kZSA9PSBtX3pvb21Nb2RlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV96
b29tc1RleHRPbmx5ID0gem9vbXNUZXh0T25seTsKKyAgICBtX3pvb21Nb2RlID0gbW9kZTsKICAg
ICBzZXROZWVkc1JlYXBwbHlTdHlsZXNJbkFsbEZyYW1lcyhtX3BhZ2UpOwogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmlu
ZGV4IDA2ZjQ1NzAuLmFiNmMxZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5o
CisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVkZSAiRm9udFJlbmRlcmluZ01vZGUuaCIKICNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiWm9vbU1vZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0yMzQsOCArMjM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IHNldFNob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyhib29sKTsKICAgICAgICAgYm9vbCBzaG91
bGRQYWludEN1c3RvbVNjcm9sbGJhcnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFBhaW50Q3Vz
dG9tU2Nyb2xsYmFyczsgfQogCi0gICAgICAgIHZvaWQgc2V0Wm9vbXNUZXh0T25seShib29sKTsK
LSAgICAgICAgYm9vbCB6b29tc1RleHRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV96b29tc1RleHRP
bmx5OyB9CisgICAgICAgIHZvaWQgc2V0Wm9vbU1vZGUoWm9vbU1vZGUpOworICAgICAgICBab29t
TW9kZSB6b29tTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fem9vbU1vZGU7IH0KICAgICAgICAgCiAg
ICAgICAgIHZvaWQgc2V0RW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKGJvb2wpOwogICAg
ICAgICBib29sIGVuZm9yY2VDU1NNSU1FVHlwZUluU3RyaWN0TW9kZSgpIHsgcmV0dXJuIG1fZW5m
b3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlOyB9CkBAIC0zMDksNiArMzEwLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBzaXplX3QgbV9tYXhpbXVtRGVjb2RlZEltYWdlU2l6ZTsK
ICAgICAgICAgdW5zaWduZWQgbV9sb2NhbFN0b3JhZ2VRdW90YTsKICAgICAgICAgdW5zaWduZWQg
bV9wbHVnaW5BbGxvd2VkUnVuVGltZTsKKyAgICAgICAgWm9vbU1vZGUgbV96b29tTW9kZTsKICAg
ICAgICAgYm9vbCBtX2lzSmF2YUVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5IDogMTsKICAgICAgICAgYm9vbCBtX3ByaXZhdGVCcm93c2luZ0VuYWJs
ZWQgOiAxOwpAQCAtMzQ3LDcgKzM0OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBtX2luQXBwbGljYXRpb25DaHJvbWVNb2RlIDogMTsKICAgICAgICAgYm9vbCBtX29mZmxp
bmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9zaG91bGRQ
YWludEN1c3RvbVNjcm9sbGJhcnMgOiAxOwotICAgICAgICBib29sIG1fem9vbXNUZXh0T25seSA6
IDE7CiAgICAgICAgIGJvb2wgbV9lbmZvcmNlQ1NTTUlNRVR5cGVJblN0cmljdE1vZGUgOiAxOwog
ICAgICAgICBib29sIG1fdXNlc0VuY29kaW5nRGV0ZWN0b3IgOiAxOwogICAgICAgICBib29sIG1f
YWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MgOiAxOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L1pvb21Nb2RlLmggYi9XZWJDb3JlL3BhZ2UvWm9vbU1vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zZjAyMTg0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdl
L1pvb21Nb2RlLmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBS
ZXNlYXJjaCBpbiBNb3Rpb24gTHRkLiBodHRwOi8vd3d3LnJpbS5jb20vCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgWm9vbU1v
ZGVfaAorI2RlZmluZSBab29tTW9kZV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBa
b29tTW9kZSB7CisgICAgWm9vbVBhZ2UsCisgICAgWm9vbVRleHRPbmx5Cit9OworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCBmZjI0YzRmLi43YTZkYjg0IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdTVkdF
bGVtZW50LmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q3Vy
cmVudFNjYWxlKGZsb2F0IHNjYWxlKQogICAgICAgICAvLyBDYWxsaW5nIHNldEN1cnJlbnRTY2Fs
ZSgpIG9uIHRoZSBvdXRlcm1vc3QgPHN2Zz4gZWxlbWVudCBpbiBhIHN0YW5kYWxvbmUgU1ZHIGRv
Y3VtZW50CiAgICAgICAgIC8vIGlzIGFsbG93ZWQgdG8gY2hhbmdlIHRoZSBwYWdlIHpvb20gZmFj
dG9yLCBpbmZsdWVuY2luZyB0aGUgZG9jdW1lbnQgc2l6ZSwgc2Nyb2xsYmFycyBldGMuCiAgICAg
ICAgIGlmIChwYXJlbnROb2RlKCkgPT0gZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGZyYW1lLT5z
ZXRab29tRmFjdG9yKHNjYWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmcmFtZS0+c2V0Wm9vbUZh
Y3RvcihzY2FsZSwgWm9vbVBhZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCA5MjhkNDNhLi42NzNmMDcxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxMC0wMi0yNCAgSmFrb2IgUGV0c292aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkYXB0IHRvIHRoZSBu
ZXcgWm9vbU1vZGUgZW51bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM1MzQ3CisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVsKToKKwogMjAxMC0wMi0yMyAgSmFt
ZXMgSGF3a2lucyAgPGpoYXdraW5zQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDk3NjY1
ZDQuLjcyZmJiZDUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xMzAyLDcg
KzEzMDIsNyBAQCBpbnQgV2ViVmlld0ltcGw6OnNldFpvb21MZXZlbChib29sIHRleHRPbmx5LCBp
bnQgem9vbUxldmVsKQogICAgIEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWUo
KTsKICAgICBpZiAoem9vbUZhY3RvciAhPSBmcmFtZS0+em9vbUZhY3RvcigpKSB7CiAgICAgICAg
IG1fem9vbUxldmVsID0gem9vbUxldmVsOwotICAgICAgICBmcmFtZS0+c2V0Wm9vbUZhY3Rvcih6
b29tRmFjdG9yLCB0ZXh0T25seSk7CisgICAgICAgIGZyYW1lLT5zZXRab29tRmFjdG9yKHpvb21G
YWN0b3IsIHRleHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwogICAgIH0KICAgICBy
ZXR1cm4gbV96b29tTGV2ZWw7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDVjNDk5YjEuLjE1OTM5ZGQgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTAtMDItMjQgIEpha29iIFBldHNvdml0cyAgPGpwZXRzb3ZpdHNAcmltLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGFw
dCB0byB0aGUgbmV3IFpvb21Nb2RlIGVudW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNTM0NworCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb246XSk6
CisgICAgICAgICgtW1dlYlZpZXcgX3NldFpvb21NdWx0aXBsaWVyOmlzVGV4dE9ubHk6XSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgX3JlYWxab29tTXVsdGlwbGllcklzVGV4dE9ubHldKToKKwogMjAx
MC0wMi0yMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgVGltIEhhdGNoZXIgYW5kIFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CmluZGV4IGJlMDM1YjIuLmM4NDdhZTkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xMzM5LDcg
KzEzMzksNyBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVuYWJsZWQoKQogICAg
IHNldHRpbmdzLT5zZXRXZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZChbcHJlZmVyZW5jZXMgd2Vi
QXJjaGl2ZURlYnVnTW9kZUVuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0TG9jYWxGaWxlQ29u
dGVudFNuaWZmaW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5n
RW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQoW3ByZWZlcmVuY2VzIG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZF0pOwot
ICAgIHNldHRpbmdzLT5zZXRab29tc1RleHRPbmx5KFtwcmVmZXJlbmNlcyB6b29tc1RleHRPbmx5
XSk7CisgICAgc2V0dGluZ3MtPnNldFpvb21Nb2RlKFtwcmVmZXJlbmNlcyB6b29tc1RleHRPbmx5
XSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKICAgICBzZXR0aW5ncy0+c2V0WFNTQXVkaXRv
ckVuYWJsZWQoW3ByZWZlcmVuY2VzIGlzWFNTQXVkaXRvckVuYWJsZWRdKTsKICAgICBzZXR0aW5n
cy0+c2V0RW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKCFXS0FwcFZlcnNpb25DaGVja0xl
c3NUaGFuKEAiY29tLmFwcGxlLmlXZWIiLCAtMSwgMi4xKSk7CiAgICAgc2V0dGluZ3MtPnNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGNvcmVWaWRlb0hhczcyMjg4MzZGaXgoKSAmJiBb
cHJlZmVyZW5jZXMgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRdKTsKQEAgLTMxMTUsNyAr
MzExNSw3IEBAIHN0YXRpYyBib29sIG5lZWRzV2ViVmlld0luaXRUaHJlYWRXb3JrYXJvdW5kKCkK
ICAgICBfcHJpdmF0ZS0+em9vbU11bHRpcGxpZXIgPSBtOwogICAgIEFTU0VSVChfcHJpdmF0ZS0+
cGFnZSk7CiAgICAgaWYgKF9wcml2YXRlLT5wYWdlKQotICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+
c2V0dGluZ3MoKS0+c2V0Wm9vbXNUZXh0T25seShpc1RleHRPbmx5KTsKKyAgICAgICAgX3ByaXZh
dGUtPnBhZ2UtPnNldHRpbmdzKCktPnNldFpvb21Nb2RlKGlzVGV4dE9ubHkgPyBab29tVGV4dE9u
bHkgOiBab29tUGFnZSk7CiAgICAgCiAgICAgLy8gRklYTUU6IGl0IHdvdWxkIGJlIG5pY2UgdG8g
cmV3b3JrIHRoaXMgY29kZSBzbyB0aGF0IF9wcml2YXRlLT56b29tTXVsdGlwbGllciBkb2Vzbid0
IGV4aXN0IGFuZCBjYWxsZXJzCiAgICAgLy8gYWxsIGFjY2VzcyBfcHJpdmF0ZS0+cGFnZS0+c2V0
dGluZ3MoKS4KQEAgLTMxNDEsNyArMzE0MSw3IEBAIHN0YXRpYyBib29sIG5lZWRzV2ViVmlld0lu
aXRUaHJlYWRXb3JrYXJvdW5kKCkKICAgICBpZiAoIV9wcml2YXRlLT5wYWdlKQogICAgICAgICBy
ZXR1cm4gTk87CiAgICAgCi0gICAgcmV0dXJuIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLT56
b29tc1RleHRPbmx5KCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLT56
b29tTW9kZSgpID09IFpvb21UZXh0T25seSA/IFlFUyA6IE5POwogfQogCiAjZGVmaW5lIE1pbmlt
dW1ab29tTXVsdGlwbGllciAgICAgICAwLjVmCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3
ZWJmcmFtZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggMTViNWMwMC4u
OWNmYzU4ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCisrKyBiL1dl
YktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcApAQCAtMTI0NSw3ICsxMjQ1LDcgQEAgdm9pZCBRV2Vi
RnJhbWU6OnJlbmRlcihRUGFpbnRlciogcGFpbnRlcikKICovCiB2b2lkIFFXZWJGcmFtZTo6c2V0
VGV4dFNpemVNdWx0aXBsaWVyKHFyZWFsIGZhY3RvcikKIHsKLSAgICBkLT5mcmFtZS0+c2V0Wm9v
bUZhY3RvcihmYWN0b3IsIC8qaXNUZXh0T25seSovdHJ1ZSk7CisgICAgZC0+ZnJhbWUtPnNldFpv
b21GYWN0b3IoZmFjdG9yLCBab29tVGV4dE9ubHkpOwogfQogCiAvKiEKQEAgLTEyNjQsNyArMTI2
NCw3IEBAIHFyZWFsIFFXZWJGcmFtZTo6dGV4dFNpemVNdWx0aXBsaWVyKCkgY29uc3QKIAogdm9p
ZCBRV2ViRnJhbWU6OnNldFpvb21GYWN0b3IocXJlYWwgZmFjdG9yKQogewotICAgIGQtPmZyYW1l
LT5zZXRab29tRmFjdG9yKGZhY3RvciwgZC0+ZnJhbWUtPmlzWm9vbUZhY3RvclRleHRPbmx5KCkp
OworICAgIGQtPmZyYW1lLT5zZXRab29tRmFjdG9yKGZhY3RvciwgZC0+ZnJhbWUtPnpvb21Nb2Rl
KCkpOwogfQogCiBxcmVhbCBRV2ViRnJhbWU6Onpvb21GYWN0b3IoKSBjb25zdApkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2V0
dGluZ3MuY3BwCmluZGV4IGQ2MGYwOWMuLjFlM2M5NGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9B
cGkvcXdlYnNldHRpbmdzLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAK
QEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKIAog
ICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpab29tVGV4dE9u
bHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMu
dmFsdWUoUVdlYlNldHRpbmdzOjpab29tVGV4dE9ubHkpKTsKLSAgICAgICAgc2V0dGluZ3MtPnNl
dFpvb21zVGV4dE9ubHkodmFsdWUpOworICAgICAgICBzZXR0aW5ncy0+c2V0Wm9vbU1vZGUodmFs
dWUgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CiAKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1
dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6UHJpbnRFbGVtZW50QmFja2dyb3VuZHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShR
V2ViU2V0dGluZ3M6OlByaW50RWxlbWVudEJhY2tncm91bmRzKSk7CmRpZmYgLS1naXQgYS9XZWJL
aXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAyZDFhNDgzLi5lOWU2
MDU4IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMi0yNCAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkYXB0IHRvIHRoZSBuZXcgWm9vbU1vZGUgZW51bS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MzQ3CisKKyAgICAgICAgKiBBcGkv
cXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6c2V0VGV4dFNpemVNdWx0aXBsaWVy
KToKKyAgICAgICAgKFFXZWJGcmFtZTo6c2V0Wm9vbUZhY3Rvcik6CisgICAgICAgICogQXBpL3F3
ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisK
IDIwMTAtMDItMjMgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA3NmIxNDUwLi42NjdlOGVlIDEwMDY0
NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDEwLTAyLTI0ICBKYWtvYiBQZXRzb3ZpdHMgIDxqcGV0c292aXRz
QHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRhcHQgdG8gdGhlIG5ldyBab29tTW9kZSBlbnVtLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUzNDcKKworICAgICAgICAqIFdlYkZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYkZyYW1lOjpzZXRUZXh0U2l6ZU11bHRpcGxpZXIpOgorICAgICAgICAq
IFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2V0Wm9vbU11bHRpcGxpZXIpOgorICAg
ICAgICAoV2ViVmlldzo6em9vbU11bHRpcGxpZXIpOgorICAgICAgICAoV2ViVmlldzo6Y2FuTWFr
ZVRleHRMYXJnZXIpOgorICAgICAgICAoV2ViVmlldzo6bWFrZVRleHRMYXJnZXIpOgorICAgICAg
ICAoV2ViVmlldzo6Y2FuTWFrZVRleHRTbWFsbGVyKToKKyAgICAgICAgKFdlYlZpZXc6Om1ha2VU
ZXh0U21hbGxlcik6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQp
OgorCiAyMDEwLTAyLTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlciBhbmQgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdp
dCBhL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5k
ZXggOGUwMzc5NC4uOGI3ZTBmZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAK
KysrIGIvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTEwNzQsNyArMTA3NCw3IEBAIHZvaWQg
V2ViRnJhbWU6OnNldFRleHRTaXplTXVsdGlwbGllcihmbG9hdCBtdWx0aXBsaWVyKQogewogICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwogICAgIEFTU0VSVChjb3JlRnJhbWUpOwot
ICAgIGNvcmVGcmFtZS0+c2V0Wm9vbUZhY3RvcihtdWx0aXBsaWVyLCB0cnVlKTsKKyAgICBjb3Jl
RnJhbWUtPnNldFpvb21GYWN0b3IobXVsdGlwbGllciwgWm9vbVRleHRPbmx5KTsKIH0KIAogSFJF
U1VMVCBXZWJGcmFtZTo6aW5WaWV3U291cmNlTW9kZShCT09MKiBmbGFnKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggNzgx
MzgxMS4uNTM4OWQwNSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0yODc5LDkgKzI4NzksOSBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlZpZXc6OnNldFBhZ2VTaXplTXVsdGlwbGllcigKIHZvaWQgV2ViVmll
dzo6c2V0Wm9vbU11bHRpcGxpZXIoZmxvYXQgbXVsdGlwbGllciwgYm9vbCBpc1RleHRPbmx5KQog
ewogICAgIG1fem9vbU11bHRpcGxpZXIgPSBtdWx0aXBsaWVyOwotICAgIG1fcGFnZS0+c2V0dGlu
Z3MoKS0+c2V0Wm9vbXNUZXh0T25seShpc1RleHRPbmx5KTsKKyAgICBtX3BhZ2UtPnNldHRpbmdz
KCktPnNldFpvb21Nb2RlKGlzVGV4dE9ubHkgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CiAg
ICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fbWFpbkZyYW1lKSkKLSAgICAgICAgY29y
ZUZyYW1lLT5zZXRab29tRmFjdG9yKG11bHRpcGxpZXIsIGlzVGV4dE9ubHkpOworICAgICAgICBj
b3JlRnJhbWUtPnNldFpvb21GYWN0b3IobXVsdGlwbGllciwgaXNUZXh0T25seSA/IFpvb21UZXh0
T25seSA6IFpvb21QYWdlKTsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
Ojp0ZXh0U2l6ZU11bHRpcGxpZXIoIApAQCAtMjkwMCw3ICsyOTAwLDggQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpwYWdlU2l6ZU11bHRpcGxpZXIoCiAKIGZsb2F0IFdlYlZp
ZXc6Onpvb21NdWx0aXBsaWVyKGJvb2wgaXNUZXh0T25seSkKIHsKLSAgICBpZiAoaXNUZXh0T25s
eSAhPSBtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21zVGV4dE9ubHkoKSkKKyAgICBab29tTW9kZSB6
b29tTW9kZSA9IGlzVGV4dE9ubHkgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZTsKKyAgICBpZiAo
em9vbU1vZGUgIT0gbV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgpKQogICAgICAgICByZXR1
cm4gMS4wZjsKICAgICByZXR1cm4gbV96b29tTXVsdGlwbGllcjsKIH0KQEAgLTM2ODAsNyArMzY4
MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y2FuTWFrZVRleHRMYXJn
ZXIoCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8sCiAgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KQogewotICAgIGJvb2wgY2FuR3Jvd01vcmUg
PSBjYW5ab29tSW4obV9wYWdlLT5zZXR0aW5ncygpLT56b29tc1RleHRPbmx5KCkpOworICAgIGJv
b2wgY2FuR3Jvd01vcmUgPSBjYW5ab29tSW4obV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgp
ID09IFpvb21UZXh0T25seSk7CiAgICAgKnJlc3VsdCA9IGNhbkdyb3dNb3JlID8gVFJVRSA6IEZB
TFNFOwogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzcwMiw3ICszNzAzLDcgQEAgYm9vbCBXZWJW
aWV3OjpjYW5ab29tSW4oYm9vbCBpc1RleHRPbmx5KQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3OjptYWtlVGV4dExhcmdlciggCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24q
IC8qc2VuZGVyKi8pCiB7Ci0gICAgcmV0dXJuIHpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCktPnpv
b21zVGV4dE9ubHkoKSk7CisgICAgcmV0dXJuIHpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCktPnpv
b21Nb2RlKCkgPT0gWm9vbVRleHRPbmx5KTsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3Ojp6b29tUGFnZUluKCAKQEAgLTM3MjMsNyArMzcyNCw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y2FuTWFrZVRleHRTbWFsbGVyKAogICAgICAgICAvKiBb
aW5dICovIElVbmtub3duKiAvKnNlbmRlciovLAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJPT0wqIHJlc3VsdCkKIHsKLSAgICBib29sIGNhblNocmlua01vcmUgPSBjYW5ab29tT3V0KG1f
cGFnZS0+c2V0dGluZ3MoKS0+em9vbXNUZXh0T25seSgpKTsKKyAgICBib29sIGNhblNocmlua01v
cmUgPSBjYW5ab29tT3V0KG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKSA9PSBab29tVGV4
dE9ubHkpOwogICAgICpyZXN1bHQgPSBjYW5TaHJpbmtNb3JlID8gVFJVRSA6IEZBTFNFOwogICAg
IHJldHVybiBTX09LOwogfQpAQCAtMzc0NSw3ICszNzQ2LDcgQEAgYm9vbCBXZWJWaWV3OjpjYW5a
b29tT3V0KGJvb2wgaXNUZXh0T25seSkKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6bWFrZVRleHRTbWFsbGVyKCAKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5k
ZXIqLykKIHsKLSAgICByZXR1cm4gem9vbU91dChtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21zVGV4
dE9ubHkoKSk7CisgICAgcmV0dXJuIHpvb21PdXQobV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9k
ZSgpID09IFpvb21UZXh0T25seSk7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6em9vbVBhZ2VPdXQoIApAQCAtNDU3Niw3ICs0NTc3LDcgQEAgSFJFU1VMVCBXZWJWaWV3
Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9u
KQogICAgIGhyID0gcHJlZmVyZW5jZXMtPnpvb21zVGV4dE9ubHkoJmVuYWJsZWQpOwogICAgIGlm
IChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7Ci0gICAgc2V0dGluZ3MtPnNldFpvb21z
VGV4dE9ubHkoISFlbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0Wm9vbU1vZGUoZW5hYmxlZCA/
IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKIAogICAgIHNldHRpbmdzLT5zZXRTaG93c1VSTHNJ
blRvb2xUaXBzKGZhbHNlKTsKICAgICBzZXR0aW5ncy0+c2V0Rm9yY2VGVFBEaXJlY3RvcnlMaXN0
aW5ncyh0cnVlKTsKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9XZWJLaXQvd3gv
Q2hhbmdlTG9nCmluZGV4IGFkOGRmMTIuLmIwNjM5YTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEw
LTAyLTI0ICBKYWtvYiBQZXRzb3ZpdHMgIDxqcGV0c292aXRzQHJpbS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRhcHQgdG8gdGhlIG5ldyBa
b29tTW9kZSBlbnVtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzUzNDcKKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKHd4V2ViRnJh
bWU6OkluY3JlYXNlVGV4dFNpemUpOgorICAgICAgICAod3hXZWJGcmFtZTo6RGVjcmVhc2VUZXh0
U2l6ZSk6CisgICAgICAgICh3eFdlYkZyYW1lOjpSZXNldFRleHRTaXplKToKKwogMjAxMC0wMi0y
MyAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwIGIv
V2ViS2l0L3d4L1dlYkZyYW1lLmNwcAppbmRleCA2Y2RhMTk3Li4wNjI2OGFkIDEwMDY0NAotLS0g
YS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCisrKyBiL1dlYktpdC93eC9XZWJGcmFtZS5jcHAKQEAg
LTMxNiw3ICszMTYsNyBAQCB2b2lkIHd4V2ViRnJhbWU6OkluY3JlYXNlVGV4dFNpemUoKQogewog
ICAgIGlmIChDYW5JbmNyZWFzZVRleHRTaXplKCkpIHsKICAgICAgICAgbV90ZXh0TWFnbmlmaWVy
ID0gbV90ZXh0TWFnbmlmaWVyKlRleHRTaXplTXVsdGlwbGllclJhdGlvOwotICAgICAgICBtX2lt
cGwtPmZyYW1lLT5zZXRab29tRmFjdG9yKG1fdGV4dE1hZ25pZmllciwgdHJ1ZSk7CisgICAgICAg
IG1faW1wbC0+ZnJhbWUtPnNldFpvb21GYWN0b3IobV90ZXh0TWFnbmlmaWVyLCBab29tVGV4dE9u
bHkpOwogICAgIH0KIH0KIApAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgd3hXZWJGcmFtZTo6RGVj
cmVhc2VUZXh0U2l6ZSgpCiB7ICAgICAgICAKICAgICBpZiAoQ2FuRGVjcmVhc2VUZXh0U2l6ZSgp
KSB7CiAgICAgICAgIG1fdGV4dE1hZ25pZmllciA9IG1fdGV4dE1hZ25pZmllci9UZXh0U2l6ZU11
bHRpcGxpZXJSYXRpbzsKLSAgICAgICAgbV9pbXBsLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihtX3Rl
eHRNYWduaWZpZXIsIHRydWUpOworICAgICAgICBtX2ltcGwtPmZyYW1lLT5zZXRab29tRmFjdG9y
KG1fdGV4dE1hZ25pZmllciwgWm9vbVRleHRPbmx5KTsKICAgICB9CiB9CiAKQEAgLTM0MSw3ICsz
NDEsNyBAQCB2b2lkIHd4V2ViRnJhbWU6OlJlc2V0VGV4dFNpemUoKQogewogICAgIG1fdGV4dE1h
Z25pZmllciA9IDEuMDsKICAgICBpZiAobV9pbXBsLT5mcmFtZSkKLSAgICAgICAgbV9pbXBsLT5m
cmFtZS0+c2V0Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIsIHRydWUpOworICAgICAgICBtX2lt
cGwtPmZyYW1lLT5zZXRab29tRmFjdG9yKG1fdGV4dE1hZ25pZmllciwgWm9vbVRleHRPbmx5KTsK
IH0KIAogdm9pZCB3eFdlYkZyYW1lOjpNYWtlRWRpdGFibGUoYm9vbCBlbmFibGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49446</attachid>
            <date>2010-02-24 15:02:12 -0800</date>
            <delta_ts>2010-02-25 09:36:56 -0800</delta_ts>
            <desc>Convert the zoom mode into a proper enum (try 5)</desc>
            <filename>zoommode-enum.patch</filename>
            <type>text/plain</type>
            <size>22875</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2Q4NWFjMi4uMzBkZjFjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0wMi0yNCAgSmFrb2IgUGV0c292
aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgdGhlIHpvb20gbW9kZSAocGFnZSB2cy4gdGV4dC1v
bmx5KSBpbnRvIGEgcHJvcGVyIGVudW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNTM0NworCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Onpvb21Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpzaG91bGRBcHBseVRleHRab29tKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzaG91
bGRBcHBseVBhZ2Vab29tKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRab29tRmFjdG9y
KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OnNldFpvb21Nb2RlKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6em9vbU1vZGUpOgorICAgICAgICAqIHBhZ2UvWm9v
bU1vZGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHN2Zy9TVkdT
VkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnNldEN1cnJl
bnRTY2FsZSk6CisKIDIwMTAtMDItMjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyIGFuZCBQYXZlbCBGZWxkbWFuLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggMjk3NWZmZS4uMDdiOWU3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xNDI0LDYgKzE0MjQsNyBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5oIFwKIAlX
ZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAgXAogCVdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmgg
XAorCVdlYkNvcmUvcGFnZS9ab29tTW9kZS5oIFwKIAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkJhc2UuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
aCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcCBcCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDllNmE5YTcuLmY2YTE0YzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xODg5LDYgKzE4ODksNyBAQAogICAgICAgICAg
ICAgJ3BhZ2UvV29ya2VyTmF2aWdhdG9yLmgnLAogICAgICAgICAgICAgJ3BhZ2UvWFNTQXVkaXRv
ci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvWFNTQXVkaXRvci5oJywKKyAgICAgICAgICAgICdw
YWdlL1pvb21Nb2RlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0LmNwcCcsCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBj
NjI1MjI0Li5lYzY1MzRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS5wcm8KQEAgLTE0NzgsNiArMTQ3OCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IHBhZ2UvV2luZG93RmVhdHVyZXMuaCBcCiAgICAgcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaCBcCiAg
ICAgcGFnZS9YU1NBdWRpdG9yLmggXAorICAgIHBhZ2UvWm9vbU1vZGUuaCBcCiAgICAgcGxhdGZv
cm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0
aW9uTGlzdC5oIFwKICAgICBwbGF0Zm9ybS9BcmVuYS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDhkNmI1NTcuLjQwMTgzZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMjEwMjQsNiArMjEwMjQsMTAgQEAKIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBhZ2VcWFNTQXVkaXRvci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxab29tTW9kZS5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KIAkJCTxGaWx0ZXINCiAJCQkJTmFtZT0id2luIg0KIAkJCQk+DQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjYy
YzU2Yy4uNTQ4YWI0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC02NjEsMjggKzY2MSwyNCBAQCBmbG9hdCBGcmFtZTo6
em9vbUZhY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fem9vbUZhY3RvcjsKIH0KIAotYm9vbCBG
cmFtZTo6aXNab29tRmFjdG9yVGV4dE9ubHkoKSBjb25zdAorWm9vbU1vZGUgRnJhbWU6Onpvb21N
b2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wYWdlLT5zZXR0aW5ncygpLT56b29tc1RleHRP
bmx5KCk7CisgICAgcmV0dXJuIG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKTsKIH0KIAog
Ym9vbCBGcmFtZTo6c2hvdWxkQXBwbHlUZXh0Wm9vbSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fem9v
bUZhY3RvciA9PSAxLjBmIHx8ICFpc1pvb21GYWN0b3JUZXh0T25seSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIG1fem9vbUZhY3RvciAhPSAx
LjBmICYmIHpvb21Nb2RlKCkgPT0gWm9vbVRleHRPbmx5OwogfQogCiBib29sIEZyYW1lOjpzaG91
bGRBcHBseVBhZ2Vab29tKCkgY29uc3QKIHsKLSAgICBpZiAobV96b29tRmFjdG9yID09IDEuMGYg
fHwgaXNab29tRmFjdG9yVGV4dE9ubHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBtX3pvb21GYWN0b3IgIT0gMS4wZiAmJiB6b29tTW9kZSgp
ID09IFpvb21QYWdlOwogfQogCi12b2lkIEZyYW1lOjpzZXRab29tRmFjdG9yKGZsb2F0IHBlcmNl
bnQsIGJvb2wgaXNUZXh0T25seSkKK3ZvaWQgRnJhbWU6OnNldFpvb21GYWN0b3IoZmxvYXQgcGVy
Y2VudCwgWm9vbU1vZGUgbW9kZSkKIHsKLSAgICBpZiAobV96b29tRmFjdG9yID09IHBlcmNlbnQg
JiYgaXNab29tRmFjdG9yVGV4dE9ubHkoKSA9PSBpc1RleHRPbmx5KQorICAgIGlmIChtX3pvb21G
YWN0b3IgPT0gcGVyY2VudCAmJiB6b29tTW9kZSgpID09IG1vZGUpCiAgICAgICAgIHJldHVybjsK
IAogI2lmIEVOQUJMRShTVkcpCkBAIC02OTYsNyArNjkyLDcgQEAgdm9pZCBGcmFtZTo6c2V0Wm9v
bUZhY3RvcihmbG9hdCBwZXJjZW50LCBib29sIGlzVGV4dE9ubHkpCiAgICAgfQogI2VuZGlmCiAK
LSAgICBpZiAoIWlzVGV4dE9ubHkpIHsKKyAgICBpZiAobW9kZSA9PSBab29tUGFnZSkgewogICAg
ICAgICAvLyBVcGRhdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiB3aGVuIGRvaW5nIGEgZnVsbCBwYWdl
IHpvb20sIHNvIHRoZSBjb250ZW50IHN0YXlzIGluIHJlbGF0aXZlbHkgdGhlIHNhbWUgcG9zaXRp
b24uCiAgICAgICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uID0gdmlldygpLT5zY3JvbGxQb3Np
dGlvbigpOwogICAgICAgICBmbG9hdCBwZXJjZW50RGlmZmVyZW5jZSA9IChwZXJjZW50IC8gbV96
b29tRmFjdG9yKTsKQEAgLTcwNCwxMiArNzAwLDEyIEBAIHZvaWQgRnJhbWU6OnNldFpvb21GYWN0
b3IoZmxvYXQgcGVyY2VudCwgYm9vbCBpc1RleHRPbmx5KQogICAgIH0KIAogICAgIG1fem9vbUZh
Y3RvciA9IHBlcmNlbnQ7Ci0gICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRab29tc1RleHRPbmx5
KGlzVGV4dE9ubHkpOworICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0Wm9vbU1vZGUobW9kZSk7
CiAKICAgICBtX2RvYy0+cmVjYWxjU3R5bGUoTm9kZTo6Rm9yY2UpOwogCiAgICAgZm9yIChGcmFt
ZSogY2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRy
ZWUoKS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgY2hpbGQtPnNldFpvb21GYWN0b3IobV96b29t
RmFjdG9yLCBpc1RleHRPbmx5KTsKKyAgICAgICAgY2hpbGQtPnNldFpvb21GYWN0b3IobV96b29t
RmFjdG9yLCBtb2RlKTsKIAogICAgIGlmIChtX2RvYy0+cmVuZGVyZXIoKSAmJiBtX2RvYy0+cmVu
ZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSAmJiB2aWV3KCktPmRpZEZpcnN0TGF5b3V0KCkpCiAgICAg
ICAgIHZpZXcoKS0+bGF5b3V0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBi
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDI2ZDFlZmEuLjNjZTM2NzUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0zOCw2
ICszOCw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsQmVoYXZpb3IuaCIKICNpbmNsdWRlICJTZWxlY3Rp
b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCisjaW5jbHVkZSAi
Wm9vbU1vZGUuaCIKIAogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlICJGcmFtZVdpbi5oIgpA
QCAtMTY5LDkgKzE3MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyA9PT0gdG8gYmUg
bW92ZWQgaW50byBGcmFtZVZpZXcKIAogICAgIHB1YmxpYzoKLSAgICAgICAgdm9pZCBzZXRab29t
RmFjdG9yKGZsb2F0IHNjYWxlLCBib29sIGlzVGV4dE9ubHkpOworICAgICAgICB2b2lkIHNldFpv
b21GYWN0b3IoZmxvYXQgc2NhbGUsIFpvb21Nb2RlKTsKICAgICAgICAgZmxvYXQgem9vbUZhY3Rv
cigpIGNvbnN0OwotICAgICAgICBib29sIGlzWm9vbUZhY3RvclRleHRPbmx5KCkgY29uc3Q7Cisg
ICAgICAgIFpvb21Nb2RlIHpvb21Nb2RlKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgc2hvdWxkQXBw
bHlUZXh0Wm9vbSgpIGNvbnN0OwogICAgICAgICBib29sIHNob3VsZEFwcGx5UGFnZVpvb20oKSBj
b25zdDsKICAgICAgICAgZmxvYXQgcGFnZVpvb21GYWN0b3IoKSBjb25zdCB7IHJldHVybiBzaG91
bGRBcHBseVBhZ2Vab29tKCkgPyB6b29tRmFjdG9yKCkgOiAxLjBmOyB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRl
eCBjYzhmN2FmLi41N2YzY2RkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgU2V0dGlu
Z3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX21heGltdW1EZWNvZGVkSW1hZ2VTaXpl
KG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKQogICAgICwgbV9sb2NhbFN0b3JhZ2VRdW90
YSg1ICogMTAyNCAqIDEwMjQpICAvLyBTdWdnZXN0ZWQgYnkgdGhlIEhUTUw1IHNwZWMuCiAgICAg
LCBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lKG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
CisgICAgLCBtX3pvb21Nb2RlKFpvb21QYWdlKQogICAgICwgbV9pc0phdmFFbmFibGVkKGZhbHNl
KQogICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpCiAgICAgLCBtX3ByaXZh
dGVCcm93c2luZ0VuYWJsZWQoZmFsc2UpCkBAIC0xMDIsNyArMTAzLDYgQEAgU2V0dGluZ3M6OlNl
dHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2luQXBwbGljYXRpb25DaHJvbWVNb2RlKGZhbHNl
KQogICAgICwgbV9vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoZmFsc2UpCiAgICAg
LCBtX3Nob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyhmYWxzZSkKLSAgICAsIG1fem9vbXNUZXh0
T25seShmYWxzZSkKICAgICAsIG1fZW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKHRydWUp
CiAgICAgLCBtX3VzZXNFbmNvZGluZ0RldGVjdG9yKGZhbHNlKQogICAgICwgbV9hbGxvd1Njcmlw
dHNUb0Nsb3NlV2luZG93cyhmYWxzZSkKQEAgLTQ2NywxMiArNDY3LDEyIEBAIHZvaWQgU2V0dGlu
Z3M6OnNldFNob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyhib29sIHNob3VsZFBhaW50Q3VzdG9t
U2Nyb2xsYmFycykKICAgICBtX3Nob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyA9IHNob3VsZFBh
aW50Q3VzdG9tU2Nyb2xsYmFyczsKIH0KIAotdm9pZCBTZXR0aW5nczo6c2V0Wm9vbXNUZXh0T25s
eShib29sIHpvb21zVGV4dE9ubHkpCit2b2lkIFNldHRpbmdzOjpzZXRab29tTW9kZShab29tTW9k
ZSBtb2RlKQogewotICAgIGlmICh6b29tc1RleHRPbmx5ID09IG1fem9vbXNUZXh0T25seSkKKyAg
ICBpZiAobW9kZSA9PSBtX3pvb21Nb2RlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV96
b29tc1RleHRPbmx5ID0gem9vbXNUZXh0T25seTsKKyAgICBtX3pvb21Nb2RlID0gbW9kZTsKICAg
ICBzZXROZWVkc1JlYXBwbHlTdHlsZXNJbkFsbEZyYW1lcyhtX3BhZ2UpOwogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmlu
ZGV4IDA2ZjQ1NzAuLmFiNmMxZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5o
CisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVkZSAiRm9udFJlbmRlcmluZ01vZGUuaCIKICNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiWm9vbU1vZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0yMzQsOCArMjM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IHNldFNob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyhib29sKTsKICAgICAgICAgYm9vbCBzaG91
bGRQYWludEN1c3RvbVNjcm9sbGJhcnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFBhaW50Q3Vz
dG9tU2Nyb2xsYmFyczsgfQogCi0gICAgICAgIHZvaWQgc2V0Wm9vbXNUZXh0T25seShib29sKTsK
LSAgICAgICAgYm9vbCB6b29tc1RleHRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV96b29tc1RleHRP
bmx5OyB9CisgICAgICAgIHZvaWQgc2V0Wm9vbU1vZGUoWm9vbU1vZGUpOworICAgICAgICBab29t
TW9kZSB6b29tTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fem9vbU1vZGU7IH0KICAgICAgICAgCiAg
ICAgICAgIHZvaWQgc2V0RW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKGJvb2wpOwogICAg
ICAgICBib29sIGVuZm9yY2VDU1NNSU1FVHlwZUluU3RyaWN0TW9kZSgpIHsgcmV0dXJuIG1fZW5m
b3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlOyB9CkBAIC0zMDksNiArMzEwLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBzaXplX3QgbV9tYXhpbXVtRGVjb2RlZEltYWdlU2l6ZTsK
ICAgICAgICAgdW5zaWduZWQgbV9sb2NhbFN0b3JhZ2VRdW90YTsKICAgICAgICAgdW5zaWduZWQg
bV9wbHVnaW5BbGxvd2VkUnVuVGltZTsKKyAgICAgICAgWm9vbU1vZGUgbV96b29tTW9kZTsKICAg
ICAgICAgYm9vbCBtX2lzSmF2YUVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5IDogMTsKICAgICAgICAgYm9vbCBtX3ByaXZhdGVCcm93c2luZ0VuYWJs
ZWQgOiAxOwpAQCAtMzQ3LDcgKzM0OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBtX2luQXBwbGljYXRpb25DaHJvbWVNb2RlIDogMTsKICAgICAgICAgYm9vbCBtX29mZmxp
bmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9zaG91bGRQ
YWludEN1c3RvbVNjcm9sbGJhcnMgOiAxOwotICAgICAgICBib29sIG1fem9vbXNUZXh0T25seSA6
IDE7CiAgICAgICAgIGJvb2wgbV9lbmZvcmNlQ1NTTUlNRVR5cGVJblN0cmljdE1vZGUgOiAxOwog
ICAgICAgICBib29sIG1fdXNlc0VuY29kaW5nRGV0ZWN0b3IgOiAxOwogICAgICAgICBib29sIG1f
YWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MgOiAxOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L1pvb21Nb2RlLmggYi9XZWJDb3JlL3BhZ2UvWm9vbU1vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zZjAyMTg0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdl
L1pvb21Nb2RlLmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBS
ZXNlYXJjaCBpbiBNb3Rpb24gTHRkLiBodHRwOi8vd3d3LnJpbS5jb20vCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgWm9vbU1v
ZGVfaAorI2RlZmluZSBab29tTW9kZV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBa
b29tTW9kZSB7CisgICAgWm9vbVBhZ2UsCisgICAgWm9vbVRleHRPbmx5Cit9OworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCBmZjI0YzRmLi43YTZkYjg0IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdTVkdF
bGVtZW50LmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q3Vy
cmVudFNjYWxlKGZsb2F0IHNjYWxlKQogICAgICAgICAvLyBDYWxsaW5nIHNldEN1cnJlbnRTY2Fs
ZSgpIG9uIHRoZSBvdXRlcm1vc3QgPHN2Zz4gZWxlbWVudCBpbiBhIHN0YW5kYWxvbmUgU1ZHIGRv
Y3VtZW50CiAgICAgICAgIC8vIGlzIGFsbG93ZWQgdG8gY2hhbmdlIHRoZSBwYWdlIHpvb20gZmFj
dG9yLCBpbmZsdWVuY2luZyB0aGUgZG9jdW1lbnQgc2l6ZSwgc2Nyb2xsYmFycyBldGMuCiAgICAg
ICAgIGlmIChwYXJlbnROb2RlKCkgPT0gZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGZyYW1lLT5z
ZXRab29tRmFjdG9yKHNjYWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmcmFtZS0+c2V0Wm9vbUZh
Y3RvcihzY2FsZSwgWm9vbVBhZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCA5MjhkNDNhLi42NzNmMDcxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxMC0wMi0yNCAgSmFrb2IgUGV0c292aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkYXB0IHRvIHRoZSBu
ZXcgWm9vbU1vZGUgZW51bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM1MzQ3CisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVsKToKKwogMjAxMC0wMi0yMyAgSmFt
ZXMgSGF3a2lucyAgPGpoYXdraW5zQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDk3NjY1
ZDQuLjcyZmJiZDUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xMzAyLDcg
KzEzMDIsNyBAQCBpbnQgV2ViVmlld0ltcGw6OnNldFpvb21MZXZlbChib29sIHRleHRPbmx5LCBp
bnQgem9vbUxldmVsKQogICAgIEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWUo
KTsKICAgICBpZiAoem9vbUZhY3RvciAhPSBmcmFtZS0+em9vbUZhY3RvcigpKSB7CiAgICAgICAg
IG1fem9vbUxldmVsID0gem9vbUxldmVsOwotICAgICAgICBmcmFtZS0+c2V0Wm9vbUZhY3Rvcih6
b29tRmFjdG9yLCB0ZXh0T25seSk7CisgICAgICAgIGZyYW1lLT5zZXRab29tRmFjdG9yKHpvb21G
YWN0b3IsIHRleHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwogICAgIH0KICAgICBy
ZXR1cm4gbV96b29tTGV2ZWw7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBi
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDczNTk5ZGEuLmIyZjg0YjkgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTAtMDItMjQgIEpha29iIFBldHNvdml0cyAgPGpwZXRzb3ZpdHNAcmltLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGFw
dCB0byB0aGUgbmV3IFpvb21Nb2RlIGVudW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNTM0NworCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2FwcGx5X3pvb21fbGV2ZWwpOgorCiAy
MDEwLTAyLTIzICBMZWFuZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KZGlmZiAtLWdpdCBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKaW5kZXggMTZjOTQ3Ny4uYTVlNDAxNCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKQEAgLTM2NzksNyArMzY3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19hcHBseV96b29tX2xldmVsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGdmbG9hdCB6
b29tCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0g
d2ViVmlldy0+cHJpdjsKLSAgICBmcmFtZS0+c2V0Wm9vbUZhY3Rvcih6b29tTGV2ZWwsICFwcml2
LT56b29tRnVsbENvbnRlbnQpOworICAgIGZyYW1lLT5zZXRab29tRmFjdG9yKHpvb21MZXZlbCwg
cHJpdi0+em9vbUZ1bGxDb250ZW50ID8gWm9vbVBhZ2UgOiBab29tVGV4dE9ubHkpOwogfQogCiAv
KioKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggNWM0OTliMS4uMTU5MzlkZCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wMi0y
NCAgSmFrb2IgUGV0c292aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkYXB0IHRvIHRoZSBuZXcgWm9vbU1v
ZGUgZW51bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM1MzQ3CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZp
ZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmll
dyBfc2V0Wm9vbU11bHRpcGxpZXI6aXNUZXh0T25seTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBf
cmVhbFpvb21NdWx0aXBsaWVySXNUZXh0T25seV0pOgorCiAyMDEwLTAyLTIzICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hl
ciBhbmQgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYmUwMzViMi4uYzg0
N2FlOSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEzMzksNyArMTMzOSw3IEBAIHN0YXRpYyBi
b29sIGZhc3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiAgICAgc2V0dGluZ3MtPnNldFdlYkFy
Y2hpdmVEZWJ1Z01vZGVFbmFibGVkKFtwcmVmZXJlbmNlcyB3ZWJBcmNoaXZlRGVidWdNb2RlRW5h
YmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRMb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVk
KFtwcmVmZXJlbmNlcyBsb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkXSk7CiAgICAgc2V0
dGluZ3MtPnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChbcHJlZmVyZW5jZXMg
b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkXSk7Ci0gICAgc2V0dGluZ3MtPnNldFpv
b21zVGV4dE9ubHkoW3ByZWZlcmVuY2VzIHpvb21zVGV4dE9ubHldKTsKKyAgICBzZXR0aW5ncy0+
c2V0Wm9vbU1vZGUoW3ByZWZlcmVuY2VzIHpvb21zVGV4dE9ubHldID8gWm9vbVRleHRPbmx5IDog
Wm9vbVBhZ2UpOwogICAgIHNldHRpbmdzLT5zZXRYU1NBdWRpdG9yRW5hYmxlZChbcHJlZmVyZW5j
ZXMgaXNYU1NBdWRpdG9yRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRFbmZvcmNlQ1NTTUlN
RVR5cGVJblN0cmljdE1vZGUoIVdLQXBwVmVyc2lvbkNoZWNrTGVzc1RoYW4oQCJjb20uYXBwbGUu
aVdlYiIsIC0xLCAyLjEpKTsKICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQoY29yZVZpZGVvSGFzNzIyODgzNkZpeCgpICYmIFtwcmVmZXJlbmNlcyBhY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZF0pOwpAQCAtMzExNSw3ICszMTE1LDcgQEAgc3RhdGljIGJv
b2wgbmVlZHNXZWJWaWV3SW5pdFRocmVhZFdvcmthcm91bmQoKQogICAgIF9wcml2YXRlLT56b29t
TXVsdGlwbGllciA9IG07CiAgICAgQVNTRVJUKF9wcml2YXRlLT5wYWdlKTsKICAgICBpZiAoX3By
aXZhdGUtPnBhZ2UpCi0gICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLT5zZXRab29t
c1RleHRPbmx5KGlzVGV4dE9ubHkpOworICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS0+c2V0Wm9vbU1vZGUoaXNUZXh0T25seSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKICAg
ICAKICAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgbmljZSB0byByZXdvcmsgdGhpcyBjb2RlIHNv
IHRoYXQgX3ByaXZhdGUtPnpvb21NdWx0aXBsaWVyIGRvZXNuJ3QgZXhpc3QgYW5kIGNhbGxlcnMK
ICAgICAvLyBhbGwgYWNjZXNzIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLgpAQCAtMzE0MSw3
ICszMTQxLDcgQEAgc3RhdGljIGJvb2wgbmVlZHNXZWJWaWV3SW5pdFRocmVhZFdvcmthcm91bmQo
KQogICAgIGlmICghX3ByaXZhdGUtPnBhZ2UpCiAgICAgICAgIHJldHVybiBOTzsKICAgICAKLSAg
ICByZXR1cm4gX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCktPnpvb21zVGV4dE9ubHkoKTsKKyAg
ICByZXR1cm4gX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkgPT0gWm9vbVRl
eHRPbmx5ID8gWUVTIDogTk87CiB9CiAKICNkZWZpbmUgTWluaW11bVpvb21NdWx0aXBsaWVyICAg
ICAgIDAuNWYKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktp
dC9xdC9BcGkvcXdlYmZyYW1lLmNwcAppbmRleCAxNWI1YzAwLi45Y2ZjNThmIDEwMDY0NAotLS0g
YS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJh
bWUuY3BwCkBAIC0xMjQ1LDcgKzEyNDUsNyBAQCB2b2lkIFFXZWJGcmFtZTo6cmVuZGVyKFFQYWlu
dGVyKiBwYWludGVyKQogKi8KIHZvaWQgUVdlYkZyYW1lOjpzZXRUZXh0U2l6ZU11bHRpcGxpZXIo
cXJlYWwgZmFjdG9yKQogewotICAgIGQtPmZyYW1lLT5zZXRab29tRmFjdG9yKGZhY3RvciwgLypp
c1RleHRPbmx5Ki90cnVlKTsKKyAgICBkLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihmYWN0b3IsIFpv
b21UZXh0T25seSk7CiB9CiAKIC8qIQpAQCAtMTI2NCw3ICsxMjY0LDcgQEAgcXJlYWwgUVdlYkZy
YW1lOjp0ZXh0U2l6ZU11bHRpcGxpZXIoKSBjb25zdAogCiB2b2lkIFFXZWJGcmFtZTo6c2V0Wm9v
bUZhY3RvcihxcmVhbCBmYWN0b3IpCiB7Ci0gICAgZC0+ZnJhbWUtPnNldFpvb21GYWN0b3IoZmFj
dG9yLCBkLT5mcmFtZS0+aXNab29tRmFjdG9yVGV4dE9ubHkoKSk7CisgICAgZC0+ZnJhbWUtPnNl
dFpvb21GYWN0b3IoZmFjdG9yLCBkLT5mcmFtZS0+em9vbU1vZGUoKSk7CiB9CiAKIHFyZWFsIFFX
ZWJGcmFtZTo6em9vbUZhY3RvcigpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3
ZWJzZXR0aW5ncy5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKaW5kZXggZDYw
ZjA5Yy4uZmVmYzM3YSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3Bw
CisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBA
IHZvaWQgUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkoKQogCiAgICAgICAgIHZhbHVlID0gYXR0
cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Olpvb21UZXh0T25seSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6
Olpvb21UZXh0T25seSkpOwotICAgICAgICBzZXR0aW5ncy0+c2V0Wm9vbXNUZXh0T25seSh2YWx1
ZSk7CisgICAgICAgIHNldHRpbmdzLT5zZXRab29tTW9kZSh2YWx1ZSA/IFdlYkNvcmU6Olpvb21U
ZXh0T25seSA6IFdlYkNvcmU6Olpvb21QYWdlKTsKIAogICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0
ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpQcmludEVsZW1lbnRCYWNrZ3JvdW5kcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFX
ZWJTZXR0aW5nczo6UHJpbnRFbGVtZW50QmFja2dyb3VuZHMpKTsKZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDJkMWE0ODMuLmU5ZTYw
NTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTAyLTI0ICBKYWtvYiBQZXRzb3ZpdHMgIDxqcGV0
c292aXRzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRhcHQgdG8gdGhlIG5ldyBab29tTW9kZSBlbnVtLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUzNDcKKworICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRUZXh0U2l6ZU11bHRpcGxpZXIp
OgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRab29tRmFjdG9yKToKKyAgICAgICAgKiBBcGkvcXdl
YnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKwog
MjAxMC0wMi0yMyAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5n
ZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDc2YjE0NTAuLjY2N2U4ZWUgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDItMjQgIEpha29iIFBldHNvdml0cyAgPGpwZXRzb3ZpdHNA
cmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGFwdCB0byB0aGUgbmV3IFpvb21Nb2RlIGVudW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTM0NworCisgICAgICAgICogV2ViRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViRnJhbWU6OnNldFRleHRTaXplTXVsdGlwbGllcik6CisgICAgICAgICog
V2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpzZXRab29tTXVsdGlwbGllcik6CisgICAg
ICAgIChXZWJWaWV3Ojp6b29tTXVsdGlwbGllcik6CisgICAgICAgIChXZWJWaWV3OjpjYW5NYWtl
VGV4dExhcmdlcik6CisgICAgICAgIChXZWJWaWV3OjptYWtlVGV4dExhcmdlcik6CisgICAgICAg
IChXZWJWaWV3OjpjYW5NYWtlVGV4dFNtYWxsZXIpOgorICAgICAgICAoV2ViVmlldzo6bWFrZVRl
eHRTbWFsbGVyKToKKyAgICAgICAgKFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6
CisKIDIwMTAtMDItMjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyIGFuZCBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRl
eCA4ZTAzNzk0Li44YjdlMGZkIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAor
KysgYi9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApAQCAtMTA3NCw3ICsxMDc0LDcgQEAgdm9pZCBX
ZWJGcmFtZTo6c2V0VGV4dFNpemVNdWx0aXBsaWVyKGZsb2F0IG11bHRpcGxpZXIpCiB7CiAgICAg
RnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7CiAgICAgQVNTRVJUKGNvcmVGcmFtZSk7Ci0g
ICAgY29yZUZyYW1lLT5zZXRab29tRmFjdG9yKG11bHRpcGxpZXIsIHRydWUpOworICAgIGNvcmVG
cmFtZS0+c2V0Wm9vbUZhY3RvcihtdWx0aXBsaWVyLCBab29tVGV4dE9ubHkpOwogfQogCiBIUkVT
VUxUIFdlYkZyYW1lOjppblZpZXdTb3VyY2VNb2RlKEJPT0wqIGZsYWcpCmRpZmYgLS1naXQgYS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCA3ODEz
ODExLi41Mzg5ZDA1IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1dl
YktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTI4NzksOSArMjg3OSw5IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0UGFnZVNpemVNdWx0aXBsaWVyKAogdm9pZCBXZWJWaWV3
OjpzZXRab29tTXVsdGlwbGllcihmbG9hdCBtdWx0aXBsaWVyLCBib29sIGlzVGV4dE9ubHkpCiB7
CiAgICAgbV96b29tTXVsdGlwbGllciA9IG11bHRpcGxpZXI7Ci0gICAgbV9wYWdlLT5zZXR0aW5n
cygpLT5zZXRab29tc1RleHRPbmx5KGlzVGV4dE9ubHkpOworICAgIG1fcGFnZS0+c2V0dGluZ3Mo
KS0+c2V0Wm9vbU1vZGUoaXNUZXh0T25seSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKICAg
ICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobV9tYWluRnJhbWUpKQotICAgICAgICBjb3Jl
RnJhbWUtPnNldFpvb21GYWN0b3IobXVsdGlwbGllciwgaXNUZXh0T25seSk7CisgICAgICAgIGNv
cmVGcmFtZS0+c2V0Wm9vbUZhY3RvcihtdWx0aXBsaWVyLCBpc1RleHRPbmx5ID8gWm9vbVRleHRP
bmx5IDogWm9vbVBhZ2UpOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OnRleHRTaXplTXVsdGlwbGllciggCkBAIC0yOTAwLDcgKzI5MDAsOCBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlZpZXc6OnBhZ2VTaXplTXVsdGlwbGllcigKIAogZmxvYXQgV2ViVmll
dzo6em9vbU11bHRpcGxpZXIoYm9vbCBpc1RleHRPbmx5KQogewotICAgIGlmIChpc1RleHRPbmx5
ICE9IG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbXNUZXh0T25seSgpKQorICAgIFpvb21Nb2RlIHpv
b21Nb2RlID0gaXNUZXh0T25seSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlOworICAgIGlmICh6
b29tTW9kZSAhPSBtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkpCiAgICAgICAgIHJldHVy
biAxLjBmOwogICAgIHJldHVybiBtX3pvb21NdWx0aXBsaWVyOwogfQpAQCAtMzY4MCw3ICszNjgx
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjYW5NYWtlVGV4dExhcmdl
cigKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLywKICAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCiB7Ci0gICAgYm9vbCBjYW5Hcm93TW9yZSA9
IGNhblpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21zVGV4dE9ubHkoKSk7CisgICAgYm9v
bCBjYW5Hcm93TW9yZSA9IGNhblpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkg
PT0gWm9vbVRleHRPbmx5KTsKICAgICAqcmVzdWx0ID0gY2FuR3Jvd01vcmUgPyBUUlVFIDogRkFM
U0U7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zNzAyLDcgKzM3MDMsNyBAQCBib29sIFdlYlZp
ZXc6OmNhblpvb21Jbihib29sIGlzVGV4dE9ubHkpCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlZpZXc6Om1ha2VUZXh0TGFyZ2VyKCAKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biog
LypzZW5kZXIqLykKIHsKLSAgICByZXR1cm4gem9vbUluKG1fcGFnZS0+c2V0dGluZ3MoKS0+em9v
bXNUZXh0T25seSgpKTsKKyAgICByZXR1cm4gem9vbUluKG1fcGFnZS0+c2V0dGluZ3MoKS0+em9v
bU1vZGUoKSA9PSBab29tVGV4dE9ubHkpOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlZpZXc6Onpvb21QYWdlSW4oIApAQCAtMzcyMyw3ICszNzI0LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjYW5NYWtlVGV4dFNtYWxsZXIoCiAgICAgICAgIC8qIFtp
bl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8sCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
Qk9PTCogcmVzdWx0KQogewotICAgIGJvb2wgY2FuU2hyaW5rTW9yZSA9IGNhblpvb21PdXQobV9w
YWdlLT5zZXR0aW5ncygpLT56b29tc1RleHRPbmx5KCkpOworICAgIGJvb2wgY2FuU2hyaW5rTW9y
ZSA9IGNhblpvb21PdXQobV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgpID09IFpvb21UZXh0
T25seSk7CiAgICAgKnJlc3VsdCA9IGNhblNocmlua01vcmUgPyBUUlVFIDogRkFMU0U7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CkBAIC0zNzQ1LDcgKzM3NDYsNyBAQCBib29sIFdlYlZpZXc6OmNhblpv
b21PdXQoYm9vbCBpc1RleHRPbmx5KQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjptYWtlVGV4dFNtYWxsZXIoIAogICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRl
ciovKQogewotICAgIHJldHVybiB6b29tT3V0KG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbXNUZXh0
T25seSgpKTsKKyAgICByZXR1cm4gem9vbU91dChtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21Nb2Rl
KCkgPT0gWm9vbVRleHRPbmx5KTsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3Ojp6b29tUGFnZU91dCggCkBAIC00NTc2LDcgKzQ1NzcsNyBAQCBIUkVTVUxUIFdlYlZpZXc6
Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24p
CiAgICAgaHIgPSBwcmVmZXJlbmNlcy0+em9vbXNUZXh0T25seSgmZW5hYmxlZCk7CiAgICAgaWYg
KEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKLSAgICBzZXR0aW5ncy0+c2V0Wm9vbXNU
ZXh0T25seSghIWVuYWJsZWQpOworICAgIHNldHRpbmdzLT5zZXRab29tTW9kZShlbmFibGVkID8g
Wm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwogCiAgICAgc2V0dGluZ3MtPnNldFNob3dzVVJMc0lu
VG9vbFRpcHMoZmFsc2UpOwogICAgIHNldHRpbmdzLT5zZXRGb3JjZUZUUERpcmVjdG9yeUxpc3Rp
bmdzKHRydWUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93eC9D
aGFuZ2VMb2cKaW5kZXggYWQ4ZGYxMi4uYjA2MzlhNCAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L0No
YW5nZUxvZworKysgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAt
MDItMjQgIEpha29iIFBldHNvdml0cyAgPGpwZXRzb3ZpdHNAcmltLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGFwdCB0byB0aGUgbmV3IFpv
b21Nb2RlIGVudW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNTM0NworCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAod3hXZWJGcmFt
ZTo6SW5jcmVhc2VUZXh0U2l6ZSk6CisgICAgICAgICh3eFdlYkZyYW1lOjpEZWNyZWFzZVRleHRT
aXplKToKKyAgICAgICAgKHd4V2ViRnJhbWU6OlJlc2V0VGV4dFNpemUpOgorCiAyMDEwLTAyLTIz
ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJGcmFtZS5jcHAgYi9X
ZWJLaXQvd3gvV2ViRnJhbWUuY3BwCmluZGV4IDZjZGExOTcuLjJkZjBmNjEgMTAwNjQ0Ci0tLSBh
L1dlYktpdC93eC9XZWJGcmFtZS5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcApAQCAt
MzE2LDcgKzMxNiw3IEBAIHZvaWQgd3hXZWJGcmFtZTo6SW5jcmVhc2VUZXh0U2l6ZSgpCiB7CiAg
ICAgaWYgKENhbkluY3JlYXNlVGV4dFNpemUoKSkgewogICAgICAgICBtX3RleHRNYWduaWZpZXIg
PSBtX3RleHRNYWduaWZpZXIqVGV4dFNpemVNdWx0aXBsaWVyUmF0aW87Ci0gICAgICAgIG1faW1w
bC0+ZnJhbWUtPnNldFpvb21GYWN0b3IobV90ZXh0TWFnbmlmaWVyLCB0cnVlKTsKKyAgICAgICAg
bV9pbXBsLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIsIFdlYkNvcmU6Olpv
b21UZXh0T25seSk7CiAgICAgfQogfQogCkBAIC0zMzMsNyArMzMzLDcgQEAgdm9pZCB3eFdlYkZy
YW1lOjpEZWNyZWFzZVRleHRTaXplKCkKIHsgICAgICAgIAogICAgIGlmIChDYW5EZWNyZWFzZVRl
eHRTaXplKCkpIHsKICAgICAgICAgbV90ZXh0TWFnbmlmaWVyID0gbV90ZXh0TWFnbmlmaWVyL1Rl
eHRTaXplTXVsdGlwbGllclJhdGlvOwotICAgICAgICBtX2ltcGwtPmZyYW1lLT5zZXRab29tRmFj
dG9yKG1fdGV4dE1hZ25pZmllciwgdHJ1ZSk7CisgICAgICAgIG1faW1wbC0+ZnJhbWUtPnNldFpv
b21GYWN0b3IobV90ZXh0TWFnbmlmaWVyLCBXZWJDb3JlOjpab29tVGV4dE9ubHkpOwogICAgIH0K
IH0KIApAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgd3hXZWJGcmFtZTo6UmVzZXRUZXh0U2l6ZSgp
CiB7CiAgICAgbV90ZXh0TWFnbmlmaWVyID0gMS4wOwogICAgIGlmIChtX2ltcGwtPmZyYW1lKQot
ICAgICAgICBtX2ltcGwtPmZyYW1lLT5zZXRab29tRmFjdG9yKG1fdGV4dE1hZ25pZmllciwgdHJ1
ZSk7CisgICAgICAgIG1faW1wbC0+ZnJhbWUtPnNldFpvb21GYWN0b3IobV90ZXh0TWFnbmlmaWVy
LCBXZWJDb3JlOjpab29tVGV4dE9ubHkpOwogfQogCiB2b2lkIHd4V2ViRnJhbWU6Ok1ha2VFZGl0
YWJsZShib29sIGVuYWJsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49498</attachid>
            <date>2010-02-25 09:36:56 -0800</date>
            <delta_ts>2010-03-01 13:07:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug35347.patch</filename>
            <type>text/plain</type>
            <size>26908</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTI0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDItMjUgIEpha29iIFBldHNvdml0cyAgPGpwZXRzb3ZpdHNA
cmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDb252ZXJ0IHRoZSB6b29tIG1vZGUgKHBhZ2UgdnMuIHRleHQtb25seSkgaW50byBhIHByb3Bl
ciBlbnVtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzUzNDcKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6em9v
bU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNob3VsZEFwcGx5VGV4dFpvb20pOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNob3VsZEFwcGx5UGFnZVpvb20pOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWU6OnNldFpvb21GYWN0b3IpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoK
KyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
OjpTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0Wm9vbU1vZGUpOgor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjp6
b29tTW9kZSk6CisgICAgICAgICogcGFnZS9ab29tTW9kZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Oik6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFNjYWxlKToKKwogMjAxMC0wMi0yNSAgSmFt
ZXMgQ2hvaSAgPGpjaG9pNDJAcGhhLmpodS5lZHU+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2
aWQgTGV2aW4uCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDU1MjM5KQorKysgV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTQyOCw2ICsxNDI4LDcgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlXZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaCBcCiAJV2ViQ29yZS9wYWdl
L1hTU0F1ZGl0b3IuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oIFwKKwlXZWJDb3Jl
L3BhZ2UvWm9vbU1vZGUuaCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNl
LmNwcCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmggXAogCVdlYkNv
cmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXApJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDU1MjM5KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE4
OTMsNiArMTg5Myw3IEBACiAgICAgICAgICAgICAncGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaCcsCiAg
ICAgICAgICAgICAncGFnZS9YU1NBdWRpdG9yLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9YU1NB
dWRpdG9yLmgnLAorICAgICAgICAgICAgJ3BhZ2UvWm9vbU1vZGUuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2FuaW1hdGlvbi9BbmltYXRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vYW5pbWF0aW9u
L0FuaW1hdGlvbkxpc3QuY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNTUyMzkpCisrKyBXZWJDb3JlL1dl
YkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgxLDYgKzE0ODEsNyBAQCBIRUFERVJTICs9
IFwKICAgICBwYWdlL1dpbmRvd0ZlYXR1cmVzLmggXAogICAgIHBhZ2UvV29ya2VyTmF2aWdhdG9y
LmggXAogICAgIHBhZ2UvWFNTQXVkaXRvci5oIFwKKyAgICBwYWdlL1pvb21Nb2RlLmggXAogICAg
IHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaCBcCiAgICAgcGxhdGZvcm0vYW5pbWF0aW9u
L0FuaW1hdGlvbkxpc3QuaCBcCiAgICAgcGxhdGZvcm0vQXJlbmEuaCBcCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDU1MjM5KQorKysgV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjEwMjQsNiAr
MjEwMjQsMTAgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcWFNTQXVkaXRvci5oIg0KIAkJ
CQk+DQogCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxa
b29tTW9kZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KIAkJCTxGaWx0ZXINCiAJCQkJTmFtZT0i
d2luIg0KIAkJCQk+DQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDU1MjM5KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ2NTYsNiArNDY1Niw3IEBACiAJCUM1RUJE
RDg0MTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUVCREQ4MTEwNUVEREVDMDA1
NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oICovOyB9OwogCQlDNkQ3NEFENTA5QUEy
ODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIg
LyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi87IH07CiAJCUM2RDc0QUU0MDlBQTI5MEEw
MDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRTMwOUFBMjkwQTAwMEIwQTUyIC8q
IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi87IH07CisJCUNFMTcyRTAxMTEzNkU4Q0Uw
MDYyQTUzMyAvKiBab29tTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UxNzJFMDAxMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggKi87IH07
CiAJCUNFNEMwMEU0MTBGNkY3QkEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNEMwMEUzMTBG
NkY3QkEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcCAqLzsgfTsKIAkJQ0U0QzAw
RTYxMEY2RjdDMTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNEMwMEU1MTBGNkY3QzEwMENBMzhG
NSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmggKi87IH07CiAJCUNFNTRGRDM4MTAxNkQ5QTYwMDhC
NDRDOCAvKiBTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1NEZEMzcxMDE2RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNv
dXJjZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTk5MzksNiArOTk0MCw3IEBACiAJCUM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAv
KiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2
ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZENzRBRTMwOUFBMjkwQTAwMEIw
QTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDRTE3MkUwMDExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWm9vbU1vZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0QzAwRTMxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1Nj
cmlwdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRN
TE5vU2NyaXB0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNEMw
MEU1MTBGNkY3QzEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxOb1NjcmlwdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1NEZEMzcxMDE2RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJj
ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFNvdXJj
ZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTU0Niw2ICsxMTU0
OCw3IEBACiAJCQkJRTEyNzFBNTEwRUVFQ0QxQzAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5p
ZGwgKi8sCiAJCQkJOTdERDREODQwRkRGNEQ2RDAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwICov
LAogCQkJCTk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggKi8sCisJCQkJ
Q0UxNzJFMDAxMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IHBhZ2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTg1NTUsNiArMTg1NTgs
NyBAQAogCQkJCTY1RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU5NjIyOTdBMTEzM0VGRTIwMERDNENCQiAvKiBHZW9sb2NhdGlvblBv
c2l0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBCQzJDNzc4MTEzNEE4RkMwMDBCMkY2
MSAvKiBDYW52YXNTdXJmYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRTE3MkUwMTExMzZFOENF
MDA2MkE1MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lv
biA1NTIzOSkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2
MSwyOCArNjYxLDI0IEBAIGZsb2F0IEZyYW1lOjp6b29tRmFjdG9yKCkgY29uc3QKICAgICByZXR1
cm4gbV96b29tRmFjdG9yOwogfQogCi1ib29sIEZyYW1lOjppc1pvb21GYWN0b3JUZXh0T25seSgp
IGNvbnN0Citab29tTW9kZSBGcmFtZTo6em9vbU1vZGUoKSBjb25zdAogewotICAgIHJldHVybiBt
X3BhZ2UtPnNldHRpbmdzKCktPnpvb21zVGV4dE9ubHkoKTsKKyAgICByZXR1cm4gbV9wYWdlLT5z
ZXR0aW5ncygpLT56b29tTW9kZSgpOwogfQogCiBib29sIEZyYW1lOjpzaG91bGRBcHBseVRleHRa
b29tKCkgY29uc3QKIHsKLSAgICBpZiAobV96b29tRmFjdG9yID09IDEuMGYgfHwgIWlzWm9vbUZh
Y3RvclRleHRPbmx5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gbV96b29tRmFjdG9yICE9IDEuMGYgJiYgem9vbU1vZGUoKSA9PSBab29tVGV4
dE9ubHk7CiB9CiAKIGJvb2wgRnJhbWU6OnNob3VsZEFwcGx5UGFnZVpvb20oKSBjb25zdAogewot
ICAgIGlmIChtX3pvb21GYWN0b3IgPT0gMS4wZiB8fCBpc1pvb21GYWN0b3JUZXh0T25seSgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIG1fem9v
bUZhY3RvciAhPSAxLjBmICYmIHpvb21Nb2RlKCkgPT0gWm9vbVBhZ2U7CiB9CiAKLXZvaWQgRnJh
bWU6OnNldFpvb21GYWN0b3IoZmxvYXQgcGVyY2VudCwgYm9vbCBpc1RleHRPbmx5KQordm9pZCBG
cmFtZTo6c2V0Wm9vbUZhY3RvcihmbG9hdCBwZXJjZW50LCBab29tTW9kZSBtb2RlKQogewotICAg
IGlmIChtX3pvb21GYWN0b3IgPT0gcGVyY2VudCAmJiBpc1pvb21GYWN0b3JUZXh0T25seSgpID09
IGlzVGV4dE9ubHkpCisgICAgaWYgKG1fem9vbUZhY3RvciA9PSBwZXJjZW50ICYmIHpvb21Nb2Rl
KCkgPT0gbW9kZSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKFNWRykKQEAgLTY5Niw3
ICs2OTIsNyBAQCB2b2lkIEZyYW1lOjpzZXRab29tRmFjdG9yKGZsb2F0IHBlcmNlbnQsCiAgICAg
fQogI2VuZGlmCiAKLSAgICBpZiAoIWlzVGV4dE9ubHkpIHsKKyAgICBpZiAobW9kZSA9PSBab29t
UGFnZSkgewogICAgICAgICAvLyBVcGRhdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiB3aGVuIGRvaW5n
IGEgZnVsbCBwYWdlIHpvb20sIHNvIHRoZSBjb250ZW50IHN0YXlzIGluIHJlbGF0aXZlbHkgdGhl
IHNhbWUgcG9zaXRpb24uCiAgICAgICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uID0gdmlldygp
LT5zY3JvbGxQb3NpdGlvbigpOwogICAgICAgICBmbG9hdCBwZXJjZW50RGlmZmVyZW5jZSA9IChw
ZXJjZW50IC8gbV96b29tRmFjdG9yKTsKQEAgLTcwNCwxMiArNzAwLDEyIEBAIHZvaWQgRnJhbWU6
OnNldFpvb21GYWN0b3IoZmxvYXQgcGVyY2VudCwKICAgICB9CiAKICAgICBtX3pvb21GYWN0b3Ig
PSBwZXJjZW50OwotICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0Wm9vbXNUZXh0T25seShpc1Rl
eHRPbmx5KTsKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFpvb21Nb2RlKG1vZGUpOwogCiAg
ICAgbV9kb2MtPnJlY2FsY1N0eWxlKE5vZGU6OkZvcmNlKTsKIAogICAgIGZvciAoRnJhbWUqIGNo
aWxkID0gdHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkt
Pm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGNoaWxkLT5zZXRab29tRmFjdG9yKG1fem9vbUZhY3Rv
ciwgaXNUZXh0T25seSk7CisgICAgICAgIGNoaWxkLT5zZXRab29tRmFjdG9yKG1fem9vbUZhY3Rv
ciwgbW9kZSk7CiAKICAgICBpZiAobV9kb2MtPnJlbmRlcmVyKCkgJiYgbV9kb2MtPnJlbmRlcmVy
KCktPm5lZWRzTGF5b3V0KCkgJiYgdmlldygpLT5kaWRGaXJzdExheW91dCgpKQogICAgICAgICB2
aWV3KCktPmxheW91dCgpOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDU1MjM5KQorKysgV2ViQ29yZS9wYWdl
L0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJTY3Jv
bGxCZWhhdmlvci5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJVc2VyU2NyaXB0VHlwZXMuaCIKKyNpbmNsdWRlICJab29tTW9kZS5oIgogCiAjaWYgUExBVEZP
Uk0oV0lOKQogI2luY2x1ZGUgIkZyYW1lV2luLmgiCkBAIC0xNjksOSArMTcwLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIC8vID09PSB0byBiZSBtb3ZlZCBpbnRvIEZyYW1lVmlldwogCiAg
ICAgcHVibGljOgotICAgICAgICB2b2lkIHNldFpvb21GYWN0b3IoZmxvYXQgc2NhbGUsIGJvb2wg
aXNUZXh0T25seSk7CisgICAgICAgIHZvaWQgc2V0Wm9vbUZhY3RvcihmbG9hdCBzY2FsZSwgWm9v
bU1vZGUpOwogICAgICAgICBmbG9hdCB6b29tRmFjdG9yKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wg
aXNab29tRmFjdG9yVGV4dE9ubHkoKSBjb25zdDsKKyAgICAgICAgWm9vbU1vZGUgem9vbU1vZGUo
KSBjb25zdDsKICAgICAgICAgYm9vbCBzaG91bGRBcHBseVRleHRab29tKCkgY29uc3Q7CiAgICAg
ICAgIGJvb2wgc2hvdWxkQXBwbHlQYWdlWm9vbSgpIGNvbnN0OwogICAgICAgICBmbG9hdCBwYWdl
Wm9vbUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIHNob3VsZEFwcGx5UGFnZVpvb20oKSA/IHpvb21G
YWN0b3IoKSA6IDEuMGY7IH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkocmV2aXNpb24gNTUyMzkpCisrKyBX
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBA
IFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9tYXhpbXVtRGVjb2RlZElt
YWdlU2l6ZShudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkKICAgICAsIG1fbG9jYWxTdG9y
YWdlUXVvdGEoNSAqIDEwMjQgKiAxMDI0KSAgLy8gU3VnZ2VzdGVkIGJ5IHRoZSBIVE1MNSBzcGVj
LgogICAgICwgbV9wbHVnaW5BbGxvd2VkUnVuVGltZShudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQorICAgICwgbV96b29tTW9kZShab29tUGFnZSkKICAgICAsIG1faXNKYXZhRW5hYmxl
ZChmYWxzZSkKICAgICAsIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGZhbHNlKQogICAgICwg
bV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKQpAQCAtMTAyLDcgKzEwMyw2IEBAIFNldHRp
bmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9pbkFwcGxpY2F0aW9uQ2hyb21lTW9k
ZShmYWxzZSkKICAgICAsIG1fb2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKGZhbHNl
KQogICAgICwgbV9zaG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnMoZmFsc2UpCi0gICAgLCBtX3pv
b21zVGV4dE9ubHkoZmFsc2UpCiAgICAgLCBtX2VuZm9yY2VDU1NNSU1FVHlwZUluU3RyaWN0TW9k
ZSh0cnVlKQogICAgICwgbV91c2VzRW5jb2RpbmdEZXRlY3RvcihmYWxzZSkKICAgICAsIG1fYWxs
b3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MoZmFsc2UpCkBAIC00NjcsMTIgKzQ2NywxMiBAQCB2b2lk
IFNldHRpbmdzOjpzZXRTaG91bGRQYWludEN1c3RvbVNjcm9sCiAgICAgbV9zaG91bGRQYWludEN1
c3RvbVNjcm9sbGJhcnMgPSBzaG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnM7CiB9CiAKLXZvaWQg
U2V0dGluZ3M6OnNldFpvb21zVGV4dE9ubHkoYm9vbCB6b29tc1RleHRPbmx5KQordm9pZCBTZXR0
aW5nczo6c2V0Wm9vbU1vZGUoWm9vbU1vZGUgbW9kZSkKIHsKLSAgICBpZiAoem9vbXNUZXh0T25s
eSA9PSBtX3pvb21zVGV4dE9ubHkpCisgICAgaWYgKG1vZGUgPT0gbV96b29tTW9kZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIG1fem9vbXNUZXh0T25seSA9IHpvb21zVGV4dE9ubHk7Cisg
ICAgbV96b29tTW9kZSA9IG1vZGU7CiAgICAgc2V0TmVlZHNSZWFwcGx5U3R5bGVzSW5BbGxGcmFt
ZXMobV9wYWdlKTsKIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlzaW9uIDU1MjM5KQorKysgV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJBdG9taWNTdHJpbmcuaCIKICNpbmNsdWRlICJGb250UmVuZGVyaW5nTW9kZS5oIgogI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJab29tTW9kZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTIzNCw4ICsyMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgc2V0U2hvdWxkUGFpbnRDdXN0b21TY3JvbGxiYXJzKGJvb2wpOwogICAgICAgICBib29sIHNo
b3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUGFpbnRD
dXN0b21TY3JvbGxiYXJzOyB9CiAKLSAgICAgICAgdm9pZCBzZXRab29tc1RleHRPbmx5KGJvb2wp
OwotICAgICAgICBib29sIHpvb21zVGV4dE9ubHkoKSBjb25zdCB7IHJldHVybiBtX3pvb21zVGV4
dE9ubHk7IH0KKyAgICAgICAgdm9pZCBzZXRab29tTW9kZShab29tTW9kZSk7CisgICAgICAgIFpv
b21Nb2RlIHpvb21Nb2RlKCkgY29uc3QgeyByZXR1cm4gbV96b29tTW9kZTsgfQogICAgICAgICAK
ICAgICAgICAgdm9pZCBzZXRFbmZvcmNlQ1NTTUlNRVR5cGVJblN0cmljdE1vZGUoYm9vbCk7CiAg
ICAgICAgIGJvb2wgZW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKCkgeyByZXR1cm4gbV9l
bmZvcmNlQ1NTTUlNRVR5cGVJblN0cmljdE1vZGU7IH0KQEAgLTMwOSw2ICszMTAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHNpemVfdCBtX21heGltdW1EZWNvZGVkSW1hZ2VTaXpl
OwogICAgICAgICB1bnNpZ25lZCBtX2xvY2FsU3RvcmFnZVF1b3RhOwogICAgICAgICB1bnNpZ25l
ZCBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lOworICAgICAgICBab29tTW9kZSBtX3pvb21Nb2RlOwog
ICAgICAgICBib29sIG1faXNKYXZhRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9sb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHkgOiAxOwogICAgICAgICBib29sIG1fcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCA6IDE7CkBAIC0zNDcsNyArMzQ5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBib29sIG1faW5BcHBsaWNhdGlvbkNocm9tZU1vZGUgOiAxOwogICAgICAgICBib29sIG1fb2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX3Nob3Vs
ZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyA6IDE7Ci0gICAgICAgIGJvb2wgbV96b29tc1RleHRPbmx5
IDogMTsKICAgICAgICAgYm9vbCBtX2VuZm9yY2VDU1NNSU1FVHlwZUluU3RyaWN0TW9kZSA6IDE7
CiAgICAgICAgIGJvb2wgbV91c2VzRW5jb2RpbmdEZXRlY3RvciA6IDE7CiAgICAgICAgIGJvb2wg
bV9hbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyA6IDE7CkluZGV4OiBXZWJDb3JlL3BhZ2UvWm9v
bU1vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvWm9vbU1vZGUuaAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvcGFnZS9ab29tTW9kZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFJlc2VhcmNoIGluIE1vdGlvbiBMdGQuIGh0
dHA6Ly93d3cucmltLmNvbS8KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBab29tTW9kZV9oCisjZGVmaW5lIFpvb21Nb2RlX2gK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFpvb21Nb2RlIHsKKyAgICBab29tUGFnZSwK
KyAgICBab29tVGV4dE9ubHkKK307CisKK30KKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmNwcAkocmV2aXNpb24gNTUyMzkpCisrKyBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0
Q3VycmVudFNjYWxlKGZsb2EKICAgICAgICAgLy8gQ2FsbGluZyBzZXRDdXJyZW50U2NhbGUoKSBv
biB0aGUgb3V0ZXJtb3N0IDxzdmc+IGVsZW1lbnQgaW4gYSBzdGFuZGFsb25lIFNWRyBkb2N1bWVu
dAogICAgICAgICAvLyBpcyBhbGxvd2VkIHRvIGNoYW5nZSB0aGUgcGFnZSB6b29tIGZhY3Rvciwg
aW5mbHVlbmNpbmcgdGhlIGRvY3VtZW50IHNpemUsIHNjcm9sbGJhcnMgZXRjLgogICAgICAgICBp
ZiAocGFyZW50Tm9kZSgpID09IGRvY3VtZW50KCkpCi0gICAgICAgICAgICBmcmFtZS0+c2V0Wm9v
bUZhY3RvcihzY2FsZSwgZmFsc2UpOworICAgICAgICAgICAgZnJhbWUtPnNldFpvb21GYWN0b3Io
c2NhbGUsIFpvb21QYWdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCShyZXZpc2lvbiA1NTI0MCkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wMi0yNSAgSmFrb2IgUGV0c292aXRzICA8
anBldHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkYXB0IHRvIHRoZSBuZXcgWm9vbU1vZGUgZW51bS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MzQ3CisKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Wm9v
bUxldmVsKToKKwogMjAxMC0wMi0yNCAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDU1MjM5KQorKysgV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMDIsNyArMTMwMiw3IEBAIGlu
dCBXZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVsKGJvb2wgdGV4dE8KICAgICBGcmFtZSogZnJhbWUg
PSBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCk7CiAgICAgaWYgKHpvb21GYWN0b3IgIT0gZnJhbWUt
Pnpvb21GYWN0b3IoKSkgewogICAgICAgICBtX3pvb21MZXZlbCA9IHpvb21MZXZlbDsKLSAgICAg
ICAgZnJhbWUtPnNldFpvb21GYWN0b3Ioem9vbUZhY3RvciwgdGV4dE9ubHkpOworICAgICAgICBm
cmFtZS0+c2V0Wm9vbUZhY3Rvcih6b29tRmFjdG9yLCB0ZXh0T25seSA/IFpvb21UZXh0T25seSA6
IFpvb21QYWdlKTsKICAgICB9CiAgICAgcmV0dXJuIG1fem9vbUxldmVsOwogfQpJbmRleDogV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDU1MjQwKQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxMC0wMi0yNSAgSmFrb2IgUGV0c292aXRzICA8anBldHNvdml0c0By
aW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkYXB0IHRvIHRoZSBuZXcgWm9vbU1vZGUgZW51bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MzQ3CisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2Vidmlldy5jcHA6CisgICAgICAgIChETkRDb250ZW50c1JlcXVlc3Q6OndlYmtpdF93ZWJfdmll
d19hcHBseV96b29tX2xldmVsKToKKwogMjAxMC0wMi0yNCAgS3J6eXN6dG9mIEtvdGxlbmdhIDxw
b2Nla0B1c2Vycy5zZi5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3Jvbmhh
IFNpbHZhLgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDU1
MjM5KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2NzksNyArMzY3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19hcHBs
eV96b29tX2wKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHBy
aXYgPSB3ZWJWaWV3LT5wcml2OwotICAgIGZyYW1lLT5zZXRab29tRmFjdG9yKHpvb21MZXZlbCwg
IXByaXYtPnpvb21GdWxsQ29udGVudCk7CisgICAgZnJhbWUtPnNldFpvb21GYWN0b3Ioem9vbUxl
dmVsLCBwcml2LT56b29tRnVsbENvbnRlbnQgPyBab29tUGFnZSA6IFpvb21UZXh0T25seSk7CiB9
CiAKIC8qKgpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU1MjQwKQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wMi0yNSAgSmFrb2IgUGV0c292
aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkYXB0IHRvIHRoZSBuZXcgWm9vbU1vZGUgZW51bS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MzQ3CisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2Vz
Q2hhbmdlZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0Wm9vbU11bHRp
cGxpZXI6aXNUZXh0T25seTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfcmVhbFpvb21NdWx0aXBs
aWVySXNUZXh0T25seV0pOgorCiAyMDEwLTAyLTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpJbmRleDogV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0JKHJldmlzaW9uIDU1MjM5KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMzksNyArMTMzOSw3IEBAIHN0YXRpYyBib29sIGZh
c3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgKICAgICBzZXR0aW5ncy0+c2V0V2ViQXJjaGl2ZURl
YnVnTW9kZUVuYWJsZWQoW3ByZWZlcmVuY2VzIHdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVkXSk7
CiAgICAgc2V0dGluZ3MtPnNldExvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoW3ByZWZl
cmVuY2VzIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+
c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKFtwcmVmZXJlbmNlcyBvZmZsaW5l
V2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWRdKTsKLSAgICBzZXR0aW5ncy0+c2V0Wm9vbXNUZXh0
T25seShbcHJlZmVyZW5jZXMgem9vbXNUZXh0T25seV0pOworICAgIHNldHRpbmdzLT5zZXRab29t
TW9kZShbcHJlZmVyZW5jZXMgem9vbXNUZXh0T25seV0gPyBab29tVGV4dE9ubHkgOiBab29tUGFn
ZSk7CiAgICAgc2V0dGluZ3MtPnNldFhTU0F1ZGl0b3JFbmFibGVkKFtwcmVmZXJlbmNlcyBpc1hT
U0F1ZGl0b3JFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldEVuZm9yY2VDU1NNSU1FVHlwZUlu
U3RyaWN0TW9kZSghV0tBcHBWZXJzaW9uQ2hlY2tMZXNzVGhhbihAImNvbS5hcHBsZS5pV2ViIiwg
LTEsIDIuMSkpOwogICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxl
ZChjb3JlVmlkZW9IYXM3MjI4ODM2Rml4KCkgJiYgW3ByZWZlcmVuY2VzIGFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkXSk7CkBAIC0zMTE1LDcgKzMxMTUsNyBAQCBzdGF0aWMgYm9vbCBuZWVk
c1dlYlZpZXdJbml0VGhyZWFkV29ya2FyCiAgICAgX3ByaXZhdGUtPnpvb21NdWx0aXBsaWVyID0g
bTsKICAgICBBU1NFUlQoX3ByaXZhdGUtPnBhZ2UpOwogICAgIGlmIChfcHJpdmF0ZS0+cGFnZSkK
LSAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCktPnNldFpvb21zVGV4dE9ubHkoaXNU
ZXh0T25seSk7CisgICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLT5zZXRab29tTW9k
ZShpc1RleHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwogICAgIAogICAgIC8vIEZJ
WE1FOiBpdCB3b3VsZCBiZSBuaWNlIHRvIHJld29yayB0aGlzIGNvZGUgc28gdGhhdCBfcHJpdmF0
ZS0+em9vbU11bHRpcGxpZXIgZG9lc24ndCBleGlzdCBhbmQgY2FsbGVycwogICAgIC8vIGFsbCBh
Y2Nlc3MgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuCkBAIC0zMTQxLDcgKzMxNDEsNyBAQCBz
dGF0aWMgYm9vbCBuZWVkc1dlYlZpZXdJbml0VGhyZWFkV29ya2FyCiAgICAgaWYgKCFfcHJpdmF0
ZS0+cGFnZSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIAotICAgIHJldHVybiBfcHJpdmF0ZS0+
cGFnZS0+c2V0dGluZ3MoKS0+em9vbXNUZXh0T25seSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+
cGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKSA9PSBab29tVGV4dE9ubHk7CiB9CiAKICNkZWZp
bmUgTWluaW11bVpvb21NdWx0aXBsaWVyICAgICAgIDAuNWYKSW5kZXg6IFdlYktpdC9xdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNTUyNDAp
CisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDItMjUgIEpha29iIFBldHNvdml0cyAgPGpwZXRzb3ZpdHNAcmltLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGFwdCB0byB0aGUg
bmV3IFpvb21Nb2RlIGVudW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNTM0NworCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAg
IChRV2ViRnJhbWU6OnNldFRleHRTaXplTXVsdGlwbGllcik6CisgICAgICAgIChRV2ViRnJhbWU6
OnNldFpvb21GYWN0b3IpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAg
ICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorCiAyMDEwLTAyLTI1ICBKYXJra28gU2Fr
a2luZW4gIDxqYXJra28uc2Fra2luZW5AdGlldG8uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2ViZnJh
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAkocmV2aXNp
b24gNTUyMzkpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNDUsNyArMTI0NSw3IEBAIHZvaWQgUVdlYkZyYW1lOjpyZW5kZXIoUVBhaW50ZXIqIHBh
aW50ZXIKICovCiB2b2lkIFFXZWJGcmFtZTo6c2V0VGV4dFNpemVNdWx0aXBsaWVyKHFyZWFsIGZh
Y3RvcikKIHsKLSAgICBkLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihmYWN0b3IsIC8qaXNUZXh0T25s
eSovdHJ1ZSk7CisgICAgZC0+ZnJhbWUtPnNldFpvb21GYWN0b3IoZmFjdG9yLCBab29tVGV4dE9u
bHkpOwogfQogCiAvKiEKQEAgLTEyNjQsNyArMTI2NCw3IEBAIHFyZWFsIFFXZWJGcmFtZTo6dGV4
dFNpemVNdWx0aXBsaWVyKCkgY28KIAogdm9pZCBRV2ViRnJhbWU6OnNldFpvb21GYWN0b3IocXJl
YWwgZmFjdG9yKQogewotICAgIGQtPmZyYW1lLT5zZXRab29tRmFjdG9yKGZhY3RvciwgZC0+ZnJh
bWUtPmlzWm9vbUZhY3RvclRleHRPbmx5KCkpOworICAgIGQtPmZyYW1lLT5zZXRab29tRmFjdG9y
KGZhY3RvciwgZC0+ZnJhbWUtPnpvb21Nb2RlKCkpOwogfQogCiBxcmVhbCBRV2ViRnJhbWU6Onpv
b21GYWN0b3IoKSBjb25zdApJbmRleDogV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAkocmV2aXNpb24gNTUy
MzkpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwMCw3ICsyMDAsNyBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKIAogICAg
ICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpab29tVGV4dE9ubHks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFs
dWUoUVdlYlNldHRpbmdzOjpab29tVGV4dE9ubHkpKTsKLSAgICAgICAgc2V0dGluZ3MtPnNldFpv
b21zVGV4dE9ubHkodmFsdWUpOworICAgICAgICBzZXR0aW5ncy0+c2V0Wm9vbU1vZGUodmFsdWUg
PyBXZWJDb3JlOjpab29tVGV4dE9ubHkgOiBXZWJDb3JlOjpab29tUGFnZSk7CiAKICAgICAgICAg
dmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6UHJpbnRFbGVtZW50QmFja2dy
b3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0
cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OlByaW50RWxlbWVudEJhY2tncm91bmRzKSk7Cklu
ZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5n
ZUxvZwkocmV2aXNpb24gNTUyNDApCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEwLTAyLTI1ICBKYWtvYiBQZXRzb3ZpdHMgIDxqcGV0
c292aXRzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRhcHQgdG8gdGhlIG5ldyBab29tTW9kZSBlbnVtLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUzNDcKKworICAgICAgICAqIFdlYkZy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpzZXRUZXh0U2l6ZU11bHRpcGxpZXIpOgorICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2V0Wm9vbU11bHRpcGxpZXIp
OgorICAgICAgICAoV2ViVmlldzo6em9vbU11bHRpcGxpZXIpOgorICAgICAgICAoV2ViVmlldzo6
Y2FuTWFrZVRleHRMYXJnZXIpOgorICAgICAgICAoV2ViVmlldzo6bWFrZVRleHRMYXJnZXIpOgor
ICAgICAgICAoV2ViVmlldzo6Y2FuTWFrZVRleHRTbWFsbGVyKToKKyAgICAgICAgKFdlYlZpZXc6
Om1ha2VUZXh0U21hbGxlcik6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0No
YW5nZWQpOgorCiAyMDEwLTAyLTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlciBhbmQgUGF2ZWwgRmVsZG1hbi4KSW5k
ZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2Vi
RnJhbWUuY3BwCShyZXZpc2lvbiA1NTIzOSkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDc0LDcgKzEwNzQsNyBAQCB2b2lkIFdlYkZyYW1lOjpzZXRUZXh0
U2l6ZU11bHRpcGxpZXIoZmxvCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7
CiAgICAgQVNTRVJUKGNvcmVGcmFtZSk7Ci0gICAgY29yZUZyYW1lLT5zZXRab29tRmFjdG9yKG11
bHRpcGxpZXIsIHRydWUpOworICAgIGNvcmVGcmFtZS0+c2V0Wm9vbUZhY3RvcihtdWx0aXBsaWVy
LCBab29tVGV4dE9ubHkpOwogfQogCiBIUkVTVUxUIFdlYkZyYW1lOjppblZpZXdTb3VyY2VNb2Rl
KEJPT0wqIGZsYWcpCkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDU1MjM5KQorKysgV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3OSw5ICsyODc5LDkgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRQYQogdm9pZCBXZWJWaWV3OjpzZXRab29tTXVs
dGlwbGllcihmbG9hdCBtdWx0aXBsaWVyLCBib29sIGlzVGV4dE9ubHkpCiB7CiAgICAgbV96b29t
TXVsdGlwbGllciA9IG11bHRpcGxpZXI7Ci0gICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRab29t
c1RleHRPbmx5KGlzVGV4dE9ubHkpOworICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0Wm9vbU1v
ZGUoaXNUZXh0T25seSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKICAgICBpZiAoRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUobV9tYWluRnJhbWUpKQotICAgICAgICBjb3JlRnJhbWUtPnNldFpv
b21GYWN0b3IobXVsdGlwbGllciwgaXNUZXh0T25seSk7CisgICAgICAgIGNvcmVGcmFtZS0+c2V0
Wm9vbUZhY3RvcihtdWx0aXBsaWVyLCBpc1RleHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9vbVBh
Z2UpOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnRleHRTaXplTXVs
dGlwbGllciggCkBAIC0yOTAwLDcgKzI5MDAsOCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlZpZXc6OnBhZ2VTCiAKIGZsb2F0IFdlYlZpZXc6Onpvb21NdWx0aXBsaWVyKGJvb2wgaXNU
ZXh0T25seSkKIHsKLSAgICBpZiAoaXNUZXh0T25seSAhPSBtX3BhZ2UtPnNldHRpbmdzKCktPnpv
b21zVGV4dE9ubHkoKSkKKyAgICBab29tTW9kZSB6b29tTW9kZSA9IGlzVGV4dE9ubHkgPyBab29t
VGV4dE9ubHkgOiBab29tUGFnZTsKKyAgICBpZiAoem9vbU1vZGUgIT0gbV9wYWdlLT5zZXR0aW5n
cygpLT56b29tTW9kZSgpKQogICAgICAgICByZXR1cm4gMS4wZjsKICAgICByZXR1cm4gbV96b29t
TXVsdGlwbGllcjsKIH0KQEAgLTM2ODAsNyArMzY4MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6Y2FuTWEKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5k
ZXIqLywKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCiB7Ci0gICAg
Ym9vbCBjYW5Hcm93TW9yZSA9IGNhblpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21zVGV4
dE9ubHkoKSk7CisgICAgYm9vbCBjYW5Hcm93TW9yZSA9IGNhblpvb21JbihtX3BhZ2UtPnNldHRp
bmdzKCktPnpvb21Nb2RlKCkgPT0gWm9vbVRleHRPbmx5KTsKICAgICAqcmVzdWx0ID0gY2FuR3Jv
d01vcmUgPyBUUlVFIDogRkFMU0U7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zNzAyLDcgKzM3
MDMsNyBAQCBib29sIFdlYlZpZXc6OmNhblpvb21Jbihib29sIGlzVGV4dE9ubHkpCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Om1ha2VUZXh0TGFyZ2VyKCAKICAgICAgICAgLyog
W2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKLSAgICByZXR1cm4gem9vbUluKG1fcGFn
ZS0+c2V0dGluZ3MoKS0+em9vbXNUZXh0T25seSgpKTsKKyAgICByZXR1cm4gem9vbUluKG1fcGFn
ZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKSA9PSBab29tVGV4dE9ubHkpOwogfQogCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Onpvb21QYWdlSW4oIApAQCAtMzcyMyw3ICszNzI0
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjYW5NYQogICAgICAgICAv
KiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovLAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJPT0wqIHJlc3VsdCkKIHsKLSAgICBib29sIGNhblNocmlua01vcmUgPSBjYW5ab29tT3V0
KG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbXNUZXh0T25seSgpKTsKKyAgICBib29sIGNhblNocmlu
a01vcmUgPSBjYW5ab29tT3V0KG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKSA9PSBab29t
VGV4dE9ubHkpOwogICAgICpyZXN1bHQgPSBjYW5TaHJpbmtNb3JlID8gVFJVRSA6IEZBTFNFOwog
ICAgIHJldHVybiBTX09LOwogfQpAQCAtMzc0NSw3ICszNzQ2LDcgQEAgYm9vbCBXZWJWaWV3Ojpj
YW5ab29tT3V0KGJvb2wgaXNUZXh0T25seQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjptYWtlVGV4dFNtYWxsZXIoIAogICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNl
bmRlciovKQogewotICAgIHJldHVybiB6b29tT3V0KG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbXNU
ZXh0T25seSgpKTsKKyAgICByZXR1cm4gem9vbU91dChtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21N
b2RlKCkgPT0gWm9vbVRleHRPbmx5KTsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJWaWV3Ojp6b29tUGFnZU91dCggCkBAIC00NTc2LDcgKzQ1NzcsNyBAQCBIUkVTVUxUIFdlYlZp
ZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlCiAgICAgaHIgPSBwcmVmZXJlbmNlcy0+em9vbXNU
ZXh0T25seSgmZW5hYmxlZCk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBo
cjsKLSAgICBzZXR0aW5ncy0+c2V0Wm9vbXNUZXh0T25seSghIWVuYWJsZWQpOworICAgIHNldHRp
bmdzLT5zZXRab29tTW9kZShlbmFibGVkID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwogCiAg
ICAgc2V0dGluZ3MtPnNldFNob3dzVVJMc0luVG9vbFRpcHMoZmFsc2UpOwogICAgIHNldHRpbmdz
LT5zZXRGb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzKHRydWUpOwpJbmRleDogV2ViS2l0L3d4L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NTI0
MCkKKysrIFdlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxMC0wMi0yNSAgSmFrb2IgUGV0c292aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkYXB0IHRvIHRo
ZSBuZXcgWm9vbU1vZGUgZW51bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM1MzQ3CisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICh3
eFdlYkZyYW1lOjpJbmNyZWFzZVRleHRTaXplKToKKyAgICAgICAgKHd4V2ViRnJhbWU6OkRlY3Jl
YXNlVGV4dFNpemUpOgorICAgICAgICAod3hXZWJGcmFtZTo6UmVzZXRUZXh0U2l6ZSk6CisKIDIw
MTAtMDItMjMgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiA1NTIzOSkKKysr
IFdlYktpdC93eC9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNiw3ICszMTYsNyBA
QCB2b2lkIHd4V2ViRnJhbWU6OkluY3JlYXNlVGV4dFNpemUoKQogewogICAgIGlmIChDYW5JbmNy
ZWFzZVRleHRTaXplKCkpIHsKICAgICAgICAgbV90ZXh0TWFnbmlmaWVyID0gbV90ZXh0TWFnbmlm
aWVyKlRleHRTaXplTXVsdGlwbGllclJhdGlvOwotICAgICAgICBtX2ltcGwtPmZyYW1lLT5zZXRa
b29tRmFjdG9yKG1fdGV4dE1hZ25pZmllciwgdHJ1ZSk7CisgICAgICAgIG1faW1wbC0+ZnJhbWUt
PnNldFpvb21GYWN0b3IobV90ZXh0TWFnbmlmaWVyLCBXZWJDb3JlOjpab29tVGV4dE9ubHkpOwog
ICAgIH0KIH0KIApAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgd3hXZWJGcmFtZTo6RGVjcmVhc2VU
ZXh0U2l6ZSgpCiB7ICAgICAgICAKICAgICBpZiAoQ2FuRGVjcmVhc2VUZXh0U2l6ZSgpKSB7CiAg
ICAgICAgIG1fdGV4dE1hZ25pZmllciA9IG1fdGV4dE1hZ25pZmllci9UZXh0U2l6ZU11bHRpcGxp
ZXJSYXRpbzsKLSAgICAgICAgbV9pbXBsLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihtX3RleHRNYWdu
aWZpZXIsIHRydWUpOworICAgICAgICBtX2ltcGwtPmZyYW1lLT5zZXRab29tRmFjdG9yKG1fdGV4
dE1hZ25pZmllciwgV2ViQ29yZTo6Wm9vbVRleHRPbmx5KTsKICAgICB9CiB9CiAKQEAgLTM0MSw3
ICszNDEsNyBAQCB2b2lkIHd4V2ViRnJhbWU6OlJlc2V0VGV4dFNpemUoKQogewogICAgIG1fdGV4
dE1hZ25pZmllciA9IDEuMDsKICAgICBpZiAobV9pbXBsLT5mcmFtZSkKLSAgICAgICAgbV9pbXBs
LT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIsIHRydWUpOworICAgICAgICBt
X2ltcGwtPmZyYW1lLT5zZXRab29tRmFjdG9yKG1fdGV4dE1hZ25pZmllciwgV2ViQ29yZTo6Wm9v
bVRleHRPbmx5KTsKIH0KIAogdm9pZCB3eFdlYkZyYW1lOjpNYWtlRWRpdGFibGUoYm9vbCBlbmFi
bGUpCg==
</data>
<flag name="review"
          id="32386"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="32387"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49746</attachid>
            <date>2010-03-01 13:07:28 -0800</date>
            <delta_ts>2010-03-01 16:56:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug35185_mac_fixes.patch</filename>
            <type>text/plain</type>
            <size>28604</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTM3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMDMtMDEgIEpha29iIFBldHNvdml0cyAgPGpwZXRzb3ZpdHNA
cmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDb252ZXJ0IHRoZSB6b29tIG1vZGUgKHBhZ2UgdnMuIHRleHQtb25seSkgaW50byBhIHByb3Bl
ciBlbnVtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzUzNDcKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuYmFz
ZS5leHA6IFN1YnN0aXR1dGVkIHN5bWJvbHMgX19aTjdXZWJDb3JlNUZyYW1lMTNzZXRab29tRmFj
dG9yRWZOU184Wm9vbU1vZGVFCisgICAgICAgIGFuZCBfX1pON1dlYkNvcmU4U2V0dGluZ3MxMXNl
dFpvb21Nb2RlRU5TXzhab29tTW9kZUUgZm9yIF9fWk43V2ViQ29yZTVGcmFtZTEzc2V0Wm9vbUZh
Y3RvckVmYgorICAgICAgICBhbmQgX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRab29tc1RleHRP
bmx5RWIsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBh
Z2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Onpvb21Nb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpzaG91bGRBcHBseVRleHRab29tKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lOjpzaG91bGRBcHBseVBhZ2Vab29tKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
OjpzZXRab29tRmFjdG9yKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFn
ZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldFpvb21Nb2RlKToKKyAgICAgICAgKiBwYWdl
L1NldHRpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6em9vbU1vZGUpOgorICAg
ICAgICAqIHBhZ2UvWm9vbU1vZGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAg
ICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0Vs
ZW1lbnQ6OnNldEN1cnJlbnRTY2FsZSk6CisKIDIwMTAtMDMtMDEgIEpha29iIFBldHNvdml0cyAg
PGpwZXRzb3ZpdHNAcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUu
CkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05V
bWFrZWZpbGUuYW0JKHJldmlzaW9uIDU1MzcxKQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQko
d29ya2luZyBjb3B5KQpAQCAtMTQzMCw2ICsxNDMwLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlXZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaCBcCiAJV2ViQ29yZS9wYWdlL1hTU0F1ZGl0
b3IuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oIFwKKwlXZWJDb3JlL3BhZ2UvWm9v
bU1vZGUuaCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBcCiAJ
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmggXAogCVdlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3Jl
LmJhc2UuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkocmV2aXNp
b24gNTUzNzEpCisrKyBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxNSw3ICs1MTUsNyBAQCBfX1pON1dlYkNvcmU1Q2FjaGUxM3NldENhcGFjaXRpZXNFampqCiBf
X1pON1dlYkNvcmU1RnJhbWUxMGZpbmRTdHJpbmdFUktOU182U3RyaW5nRWJiYmIKIF9fWk43V2Vi
Q29yZTVGcmFtZTExc2hvdWxkQ2xvc2VFdgogX19aTjdXZWJDb3JlNUZyYW1lMTNyZWFwcGx5U3R5
bGVzRXYKLV9fWk43V2ViQ29yZTVGcmFtZTEzc2V0Wm9vbUZhY3RvckVmYgorX19aTjdXZWJDb3Jl
NUZyYW1lMTNzZXRab29tRmFjdG9yRWZOU184Wm9vbU1vZGVFCiBfX1pON1dlYkNvcmU1RnJhbWUx
NGZyYW1lRm9yV2lkZ2V0RVBLTlNfNldpZGdldEUKIF9fWk43V2ViQ29yZTVGcmFtZTE1cmV2ZWFs
U2VsZWN0aW9uRVJLTlNfMTVTY3JvbGxBbGlnbm1lbnRFYgogX19aTjdXZWJDb3JlNUZyYW1lMTdz
ZXRJc0Rpc2Nvbm5lY3RlZEViCkBAIC02MjQsMTAgKzYyNCwxMCBAQCBfX1pON1dlYkNvcmU4RG9j
dW1lbnQ0aGVhZEV2CiBfX1pON1dlYkNvcmU4Rm9ybURhdGFEMUV2CiBfX1pON1dlYkNvcmU4SW50
UG9pbnRDMUVSSzhfTlNQb2ludAogX19aTjdXZWJDb3JlOFBvc2l0aW9uQzFFTjNXVEYxMFBhc3NS
ZWZQdHJJTlNfNE5vZGVFRUVpCitfX1pON1dlYkNvcmU4U2V0dGluZ3MxMXNldFpvb21Nb2RlRU5T
Xzhab29tTW9kZUUKIF9fWk43V2ViQ29yZThTZXR0aW5nczE0c2V0SmF2YUVuYWJsZWRFYgogX19a
TjdXZWJDb3JlOFNldHRpbmdzMTVzZXRXZWJHTEVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRp
bmdzMTZzZXRVc2VzUGFnZUNhY2hlRWIKLV9fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0Wm9vbXNU
ZXh0T25seUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxN3NldFBsdWdpbnNFbmFibGVkRWIKIF9f
Wk43V2ViQ29yZThTZXR0aW5nczE4c2V0RE9NUGFzdGVBbGxvd2VkRWIKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczE4c2V0RGVmYXVsdEZvbnRTaXplRWkKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA1NTM3MSkKKysr
IFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xODkzLDYgKzE4OTMsNyBA
QAogICAgICAgICAgICAgJ3BhZ2UvV29ya2VyTmF2aWdhdG9yLmgnLAogICAgICAgICAgICAgJ3Bh
Z2UvWFNTQXVkaXRvci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvWFNTQXVkaXRvci5oJywKKyAg
ICAgICAgICAgICdwYWdlL1pvb21Nb2RlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2FuaW1h
dGlvbi9BbmltYXRpb24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hbmltYXRpb24vQW5p
bWF0aW9uLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0
LmNwcCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS5wcm8JKHJldmlzaW9uIDU1MzcxKQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29y
a2luZyBjb3B5KQpAQCAtMTQ4Myw2ICsxNDgzLDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGFnZS9X
aW5kb3dGZWF0dXJlcy5oIFwKICAgICBwYWdlL1dvcmtlck5hdmlnYXRvci5oIFwKICAgICBwYWdl
L1hTU0F1ZGl0b3IuaCBcCisgICAgcGFnZS9ab29tTW9kZS5oIFwKICAgICBwbGF0Zm9ybS9hbmlt
YXRpb24vQW5pbWF0aW9uLmggXAogICAgIHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0
LmggXAogICAgIHBsYXRmb3JtL0FyZW5hLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCShyZXZpc2lvbiA1NTM3MSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTIxMDI0LDYgKzIxMDI0LDEwIEBACiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXFhTU0F1ZGl0b3IuaCINCiAJCQkJPg0KIAkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcWm9vbU1vZGUuaCINCisJ
CQkJPg0KKwkJCTwvRmlsZT4NCiAJCQk8RmlsdGVyDQogCQkJCU5hbWU9IndpbiINCiAJCQkJPg0K
SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA1NTM3MSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC00NjU2LDYgKzQ2NTYsNyBAQAogCQlDNUVCREQ4NDEwNUVEREVDMDA1
NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0b3Jh
Z2VFdmVudERpc3BhdGNoZXIuaCAqLzsgfTsKIAkJQzZENzRBRDUwOUFBMjgyRTAwMEIwQTUyIC8q
IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVj
dGlvbkxpc3RMZXZlbC5oICovOyB9OwogCQlDNkQ3NEFFNDA5QUEyOTBBMDAwQjBBNTIgLyogTW9k
aWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rp
b25MaXN0TGV2ZWwuY3BwICovOyB9OworCQlDRTE3MkUwMTExMzZFOENFMDA2MkE1MzMgLyogWm9v
bU1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MTcyRTAwMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFNEMwMEU0MTBGNkY3QkEwMENBMzhGNSAv
KiBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFNEMwMEUzMTBGNkY3QkEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRF
bGVtZW50LmNwcCAqLzsgfTsKIAkJQ0U0QzAwRTYxMEY2RjdDMTAwQ0EzOEY1IC8qIEhUTUxOb1Nj
cmlwdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFNEMwMEU1MTBGNkY3QzEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmggKi87
IH07CiAJCUNFNTRGRDM4MTAxNkQ5QTYwMDhCNDRDOCAvKiBTY3JpcHRTb3VyY2VQcm92aWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1NEZEMzcx
MDE2RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk5NDcsNiArOTk0OCw3IEBACiAJ
CUM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8q
IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzZENzRBRTMwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZl
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RpZnlTZWxlY3Rp
b25MaXN0TGV2ZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTE3MkUwMDEx
MzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gWm9vbU1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0QzAwRTMx
MEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE5vU2NyaXB0RWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNEMwMEU1MTBGNkY3QzEwMENBMzhGNSAvKiBIVE1MTm9T
Y3JpcHRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxOb1Nj
cmlwdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1NEZEMzcxMDE2
RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNjcmlwdFNvdXJjZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMTU2OCw2ICsxMTU3MCw3IEBACiAJCQkJRTEyNzFBNTEwRUVFQ0QxQzAw
RjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5pZGwgKi8sCiAJCQkJOTdERDREODQwRkRGNEQ2RDAw
RUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwICovLAogCQkJCTk3REQ0RDg1MEZERjRENkUwMEVDRjlB
NCAvKiBYU1NBdWRpdG9yLmggKi8sCisJCQkJQ0UxNzJFMDAxMTM2RThDRTAwNjJBNTMzIC8qIFpv
b21Nb2RlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHBhZ2U7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMTg1ODMsNiArMTg1ODYsNyBAQAogCQkJCTY1RTBFOTQ0MTEzM0M4OUYwMEI0
Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5NjIyOTdBMTEzM0VG
RTIwMERDNENCQiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBCQzJDNzc4MTEzNEE4RkMwMDBCMkY2MSAvKiBDYW52YXNTdXJmYWNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDRTE3MkUwMTExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiA1NTM3MSkKKysrIFdlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2MSwyOCArNjYxLDI0IEBAIGZsb2F0IEZyYW1lOjp6
b29tRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV96b29tRmFjdG9yOwogfQogCi1ib29sIEZy
YW1lOjppc1pvb21GYWN0b3JUZXh0T25seSgpIGNvbnN0Citab29tTW9kZSBGcmFtZTo6em9vbU1v
ZGUoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21zVGV4dE9u
bHkoKTsKKyAgICByZXR1cm4gbV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgpOwogfQogCiBi
b29sIEZyYW1lOjpzaG91bGRBcHBseVRleHRab29tKCkgY29uc3QKIHsKLSAgICBpZiAobV96b29t
RmFjdG9yID09IDEuMGYgfHwgIWlzWm9vbUZhY3RvclRleHRPbmx5KCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbV96b29tRmFjdG9yICE9IDEu
MGYgJiYgem9vbU1vZGUoKSA9PSBab29tVGV4dE9ubHk7CiB9CiAKIGJvb2wgRnJhbWU6OnNob3Vs
ZEFwcGx5UGFnZVpvb20oKSBjb25zdAogewotICAgIGlmIChtX3pvb21GYWN0b3IgPT0gMS4wZiB8
fCBpc1pvb21GYWN0b3JUZXh0T25seSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIG1fem9vbUZhY3RvciAhPSAxLjBmICYmIHpvb21Nb2RlKCkg
PT0gWm9vbVBhZ2U7CiB9CiAKLXZvaWQgRnJhbWU6OnNldFpvb21GYWN0b3IoZmxvYXQgcGVyY2Vu
dCwgYm9vbCBpc1RleHRPbmx5KQordm9pZCBGcmFtZTo6c2V0Wm9vbUZhY3RvcihmbG9hdCBwZXJj
ZW50LCBab29tTW9kZSBtb2RlKQogewotICAgIGlmIChtX3pvb21GYWN0b3IgPT0gcGVyY2VudCAm
JiBpc1pvb21GYWN0b3JUZXh0T25seSgpID09IGlzVGV4dE9ubHkpCisgICAgaWYgKG1fem9vbUZh
Y3RvciA9PSBwZXJjZW50ICYmIHpvb21Nb2RlKCkgPT0gbW9kZSkKICAgICAgICAgcmV0dXJuOwog
CiAjaWYgRU5BQkxFKFNWRykKQEAgLTY5Niw3ICs2OTIsNyBAQCB2b2lkIEZyYW1lOjpzZXRab29t
RmFjdG9yKGZsb2F0IHBlcmNlbnQsCiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoIWlzVGV4dE9u
bHkpIHsKKyAgICBpZiAobW9kZSA9PSBab29tUGFnZSkgewogICAgICAgICAvLyBVcGRhdGUgdGhl
IHNjcm9sbCBwb3NpdGlvbiB3aGVuIGRvaW5nIGEgZnVsbCBwYWdlIHpvb20sIHNvIHRoZSBjb250
ZW50IHN0YXlzIGluIHJlbGF0aXZlbHkgdGhlIHNhbWUgcG9zaXRpb24uCiAgICAgICAgIEludFBv
aW50IHNjcm9sbFBvc2l0aW9uID0gdmlldygpLT5zY3JvbGxQb3NpdGlvbigpOwogICAgICAgICBm
bG9hdCBwZXJjZW50RGlmZmVyZW5jZSA9IChwZXJjZW50IC8gbV96b29tRmFjdG9yKTsKQEAgLTcw
NCwxMiArNzAwLDEyIEBAIHZvaWQgRnJhbWU6OnNldFpvb21GYWN0b3IoZmxvYXQgcGVyY2VudCwK
ICAgICB9CiAKICAgICBtX3pvb21GYWN0b3IgPSBwZXJjZW50OwotICAgIG1fcGFnZS0+c2V0dGlu
Z3MoKS0+c2V0Wm9vbXNUZXh0T25seShpc1RleHRPbmx5KTsKKyAgICBtX3BhZ2UtPnNldHRpbmdz
KCktPnNldFpvb21Nb2RlKG1vZGUpOwogCiAgICAgbV9kb2MtPnJlY2FsY1N0eWxlKE5vZGU6OkZv
cmNlKTsKIAogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gdHJlZSgpLT5maXJzdENoaWxkKCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGNoaWxk
LT5zZXRab29tRmFjdG9yKG1fem9vbUZhY3RvciwgaXNUZXh0T25seSk7CisgICAgICAgIGNoaWxk
LT5zZXRab29tRmFjdG9yKG1fem9vbUZhY3RvciwgbW9kZSk7CiAKICAgICBpZiAobV9kb2MtPnJl
bmRlcmVyKCkgJiYgbV9kb2MtPnJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkgJiYgdmlldygpLT5k
aWRGaXJzdExheW91dCgpKQogICAgICAgICB2aWV3KCktPmxheW91dCgpOwpJbmRleDogV2ViQ29y
ZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlz
aW9uIDU1MzcxKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJTY3JvbGxCZWhhdmlvci5oIgogI2luY2x1ZGUgIlNlbGVj
dGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKKyNpbmNsdWRl
ICJab29tTW9kZS5oIgogCiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgIkZyYW1lV2luLmgi
CkBAIC0xNjksOSArMTcwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vID09PSB0byBi
ZSBtb3ZlZCBpbnRvIEZyYW1lVmlldwogCiAgICAgcHVibGljOgotICAgICAgICB2b2lkIHNldFpv
b21GYWN0b3IoZmxvYXQgc2NhbGUsIGJvb2wgaXNUZXh0T25seSk7CisgICAgICAgIHZvaWQgc2V0
Wm9vbUZhY3RvcihmbG9hdCBzY2FsZSwgWm9vbU1vZGUpOwogICAgICAgICBmbG9hdCB6b29tRmFj
dG9yKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNab29tRmFjdG9yVGV4dE9ubHkoKSBjb25zdDsK
KyAgICAgICAgWm9vbU1vZGUgem9vbU1vZGUoKSBjb25zdDsKICAgICAgICAgYm9vbCBzaG91bGRB
cHBseVRleHRab29tKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgc2hvdWxkQXBwbHlQYWdlWm9vbSgp
IGNvbnN0OwogICAgICAgICBmbG9hdCBwYWdlWm9vbUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIHNo
b3VsZEFwcGx5UGFnZVpvb20oKSA/IHpvb21GYWN0b3IoKSA6IDEuMGY7IH0KSW5kZXg6IFdlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAkocmV2aXNpb24gNTUzNzEpCisrKyBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdl
KQogICAgICwgbV9tYXhpbXVtRGVjb2RlZEltYWdlU2l6ZShudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSkKICAgICAsIG1fbG9jYWxTdG9yYWdlUXVvdGEoNSAqIDEwMjQgKiAxMDI0KSAgLy8g
U3VnZ2VzdGVkIGJ5IHRoZSBIVE1MNSBzcGVjLgogICAgICwgbV9wbHVnaW5BbGxvd2VkUnVuVGlt
ZShudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQorICAgICwgbV96b29tTW9kZShab29t
UGFnZSkKICAgICAsIG1faXNKYXZhRW5hYmxlZChmYWxzZSkKICAgICAsIG1fbG9hZHNJbWFnZXNB
dXRvbWF0aWNhbGx5KGZhbHNlKQogICAgICwgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNl
KQpAQCAtMTAyLDcgKzEwMyw2IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAg
ICwgbV9pbkFwcGxpY2F0aW9uQ2hyb21lTW9kZShmYWxzZSkKICAgICAsIG1fb2ZmbGluZVdlYkFw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkKGZhbHNlKQogICAgICwgbV9zaG91bGRQYWludEN1c3RvbVNj
cm9sbGJhcnMoZmFsc2UpCi0gICAgLCBtX3pvb21zVGV4dE9ubHkoZmFsc2UpCiAgICAgLCBtX2Vu
Zm9yY2VDU1NNSU1FVHlwZUluU3RyaWN0TW9kZSh0cnVlKQogICAgICwgbV91c2VzRW5jb2RpbmdE
ZXRlY3RvcihmYWxzZSkKICAgICAsIG1fYWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MoZmFsc2Up
CkBAIC00NjcsMTIgKzQ2NywxMiBAQCB2b2lkIFNldHRpbmdzOjpzZXRTaG91bGRQYWludEN1c3Rv
bVNjcm9sCiAgICAgbV9zaG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnMgPSBzaG91bGRQYWludEN1
c3RvbVNjcm9sbGJhcnM7CiB9CiAKLXZvaWQgU2V0dGluZ3M6OnNldFpvb21zVGV4dE9ubHkoYm9v
bCB6b29tc1RleHRPbmx5KQordm9pZCBTZXR0aW5nczo6c2V0Wm9vbU1vZGUoWm9vbU1vZGUgbW9k
ZSkKIHsKLSAgICBpZiAoem9vbXNUZXh0T25seSA9PSBtX3pvb21zVGV4dE9ubHkpCisgICAgaWYg
KG1vZGUgPT0gbV96b29tTW9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fem9vbXNU
ZXh0T25seSA9IHpvb21zVGV4dE9ubHk7CisgICAgbV96b29tTW9kZSA9IG1vZGU7CiAgICAgc2V0
TmVlZHNSZWFwcGx5U3R5bGVzSW5BbGxGcmFtZXMobV9wYWdlKTsKIH0KIApJbmRleDogV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJ
KHJldmlzaW9uIDU1MzcxKQorKysgV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKICNpbmNsdWRl
ICJGb250UmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJab29t
TW9kZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIzNCw4ICsyMzUsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0U2hvdWxkUGFpbnRDdXN0b21TY3JvbGxi
YXJzKGJvb2wpOwogICAgICAgICBib29sIHNob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycygpIGNv
bnN0IHsgcmV0dXJuIG1fc2hvdWxkUGFpbnRDdXN0b21TY3JvbGxiYXJzOyB9CiAKLSAgICAgICAg
dm9pZCBzZXRab29tc1RleHRPbmx5KGJvb2wpOwotICAgICAgICBib29sIHpvb21zVGV4dE9ubHko
KSBjb25zdCB7IHJldHVybiBtX3pvb21zVGV4dE9ubHk7IH0KKyAgICAgICAgdm9pZCBzZXRab29t
TW9kZShab29tTW9kZSk7CisgICAgICAgIFpvb21Nb2RlIHpvb21Nb2RlKCkgY29uc3QgeyByZXR1
cm4gbV96b29tTW9kZTsgfQogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRFbmZvcmNlQ1NTTUlN
RVR5cGVJblN0cmljdE1vZGUoYm9vbCk7CiAgICAgICAgIGJvb2wgZW5mb3JjZUNTU01JTUVUeXBl
SW5TdHJpY3RNb2RlKCkgeyByZXR1cm4gbV9lbmZvcmNlQ1NTTUlNRVR5cGVJblN0cmljdE1vZGU7
IH0KQEAgLTMwOSw2ICszMTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHNpemVf
dCBtX21heGltdW1EZWNvZGVkSW1hZ2VTaXplOwogICAgICAgICB1bnNpZ25lZCBtX2xvY2FsU3Rv
cmFnZVF1b3RhOwogICAgICAgICB1bnNpZ25lZCBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lOworICAg
ICAgICBab29tTW9kZSBtX3pvb21Nb2RlOwogICAgICAgICBib29sIG1faXNKYXZhRW5hYmxlZCA6
IDE7CiAgICAgICAgIGJvb2wgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgOiAxOwogICAgICAg
ICBib29sIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA6IDE7CkBAIC0zNDcsNyArMzQ5LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1faW5BcHBsaWNhdGlvbkNocm9tZU1v
ZGUgOiAxOwogICAgICAgICBib29sIG1fb2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVk
IDogMTsKICAgICAgICAgYm9vbCBtX3Nob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyA6IDE7Ci0g
ICAgICAgIGJvb2wgbV96b29tc1RleHRPbmx5IDogMTsKICAgICAgICAgYm9vbCBtX2VuZm9yY2VD
U1NNSU1FVHlwZUluU3RyaWN0TW9kZSA6IDE7CiAgICAgICAgIGJvb2wgbV91c2VzRW5jb2RpbmdE
ZXRlY3RvciA6IDE7CiAgICAgICAgIGJvb2wgbV9hbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyA6
IDE7CkluZGV4OiBXZWJDb3JlL3BhZ2UvWm9vbU1vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvWm9vbU1vZGUuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9ab29tTW9kZS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IFJlc2VhcmNoIGluIE1vdGlvbiBMdGQuIGh0dHA6Ly93d3cucmltLmNvbS8KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBab29t
TW9kZV9oCisjZGVmaW5lIFpvb21Nb2RlX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVt
IFpvb21Nb2RlIHsKKyAgICBab29tUGFnZSwKKyAgICBab29tVGV4dE9ubHkKK307CisKK30KKwor
I2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gNTUzNzEpCisrKyBXZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw3
IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFNjYWxlKGZsb2EKICAgICAgICAgLy8g
Q2FsbGluZyBzZXRDdXJyZW50U2NhbGUoKSBvbiB0aGUgb3V0ZXJtb3N0IDxzdmc+IGVsZW1lbnQg
aW4gYSBzdGFuZGFsb25lIFNWRyBkb2N1bWVudAogICAgICAgICAvLyBpcyBhbGxvd2VkIHRvIGNo
YW5nZSB0aGUgcGFnZSB6b29tIGZhY3RvciwgaW5mbHVlbmNpbmcgdGhlIGRvY3VtZW50IHNpemUs
IHNjcm9sbGJhcnMgZXRjLgogICAgICAgICBpZiAocGFyZW50Tm9kZSgpID09IGRvY3VtZW50KCkp
Ci0gICAgICAgICAgICBmcmFtZS0+c2V0Wm9vbUZhY3RvcihzY2FsZSwgZmFsc2UpOworICAgICAg
ICAgICAgZnJhbWUtPnNldFpvb21GYWN0b3Ioc2NhbGUsIFpvb21QYWdlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NTM3MykKKysrIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAx
MC0wMy0wMSAgSmFrb2IgUGV0c292aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkYXB0IHRvIHRoZSBuZXcg
Wm9vbU1vZGUgZW51bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM1MzQ3CisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVsKToKKwogMjAxMC0wMi0yNyAgUGF2ZWwg
RmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBU
aW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2
aXNpb24gNTUzNzEpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTMwMiw3ICsxMzAyLDcgQEAgaW50IFdlYlZpZXdJbXBsOjpzZXRab29t
TGV2ZWwoYm9vbCB0ZXh0TwogICAgIEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZUltcGwoKS0+ZnJh
bWUoKTsKICAgICBpZiAoem9vbUZhY3RvciAhPSBmcmFtZS0+em9vbUZhY3RvcigpKSB7CiAgICAg
ICAgIG1fem9vbUxldmVsID0gem9vbUxldmVsOwotICAgICAgICBmcmFtZS0+c2V0Wm9vbUZhY3Rv
cih6b29tRmFjdG9yLCB0ZXh0T25seSk7CisgICAgICAgIGZyYW1lLT5zZXRab29tRmFjdG9yKHpv
b21GYWN0b3IsIHRleHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwogICAgIH0KICAg
ICByZXR1cm4gbV96b29tTGV2ZWw7CiB9CkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNTUzNzMpCisrKyBXZWJL
aXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTAz
LTAxICBKYWtvYiBQZXRzb3ZpdHMgIDxqcGV0c292aXRzQHJpbS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRhcHQgdG8gdGhlIG5ldyBab29t
TW9kZSBlbnVtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzUzNDcKKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAg
KERORENvbnRlbnRzUmVxdWVzdDo6d2Via2l0X3dlYl92aWV3X2FwcGx5X3pvb21fbGV2ZWwpOgor
CiAyMDA5LTEyLTA0ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29s
bGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiA1NTM3MSkKKysrIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzExLDcgKzM3
MTEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYXBwbHlfem9vbV9sCiAgICAgICAg
IHJldHVybjsKIAogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJp
djsKLSAgICBmcmFtZS0+c2V0Wm9vbUZhY3Rvcih6b29tTGV2ZWwsICFwcml2LT56b29tRnVsbENv
bnRlbnQpOworICAgIGZyYW1lLT5zZXRab29tRmFjdG9yKHpvb21MZXZlbCwgcHJpdi0+em9vbUZ1
bGxDb250ZW50ID8gWm9vbVBhZ2UgOiBab29tVGV4dE9ubHkpOwogfQogCiAvKioKSW5kZXg6IFdl
YktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA1NTM3MykKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMtMDEgIEpha29iIFBldHNvdml0cyAgPGpwZXRzb3ZpdHNA
cmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGFwdCB0byB0aGUgbmV3IFpvb21Nb2RlIGVudW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTM0NworCisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRp
b246XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldFpvb21NdWx0aXBsaWVyOmlzVGV4dE9ubHk6
XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3JlYWxab29tTXVsdGlwbGllcklzVGV4dE9ubHldKToK
KwogMjAxMC0wMi0yNyAgSmluZyBKaW4gIDxqamluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNp
b24gNTUzNzEpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTMzOSw3ICsxMzM5LDcgQEAgc3RhdGljIGJvb2wgZmFzdERvY3VtZW50VGVhcmRvd25F
bmFibGVkKAogICAgIHNldHRpbmdzLT5zZXRXZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZChbcHJl
ZmVyZW5jZXMgd2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0
TG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgbG9jYWxGaWxlQ29u
dGVudFNuaWZmaW5nRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRPZmZsaW5lV2ViQXBwbGlj
YXRpb25DYWNoZUVuYWJsZWQoW3ByZWZlcmVuY2VzIG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZF0pOwotICAgIHNldHRpbmdzLT5zZXRab29tc1RleHRPbmx5KFtwcmVmZXJlbmNlcyB6
b29tc1RleHRPbmx5XSk7CisgICAgc2V0dGluZ3MtPnNldFpvb21Nb2RlKFtwcmVmZXJlbmNlcyB6
b29tc1RleHRPbmx5XSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKICAgICBzZXR0aW5ncy0+
c2V0WFNTQXVkaXRvckVuYWJsZWQoW3ByZWZlcmVuY2VzIGlzWFNTQXVkaXRvckVuYWJsZWRdKTsK
ICAgICBzZXR0aW5ncy0+c2V0RW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKCFXS0FwcFZl
cnNpb25DaGVja0xlc3NUaGFuKEAiY29tLmFwcGxlLmlXZWIiLCAtMSwgMi4xKSk7CiAgICAgc2V0
dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGNvcmVWaWRlb0hhczcyMjg4
MzZGaXgoKSAmJiBbcHJlZmVyZW5jZXMgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRdKTsK
QEAgLTMxMTUsMTMgKzMxMTUsMTMgQEAgc3RhdGljIGJvb2wgbmVlZHNXZWJWaWV3SW5pdFRocmVh
ZFdvcmthcgogICAgIF9wcml2YXRlLT56b29tTXVsdGlwbGllciA9IG07CiAgICAgQVNTRVJUKF9w
cml2YXRlLT5wYWdlKTsKICAgICBpZiAoX3ByaXZhdGUtPnBhZ2UpCi0gICAgICAgIF9wcml2YXRl
LT5wYWdlLT5zZXR0aW5ncygpLT5zZXRab29tc1RleHRPbmx5KGlzVGV4dE9ubHkpOworICAgICAg
ICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS0+c2V0Wm9vbU1vZGUoaXNUZXh0T25seSA/IFpv
b21UZXh0T25seSA6IFpvb21QYWdlKTsKICAgICAKICAgICAvLyBGSVhNRTogaXQgd291bGQgYmUg
bmljZSB0byByZXdvcmsgdGhpcyBjb2RlIHNvIHRoYXQgX3ByaXZhdGUtPnpvb21NdWx0aXBsaWVy
IGRvZXNuJ3QgZXhpc3QgYW5kIGNhbGxlcnMKICAgICAvLyBhbGwgYWNjZXNzIF9wcml2YXRlLT5w
YWdlLT5zZXR0aW5ncygpLgogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBbc2VsZiBfbWFpbkNvcmVG
cmFtZV07CiAgICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgY29yZUZyYW1lLT5zZXRab29tRmFj
dG9yKG0sIGlzVGV4dE9ubHkpOworICAgICAgICBjb3JlRnJhbWUtPnNldFpvb21GYWN0b3IobSwg
aXNUZXh0T25seSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKIH0KIAogLSAoZmxvYXQpX3pv
b21NdWx0aXBsaWVyOihCT09MKWlzVGV4dE9ubHkKQEAgLTMxNDEsNyArMzE0MSw3IEBAIHN0YXRp
YyBib29sIG5lZWRzV2ViVmlld0luaXRUaHJlYWRXb3JrYXIKICAgICBpZiAoIV9wcml2YXRlLT5w
YWdlKQogICAgICAgICByZXR1cm4gTk87CiAgICAgCi0gICAgcmV0dXJuIF9wcml2YXRlLT5wYWdl
LT5zZXR0aW5ncygpLT56b29tc1RleHRPbmx5KCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5wYWdl
LT5zZXR0aW5ncygpLT56b29tTW9kZSgpID09IFpvb21UZXh0T25seTsKIH0KIAogI2RlZmluZSBN
aW5pbXVtWm9vbU11bHRpcGxpZXIgICAgICAgMC41ZgpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NTM3MykKKysr
IFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
MC0wMy0wMSAgSmFrb2IgUGV0c292aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkYXB0IHRvIHRoZSBuZXcg
Wm9vbU1vZGUgZW51bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM1MzQ3CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFX
ZWJGcmFtZTo6c2V0VGV4dFNpemVNdWx0aXBsaWVyKToKKyAgICAgICAgKFFXZWJGcmFtZTo6c2V0
Wm9vbUZhY3Rvcik6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChR
V2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisKIDIwMTAtMDItMjYgIERpZWdvIEdvbnphbGV6
ICA8ZGllZ28uZ29uemFsZXpAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHJldmlzaW9uIDU1MzcxKQorKysg
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQ1LDcgKzEy
NDUsNyBAQCB2b2lkIFFXZWJGcmFtZTo6cmVuZGVyKFFQYWludGVyKiBwYWludGVyCiAqLwogdm9p
ZCBRV2ViRnJhbWU6OnNldFRleHRTaXplTXVsdGlwbGllcihxcmVhbCBmYWN0b3IpCiB7Ci0gICAg
ZC0+ZnJhbWUtPnNldFpvb21GYWN0b3IoZmFjdG9yLCAvKmlzVGV4dE9ubHkqL3RydWUpOworICAg
IGQtPmZyYW1lLT5zZXRab29tRmFjdG9yKGZhY3RvciwgWm9vbVRleHRPbmx5KTsKIH0KIAogLyoh
CkBAIC0xMjY0LDcgKzEyNjQsNyBAQCBxcmVhbCBRV2ViRnJhbWU6OnRleHRTaXplTXVsdGlwbGll
cigpIGNvCiAKIHZvaWQgUVdlYkZyYW1lOjpzZXRab29tRmFjdG9yKHFyZWFsIGZhY3RvcikKIHsK
LSAgICBkLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihmYWN0b3IsIGQtPmZyYW1lLT5pc1pvb21GYWN0
b3JUZXh0T25seSgpKTsKKyAgICBkLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihmYWN0b3IsIGQtPmZy
YW1lLT56b29tTW9kZSgpKTsKIH0KIAogcXJlYWwgUVdlYkZyYW1lOjp6b29tRmFjdG9yKCkgY29u
c3QKSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHJldmlzaW9uIDU1MzcxKQorKysgV2ViS2l0
L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNyArMjAxLDcg
QEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSgpCiAKICAgICAgICAgdmFsdWUgPSBh
dHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Wm9vbVRleHRPbmx5LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5n
czo6Wm9vbVRleHRPbmx5KSk7Ci0gICAgICAgIHNldHRpbmdzLT5zZXRab29tc1RleHRPbmx5KHZh
bHVlKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldFpvb21Nb2RlKHZhbHVlID8gV2ViQ29yZTo6Wm9v
bVRleHRPbmx5IDogV2ViQ29yZTo6Wm9vbVBhZ2UpOwogCiAgICAgICAgIHZhbHVlID0gYXR0cmli
dXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OlByaW50RWxlbWVudEJhY2tncm91bmRzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUo
UVdlYlNldHRpbmdzOjpQcmludEVsZW1lbnRCYWNrZ3JvdW5kcykpOwpJbmRleDogV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDU1MzczKQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMSBAQAorMjAxMC0wMy0wMSAgSmFrb2IgUGV0c292aXRzICA8anBldHNvdml0c0ByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkYXB0
IHRvIHRoZSBuZXcgWm9vbU1vZGUgZW51bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM1MzQ3CisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJGcmFtZTo6c2V0VGV4dFNpemVNdWx0aXBsaWVyKToKKyAgICAgICAgKiBXZWJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnNldFpvb21NdWx0aXBsaWVyKToKKyAgICAgICAgKFdl
YlZpZXc6Onpvb21NdWx0aXBsaWVyKToKKyAgICAgICAgKFdlYlZpZXc6OmNhbk1ha2VUZXh0TGFy
Z2VyKToKKyAgICAgICAgKFdlYlZpZXc6Om1ha2VUZXh0TGFyZ2VyKToKKyAgICAgICAgKFdlYlZp
ZXc6OmNhbk1ha2VUZXh0U21hbGxlcik6CisgICAgICAgIChXZWJWaWV3OjptYWtlVGV4dFNtYWxs
ZXIpOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKwogMjAx
MC0wMi0yMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgVGltIEhhdGNoZXIgYW5kIFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJLaXQvd2lu
L1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2
aXNpb24gNTUzNzEpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA3NCw3ICsxMDc0LDcgQEAgdm9pZCBXZWJGcmFtZTo6c2V0VGV4dFNpemVNdWx0aXBsaWVy
KGZsbwogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwogICAgIEFTU0VSVChj
b3JlRnJhbWUpOwotICAgIGNvcmVGcmFtZS0+c2V0Wm9vbUZhY3RvcihtdWx0aXBsaWVyLCB0cnVl
KTsKKyAgICBjb3JlRnJhbWUtPnNldFpvb21GYWN0b3IobXVsdGlwbGllciwgWm9vbVRleHRPbmx5
KTsKIH0KIAogSFJFU1VMVCBXZWJGcmFtZTo6aW5WaWV3U291cmNlTW9kZShCT09MKiBmbGFnKQpJ
bmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dl
YlZpZXcuY3BwCShyZXZpc2lvbiA1NTM3MSkKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4NzksOSArMjg3OSw5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVmlldzo6c2V0UGEKIHZvaWQgV2ViVmlldzo6c2V0Wm9vbU11bHRpcGxpZXIoZmxvYXQg
bXVsdGlwbGllciwgYm9vbCBpc1RleHRPbmx5KQogewogICAgIG1fem9vbU11bHRpcGxpZXIgPSBt
dWx0aXBsaWVyOwotICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0Wm9vbXNUZXh0T25seShpc1Rl
eHRPbmx5KTsKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFpvb21Nb2RlKGlzVGV4dE9ubHkg
PyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKG1fbWFpbkZyYW1lKSkKLSAgICAgICAgY29yZUZyYW1lLT5zZXRab29tRmFjdG9yKG11bHRp
cGxpZXIsIGlzVGV4dE9ubHkpOworICAgICAgICBjb3JlRnJhbWUtPnNldFpvb21GYWN0b3IobXVs
dGlwbGllciwgaXNUZXh0T25seSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKIH0KIAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojp0ZXh0U2l6ZU11bHRpcGxpZXIoIApAQCAt
MjkwMCw3ICsyOTAwLDggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpwYWdl
UwogCiBmbG9hdCBXZWJWaWV3Ojp6b29tTXVsdGlwbGllcihib29sIGlzVGV4dE9ubHkpCiB7Ci0g
ICAgaWYgKGlzVGV4dE9ubHkgIT0gbV9wYWdlLT5zZXR0aW5ncygpLT56b29tc1RleHRPbmx5KCkp
CisgICAgWm9vbU1vZGUgem9vbU1vZGUgPSBpc1RleHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9v
bVBhZ2U7CisgICAgaWYgKHpvb21Nb2RlICE9IG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUo
KSkKICAgICAgICAgcmV0dXJuIDEuMGY7CiAgICAgcmV0dXJuIG1fem9vbU11bHRpcGxpZXI7CiB9
CkBAIC0zNjgwLDcgKzM2ODEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OmNhbk1hCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8sCiAgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KQogewotICAgIGJvb2wgY2FuR3Jvd01v
cmUgPSBjYW5ab29tSW4obV9wYWdlLT5zZXR0aW5ncygpLT56b29tc1RleHRPbmx5KCkpOworICAg
IGJvb2wgY2FuR3Jvd01vcmUgPSBjYW5ab29tSW4obV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9k
ZSgpID09IFpvb21UZXh0T25seSk7CiAgICAgKnJlc3VsdCA9IGNhbkdyb3dNb3JlID8gVFJVRSA6
IEZBTFNFOwogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzcwMiw3ICszNzAzLDcgQEAgYm9vbCBX
ZWJWaWV3OjpjYW5ab29tSW4oYm9vbCBpc1RleHRPbmx5KQogSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJWaWV3OjptYWtlVGV4dExhcmdlciggCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25v
d24qIC8qc2VuZGVyKi8pCiB7Ci0gICAgcmV0dXJuIHpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCkt
Pnpvb21zVGV4dE9ubHkoKSk7CisgICAgcmV0dXJuIHpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCkt
Pnpvb21Nb2RlKCkgPT0gWm9vbVRleHRPbmx5KTsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJWaWV3Ojp6b29tUGFnZUluKCAKQEAgLTM3MjMsNyArMzcyNCw3IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y2FuTWEKICAgICAgICAgLyogW2luXSAqLyBJVW5r
bm93biogLypzZW5kZXIqLywKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1
bHQpCiB7Ci0gICAgYm9vbCBjYW5TaHJpbmtNb3JlID0gY2FuWm9vbU91dChtX3BhZ2UtPnNldHRp
bmdzKCktPnpvb21zVGV4dE9ubHkoKSk7CisgICAgYm9vbCBjYW5TaHJpbmtNb3JlID0gY2FuWm9v
bU91dChtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkgPT0gWm9vbVRleHRPbmx5KTsKICAg
ICAqcmVzdWx0ID0gY2FuU2hyaW5rTW9yZSA/IFRSVUUgOiBGQUxTRTsKICAgICByZXR1cm4gU19P
SzsKIH0KQEAgLTM3NDUsNyArMzc0Niw3IEBAIGJvb2wgV2ViVmlldzo6Y2FuWm9vbU91dChib29s
IGlzVGV4dE9ubHkKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bWFrZVRleHRT
bWFsbGVyKCAKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKLSAg
ICByZXR1cm4gem9vbU91dChtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21zVGV4dE9ubHkoKSk7Cisg
ICAgcmV0dXJuIHpvb21PdXQobV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgpID09IFpvb21U
ZXh0T25seSk7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6em9vbVBh
Z2VPdXQoIApAQCAtNDU3Niw3ICs0NTc3LDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVm
ZXJlbmNlc0NoYW5nZQogICAgIGhyID0gcHJlZmVyZW5jZXMtPnpvb21zVGV4dE9ubHkoJmVuYWJs
ZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7Ci0gICAgc2V0dGlu
Z3MtPnNldFpvb21zVGV4dE9ubHkoISFlbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0Wm9vbU1v
ZGUoZW5hYmxlZCA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKIAogICAgIHNldHRpbmdzLT5z
ZXRTaG93c1VSTHNJblRvb2xUaXBzKGZhbHNlKTsKICAgICBzZXR0aW5ncy0+c2V0Rm9yY2VGVFBE
aXJlY3RvcnlMaXN0aW5ncyh0cnVlKTsKSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNTUzNzMpCisrKyBXZWJLaXQv
d3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMtMDEg
IEpha29iIFBldHNvdml0cyAgPGpwZXRzb3ZpdHNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGFwdCB0byB0aGUgbmV3IFpvb21Nb2Rl
IGVudW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NTM0NworCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAod3hXZWJGcmFtZTo6SW5j
cmVhc2VUZXh0U2l6ZSk6CisgICAgICAgICh3eFdlYkZyYW1lOjpEZWNyZWFzZVRleHRTaXplKToK
KyAgICAgICAgKHd4V2ViRnJhbWU6OlJlc2V0VGV4dFNpemUpOgorCiAyMDEwLTAyLTIzICBTdGV2
ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC93eC9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3d4L1dlYkZyYW1lLmNwcAkocmV2aXNpb24gNTUzNzEpCisrKyBXZWJLaXQvd3gvV2Vi
RnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCB3eFdlYkZy
YW1lOjpJbmNyZWFzZVRleHRTaXplKCkKIHsKICAgICBpZiAoQ2FuSW5jcmVhc2VUZXh0U2l6ZSgp
KSB7CiAgICAgICAgIG1fdGV4dE1hZ25pZmllciA9IG1fdGV4dE1hZ25pZmllcipUZXh0U2l6ZU11
bHRpcGxpZXJSYXRpbzsKLSAgICAgICAgbV9pbXBsLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihtX3Rl
eHRNYWduaWZpZXIsIHRydWUpOworICAgICAgICBtX2ltcGwtPmZyYW1lLT5zZXRab29tRmFjdG9y
KG1fdGV4dE1hZ25pZmllciwgV2ViQ29yZTo6Wm9vbVRleHRPbmx5KTsKICAgICB9CiB9CiAKQEAg
LTMzMyw3ICszMzMsNyBAQCB2b2lkIHd4V2ViRnJhbWU6OkRlY3JlYXNlVGV4dFNpemUoKQogeyAg
ICAgICAgCiAgICAgaWYgKENhbkRlY3JlYXNlVGV4dFNpemUoKSkgewogICAgICAgICBtX3RleHRN
YWduaWZpZXIgPSBtX3RleHRNYWduaWZpZXIvVGV4dFNpemVNdWx0aXBsaWVyUmF0aW87Ci0gICAg
ICAgIG1faW1wbC0+ZnJhbWUtPnNldFpvb21GYWN0b3IobV90ZXh0TWFnbmlmaWVyLCB0cnVlKTsK
KyAgICAgICAgbV9pbXBsLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIsIFdl
YkNvcmU6Olpvb21UZXh0T25seSk7CiAgICAgfQogfQogCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9p
ZCB3eFdlYkZyYW1lOjpSZXNldFRleHRTaXplKCkKIHsKICAgICBtX3RleHRNYWduaWZpZXIgPSAx
LjA7CiAgICAgaWYgKG1faW1wbC0+ZnJhbWUpCi0gICAgICAgIG1faW1wbC0+ZnJhbWUtPnNldFpv
b21GYWN0b3IobV90ZXh0TWFnbmlmaWVyLCB0cnVlKTsKKyAgICAgICAgbV9pbXBsLT5mcmFtZS0+
c2V0Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIsIFdlYkNvcmU6Olpvb21UZXh0T25seSk7CiB9
CiAKIHZvaWQgd3hXZWJGcmFtZTo6TWFrZUVkaXRhYmxlKGJvb2wgZW5hYmxlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>