<?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>35844</bug_id>
          
          <creation_ts>2010-03-07 07:40:47 -0800</creation_ts>
          <short_desc>[Qt] Add support for LayoutTestController commands.</short_desc>
          <delta_ts>2010-04-18 06:11:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Hogan">robert</reporter>
          <assigned_to name="Robert Hogan">robert</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>kent.hansen</cc>
    
    <cc>luiz</cc>
    
    <cc>ossy</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>197001</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-07 07:40:47 -0800</bug_when>
    <thetext>Add support for LayoutTestController commands:
          setSmartInsertDeleteEnabled
          setSelectTrailingWhitespaceEnabled
          execCommand
          isCommandEnabled

        Unskip tests:
        editing/deleting/smart-editing-disabled.html
        editing/execCommand/19089.html
        editing/execCommand/delete-image-in-anchor.html
        editing/execCommand/enabling-and-selection-2.html
        editing/selection/doubleclick-whitespace-crash.html
        editing/selection/doubleclick-whitespace-img-crash.html
        editing/selection/doubleclick-whitespace.html
        editing/selection/select-line.html

        Add Qt-specific results for tests:
        editing/deleting/5300379.html
        editing/deleting/smart-delete-003.html
        editing/deleting/smart-delete-004.html
        editing/selection/5195166-1.html
        editing/selection/5195166-2.html

(These last are render tree tests and the only differences are minor pixel/width differences)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197003</commentid>
    <comment_count>1</comment_count>
      <attachid>50171</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-07 08:07:58 -0800</bug_when>
    <thetext>Created attachment 50171
Patch

My local results for:

editing/deleting/5300379.html
editing/deleting/smart-delete-003.html
editing/deleting/smart-delete-004.html
editing/selection/5195166-1.html
editing/selection/5195166-2.html

are slightly different to those in LayoutTests/platform/qt/*expected.txt. But presumably the buildbot has the right fonts installed and I don&apos;t, so I haven&apos;t updated them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197075</commentid>
    <comment_count>2</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-03-07 23:58:58 -0800</bug_when>
    <thetext>The patch is fine, for the API it might be better to have an enum for each command and then a generic isCommandEnabled, setCommandEnabled function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197265</commentid>
    <comment_count>3</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-08 12:08:10 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; The patch is fine, for the API it might be better to have an enum for each
&gt; command and then a generic isCommandEnabled, setCommandEnabled function?

There isn&apos;t a setCommandEnabled function required by the LayoutTestController. Also, isCommandEnabled is only ever called by the DRT so not sure of value of enumerating every valid command since those are already enumerated by WebCore.

Have a feeling I&apos;ve missed your point though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197441</commentid>
    <comment_count>4</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-03-08 20:54:40 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; The patch is fine, for the API it might be better to have an enum for each
&gt; &gt; command and then a generic isCommandEnabled, setCommandEnabled function?
&gt; 
&gt; There isn&apos;t a setCommandEnabled function required by the LayoutTestController.
&gt; Also, isCommandEnabled is only ever called by the DRT so not sure of value of
&gt; enumerating every valid command since those are already enumerated by WebCore.
&gt; 
&gt; Have a feeling I&apos;ve missed your point though.

The point is. You will be adding ~10-15 public API methods (setters and getters) that have little usage outside of the DRT. This raises my concern that this might be the wrong approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198068</commentid>
    <comment_count>5</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-03-10 06:33:35 -0800</bug_when>
    <thetext>
Please follow the QtWebKit bug reporting guidelines when reporting bugs.

See http://trac.webkit.org/wiki/QtWebKitBugs

Specifically:

  - The &apos;QtWebKit&apos; component should only be used for bugs/features in the
    public QtWebKit API layer, not to signify that the bug is specific to
    the Qt port of WebKit

      http://trac.webkit.org/wiki/QtWebKitBugs#Component

  - Add the keyword &apos;Qt&apos; to signal that it&apos;s a Qt-related bug

      http://trac.webkit.org/wiki/QtWebKitBugs#Keywords</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198265</commentid>
    <comment_count>6</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-10 12:33:27 -0800</bug_when>
    <thetext>&gt; 
&gt; The point is. You will be adding ~10-15 public API methods (setters and
&gt; getters) that have little usage outside of the DRT. This raises my concern that
&gt; this might be the wrong approach.

Think we&apos;re talking at cross-purposes here. This is the isCommandEnabled API the patch adds to the DRT:

+bool LayoutTestController::isCommandEnabled(const QString&amp; name) const
+{
+    return qt_drt_isCommandEnabled(m_drt-&gt;webPage(), name);
+}
+

+bool QWEBKIT_EXPORT qt_drt_isCommandEnabled(QWebPage* page, const QString&amp; name)
+{
+    return page-&gt;handle()-&gt;page-&gt;focusController()-&gt;focusedOrMainFrame()-&gt;editor()-&gt;command(name).isEnabled();
+}
+

No need to add any enums surely? (Apologies if I&apos;m completely missing your point).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198319</commentid>
    <comment_count>7</comment_count>
      <attachid>50171</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-10 13:48:25 -0800</bug_when>
    <thetext>Comment on attachment 50171
Patch

Looks good in general, yay for passing more tests.

The part I&apos;m unhappy about are the functions added to QWebPage:

* We usually don&apos;t have toggle() functions for plain boolean properties.
* The added properties are lacking documentation!
* I&apos;d like to see the names discussed/proposed on the mailing list first, for a wider review.
* The selectTrailingWhitespaceEnabled property is lacking a Q_PROPERTY declaration

An alternative to the public API would and a cleanup of all the _drt_ functions would be to collect all those ugly qt_drt_foo functions, put them into WebCoreSupport/DumpRenderTreeSupport.cpp/h, _export_ the entire class and access it from the DRT by including the private header file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200704</commentid>
    <comment_count>8</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-17 05:43:34 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; 
&gt; * We usually don&apos;t have toggle() functions for plain boolean properties.
&gt; * The added properties are lacking documentation!
&gt; * I&apos;d like to see the names discussed/proposed on the mailing list first, for a
&gt; wider review.
&gt; * The selectTrailingWhitespaceEnabled property is lacking a Q_PROPERTY
&gt; declaration
&gt; 
I was wrong to add these as API, they are only used by EditorClientQt. I&apos;ve changed it so that they are private values accessible by EditorClient and moved the set*() API into DRTSupport.

&gt; An alternative to the public API would and a cleanup of all the _drt_ functions
&gt; would be to collect all those ugly qt_drt_foo functions, put them into
&gt; WebCoreSupport/DumpRenderTreeSupport.cpp/h, _export_ the entire class and
&gt; access it from the DRT by including the private header file.

I went ahead and did this, though I suspect it will have to be a separate patch as the patch itself now in excess of 1K lines.

I&apos;ve briefly tested it and it seems to be working fine, though I&apos;d appreciate comments on the following before splitting/finalizing it for commit and finishing testing:

- How does use of the value of QWebPagePrivate::drtRun work exactly? Even at the moment it&apos;s referenced in FrameLoaderClientQt.cpp and I don&apos;t see how that class knows which instance of qwebpage it&apos;s referencing (or why it doesn&apos;t matter). I know it&apos;s a static value for the class, but does that mean once it&apos;s set it&apos;s true for all instances? Bit of a C++ 101 question but there you are! (My lack of clarity here means I&apos;m not sure if I&apos;m setting the value correctly in my patch.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200706</commentid>
    <comment_count>9</comment_count>
      <attachid>50896</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-17 05:44:31 -0700</bug_when>
    <thetext>Created attachment 50896
Updated Patch - with QDRTSupport</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200976</commentid>
    <comment_count>10</comment_count>
      <attachid>50960</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-17 14:54:37 -0700</bug_when>
    <thetext>Created attachment 50960
Updated Patch - with QDRTSupport</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200977</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-17 14:58:31 -0700</bug_when>
    <thetext>Attachment 50960 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Last 3072 characters of output:
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:261:  QDRTSupport::garbageCollector_collect is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:266:  QDRTSupport::garbageCollector_collectOnAlternateThread is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebframe.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebframe.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage_p.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/tests/qwebpage/tst_qwebpage.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebsecurityorigin.cpp&quot;
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.h:20:  #ifndef header guard has wrong style, please use: DumpRenderTreeSupport_h  [build/header_guard] [5]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.h:40:  dump_editing_callbacks is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.h:41:  dump_frame_loader is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.h:42:  dump_resource_load_callbacks is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.h:51:  webpage_groupName is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.h:52:  webpage_setGroupName is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.h:53:  dump_set_accepts_editing is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.h:59:  garbageCollector_collect is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.h:60:  garbageCollector_collectOnAlternateThread is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.h:66:  webinspector_executeScript is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.h:67:  webinspector_show is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.h:68:  webinspector_close is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage.h&quot;
Total errors found: 30 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201296</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-18 08:03:34 -0700</bug_when>
    <thetext>We need to get this in quickly before the patch gets stale and hard to maintain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201299</commentid>
    <comment_count>13</comment_count>
      <attachid>50960</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-18 08:07:37 -0700</bug_when>
    <thetext>Comment on attachment 50960
Updated Patch - with QDRTSupport


&gt; diff --git a/WebKit/qt/ChangeLog b/WebKit/qt/ChangeLog
&gt; index 546ac34..e73082a 100644
&gt; --- a/WebKit/qt/ChangeLog
&gt; +++ b/WebKit/qt/ChangeLog
&gt; @@ -1,3 +1,49 @@
&gt; +2010-03-07  Robert Hogan  &lt;robert@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        [Qt] Add support for LayoutTestController commands.
&gt; +
&gt; +        Add support for LayoutTestController commands:
&gt; +          setSmartInsertDeleteEnabled
&gt; +          setSelectTrailingWhitespaceEnabled
&gt; +          execCommand
&gt; +          isCommandEnabled
&gt; +
&gt; +        Unskip tests:
&gt; +        editing/deleting/smart-editing-disabled.html
&gt; +        editing/execCommand/19089.html
&gt; +        editing/execCommand/delete-image-in-anchor.html
&gt; +        editing/execCommand/enabling-and-selection-2.html
&gt; +        editing/selection/doubleclick-whitespace-crash.html
&gt; +        editing/selection/doubleclick-whitespace-img-crash.html
&gt; +        editing/selection/doubleclick-whitespace.html
&gt; +        editing/selection/select-line.html
&gt; +        editing/deleting/5300379.html
&gt; +        editing/deleting/smart-delete-003.html
&gt; +        editing/deleting/smart-delete-004.html
&gt; +        editing/selection/5195166-1.html
&gt; +        editing/selection/5195166-2.html
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=35844
&gt; +
&gt; +        * Api/qwebpage.cpp:
&gt; +        (qt_drt_executeCoreCommandByName):
&gt; +        (qt_drt_isCommandEnabled):
&gt; +        (QWebPagePrivate::QWebPagePrivate):
&gt; +        (QWebPage::setSmartInsertDeleteEnabled):
&gt; +        (QWebPage::smartInsertDeleteEnabled):
&gt; +        (QWebPage::toggleSmartInsertDeleteEnabled):
&gt; +        (QWebPage::setSelectTrailingWhitespaceEnabled):
&gt; +        (QWebPage::selectTrailingWhitespaceEnabled):
&gt; +        * Api/qwebpage.h:
&gt; +        * Api/qwebpage_p.h:
&gt; +        * WebCoreSupport/EditorClientQt.cpp:
&gt; +        (WebCore::EditorClientQt::smartInsertDeleteEnabled):
&gt; +        (WebCore::EditorClientQt::toggleSmartInsertDelete):
&gt; +        (WebCore::EditorClientQt::isSelectTrailingWhitespaceEnabled):
&gt; +        * WebCoreSupport/EditorClientQt.h:
&gt; +

It looks like the ChangeLog is missing the qt_drt_* refactoring.

&gt;  2010-03-17  Csaba OsztrogonÃ¡c  &lt;ossy@webkit.org&gt;
&gt;  
&gt;          Reviewed by Kenneth Rohde Christiansen.
&gt; diff --git a/WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp b/WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp
&gt; new file mode 100644
&gt; index 0000000..ccf13a3
&gt; --- /dev/null
&gt; +++ b/WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp
&gt; @@ -0,0 +1,357 @@
&gt; +/*
&gt; + * Copyright (C) 2007 Apple Inc.  All rights reserved.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without
&gt; + * modification, are permitted provided that the following conditions
&gt; + * are met:
&gt; + * 1. Redistributions of source code must retain the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer.
&gt; + * 2. Redistributions in binary form must reproduce the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer in the
&gt; + *    documentation and/or other materials provided with the distribution.
&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS&apos;&apos; AND ANY
&gt; + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
&gt; + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt; + * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
&gt; + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
&gt; + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
&gt; + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
&gt; + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
&gt; + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&gt; + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
&gt; + */

This doesn&apos;t look like the right copyright / license. The code comes mostly from qweb* classes and you should add your name, too, I think.


Otherwise this looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201300</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-18 08:08:13 -0700</bug_when>
    <thetext>Tor Arne, what do you think about the qt_drt_* refactoring?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201993</commentid>
    <comment_count>15</comment_count>
      <attachid>51181</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-19 12:47:31 -0700</bug_when>
    <thetext>Created attachment 51181
Updated Patch

Updated per comments (and rebased). Still unsure about QWebPagePrivate::drtRun. I think it would be best if Ossy could confirm he has a clean test run on this before landing, running the layout tests on my machine, even with a clean head, is a total bust.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201994</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-19 12:52:36 -0700</bug_when>
    <thetext>Attachment 51181 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:23:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:26:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:27:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:31:  &quot;Frame.h&quot; already included at WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:28  [build/include] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:42:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:47:  Alphabetical sorting problem.  [build/include_order] [4]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebframe.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebframe.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage_p.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/tests/qwebpage/tst_qwebpage.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebsecurityorigin.cpp&quot;
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.h:23:  #ifndef header guard has wrong style, please use: DumpRenderTreeSupport_h  [build/header_guard] [5]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage.h&quot;
Total errors found: 12 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202009</commentid>
    <comment_count>17</comment_count>
      <attachid>51184</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-19 13:19:25 -0700</bug_when>
    <thetext>Created attachment 51184
Updated Patch per Stylebot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202016</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-19 13:25:49 -0700</bug_when>
    <thetext>Attachment 51184 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/qt/WebCoreSupport/DumpRenderTreeSupport.cpp:47:  Alphabetical sorting problem.  [build/include_order] [4]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebframe.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebframe.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage_p.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/tests/qwebpage/tst_qwebpage.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebsecurityorigin.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage.h&quot;
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202024</commentid>
    <comment_count>19</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-03-19 14:00:28 -0700</bug_when>
    <thetext>I tested with additional header, #include &quot;SVGSMILElement.h&quot;,
but unfortunately I got 7 failing tests. I will submit the diff here.

Please add this include, and follow advices of style bot. :)
If you run WebKitTools/Scripts/check-webkit-style locally before 
upload the patch, you can spare with resources of style bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202289</commentid>
    <comment_count>20</comment_count>
      <attachid>51248</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-21 09:03:45 -0700</bug_when>
    <thetext>Created attachment 51248
Patch

Ossy, I&apos;m pretty sure I&apos;ve fixed any failures here. You might get layout differences but these should be pixel-widths only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202301</commentid>
    <comment_count>21</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-21 11:55:06 -0700</bug_when>
    <thetext>You might notice in the change to expected results for smart-delete-004 that the expected platform-specific result for qt has been changed from &apos;foo  baz&apos; to &apos;foo baz&apos;. The latter is the expected result for mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202313</commentid>
    <comment_count>22</comment_count>
      <attachid>51254</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-03-21 13:57:01 -0700</bug_when>
    <thetext>Created attachment 51254
patch (for your patch) to make buildbot happy

(In reply to comment #20)
&gt; Created an attachment (id=51248) [details]
&gt; Patch
&gt; 
&gt; Ossy, I&apos;m pretty sure I&apos;ve fixed any failures here. You might get layout
&gt; differences but these should be pixel-widths only.

I tested the last patch, the differences are only pixel 
differences, I attached the diff to make our buildbot happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202323</commentid>
    <comment_count>23</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-03-21 14:48:47 -0700</bug_when>
    <thetext>I&apos;m not such a big fan of the refactoring:

1) before the webpage related methods were in qwebpage.cpp and that made sense, as they sometime turn into real methods.
2) now some of the methods are prefixed with webPage and others related to QWebPage are not, very inconsistent.
3) would it make more sense to add these methods to the *Private classes? such as QWebPagePrivate? or create a QWebPageDRT? I opt for the first one; we could even prefix all methods with DRT if needed, like QWebFramePrivate::drtClearName(qwebframe);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202344</commentid>
    <comment_count>24</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-21 15:31:32 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; I&apos;m not such a big fan of the refactoring:
&gt; 
&gt; 1) before the webpage related methods were in qwebpage.cpp and that made sense,
&gt; as they sometime turn into real methods.

You have to admit though that on the other hand speading all those drt methods throughout the API is a big mess.

&gt; 2) now some of the methods are prefixed with webPage and others related to
&gt; QWebPage are not, very inconsistent.

That sounds fixable (for a follow-up patch).

&gt; 3) would it make more sense to add these methods to the *Private classes? such
&gt; as QWebPagePrivate? or create a QWebPageDRT? I opt for the first one; we could
&gt; even prefix all methods with DRT if needed, like
&gt; QWebFramePrivate::drtClearName(qwebframe);

What&apos;s the advantage of grouping them in QWebPagePrivate if some of them operate on frames only and others are global functions? It seems just as unrelated as having a dedicated DRT class, that at least makes it clear that this is private DRT API, nothing else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202345</commentid>
    <comment_count>25</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-03-21 15:36:51 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; I&apos;m not such a big fan of the refactoring:
&gt; &gt; 
&gt; &gt; 1) before the webpage related methods were in qwebpage.cpp and that made sense,
&gt; &gt; as they sometime turn into real methods.
&gt; 
&gt; You have to admit though that on the other hand speading all those drt methods
&gt; throughout the API is a big mess.

True to some degree, but they are related to the others methods where it is being implemented. Just like we implement QWebPagePrivate methods inside qwebpage.cpp; so the methods are grouped with related methods.

&gt; What&apos;s the advantage of grouping them in QWebPagePrivate if some of them
&gt; operate on frames only and others are global functions? 

The global ones we could just implement directly in the DumpRenderTree.cpp right?

&gt; It seems just as
&gt; unrelated as having a dedicated DRT class, that at least makes it clear that
&gt; this is private DRT API, nothing else.

That is why I suggested creating QWebPageDRT and QWebFrameDRT, though that might be overkill.

Anyway, the patch instantiates a QDRTSupport class, even though all methods basically act like static methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202347</commentid>
    <comment_count>26</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-03-21 15:43:49 -0700</bug_when>
    <thetext>If we do a refactoring we should discuss it, and do it part per part. I&apos;m sure a lot of this code can actually be cleaned up.

Anyway, the reason we are doing these classes are that DRT doesn&apos;t depend on WebCore; it is basically a workaround to the point that the DRT should only use our public API, right?

I think the refactoring should be separate from this patch, don&apos;t you agree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202710</commentid>
    <comment_count>27</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-22 12:46:46 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Anyway, the reason we are doing these classes are that DRT doesn&apos;t depend on
&gt; WebCore; it is basically a workaround to the point that the DRT should only use
&gt; our public API, right?
&gt; 

There&apos;s no reason why most of it couldn&apos;t be public undocumented API. If there is a reason for keeping it private then this refactoring or something similar seems to be required long term.

So is there a good reason for keeping it private?

(In reply to comment #25)
&gt;Anyway, the patch instantiates a QDRTSupport class, even though all methods
&gt;basically act like static methods.

Yes, I should probably just make all the methods static and skip the instantiation. No good reason I didn&apos;t do that in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202798</commentid>
    <comment_count>28</comment_count>
      <attachid>51363</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-03-22 15:33:41 -0700</bug_when>
    <thetext>Created attachment 51363
Updated Patch

Use static members from QDRTSupport rather than instantiating the class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205241</commentid>
    <comment_count>29</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-28 14:13:07 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; I think the refactoring should be separate from this patch, don&apos;t you agree?

That&apos;s true, I agree with that. Robert, could you separate it? Just leave out the smart insertion.

Please send me a private email as a reminder, so that I can be a bit quicker in the review of the refactoring (sorry :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207851</commentid>
    <comment_count>30</comment_count>
      <attachid>52416</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-04-02 07:28:20 -0700</bug_when>
    <thetext>Created attachment 52416
Refactor DRT Support

As per Kenneth and Simon&apos;s request - patch with DRT support refactoring only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207852</commentid>
    <comment_count>31</comment_count>
      <attachid>52417</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-04-02 07:47:36 -0700</bug_when>
    <thetext>Created attachment 52417
Removed stray changelog entry

Oops, stray changelog entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207963</commentid>
    <comment_count>32</comment_count>
      <attachid>52417</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-04-02 11:40:40 -0700</bug_when>
    <thetext>Comment on attachment 52417
Removed stray changelog entry

As it is an internal class we should call it QtDRTSupport (or QtDrtSupport to following Qt naming conventions), as we do with most other internal Qt classes (not privates) in WebKit.

We still need to look at the method names. For instance it is not obvious what QtDRTSupport::run() does. Also, I would like you to group the methods logically together in the header. Also, you have methods in the header with signature (QWebFrame* qFrame, ...), please leave our the qFrame as the style guide dictates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211174</commentid>
    <comment_count>33</comment_count>
      <attachid>53050</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-04-10 12:43:50 -0700</bug_when>
    <thetext>Created attachment 53050
Updated Patch

I&apos;ve renamed it DumpRenderTreeSupportQt to match the filename. I&apos;ve also rejigged one or two of the function names and reordered the functions in the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211255</commentid>
    <comment_count>34</comment_count>
      <attachid>53050</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-10 18:35:12 -0700</bug_when>
    <thetext>Comment on attachment 53050
Updated Patch

Clearing flags on attachment: 53050

Committed r57433: &lt;http://trac.webkit.org/changeset/57433&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211256</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-10 18:35:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211341</commentid>
    <comment_count>36</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-04-11 02:08:32 -0700</bug_when>
    <thetext>Buildfix for --debug build landed: http://trac.webkit.org/changeset/57447</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211342</commentid>
    <comment_count>37</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-04-11 02:09:19 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Buildfix for --debug build landed: http://trac.webkit.org/changeset/57447

Sorry, I mean http://trac.webkit.org/changeset/57448 :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211346</commentid>
    <comment_count>38</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-04-11 03:45:10 -0700</bug_when>
    <thetext>Re-opening to add layouttestcontroller commands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211347</commentid>
    <comment_count>39</comment_count>
      <attachid>53084</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-04-11 03:46:40 -0700</bug_when>
    <thetext>Created attachment 53084
LayoutTestController Commands Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211706</commentid>
    <comment_count>40</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-04-12 13:09:02 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; Created an attachment (id=53050) [details]
&gt; Updated Patch
&gt; 
&gt; I&apos;ve renamed it DumpRenderTreeSupportQt to match the filename. I&apos;ve also
&gt; rejigged one or two of the function names and reordered the functions in the
&gt; header.

patch 53050 that is now landed removed static function qt_wrt_setViewMode from qwebpage. It makes no sense to me since the only relation it has with DRT is the fact that there is a LayoutTest for viewModes.

Now the hidden api used to change view modes is a static method of class DumpRenderTreeSupportQt. Was it actually the intention of the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211723</commentid>
    <comment_count>41</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-04-12 14:06:30 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; 
&gt; Now the hidden api used to change view modes is a static method of class
&gt; DumpRenderTreeSupportQt. Was it actually the intention of the patch?

It sounds like it was inappropriate to move it and that it should be moved back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212019</commentid>
    <comment_count>42</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-04-13 11:15:41 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (In reply to comment #40)
&gt; &gt; 
&gt; &gt; Now the hidden api used to change view modes is a static method of class
&gt; &gt; DumpRenderTreeSupportQt. Was it actually the intention of the patch?
&gt; 
&gt; It sounds like it was inappropriate to move it and that it should be moved
&gt; back.

bug 37505 moves it back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213742</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-18 03:59:36 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57793 might have broken Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213752</commentid>
    <comment_count>44</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-04-18 06:11:45 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; http://trac.webkit.org/changeset/57793 might have broken Qt Linux Release

Fixed by http://trac.webkit.org/changeset/57794 , thx Robert.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50171</attachid>
            <date>2010-03-07 08:07:58 -0800</date>
            <delta_ts>2010-03-17 05:44:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Add-support-for-LayoutTestController-commands.patch</filename>
            <type>text/plain</type>
            <size>18157</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSAwMWQwMWIzMzUxNzcwNWQ0OWYyMmI5MWNjMzgzYWI5ODZiNThlYzQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBTdW4sIDcgTWFyIDIwMTAgMTY6MDM6MzEgKzAwMDAKU3ViamVjdDogW1BBVENIXSBbUXRdIEFk
ZCBzdXBwb3J0IGZvciBMYXlvdXRUZXN0Q29udHJvbGxlciBjb21tYW5kcy4KCkFkZCBzdXBwb3J0
IGZvciBMYXlvdXRUZXN0Q29udHJvbGxlciBjb21tYW5kczoKICBzZXRTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQKICBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkCiAgZXhlY0NvbW1h
bmQKICBpc0NvbW1hbmRFbmFibGVkCgpVbnNraXAgdGVzdHM6CmVkaXRpbmcvZGVsZXRpbmcvc21h
cnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCmVkaXRpbmcvZXhlY0NvbW1hbmQvMTkwODkuaHRtbApl
ZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1pbWFnZS1pbi1hbmNob3IuaHRtbAplZGl0aW5nL2V4
ZWNDb21tYW5kL2VuYWJsaW5nLWFuZC1zZWxlY3Rpb24tMi5odG1sCmVkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtY3Jhc2guaHRtbAplZGl0aW5nL3NlbGVjdGlvbi9kb3Vi
bGVjbGljay13aGl0ZXNwYWNlLWltZy1jcmFzaC5odG1sCmVkaXRpbmcvc2VsZWN0aW9uL2RvdWJs
ZWNsaWNrLXdoaXRlc3BhY2UuaHRtbAplZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbGluZS5odG1s
CmVkaXRpbmcvZGVsZXRpbmcvNTMwMDM3OS5odG1sCmVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVs
ZXRlLTAwMy5odG1sCmVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC5odG1sCmVkaXRp
bmcvc2VsZWN0aW9uLzUxOTUxNjYtMS5odG1sCmVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMi5o
dG1sCgpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4NDQKLS0tCiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzUg
KysrKysrKysrKysrKysrCiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkICAgICAgICAg
ICAgICAgICAgICB8ICAgMTQgLS0tLS0tCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMzkgKysrKysrKysrKysrKysrKysKIFdlYktpdC9xdC9B
cGkvcXdlYnBhZ2UuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCArKysKIFdlYktp
dC9xdC9BcGkvcXdlYnBhZ2VfcC5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBX
ZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDYg
KysrKysrKysrKysrKysrKysrKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5jcHAgICAgICAgIHwgICAxMSArKystLQogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmggICAgICAgICAgfCAgICAyICstCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzYgKysrKysrKysrKysrKysrCiAuLi4v
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgICB8ICAgMjIgKysr
KysrKysrCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oICAg
ICB8ICAgIDQgKysKIDExIGZpbGVzIGNoYW5nZWQsIDIwMCBpbnNlcnRpb25zKCspLCAxOSBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNjYxYTA3YS4uOGE4MDBmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBA
CisyMDEwLTAzLTA3ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEFkZCBzdXBwb3J0
IGZvciBMYXlvdXRUZXN0Q29udHJvbGxlciBjb21tYW5kcy4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIgY29tbWFuZHM6CisgICAgICAgICAgc2V0U21hcnRJ
bnNlcnREZWxldGVFbmFibGVkCisgICAgICAgICAgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNl
RW5hYmxlZAorICAgICAgICAgIGV4ZWNDb21tYW5kCisgICAgICAgICAgaXNDb21tYW5kRW5hYmxl
ZAorCisgICAgICAgIFVuc2tpcCB0ZXN0czoKKyAgICAgICAgZWRpdGluZy9kZWxldGluZy9zbWFy
dC1lZGl0aW5nLWRpc2FibGVkLmh0bWwKKyAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC8xOTA4
OS5odG1sCisgICAgICAgIGVkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLWltYWdlLWluLWFuY2hv
ci5odG1sCisgICAgICAgIGVkaXRpbmcvZXhlY0NvbW1hbmQvZW5hYmxpbmctYW5kLXNlbGVjdGlv
bi0yLmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFj
ZS1jcmFzaC5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRl
c3BhY2UtaW1nLWNyYXNoLmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xp
Y2std2hpdGVzcGFjZS5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1saW5l
Lmh0bWwKKyAgICAgICAgZWRpdGluZy9kZWxldGluZy81MzAwMzc5Lmh0bWwKKyAgICAgICAgZWRp
dGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDAzLmh0bWwKKyAgICAgICAgZWRpdGluZy9kZWxl
dGluZy9zbWFydC1kZWxldGUtMDA0Lmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vNTE5
NTE2Ni0xLmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0yLmh0bWwKKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4NDQKKwor
ICAgICAgICAqIHBsYXRmb3JtL3F0L2VkaXRpbmcvZGVsZXRpbmcvNTMwMDM3OS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUt
MDAzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9lZGl0aW5nL2RlbGV0aW5n
L3NtYXJ0LWRlbGV0ZS0wMDQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Vk
aXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0yLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0w
My0wNiAgSm9hbm1hcmllIERpZ2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4
IDAzNDgzMzkuLjM0OGY0ODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Nr
aXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMjI4LDggKzIy
OCw2IEBAIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLmh0bWwK
ICMgTWlzc2luZyBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoKQogZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1mcmFtZXMuaHRtbAogCi0jIE1pc3NpbmcgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoKQotZWRpdGluZy9leGVjQ29tbWFuZC9kZWxl
dGUtaW1hZ2UtaW4tYW5jaG9yLmh0bWwgCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKIAogIyAt
LS0tLS0tIG1pc3NpbmcgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzCkBAIC0yODYsNyAr
Mjg0LDYgQEAgZmFzdC9ydWJ5L3J1YnlET00tcmVtb3ZlLXRleHQyLmh0bWwKIAogIyAtLS0tLS0t
IGZhaWxpbmcgZWRpdGluZyB0ZXN0cwogZWRpdGluZy9kZWxldGluZy9kZWxldGUtdG8tZW5kLW9m
LXBhcmFncmFwaC5odG1sCi1lZGl0aW5nL2V4ZWNDb21tYW5kL2VuYWJsaW5nLWFuZC1zZWxlY3Rp
b24tMi5odG1sCiBlZGl0aW5nL2V4ZWNDb21tYW5kL25zcmVzcG9uZGVyLWluZGVudC5odG1sCiBl
ZGl0aW5nL2V4ZWNDb21tYW5kL25zcmVzcG9uZGVyLW91dGRlbnQuaHRtbAogZWRpdGluZy9pbnB1
dC9lbWFjcy1jdHJsLW8uaHRtbApAQCAtMTA3Niw3ICsxMDczLDYgQEAgZmFzdC9mb3Jtcy9tZW51
bGlzdC13aWR0aC1jaGFuZ2UuaHRtbAogIyBwdXQgaW50byB0aGUgc2tpcHBlZCBsaXN0IGZvciBu
b3cgdG8gaGF2ZSBzb21lIGtpbmQgb2YKICMgcmVmZXJlbmNlLCBzbyB3ZSBkb24ndCBpbnRyb2R1
Y2UgcmVncmVzc2lvbnMuCiBlZGl0aW5nL2RlbGV0aW5nLzUxNDQxMzktMi5odG1sCi1lZGl0aW5n
L2RlbGV0aW5nLzUzMDAzNzkuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtYmxvY2stbWVy
Z2UtY29udGVudHMtMDAxLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWJsb2NrLW1lcmdl
LWNvbnRlbnRzLTAxOS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1ibG9jay1tZXJnZS1j
b250ZW50cy0wMjAuaHRtbApAQCAtMTA4Nyw4ICsxMDgzLDYgQEAgZWRpdGluZy9kZWxldGluZy9k
ZWxldGUtbGluZS1lbmQtd3MtMDAxLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpbmUt
ZW5kLXdzLTAwMi5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS10by1zZWxlY3QtdGFibGUu
aHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGlvblVJLXNpbmdsZS1pbnN0YW5jZS5odG1sCi1l
ZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDMuaHRtbAotZWRpdGluZy9kZWxldGluZy9z
bWFydC1kZWxldGUtMDA0Lmh0bWwKIGVkaXRpbmcvZXhlY0NvbW1hbmQvNDkyMDQ4OC5odG1sCiBl
ZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MjA3NDItMS5odG1sCiBlZGl0aW5nL2V4ZWNDb21tYW5kL2Ny
ZWF0ZS1saXN0LXdpdGgtaHIuaHRtbApAQCAtMTEyMCwxNSArMTExNCwxMiBAQCBlZGl0aW5nL3Bh
c3RlYm9hcmQvcGFzdGUtdGV4dC0wMDMuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL3F1aXJrcy1t
b2RlLWJyLTEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vNDk4Mzg1OC5odG1sCiBlZGl0aW5nL3Nl
bGVjdGlvbi81MTM2Njk2Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS5odG1sCi1l
ZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTIuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vYWZ0ZXIt
bGluZS13cmFwLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2VuZC1vZi1kb2N1bWVudC5odG1sCiBl
ZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWxlZnQtcmlnaHQuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
c2VsZWN0LWFsbC0wMDEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC0wMDIuaHRt
bAogZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFsbC0wMDMuaHRtbAotZWRpdGluZy9zZWxlY3Rp
b24vc2VsZWN0LWxpbmUuaHRtbAogZWRpdGluZy9zdHlsZS9hcHBsZS1zdHlsZS1lZGl0YWJsZS1t
aXguaHRtbAogZWRpdGluZy9zdHlsZS9jcmVhdGUtYmxvY2stZm9yLXN0eWxlLTAxMi5odG1sCiBl
ZGl0aW5nL3N0eWxlL2ZvbnQtZmFtaWx5LXdpdGgtc3BhY2UuaHRtbApAQCAtNDc1MCwxNSArNDc0
MSwxMCBAQCBkb20veGh0bWwvbGV2ZWwzL2NvcmUvY2Fub25pY2FsZm9ybTA5LnhodG1sCiBlZGl0
aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDEuaHRtbAogZWRpdGluZy9kZWxldGluZy9k
ZWxldGUtbGlnYXR1cmUtMDAyLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpZ2F0dXJl
LTAwMy5odG1sCi1lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWVkaXRpbmctZGlzYWJsZWQuaHRtbAot
ZWRpdGluZy9leGVjQ29tbWFuZC8xOTA4OS5odG1sCiBlZGl0aW5nL2luc2VydGluZy81ODAzNzA2
LTEuaHRtbAogZWRpdGluZy9pbnNlcnRpbmcvNTk5NDQ4MC0yLmh0bWwKIGVkaXRpbmcvcGFzdGVi
b2FyZC9maWxlcy1kdXJpbmctcGFnZS1kcmFncy5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZ2V0
LWRhdGEtdGV4dC1wbGFpbi1kcm9wLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNr
LXdoaXRlc3BhY2UtY3Jhc2guaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hp
dGVzcGFjZS1pbWctY3Jhc2guaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hp
dGVzcGFjZS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9kcmFnLXN0YXJ0LWV2ZW50LWNsaWVudC14
LXkuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1iaWRpLmh0bWwKIGVk
aXRpbmcvc2VsZWN0aW9uL2hpdC10ZXN0LWFub255bW91cy5odG1sCmRpZmYgLS1naXQgYS9XZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4
IDJhOGFjZWQuLmNmYzY0NTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3Bw
CisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0xOTMsNiArMTkzLDE3IEBAIHZv
aWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3NldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChRV2Vi
UGFnZSogcGFnZSwgYm9vbCBlbmFiCiAgICAgZWxzZQogICAgICAgICBjb250cm9sbGVyLT5zdG9w
VGltZWxpbmVQcm9maWxlcigpOwogfQorCit2b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9leGVj
dXRlQ29yZUNvbW1hbmRCeU5hbWUoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG5hbWUs
IGNvbnN0IFFTdHJpbmcmIHZhbHVlKQoreworICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5h
bWUpLmV4ZWN1dGUodmFsdWUpOworfQorCitib29sIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9pc0Nv
bW1hbmRFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBuYW1lKQoreworICAg
IHJldHVybiBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKK30KKwog
I2VuZGlmCiAKIGNsYXNzIFFXZWJQYWdlV2lkZ2V0Q2xpZW50IDogcHVibGljIFFXZWJQYWdlQ2xp
ZW50IHsKQEAgLTQ1OCw2ICs0NjksOCBAQCBRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0
ZShRV2ViUGFnZSAqcXEpCiAgICAgcGx1Z2luRmFjdG9yeSA9IDA7CiAgICAgaW5zaWRlT3BlbkNh
bGwgPSBmYWxzZTsKICAgICBmb3J3YXJkVW5zdXBwb3J0ZWRDb250ZW50ID0gZmFsc2U7CisgICAg
c21hcnRJbnNlcnREZWxldGVFbmFibGVkID0gZmFsc2U7CisgICAgc2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZCA9IGZhbHNlOwogICAgIGVkaXRhYmxlID0gZmFsc2U7CiAgICAgdXNlRml4
ZWRMYXlvdXQgPSBmYWxzZTsKICAgICBsaW5rUG9saWN5ID0gUVdlYlBhZ2U6OkRvbnREZWxlZ2F0
ZUxpbmtzOwpAQCAtMjc2NCw2ICsyNzc3LDMyIEBAIFFXZWJQYWdlOjpMaW5rRGVsZWdhdGlvblBv
bGljeSBRV2ViUGFnZTo6bGlua0RlbGVnYXRpb25Qb2xpY3koKSBjb25zdAogICAgIHJldHVybiBk
LT5saW5rUG9saWN5OwogfQogCit2b2lkIFFXZWJQYWdlOjpzZXRTbWFydEluc2VydERlbGV0ZUVu
YWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIGQtPnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9
IGVuYWJsZWQ7Cit9CisKK2Jvb2wgUVdlYlBhZ2U6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKK30KKwor
dm9pZCBRV2ViUGFnZTo6dG9nZ2xlU21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkKK3sKKyAgICBi
b29sIGN1cnJlbnQgPSBkLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7CisgICAgZC0+c21hcnRJ
bnNlcnREZWxldGVFbmFibGVkID0gIWN1cnJlbnQ7Cit9CisKK3ZvaWQgUVdlYlBhZ2U6OnNldFNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIGQtPnNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgPSBlbmFibGVkOworfQorCitib29sIFFXZWJQ
YWdlOjpzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZC0+c2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDsKK30KKwogI2lmbmRlZiBRVF9O
T19DT05URVhUTUVOVQogLyohCiAgICAgRmlsdGVycyB0aGUgY29udGV4dCBtZW51IGV2ZW50LCBc
YSBldmVudCwgdGhyb3VnaCBoYW5kbGVycyBmb3Igc2Nyb2xsYmFycyBhbmQKZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAppbmRl
eCA0NzY2Y2JkLi43ZWExZjBjIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgK
KysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCkBAIC03Miw2ICs3Miw3IEBAIGNsYXNzIFFX
RUJLSVRfRVhQT1JUIFFXZWJQYWdlIDogcHVibGljIFFPYmplY3QgewogICAgIFFfUFJPUEVSVFko
TGlua0RlbGVnYXRpb25Qb2xpY3kgbGlua0RlbGVnYXRpb25Qb2xpY3kgUkVBRCBsaW5rRGVsZWdh
dGlvblBvbGljeSBXUklURSBzZXRMaW5rRGVsZWdhdGlvblBvbGljeSkKICAgICBRX1BST1BFUlRZ
KFFQYWxldHRlIHBhbGV0dGUgUkVBRCBwYWxldHRlIFdSSVRFIHNldFBhbGV0dGUpCiAgICAgUV9Q
Uk9QRVJUWShib29sIGNvbnRlbnRFZGl0YWJsZSBSRUFEIGlzQ29udGVudEVkaXRhYmxlIFdSSVRF
IHNldENvbnRlbnRFZGl0YWJsZSkKKyAgICBRX1BST1BFUlRZKGJvb2wgc21hcnRJbnNlcnREZWxl
dGVFbmFibGVkIFJFQUQgc21hcnRJbnNlcnREZWxldGVFbmFibGVkIFdSSVRFIHNldFNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZCkKICAgICBRX0VOVU1TKExpbmtEZWxlZ2F0aW9uUG9saWN5IE5hdmln
YXRpb25UeXBlIFdlYkFjdGlvbikKIHB1YmxpYzoKICAgICBlbnVtIE5hdmlnYXRpb25UeXBlIHsK
QEAgLTI0Nyw2ICsyNDgsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudEVkaXRhYmxl
KGJvb2wgZWRpdGFibGUpOwogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdDsKIAor
ICAgIHZvaWQgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisgICAg
Ym9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHRvZ2dsZVNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOworCisgICAgdm9pZCBzZXRTZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCBzZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkKCkgY29uc3Q7CisKICNpZm5kZWYgUVRfTk9fQ09OVEVYVE1FTlUKICAg
ICBib29sIHN3YWxsb3dDb250ZXh0TWVudUV2ZW50KFFDb250ZXh0TWVudUV2ZW50ICpldmVudCk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oIGIvV2ViS2l0
L3F0L0FwaS9xd2VicGFnZV9wLmgKaW5kZXggMTVkZGZiMi4uZDhiYTVkZCAxMDA2NDQKLS0tIGEv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9w
LmgKQEAgLTE2Miw2ICsxNjIsOCBAQCBwdWJsaWM6CiAgICAgUU5ldHdvcmtBY2Nlc3NNYW5hZ2Vy
ICpuZXR3b3JrTWFuYWdlcjsKIAogICAgIGJvb2wgZm9yd2FyZFVuc3VwcG9ydGVkQ29udGVudDsK
KyAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKKyAgICBib29sIHNlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQ7CiAgICAgUVdlYlBhZ2U6OkxpbmtEZWxlZ2F0aW9uUG9saWN5
IGxpbmtQb2xpY3k7CiAKICAgICBRU2l6ZSB2aWV3cG9ydFNpemU7CmRpZmYgLS1naXQgYS9XZWJL
aXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA0YzAwMjc4Li42NGQz
YzdmIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0wMy0wNyAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW1F0XSBBZGQgc3VwcG9ydCBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIgY29tbWFuZHMu
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIExheW91dFRlc3RDb250cm9sbGVyIGNvbW1hbmRz
OgorICAgICAgICAgIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZAorICAgICAgICAgIHNldFNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQKKyAgICAgICAgICBleGVjQ29tbWFuZAorICAg
ICAgICAgIGlzQ29tbWFuZEVuYWJsZWQKKworICAgICAgICBVbnNraXAgdGVzdHM6CisgICAgICAg
IGVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCisgICAgICAgIGVk
aXRpbmcvZXhlY0NvbW1hbmQvMTkwODkuaHRtbAorICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5k
L2RlbGV0ZS1pbWFnZS1pbi1hbmNob3IuaHRtbAorICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5k
L2VuYWJsaW5nLWFuZC1zZWxlY3Rpb24tMi5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtY3Jhc2guaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVj
dGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWltZy1jcmFzaC5odG1sCisgICAgICAgIGVkaXRp
bmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbAorICAgICAgICBlZGl0aW5n
L3NlbGVjdGlvbi9zZWxlY3QtbGluZS5odG1sCisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvNTMw
MDM3OS5odG1sCisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1s
CisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC5odG1sCisgICAgICAg
IGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0
aW9uLzUxOTUxNjYtMi5odG1sCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM1ODQ0CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAocXRfZHJ0X2V4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZSk6CisgICAgICAgIChxdF9kcnRfaXND
b21tYW5kRW5hYmxlZCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0
ZSk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKKyAg
ICAgICAgKFFXZWJQYWdlOjpzbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOgorICAgICAgICAoUVdl
YlBhZ2U6OnRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk6CisgICAgICAgIChRV2ViUGFn
ZTo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgIChRV2ViUGFn
ZTo6c2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRR
dDo6c21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudFF0Ojp0b2dnbGVTbWFydEluc2VydERlbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRRdDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorCiAyMDEwLTAzLTA2ICBNYXJrIFJv
d2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgU2FtIFdl
aW5pZy4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCmluZGV4
IDkwZWJiMWQuLmQyN2U5MGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudFF0LmNwcApAQCAtMzMzLDE0ICszMzMsMTcgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6cGFn
ZURlc3Ryb3llZCgpCiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIG1fcGFnZS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7Cit9CisKK3ZvaWQgRWRp
dG9yQ2xpZW50UXQ6OnRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCkKK3sKKyAgICByZXR1cm4gbV9w
YWdlLT50b2dnbGVTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKIH0KIAogYm9vbCBFZGl0b3JD
bGllbnRRdDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wYWdlLT5zZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6
OnRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCkKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmgKaW5kZXggNDJhNDAyZi4uNmMyMDg5OCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHNob3VsZERlbGV0ZVJhbmdlKFJhbmdlKik7CiAgICAgdmlydHVh
bCBib29sIHNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UoSFRNTEVsZW1lbnQqKTsKICAgICB2aXJ0
dWFsIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7IAorICAgIHZpcnR1YWwgdm9pZCB0
b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOwogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsgCiAgICAgdmlydHVhbCBib29sIGlzQ29udGludW91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKCk7CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUNvbnRpbnVvdXNT
cGVsbENoZWNraW5nKCk7CiAgICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZCgpOwogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKICAgICB2aXJ0
dWFsIGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpOwotICAgIAogICAgIHZpcnR1YWwgYm9v
bCBzZWxlY3RXb3JkQmVmb3JlTWVudUV2ZW50KCk7CiAgICAgdmlydHVhbCBib29sIGlzRWRpdGFi
bGUoKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGRmNmYxNmUuLjA5NzVlNzcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAor
MjAxMC0wMy0wNyAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBBZGQgc3VwcG9ydCBm
b3IgTGF5b3V0VGVzdENvbnRyb2xsZXIgY29tbWFuZHMuCisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIExheW91dFRlc3RDb250cm9sbGVyIGNvbW1hbmRzOgorICAgICAgICAgIHNldFNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZAorICAgICAgICAgIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWQKKyAgICAgICAgICBleGVjQ29tbWFuZAorICAgICAgICAgIGlzQ29tbWFuZEVuYWJsZWQK
KworICAgICAgICBVbnNraXAgdGVzdHM6CisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvc21hcnQt
ZWRpdGluZy1kaXNhYmxlZC5odG1sCisgICAgICAgIGVkaXRpbmcvZXhlY0NvbW1hbmQvMTkwODku
aHRtbAorICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1pbWFnZS1pbi1hbmNob3Iu
aHRtbAorICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2VuYWJsaW5nLWFuZC1zZWxlY3Rpb24t
Mi5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2Ut
Y3Jhc2guaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNw
YWNlLWltZy1jcmFzaC5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNr
LXdoaXRlc3BhY2UuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbGluZS5o
dG1sCisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvNTMwMDM3OS5odG1sCisgICAgICAgIGVkaXRp
bmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCisgICAgICAgIGVkaXRpbmcvZGVsZXRp
bmcvc21hcnQtZGVsZXRlLTAwNC5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUx
NjYtMS5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMi5odG1sCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0CisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQp
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV4ZWNDb21tYW5k
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjppc0NvbW1hbmRFbmFibGVkKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisKIDIw
MTAtMDMtMDYgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IDcyY2Q4NzMuLmJk
MTQxYmYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC01Niw2ICs1Niw4IEBAIGV4dGVybiBpbnQgcXRf
ZHJ0X251bWJlck9mUGFnZXMoUVdlYkZyYW1lKiBxRnJhbWUsIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQpOwogZXh0ZXJuIHZvaWQgcXRfZHJ0X3dlYmluc3BlY3Rvcl9leGVjdXRlU2NyaXB0KFFX
ZWJQYWdlKiBwYWdlLCBsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKIGV4dGVy
biB2b2lkIHF0X2RydF93ZWJpbnNwZWN0b3Jfc2hvdyhRV2ViUGFnZSAqcGFnZSk7CiBleHRlcm4g
dm9pZCBxdF9kcnRfd2ViaW5zcGVjdG9yX2Nsb3NlKFFXZWJQYWdlICpwYWdlKTsKK2V4dGVybiB2
b2lkIHF0X2RydF9leGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoUVdlYlBhZ2UgKnBhZ2UsIGNvbnN0
IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKTsKK2V4dGVybiBib29sIHF0X2Ry
dF9pc0NvbW1hbmRFbmFibGVkKFFXZWJQYWdlICpwYWdlLCBjb25zdCBRU3RyaW5nJiBuYW1lKTsK
IAogTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFdlYkNvcmU6OkR1
bXBSZW5kZXJUcmVlKiBkcnQpCiAgICAgOiBRT2JqZWN0KCkKQEAgLTUwNiw1ICs1MDgsMjUgQEAg
aW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0IHdpZHRoLCBmbG9h
dCBoZWlnaHQpCiAgICAgcmV0dXJuIHF0X2RydF9udW1iZXJPZlBhZ2VzKG1fZHJ0LT53ZWJQYWdl
KCktPm1haW5GcmFtZSgpLCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAg
IG1fZHJ0LT53ZWJQYWdlKCktPnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChlbmFibGUpOwor
fQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3Bh
Y2VFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldFNlbGVj
dFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZW5hYmxlKTsKK30KKwordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZXhlY0NvbW1hbmQoY29uc3QgUVN0cmluZyYgbmFtZSwgY29uc3QgUVN0cmlu
ZyYgdmFsdWUpCit7CisgICAgcXRfZHJ0X2V4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShtX2RydC0+
d2ViUGFnZSgpLCBuYW1lLCB2YWx1ZSk7Cit9CisKK2Jvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmlzQ29tbWFuZEVuYWJsZWQoY29uc3QgUVN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICByZXR1
cm4gcXRfZHJ0X2lzQ29tbWFuZEVuYWJsZWQobV9kcnQtPndlYlBhZ2UoKSwgbmFtZSk7Cit9CisK
IGNvbnN0IHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjptYXhWaWV3V2lkdGggPSA4MDA7
CiBjb25zdCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWF4Vmlld0hlaWdodCA9IDYw
MDsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaAppbmRleCAzZDA0YmU1Li43YTU4NTVhIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCkBAIC0x
MzUsNiArMTM1LDEwIEBAIHB1YmxpYyBzbG90czoKICAgICB2b2lkIHNldFdpbmRvd0lzS2V5KGJv
b2wgaXNLZXkpOwogICAgIHZvaWQgc2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlcihib29sIGlz
Rmlyc3QpOwogICAgIHZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoYm9vbCBlbmFibGUpOworICAg
IHZvaWQgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wgZW5hYmxlKTsKKyAgICB2b2lk
IHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBlbmFibGUpOworICAgIHZv
aWQgZXhlY0NvbW1hbmQoY29uc3QgUVN0cmluZyYgbmFtZSwgY29uc3QgUVN0cmluZyYgdmFsdWUg
PSBRU3RyaW5nKCkpOworICAgIGJvb2wgaXNDb21tYW5kRW5hYmxlZChjb25zdCBRU3RyaW5nJiBu
YW1lKSBjb25zdDsKIAogICAgIGJvb2wgcGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRo
SWQoY29uc3QgUVN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJp
bmcmIGVsZW1lbnRJZCk7CiAgICAgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRX
aXRoSWQoY29uc3QgUVN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0
cmluZyYgZWxlbWVudElkKTsKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="review"
          id="33239"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50896</attachid>
            <date>2010-03-17 05:44:31 -0700</date>
            <delta_ts>2010-03-17 14:54:37 -0700</delta_ts>
            <desc>Updated Patch - with QDRTSupport</desc>
            <filename>0001-Add-support-for-LayoutTestController-commands.patch</filename>
            <type>text/plain</type>
            <size>60196</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSAxNWJhMThkZjFmYTlkMjMyMTg1ZjJjM2M3MDdhOWM2MzkwM2RkYWEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDE1IE1hciAyMDEwIDIyOjQ5OjI5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1
cHBvcnQgZm9yIExheW91dFRlc3RDb250cm9sbGVyIGNvbW1hbmRzOgogICBzZXRTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQKICAgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZAogICBl
eGVjQ29tbWFuZAogICBpc0NvbW1hbmRFbmFibGVkCgpVbnNraXAgdGVzdHM6CmVkaXRpbmcvZGVs
ZXRpbmcvc21hcnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCmVkaXRpbmcvZXhlY0NvbW1hbmQvMTkw
ODkuaHRtbAplZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1pbWFnZS1pbi1hbmNob3IuaHRtbApl
ZGl0aW5nL2V4ZWNDb21tYW5kL2VuYWJsaW5nLWFuZC1zZWxlY3Rpb24tMi5odG1sCmVkaXRpbmcv
c2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtY3Jhc2guaHRtbAplZGl0aW5nL3NlbGVj
dGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWltZy1jcmFzaC5odG1sCmVkaXRpbmcvc2VsZWN0
aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbAplZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qt
bGluZS5odG1sCmVkaXRpbmcvZGVsZXRpbmcvNTMwMDM3OS5odG1sCmVkaXRpbmcvZGVsZXRpbmcv
c21hcnQtZGVsZXRlLTAwMy5odG1sCmVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC5o
dG1sCmVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS5odG1sCmVkaXRpbmcvc2VsZWN0aW9uLzUx
OTUxNjYtMi5odG1sCgpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4
NDQKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMzUgKysKIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgICAgICAgICAgICAg
ICAgICAgIHwgICAxNCAtCiBXZWJDb3JlL1dlYkNvcmUucHJvICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgMTc4IC0tLS0tLS0tLS0KIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1l
LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJLaXQvcXQvQXBpL3F3ZWJw
YWdlLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzcgKy0tLS0tCiBXZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0
L3F0L0FwaS9xd2VicGFnZV9wLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFdl
YktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcCAgICAgICAgICAgICAgIHwgICAxNSAt
CiBXZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDYgKy0KIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICA0NiArKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnQuY3BwIHwgIDM1MiArKysrKysrKysrKysrKysrKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oICAgfCAgIDg4ICsrKysrCiBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwICAgICAgICB8ICAgMTUgKy0KIFdlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oICAgICAgICAgIHwgICAgMiArLQogV2Vi
S2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAgICAgICAgICAgfCAgIDIwICst
CiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MzYgKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3Bw
IHwgICAyMSArLQogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVR
dC5oICAgfCAgICAyICsKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxl
clF0LmNwcCAgIHwgICAxNSArLQogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250
cm9sbGVyUXQuaCAgICAgfCAgICA2ICstCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5jcHAgICB8ICAgNzUgKysrLS0KIC4uLi9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmggICAgIHwgICAgOCArLQogMjMgZmlsZXMgY2hhbmdlZCwg
NjU3IGluc2VydGlvbnMoKyksIDM2MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnQuaAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA2NjFhMDdhLi44YTgwMGZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIw
MTAtMDMtMDcgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gQWRkIHN1cHBvcnQgZm9y
IExheW91dFRlc3RDb250cm9sbGVyIGNvbW1hbmRzLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBMYXlvdXRUZXN0Q29udHJvbGxlciBjb21tYW5kczoKKyAgICAgICAgICBzZXRTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQKKyAgICAgICAgICBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkCisgICAgICAgICAgZXhlY0NvbW1hbmQKKyAgICAgICAgICBpc0NvbW1hbmRFbmFibGVkCisK
KyAgICAgICAgVW5za2lwIHRlc3RzOgorICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWVk
aXRpbmctZGlzYWJsZWQuaHRtbAorICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kLzE5MDg5Lmh0
bWwKKyAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtaW1hZ2UtaW4tYW5jaG9yLmh0
bWwKKyAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9lbmFibGluZy1hbmQtc2VsZWN0aW9uLTIu
aHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWNy
YXNoLmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFj
ZS1pbWctY3Jhc2guaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13
aGl0ZXNwYWNlLmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWxpbmUuaHRt
bAorICAgICAgICBlZGl0aW5nL2RlbGV0aW5nLzUzMDAzNzkuaHRtbAorICAgICAgICBlZGl0aW5n
L2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDMuaHRtbAorICAgICAgICBlZGl0aW5nL2RlbGV0aW5n
L3NtYXJ0LWRlbGV0ZS0wMDQuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2
LTEuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTIuaHRtbAorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg0NAorCisgICAg
ICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9kZWxldGluZy81MzAwMzc5LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3F0L2VkaXRpbmcvZGVsZXRpbmcvc21h
cnQtZGVsZXRlLTAwNC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvZWRpdGlu
Zy9zZWxlY3Rpb24vNTE5NTE2Ni0xLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTItZXhwZWN0ZWQudHh0OgorCiAyMDEwLTAzLTA2
ICBKb2FubWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggMDM0
ODMzOS4uMzQ4ZjQ4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0yMjgsOCArMjI4LDYg
QEAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVzaWRlLWNyLXNwYW4uaHRtbAogIyBN
aXNzaW5nIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcygpCiBmYXN0L2RvbS9XaW5kb3cv
d2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWZyYW1lcy5odG1sCiAKLSMgTWlzc2luZyBsYXlvdXRU
ZXN0Q29udHJvbGxlci5leGVjQ29tbWFuZCgpCi1lZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1p
bWFnZS1pbi1hbmNob3IuaHRtbCAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwogCiAjIC0tLS0t
LS0gbWlzc2luZyBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMKQEAgLTI4Niw3ICsyODQs
NiBAQCBmYXN0L3J1YnkvcnVieURPTS1yZW1vdmUtdGV4dDIuaHRtbAogCiAjIC0tLS0tLS0gZmFp
bGluZyBlZGl0aW5nIHRlc3RzCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS10by1lbmQtb2YtcGFy
YWdyYXBoLmh0bWwKLWVkaXRpbmcvZXhlY0NvbW1hbmQvZW5hYmxpbmctYW5kLXNlbGVjdGlvbi0y
Lmh0bWwKIGVkaXRpbmcvZXhlY0NvbW1hbmQvbnNyZXNwb25kZXItaW5kZW50Lmh0bWwKIGVkaXRp
bmcvZXhlY0NvbW1hbmQvbnNyZXNwb25kZXItb3V0ZGVudC5odG1sCiBlZGl0aW5nL2lucHV0L2Vt
YWNzLWN0cmwtby5odG1sCkBAIC0xMDc2LDcgKzEwNzMsNiBAQCBmYXN0L2Zvcm1zL21lbnVsaXN0
LXdpZHRoLWNoYW5nZS5odG1sCiAjIHB1dCBpbnRvIHRoZSBza2lwcGVkIGxpc3QgZm9yIG5vdyB0
byBoYXZlIHNvbWUga2luZCBvZgogIyByZWZlcmVuY2UsIHNvIHdlIGRvbid0IGludHJvZHVjZSBy
ZWdyZXNzaW9ucy4KIGVkaXRpbmcvZGVsZXRpbmcvNTE0NDEzOS0yLmh0bWwKLWVkaXRpbmcvZGVs
ZXRpbmcvNTMwMDM3OS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1ibG9jay1tZXJnZS1j
b250ZW50cy0wMDEuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtYmxvY2stbWVyZ2UtY29u
dGVudHMtMDE5Lmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWJsb2NrLW1lcmdlLWNvbnRl
bnRzLTAyMC5odG1sCkBAIC0xMDg3LDggKzEwODMsNiBAQCBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0
ZS1saW5lLWVuZC13cy0wMDEuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGluZS1lbmQt
d3MtMDAyLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLXRvLXNlbGVjdC10YWJsZS5odG1s
CiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0aW9uVUktc2luZ2xlLWluc3RhbmNlLmh0bWwKLWVkaXRp
bmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCi1lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0
LWRlbGV0ZS0wMDQuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC80OTIwNDg4Lmh0bWwKIGVkaXRp
bmcvZXhlY0NvbW1hbmQvNDkyMDc0Mi0xLmh0bWwKIGVkaXRpbmcvZXhlY0NvbW1hbmQvY3JlYXRl
LWxpc3Qtd2l0aC1oci5odG1sCkBAIC0xMTIwLDE1ICsxMTE0LDEyIEBAIGVkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS10ZXh0LTAwMy5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvcXVpcmtzLW1vZGUt
YnItMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi80OTgzODU4Lmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uLzUxMzY2OTYuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLmh0bWwKLWVkaXRp
bmcvc2VsZWN0aW9uLzUxOTUxNjYtMi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hZnRlci1saW5l
LXdyYXAuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZW5kLW9mLWRvY3VtZW50Lmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uL21vdmUtbGVmdC1yaWdodC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxl
Y3QtYWxsLTAwMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLTAwMi5odG1sCiBl
ZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLTAwMy5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9z
ZWxlY3QtbGluZS5odG1sCiBlZGl0aW5nL3N0eWxlL2FwcGxlLXN0eWxlLWVkaXRhYmxlLW1peC5o
dG1sCiBlZGl0aW5nL3N0eWxlL2NyZWF0ZS1ibG9jay1mb3Itc3R5bGUtMDEyLmh0bWwKIGVkaXRp
bmcvc3R5bGUvZm9udC1mYW1pbHktd2l0aC1zcGFjZS5odG1sCkBAIC00NzUwLDE1ICs0NzQxLDEw
IEBAIGRvbS94aHRtbC9sZXZlbDMvY29yZS9jYW5vbmljYWxmb3JtMDkueGh0bWwKIGVkaXRpbmcv
ZGVsZXRpbmcvZGVsZXRlLWxpZ2F0dXJlLTAwMS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0
ZS1saWdhdHVyZS0wMDIuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1cmUtMDAz
Lmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCi1lZGl0
aW5nL2V4ZWNDb21tYW5kLzE5MDg5Lmh0bWwKIGVkaXRpbmcvaW5zZXJ0aW5nLzU4MDM3MDYtMS5o
dG1sCiBlZGl0aW5nL2luc2VydGluZy81OTk0NDgwLTIuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJk
L2ZpbGVzLWR1cmluZy1wYWdlLWRyYWdzLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9nZXQtZGF0
YS10ZXh0LXBsYWluLWRyb3AuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hp
dGVzcGFjZS1jcmFzaC5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNw
YWNlLWltZy1jcmFzaC5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNw
YWNlLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2RyYWctc3RhcnQtZXZlbnQtY2xpZW50LXgteS5o
dG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWJpZGkuaHRtbAogZWRpdGlu
Zy9zZWxlY3Rpb24vaGl0LXRlc3QtYW5vbnltb3VzLmh0bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGU0N2ZlYzYuLjU0ZTg0ODQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBy
bwpAQCAtMjA2OSw2ICsyMDY5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgLi4vV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcCBcCisgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9FZGl0Q29tbWFuZFF0LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkv
cXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAppbmRleCA5Y2ZjNThm
Li5kODVmMjE3IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIv
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC04NywxODQgKzg3LDYgQEAgUVRfQkVHSU5f
TkFNRVNQQUNFCiBleHRlcm4gUV9HVUlfRVhQT1JUIGludCBxdF9kZWZhdWx0RHBpKCk7CiBRVF9F
TkRfTkFNRVNQQUNFCiAKLWJvb2wgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X2hhc0RvY3VtZW50RWxl
bWVudChRV2ViRnJhbWUqIHFmcmFtZSkKLXsKLSAgICByZXR1cm4gUVdlYkZyYW1lUHJpdmF0ZTo6
Y29yZShxZnJhbWUpLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKLX0KLQotdm9pZCBR
V0VCS0lUX0VYUE9SVCBxdF9kcnRfc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoUVdlYkZy
YW1lKiBxZnJhbWUsIGJvb2wgZW5hYmxlZCkKLXsKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7
Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IGZyYW1lLT5wYWdlKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVy
bjsKLSAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAgY29udHJvbGxlci0+ZW5hYmxlUHJvZmlsZXIo
KTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRyb2xsZXItPmRpc2FibGVQcm9maWxlcigpOwotI2Vu
ZGlmCi19Ci0KLS8vIFBhdXNlIGEgZ2l2ZW4gQ1NTIGFuaW1hdGlvbiBvciB0cmFuc2l0aW9uIG9u
IHRoZSB0YXJnZXQgbm9kZSBhdCBhIHNwZWNpZmljIHRpbWUuCi0vLyBJZiB0aGUgYW5pbWF0aW9u
IG9yIHRyYW5zaXRpb24gaXMgYWxyZWFkeSBwYXVzZWQsIGl0IHdpbGwgdXBkYXRlIGl0cyBwYXVz
ZSB0aW1lLgotLy8gVGhpcyBtZXRob2QgaXMgb25seSBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0
ZXN0aW5nIHRoZSBDU1MgYW5pbWF0aW9uIGFuZCB0cmFuc2l0aW9uIHN5c3RlbS4KLWJvb2wgUVdF
QktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNlQW5pbWF0aW9uKFFXZWJGcmFtZSAqcWZyYW1lLCBjb25z
dCBRU3RyaW5nICZhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxl
bWVudElkKQotewotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZy
YW1lKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBbmlt
YXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOwotICAgIGlm
ICghY29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRG9jdW1lbnQqIGRv
YyA9IGZyYW1lLT5kb2N1bWVudCgpOwotICAgIFFfQVNTRVJUKGRvYyk7Ci0KLSAgICBOb2RlKiBj
b3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKLSAgICBpZiAoIWNvcmVO
b2RlIHx8ICFjb3JlTm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIGNvbnRyb2xsZXItPnBhdXNlQW5pbWF0aW9uQXRUaW1lKGNvcmVOb2RlLT5yZW5k
ZXJlcigpLCBhbmltYXRpb25OYW1lLCB0aW1lKTsKLX0KLQotYm9vbCBRV0VCS0lUX0VYUE9SVCBx
dF9kcnRfcGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eShRV2ViRnJhbWUgKnFmcmFtZSwgY29uc3Qg
UVN0cmluZyAmcHJvcGVydHlOYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVu
dElkKQotewotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1l
KTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBbmltYXRp
b25Db250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOwotICAgIGlmICgh
Y29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRG9jdW1lbnQqIGRvYyA9
IGZyYW1lLT5kb2N1bWVudCgpOwotICAgIFFfQVNTRVJUKGRvYyk7Ci0KLSAgICBOb2RlKiBjb3Jl
Tm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKLSAgICBpZiAoIWNvcmVOb2Rl
IHx8ICFjb3JlTm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmV0dXJuIGNvbnRyb2xsZXItPnBhdXNlVHJhbnNpdGlvbkF0VGltZShjb3JlTm9kZS0+cmVuZGVy
ZXIoKSwgcHJvcGVydHlOYW1lLCB0aW1lKTsKLX0KLQotLy8gUGF1c2UgYSBnaXZlbiBTVkcgYW5p
bWF0aW9uIG9uIHRoZSB0YXJnZXQgbm9kZSBhdCBhIHNwZWNpZmljIHRpbWUuCi0vLyBUaGlzIG1l
dGhvZCBpcyBvbmx5IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIHRlc3RpbmcgdGhlIFNWRyBhbmlt
YXRpb24gc3lzdGVtLgotYm9vbCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfcGF1c2VTVkdBbmltYXRp
b24oUVdlYkZyYW1lICpxZnJhbWUsIGNvbnN0IFFTdHJpbmcgJmFuaW1hdGlvbklkLCBkb3VibGUg
dGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVudElkKQotewotI2lmICFFTkFCTEUoU1ZHKQotICAg
IHJldHVybiBmYWxzZTsKLSNlbHNlCi0gICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0
ZTo6Y29yZShxZnJhbWUpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICBRX0FTU0VSVChk
b2MpOwotCi0gICAgaWYgKCFkb2MtPnN2Z0V4dGVuc2lvbnMoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgTm9kZSogY29yZU5vZGUgPSBkb2MtPmdldEVsZW1lbnRCeUlkKGFuaW1hdGlv
bklkKTsKLSAgICBpZiAoIWNvcmVOb2RlIHx8ICFTVkdTTUlMRWxlbWVudDo6aXNTTUlMRWxlbWVu
dChjb3JlTm9kZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBkb2MtPmFj
Y2Vzc1NWR0V4dGVuc2lvbnMoKS0+c2FtcGxlQW5pbWF0aW9uQXRUaW1lKGVsZW1lbnRJZCwgc3Rh
dGljX2Nhc3Q8U1ZHU01JTEVsZW1lbnQqPihjb3JlTm9kZSksIHRpbWUpOwotI2VuZGlmCi19Ci0K
LS8vIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRp
b25zIChpbmNsdWRlcyBib3RoIENTUyB0cmFuc2l0aW9ucyBhbmQgQ1NTIGFuaW1hdGlvbnMpLgot
aW50IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoUVdlYkZy
YW1lICpxZnJhbWUpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29y
ZShxZnJhbWUpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7Ci0g
ICAgaWYgKCFjb250cm9sbGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
Y29udHJvbGxlci0+bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7Ci19Ci0KLXZvaWQgUVdFQktJ
VF9FWFBPUlQgcXRfZHJ0X2NsZWFyRnJhbWVOYW1lKFFXZWJGcmFtZSogcUZyYW1lKQotewotICAg
IEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKLSAgICBmcmFt
ZS0+dHJlZSgpLT5jbGVhck5hbWUoKTsKLX0KLQotaW50IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9q
YXZhU2NyaXB0T2JqZWN0c0NvdW50KCkKLXsKLSAgICByZXR1cm4gSlNET01XaW5kb3dCYXNlOjpj
b21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5nbG9iYWxPYmplY3RDb3VudCgpOwotfQotCi12b2lk
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3QoKQotewotICAg
IGdjQ29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0Tm93KCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9F
WFBPUlQgcXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJv
b2wgd2FpdFVudGlsRG9uZSkKLXsKLSAgICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdlQ29sbGVjdE9u
QWx0ZXJuYXRlVGhyZWFkRm9yRGVidWdnaW5nKHdhaXRVbnRpbERvbmUpOwotfQotCi0vLyBSZXR1
cm5zIHRoZSB2YWx1ZSBvZiBjb3VudGVyIGluIHRoZSBlbGVtZW50IHNwZWNpZmllZCBieSBcYSBp
ZC4KLVFTdHJpbmcgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X2NvdW50ZXJWYWx1ZUZvckVsZW1lbnRC
eUlkKFFXZWJGcmFtZSogcUZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCkKLXsKLSAgICBGcmFtZSog
ZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKERvY3VtZW50
KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpKSB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoaWQpOwotICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6Y291bnRlclZhbHVlRm9yRWxlbWVudChlbGVtZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIFFT
dHJpbmcoKTsKLX0KLQotaW50IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9wYWdlTnVtYmVyRm9yRWxl
bWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0KQotewotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6
OmNvcmUocUZyYW1lKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAg
ICBFbGVtZW50KiBlbGVtZW50ID0gZnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKEF0
b21pY1N0cmluZyhpZCkpOwotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIC0xOwot
Ci0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoZWxlbWVudCwg
RmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLX0KLQotaW50IFFXRUJLSVRfRVhQT1JUIHF0X2Ry
dF9udW1iZXJPZlBhZ2VzKFFXZWJGcmFtZSogcUZyYW1lLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVp
Z2h0KQotewotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1l
KTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1cm4gUHJp
bnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKGZyYW1lLCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCkp
OwotfQotCi0vLyBTdXNwZW5kIGFjdGl2ZSBET00gb2JqZWN0cyBpbiB0aGlzIGZyYW1lLgotdm9p
ZCBRV0VCS0lUX0VYUE9SVCBxdF9zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhRV2ViRnJhbWUqIHFG
cmFtZSkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFt
ZSk7Ci0gICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQo
KS0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKTsKLX0KLSAgICAgICAgICAgIAotLy8gUmVzdW1l
IGFjdGl2ZSBET00gb2JqZWN0cyBpbiB0aGlzIGZyYW1lLgotdm9pZCBRV0VCS0lUX0VYUE9SVCBx
dF9yZXN1bWVBY3RpdmVET01PYmplY3RzKFFXZWJGcmFtZSogcUZyYW1lKQotewotICAgIEZyYW1l
KiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKLSAgICBpZiAoZnJhbWUt
PmRvY3VtZW50KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5yZXN1bWVBY3RpdmVET01P
YmplY3RzKCk7Ci19ICAgICAgICAgICAgICAgICAgICAgICAgCi0KLXZvaWQgUVdFQktJVF9FWFBP
UlQgcXRfZHJ0X2V2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKFFXZWJGcmFtZSogcUZyYW1l
LCBpbnQgd29ybGRJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KQotewotICAgIEZyYW1lKiBmcmFt
ZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKLSAgICBpZiAoZnJhbWUpCi0gICAg
ICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHRJ
bldvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzY3JpcHQsIHRydWUpLmpzVmFsdWUoKTsK
LX0KLQogUVdlYkZyYW1lRGF0YTo6UVdlYkZyYW1lRGF0YShXZWJDb3JlOjpQYWdlKiBwYXJlbnRQ
YWdlLCBXZWJDb3JlOjpGcmFtZSogcGFyZW50RnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJGcmFtZUVsZW1lbnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgZnJh
bWVOYW1lKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaCBiL1dlYktpdC9x
dC9BcGkvcXdlYmZyYW1lLmgKaW5kZXggNjg1OTRmZC4uZDdlZTRjZCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCkBA
IC01MCw2ICs1MCw3IEBAIGNsYXNzIFFXZWJTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFFXZWJFbGVt
ZW50OwogY2xhc3MgUVdlYkVsZW1lbnRDb2xsZWN0aW9uOwogCitjbGFzcyBRRFJUU3VwcG9ydDsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBXaWRnZXRQcml2YXRlOwogICAgIGNsYXNz
IEZyYW1lTG9hZGVyQ2xpZW50UXQ7CkBAIC0yMjUsNiArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgUVdlYlBhZ2U7CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlUHJpdmF0ZTsK
ICAgICBmcmllbmQgY2xhc3MgUVdlYkZyYW1lUHJpdmF0ZTsKKyAgICBmcmllbmQgY2xhc3MgUURS
VFN1cHBvcnQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OldpZGdldFByaXZhdGU7CiAgICAg
ZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNs
YXNzIFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCAyYThhY2VkLi5i
N2FmZmQ1IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMTE5LDgxICsxMTksNyBAQAogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfb3ZlcndyaXRlUGx1
Z2luRGlyZWN0b3JpZXMoKQotewotICAgIFBsdWdpbkRhdGFiYXNlKiBkYiA9IFBsdWdpbkRhdGFi
YXNlOjppbnN0YWxsZWRQbHVnaW5zKC8qIHBvcHVsYXRlICovIGZhbHNlKTsKLQotICAgIFZlY3Rv
cjxTdHJpbmc+IHBhdGhzOwotICAgIFN0cmluZyBxdFBhdGgocWdldGVudigiUVRXRUJLSVRfUExV
R0lOX1BBVEgiKS5kYXRhKCkpOwotICAgIHF0UGF0aC5zcGxpdChVQ2hhcignOicpLCAvKiBhbGxv
d0VtcHR5RW50cmllcyAqLyBmYWxzZSwgcGF0aHMpOwotCi0gICAgZGItPnNldFBsdWdpbkRpcmVj
dG9yaWVzKHBhdGhzKTsKLSAgICBkYi0+cmVmcmVzaCgpOwotfQotCi1pbnQgUVdFQktJVF9FWFBP
UlQgcXRfZHJ0X3dvcmtlclRocmVhZENvdW50KCkKLXsKLSNpZiBFTkFCTEUoV09SS0VSUykKLSAg
ICByZXR1cm4gV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRDb3VudCgpOwotI2Vs
c2UKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCiBib29sIFFXZWJQYWdlUHJpdmF0ZTo6ZHJ0
UnVuID0gZmFsc2U7Ci12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9ydW4oYm9vbCBiKQotewot
ICAgIFFXZWJQYWdlUHJpdmF0ZTo6ZHJ0UnVuID0gYjsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9S
VCBxdF9kcnRfc2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9v
bCBlbmFibGVkKQotewotICAgIFFXZWJQYWdlUHJpdmF0ZTo6Y29yZShwYWdlKS0+c2V0dGluZ3Mo
KS0+c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChlbmFibGVkKTsKLX0KLQotdm9pZCBRV0VC
S0lUX0VYUE9SVCBxdF93ZWJwYWdlX3NldEdyb3VwTmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3Qg
UVN0cmluZyYgZ3JvdXBOYW1lKQotewotICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXRHcm91
cE5hbWUoZ3JvdXBOYW1lKTsKLX0KLQotUVN0cmluZyBRV0VCS0lUX0VYUE9SVCBxdF93ZWJwYWdl
X2dyb3VwTmFtZShRV2ViUGFnZSogcGFnZSkKLXsKLSAgICByZXR1cm4gcGFnZS0+aGFuZGxlKCkt
PnBhZ2UtPmdyb3VwTmFtZSgpOwotfQotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLXZvaWQgUVdF
QktJVF9FWFBPUlQgcXRfZHJ0X3dlYmluc3BlY3Rvcl9leGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBw
YWdlLCBsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KQotewotICAgIGlmICghcGFn
ZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1
YXRlRm9yVGVzdEluRnJvbnRlbmQoY2FsbElkLCBzY3JpcHQpOwotfQotCi12b2lkIFFXRUJLSVRf
RVhQT1JUIHF0X2RydF93ZWJpbnNwZWN0b3JfY2xvc2UoUVdlYlBhZ2UqIHBhZ2UpCi17Ci0gICAg
aWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAg
ICByZXR1cm47Ci0gICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+Y2xvc2UoKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfd2ViaW5zcGVjdG9y
X3Nob3coUVdlYlBhZ2UqIHBhZ2UpCi17Ci0gICAgaWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICByZXR1cm47Ci0gICAgcGFnZS0+aGFuZGxl
KCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOwotfQotCi12b2lkIFFXRUJL
SVRfRVhQT1JUIHF0X2RydF9zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoUVdlYlBhZ2UqIHBh
Z2UsIGJvb2wgZW5hYmxlZCkKLXsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVy
ID0gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAo
IWNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAg
Y29udHJvbGxlci0+c3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7Ci0gICAgZWxzZQotICAgICAgICBj
b250cm9sbGVyLT5zdG9wVGltZWxpbmVQcm9maWxlcigpOwotfQotI2VuZGlmCiAKIGNsYXNzIFFX
ZWJQYWdlV2lkZ2V0Q2xpZW50IDogcHVibGljIFFXZWJQYWdlQ2xpZW50IHsKIHB1YmxpYzoKQEAg
LTQ1OCw2ICszODQsOCBAQCBRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZShRV2ViUGFn
ZSAqcXEpCiAgICAgcGx1Z2luRmFjdG9yeSA9IDA7CiAgICAgaW5zaWRlT3BlbkNhbGwgPSBmYWxz
ZTsKICAgICBmb3J3YXJkVW5zdXBwb3J0ZWRDb250ZW50ID0gZmFsc2U7CisgICAgc21hcnRJbnNl
cnREZWxldGVFbmFibGVkID0gZmFsc2U7CisgICAgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZCA9IGZhbHNlOwogICAgIGVkaXRhYmxlID0gZmFsc2U7CiAgICAgdXNlRml4ZWRMYXlvdXQg
PSBmYWxzZTsKICAgICBsaW5rUG9saWN5ID0gUVdlYlBhZ2U6OkRvbnREZWxlZ2F0ZUxpbmtzOwpA
QCAtMTU4MCw3ICsxNTA4LDYgQEAgSW5zcGVjdG9yQ29udHJvbGxlciogUVdlYlBhZ2VQcml2YXRl
OjppbnNwZWN0b3JDb250cm9sbGVyKCkKICNlbmRpZgogfQogCi0KIC8qIQogICAgXGVudW0gUVdl
YlBhZ2U6OkZpbmRGbGFnCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaCBi
L1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAppbmRleCA0NzY2Y2JkLi5mZTdmNjQyIDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5oCkBAIC0zNjMsNiArMzYzLDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjsK
KyAgICBmcmllbmQgY2xhc3MgUURSVFN1cHBvcnQ7CiB9OwogCiBRX0RFQ0xBUkVfT1BFUkFUT1JT
X0ZPUl9GTEFHUyhRV2ViUGFnZTo6RmluZEZsYWdzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZV9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAppbmRleCAxNWRkZmIy
Li5kOGJhNWRkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAorKysgYi9X
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaApAQCAtMTYyLDYgKzE2Miw4IEBAIHB1YmxpYzoKICAg
ICBRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm5ldHdvcmtNYW5hZ2VyOwogCiAgICAgYm9vbCBmb3J3
YXJkVW5zdXBwb3J0ZWRDb250ZW50OworICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVk
OworICAgIGJvb2wgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDsKICAgICBRV2ViUGFn
ZTo6TGlua0RlbGVnYXRpb25Qb2xpY3kgbGlua1BvbGljeTsKIAogICAgIFFTaXplIHZpZXdwb3J0
U2l6ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcCBi
L1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcAppbmRleCA2YzI2YmQ3Li5iNjlm
MjRkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAKKysr
IGIvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCkBAIC0zMCwyMSArMzAsNiBA
QAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9k
cnRfd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBzb3VyY2VPcmlnaW4s
IGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFTdHJpbmcmIGRlc3Rp
bmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKLXsKLSAgICBTZWN1
cml0eU9yaWdpbjo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbigqU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGlu
YXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci19Ci0KLXZvaWQgUVdFQktJ
VF9FWFBPUlQgcXRfZHJ0X3Jlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpCi17Ci0gICAgU2Vj
dXJpdHlPcmlnaW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwotfQotCi12b2lkIFFX
RUJLSVRfRVhQT1JUIHF0X2RydF9zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2No
ZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgU2VjdXJp
dHlPcmlnaW46OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlk
ZGVuLCBzY2hlbWUpOwotfQotCiAvKiEKICAgICBcY2xhc3MgUVdlYlNlY3VyaXR5T3JpZ2luCiAg
ICAgXHNpbmNlIDQuNQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vidmlldy5jcHAgYi9X
ZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmNwcAppbmRleCA3OWMxNmM3Li5kNTdkYzZjIDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJ2
aWV3LmNwcApAQCAtMzk1LDExICszOTUsMTEgQEAgdm9pZCBRV2ViVmlldzo6c2V0UGFnZShRV2Vi
UGFnZSogcGFnZSkKICAgICAgICAgICAgICAgICB0aGlzLCBTTE9UKHVwZGF0ZU1pY3JvRm9jdXMo
KSkpOwogICAgICAgICBjb25uZWN0KGQtPnBhZ2UsIFNJR05BTChkZXN0cm95ZWQoKSksCiAgICAg
ICAgICAgICAgICAgdGhpcywgU0xPVChfcV9wYWdlRGVzdHJveWVkKCkpKTsKKyAgICAgICAgI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAgICAgICAgIGQtPnBhZ2UtPmQtPnBh
Z2UtPnNldHRpbmdzKCktPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKTsK
KyAgICAgICAgI2VuZGlmCiAgICAgfQogICAgIHNldEF0dHJpYnV0ZShRdDo6V0FfT3BhcXVlUGFp
bnRFdmVudCwgZC0+cGFnZSk7Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAg
IGQtPnBhZ2UtPmQtPnBhZ2UtPnNldHRpbmdzKCktPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdF
bmFibGVkKGZhbHNlKTsKLSNlbmRpZgogICAgIHVwZGF0ZSgpOwogfQogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA0YzAwMjc4Li42
NGQzYzdmIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0wMy0wNyAgUm9iZXJ0IEhvZ2FuICA8cm9i
ZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgW1F0XSBBZGQgc3VwcG9ydCBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIgY29tbWFu
ZHMuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIExheW91dFRlc3RDb250cm9sbGVyIGNvbW1h
bmRzOgorICAgICAgICAgIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZAorICAgICAgICAgIHNl
dFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQKKyAgICAgICAgICBleGVjQ29tbWFuZAor
ICAgICAgICAgIGlzQ29tbWFuZEVuYWJsZWQKKworICAgICAgICBVbnNraXAgdGVzdHM6CisgICAg
ICAgIGVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCisgICAgICAg
IGVkaXRpbmcvZXhlY0NvbW1hbmQvMTkwODkuaHRtbAorICAgICAgICBlZGl0aW5nL2V4ZWNDb21t
YW5kL2RlbGV0ZS1pbWFnZS1pbi1hbmNob3IuaHRtbAorICAgICAgICBlZGl0aW5nL2V4ZWNDb21t
YW5kL2VuYWJsaW5nLWFuZC1zZWxlY3Rpb24tMi5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0
aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtY3Jhc2guaHRtbAorICAgICAgICBlZGl0aW5nL3Nl
bGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWltZy1jcmFzaC5odG1sCisgICAgICAgIGVk
aXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbAorICAgICAgICBlZGl0
aW5nL3NlbGVjdGlvbi9zZWxlY3QtbGluZS5odG1sCisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcv
NTMwMDM3OS5odG1sCisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5o
dG1sCisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC5odG1sCisgICAg
ICAgIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS5odG1sCisgICAgICAgIGVkaXRpbmcvc2Vs
ZWN0aW9uLzUxOTUxNjYtMi5odG1sCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM1ODQ0CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAocXRfZHJ0X2V4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZSk6CisgICAgICAgIChxdF9kcnRf
aXNDb21tYW5kRW5hYmxlZCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJp
dmF0ZSk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKToK
KyAgICAgICAgKFFXZWJQYWdlOjpzbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOgorICAgICAgICAo
UVdlYlBhZ2U6OnRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk6CisgICAgICAgIChRV2Vi
UGFnZTo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgIChRV2Vi
UGFnZTo6c2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRRdDo6c21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudFF0Ojp0b2dnbGVTbWFydEluc2VydERlbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRRdDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorCiAyMDEwLTAzLTA2ICBNYXJr
IFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgU2Ft
IFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZWRlMwot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnQuY3BwCkBAIC0wLDAgKzEsMzUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJEdW1w
UmVuZGVyVHJlZVN1cHBvcnQuaCIKKworI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKKyNp
bmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJDb250ZXh0TWVudS5oIgorI2luY2x1ZGUgIkNv
bnRleHRNZW51Q2xpZW50UXQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkdDQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkVkaXRvci5oIgorI2lu
Y2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCisjaW5j
bHVkZSAiUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisKKyNpbmNsdWRl
ICJxd2VicGFnZS5oIgorI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKKyNpbmNsdWRlICJxd2ViZnJh
bWUuaCIKKyNpbmNsdWRlICJxd2ViZnJhbWVfcC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworUURSVFN1cHBvcnQ6OlFEUlRTdXBwb3J0KCkKK3sKKyAgICBydW4oZmFsc2UpOworfQor
CitRRFJUU3VwcG9ydDo6flFEUlRTdXBwb3J0KCkKK3sKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6
b3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKQoreworICAgIFBsdWdpbkRhdGFiYXNlKiBkYiA9
IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKC8qIHBvcHVsYXRlICovIGZhbHNlKTsK
KworICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOworICAgIFN0cmluZyBxdFBhdGgocWdldGVudigi
UVRXRUJLSVRfUExVR0lOX1BBVEgiKS5kYXRhKCkpOworICAgIHF0UGF0aC5zcGxpdChVQ2hhcign
OicpLCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBmYWxzZSwgcGF0aHMpOworCisgICAgZGItPnNl
dFBsdWdpbkRpcmVjdG9yaWVzKHBhdGhzKTsKKyAgICBkYi0+cmVmcmVzaCgpOworfQorCitpbnQg
UURSVFN1cHBvcnQ6OndvcmtlclRocmVhZENvdW50KCkKK3sKKyNpZiBFTkFCTEUoV09SS0VSUykK
KyAgICByZXR1cm4gV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRDb3VudCgpOwor
I2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit2b2lkIFFEUlRTdXBwb3J0OjpydW4o
Ym9vbCBiKQoreworICAgIFFXZWJQYWdlUHJpdmF0ZTo6ZHJ0UnVuID0gYjsKK30KKwordm9pZCBR
RFJUU3VwcG9ydDo6c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChRV2ViUGFnZSogcGFnZSwg
Ym9vbCBlbmFibGVkKQoreworICAgIFFXZWJQYWdlUHJpdmF0ZTo6Y29yZShwYWdlKS0+c2V0dGlu
Z3MoKS0+c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChlbmFibGVkKTsKK30KKwordm9pZCBR
RFJUU3VwcG9ydDo6d2VicGFnZV9zZXRHcm91cE5hbWUoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFT
dHJpbmcmIGdyb3VwTmFtZSkKK3sKKyAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+c2V0R3JvdXBO
YW1lKGdyb3VwTmFtZSk7Cit9CisKK1FTdHJpbmcgUURSVFN1cHBvcnQ6OndlYnBhZ2VfZ3JvdXBO
YW1lKFFXZWJQYWdlKiBwYWdlKQoreworICAgIHJldHVybiBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+
Z3JvdXBOYW1lKCk7Cit9CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQordm9pZCBRRFJUU3VwcG9y
dDo6d2ViaW5zcGVjdG9yX2V4ZWN1dGVTY3JpcHQoUVdlYlBhZ2UqIHBhZ2UsIGxvbmcgY2FsbElk
LCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpCit7CisgICAgaWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+aGFu
ZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZXZhbHVhdGVGb3JUZXN0SW5Gcm9u
dGVuZChjYWxsSWQsIHNjcmlwdCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OndlYmluc3BlY3Rv
cl9jbG9zZShRV2ViUGFnZSogcGFnZSkKK3sKKyAgICBpZiAoIXBhZ2UtPmhhbmRsZSgpLT5wYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5oYW5k
bGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jbG9zZSgpOworfQorCit2b2lkIFFE
UlRTdXBwb3J0Ojp3ZWJpbnNwZWN0b3Jfc2hvdyhRV2ViUGFnZSogcGFnZSkKK3sKKyAgICBpZiAo
IXBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
aG93KCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxl
ZChRV2ViUGFnZSogcGFnZSwgYm9vbCBlbmFibGVkKQoreworICAgIEluc3BlY3RvckNvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChlbmFi
bGVkKQorICAgICAgICBjb250cm9sbGVyLT5zdGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKKyAgICBl
bHNlCisgICAgICAgIGNvbnRyb2xsZXItPnN0b3BUaW1lbGluZVByb2ZpbGVyKCk7Cit9CisKK3Zv
aWQgUURSVFN1cHBvcnQ6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShRV2ViUGFnZSogcGFnZSwg
Y29uc3QgUVN0cmluZyYgbmFtZSwgY29uc3QgUVN0cmluZyYgdmFsdWUpCit7CisgICAgcGFnZS0+
aGFuZGxlKCktPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+
ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuZXhlY3V0ZSh2YWx1ZSk7Cit9CisKK2Jvb2wgUURSVFN1
cHBvcnQ6OmlzQ29tbWFuZEVuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG5h
bWUpCit7CisgICAgcmV0dXJuIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmlzRW5hYmxl
ZCgpOworfQorCisjZW5kaWYKKworYm9vbCBRRFJUU3VwcG9ydDo6aGFzRG9jdW1lbnRFbGVtZW50
KFFXZWJGcmFtZSogcWZyYW1lKQoreworICAgIHJldHVybiBRV2ViRnJhbWVQcml2YXRlOjpjb3Jl
KHFmcmFtZSktPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworfQorCit2b2lkIFFEUlRT
dXBwb3J0OjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChRV2ViRnJhbWUqIHFmcmFtZSwg
Ym9vbCBlbmFibGVkKQoreworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIEZy
YW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKKyAgICBJbnNwZWN0
b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChl
bmFibGVkKQorICAgICAgICBjb250cm9sbGVyLT5lbmFibGVQcm9maWxlcigpOworICAgIGVsc2UK
KyAgICAgICAgY29udHJvbGxlci0+ZGlzYWJsZVByb2ZpbGVyKCk7CisjZW5kaWYKK30KKworLy8g
UGF1c2UgYSBnaXZlbiBDU1MgYW5pbWF0aW9uIG9yIHRyYW5zaXRpb24gb24gdGhlIHRhcmdldCBu
b2RlIGF0IGEgc3BlY2lmaWMgdGltZS4KKy8vIElmIHRoZSBhbmltYXRpb24gb3IgdHJhbnNpdGlv
biBpcyBhbHJlYWR5IHBhdXNlZCwgaXQgd2lsbCB1cGRhdGUgaXRzIHBhdXNlIHRpbWUuCisvLyBU
aGlzIG1ldGhvZCBpcyBvbmx5IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIHRlc3RpbmcgdGhlIENT
UyBhbmltYXRpb24gYW5kIHRyYW5zaXRpb24gc3lzdGVtLgorYm9vbCBRRFJUU3VwcG9ydDo6cGF1
c2VBbmltYXRpb24oUVdlYkZyYW1lICpxZnJhbWUsIGNvbnN0IFFTdHJpbmcgJmFuaW1hdGlvbk5h
bWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nICZlbGVtZW50SWQpCit7CisgICAgRnJhbWUq
IGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOworICAgIGlmICghZnJhbWUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRy
b2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBEb2N1bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7
CisgICAgUV9BU1NFUlQoZG9jKTsKKworICAgIE5vZGUqIGNvcmVOb2RlID0gZG9jLT5nZXRFbGVt
ZW50QnlJZChlbGVtZW50SWQpOworICAgIGlmICghY29yZU5vZGUgfHwgIWNvcmVOb2RlLT5yZW5k
ZXJlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gY29udHJvbGxlci0+
cGF1c2VBbmltYXRpb25BdFRpbWUoY29yZU5vZGUtPnJlbmRlcmVyKCksIGFuaW1hdGlvbk5hbWUs
IHRpbWUpOworfQorCitib29sIFFEUlRTdXBwb3J0OjpwYXVzZVRyYW5zaXRpb25PZlByb3BlcnR5
KFFXZWJGcmFtZSAqcWZyYW1lLCBjb25zdCBRU3RyaW5nICZwcm9wZXJ0eU5hbWUsIGRvdWJsZSB0
aW1lLCBjb25zdCBRU3RyaW5nICZlbGVtZW50SWQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdl
YkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFt
ZS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBEb2N1bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgUV9BU1NF
UlQoZG9jKTsKKworICAgIE5vZGUqIGNvcmVOb2RlID0gZG9jLT5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SWQpOworICAgIGlmICghY29yZU5vZGUgfHwgIWNvcmVOb2RlLT5yZW5kZXJlcigpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gY29udHJvbGxlci0+cGF1c2VUcmFuc2l0
aW9uQXRUaW1lKGNvcmVOb2RlLT5yZW5kZXJlcigpLCBwcm9wZXJ0eU5hbWUsIHRpbWUpOworfQor
CisvLyBQYXVzZSBhIGdpdmVuIFNWRyBhbmltYXRpb24gb24gdGhlIHRhcmdldCBub2RlIGF0IGEg
c3BlY2lmaWMgdGltZS4KKy8vIFRoaXMgbWV0aG9kIGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNl
ZCBmb3IgdGVzdGluZyB0aGUgU1ZHIGFuaW1hdGlvbiBzeXN0ZW0uCitib29sIFFEUlRTdXBwb3J0
OjpwYXVzZVNWR0FuaW1hdGlvbihRV2ViRnJhbWUgKnFmcmFtZSwgY29uc3QgUVN0cmluZyAmYW5p
bWF0aW9uSWQsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nICZlbGVtZW50SWQpCit7CisjaWYg
IUVOQUJMRShTVkcpCisgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKKyAgICBGcmFtZSogZnJhbWUg
PSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgp
OworICAgIFFfQVNTRVJUKGRvYyk7CisKKyAgICBpZiAoIWRvYy0+c3ZnRXh0ZW5zaW9ucygpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBOb2RlKiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxl
bWVudEJ5SWQoYW5pbWF0aW9uSWQpOworICAgIGlmICghY29yZU5vZGUgfHwgIVNWR1NNSUxFbGVt
ZW50Ojppc1NNSUxFbGVtZW50KGNvcmVOb2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIGRvYy0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5zYW1wbGVBbmltYXRpb25BdFRp
bWUoZWxlbWVudElkLCBzdGF0aWNfY2FzdDxTVkdTTUlMRWxlbWVudCo+KGNvcmVOb2RlKSwgdGlt
ZSk7CisjZW5kaWYKK30KKworLy8gUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGN1cnJlbnRs
eSBydW5uaW5nIGFuaW1hdGlvbnMgKGluY2x1ZGVzIGJvdGggQ1NTIHRyYW5zaXRpb25zIGFuZCBD
U1MgYW5pbWF0aW9ucykuCitpbnQgUURSVFN1cHBvcnQ6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9u
cyhRV2ViRnJhbWUgKnFmcmFtZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2
YXRlOjpjb3JlKHFmcmFtZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IGZyYW1lLT5hbmltYXRp
b24oKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiBjb250cm9sbGVyLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKK30KKwordm9p
ZCBRRFJUU3VwcG9ydDo6Y2xlYXJGcmFtZU5hbWUoUVdlYkZyYW1lKiBxRnJhbWUpCit7CisgICAg
RnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOworICAgIGZyYW1l
LT50cmVlKCktPmNsZWFyTmFtZSgpOworfQorCitpbnQgUURSVFN1cHBvcnQ6OmphdmFTY3JpcHRP
YmplY3RzQ291bnQoKQoreworICAgIHJldHVybiBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xv
YmFsRGF0YSgpLT5oZWFwLmdsb2JhbE9iamVjdENvdW50KCk7Cit9CisKK3ZvaWQgUURSVFN1cHBv
cnQ6OmdhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgpCit7CisgICAgZ2NDb250cm9sbGVyKCkuZ2Fy
YmFnZUNvbGxlY3ROb3coKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6Z2FyYmFnZUNvbGxlY3Rv
cl9jb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKQoreworICAgIGdj
Q29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmco
d2FpdFVudGlsRG9uZSk7Cit9CisKKy8vIFJldHVybnMgdGhlIHZhbHVlIG9mIGNvdW50ZXIgaW4g
dGhlIGVsZW1lbnQgc3BlY2lmaWVkIGJ5IFxhIGlkLgorUVN0cmluZyBRRFJUU3VwcG9ydDo6Y291
bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJpbmcm
IGlkKQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1l
KTsKKyAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkpIHsKKyAg
ICAgICAgRWxlbWVudCogZWxlbWVudCA9IGRvY3VtZW50LT5nZXRFbGVtZW50QnlJZChpZCk7Cisg
ICAgICAgIHJldHVybiBXZWJDb3JlOjpjb3VudGVyVmFsdWVGb3JFbGVtZW50KGVsZW1lbnQpOwor
ICAgIH0KKyAgICByZXR1cm4gUVN0cmluZygpOworfQorCitpbnQgUURSVFN1cHBvcnQ6OnBhZ2VO
dW1iZXJGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQs
IGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZy
YW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVy
biAtMTsKKworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0RWxl
bWVudEJ5SWQoQXRvbWljU3RyaW5nKGlkKSk7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICBy
ZXR1cm4gLTE7CisKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVu
dChlbGVtZW50LCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCkpOworfQorCitpbnQgUURSVFN1cHBv
cnQ6Om51bWJlck9mUGFnZXMoUVdlYkZyYW1lKiBxRnJhbWUsIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJh
bWUpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiBQ
cmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoZnJhbWUsIEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0
KSk7Cit9CisKKy8vIFN1c3BlbmQgYWN0aXZlIERPTSBvYmplY3RzIGluIHRoaXMgZnJhbWUuCit2
b2lkIFFEUlRTdXBwb3J0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhRV2ViRnJhbWUqIHFGcmFt
ZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7
CisgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+
c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKTsKK30KKworLy8gUmVzdW1lIGFjdGl2ZSBET00gb2Jq
ZWN0cyBpbiB0aGlzIGZyYW1lLgordm9pZCBRRFJUU3VwcG9ydDo6cmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0cyhRV2ViRnJhbWUqIHFGcmFtZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQ
cml2YXRlOjpjb3JlKHFGcmFtZSk7CisgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpOworfQorCit2b2lk
IFFEUlRTdXBwb3J0OjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChRV2ViRnJhbWUqIHFG
cmFtZSwgaW50IHdvcmxkSWQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCkKK3sKKyAgICBGcmFtZSog
ZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7CisgICAgaWYgKGZyYW1lKQor
ICAgICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2Ny
aXB0SW5Xb3JsZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc2NyaXB0LCB0cnVlKS5qc1ZhbHVl
KCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29u
c3QgUVN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3Rv
Y29sLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpCit7CisgICAgU2VjdXJpdHlPcmlnaW46OndoaXRlTGlzdEFjY2Vzc0Zyb21P
cmlnaW4oKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRv
bWFpbnMpOworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlz
dHMoKQoreworICAgIFNlY3VyaXR5T3JpZ2luOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMo
KTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZv
clVSTFNjaGVtZShib29sIGZvcmJpZGRlbiwgY29uc3QgUVN0cmluZyYgc2NoZW1lKQoreworICAg
IFNlY3VyaXR5T3JpZ2luOjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1l
KGZvcmJpZGRlbiwgc2NoZW1lKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6c2V0U21hcnRJbnNl
cnREZWxldGVFbmFibGVkKFFXZWJQYWdlICpwYWdlLCBib29sIGVuYWJsZWQpCit7CisgICAgcGFn
ZS0+ZC0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkID0gZW5hYmxlZDsKK30KKworCit2b2lkIFFE
UlRTdXBwb3J0OjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKFFXZWJQYWdlICpw
YWdlLCBib29sIGVuYWJsZWQpCit7CisgICAgcGFnZS0+ZC0+c2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5iMTU0ZTFkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgICAgQ29weXJp
Z2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyovCisKKyNpZm5kZWYgUURSVFNVUFBPUlRfSAorI2RlZmluZSBRRFJUU1VQUE9SVF9ICisKKyNp
bmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKKyNpbmNsdWRlIDxRdENvcmUvcXN0cmluZy5oPgor
CitjbGFzcyBRV2ViUGFnZTsKK2NsYXNzIFFXZWJGcmFtZTsKK1FUX0JFR0lOX05BTUVTUEFDRQor
Y2xhc3MgUVVybDsKK1FUX0VORF9OQU1FU1BBQ0UKKworY2xhc3MgUVdFQktJVF9FWFBPUlQgUURS
VFN1cHBvcnQgeworCitwdWJsaWM6CisKKyAgICBRRFJUU3VwcG9ydCgpOworICAgIH5RRFJUU3Vw
cG9ydCgpOworCisgICAgdm9pZCBkdW1wX2VkaXRpbmdfY2FsbGJhY2tzKGJvb2wgYik7CisgICAg
dm9pZCBkdW1wX2ZyYW1lX2xvYWRlcihib29sIGIpOworICAgIHZvaWQgZHVtcF9yZXNvdXJjZV9s
b2FkX2NhbGxiYWNrcyhib29sIGIpOworICAgIHZvaWQgc2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5h
YmxlZChRV2ViUGFnZSosIGJvb2wpOworICAgIHZvaWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0Vu
YWJsZWQoUVdlYkZyYW1lKiwgYm9vbCBlbmFibGVkKTsKKyAgICB2b2lkIHNldFRpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZChRV2ViUGFnZSosIGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCBwYXVzZUFu
aW1hdGlvbihRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBkb3VibGUgdGltZSwgY29u
c3QgUVN0cmluZyYgZWxlbWVudElkKTsKKyAgICBib29sIHBhdXNlVHJhbnNpdGlvbk9mUHJvcGVy
dHkoUVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYgbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFT
dHJpbmcmIGVsZW1lbnRJZCk7CisgICAgYm9vbCBwYXVzZVNWR0FuaW1hdGlvbihRV2ViRnJhbWUq
LCBjb25zdCBRU3RyaW5nJiBhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcm
IGVsZW1lbnRJZCk7CisgICAgaW50IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhRV2ViRnJhbWUq
KTsKKyAgICB2b2lkIHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9v
bCBmb3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNjaGVtZSk7CisgICAgUVN0cmluZyB3ZWJwYWdl
X2dyb3VwTmFtZShRV2ViUGFnZSAqcGFnZSk7CisgICAgdm9pZCB3ZWJwYWdlX3NldEdyb3VwTmFt
ZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0cmluZyYgZ3JvdXBOYW1lKTsKKworICAgIHZvaWQg
ZHVtcF9zZXRfYWNjZXB0c19lZGl0aW5nKGJvb2wgYik7CisgICAgdm9pZCBjbGVhckZyYW1lTmFt
ZShRV2ViRnJhbWUqIHFGcmFtZSk7CisgICAgdm9pZCBvdmVyd3JpdGVQbHVnaW5EaXJlY3Rvcmll
cygpOworICAgIHZvaWQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CisgICAgYm9vbCBo
YXNEb2N1bWVudEVsZW1lbnQoUVdlYkZyYW1lKiBxRnJhbWUpOworCisgICAgaW50IGphdmFTY3Jp
cHRPYmplY3RzQ291bnQoKTsKKyAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgpOwor
CisgICAgdm9pZCBnYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29s
IHdhaXRVbnRpbERvbmUpOworCisgICAgdm9pZCB3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNv
bnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90
b2NvbCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRp
b25TdWJkb21haW5zKTsKKyAgICBRU3RyaW5nIGNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKFFX
ZWJGcmFtZSogcUZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCk7CisgICAgaW50IHdvcmtlclRocmVh
ZENvdW50KCk7CisgICAgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIHFG
cmFtZSwgY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOworICAg
IGludCBudW1iZXJPZlBhZ2VzKFFXZWJGcmFtZSogcUZyYW1lLCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KTsKKyAgICB2b2lkIHdlYmluc3BlY3Rvcl9leGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBw
YWdlLCBsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKKyAgICB2b2lkIHdlYmlu
c3BlY3Rvcl9zaG93KFFXZWJQYWdlKiBwYWdlKTsKKyAgICB2b2lkIHdlYmluc3BlY3Rvcl9jbG9z
ZShRV2ViUGFnZSogcGFnZSk7CisgICAgdm9pZCBleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoUVdl
YlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKTsK
KyAgICBib29sIGlzQ29tbWFuZEVuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcm
IG5hbWUpOworICAgIHZvaWQgcnVuKGJvb2wgYik7CisgICAgdm9pZCBzZXRTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxlZCk7CisgICAgdm9pZCBzZXRT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBib29sIGVuYWJs
ZWQpOworCisKKyAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzKFFXZWJGcmFtZSogcUZy
YW1lKTsKKyAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBxRnJhbWUp
OworICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoUVdlYkZyYW1lKiBxRnJh
bWUsIGludCB3b3JsZElkLCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpOworCisgICAgYm9vbCBkcnRS
dW47Cit9OworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5jcHAKaW5kZXggOTBlYmIxZC4uMDVhZDU4NSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50UXQuaCIKIAorI2luY2x1ZGUgIkR1bXBSZW5k
ZXJUcmVlU3VwcG9ydC5oIgorCiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKICNpbmNsdWRlICJxd2Vi
cGFnZV9wLmgiCiAKQEAgLTMzMywxNCArMzM1LDE5IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnBh
Z2VEZXN0cm95ZWQoKQogCiBib29sIEVkaXRvckNsaWVudFF0OjpzbWFydEluc2VydERlbGV0ZUVu
YWJsZWQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBtX3BhZ2UtPmQtPnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKK30KKwordm9pZCBF
ZGl0b3JDbGllbnRRdDo6dG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKQoreworICAgIGJvb2wgY3Vy
cmVudCA9IG1fcGFnZS0+ZC0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkOworICAgIG1fcGFnZS0+
ZC0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkID0gIWN1cnJlbnQ7CisvKiAgICByZXR1cm4gbV9w
YWdlLT5kLT50b2dnbGVTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsqLwogfQogCiBib29sIEVk
aXRvckNsaWVudFF0Ojppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3BhZ2Ut
PmQtPnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ7CiB9CiAKIHZvaWQgRWRpdG9yQ2xp
ZW50UXQ6OnRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCkKZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmgKaW5kZXggNDJhNDAyZi4uNmMyMDg5OCAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKKysrIGIvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZERlbGV0ZVJhbmdlKFJhbmdlKik7CiAgICAg
dmlydHVhbCBib29sIHNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UoSFRNTEVsZW1lbnQqKTsKICAg
ICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7IAorICAgIHZpcnR1YWwg
dm9pZCB0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOwogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVj
dFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsgCiAgICAgdmlydHVhbCBib29sIGlzQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUNvbnRp
bnVvdXNTcGVsbENoZWNraW5nKCk7CiAgICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNraW5n
RW5hYmxlZCgpOwogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKICAg
ICB2aXJ0dWFsIGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpOwotICAgIAogICAgIHZpcnR1
YWwgYm9vbCBzZWxlY3RXb3JkQmVmb3JlTWVudUV2ZW50KCk7CiAgICAgdmlydHVhbCBib29sIGlz
RWRpdGFibGUoKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9x
d2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcApp
bmRleCBiYTdhODdlLi42ODhjOGM5IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBh
Z2UvdHN0X3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3
ZWJwYWdlLmNwcApAQCAtMjAsNiArMjAsNyBAQAogKi8KIAogI2luY2x1ZGUgIi4uL3V0aWwuaCIK
KyNpbmNsdWRlICIuLi9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaCIKICNp
bmNsdWRlIDxRRGlyPgogI2luY2x1ZGUgPFFHcmFwaGljc1dpZGdldD4KICNpbmNsdWRlIDxRTGlu
ZUVkaXQ+CkBAIC03MjIsMTIgKzcyMyw5IEBAIHZvaWQgdHN0X1FXZWJQYWdlOjpjcmVhdGVWaWV3
bGVzc1BsdWdpbigpCiAKIH0KIAotLy8gaW1wb3J0IHByaXZhdGUgQVBJCi12b2lkIFFXRUJLSVRf
RVhQT1JUIHF0X3dlYnBhZ2Vfc2V0R3JvdXBOYW1lKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3Ry
aW5nJiBncm91cE5hbWUpOwotUVN0cmluZyBRV0VCS0lUX0VYUE9SVCBxdF93ZWJwYWdlX2dyb3Vw
TmFtZShRV2ViUGFnZSogcGFnZSk7Ci0KIHZvaWQgdHN0X1FXZWJQYWdlOjptdWx0aXBsZVBhZ2VH
cm91cHNBbmRMb2NhbFN0b3JhZ2UoKQogeworICAgIFFEUlRTdXBwb3J0KiBkcnQgPSBuZXcgUURS
VFN1cHBvcnQoKTsKICAgICBRRGlyIGRpcihRRGlyOjpjdXJyZW50UGF0aCgpKTsKICAgICBkaXIu
bWtkaXIoInBhdGgxIik7CiAgICAgZGlyLm1rZGlyKCJwYXRoMiIpOwpAQCAtNzM3LDEyICs3MzUs
MTIgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6Om11bHRpcGxlUGFnZUdyb3Vwc0FuZExvY2FsU3RvcmFn
ZSgpCiAKICAgICB2aWV3MS5wYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0
dGluZ3M6OkxvY2FsU3RvcmFnZUVuYWJsZWQsIHRydWUpOwogICAgIHZpZXcxLnBhZ2UoKS0+c2V0
dGluZ3MoKS0+c2V0TG9jYWxTdG9yYWdlUGF0aChRRGlyOjp0b05hdGl2ZVNlcGFyYXRvcnMoUURp
cjo6Y3VycmVudFBhdGgoKSArICIvcGF0aDEiKSk7Ci0gICAgcXRfd2VicGFnZV9zZXRHcm91cE5h
bWUodmlldzEucGFnZSgpLCAiZ3JvdXAxIik7CisgICAgZHJ0LT53ZWJwYWdlX3NldEdyb3VwTmFt
ZSh2aWV3MS5wYWdlKCksICJncm91cDEiKTsKICAgICB2aWV3Mi5wYWdlKCktPnNldHRpbmdzKCkt
PnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkxvY2FsU3RvcmFnZUVuYWJsZWQsIHRydWUpOyAg
ICAKICAgICB2aWV3Mi5wYWdlKCktPnNldHRpbmdzKCktPnNldExvY2FsU3RvcmFnZVBhdGgoUURp
cjo6dG9OYXRpdmVTZXBhcmF0b3JzKFFEaXI6OmN1cnJlbnRQYXRoKCkgKyAiL3BhdGgyIikpOwot
ICAgIHF0X3dlYnBhZ2Vfc2V0R3JvdXBOYW1lKHZpZXcyLnBhZ2UoKSwgImdyb3VwMiIpOwotICAg
IFFDT01QQVJFKHF0X3dlYnBhZ2VfZ3JvdXBOYW1lKHZpZXcxLnBhZ2UoKSksIFFTdHJpbmcoImdy
b3VwMSIpKTsKLSAgICBRQ09NUEFSRShxdF93ZWJwYWdlX2dyb3VwTmFtZSh2aWV3Mi5wYWdlKCkp
LCBRU3RyaW5nKCJncm91cDIiKSk7CisgICAgZHJ0LT53ZWJwYWdlX3NldEdyb3VwTmFtZSh2aWV3
Mi5wYWdlKCksICJncm91cDIiKTsKKyAgICBRQ09NUEFSRShkcnQtPndlYnBhZ2VfZ3JvdXBOYW1l
KHZpZXcxLnBhZ2UoKSksIFFTdHJpbmcoImdyb3VwMSIpKTsKKyAgICBRQ09NUEFSRShkcnQtPndl
YnBhZ2VfZ3JvdXBOYW1lKHZpZXcyLnBhZ2UoKSksIFFTdHJpbmcoImdyb3VwMiIpKTsKIAogCiAg
ICAgdmlldzEuc2V0SHRtbChRU3RyaW5nKCI8aHRtbD48Ym9keT4gPC9ib2R5PjwvaHRtbD4iKSwg
UVVybCgiaHR0cDovL3d3dy5teWV4YW1wbGUuY29tIikpOwpAQCAtMTQ1OSwxMSArMTQ1Nyw5IEBA
IHZvaWQgdHN0X1FXZWJQYWdlOjppbnB1dE1ldGhvZHMoKQogICAgIGRlbGV0ZSBjb250YWluZXI7
CiB9CiAKLS8vIGltcG9ydCBhIGxpdHRsZSBEUlQgaGVscGVyIGZ1bmN0aW9uIHRvIHRyaWdnZXIg
dGhlIGdhcmJhZ2UgY29sbGVjdG9yCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9nYXJiYWdl
Q29sbGVjdG9yX2NvbGxlY3QoKTsKLQogdm9pZCB0c3RfUVdlYlBhZ2U6OnByb3RlY3RCaW5kaW5n
c1J1bnRpbWVPYmplY3RzRnJvbUNvbGxlY3RvcigpCiB7CisgICAgUURSVFN1cHBvcnQqIGRydCA9
IG5ldyBRRFJUU3VwcG9ydCgpOwogICAgIFFTaWduYWxTcHkgbG9hZFNweShtX3ZpZXcsIFNJR05B
TChsb2FkRmluaXNoZWQoYm9vbCkpKTsKIAogICAgIFBsdWdpblBhZ2UqIG5ld1BhZ2UgPSBuZXcg
UGx1Z2luUGFnZShtX3ZpZXcpOwpAQCAtMTQ3OCw3ICsxNDc0LDcgQEAgdm9pZCB0c3RfUVdlYlBh
Z2U6OnByb3RlY3RCaW5kaW5nc1J1bnRpbWVPYmplY3RzRnJvbUNvbGxlY3RvcigpCiAKICAgICBu
ZXdQYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ0ZXN0bWUoJ2ZvbycpIik7
CiAKLSAgICBxdF9kcnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCk7CisgICAgZHJ0LT5nYXJi
YWdlQ29sbGVjdG9yX2NvbGxlY3QoKTsKIAogICAgIC8vIGRvbid0IGNyYXNoIQogICAgIG5ld1Bh
Z2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInRlc3RtZSgnYmFyJykiKTsKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpp
bmRleCBkZjZmMTZlLi4wOTc1ZTc3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTAtMDMtMDcg
IFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gQWRkIHN1cHBvcnQgZm9yIExheW91dFRl
c3RDb250cm9sbGVyIGNvbW1hbmRzLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBMYXlvdXRU
ZXN0Q29udHJvbGxlciBjb21tYW5kczoKKyAgICAgICAgICBzZXRTbWFydEluc2VydERlbGV0ZUVu
YWJsZWQKKyAgICAgICAgICBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkCisgICAg
ICAgICAgZXhlY0NvbW1hbmQKKyAgICAgICAgICBpc0NvbW1hbmRFbmFibGVkCisKKyAgICAgICAg
VW5za2lwIHRlc3RzOgorICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWVkaXRpbmctZGlz
YWJsZWQuaHRtbAorICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kLzE5MDg5Lmh0bWwKKyAgICAg
ICAgZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtaW1hZ2UtaW4tYW5jaG9yLmh0bWwKKyAgICAg
ICAgZWRpdGluZy9leGVjQ29tbWFuZC9lbmFibGluZy1hbmQtc2VsZWN0aW9uLTIuaHRtbAorICAg
ICAgICBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWNyYXNoLmh0bWwK
KyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1pbWctY3Jh
c2guaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNl
Lmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWxpbmUuaHRtbAorICAgICAg
ICBlZGl0aW5nL2RlbGV0aW5nLzUzMDAzNzkuaHRtbAorICAgICAgICBlZGl0aW5nL2RlbGV0aW5n
L3NtYXJ0LWRlbGV0ZS0wMDMuaHRtbAorICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRl
bGV0ZS0wMDQuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRtbAor
ICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTIuaHRtbAorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg0NAorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpleGVjQ29tbWFuZCk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNDb21tYW5kRW5hYmxlZCk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorCiAyMDEwLTAzLTA2ICBI
aXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
RHVtcFJlbmRlclRyZWVRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1w
UmVuZGVyVHJlZVF0LmNwcAppbmRleCA3NDA3YjI4Li5hNmI1ODNjIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVR
dC5oIgorI2luY2x1ZGUgIi4uLy4uLy4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnQuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlclF0LmgiCiAjaW5jbHVkZSAi
R0NDb250cm9sbGVyUXQuaCIKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlclF0LmgiCkBA
IC03NCwxMyArNzUsOCBAQAogCiAjaW5jbHVkZSA8cWRlYnVnLmg+CiAKLWV4dGVybiB2b2lkIHF0
X2RydF9ydW4oYm9vbCBiKTsKIGV4dGVybiB2b2lkIHF0X2R1bXBfc2V0X2FjY2VwdHNfZWRpdGlu
Zyhib29sIGIpOwogZXh0ZXJuIHZvaWQgcXRfZHVtcF9mcmFtZV9sb2FkZXIoYm9vbCBiKTsKLWV4
dGVybiB2b2lkIHF0X2RydF9jbGVhckZyYW1lTmFtZShRV2ViRnJhbWUqIHFGcmFtZSk7Ci1leHRl
cm4gdm9pZCBxdF9kcnRfb3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKTsKLWV4dGVybiB2b2lk
IHF0X2RydF9yZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMoKTsKLWV4dGVybiBib29sIHF0X2Ry
dF9oYXNEb2N1bWVudEVsZW1lbnQoUVdlYkZyYW1lKiBxRnJhbWUpOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTMxNCw3ICszMTAsNyBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRy
ZWUoKQogICAgICwgbV9lbmFibGVUZXh0T3V0cHV0KGZhbHNlKQogICAgICwgbV9zaW5nbGVGaWxl
TW9kZShmYWxzZSkKIHsKLSAgICBxdF9kcnRfb3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKTsK
KyAgICBtX2RydFN1cHBvcnQtPm92ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVzKCk7CiAgICAgUVdl
YlNldHRpbmdzOjplbmFibGVQZXJzaXN0ZW50U3RvcmFnZSgpOwogCiAgICAgLy8gY3JlYXRlIG91
ciBwcmltYXJ5IHRlc3RpbmcgcGFnZS92aWV3LgpAQCAtMzI2LDE0ICszMjIsMTUgQEAgRHVtcFJl
bmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKCkKIAogICAgIC8vIGNyZWF0ZSBvdXIgY29udHJvbGxl
cnMuIFRoaXMgaGFzIHRvIGJlIGRvbmUgYmVmb3JlIGNvbm5lY3RGcmFtZSwKICAgICAvLyBhcyBp
dCBleHBvcnRzIHRoZXJlIHRvIHRoZSBKYXZhU2NyaXB0IERPTSB3aW5kb3cuCi0gICAgbV9jb250
cm9sbGVyID0gbmV3IExheW91dFRlc3RDb250cm9sbGVyKHRoaXMpOworICAgIG1fZHJ0U3VwcG9y
dCA9IG5ldyBRRFJUU3VwcG9ydCgpOworICAgIG1fY29udHJvbGxlciA9IG5ldyBMYXlvdXRUZXN0
Q29udHJvbGxlcih0aGlzLCBtX2RydFN1cHBvcnQpOwogICAgIGNvbm5lY3QobV9jb250cm9sbGVy
LCBTSUdOQUwoc2hvd1BhZ2UoKSksIHRoaXMsIFNMT1Qoc2hvd1BhZ2UoKSkpOwogICAgIGNvbm5l
Y3QobV9jb250cm9sbGVyLCBTSUdOQUwoaGlkZVBhZ2UoKSksIHRoaXMsIFNMT1QoaGlkZVBhZ2Uo
KSkpOwogCiAgICAgY29ubmVjdChtX2NvbnRyb2xsZXIsIFNJR05BTChkb25lKCkpLCB0aGlzLCBT
TE9UKGR1bXAoKSkpOwogICAgIG1fZXZlbnRTZW5kZXIgPSBuZXcgRXZlbnRTZW5kZXIobV9wYWdl
KTsKICAgICBtX3RleHRJbnB1dENvbnRyb2xsZXIgPSBuZXcgVGV4dElucHV0Q29udHJvbGxlciht
X3BhZ2UpOwotICAgIG1fZ2NDb250cm9sbGVyID0gbmV3IEdDQ29udHJvbGxlcihtX3BhZ2UpOwor
ICAgIG1fZ2NDb250cm9sbGVyID0gbmV3IEdDQ29udHJvbGxlcihtX3BhZ2UsIG1fZHJ0U3VwcG9y
dCk7CiAKICAgICAvLyBub3cgY29ubmVjdCBvdXIgZGlmZmVyZW50IHNpZ25hbHMKICAgICBjb25u
ZWN0KG1fcGFnZSwgU0lHTkFMKGZyYW1lQ3JlYXRlZChRV2ViRnJhbWUgKikpLApAQCAtMzU2LDcg
KzM1Myw3IEBAIER1bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSgpCiAgICAgICAgICAgICB0
aGlzLCBTTE9UKHN0YXR1c0Jhck1lc3NhZ2UoY29uc3QgUVN0cmluZyYpKSk7CiAKICAgICBRT2Jq
ZWN0Ojpjb25uZWN0KHRoaXMsIFNJR05BTChxdWl0KCkpLCBxQXBwLCBTTE9UKHF1aXQoKSksIFF0
OjpRdWV1ZWRDb25uZWN0aW9uKTsKLSAgICBxdF9kcnRfcnVuKHRydWUpOworICAgIG1fZHJ0U3Vw
cG9ydC0+cnVuKHRydWUpOwogICAgIFFGb2N1c0V2ZW50IGV2ZW50KFFFdmVudDo6Rm9jdXNJbiwg
UXQ6OkFjdGl2ZVdpbmRvd0ZvY3VzUmVhc29uKTsKICAgICBRQXBwbGljYXRpb246OnNlbmRFdmVu
dChtX21haW5WaWV3LCAmZXZlbnQpOwogfQpAQCAtNDAzLDEyICs0MDAsMTIgQEAgdm9pZCBEdW1w
UmVuZGVyVHJlZTo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKQogICAgIG1f
cGFnZS0+dW5kb1N0YWNrKCktPmNsZWFyKCk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+c2V0
Wm9vbUZhY3RvcigxLjApOwogICAgIGNsZWFySGlzdG9yeShtX3BhZ2UpOwotICAgIHF0X2RydF9j
bGVhckZyYW1lTmFtZShtX3BhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBtX2RydFN1cHBvcnQtPmNs
ZWFyRnJhbWVOYW1lKG1fcGFnZS0+bWFpbkZyYW1lKCkpOwogCiAgICAgV29ya1F1ZXVlOjpzaGFy
ZWQoKS0+Y2xlYXIoKTsKICAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5zZXRGcm96ZW4oZmFsc2Up
OwogCi0gICAgcXRfZHJ0X3Jlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOworICAgIG1fZHJ0
U3VwcG9ydC0+cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CiAKICAgICBRTG9jYWxlOjpz
ZXREZWZhdWx0KFFMb2NhbGU6OmMoKSk7CiAgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOwpAQCAt
NTU5LDcgKzU1Niw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OmhpZGVQYWdlKCkKIAogUVN0cmlu
ZyBEdW1wUmVuZGVyVHJlZTo6ZHVtcEZyYW1lc0FzVGV4dChRV2ViRnJhbWUqIGZyYW1lKQogewot
ICAgIGlmICghZnJhbWUgfHwgIXF0X2RydF9oYXNEb2N1bWVudEVsZW1lbnQoZnJhbWUpKQorICAg
IGlmICghZnJhbWUgfHwgIW1fZHJ0U3VwcG9ydC0+aGFzRG9jdW1lbnRFbGVtZW50KGZyYW1lKSkK
ICAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKIAogICAgIFFTdHJpbmcgcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oCmluZGV4IDhk
ODBmODcuLmY5YmViNWQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0R1bXBSZW5kZXJUcmVlUXQuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9E
dW1wUmVuZGVyVHJlZVF0LmgKQEAgLTUzLDYgKzUzLDcgQEAgUVRfRU5EX05BTUVTUEFDRQogY2xh
c3MgUVdlYkZyYW1lOwogCiBjbGFzcyBMYXlvdXRUZXN0Q29udHJvbGxlcjsKK2NsYXNzIFFEUlRT
dXBwb3J0OwogY2xhc3MgRXZlbnRTZW5kZXI7CiBjbGFzcyBUZXh0SW5wdXRDb250cm9sbGVyOwog
Y2xhc3MgR0NDb250cm9sbGVyOwpAQCAtMTIzLDYgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgUVN0
cmluZyBkdW1wRnJhbWVzQXNUZXh0KFFXZWJGcmFtZSogZnJhbWUpOwogICAgIFFTdHJpbmcgZHVt
cEJhY2tGb3J3YXJkTGlzdCgpOwogICAgIExheW91dFRlc3RDb250cm9sbGVyICptX2NvbnRyb2xs
ZXI7CisgICAgUURSVFN1cHBvcnQgKm1fZHJ0U3VwcG9ydDsKIAogICAgIGJvb2wgbV9kdW1wUGl4
ZWxzOwogICAgIFFTdHJpbmcgbV9leHBlY3RlZEhhc2g7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5jcHAKaW5kZXggOWNjM2FhNy4uYTAyZTViZSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQu
Y3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmNw
cApAQCAtMjksMzAgKzI5LDI3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJH
Q0NvbnRyb2xsZXJRdC5oIgorI2luY2x1ZGUgIi4uLy4uLy4uL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaCIKIAogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CiAK
LWV4dGVybiBpbnQgcXRfZHJ0X2phdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKLWV4dGVybiB2b2lk
IHF0X2RydF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3QoKTsKLQotZXh0ZXJuIHZvaWQgcXRfZHJ0
X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGls
RG9uZSk7Ci0KLUdDQ29udHJvbGxlcjo6R0NDb250cm9sbGVyKFFXZWJQYWdlKiBwYXJlbnQpCitH
Q0NvbnRyb2xsZXI6OkdDQ29udHJvbGxlcihRV2ViUGFnZSogcGFyZW50LCBRRFJUU3VwcG9ydCog
ZHJ0U3VwcG9ydCkKICAgICA6IFFPYmplY3QocGFyZW50KQorICAgICwgbV9kcnRTdXBwb3J0KGRy
dFN1cHBvcnQpCiB7CiB9CiAKIHZvaWQgR0NDb250cm9sbGVyOjpjb2xsZWN0KCkgY29uc3QKIHsK
LSAgICBxdF9kcnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCk7CisgICAgbV9kcnRTdXBwb3J0
LT5nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3QoKTsKIH0KIAogdm9pZCBHQ0NvbnRyb2xsZXI6OmNv
bGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpIGNvbnN0CiB7Ci0gICAg
cXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKHdhaXRVbnRp
bERvbmUpOworICAgIG1fZHJ0U3VwcG9ydC0+Z2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0T25BbHRl
cm5hdGVUaHJlYWQod2FpdFVudGlsRG9uZSk7CiB9CiAKIHNpemVfdCBHQ0NvbnRyb2xsZXI6Omdl
dEpTT2JqZWN0Q291bnQoKSBjb25zdAogewotICAgIHJldHVybiBxdF9kcnRfamF2YVNjcmlwdE9i
amVjdHNDb3VudCgpOworICAgIHJldHVybiBtX2RydFN1cHBvcnQtPmphdmFTY3JpcHRPYmplY3Rz
Q291bnQoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dD
Q29udHJvbGxlclF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xs
ZXJRdC5oCmluZGV4IDhmNWI0MzIuLjU0MDRiMjYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuaApAQCAtMzIsMTcgKzMyLDIxIEBACiAjaW5jbHVk
ZSA8UU9iamVjdD4KIAogY2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBRRFJUU3VwcG9ydDsKIAogY2xh
c3MgR0NDb250cm9sbGVyIDogcHVibGljIFFPYmplY3QKIHsKICAgICBRX09CSkVDVAogcHVibGlj
OgotICAgIEdDQ29udHJvbGxlcihRV2ViUGFnZSogcGFyZW50KTsKKyAgICBHQ0NvbnRyb2xsZXIo
UVdlYlBhZ2UqIHBhcmVudCwgUURSVFN1cHBvcnQqIGRydFN1cHBvcnQpOwogCiBwdWJsaWMgc2xv
dHM6CiAgICAgdm9pZCBjb2xsZWN0KCkgY29uc3Q7CiAgICAgdm9pZCBjb2xsZWN0T25BbHRlcm5h
dGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKSBjb25zdDsKICAgICBzaXplX3QgZ2V0SlNPYmpl
Y3RDb3VudCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFFEUlRTdXBwb3J0KiBtX2RydFN1cHBv
cnQ7CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXggNzJjZDg3My4uODVlNjFjMSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICAqLwogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyUXQuaCIKKyNpbmNsdWRlICIuLi8u
Li8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgiCiAK
ICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVF0LmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCkBA
IC0zOSwyNyArNDAsMTEgQEAKIGV4dGVybiB2b2lkIHF0X2R1bXBfZWRpdGluZ19jYWxsYmFja3Mo
Ym9vbCBiKTsKIGV4dGVybiB2b2lkIHF0X2R1bXBfZnJhbWVfbG9hZGVyKGJvb2wgYik7CiBleHRl
cm4gdm9pZCBxdF9kdW1wX3Jlc291cmNlX2xvYWRfY2FsbGJhY2tzKGJvb2wgYik7Ci1leHRlcm4g
dm9pZCBxdF9kcnRfc2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChRV2ViUGFnZSosIGJvb2wp
OwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3NldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKFFXZWJG
cmFtZSosIGJvb2wgZW5hYmxlZCk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfc2V0VGltZWxpbmVQcm9m
aWxpbmdFbmFibGVkKFFXZWJQYWdlKiwgYm9vbCBlbmFibGVkKTsKLWV4dGVybiBib29sIHF0X2Ry
dF9wYXVzZUFuaW1hdGlvbihRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBkb3VibGUg
dGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKLWV4dGVybiBib29sIHF0X2RydF9wYXVz
ZVRyYW5zaXRpb25PZlByb3BlcnR5KFFXZWJGcmFtZSosIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGRv
dWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOwotZXh0ZXJuIGJvb2wgcXRfZHJ0
X3BhdXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFtZSosIGNvbnN0IFFTdHJpbmcmIGFuaW1hdGlvbklk
LCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKLWV4dGVybiBpbnQgcXRf
ZHJ0X251bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhRV2ViRnJhbWUqKTsKLWV4dGVybiB2b2lkIHF0
X2RydF9zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlk
ZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpOwotCi1leHRlcm4gdm9pZCBxdF9kcnRfd2hpdGVM
aXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFT
dHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci1leHRlcm4gUVN0cmluZyBxdF9k
cnRfY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFT
dHJpbmcmIGlkKTsKLWV4dGVybiBpbnQgcXRfZHJ0X3dvcmtlclRocmVhZENvdW50KCk7Ci1leHRl
cm4gaW50IHF0X2RydF9wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUs
IGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLWV4dGVybiBp
bnQgcXRfZHJ0X251bWJlck9mUGFnZXMoUVdlYkZyYW1lKiBxRnJhbWUsIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3dlYmluc3BlY3Rvcl9leGVjdXRlU2Ny
aXB0KFFXZWJQYWdlKiBwYWdlLCBsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsK
LWV4dGVybiB2b2lkIHF0X2RydF93ZWJpbnNwZWN0b3Jfc2hvdyhRV2ViUGFnZSAqcGFnZSk7Ci1l
eHRlcm4gdm9pZCBxdF9kcnRfd2ViaW5zcGVjdG9yX2Nsb3NlKFFXZWJQYWdlICpwYWdlKTsKLQot
TGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFdlYkNvcmU6OkR1bXBS
ZW5kZXJUcmVlKiBkcnQpCisKK0xheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJv
bGxlcihXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZSogZHJ0LCBRRFJUU3VwcG9ydCogZHJ0U3VwcG9y
dCkKICAgICA6IFFPYmplY3QoKQogICAgICwgbV9kcnQoZHJ0KQorICAgICwgbV9kcnRTdXBwb3J0
KGRydFN1cHBvcnQpCiB7CiAgICAgcmVzZXQoKTsKIH0KQEAgLTE0MSw3ICsxMjYsNyBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjp3YWl0VW50aWxEb25lKCkKIAogUVN0cmluZyBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoY29uc3QgUVN0cmluZyYg
aWQpCiB7Ci0gICAgcmV0dXJuIHF0X2RydF9jb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChtX2Ry
dC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKSwgaWQpOworICAgIHJldHVybiBtX2RydFN1cHBvcnQt
PmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgp
LCBpZCk7CiB9CiAKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2ViSGlzdG9yeUl0ZW1Db3Vu
dCgpCkBAIC0yOTMsMjQgKzI3OCwyNCBAQCBRU3RyaW5nIExheW91dFRlc3RDb250cm9sbGVyOjpk
ZWNvZGVIb3N0TmFtZShjb25zdCBRU3RyaW5nJiBob3N0KQogCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpjbG9zZVdlYkluc3BlY3RvcigpCiB7Ci0gICAgcXRfZHJ0X3dlYmluc3BlY3Rvcl9j
bG9zZShtX2RydC0+d2ViUGFnZSgpKTsKKyAgICBtX2RydFN1cHBvcnQtPndlYmluc3BlY3Rvcl9j
bG9zZShtX2RydC0+d2ViUGFnZSgpKTsKICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygp
LT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJFeHRyYXNFbmFibGVkLCBmYWxz
ZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3IoKQog
ewogICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0
dGluZ3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQsIHRydWUpOwotICAgIHF0X2RydF93ZWJpbnNw
ZWN0b3Jfc2hvdyhtX2RydC0+d2ViUGFnZSgpKTsKKyAgICBtX2RydFN1cHBvcnQtPndlYmluc3Bl
Y3Rvcl9zaG93KG1fZHJ0LT53ZWJQYWdlKCkpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElkLCBjb25zdCBRU3RyaW5nJiBz
Y3JpcHQpCiB7Ci0gICAgcXRfZHJ0X3dlYmluc3BlY3Rvcl9leGVjdXRlU2NyaXB0KG1fZHJ0LT53
ZWJQYWdlKCksIGNhbGxJZCwgc2NyaXB0KTsKKyAgICBtX2RydFN1cHBvcnQtPndlYmluc3BlY3Rv
cl9leGVjdXRlU2NyaXB0KG1fZHJ0LT53ZWJQYWdlKCksIGNhbGxJZCwgc2NyaXB0KTsKIH0KIAog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChi
b29sIGVuYWJsZWQpCiB7Ci0gICAgcXRfZHJ0X3NldEZyYW1lU2V0RmxhdHRlbmluZ0VuYWJsZWQo
bV9kcnQtPndlYlBhZ2UoKSwgZW5hYmxlZCk7CisgICAgbV9kcnRTdXBwb3J0LT5zZXRGcmFtZVNl
dEZsYXR0ZW5pbmdFbmFibGVkKG1fZHJ0LT53ZWJQYWdlKCksIGVuYWJsZWQpOwogfQogCiB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJM
cyhib29sIGVuYWJsZWQpCkBAIC0zMjYsMTIgKzMxMSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9v
bCBlbmFibGUpCiB7CiAgICAgbV90b3BMb2FkaW5nRnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+
c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgdHJ1ZSk7
Ci0gICAgcXRfZHJ0X3NldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKG1fdG9wTG9hZGluZ0Zy
YW1lLCBlbmFibGUpOworICAgIG1fZHJ0U3VwcG9ydC0+c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0Vu
YWJsZWQobV90b3BMb2FkaW5nRnJhbWUsIGVuYWJsZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZSkKIHsKLSAg
ICBxdF9kcnRfc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKG1fZHJ0LT53ZWJQYWdlKCksIGVu
YWJsZSk7CisgICAgbV9kcnRTdXBwb3J0LT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQobV9k
cnQtPndlYlBhZ2UoKSwgZW5hYmxlKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0Rml4ZWRDb250ZW50c1NpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQpAQCAtMzg2LDcgKzM3
MSw3IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25F
bGVtZW50V2l0aElkKGNvbnN0IFFTdHJpbmcmIGFuCiB7CiAgICAgUVdlYkZyYW1lKiBmcmFtZSA9
IG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIFFfQVNTRVJUKGZyYW1lKTsKLSAg
ICByZXR1cm4gcXRfZHJ0X3BhdXNlQW5pbWF0aW9uKGZyYW1lLCBhbmltYXRpb25OYW1lLCB0aW1l
LCBlbGVtZW50SWQpOworICAgIHJldHVybiBtX2RydFN1cHBvcnQtPnBhdXNlQW5pbWF0aW9uKGZy
YW1lLCBhbmltYXRpb25OYW1lLCB0aW1lLCBlbGVtZW50SWQpOwogfQogCiBib29sIExheW91dFRl
c3RDb250cm9sbGVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3Qg
UVN0cmluZyYgcHJvcGVydHlOYW1lLApAQCAtMzk1LDcgKzM4MCw3IEBAIGJvb2wgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBR
U3RyaW5nJiBwCiB7CiAgICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fZHJ0LT53ZWJQYWdlKCktPm1h
aW5GcmFtZSgpOwogICAgIFFfQVNTRVJUKGZyYW1lKTsKLSAgICByZXR1cm4gcXRfZHJ0X3BhdXNl
VHJhbnNpdGlvbk9mUHJvcGVydHkoZnJhbWUsIHByb3BlcnR5TmFtZSwgdGltZSwgZWxlbWVudElk
KTsKKyAgICByZXR1cm4gbV9kcnRTdXBwb3J0LT5wYXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KGZy
YW1lLCBwcm9wZXJ0eU5hbWUsIHRpbWUsIGVsZW1lbnRJZCk7CiB9CiAKIGJvb2wgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUoY29uc3QgUVN0
cmluZyYgYW5pbWF0aW9uSWQsCkBAIC00MDQsMTQgKzM4OSwxNCBAQCBib29sIExheW91dFRlc3RD
b250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKGNvbnN0IFFTdHJp
bmcmIGFuaQogewogICAgIFFXZWJGcmFtZSogZnJhbWUgPSBtX2RydC0+d2ViUGFnZSgpLT5tYWlu
RnJhbWUoKTsKICAgICBRX0FTU0VSVChmcmFtZSk7Ci0gICAgcmV0dXJuIHF0X2RydF9wYXVzZVNW
R0FuaW1hdGlvbihmcmFtZSwgYW5pbWF0aW9uSWQsIHRpbWUsIGVsZW1lbnRJZCk7CisgICAgcmV0
dXJuIG1fZHJ0U3VwcG9ydC0+cGF1c2VTVkdBbmltYXRpb24oZnJhbWUsIGFuaW1hdGlvbklkLCB0
aW1lLCBlbGVtZW50SWQpOwogfQogCiB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVt
YmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKIHsKICAgICBRV2ViRnJhbWUqIGZyYW1lID0g
bV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgUV9BU1NFUlQoZnJhbWUpOwotICAg
IHJldHVybiBxdF9kcnRfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKGZyYW1lKTsKKyAgICByZXR1
cm4gbV9kcnRTdXBwb3J0LT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoZnJhbWUpOwogfQogCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkaXNhYmxlSW1hZ2VMb2FkaW5nKCkKQEAgLTQzOSw3
ICs0MjQsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbERhdGFiYXNlcygp
CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4o
Y29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblBy
b3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgcXRfZHJ0X3doaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4o
c291cmNlT3JpZ2luLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBtX2RydFN1cHBvcnQtPndoaXRlTGlzdEFjY2Vz
c0Zyb21PcmlnaW4oc291cmNlT3JpZ2luLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlv
bkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKCkKQEAgLTQ4MiwxMiArNDY3LDEyIEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChib29s
IGVuYWJsZWQpCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERvbWFpblJlbGF4YXRp
b25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNj
aGVtZSkKIHsKLSAgICBxdF9kcnRfc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNj
aGVtZShmb3JiaWRkZW4sIHNjaGVtZSk7CisgICAgbV9kcnRTdXBwb3J0LT5zZXREb21haW5SZWxh
eGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGZvcmJpZGRlbiwgc2NoZW1lKTsKIH0KIAogaW50
IExheW91dFRlc3RDb250cm9sbGVyOjp3b3JrZXJUaHJlYWRDb3VudCgpCiB7Ci0gICAgcmV0dXJu
IHF0X2RydF93b3JrZXJUaHJlYWRDb3VudCgpOworICAgIHJldHVybiBtX2RydFN1cHBvcnQtPndv
cmtlclRocmVhZENvdW50KCk7CiB9CiAKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51
bWJlckZvckVsZW1lbnRCeUlkKGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KQpAQCAtNDk4LDEyICs0ODMsMzIgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVyOjpw
YWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0IHdpZHQKICAg
ICAgICAgaGVpZ2h0ID0gbV9kcnQtPndlYlBhZ2UoKS0+dmlld3BvcnRTaXplKCkuaGVpZ2h0KCk7
CiAgICAgfQogCi0gICAgcmV0dXJuIHF0X2RydF9wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQobV9k
cnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIGlkLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICByZXR1
cm4gbV9kcnRTdXBwb3J0LT5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQobV9kcnQtPndlYlBhZ2Uo
KS0+bWFpbkZyYW1lKCksIGlkLCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogaW50IExheW91dFRlc3RD
b250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCiB7Ci0g
ICAgcmV0dXJuIHF0X2RydF9udW1iZXJPZlBhZ2VzKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFt
ZSgpLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICByZXR1cm4gbV9kcnRTdXBwb3J0LT5udW1iZXJPZlBh
Z2VzKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpLCB3aWR0aCwgaGVpZ2h0KTsKK30KKwor
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJv
b2wgZW5hYmxlKQoreworICAgIG1fZHJ0U3VwcG9ydC0+c2V0U21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKG1fZHJ0LT53ZWJQYWdlKCksIGVuYWJsZSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBlbmFibGUpCit7
CisgICAgbV9kcnRTdXBwb3J0LT5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKG1f
ZHJ0LT53ZWJQYWdlKCksIGVuYWJsZSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmV4ZWNDb21tYW5kKGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQor
eworICAgIG1fZHJ0U3VwcG9ydC0+ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKG1fZHJ0LT53ZWJQ
YWdlKCksIG5hbWUsIHZhbHVlKTsKK30KKworYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXND
b21tYW5kRW5hYmxlZChjb25zdCBRU3RyaW5nJiBuYW1lKSBjb25zdAoreworICAgIHJldHVybiBt
X2RydFN1cHBvcnQtPmlzQ29tbWFuZEVuYWJsZWQobV9kcnQtPndlYlBhZ2UoKSwgbmFtZSk7CiB9
CiAKIGNvbnN0IHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjptYXhWaWV3V2lkdGggPSA4
MDA7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmgKaW5kZXggM2QwNGJlNS4uM2QxZmEyMiAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApAQCAt
NDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPHF3ZWJzZWN1cml0eW9yaWdpbi5oPgogCiBjbGFzcyBR
V2ViRnJhbWU7CitjbGFzcyBRRFJUU3VwcG9ydDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBEdW1wUmVuZGVyVHJlZTsKIH0KQEAgLTU1LDcgKzU2LDcgQEAgY2xhc3MgTGF5b3V0VGVz
dENvbnRyb2xsZXIgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9QUk9QRVJUWShpbnQgd29ya2Vy
VGhyZWFkQ291bnQgUkVBRCB3b3JrZXJUaHJlYWRDb3VudCkKICAgICBRX1BST1BFUlRZKGJvb2wg
Z2xvYmFsRmxhZyBSRUFEIGdsb2JhbEZsYWcgV1JJVEUgc2V0R2xvYmFsRmxhZykKIHB1YmxpYzoK
LSAgICBMYXlvdXRUZXN0Q29udHJvbGxlcihXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZSogZHJ0KTsK
KyAgICBMYXlvdXRUZXN0Q29udHJvbGxlcihXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZSogZHJ0LCBR
RFJUU3VwcG9ydCogZHJ0U3VwcG9ydCk7CiAKICAgICBib29sIHNob3VsZER1bXBBc1RleHQoKSBj
b25zdCB7IHJldHVybiBtX3RleHREdW1wOyB9CiAgICAgYm9vbCBzaG91bGREdW1wQmFja0Zvcndh
cmRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9kdW1wQmFja0ZvcndhcmRMaXN0OyB9CkBAIC0xMzUs
NiArMTM2LDEwIEBAIHB1YmxpYyBzbG90czoKICAgICB2b2lkIHNldFdpbmRvd0lzS2V5KGJvb2wg
aXNLZXkpOwogICAgIHZvaWQgc2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlcihib29sIGlzRmly
c3QpOwogICAgIHZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoYm9vbCBlbmFibGUpOworICAgIHZv
aWQgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHNl
dFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBlbmFibGUpOworICAgIHZvaWQg
ZXhlY0NvbW1hbmQoY29uc3QgUVN0cmluZyYgbmFtZSwgY29uc3QgUVN0cmluZyYgdmFsdWUgPSBR
U3RyaW5nKCkpOworICAgIGJvb2wgaXNDb21tYW5kRW5hYmxlZChjb25zdCBRU3RyaW5nJiBuYW1l
KSBjb25zdDsKIAogICAgIGJvb2wgcGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQo
Y29uc3QgUVN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcm
IGVsZW1lbnRJZCk7CiAgICAgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRo
SWQoY29uc3QgUVN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmlu
ZyYgZWxlbWVudElkKTsKQEAgLTE4MSw2ICsxODYsNyBAQCBwcml2YXRlOgogICAgIFFCYXNpY1Rp
bWVyIG1fdGltZW91dFRpbWVyOwogICAgIFFXZWJGcmFtZSogbV90b3BMb2FkaW5nRnJhbWU7CiAg
ICAgV2ViQ29yZTo6RHVtcFJlbmRlclRyZWUqIG1fZHJ0OworICAgIFFEUlRTdXBwb3J0KiBtX2Ry
dFN1cHBvcnQ7CiAgICAgUVdlYkhpc3RvcnkqIG1fd2ViSGlzdG9yeTsKIH07CiAKLS0gCjEuNi4z
LjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50960</attachid>
            <date>2010-03-17 14:54:37 -0700</date>
            <delta_ts>2010-03-19 12:47:31 -0700</delta_ts>
            <desc>Updated Patch - with QDRTSupport</desc>
            <filename>0001-Add-support-for-LayoutTestController-commands.patch</filename>
            <type>text/plain</type>
            <size>60123</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSBhMjE5N2E1MjFmMzlkOTMwOTM0YjYyZmVjMmJlNGE1ZDgwY2Q0MGQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDE1IE1hciAyMDEwIDIyOjQ5OjI5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1
cHBvcnQgZm9yIExheW91dFRlc3RDb250cm9sbGVyIGNvbW1hbmRzOgogICBzZXRTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQKICAgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZAogICBl
eGVjQ29tbWFuZAogICBpc0NvbW1hbmRFbmFibGVkCgpVbnNraXAgdGVzdHM6CmVkaXRpbmcvZGVs
ZXRpbmcvc21hcnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCmVkaXRpbmcvZXhlY0NvbW1hbmQvMTkw
ODkuaHRtbAplZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1pbWFnZS1pbi1hbmNob3IuaHRtbApl
ZGl0aW5nL2V4ZWNDb21tYW5kL2VuYWJsaW5nLWFuZC1zZWxlY3Rpb24tMi5odG1sCmVkaXRpbmcv
c2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtY3Jhc2guaHRtbAplZGl0aW5nL3NlbGVj
dGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWltZy1jcmFzaC5odG1sCmVkaXRpbmcvc2VsZWN0
aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbAplZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qt
bGluZS5odG1sCmVkaXRpbmcvZGVsZXRpbmcvNTMwMDM3OS5odG1sCmVkaXRpbmcvZGVsZXRpbmcv
c21hcnQtZGVsZXRlLTAwMy5odG1sCmVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC5o
dG1sCmVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS5odG1sCmVkaXRpbmcvc2VsZWN0aW9uLzUx
OTUxNjYtMi5odG1sCgpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4
NDQKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMzUgKysKIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgICAgICAgICAgICAg
ICAgICAgIHwgICAxNSAtCiBXZWJDb3JlL1dlYkNvcmUucHJvICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgMTc4IC0tLS0tLS0tLS0KIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1l
LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJLaXQvcXQvQXBpL3F3ZWJw
YWdlLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgODEgKy0tLS0tCiBXZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0
L3F0L0FwaS9xd2VicGFnZV9wLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFdl
YktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcCAgICAgICAgICAgICAgIHwgICAxNSAt
CiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
NDYgKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNw
cCB8ICAzNTcgKysrKysrKysrKysrKysrKysrKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnQuaCAgIHwgICA4MyArKysrKwogV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcCAgICAgICAgfCAgIDE0ICstCiBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaCAgICAgICAgICB8ICAgIDIgKy0KIFdlYktpdC9x
dC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwICAgICAgICAgIHwgICAyMCArLQogV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM2ICsr
CiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcCB8ICAg
MjEgKy0KIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaCAg
IHwgICAgMiArCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5j
cHAgICB8ICAgMTUgKy0KIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxl
clF0LmggICAgIHwgICAgNiArLQogLi4uL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuY3BwICAgfCAgIDc4ICsrKy0tCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5oICAgICB8ICAgIDggKy0KIDIyIGZpbGVzIGNoYW5nZWQsIDY1NCBp
bnNlcnRpb25zKCspLCAzNjQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggOWNlMzQ1My4uZjc2ZmU3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEwLTAz
LTA3ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEFkZCBzdXBwb3J0IGZvciBMYXlv
dXRUZXN0Q29udHJvbGxlciBjb21tYW5kcy4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTGF5
b3V0VGVzdENvbnRyb2xsZXIgY29tbWFuZHM6CisgICAgICAgICAgc2V0U21hcnRJbnNlcnREZWxl
dGVFbmFibGVkCisgICAgICAgICAgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZAor
ICAgICAgICAgIGV4ZWNDb21tYW5kCisgICAgICAgICAgaXNDb21tYW5kRW5hYmxlZAorCisgICAg
ICAgIFVuc2tpcCB0ZXN0czoKKyAgICAgICAgZWRpdGluZy9kZWxldGluZy9zbWFydC1lZGl0aW5n
LWRpc2FibGVkLmh0bWwKKyAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC8xOTA4OS5odG1sCisg
ICAgICAgIGVkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLWltYWdlLWluLWFuY2hvci5odG1sCisg
ICAgICAgIGVkaXRpbmcvZXhlY0NvbW1hbmQvZW5hYmxpbmctYW5kLXNlbGVjdGlvbi0yLmh0bWwK
KyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1jcmFzaC5o
dG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtaW1n
LWNyYXNoLmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVz
cGFjZS5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1saW5lLmh0bWwKKyAg
ICAgICAgZWRpdGluZy9kZWxldGluZy81MzAwMzc5Lmh0bWwKKyAgICAgICAgZWRpdGluZy9kZWxl
dGluZy9zbWFydC1kZWxldGUtMDAzLmh0bWwKKyAgICAgICAgZWRpdGluZy9kZWxldGluZy9zbWFy
dC1kZWxldGUtMDA0Lmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLmh0
bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0yLmh0bWwKKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4NDQKKworICAgICAgICAq
IHBsYXRmb3JtL3F0L2VkaXRpbmcvZGVsZXRpbmcvNTMwMDM3OS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDAzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRl
bGV0ZS0wMDQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3F0L2VkaXRpbmcvc2Vs
ZWN0aW9uLzUxOTUxNjYtMS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvZWRp
dGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0yLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wMy0xNyAgQWxl
eGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICAqIHBsYXRmb3JtL2d0
ay9Ta2lwcGVkOiBBbHNvLCByZXNpemUtZnJvbS1wbHVnaW4uaHRtbCBnb3Qgc2tpcHBlZCB0d2lj
ZSB0b25pZ2h0LCByZW1vdmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggYzQ3OTA2Mi4u
MmQzYmI4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0yMjcsOSArMjI3LDYgQEAgZWRp
dGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVzaWRlLWNyLXNwYW4uaHRtbAogIyBNaXNzaW5n
IGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcygpCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93
LXBvc3RtZXNzYWdlLWNsb25lLWZyYW1lcy5odG1sCiAKLSMgTWlzc2luZyBsYXlvdXRUZXN0Q29u
dHJvbGxlci5leGVjQ29tbWFuZCgpCi1lZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1pbWFnZS1p
bi1hbmNob3IuaHRtbCAKLQogIyBNaXNzaW5nIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFsd2F5
c0FjY2VwdENvb2tpZXMoKQogaHR0cC90ZXN0cy9wbHVnaW5zL3RoaXJkLXBhcnR5LWNvb2tpZS1h
Y2NlcHQtcG9saWN5Lmh0bWwKIApAQCAtMjkyLDcgKzI4OSw2IEBAIGZhc3QvcnVieS9ydWJ5RE9N
LXJlbW92ZS10ZXh0Mi5odG1sCiAKICMgLS0tLS0tLSBmYWlsaW5nIGVkaXRpbmcgdGVzdHMKIGVk
aXRpbmcvZGVsZXRpbmcvZGVsZXRlLXRvLWVuZC1vZi1wYXJhZ3JhcGguaHRtbAotZWRpdGluZy9l
eGVjQ29tbWFuZC9lbmFibGluZy1hbmQtc2VsZWN0aW9uLTIuaHRtbAogZWRpdGluZy9leGVjQ29t
bWFuZC9uc3Jlc3BvbmRlci1pbmRlbnQuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC9uc3Jlc3Bv
bmRlci1vdXRkZW50Lmh0bWwKIGVkaXRpbmcvaW5wdXQvZW1hY3MtY3RybC1vLmh0bWwKQEAgLTEw
ODEsNyArMTA3Nyw2IEBAIGZhc3QvZm9ybXMvbWVudWxpc3Qtd2lkdGgtY2hhbmdlLmh0bWwKICMg
cHV0IGludG8gdGhlIHNraXBwZWQgbGlzdCBmb3Igbm93IHRvIGhhdmUgc29tZSBraW5kIG9mCiAj
IHJlZmVyZW5jZSwgc28gd2UgZG9uJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLgogZWRpdGluZy9k
ZWxldGluZy81MTQ0MTM5LTIuaHRtbAotZWRpdGluZy9kZWxldGluZy81MzAwMzc5Lmh0bWwKIGVk
aXRpbmcvZGVsZXRpbmcvZGVsZXRlLWJsb2NrLW1lcmdlLWNvbnRlbnRzLTAwMS5odG1sCiBlZGl0
aW5nL2RlbGV0aW5nL2RlbGV0ZS1ibG9jay1tZXJnZS1jb250ZW50cy0wMTkuaHRtbAogZWRpdGlu
Zy9kZWxldGluZy9kZWxldGUtYmxvY2stbWVyZ2UtY29udGVudHMtMDIwLmh0bWwKQEAgLTEwOTIs
OCArMTA4Nyw2IEBAIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpbmUtZW5kLXdzLTAwMS5odG1s
CiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saW5lLWVuZC13cy0wMDIuaHRtbAogZWRpdGluZy9k
ZWxldGluZy9kZWxldGUtdG8tc2VsZWN0LXRhYmxlLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVs
ZXRpb25VSS1zaW5nbGUtaW5zdGFuY2UuaHRtbAotZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxl
dGUtMDAzLmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC5odG1sCiBlZGl0
aW5nL2V4ZWNDb21tYW5kLzQ5MjA0ODguaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC80OTIwNzQy
LTEuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC9jcmVhdGUtbGlzdC13aXRoLWhyLmh0bWwKQEAg
LTExMjUsMTUgKzExMTgsMTIgQEAgZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDAzLmh0
bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9xdWlya3MtbW9kZS1ici0xLmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uLzQ5ODM4NTguaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vNTEzNjY5Ni5odG1sCi1lZGl0
aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0y
Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2FmdGVyLWxpbmUtd3JhcC5odG1sCiBlZGl0aW5nL3Nl
bGVjdGlvbi9lbmQtb2YtZG9jdW1lbnQuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1sZWZ0
LXJpZ2h0Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtMDAxLmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtMDAyLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVj
dC1hbGwtMDAzLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1saW5lLmh0bWwKIGVkaXRp
bmcvc3R5bGUvYXBwbGUtc3R5bGUtZWRpdGFibGUtbWl4Lmh0bWwKIGVkaXRpbmcvc3R5bGUvY3Jl
YXRlLWJsb2NrLWZvci1zdHlsZS0wMTIuaHRtbAogZWRpdGluZy9zdHlsZS9mb250LWZhbWlseS13
aXRoLXNwYWNlLmh0bWwKQEAgLTQ3NTAsMTUgKzQ3NDAsMTAgQEAgZG9tL3hodG1sL2xldmVsMy9j
b3JlL2Nhbm9uaWNhbGZvcm0wOS54aHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1
cmUtMDAxLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpZ2F0dXJlLTAwMi5odG1sCiBl
ZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDMuaHRtbAotZWRpdGluZy9kZWxldGlu
Zy9zbWFydC1lZGl0aW5nLWRpc2FibGVkLmh0bWwKLWVkaXRpbmcvZXhlY0NvbW1hbmQvMTkwODku
aHRtbAogZWRpdGluZy9pbnNlcnRpbmcvNTgwMzcwNi0xLmh0bWwKIGVkaXRpbmcvaW5zZXJ0aW5n
LzU5OTQ0ODAtMi5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZXMtZHVyaW5nLXBhZ2UtZHJh
Z3MuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2dldC1kYXRhLXRleHQtcGxhaW4tZHJvcC5odG1s
Ci1lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWNyYXNoLmh0bWwKLWVk
aXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtaW1nLWNyYXNoLmh0bWwKLWVk
aXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbAogZWRpdGluZy9zZWxl
Y3Rpb24vZHJhZy1zdGFydC1ldmVudC1jbGllbnQteC15Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9u
L2V4dGVuZC1zZWxlY3Rpb24tYmlkaS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9oaXQtdGVzdC1h
bm9ueW1vdXMuaHRtbApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggOTllMDI1OS4uOTcwNDUzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yMDg0LDYgKzIwODQsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVD
bGllbnRRdC5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50
UXQuY3BwIFwKKyAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRDb21tYW5kUXQu
Y3BwIFwKICAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvV2ViS2l0
L3F0L0FwaS9xd2ViZnJhbWUuY3BwCmluZGV4IDExODVjODUuLmZlNTFiYjQgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFt
ZS5jcHAKQEAgLTg4LDE4NCArODgsNiBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKIGV4dGVybiBRX0dV
SV9FWFBPUlQgaW50IHF0X2RlZmF1bHREcGkoKTsKIFFUX0VORF9OQU1FU1BBQ0UKIAotYm9vbCBR
V0VCS0lUX0VYUE9SVCBxdF9kcnRfaGFzRG9jdW1lbnRFbGVtZW50KFFXZWJGcmFtZSogcWZyYW1l
KQotewotICAgIHJldHVybiBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSktPmRvY3VtZW50
KCktPmRvY3VtZW50RWxlbWVudCgpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9z
ZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChRV2ViRnJhbWUqIHFmcmFtZSwgYm9vbCBlbmFi
bGVkKQotewotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIEZyYW1lKiBmcmFt
ZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKLSAgICBJbnNwZWN0b3JDb250cm9s
bGVyKiBjb250cm9sbGVyID0gZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwot
ICAgIGlmICghY29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChlbmFibGVkKQot
ICAgICAgICBjb250cm9sbGVyLT5lbmFibGVQcm9maWxlcigpOwotICAgIGVsc2UKLSAgICAgICAg
Y29udHJvbGxlci0+ZGlzYWJsZVByb2ZpbGVyKCk7Ci0jZW5kaWYKLX0KLQotLy8gUGF1c2UgYSBn
aXZlbiBDU1MgYW5pbWF0aW9uIG9yIHRyYW5zaXRpb24gb24gdGhlIHRhcmdldCBub2RlIGF0IGEg
c3BlY2lmaWMgdGltZS4KLS8vIElmIHRoZSBhbmltYXRpb24gb3IgdHJhbnNpdGlvbiBpcyBhbHJl
YWR5IHBhdXNlZCwgaXQgd2lsbCB1cGRhdGUgaXRzIHBhdXNlIHRpbWUuCi0vLyBUaGlzIG1ldGhv
ZCBpcyBvbmx5IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIHRlc3RpbmcgdGhlIENTUyBhbmltYXRp
b24gYW5kIHRyYW5zaXRpb24gc3lzdGVtLgotYm9vbCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfcGF1
c2VBbmltYXRpb24oUVdlYkZyYW1lICpxZnJhbWUsIGNvbnN0IFFTdHJpbmcgJmFuaW1hdGlvbk5h
bWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nICZlbGVtZW50SWQpCi17Ci0gICAgRnJhbWUq
IGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOwotICAgIGlmICghZnJhbWUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRy
b2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7Ci0gICAgaWYgKCFjb250cm9sbGVyKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBEb2N1bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7
Ci0gICAgUV9BU1NFUlQoZG9jKTsKLQotICAgIE5vZGUqIGNvcmVOb2RlID0gZG9jLT5nZXRFbGVt
ZW50QnlJZChlbGVtZW50SWQpOwotICAgIGlmICghY29yZU5vZGUgfHwgIWNvcmVOb2RlLT5yZW5k
ZXJlcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gY29udHJvbGxlci0+
cGF1c2VBbmltYXRpb25BdFRpbWUoY29yZU5vZGUtPnJlbmRlcmVyKCksIGFuaW1hdGlvbk5hbWUs
IHRpbWUpOwotfQotCi1ib29sIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9wYXVzZVRyYW5zaXRpb25P
ZlByb3BlcnR5KFFXZWJGcmFtZSAqcWZyYW1lLCBjb25zdCBRU3RyaW5nICZwcm9wZXJ0eU5hbWUs
IGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nICZlbGVtZW50SWQpCi17Ci0gICAgRnJhbWUqIGZy
YW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOwotICAgIGlmICghZnJhbWUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xs
ZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7Ci0gICAgaWYgKCFjb250cm9sbGVyKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBEb2N1bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0g
ICAgUV9BU1NFUlQoZG9jKTsKLQotICAgIE5vZGUqIGNvcmVOb2RlID0gZG9jLT5nZXRFbGVtZW50
QnlJZChlbGVtZW50SWQpOwotICAgIGlmICghY29yZU5vZGUgfHwgIWNvcmVOb2RlLT5yZW5kZXJl
cigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gY29udHJvbGxlci0+cGF1
c2VUcmFuc2l0aW9uQXRUaW1lKGNvcmVOb2RlLT5yZW5kZXJlcigpLCBwcm9wZXJ0eU5hbWUsIHRp
bWUpOwotfQotCi0vLyBQYXVzZSBhIGdpdmVuIFNWRyBhbmltYXRpb24gb24gdGhlIHRhcmdldCBu
b2RlIGF0IGEgc3BlY2lmaWMgdGltZS4KLS8vIFRoaXMgbWV0aG9kIGlzIG9ubHkgaW50ZW5kZWQg
dG8gYmUgdXNlZCBmb3IgdGVzdGluZyB0aGUgU1ZHIGFuaW1hdGlvbiBzeXN0ZW0uCi1ib29sIFFX
RUJLSVRfRVhQT1JUIHF0X2RydF9wYXVzZVNWR0FuaW1hdGlvbihRV2ViRnJhbWUgKnFmcmFtZSwg
Y29uc3QgUVN0cmluZyAmYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nICZl
bGVtZW50SWQpCi17Ci0jaWYgIUVOQUJMRShTVkcpCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vsc2UK
LSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAg
aWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRG9jdW1lbnQqIGRvYyA9
IGZyYW1lLT5kb2N1bWVudCgpOwotICAgIFFfQVNTRVJUKGRvYyk7Ci0KLSAgICBpZiAoIWRvYy0+
c3ZnRXh0ZW5zaW9ucygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBOb2RlKiBjb3Jl
Tm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoYW5pbWF0aW9uSWQpOwotICAgIGlmICghY29yZU5v
ZGUgfHwgIVNWR1NNSUxFbGVtZW50Ojppc1NNSUxFbGVtZW50KGNvcmVOb2RlKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGRvYy0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5z
YW1wbGVBbmltYXRpb25BdFRpbWUoZWxlbWVudElkLCBzdGF0aWNfY2FzdDxTVkdTTUlMRWxlbWVu
dCo+KGNvcmVOb2RlKSwgdGltZSk7Ci0jZW5kaWYKLX0KLQotLy8gUmV0dXJucyB0aGUgdG90YWwg
bnVtYmVyIG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbnMgKGluY2x1ZGVzIGJvdGggQ1NT
IHRyYW5zaXRpb25zIGFuZCBDU1MgYW5pbWF0aW9ucykuCi1pbnQgUVdFQktJVF9FWFBPUlQgcXRf
ZHJ0X251bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhRV2ViRnJhbWUgKnFmcmFtZSkKLXsKLSAgICBG
cmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQW5pbWF0aW9uQ29udHJvbGxlciog
Y29udHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjb250cm9sbGVyLT5udW1iZXJPZkFj
dGl2ZUFuaW1hdGlvbnMoKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfY2xlYXJG
cmFtZU5hbWUoUVdlYkZyYW1lKiBxRnJhbWUpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gUVdlYkZy
YW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGZyYW1lLT50cmVlKCktPmNsZWFyTmFtZSgp
OwotfQotCi1pbnQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X2phdmFTY3JpcHRPYmplY3RzQ291bnQo
KQotewotICAgIHJldHVybiBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5o
ZWFwLmdsb2JhbE9iamVjdENvdW50KCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0
X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgpCi17Ci0gICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFn
ZUNvbGxlY3ROb3coKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfZ2FyYmFnZUNv
bGxlY3Rvcl9jb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKQotewot
ICAgIGdjQ29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1
Z2dpbmcod2FpdFVudGlsRG9uZSk7Ci19Ci0KLS8vIFJldHVybnMgdGhlIHZhbHVlIG9mIGNvdW50
ZXIgaW4gdGhlIGVsZW1lbnQgc3BlY2lmaWVkIGJ5IFxhIGlkLgotUVN0cmluZyBRV0VCS0lUX0VY
UE9SVCBxdF9kcnRfY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUs
IGNvbnN0IFFTdHJpbmcmIGlkKQotewotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZh
dGU6OmNvcmUocUZyYW1lKTsKLSAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRv
Y3VtZW50KCkpIHsKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGRvY3VtZW50LT5nZXRFbGVt
ZW50QnlJZChpZCk7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpjb3VudGVyVmFsdWVGb3JFbGVt
ZW50KGVsZW1lbnQpOwotICAgIH0KLSAgICByZXR1cm4gUVN0cmluZygpOwotfQotCi1pbnQgUVdF
QktJVF9FWFBPUlQgcXRfZHJ0X3BhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIHFG
cmFtZSwgY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCi17Ci0g
ICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGlm
ICghZnJhbWUpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5nKGlkKSk7Ci0gICAg
aWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1cm4gUHJpbnRDb250
ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChlbGVtZW50LCBGbG9hdFNpemUod2lkdGgsIGhlaWdo
dCkpOwotfQotCi1pbnQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X251bWJlck9mUGFnZXMoUVdlYkZy
YW1lKiBxRnJhbWUsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCi17Ci0gICAgRnJhbWUqIGZy
YW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGlmICghZnJhbWUpCi0g
ICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBQcmludENvbnRleHQ6Om51bWJlck9mUGFn
ZXMoZnJhbWUsIEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Ci19Ci0KLS8vIFN1c3BlbmQgYWN0
aXZlIERPTSBvYmplY3RzIGluIHRoaXMgZnJhbWUuCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X3N1
c3BlbmRBY3RpdmVET01PYmplY3RzKFFXZWJGcmFtZSogcUZyYW1lKQotewotICAgIEZyYW1lKiBm
cmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKLSAgICBpZiAoZnJhbWUtPmRv
Y3VtZW50KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdXNwZW5kQWN0aXZlRE9NT2Jq
ZWN0cygpOwotfQotICAgICAgICAgICAgCi0vLyBSZXN1bWUgYWN0aXZlIERPTSBvYmplY3RzIGlu
IHRoaXMgZnJhbWUuCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X3Jlc3VtZUFjdGl2ZURPTU9iamVj
dHMoUVdlYkZyYW1lKiBxRnJhbWUpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJp
dmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAg
ZnJhbWUtPmRvY3VtZW50KCktPnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKLX0gICAgICAgICAg
ICAgICAgICAgICAgICAKLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfZXZhbHVhdGVTY3Jp
cHRJbklzb2xhdGVkV29ybGQoUVdlYkZyYW1lKiBxRnJhbWUsIGludCB3b3JsZElkLCBjb25zdCBR
U3RyaW5nJiBzY3JpcHQpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6
Y29yZShxRnJhbWUpOwotICAgIGlmIChmcmFtZSkKLSAgICAgICAgSlNDOjpKU1ZhbHVlIHJlc3Vs
dCA9IGZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdEluV29ybGQobWFpblRocmVhZE5vcm1h
bFdvcmxkKCksIHNjcmlwdCwgdHJ1ZSkuanNWYWx1ZSgpOwotfQotCiBRV2ViRnJhbWVEYXRhOjpR
V2ViRnJhbWVEYXRhKFdlYkNvcmU6OlBhZ2UqIHBhcmVudFBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBw
YXJlbnRGcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6SFRNTEZy
YW1lT3duZXJFbGVtZW50KiBvd25lckZyYW1lRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBmcmFtZU5hbWUpCmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAppbmRl
eCBjYTVkM2I2Li44YzVkN2U0IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5o
CisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3Mg
UVdlYlNlY3VyaXR5T3JpZ2luOwogY2xhc3MgUVdlYkVsZW1lbnQ7CiBjbGFzcyBRV2ViRWxlbWVu
dENvbGxlY3Rpb247CiAKK2NsYXNzIFFEUlRTdXBwb3J0OwogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIFdpZGdldFByaXZhdGU7CiAgICAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRRdDsK
QEAgLTIyNiw2ICsyMjcsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZTsK
ICAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2VQcml2YXRlOwogICAgIGZyaWVuZCBjbGFzcyBRV2Vi
RnJhbWVQcml2YXRlOworICAgIGZyaWVuZCBjbGFzcyBRRFJUU3VwcG9ydDsKICAgICBmcmllbmQg
Y2xhc3MgV2ViQ29yZTo6V2lkZ2V0UHJpdmF0ZTsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9x
dC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IGFkODEyMjcuLjk5ODQ2NTIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3Bw
CkBAIC0xMTksODYgKzExOSw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lk
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9vdmVyd3JpdGVQbHVnaW5EaXJlY3RvcmllcygpCi17Ci0g
ICAgUGx1Z2luRGF0YWJhc2UqIGRiID0gUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMo
LyogcG9wdWxhdGUgKi8gZmFsc2UpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7Ci0gICAg
U3RyaW5nIHF0UGF0aChxZ2V0ZW52KCJRVFdFQktJVF9QTFVHSU5fUEFUSCIpLmRhdGEoKSk7Ci0g
ICAgcXRQYXRoLnNwbGl0KFVDaGFyKCc6JyksIC8qIGFsbG93RW1wdHlFbnRyaWVzICovIGZhbHNl
LCBwYXRocyk7Ci0KLSAgICBkYi0+c2V0UGx1Z2luRGlyZWN0b3JpZXMocGF0aHMpOwotICAgIGRi
LT5yZWZyZXNoKCk7Ci19Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfd29ya2VyVGhyZWFk
Q291bnQoKQotewotI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIHJldHVybiBXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWQ6OndvcmtlclRocmVhZENvdW50KCk7Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2Vu
ZGlmCi19Ci0KIGJvb2wgUVdlYlBhZ2VQcml2YXRlOjpkcnRSdW4gPSBmYWxzZTsKLXZvaWQgUVdF
QktJVF9FWFBPUlQgcXRfZHJ0X3J1bihib29sIGIpCi17Ci0gICAgUVdlYlBhZ2VQcml2YXRlOjpk
cnRSdW4gPSBiOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9zZXRGcmFtZVNldEZs
YXR0ZW5pbmdFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBib29sIGVuYWJsZWQpCi17Ci0gICAgUVdl
YlBhZ2VQcml2YXRlOjpjb3JlKHBhZ2UpLT5zZXR0aW5ncygpLT5zZXRGcmFtZVNldEZsYXR0ZW5p
bmdFbmFibGVkKGVuYWJsZWQpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X3dlYnBhZ2Vf
c2V0R3JvdXBOYW1lKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBncm91cE5hbWUpCi17
Ci0gICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPnNldEdyb3VwTmFtZShncm91cE5hbWUpOwotfQot
Ci1RU3RyaW5nIFFXRUJLSVRfRVhQT1JUIHF0X3dlYnBhZ2VfZ3JvdXBOYW1lKFFXZWJQYWdlKiBw
YWdlKQotewotICAgIHJldHVybiBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+Z3JvdXBOYW1lKCk7Ci19
Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfd2Vi
aW5zcGVjdG9yX2V4ZWN1dGVTY3JpcHQoUVdlYlBhZ2UqIHBhZ2UsIGxvbmcgY2FsbElkLCBjb25z
dCBRU3RyaW5nJiBzY3JpcHQpCi17Ci0gICAgaWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICByZXR1cm47Ci0gICAgcGFnZS0+aGFuZGxlKCkt
PnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChj
YWxsSWQsIHNjcmlwdCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3dlYmluc3Bl
Y3Rvcl9jbG9zZShRV2ViUGFnZSogcGFnZSkKLXsKLSAgICBpZiAoIXBhZ2UtPmhhbmRsZSgpLT5w
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBwYWdlLT5o
YW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jbG9zZSgpOwotfQotCi12b2lk
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF93ZWJpbnNwZWN0b3Jfc2hvdyhRV2ViUGFnZSogcGFnZSkK
LXsKLSAgICBpZiAoIXBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkp
Ci0gICAgICAgIHJldHVybjsKLSAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5zaG93KCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3NldFRp
bWVsaW5lUHJvZmlsaW5nRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9vbCBlbmFibGVkKQotewot
ICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBwYWdlLT5oYW5kbGUoKS0+cGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGlmICghY29udHJvbGxlcikKLSAgICAgICAg
cmV0dXJuOwotICAgIGlmIChlbmFibGVkKQotICAgICAgICBjb250cm9sbGVyLT5zdGFydFRpbWVs
aW5lUHJvZmlsZXIoKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRyb2xsZXItPnN0b3BUaW1lbGlu
ZVByb2ZpbGVyKCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfZW5h
YmxlQ2FyZXRCcm93c2luZyhRV2ViUGFnZSogcGFnZSwgYm9vbCB2YWx1ZSkKLXsKLSAgICBwYWdl
LT5oYW5kbGUoKS0+cGFnZS0+c2V0dGluZ3MoKS0+c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQodmFs
dWUpOwotfQogCiBjbGFzcyBRV2ViUGFnZVdpZGdldENsaWVudCA6IHB1YmxpYyBRV2ViUGFnZUNs
aWVudCB7CiBwdWJsaWM6CkBAIC00NjMsNiArMzg0LDggQEAgUVdlYlBhZ2VQcml2YXRlOjpRV2Vi
UGFnZVByaXZhdGUoUVdlYlBhZ2UgKnFxKQogICAgIHBsdWdpbkZhY3RvcnkgPSAwOwogICAgIGlu
c2lkZU9wZW5DYWxsID0gZmFsc2U7CiAgICAgZm9yd2FyZFVuc3VwcG9ydGVkQ29udGVudCA9IGZh
bHNlOworICAgIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9IGZhbHNlOworICAgIHNlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgPSBmYWxzZTsKICAgICBlZGl0YWJsZSA9IGZhbHNlOwog
ICAgIHVzZUZpeGVkTGF5b3V0ID0gZmFsc2U7CiAgICAgbGlua1BvbGljeSA9IFFXZWJQYWdlOjpE
b250RGVsZWdhdGVMaW5rczsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaCBi
L1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAppbmRleCAwNzZmYjdjLi44MGE2MDc4IDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5oCkBAIC0zNjUsNiArMzY1LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlI
YW5kbGVyOworICAgIGZyaWVuZCBjbGFzcyBRRFJUU3VwcG9ydDsKIH07CiAKIFFfREVDTEFSRV9P
UEVSQVRPUlNfRk9SX0ZMQUdTKFFXZWJQYWdlOjpGaW5kRmxhZ3MpCmRpZmYgLS1naXQgYS9XZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlX3AuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCmluZGV4
IDE1ZGRmYjIuLmQ4YmE1ZGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5o
CisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCkBAIC0xNjIsNiArMTYyLDggQEAgcHVi
bGljOgogICAgIFFOZXR3b3JrQWNjZXNzTWFuYWdlciAqbmV0d29ya01hbmFnZXI7CiAKICAgICBi
b29sIGZvcndhcmRVbnN1cHBvcnRlZENvbnRlbnQ7CisgICAgYm9vbCBzbWFydEluc2VydERlbGV0
ZUVuYWJsZWQ7CisgICAgYm9vbCBzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOwogICAg
IFFXZWJQYWdlOjpMaW5rRGVsZWdhdGlvblBvbGljeSBsaW5rUG9saWN5OwogCiAgICAgUVNpemUg
dmlld3BvcnRTaXplOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmln
aW4uY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCmluZGV4IDZjMjZi
ZDcuLmI2OWYyNGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2lu
LmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAKQEAgLTMwLDIx
ICszMCw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIFFXRUJLSVRfRVhQ
T1JUIHF0X2RydF93aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHNvdXJj
ZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmlu
ZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQotewot
ICAgIFNlY3VyaXR5T3JpZ2luOjp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKCpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29s
LCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKLX0KLQotdm9p
ZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCkKLXsK
LSAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7Ci19Ci0K
LXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3NldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5G
b3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNjaGVtZSkKLXsKLSAg
ICBTZWN1cml0eU9yaWdpbjo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVt
ZShmb3JiaWRkZW4sIHNjaGVtZSk7Ci19Ci0KIC8qIQogICAgIFxjbGFzcyBRV2ViU2VjdXJpdHlP
cmlnaW4KICAgICBcc2luY2UgNC41CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIv
V2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA1NDZhYzM0Li5lNzMwODJhIDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
OSBAQAorMjAxMC0wMy0wNyAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBBZGQgc3Vw
cG9ydCBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIgY29tbWFuZHMuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIExheW91dFRlc3RDb250cm9sbGVyIGNvbW1hbmRzOgorICAgICAgICAgIHNldFNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZAorICAgICAgICAgIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQKKyAgICAgICAgICBleGVjQ29tbWFuZAorICAgICAgICAgIGlzQ29tbWFuZEVu
YWJsZWQKKworICAgICAgICBVbnNraXAgdGVzdHM6CisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcv
c21hcnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCisgICAgICAgIGVkaXRpbmcvZXhlY0NvbW1hbmQv
MTkwODkuaHRtbAorICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1pbWFnZS1pbi1h
bmNob3IuaHRtbAorICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2VuYWJsaW5nLWFuZC1zZWxl
Y3Rpb24tMi5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRl
c3BhY2UtY3Jhc2guaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13
aGl0ZXNwYWNlLWltZy1jcmFzaC5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJs
ZWNsaWNrLXdoaXRlc3BhY2UuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qt
bGluZS5odG1sCisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvNTMwMDM3OS5odG1sCisgICAgICAg
IGVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCisgICAgICAgIGVkaXRpbmcv
ZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9u
LzUxOTUxNjYtMS5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMi5odG1s
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0
CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAocXRfZHJ0X2V4ZWN1dGVD
b3JlQ29tbWFuZEJ5TmFtZSk6CisgICAgICAgIChxdF9kcnRfaXNDb21tYW5kRW5hYmxlZCk6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV2Vi
UGFnZTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKKyAgICAgICAgKFFXZWJQYWdlOjpz
bWFydEluc2VydERlbGV0ZUVuYWJsZWQpOgorICAgICAgICAoUVdlYlBhZ2U6OnRvZ2dsZVNtYXJ0
SW5zZXJ0RGVsZXRlRW5hYmxlZCk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0U2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgIChRV2ViUGFnZTo6c2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICog
QXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojp0b2dnbGVTbWFy
dEluc2VydERlbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aXNTZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRRdC5oOgorCiAyMDEwLTAzLTE3ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3Rp
YW5zZW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZjEzYTMKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0LmNwcApAQCAtMCwwICsxLDM1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiRHVtcFJl
bmRlclRyZWVTdXBwb3J0LmgiCisKKyNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5j
bHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKKyNpbmNsdWRlICJDb250
ZXh0TWVudUNsaWVudFF0LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJHQ0NvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNldHRpbmdz
LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNs
dWRlICJQbHVnaW5EYXRhYmFzZS5oIgorI2luY2x1ZGUgIlByaW50Q29udGV4dC5oIgorI2luY2x1
ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorCisjaW5jbHVkZSAi
cXdlYnBhZ2UuaCIKKyNpbmNsdWRlICJxd2VicGFnZV9wLmgiCisjaW5jbHVkZSAicXdlYmZyYW1l
LmgiCisjaW5jbHVkZSAicXdlYmZyYW1lX3AuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK1FEUlRTdXBwb3J0OjpRRFJUU3VwcG9ydCgpCit7CisgICAgcnVuKGZhbHNlKTsKK30KKwor
UURSVFN1cHBvcnQ6On5RRFJUU3VwcG9ydCgpCit7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6Om92
ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVzKCkKK3sKKyAgICBQbHVnaW5EYXRhYmFzZSogZGIgPSBQ
bHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygvKiBwb3B1bGF0ZSAqLyBmYWxzZSk7CisK
KyAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKKyAgICBTdHJpbmcgcXRQYXRoKHFnZXRlbnYoIlFU
V0VCS0lUX1BMVUdJTl9QQVRIIikuZGF0YSgpKTsKKyAgICBxdFBhdGguc3BsaXQoVUNoYXIoJzon
KSwgLyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFsc2UsIHBhdGhzKTsKKworICAgIGRiLT5zZXRQ
bHVnaW5EaXJlY3RvcmllcyhwYXRocyk7CisgICAgZGItPnJlZnJlc2goKTsKK30KKworaW50IFFE
UlRTdXBwb3J0Ojp3b3JrZXJUaHJlYWRDb3VudCgpCit7CisjaWYgRU5BQkxFKFdPUktFUlMpCisg
ICAgcmV0dXJuIFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkQ291bnQoKTsKKyNl
bHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6cnVuKGJv
b2wgYikKK3sKKyAgICBRV2ViUGFnZVByaXZhdGU6OmRydFJ1biA9IGI7Cit9CisKK3ZvaWQgUURS
VFN1cHBvcnQ6OnNldEZyYW1lU2V0RmxhdHRlbmluZ0VuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGJv
b2wgZW5hYmxlZCkKK3sKKyAgICBRV2ViUGFnZVByaXZhdGU6OmNvcmUocGFnZSktPnNldHRpbmdz
KCktPnNldEZyYW1lU2V0RmxhdHRlbmluZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKK3ZvaWQgUURS
VFN1cHBvcnQ6OndlYnBhZ2Vfc2V0R3JvdXBOYW1lKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3Ry
aW5nJiBncm91cE5hbWUpCit7CisgICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPnNldEdyb3VwTmFt
ZShncm91cE5hbWUpOworfQorCitRU3RyaW5nIFFEUlRTdXBwb3J0Ojp3ZWJwYWdlX2dyb3VwTmFt
ZShRV2ViUGFnZSogcGFnZSkKK3sKKyAgICByZXR1cm4gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmdy
b3VwTmFtZSgpOworfQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKK3ZvaWQgUURSVFN1cHBvcnQ6
OndlYmluc3BlY3Rvcl9leGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBwYWdlLCBsb25nIGNhbGxJZCwg
Y29uc3QgUVN0cmluZyYgc2NyaXB0KQoreworICAgIGlmICghcGFnZS0+aGFuZGxlKCktPnBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2UtPmhhbmRs
ZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVzdEluRnJvbnRl
bmQoY2FsbElkLCBzY3JpcHQpOworfQorCit2b2lkIFFEUlRTdXBwb3J0Ojp3ZWJpbnNwZWN0b3Jf
Y2xvc2UoUVdlYlBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+aGFuZGxl
KCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y2xvc2UoKTsKK30KKwordm9pZCBRRFJU
U3VwcG9ydDo6d2ViaW5zcGVjdG9yX3Nob3coUVdlYlBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKCFw
YWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICByZXR1
cm47CisgICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hv
dygpOworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQo
UVdlYlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVy
KiBjb250cm9sbGVyID0gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoZW5hYmxl
ZCkKKyAgICAgICAgY29udHJvbGxlci0+c3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7CisgICAgZWxz
ZQorICAgICAgICBjb250cm9sbGVyLT5zdG9wVGltZWxpbmVQcm9maWxlcigpOworfQorCit2b2lk
IFFEUlRTdXBwb3J0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoUVdlYlBhZ2UqIHBhZ2UsIGNv
bnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQoreworICAgIHBhZ2UtPmhh
bmRsZSgpLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVk
aXRvcigpLT5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOworfQorCitib29sIFFEUlRTdXBw
b3J0Ojppc0NvbW1hbmRFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBuYW1l
KQoreworICAgIHJldHVybiBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5pc0VuYWJsZWQo
KTsKK30KKworI2VuZGlmCisKK2Jvb2wgUURSVFN1cHBvcnQ6Omhhc0RvY3VtZW50RWxlbWVudChR
V2ViRnJhbWUqIHFmcmFtZSkKK3sKKyAgICByZXR1cm4gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShx
ZnJhbWUpLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKK30KKwordm9pZCBRRFJUU3Vw
cG9ydDo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoUVdlYkZyYW1lKiBxZnJhbWUsIGJv
b2wgZW5hYmxlZCkKK3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBGcmFt
ZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7CisgICAgSW5zcGVjdG9y
Q29udHJvbGxlciogY29udHJvbGxlciA9IGZyYW1lLT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoZW5h
YmxlZCkKKyAgICAgICAgY29udHJvbGxlci0+ZW5hYmxlUHJvZmlsZXIoKTsKKyAgICBlbHNlCisg
ICAgICAgIGNvbnRyb2xsZXItPmRpc2FibGVQcm9maWxlcigpOworI2VuZGlmCit9CisKKy8vIFBh
dXNlIGEgZ2l2ZW4gQ1NTIGFuaW1hdGlvbiBvciB0cmFuc2l0aW9uIG9uIHRoZSB0YXJnZXQgbm9k
ZSBhdCBhIHNwZWNpZmljIHRpbWUuCisvLyBJZiB0aGUgYW5pbWF0aW9uIG9yIHRyYW5zaXRpb24g
aXMgYWxyZWFkeSBwYXVzZWQsIGl0IHdpbGwgdXBkYXRlIGl0cyBwYXVzZSB0aW1lLgorLy8gVGhp
cyBtZXRob2QgaXMgb25seSBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0ZXN0aW5nIHRoZSBDU1Mg
YW5pbWF0aW9uIGFuZCB0cmFuc2l0aW9uIHN5c3RlbS4KK2Jvb2wgUURSVFN1cHBvcnQ6OnBhdXNl
QW5pbWF0aW9uKFFXZWJGcmFtZSAqcWZyYW1lLCBjb25zdCBRU3RyaW5nICZhbmltYXRpb25OYW1l
LCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVudElkKQoreworICAgIEZyYW1lKiBm
cmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKKyAgICBpZiAoIWZyYW1lKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9s
bGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOwor
ICAgIFFfQVNTRVJUKGRvYyk7CisKKyAgICBOb2RlKiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVu
dEJ5SWQoZWxlbWVudElkKTsKKyAgICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+cmVuZGVy
ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNvbnRyb2xsZXItPnBh
dXNlQW5pbWF0aW9uQXRUaW1lKGNvcmVOb2RlLT5yZW5kZXJlcigpLCBhbmltYXRpb25OYW1lLCB0
aW1lKTsKK30KKworYm9vbCBRRFJUU3VwcG9ydDo6cGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eShR
V2ViRnJhbWUgKnFmcmFtZSwgY29uc3QgUVN0cmluZyAmcHJvcGVydHlOYW1lLCBkb3VibGUgdGlt
ZSwgY29uc3QgUVN0cmluZyAmZWxlbWVudElkKQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJG
cmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUt
PmFuaW1hdGlvbigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIFFfQVNTRVJU
KGRvYyk7CisKKyAgICBOb2RlKiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVu
dElkKTsKKyAgICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+cmVuZGVyZXIoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNvbnRyb2xsZXItPnBhdXNlVHJhbnNpdGlv
bkF0VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwgcHJvcGVydHlOYW1lLCB0aW1lKTsKK30KKwor
Ly8gUGF1c2UgYSBnaXZlbiBTVkcgYW5pbWF0aW9uIG9uIHRoZSB0YXJnZXQgbm9kZSBhdCBhIHNw
ZWNpZmljIHRpbWUuCisvLyBUaGlzIG1ldGhvZCBpcyBvbmx5IGludGVuZGVkIHRvIGJlIHVzZWQg
Zm9yIHRlc3RpbmcgdGhlIFNWRyBhbmltYXRpb24gc3lzdGVtLgorYm9vbCBRRFJUU3VwcG9ydDo6
cGF1c2VTVkdBbmltYXRpb24oUVdlYkZyYW1lICpxZnJhbWUsIGNvbnN0IFFTdHJpbmcgJmFuaW1h
dGlvbklkLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVudElkKQoreworI2lmICFF
TkFCTEUoU1ZHKQorICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisgICAgRnJhbWUqIGZyYW1lID0g
UVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOworICAgIGlmICghZnJhbWUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKTsK
KyAgICBRX0FTU0VSVChkb2MpOworCisgICAgaWYgKCFkb2MtPnN2Z0V4dGVuc2lvbnMoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTm9kZSogY29yZU5vZGUgPSBkb2MtPmdldEVsZW1l
bnRCeUlkKGFuaW1hdGlvbklkKTsKKyAgICBpZiAoIWNvcmVOb2RlIHx8ICFTVkdTTUlMRWxlbWVu
dDo6aXNTTUlMRWxlbWVudChjb3JlTm9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiBkb2MtPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+c2FtcGxlQW5pbWF0aW9uQXRUaW1l
KGVsZW1lbnRJZCwgc3RhdGljX2Nhc3Q8U1ZHU01JTEVsZW1lbnQqPihjb3JlTm9kZSksIHRpbWUp
OworI2VuZGlmCit9CisKKy8vIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBjdXJyZW50bHkg
cnVubmluZyBhbmltYXRpb25zIChpbmNsdWRlcyBib3RoIENTUyB0cmFuc2l0aW9ucyBhbmQgQ1NT
IGFuaW1hdGlvbnMpLgoraW50IFFEUlRTdXBwb3J0OjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMo
UVdlYkZyYW1lICpxZnJhbWUpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0
ZTo6Y29yZShxZnJhbWUpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9u
KCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gY29udHJvbGxlci0+bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7Cit9CisKK3ZvaWQg
UURSVFN1cHBvcnQ6OmNsZWFyRnJhbWVOYW1lKFFXZWJGcmFtZSogcUZyYW1lKQoreworICAgIEZy
YW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKKyAgICBmcmFtZS0+
dHJlZSgpLT5jbGVhck5hbWUoKTsKK30KKworaW50IFFEUlRTdXBwb3J0OjpqYXZhU2NyaXB0T2Jq
ZWN0c0NvdW50KCkKK3sKKyAgICByZXR1cm4gSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2Jh
bERhdGEoKS0+aGVhcC5nbG9iYWxPYmplY3RDb3VudCgpOworfQorCit2b2lkIFFEUlRTdXBwb3J0
OjpnYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3QoKQoreworICAgIGdjQ29udHJvbGxlcigpLmdhcmJh
Z2VDb2xsZWN0Tm93KCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OmdhcmJhZ2VDb2xsZWN0b3Jf
Y29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSkKK3sKKyAgICBnY0Nv
bnRyb2xsZXIoKS5nYXJiYWdlQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkRm9yRGVidWdnaW5nKHdh
aXRVbnRpbERvbmUpOworfQorCisvLyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiBjb3VudGVyIGluIHRo
ZSBlbGVtZW50IHNwZWNpZmllZCBieSBcYSBpZC4KK1FTdHJpbmcgUURSVFN1cHBvcnQ6OmNvdW50
ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKFFXZWJGcmFtZSogcUZyYW1lLCBjb25zdCBRU3RyaW5nJiBp
ZCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7
CisgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpKSB7CisgICAg
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoaWQpOworICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6Y291bnRlclZhbHVlRm9yRWxlbWVudChlbGVtZW50KTsKKyAg
ICB9CisgICAgcmV0dXJuIFFTdHJpbmcoKTsKK30KKworaW50IFFEUlRTdXBwb3J0OjpwYWdlTnVt
YmVyRm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJpbmcmIGlkLCBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFt
ZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4g
LTE7CisKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gZnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1l
bnRCeUlkKEF0b21pY1N0cmluZyhpZCkpOworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0
dXJuIC0xOworCisgICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQo
ZWxlbWVudCwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKK30KKworaW50IFFEUlRTdXBwb3J0
OjpudW1iZXJPZlBhZ2VzKFFXZWJGcmFtZSogcUZyYW1lLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVp
Z2h0KQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1l
KTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gUHJp
bnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKGZyYW1lLCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCkp
OworfQorCisvLyBTdXNwZW5kIGFjdGl2ZSBET00gb2JqZWN0cyBpbiB0aGlzIGZyYW1lLgordm9p
ZCBRRFJUU3VwcG9ydDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBxRnJhbWUp
Cit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOwor
ICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN1
c3BlbmRBY3RpdmVET01PYmplY3RzKCk7Cit9CisKKy8vIFJlc3VtZSBhY3RpdmUgRE9NIG9iamVj
dHMgaW4gdGhpcyBmcmFtZS4KK3ZvaWQgUURSVFN1cHBvcnQ6OnJlc3VtZUFjdGl2ZURPTU9iamVj
dHMoUVdlYkZyYW1lKiBxRnJhbWUpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJp
dmF0ZTo6Y29yZShxRnJhbWUpOworICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAg
ZnJhbWUtPmRvY3VtZW50KCktPnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKK30KKwordm9pZCBR
RFJUU3VwcG9ydDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoUVdlYkZyYW1lKiBxRnJh
bWUsIGludCB3b3JsZElkLCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpCit7CisgICAgRnJhbWUqIGZy
YW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOworICAgIGlmIChmcmFtZSkKKyAg
ICAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlw
dEluV29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNjcmlwdCwgdHJ1ZSkuanNWYWx1ZSgp
OworfQorCit2b2lkIFFEUlRTdXBwb3J0Ojp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0
IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2Nv
bCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKQoreworICAgIFNlY3VyaXR5T3JpZ2luOjp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3Jp
Z2luKCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0
aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21h
aW5zKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Rz
KCkKK3sKKyAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7
Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JV
UkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBT
ZWN1cml0eU9yaWdpbjo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShm
b3JiaWRkZW4sIHNjaGVtZSk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OnNldFNtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZChRV2ViUGFnZSAqcGFnZSwgYm9vbCBlbmFibGVkKQoreworICAgIHBhZ2Ut
PmQtPnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKKwordm9pZCBRRFJU
U3VwcG9ydDo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChRV2ViUGFnZSAqcGFn
ZSwgYm9vbCBlbmFibGVkKQoreworICAgIHBhZ2UtPmQtPnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFj
ZUVuYWJsZWQgPSBlbmFibGVkOworfQorCit2b2lkIFFEUlRTdXBwb3J0OjplbmFibGVDYXJldEJy
b3dzaW5nKFFXZWJQYWdlKiBwYWdlLCBib29sIHZhbHVlKQoreworICAgIHBhZ2UtPmhhbmRsZSgp
LT5wYWdlLT5zZXR0aW5ncygpLT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZCh2YWx1ZSk7Cit9CisK
ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDQ0N2E5Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oCkBA
IC0wLDAgKzEsODMgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgUURSVFNVUFBPUlRf
SAorI2RlZmluZSBRRFJUU1VQUE9SVF9ICisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisK
KyNpbmNsdWRlIDxRdENvcmUvcXN0cmluZy5oPgorCitjbGFzcyBRV2ViUGFnZTsKK2NsYXNzIFFX
ZWJGcmFtZTsKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVVybDsKK1FUX0VORF9OQU1FU1BB
Q0UKKworY2xhc3MgUVdFQktJVF9FWFBPUlQgUURSVFN1cHBvcnQgeworCitwdWJsaWM6CisKKyAg
ICBRRFJUU3VwcG9ydCgpOworICAgIH5RRFJUU3VwcG9ydCgpOworCisgICAgdm9pZCBkdW1wX2Vk
aXRpbmdfY2FsbGJhY2tzKGJvb2wgYik7CisgICAgdm9pZCBkdW1wX2ZyYW1lX2xvYWRlcihib29s
IGIpOworICAgIHZvaWQgZHVtcF9yZXNvdXJjZV9sb2FkX2NhbGxiYWNrcyhib29sIGIpOworICAg
IHZvaWQgc2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChRV2ViUGFnZSosIGJvb2wpOworICAg
IHZvaWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoUVdlYkZyYW1lKiwgYm9vbCBlbmFi
bGVkKTsKKyAgICB2b2lkIHNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChRV2ViUGFnZSosIGJv
b2wgZW5hYmxlZCk7CisgICAgYm9vbCBwYXVzZUFuaW1hdGlvbihRV2ViRnJhbWUqLCBjb25zdCBR
U3RyaW5nJiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKKyAg
ICBib29sIHBhdXNlVHJhbnNpdGlvbk9mUHJvcGVydHkoUVdlYkZyYW1lKiwgY29uc3QgUVN0cmlu
ZyYgbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CisgICAgYm9v
bCBwYXVzZVNWR0FuaW1hdGlvbihRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBhbmltYXRpb25J
ZCwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CisgICAgaW50IG51bWJl
ck9mQWN0aXZlQW5pbWF0aW9ucyhRV2ViRnJhbWUqKTsKKyAgICB2b2lkIHNldERvbWFpblJlbGF4
YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcm
IHNjaGVtZSk7CisgICAgUVN0cmluZyB3ZWJwYWdlX2dyb3VwTmFtZShRV2ViUGFnZSAqcGFnZSk7
CisgICAgdm9pZCB3ZWJwYWdlX3NldEdyb3VwTmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0
cmluZyYgZ3JvdXBOYW1lKTsKKyAgICB2b2lkIGR1bXBfc2V0X2FjY2VwdHNfZWRpdGluZyhib29s
IGIpOworICAgIHZvaWQgY2xlYXJGcmFtZU5hbWUoUVdlYkZyYW1lKiBxRnJhbWUpOworICAgIHZv
aWQgb3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKTsKKyAgICB2b2lkIHJlc2V0T3JpZ2luQWNj
ZXNzV2hpdGVMaXN0cygpOworICAgIGJvb2wgaGFzRG9jdW1lbnRFbGVtZW50KFFXZWJGcmFtZSog
cUZyYW1lKTsKKyAgICBpbnQgamF2YVNjcmlwdE9iamVjdHNDb3VudCgpOworICAgIHZvaWQgZ2Fy
YmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCk7CisgICAgdm9pZCBnYXJiYWdlQ29sbGVjdG9yX2NvbGxl
Y3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpOworICAgIHZvaWQgd2hpdGVM
aXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFT
dHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgUVN0cmluZyBjb3VudGVy
VmFsdWVGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQp
OworICAgIGludCB3b3JrZXJUaHJlYWRDb3VudCgpOworICAgIGludCBwYWdlTnVtYmVyRm9yRWxl
bWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0KTsKKyAgICBpbnQgbnVtYmVyT2ZQYWdlcyhRV2ViRnJhbWUqIHFGcmFt
ZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CisgICAgdm9pZCB3ZWJpbnNwZWN0b3JfZXhl
Y3V0ZVNjcmlwdChRV2ViUGFnZSogcGFnZSwgbG9uZyBjYWxsSWQsIGNvbnN0IFFTdHJpbmcmIHNj
cmlwdCk7CisgICAgdm9pZCB3ZWJpbnNwZWN0b3Jfc2hvdyhRV2ViUGFnZSogcGFnZSk7CisgICAg
dm9pZCB3ZWJpbnNwZWN0b3JfY2xvc2UoUVdlYlBhZ2UqIHBhZ2UpOworICAgIHZvaWQgZXhlY3V0
ZUNvcmVDb21tYW5kQnlOYW1lKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBj
b25zdCBRU3RyaW5nJiB2YWx1ZSk7CisgICAgYm9vbCBpc0NvbW1hbmRFbmFibGVkKFFXZWJQYWdl
KiBwYWdlLCBjb25zdCBRU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIHJ1bihib29sIGIpOworICAg
IHZvaWQgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBib29sIGVu
YWJsZWQpOworICAgIHZvaWQgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChRV2Vi
UGFnZSogcGFnZSwgYm9vbCBlbmFibGVkKTsKKyAgICB2b2lkIGVuYWJsZUNhcmV0QnJvd3Npbmco
UVdlYlBhZ2UqIHBhZ2UsIGJvb2wgdmFsdWUpOworICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9i
amVjdHMoUVdlYkZyYW1lKiBxRnJhbWUpOworICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0
cyhRV2ViRnJhbWUqIHFGcmFtZSk7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRX
b3JsZChRV2ViRnJhbWUqIHFGcmFtZSwgaW50IHdvcmxkSWQsIGNvbnN0IFFTdHJpbmcmIHNjcmlw
dCk7CisKKyAgICBib29sIGRydFJ1bjsKK307CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAppbmRleCA5MGViYjFkLi44MjVjNTRiIDEwMDY0
NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCisrKyBi
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKQEAgLTMxLDYgKzMx
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnRRdC5oIgog
CisjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgiCisKICNpbmNsdWRlICJxd2VicGFn
ZS5oIgogI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKIApAQCAtMzMzLDE0ICszMzUsMTggQEAgdm9p
ZCBFZGl0b3JDbGllbnRRdDo6cGFnZURlc3Ryb3llZCgpCiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6
OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fcGFnZS0+ZC0+c21hcnRJbnNlcnREZWxldGVF
bmFibGVkOworfQorCit2b2lkIEVkaXRvckNsaWVudFF0Ojp0b2dnbGVTbWFydEluc2VydERlbGV0
ZSgpCit7CisgICAgYm9vbCBjdXJyZW50ID0gbV9wYWdlLT5kLT5zbWFydEluc2VydERlbGV0ZUVu
YWJsZWQ7CisgICAgbV9wYWdlLT5kLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSAhY3VycmVu
dDsKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gbV9wYWdlLT5kLT5zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOwogfQog
CiB2b2lkIEVkaXRvckNsaWVudFF0Ojp0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpCmRp
ZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaCBiL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCmluZGV4IDQyYTQwMmYuLjZj
MjA4OTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5oCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCkBAIC00
OCwxMyArNDgsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5n
ZShSYW5nZSopOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlKEhU
TUxFbGVtZW50Kik7CiAgICAgdmlydHVhbCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgp
OyAKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKICAgICB2aXJ0
dWFsIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7IAogICAgIHZpcnR1
YWwgYm9vbCBpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpOwogICAgIHZpcnR1YWwg
dm9pZCB0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwogICAgIHZpcnR1YWwgYm9vbCBp
c0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlR3JhbW1h
ckNoZWNraW5nKCk7CiAgICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsK
LSAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0V29yZEJlZm9yZU1lbnVFdmVudCgpOwogICAg
IHZpcnR1YWwgYm9vbCBpc0VkaXRhYmxlKCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90ZXN0
cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3Rz
dF9xd2VicGFnZS5jcHAKaW5kZXggYmE3YTg3ZS4uNDgxZjVlMCAxMDA2NDQKLS0tIGEvV2ViS2l0
L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICovCiAKICNpbmNs
dWRlICIuLi91dGlsLmgiCisjaW5jbHVkZSAiLi4vV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0LmgiCiAjaW5jbHVkZSA8UURpcj4KICNpbmNsdWRlIDxRR3JhcGhpY3NXaWRnZXQ+
CiAjaW5jbHVkZSA8UUxpbmVFZGl0PgpAQCAtNzIyLDEyICs3MjMsOSBAQCB2b2lkIHRzdF9RV2Vi
UGFnZTo6Y3JlYXRlVmlld2xlc3NQbHVnaW4oKQogCiB9CiAKLS8vIGltcG9ydCBwcml2YXRlIEFQ
SQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF93ZWJwYWdlX3NldEdyb3VwTmFtZShRV2ViUGFnZSog
cGFnZSwgY29uc3QgUVN0cmluZyYgZ3JvdXBOYW1lKTsKLVFTdHJpbmcgUVdFQktJVF9FWFBPUlQg
cXRfd2VicGFnZV9ncm91cE5hbWUoUVdlYlBhZ2UqIHBhZ2UpOwotCiB2b2lkIHRzdF9RV2ViUGFn
ZTo6bXVsdGlwbGVQYWdlR3JvdXBzQW5kTG9jYWxTdG9yYWdlKCkKIHsKKyAgICBRRFJUU3VwcG9y
dCogZHJ0U3VwcG9ydCA9IG5ldyBRRFJUU3VwcG9ydCgpOwogICAgIFFEaXIgZGlyKFFEaXI6OmN1
cnJlbnRQYXRoKCkpOwogICAgIGRpci5ta2RpcigicGF0aDEiKTsKICAgICBkaXIubWtkaXIoInBh
dGgyIik7CkBAIC03MzcsMTIgKzczNSwxMiBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6bXVsdGlwbGVQ
YWdlR3JvdXBzQW5kTG9jYWxTdG9yYWdlKCkKIAogICAgIHZpZXcxLnBhZ2UoKS0+c2V0dGluZ3Mo
KS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6TG9jYWxTdG9yYWdlRW5hYmxlZCwgdHJ1ZSk7
CiAgICAgdmlldzEucGFnZSgpLT5zZXR0aW5ncygpLT5zZXRMb2NhbFN0b3JhZ2VQYXRoKFFEaXI6
OnRvTmF0aXZlU2VwYXJhdG9ycyhRRGlyOjpjdXJyZW50UGF0aCgpICsgIi9wYXRoMSIpKTsKLSAg
ICBxdF93ZWJwYWdlX3NldEdyb3VwTmFtZSh2aWV3MS5wYWdlKCksICJncm91cDEiKTsKKyAgICBk
cnRTdXBwb3J0LT53ZWJwYWdlX3NldEdyb3VwTmFtZSh2aWV3MS5wYWdlKCksICJncm91cDEiKTsK
ICAgICB2aWV3Mi5wYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6
OkxvY2FsU3RvcmFnZUVuYWJsZWQsIHRydWUpOyAgICAKICAgICB2aWV3Mi5wYWdlKCktPnNldHRp
bmdzKCktPnNldExvY2FsU3RvcmFnZVBhdGgoUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKFFEaXI6
OmN1cnJlbnRQYXRoKCkgKyAiL3BhdGgyIikpOwotICAgIHF0X3dlYnBhZ2Vfc2V0R3JvdXBOYW1l
KHZpZXcyLnBhZ2UoKSwgImdyb3VwMiIpOwotICAgIFFDT01QQVJFKHF0X3dlYnBhZ2VfZ3JvdXBO
YW1lKHZpZXcxLnBhZ2UoKSksIFFTdHJpbmcoImdyb3VwMSIpKTsKLSAgICBRQ09NUEFSRShxdF93
ZWJwYWdlX2dyb3VwTmFtZSh2aWV3Mi5wYWdlKCkpLCBRU3RyaW5nKCJncm91cDIiKSk7CisgICAg
ZHJ0U3VwcG9ydC0+d2VicGFnZV9zZXRHcm91cE5hbWUodmlldzIucGFnZSgpLCAiZ3JvdXAyIik7
CisgICAgUUNPTVBBUkUoZHJ0U3VwcG9ydC0+d2VicGFnZV9ncm91cE5hbWUodmlldzEucGFnZSgp
KSwgUVN0cmluZygiZ3JvdXAxIikpOworICAgIFFDT01QQVJFKGRydFN1cHBvcnQtPndlYnBhZ2Vf
Z3JvdXBOYW1lKHZpZXcyLnBhZ2UoKSksIFFTdHJpbmcoImdyb3VwMiIpKTsKIAogCiAgICAgdmll
dzEuc2V0SHRtbChRU3RyaW5nKCI8aHRtbD48Ym9keT4gPC9ib2R5PjwvaHRtbD4iKSwgUVVybCgi
aHR0cDovL3d3dy5teWV4YW1wbGUuY29tIikpOwpAQCAtMTQ1OSwxMSArMTQ1Nyw5IEBAIHZvaWQg
dHN0X1FXZWJQYWdlOjppbnB1dE1ldGhvZHMoKQogICAgIGRlbGV0ZSBjb250YWluZXI7CiB9CiAK
LS8vIGltcG9ydCBhIGxpdHRsZSBEUlQgaGVscGVyIGZ1bmN0aW9uIHRvIHRyaWdnZXIgdGhlIGdh
cmJhZ2UgY29sbGVjdG9yCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9nYXJiYWdlQ29sbGVj
dG9yX2NvbGxlY3QoKTsKLQogdm9pZCB0c3RfUVdlYlBhZ2U6OnByb3RlY3RCaW5kaW5nc1J1bnRp
bWVPYmplY3RzRnJvbUNvbGxlY3RvcigpCiB7CisgICAgUURSVFN1cHBvcnQqIGRydFN1cHBvcnQg
PSBuZXcgUURSVFN1cHBvcnQoKTsKICAgICBRU2lnbmFsU3B5IGxvYWRTcHkobV92aWV3LCBTSUdO
QUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7CiAKICAgICBQbHVnaW5QYWdlKiBuZXdQYWdlID0gbmV3
IFBsdWdpblBhZ2UobV92aWV3KTsKQEAgLTE0NzgsNyArMTQ3NCw3IEBAIHZvaWQgdHN0X1FXZWJQ
YWdlOjpwcm90ZWN0QmluZGluZ3NSdW50aW1lT2JqZWN0c0Zyb21Db2xsZWN0b3IoKQogCiAgICAg
bmV3UGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidGVzdG1lKCdmb28nKSIp
OwogCi0gICAgcXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgpOworICAgIGRydFN1cHBv
cnQtPmdhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgpOwogCiAgICAgLy8gZG9uJ3QgY3Jhc2ghCiAg
ICAgbmV3UGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidGVzdG1lKCdiYXIn
KSIpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDExOWE3NGQuLmNhNDQzMjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0No
YW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAx
MC0wMy0wNyAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBBZGQgc3VwcG9ydCBmb3Ig
TGF5b3V0VGVzdENvbnRyb2xsZXIgY29tbWFuZHMuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IExheW91dFRlc3RDb250cm9sbGVyIGNvbW1hbmRzOgorICAgICAgICAgIHNldFNtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZAorICAgICAgICAgIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQKKyAgICAgICAgICBleGVjQ29tbWFuZAorICAgICAgICAgIGlzQ29tbWFuZEVuYWJsZWQKKwor
ICAgICAgICBVbnNraXAgdGVzdHM6CisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZWRp
dGluZy1kaXNhYmxlZC5odG1sCisgICAgICAgIGVkaXRpbmcvZXhlY0NvbW1hbmQvMTkwODkuaHRt
bAorICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1pbWFnZS1pbi1hbmNob3IuaHRt
bAorICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2VuYWJsaW5nLWFuZC1zZWxlY3Rpb24tMi5o
dG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtY3Jh
c2guaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNl
LWltZy1jcmFzaC5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdo
aXRlc3BhY2UuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbGluZS5odG1s
CisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvNTMwMDM3OS5odG1sCisgICAgICAgIGVkaXRpbmcv
ZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcv
c21hcnQtZGVsZXRlLTAwNC5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYt
MS5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMi5odG1sCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0CisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFj
ZUVuYWJsZWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV4ZWNDb21tYW5kKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjppc0NvbW1hbmRFbmFibGVkKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisKIDIwMTAt
MDMtMTcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
RHVtcFJlbmRlclRyZWVRdC5jcHAKaW5kZXggNWM1MTk5Ny4uYzFhOTBhNiAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkR1bXBSZW5kZXJU
cmVlUXQuaCIKKyNpbmNsdWRlICIuLi8uLi8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0LmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXJRdC5oIgogI2luY2x1
ZGUgIkdDQ29udHJvbGxlclF0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5o
IgpAQCAtNzQsMTMgKzc1LDggQEAKIAogI2luY2x1ZGUgPHFkZWJ1Zy5oPgogCi1leHRlcm4gdm9p
ZCBxdF9kcnRfcnVuKGJvb2wgYik7CiBleHRlcm4gdm9pZCBxdF9kdW1wX3NldF9hY2NlcHRzX2Vk
aXRpbmcoYm9vbCBiKTsKIGV4dGVybiB2b2lkIHF0X2R1bXBfZnJhbWVfbG9hZGVyKGJvb2wgYik7
Ci1leHRlcm4gdm9pZCBxdF9kcnRfY2xlYXJGcmFtZU5hbWUoUVdlYkZyYW1lKiBxRnJhbWUpOwot
ZXh0ZXJuIHZvaWQgcXRfZHJ0X292ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVzKCk7Ci1leHRlcm4g
dm9pZCBxdF9kcnRfcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7Ci1leHRlcm4gYm9vbCBx
dF9kcnRfaGFzRG9jdW1lbnRFbGVtZW50KFFXZWJGcmFtZSogcUZyYW1lKTsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zMTUsNyArMzExLDcgQEAgRHVtcFJlbmRlclRyZWU6OkR1bXBSZW5k
ZXJUcmVlKCkKICAgICAsIG1fZW5hYmxlVGV4dE91dHB1dChmYWxzZSkKICAgICAsIG1fc2luZ2xl
RmlsZU1vZGUoZmFsc2UpCiB7Ci0gICAgcXRfZHJ0X292ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVz
KCk7CisgICAgbV9kcnRTdXBwb3J0LT5vdmVyd3JpdGVQbHVnaW5EaXJlY3RvcmllcygpOwogICAg
IFFXZWJTZXR0aW5nczo6ZW5hYmxlUGVyc2lzdGVudFN0b3JhZ2UoKTsKIAogICAgIC8vIGNyZWF0
ZSBvdXIgcHJpbWFyeSB0ZXN0aW5nIHBhZ2Uvdmlldy4KQEAgLTMyNywxNCArMzIzLDE1IEBAIER1
bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSgpCiAKICAgICAvLyBjcmVhdGUgb3VyIGNvbnRy
b2xsZXJzLiBUaGlzIGhhcyB0byBiZSBkb25lIGJlZm9yZSBjb25uZWN0RnJhbWUsCiAgICAgLy8g
YXMgaXQgZXhwb3J0cyB0aGVyZSB0byB0aGUgSmF2YVNjcmlwdCBET00gd2luZG93LgotICAgIG1f
Y29udHJvbGxlciA9IG5ldyBMYXlvdXRUZXN0Q29udHJvbGxlcih0aGlzKTsKKyAgICBtX2RydFN1
cHBvcnQgPSBuZXcgUURSVFN1cHBvcnQoKTsKKyAgICBtX2NvbnRyb2xsZXIgPSBuZXcgTGF5b3V0
VGVzdENvbnRyb2xsZXIodGhpcywgbV9kcnRTdXBwb3J0KTsKICAgICBjb25uZWN0KG1fY29udHJv
bGxlciwgU0lHTkFMKHNob3dQYWdlKCkpLCB0aGlzLCBTTE9UKHNob3dQYWdlKCkpKTsKICAgICBj
b25uZWN0KG1fY29udHJvbGxlciwgU0lHTkFMKGhpZGVQYWdlKCkpLCB0aGlzLCBTTE9UKGhpZGVQ
YWdlKCkpKTsKIAogICAgIGNvbm5lY3QobV9jb250cm9sbGVyLCBTSUdOQUwoZG9uZSgpKSwgdGhp
cywgU0xPVChkdW1wKCkpKTsKICAgICBtX2V2ZW50U2VuZGVyID0gbmV3IEV2ZW50U2VuZGVyKG1f
cGFnZSk7CiAgICAgbV90ZXh0SW5wdXRDb250cm9sbGVyID0gbmV3IFRleHRJbnB1dENvbnRyb2xs
ZXIobV9wYWdlKTsKLSAgICBtX2djQ29udHJvbGxlciA9IG5ldyBHQ0NvbnRyb2xsZXIobV9wYWdl
KTsKKyAgICBtX2djQ29udHJvbGxlciA9IG5ldyBHQ0NvbnRyb2xsZXIobV9wYWdlLCBtX2RydFN1
cHBvcnQpOwogCiAgICAgLy8gbm93IGNvbm5lY3Qgb3VyIGRpZmZlcmVudCBzaWduYWxzCiAgICAg
Y29ubmVjdChtX3BhZ2UsIFNJR05BTChmcmFtZUNyZWF0ZWQoUVdlYkZyYW1lICopKSwKQEAgLTM1
Nyw3ICszNTQsNyBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUoKQogICAgICAgICAg
ICAgdGhpcywgU0xPVChzdGF0dXNCYXJNZXNzYWdlKGNvbnN0IFFTdHJpbmcmKSkpOwogCiAgICAg
UU9iamVjdDo6Y29ubmVjdCh0aGlzLCBTSUdOQUwocXVpdCgpKSwgcUFwcCwgU0xPVChxdWl0KCkp
LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7Ci0gICAgcXRfZHJ0X3J1bih0cnVlKTsKKyAgICBtX2Ry
dFN1cHBvcnQtPnJ1bih0cnVlKTsKICAgICBRRm9jdXNFdmVudCBldmVudChRRXZlbnQ6OkZvY3Vz
SW4sIFF0OjpBY3RpdmVXaW5kb3dGb2N1c1JlYXNvbik7CiAgICAgUUFwcGxpY2F0aW9uOjpzZW5k
RXZlbnQobV9tYWluVmlldywgJmV2ZW50KTsKIH0KQEAgLTQwNCwxMiArNDAxLDEyIEBAIHZvaWQg
RHVtcFJlbmRlclRyZWU6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCkKICAg
ICBtX3BhZ2UtPnVuZG9TdGFjaygpLT5jbGVhcigpOwogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkt
PnNldFpvb21GYWN0b3IoMS4wKTsKICAgICBjbGVhckhpc3RvcnkobV9wYWdlKTsKLSAgICBxdF9k
cnRfY2xlYXJGcmFtZU5hbWUobV9wYWdlLT5tYWluRnJhbWUoKSk7CisgICAgbV9kcnRTdXBwb3J0
LT5jbGVhckZyYW1lTmFtZShtX3BhZ2UtPm1haW5GcmFtZSgpKTsKIAogICAgIFdvcmtRdWV1ZTo6
c2hhcmVkKCktPmNsZWFyKCk7CiAgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+c2V0RnJvemVuKGZh
bHNlKTsKIAotICAgIHF0X2RydF9yZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMoKTsKKyAgICBt
X2RydFN1cHBvcnQtPnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwogCiAgICAgUUxvY2Fs
ZTo6c2V0RGVmYXVsdChRTG9jYWxlOjpjKCkpOwogICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsK
QEAgLTU2MCw3ICs1NTcsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpoaWRlUGFnZSgpCiAKIFFT
dHJpbmcgRHVtcFJlbmRlclRyZWU6OmR1bXBGcmFtZXNBc1RleHQoUVdlYkZyYW1lKiBmcmFtZSkK
IHsKLSAgICBpZiAoIWZyYW1lIHx8ICFxdF9kcnRfaGFzRG9jdW1lbnRFbGVtZW50KGZyYW1lKSkK
KyAgICBpZiAoIWZyYW1lIHx8ICFtX2RydFN1cHBvcnQtPmhhc0RvY3VtZW50RWxlbWVudChmcmFt
ZSkpCiAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CiAKICAgICBRU3RyaW5nIHJlc3VsdDsKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQu
aCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaAppbmRl
eCA4ZDgwZjg3Li5mOWJlYjVkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvRHVtcFJlbmRlclRyZWVRdC5oCkBAIC01Myw2ICs1Myw3IEBAIFFUX0VORF9OQU1FU1BBQ0UK
IGNsYXNzIFFXZWJGcmFtZTsKIAogY2xhc3MgTGF5b3V0VGVzdENvbnRyb2xsZXI7CitjbGFzcyBR
RFJUU3VwcG9ydDsKIGNsYXNzIEV2ZW50U2VuZGVyOwogY2xhc3MgVGV4dElucHV0Q29udHJvbGxl
cjsKIGNsYXNzIEdDQ29udHJvbGxlcjsKQEAgLTEyMyw2ICsxMjQsNyBAQCBwcml2YXRlOgogICAg
IFFTdHJpbmcgZHVtcEZyYW1lc0FzVGV4dChRV2ViRnJhbWUqIGZyYW1lKTsKICAgICBRU3RyaW5n
IGR1bXBCYWNrRm9yd2FyZExpc3QoKTsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciAqbV9jb250
cm9sbGVyOworICAgIFFEUlRTdXBwb3J0ICptX2RydFN1cHBvcnQ7CiAKICAgICBib29sIG1fZHVt
cFBpeGVsczsKICAgICBRU3RyaW5nIG1fZXhwZWN0ZWRIYXNoOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuY3BwCmluZGV4IDljYzNhYTcuLmEwMmU1
YmUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxl
clF0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJR
dC5jcHAKQEAgLTI5LDMwICsyOSwyNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiR0NDb250cm9sbGVyUXQuaCIKKyNpbmNsdWRlICIuLi8uLi8uLi9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgiCiAKICNpbmNsdWRlIDxxd2VicGFnZS5o
PgogCi1leHRlcm4gaW50IHF0X2RydF9qYXZhU2NyaXB0T2JqZWN0c0NvdW50KCk7Ci1leHRlcm4g
dm9pZCBxdF9kcnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCk7Ci0KLWV4dGVybiB2b2lkIHF0
X2RydF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRV
bnRpbERvbmUpOwotCi1HQ0NvbnRyb2xsZXI6OkdDQ29udHJvbGxlcihRV2ViUGFnZSogcGFyZW50
KQorR0NDb250cm9sbGVyOjpHQ0NvbnRyb2xsZXIoUVdlYlBhZ2UqIHBhcmVudCwgUURSVFN1cHBv
cnQqIGRydFN1cHBvcnQpCiAgICAgOiBRT2JqZWN0KHBhcmVudCkKKyAgICAsIG1fZHJ0U3VwcG9y
dChkcnRTdXBwb3J0KQogewogfQogCiB2b2lkIEdDQ29udHJvbGxlcjo6Y29sbGVjdCgpIGNvbnN0
CiB7Ci0gICAgcXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgpOworICAgIG1fZHJ0U3Vw
cG9ydC0+Z2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCk7CiB9CiAKIHZvaWQgR0NDb250cm9sbGVy
Ojpjb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKSBjb25zdAogewot
ICAgIHF0X2RydF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3RPbkFsdGVybmF0ZVRocmVhZCh3YWl0
VW50aWxEb25lKTsKKyAgICBtX2RydFN1cHBvcnQtPmdhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdE9u
QWx0ZXJuYXRlVGhyZWFkKHdhaXRVbnRpbERvbmUpOwogfQogCiBzaXplX3QgR0NDb250cm9sbGVy
OjpnZXRKU09iamVjdENvdW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcXRfZHJ0X2phdmFTY3Jp
cHRPYmplY3RzQ291bnQoKTsKKyAgICByZXR1cm4gbV9kcnRTdXBwb3J0LT5qYXZhU2NyaXB0T2Jq
ZWN0c0NvdW50KCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9HQ0NvbnRyb2xsZXJRdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250
cm9sbGVyUXQuaAppbmRleCA4ZjViNDMyLi41NDA0YjI2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5oCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmgKQEAgLTMyLDE3ICszMiwyMSBAQAogI2lu
Y2x1ZGUgPFFPYmplY3Q+CiAKIGNsYXNzIFFXZWJQYWdlOworY2xhc3MgUURSVFN1cHBvcnQ7CiAK
IGNsYXNzIEdDQ29udHJvbGxlciA6IHB1YmxpYyBRT2JqZWN0CiB7CiAgICAgUV9PQkpFQ1QKIHB1
YmxpYzoKLSAgICBHQ0NvbnRyb2xsZXIoUVdlYlBhZ2UqIHBhcmVudCk7CisgICAgR0NDb250cm9s
bGVyKFFXZWJQYWdlKiBwYXJlbnQsIFFEUlRTdXBwb3J0KiBkcnRTdXBwb3J0KTsKIAogcHVibGlj
IHNsb3RzOgogICAgIHZvaWQgY29sbGVjdCgpIGNvbnN0OwogICAgIHZvaWQgY29sbGVjdE9uQWx0
ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSkgY29uc3Q7CiAgICAgc2l6ZV90IGdldEpT
T2JqZWN0Q291bnQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBRRFJUU3VwcG9ydCogbV9kcnRT
dXBwb3J0OwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IGM4YTI5MjkuLmQ4ODVh
MzEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAgKi8KICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlclF0LmgiCisjaW5jbHVkZSAi
Li4vLi4vLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5o
IgogCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVRdC5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5o
IgpAQCAtMzksMjggKzQwLDExIEBACiBleHRlcm4gdm9pZCBxdF9kdW1wX2VkaXRpbmdfY2FsbGJh
Y2tzKGJvb2wgYik7CiBleHRlcm4gdm9pZCBxdF9kdW1wX2ZyYW1lX2xvYWRlcihib29sIGIpOwog
ZXh0ZXJuIHZvaWQgcXRfZHVtcF9yZXNvdXJjZV9sb2FkX2NhbGxiYWNrcyhib29sIGIpOwotZXh0
ZXJuIHZvaWQgcXRfZHJ0X3NldEZyYW1lU2V0RmxhdHRlbmluZ0VuYWJsZWQoUVdlYlBhZ2UqLCBi
b29sKTsKLWV4dGVybiB2b2lkIHF0X2RydF9zZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChR
V2ViRnJhbWUqLCBib29sIGVuYWJsZWQpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3NldFRpbWVsaW5l
UHJvZmlsaW5nRW5hYmxlZChRV2ViUGFnZSosIGJvb2wgZW5hYmxlZCk7Ci1leHRlcm4gYm9vbCBx
dF9kcnRfcGF1c2VBbmltYXRpb24oUVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYgbmFtZSwgZG91
YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7Ci1leHRlcm4gYm9vbCBxdF9kcnRf
cGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eShRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBuYW1l
LCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKLWV4dGVybiBib29sIHF0
X2RydF9wYXVzZVNWR0FuaW1hdGlvbihRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBhbmltYXRp
b25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7Ci1leHRlcm4gaW50
IHF0X2RydF9udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoUVdlYkZyYW1lKik7Ci1leHRlcm4gdm9p
ZCBxdF9kcnRfc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29sIGZv
cmJpZGRlbiwgY29uc3QgUVN0cmluZyYgc2NoZW1lKTsKLQotZXh0ZXJuIHZvaWQgcXRfZHJ0X3do
aXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2luLCBjb25z
dCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlv
bkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwotZXh0ZXJuIFFTdHJpbmcg
cXRfZHJ0X2NvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKFFXZWJGcmFtZSogcUZyYW1lLCBjb25z
dCBRU3RyaW5nJiBpZCk7Ci1leHRlcm4gaW50IHF0X2RydF93b3JrZXJUaHJlYWRDb3VudCgpOwot
ZXh0ZXJuIGludCBxdF9kcnRfcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFFXZWJGcmFtZSogcUZy
YW1lLCBjb25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7Ci1leHRl
cm4gaW50IHF0X2RydF9udW1iZXJPZlBhZ2VzKFFXZWJGcmFtZSogcUZyYW1lLCBmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0KTsKLWV4dGVybiB2b2lkIHF0X2RydF93ZWJpbnNwZWN0b3JfZXhlY3V0
ZVNjcmlwdChRV2ViUGFnZSogcGFnZSwgbG9uZyBjYWxsSWQsIGNvbnN0IFFTdHJpbmcmIHNjcmlw
dCk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfd2ViaW5zcGVjdG9yX3Nob3coUVdlYlBhZ2UgKnBhZ2Up
OwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3dlYmluc3BlY3Rvcl9jbG9zZShRV2ViUGFnZSAqcGFnZSk7
Ci1leHRlcm4gdm9pZCBxdF9kcnRfZW5hYmxlQ2FyZXRCcm93c2luZyhRV2ViUGFnZSogcGFnZSwg
Ym9vbCB2YWx1ZSk7Ci0KLUxheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxl
cihXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZSogZHJ0KQorCitMYXlvdXRUZXN0Q29udHJvbGxlcjo6
TGF5b3V0VGVzdENvbnRyb2xsZXIoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWUqIGRydCwgUURSVFN1
cHBvcnQqIGRydFN1cHBvcnQpCiAgICAgOiBRT2JqZWN0KCkKICAgICAsIG1fZHJ0KGRydCkKKyAg
ICAsIG1fZHJ0U3VwcG9ydChkcnRTdXBwb3J0KQogewogICAgIHJlc2V0KCk7CiB9CkBAIC0xNDIs
NyArMTI2LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2FpdFVudGlsRG9uZSgpCiAK
IFFTdHJpbmcgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlk
KGNvbnN0IFFTdHJpbmcmIGlkKQogewotICAgIHJldHVybiBxdF9kcnRfY291bnRlclZhbHVlRm9y
RWxlbWVudEJ5SWQobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIGlkKTsKKyAgICByZXR1
cm4gbV9kcnRTdXBwb3J0LT5jb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChtX2RydC0+d2ViUGFn
ZSgpLT5tYWluRnJhbWUoKSwgaWQpOwogfQogCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Ondl
Ykhpc3RvcnlJdGVtQ291bnQoKQpAQCAtMjk0LDI0ICsyNzgsMjQgQEAgUVN0cmluZyBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6ZGVjb2RlSG9zdE5hbWUoY29uc3QgUVN0cmluZyYgaG9zdCkKIAogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xvc2VXZWJJbnNwZWN0b3IoKQogewotICAgIHF0X2Ry
dF93ZWJpbnNwZWN0b3JfY2xvc2UobV9kcnQtPndlYlBhZ2UoKSk7CisgICAgbV9kcnRTdXBwb3J0
LT53ZWJpbnNwZWN0b3JfY2xvc2UobV9kcnQtPndlYlBhZ2UoKSk7CiAgICAgbV9kcnQtPndlYlBh
Z2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZCwgZmFsc2UpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzaG93
V2ViSW5zcGVjdG9yKCkKIHsKICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRB
dHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJFeHRyYXNFbmFibGVkLCB0cnVlKTsKLSAg
ICBxdF9kcnRfd2ViaW5zcGVjdG9yX3Nob3cobV9kcnQtPndlYlBhZ2UoKSk7CisgICAgbV9kcnRT
dXBwb3J0LT53ZWJpbnNwZWN0b3Jfc2hvdyhtX2RydC0+d2ViUGFnZSgpKTsKIH0KIAogdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihsb25nIGNhbGxJZCwg
Y29uc3QgUVN0cmluZyYgc2NyaXB0KQogewotICAgIHF0X2RydF93ZWJpbnNwZWN0b3JfZXhlY3V0
ZVNjcmlwdChtX2RydC0+d2ViUGFnZSgpLCBjYWxsSWQsIHNjcmlwdCk7CisgICAgbV9kcnRTdXBw
b3J0LT53ZWJpbnNwZWN0b3JfZXhlY3V0ZVNjcmlwdChtX2RydC0+d2ViUGFnZSgpLCBjYWxsSWQs
IHNjcmlwdCk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEZyYW1lU2V0Rmxh
dHRlbmluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewotICAgIHF0X2RydF9zZXRGcmFtZVNldEZs
YXR0ZW5pbmdFbmFibGVkKG1fZHJ0LT53ZWJQYWdlKCksIGVuYWJsZWQpOworICAgIG1fZHJ0U3Vw
cG9ydC0+c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChtX2RydC0+d2ViUGFnZSgpLCBlbmFi
bGVkKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dVbml2ZXJzYWxB
Y2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQpAQCAtMzI3LDEyICszMTEsMTIgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJv
b2wgZW5hYmxlZCkKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFTY3JpcHRQcm9m
aWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlKQogewogICAgIG1fdG9wTG9hZGluZ0ZyYW1lLT5wYWdl
KCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkRldmVsb3BlckV4dHJh
c0VuYWJsZWQsIHRydWUpOwotICAgIHF0X2RydF9zZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxl
ZChtX3RvcExvYWRpbmdGcmFtZSwgZW5hYmxlKTsKKyAgICBtX2RydFN1cHBvcnQtPnNldEphdmFT
Y3JpcHRQcm9maWxpbmdFbmFibGVkKG1fdG9wTG9hZGluZ0ZyYW1lLCBlbmFibGUpOwogfQogCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoYm9v
bCBlbmFibGUpCiB7Ci0gICAgcXRfZHJ0X3NldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChtX2Ry
dC0+d2ViUGFnZSgpLCBlbmFibGUpOworICAgIG1fZHJ0U3VwcG9ydC0+c2V0VGltZWxpbmVQcm9m
aWxpbmdFbmFibGVkKG1fZHJ0LT53ZWJQYWdlKCksIGVuYWJsZSk7CiB9CiAKIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEZpeGVkQ29udGVudHNTaXplKGludCB3aWR0aCwgaW50IGhlaWdo
dCkKQEAgLTM4Nyw3ICszNzEsNyBAQCBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpwYXVzZUFu
aW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBRU3RyaW5nJiBhbgogewogICAgIFFX
ZWJGcmFtZSogZnJhbWUgPSBtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKTsKICAgICBRX0FT
U0VSVChmcmFtZSk7Ci0gICAgcmV0dXJuIHF0X2RydF9wYXVzZUFuaW1hdGlvbihmcmFtZSwgYW5p
bWF0aW9uTmFtZSwgdGltZSwgZWxlbWVudElkKTsKKyAgICByZXR1cm4gbV9kcnRTdXBwb3J0LT5w
YXVzZUFuaW1hdGlvbihmcmFtZSwgYW5pbWF0aW9uTmFtZSwgdGltZSwgZWxlbWVudElkKTsKIH0K
IAogYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVt
ZW50V2l0aElkKGNvbnN0IFFTdHJpbmcmIHByb3BlcnR5TmFtZSwKQEAgLTM5Niw3ICszODAsNyBA
QCBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1l
bnRXaXRoSWQoY29uc3QgUVN0cmluZyYgcAogewogICAgIFFXZWJGcmFtZSogZnJhbWUgPSBtX2Ry
dC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKTsKICAgICBRX0FTU0VSVChmcmFtZSk7Ci0gICAgcmV0
dXJuIHF0X2RydF9wYXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KGZyYW1lLCBwcm9wZXJ0eU5hbWUs
IHRpbWUsIGVsZW1lbnRJZCk7CisgICAgcmV0dXJuIG1fZHJ0U3VwcG9ydC0+cGF1c2VUcmFuc2l0
aW9uT2ZQcm9wZXJ0eShmcmFtZSwgcHJvcGVydHlOYW1lLCB0aW1lLCBlbGVtZW50SWQpOwogfQog
CiBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50
QXRUaW1lKGNvbnN0IFFTdHJpbmcmIGFuaW1hdGlvbklkLApAQCAtNDA1LDE0ICszODksMTQgQEAg
Ym9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0
VGltZShjb25zdCBRU3RyaW5nJiBhbmkKIHsKICAgICBRV2ViRnJhbWUqIGZyYW1lID0gbV9kcnQt
PndlYlBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgUV9BU1NFUlQoZnJhbWUpOwotICAgIHJldHVy
biBxdF9kcnRfcGF1c2VTVkdBbmltYXRpb24oZnJhbWUsIGFuaW1hdGlvbklkLCB0aW1lLCBlbGVt
ZW50SWQpOworICAgIHJldHVybiBtX2RydFN1cHBvcnQtPnBhdXNlU1ZHQW5pbWF0aW9uKGZyYW1l
LCBhbmltYXRpb25JZCwgdGltZSwgZWxlbWVudElkKTsKIH0KIAogdW5zaWduZWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0CiB7CiAgICAgUVdl
YkZyYW1lKiBmcmFtZSA9IG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIFFfQVNT
RVJUKGZyYW1lKTsKLSAgICByZXR1cm4gcXRfZHJ0X251bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhm
cmFtZSk7CisgICAgcmV0dXJuIG1fZHJ0U3VwcG9ydC0+bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25z
KGZyYW1lKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlzYWJsZUltYWdlTG9h
ZGluZygpCkBAIC00NDAsNyArNDI0LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xl
YXJBbGxEYXRhYmFzZXMoKQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjp3aGl0ZUxpc3RB
Y2Nlc3NGcm9tT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmlu
ZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBi
b29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewotICAgIHF0X2RydF93aGl0ZUxpc3RB
Y2Nlc3NGcm9tT3JpZ2luKHNvdXJjZU9yaWdpbiwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGlu
YXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgbV9kcnRTdXBwb3J0
LT53aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKHNvdXJjZU9yaWdpbiwgZGVzdGluYXRpb25Qcm90
b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAK
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpCkBAIC00
NzcsNyArNDYxLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihjb25zdCBRU3RyaW5nJiB1cmwpCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wgdmFsdWUpCiB7Ci0gICAgcXRfZHJ0X2Vu
YWJsZUNhcmV0QnJvd3NpbmcobV9kcnQtPndlYlBhZ2UoKSwgdmFsdWUpOworICAgIG1fZHJ0U3Vw
cG9ydC0+ZW5hYmxlQ2FyZXRCcm93c2luZyhtX2RydC0+d2ViUGFnZSgpLCB2YWx1ZSk7CiB9CiAK
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChib29s
IGVuYWJsZWQpCkBAIC00OTAsMTIgKzQ3NCwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJv
b2wgZm9yYmlkZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgcXRfZHJ0X3NldERv
bWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlkZGVuLCBzY2hlbWUpOwor
ICAgIG1fZHJ0U3VwcG9ydC0+c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVt
ZShmb3JiaWRkZW4sIHNjaGVtZSk7CiB9CiAKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d29y
a2VyVGhyZWFkQ291bnQoKQogewotICAgIHJldHVybiBxdF9kcnRfd29ya2VyVGhyZWFkQ291bnQo
KTsKKyAgICByZXR1cm4gbV9kcnRTdXBwb3J0LT53b3JrZXJUaHJlYWRDb3VudCgpOwogfQogCiBp
bnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChjb25zdCBR
U3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKQEAgLTUwNiwxMiArNDkwLDMy
IEBAIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGNv
bnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0CiAgICAgICAgIGhlaWdodCA9IG1fZHJ0LT53ZWJQ
YWdlKCktPnZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpOwogICAgIH0KIAotICAgIHJldHVybiBxdF9k
cnRfcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgp
LCBpZCwgd2lkdGgsIGhlaWdodCk7CisgICAgcmV0dXJuIG1fZHJ0U3VwcG9ydC0+cGFnZU51bWJl
ckZvckVsZW1lbnRCeUlkKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpLCBpZCwgd2lkdGgs
IGhlaWdodCk7CiB9CiAKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQYWdlcyhm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQogewotICAgIHJldHVybiBxdF9kcnRfbnVtYmVyT2ZQ
YWdlcyhtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKSwgd2lkdGgsIGhlaWdodCk7CisgICAg
cmV0dXJuIG1fZHJ0U3VwcG9ydC0+bnVtYmVyT2ZQYWdlcyhtX2RydC0+d2ViUGFnZSgpLT5tYWlu
RnJhbWUoKSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAgICBtX2RydFN1
cHBvcnQtPnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChtX2RydC0+d2ViUGFnZSgpLCBlbmFi
bGUpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAgIG1fZHJ0U3VwcG9ydC0+c2V0U2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChtX2RydC0+d2ViUGFnZSgpLCBlbmFibGUpOwor
fQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpleGVjQ29tbWFuZChjb25zdCBRU3RyaW5n
JiBuYW1lLCBjb25zdCBRU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2RydFN1cHBvcnQtPmV4ZWN1
dGVDb3JlQ29tbWFuZEJ5TmFtZShtX2RydC0+d2ViUGFnZSgpLCBuYW1lLCB2YWx1ZSk7Cit9CisK
K2Jvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzQ29tbWFuZEVuYWJsZWQoY29uc3QgUVN0cmlu
ZyYgbmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kcnRTdXBwb3J0LT5pc0NvbW1hbmRFbmFi
bGVkKG1fZHJ0LT53ZWJQYWdlKCksIG5hbWUpOwogfQogCiBjb25zdCB1bnNpZ25lZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6bWF4Vmlld1dpZHRoID0gODAwOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IDhhOWYy
NmYuLjJiNzNjMWIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxx
d2Vic2VjdXJpdHlvcmlnaW4uaD4KIAogY2xhc3MgUVdlYkZyYW1lOworY2xhc3MgUURSVFN1cHBv
cnQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRHVtcFJlbmRlclRyZWU7CiB9CkBA
IC01NSw3ICs1Niw3IEBAIGNsYXNzIExheW91dFRlc3RDb250cm9sbGVyIDogcHVibGljIFFPYmpl
Y3QgewogICAgIFFfUFJPUEVSVFkoaW50IHdvcmtlclRocmVhZENvdW50IFJFQUQgd29ya2VyVGhy
ZWFkQ291bnQpCiAgICAgUV9QUk9QRVJUWShib29sIGdsb2JhbEZsYWcgUkVBRCBnbG9iYWxGbGFn
IFdSSVRFIHNldEdsb2JhbEZsYWcpCiBwdWJsaWM6Ci0gICAgTGF5b3V0VGVzdENvbnRyb2xsZXIo
V2ViQ29yZTo6RHVtcFJlbmRlclRyZWUqIGRydCk7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIo
V2ViQ29yZTo6RHVtcFJlbmRlclRyZWUqIGRydCwgUURSVFN1cHBvcnQqIGRydFN1cHBvcnQpOwog
CiAgICAgYm9vbCBzaG91bGREdW1wQXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RHVtcDsg
fQogICAgIGJvb2wgc2hvdWxkRHVtcEJhY2tGb3J3YXJkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZHVtcEJhY2tGb3J3YXJkTGlzdDsgfQpAQCAtMTM2LDYgKzEzNywxMCBAQCBwdWJsaWMgc2xvdHM6
CiAgICAgdm9pZCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyKGJvb2wgaXNGaXJzdCk7CiAg
ICAgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRD
YXJldEJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJsZSk7CisgICAgdm9pZCBzZXRTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQoYm9vbCBlbmFibGUpOworICAgIHZvaWQgc2V0U2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZChib29sIGVuYWJsZSk7CisgICAgdm9pZCBleGVjQ29tbWFuZChjb25z
dCBRU3RyaW5nJiBuYW1lLCBjb25zdCBRU3RyaW5nJiB2YWx1ZSA9IFFTdHJpbmcoKSk7CisgICAg
Ym9vbCBpc0NvbW1hbmRFbmFibGVkKGNvbnN0IFFTdHJpbmcmIG5hbWUpIGNvbnN0OwogCiAgICAg
Ym9vbCBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBRU3RyaW5nJiBh
bmltYXRpb25OYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKICAg
ICBib29sIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBRU3RyaW5n
JiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOwpA
QCAtMTgyLDYgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgUUJhc2ljVGltZXIgbV90aW1lb3V0VGlt
ZXI7CiAgICAgUVdlYkZyYW1lKiBtX3RvcExvYWRpbmdGcmFtZTsKICAgICBXZWJDb3JlOjpEdW1w
UmVuZGVyVHJlZSogbV9kcnQ7CisgICAgUURSVFN1cHBvcnQqIG1fZHJ0U3VwcG9ydDsKICAgICBR
V2ViSGlzdG9yeSogbV93ZWJIaXN0b3J5OwogfTsKIAotLSAKMS42LjMuMwoK
</data>
<flag name="review"
          id="34143"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51181</attachid>
            <date>2010-03-19 12:47:31 -0700</date>
            <delta_ts>2010-03-19 13:19:25 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>0001-Add-support-for-LayoutTestController-commands.patch</filename>
            <type>text/plain</type>
            <size>63316</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSAxMDNhODFlYzk1OWIxMzZmNTE5NWQzMTMwNTVhY2IwMjNhMTI1ZGZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDE1IE1hciAyMDEwIDIyOjQ5OjI5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1
cHBvcnQgZm9yIExheW91dFRlc3RDb250cm9sbGVyIGNvbW1hbmRzOgogICAgICAgICAgIHNldFNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZAogICAgICAgICAgIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQKICAgICAgICAgICBleGVjQ29tbWFuZAogICAgICAgICAgIGlzQ29tbWFuZEVu
YWJsZWQKCiAgICAgICAgVW5za2lwIHRlc3RzOgogICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvc21h
cnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCiAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC8xOTA4
OS5odG1sCiAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtaW1hZ2UtaW4tYW5jaG9y
Lmh0bWwKICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2VuYWJsaW5nLWFuZC1zZWxlY3Rpb24t
Mi5odG1sCiAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1j
cmFzaC5odG1sCiAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFj
ZS1pbWctY3Jhc2guaHRtbAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdo
aXRlc3BhY2UuaHRtbAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1saW5lLmh0bWwK
ICAgICAgICBlZGl0aW5nL2RlbGV0aW5nLzUzMDAzNzkuaHRtbAogICAgICAgIGVkaXRpbmcvZGVs
ZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCiAgICAgICAgZWRpdGluZy9kZWxldGluZy9zbWFy
dC1kZWxldGUtMDA0Lmh0bWwKICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRt
bAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMi5odG1sCgogICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg0NAotLS0KIExheW91dFRlc3Rz
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOSArKwogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCAgICAgICAgICAgICAgICAgICAgfCAgIDE1IC0KIFdl
YkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCAr
CiBXZWJDb3JlL1dlYkNvcmUucHJvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDEgKwogV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
fCAgMTg4IC0tLS0tLS0tLS0KIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmggICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgMiArCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgODEgKy0tLS0tCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZV9wLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFdlYktpdC9xdC9BcGkvcXdl
YnNlY3VyaXR5b3JpZ2luLmNwcCAgICAgICAgICAgICAgIHwgICAxNSAtCiBXZWJLaXQvcXQvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjkgKysrKwogV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAgfCAgMzYzICsrKysr
KysrKysrKysrKysrKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0LmggICB8ICAgODMgKysrKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5jcHAgICAgICAgIHwgICAxNCArLQogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmggICAgICAgICAgfCAgICAyICstCiBXZWJLaXQvcXQvdGVzdHMvcXdlYnBh
Z2UvdHN0X3F3ZWJwYWdlLmNwcCAgICAgICAgICB8ICAgMjAgKy0KIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1MCArKysKIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwIHwgICAyMSArLQogV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oICAgfCAgICAyICsKIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmNwcCAgIHwgICAxNSAr
LQogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuaCAgICAgfCAg
ICA2ICstCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAg
ICB8ICAgODEgKysrLS0KIC4uLi9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmggICAgIHwgICAgOCArLQogMjMgZmlsZXMgY2hhbmdlZCwgNzAwIGluc2VydGlvbnMoKyks
IDM3NiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaAoKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1MjBh
Mjc4Li5mNmUzZTdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTAtMDMtMTggIFJvYmVydCBI
b2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBMYXlvdXRUZXN0Q29udHJvbGxlciBj
b21tYW5kczoKKyAgICAgICAgICBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQKKyAgICAgICAg
ICBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkCisgICAgICAgICAgZXhlY0NvbW1h
bmQKKyAgICAgICAgICBpc0NvbW1hbmRFbmFibGVkCisKKyAgICAgICAgVW5za2lwIHRlc3RzOgor
ICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWVkaXRpbmctZGlzYWJsZWQuaHRtbAorICAg
ICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kLzE5MDg5Lmh0bWwKKyAgICAgICAgZWRpdGluZy9leGVj
Q29tbWFuZC9kZWxldGUtaW1hZ2UtaW4tYW5jaG9yLmh0bWwKKyAgICAgICAgZWRpdGluZy9leGVj
Q29tbWFuZC9lbmFibGluZy1hbmQtc2VsZWN0aW9uLTIuaHRtbAorICAgICAgICBlZGl0aW5nL3Nl
bGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWNyYXNoLmh0bWwKKyAgICAgICAgZWRpdGlu
Zy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1pbWctY3Jhc2guaHRtbAorICAgICAg
ICBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLmh0bWwKKyAgICAgICAg
ZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWxpbmUuaHRtbAorICAgICAgICBlZGl0aW5nL2RlbGV0
aW5nLzUzMDAzNzkuaHRtbAorICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0w
MDMuaHRtbAorICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDQuaHRtbAor
ICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRtbAorICAgICAgICBlZGl0aW5n
L3NlbGVjdGlvbi81MTk1MTY2LTIuaHRtbAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg0NAorCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBl
ZDoKKwogMjAxMC0wMy0xOSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CmluZGV4IDNhM2ZjMWQuLjNhMDNhMmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMjIy
LDkgKzIyMiw2IEBAIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFu
Lmh0bWwKICMgTWlzc2luZyBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoKQogZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1mcmFtZXMuaHRtbAogCi0jIE1pc3Np
bmcgbGF5b3V0VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoKQotZWRpdGluZy9leGVjQ29tbWFu
ZC9kZWxldGUtaW1hZ2UtaW4tYW5jaG9yLmh0bWwgCi0KICMgTWlzc2luZyBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRBbHdheXNBY2NlcHRDb29raWVzKCkKIGh0dHAvdGVzdHMvcGx1Z2lucy90aGly
ZC1wYXJ0eS1jb29raWUtYWNjZXB0LXBvbGljeS5odG1sCiAKQEAgLTI4Nyw3ICsyODQsNiBAQCBm
YXN0L3J1YnkvcnVieURPTS1yZW1vdmUtdGV4dDIuaHRtbAogCiAjIC0tLS0tLS0gZmFpbGluZyBl
ZGl0aW5nIHRlc3RzCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS10by1lbmQtb2YtcGFyYWdyYXBo
Lmh0bWwKLWVkaXRpbmcvZXhlY0NvbW1hbmQvZW5hYmxpbmctYW5kLXNlbGVjdGlvbi0yLmh0bWwK
IGVkaXRpbmcvZXhlY0NvbW1hbmQvbnNyZXNwb25kZXItaW5kZW50Lmh0bWwKIGVkaXRpbmcvZXhl
Y0NvbW1hbmQvbnNyZXNwb25kZXItb3V0ZGVudC5odG1sCiBlZGl0aW5nL2lucHV0L2VtYWNzLWN0
cmwtby5odG1sCkBAIC0xMDc2LDcgKzEwNzIsNiBAQCBmYXN0L2Zvcm1zL21lbnVsaXN0LXdpZHRo
LWNoYW5nZS5odG1sCiAjIHB1dCBpbnRvIHRoZSBza2lwcGVkIGxpc3QgZm9yIG5vdyB0byBoYXZl
IHNvbWUga2luZCBvZgogIyByZWZlcmVuY2UsIHNvIHdlIGRvbid0IGludHJvZHVjZSByZWdyZXNz
aW9ucy4KIGVkaXRpbmcvZGVsZXRpbmcvNTE0NDEzOS0yLmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcv
NTMwMDM3OS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1ibG9jay1tZXJnZS1jb250ZW50
cy0wMDEuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtYmxvY2stbWVyZ2UtY29udGVudHMt
MDE5Lmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWJsb2NrLW1lcmdlLWNvbnRlbnRzLTAy
MC5odG1sCkBAIC0xMDg3LDggKzEwODIsNiBAQCBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saW5l
LWVuZC13cy0wMDEuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGluZS1lbmQtd3MtMDAy
Lmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLXRvLXNlbGVjdC10YWJsZS5odG1sCiBlZGl0
aW5nL2RlbGV0aW5nL2RlbGV0aW9uVUktc2luZ2xlLWluc3RhbmNlLmh0bWwKLWVkaXRpbmcvZGVs
ZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCi1lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0
ZS0wMDQuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC80OTIwNDg4Lmh0bWwKIGVkaXRpbmcvZXhl
Y0NvbW1hbmQvNDkyMDc0Mi0xLmh0bWwKIGVkaXRpbmcvZXhlY0NvbW1hbmQvY3JlYXRlLWxpc3Qt
d2l0aC1oci5odG1sCkBAIC0xMTIwLDE1ICsxMTEzLDEyIEBAIGVkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS10ZXh0LTAwMy5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvcXVpcmtzLW1vZGUtYnItMS5o
dG1sCiBlZGl0aW5nL3NlbGVjdGlvbi80OTgzODU4Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzUx
MzY2OTYuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLmh0bWwKLWVkaXRpbmcvc2Vs
ZWN0aW9uLzUxOTUxNjYtMi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hZnRlci1saW5lLXdyYXAu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZW5kLW9mLWRvY3VtZW50Lmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uL21vdmUtbGVmdC1yaWdodC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxs
LTAwMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLTAwMi5odG1sCiBlZGl0aW5n
L3NlbGVjdGlvbi9zZWxlY3QtYWxsLTAwMy5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qt
bGluZS5odG1sCiBlZGl0aW5nL3N0eWxlL2FwcGxlLXN0eWxlLWVkaXRhYmxlLW1peC5odG1sCiBl
ZGl0aW5nL3N0eWxlL2NyZWF0ZS1ibG9jay1mb3Itc3R5bGUtMDEyLmh0bWwKIGVkaXRpbmcvc3R5
bGUvZm9udC1mYW1pbHktd2l0aC1zcGFjZS5odG1sCkBAIC00NzQ0LDE1ICs0NzM0LDEwIEBAIGRv
bS94aHRtbC9sZXZlbDMvY29yZS9jYW5vbmljYWxmb3JtMDkueGh0bWwKIGVkaXRpbmcvZGVsZXRp
bmcvZGVsZXRlLWxpZ2F0dXJlLTAwMS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdh
dHVyZS0wMDIuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1cmUtMDAzLmh0bWwK
LWVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCi1lZGl0aW5nL2V4
ZWNDb21tYW5kLzE5MDg5Lmh0bWwKIGVkaXRpbmcvaW5zZXJ0aW5nLzU4MDM3MDYtMS5odG1sCiBl
ZGl0aW5nL2luc2VydGluZy81OTk0NDgwLTIuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGVz
LWR1cmluZy1wYWdlLWRyYWdzLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9nZXQtZGF0YS10ZXh0
LXBsYWluLWRyb3AuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFj
ZS1jcmFzaC5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWlt
Zy1jcmFzaC5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLmh0
bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2RyYWctc3RhcnQtZXZlbnQtY2xpZW50LXgteS5odG1sCiBl
ZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWJpZGkuaHRtbAogZWRpdGluZy9zZWxl
Y3Rpb24vaGl0LXRlc3QtYW5vbnltb3VzLmh0bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDYzMjM5YS4uOTk0NmVjNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MSBAQAorMjAxMC0wMy0xOCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0CisKKyAgICAgICAgKiBXZWJDb3JlLnBy
bzogQWRkIER1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKKwogMjAxMC0wMy0xOSAgSm9zZXBoIFBl
Y29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlk
IEtpbHplci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNv
cmUucHJvCmluZGV4IGM4YmQ3ZTYuLmRmMTEyMzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjA4Niw2ICsyMDg2LDcgQEAgU09V
UkNFUyArPSBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50
UXQuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNw
cCBcCisgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dC5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHAgXAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0LmNwcCBc
CiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
IFwKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9B
cGkvcXdlYmZyYW1lLmNwcAppbmRleCA4Njk2NDM3Li44NDJjMzM0IDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3Bw
CkBAIC04OCwxOTMgKzg4LDYgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCiBleHRlcm4gUV9HVUlfRVhQ
T1JUIGludCBxdF9kZWZhdWx0RHBpKCk7CiBRVF9FTkRfTkFNRVNQQUNFCiAKLXZvaWQgUVdFQktJ
VF9FWFBPUlQgcXRfZHJ0X3NldE1lZGlhVHlwZShRV2ViRnJhbWUqIHFmcmFtZSwgY29uc3QgUVN0
cmluZyYgdHlwZSkKLXsKLSAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2
YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUt
PnZpZXcoKTsKLSAgICB2aWV3LT5zZXRNZWRpYVR5cGUodHlwZSk7Ci0gICAgZnJhbWUtPmRvY3Vt
ZW50KCktPnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKLSAgICB2aWV3LT5mb3JjZUxheW91dCgpOwot
fQotCi1ib29sIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9oYXNEb2N1bWVudEVsZW1lbnQoUVdlYkZy
YW1lKiBxZnJhbWUpCi17Ci0gICAgcmV0dXJuIFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1l
KS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBP
UlQgcXRfZHJ0X3NldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKFFXZWJGcmFtZSogcWZyYW1l
LCBib29sIGVuYWJsZWQpCi17Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
RnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOwotICAgIEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250
cm9sbGVyKCk7Ci0gICAgaWYgKCFjb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0gICAgaWYg
KGVuYWJsZWQpCi0gICAgICAgIGNvbnRyb2xsZXItPmVuYWJsZVByb2ZpbGVyKCk7Ci0gICAgZWxz
ZQotICAgICAgICBjb250cm9sbGVyLT5kaXNhYmxlUHJvZmlsZXIoKTsKLSNlbmRpZgotfQotCi0v
LyBQYXVzZSBhIGdpdmVuIENTUyBhbmltYXRpb24gb3IgdHJhbnNpdGlvbiBvbiB0aGUgdGFyZ2V0
IG5vZGUgYXQgYSBzcGVjaWZpYyB0aW1lLgotLy8gSWYgdGhlIGFuaW1hdGlvbiBvciB0cmFuc2l0
aW9uIGlzIGFscmVhZHkgcGF1c2VkLCBpdCB3aWxsIHVwZGF0ZSBpdHMgcGF1c2UgdGltZS4KLS8v
IFRoaXMgbWV0aG9kIGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGVzdGluZyB0aGUg
Q1NTIGFuaW1hdGlvbiBhbmQgdHJhbnNpdGlvbiBzeXN0ZW0uCi1ib29sIFFXRUJLSVRfRVhQT1JU
IHF0X2RydF9wYXVzZUFuaW1hdGlvbihRV2ViRnJhbWUgKnFmcmFtZSwgY29uc3QgUVN0cmluZyAm
YW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCkKLXsK
LSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAg
aWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQW5pbWF0aW9uQ29udHJv
bGxlciogY29udHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xs
ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+
ZG9jdW1lbnQoKTsKLSAgICBRX0FTU0VSVChkb2MpOwotCi0gICAgTm9kZSogY29yZU5vZGUgPSBk
b2MtPmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgaWYgKCFjb3JlTm9kZSB8fCAhY29y
ZU5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBj
b250cm9sbGVyLT5wYXVzZUFuaW1hdGlvbkF0VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwgYW5p
bWF0aW9uTmFtZSwgdGltZSk7Ci19Ci0KLWJvb2wgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNl
VHJhbnNpdGlvbk9mUHJvcGVydHkoUVdlYkZyYW1lICpxZnJhbWUsIGNvbnN0IFFTdHJpbmcgJnBy
b3BlcnR5TmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCkKLXsKLSAg
ICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAgaWYg
KCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQW5pbWF0aW9uQ29udHJvbGxl
ciogY29udHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9j
dW1lbnQoKTsKLSAgICBRX0FTU0VSVChkb2MpOwotCi0gICAgTm9kZSogY29yZU5vZGUgPSBkb2Mt
PmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5v
ZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjb250
cm9sbGVyLT5wYXVzZVRyYW5zaXRpb25BdFRpbWUoY29yZU5vZGUtPnJlbmRlcmVyKCksIHByb3Bl
cnR5TmFtZSwgdGltZSk7Ci19Ci0KLS8vIFBhdXNlIGEgZ2l2ZW4gU1ZHIGFuaW1hdGlvbiBvbiB0
aGUgdGFyZ2V0IG5vZGUgYXQgYSBzcGVjaWZpYyB0aW1lLgotLy8gVGhpcyBtZXRob2QgaXMgb25s
eSBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0ZXN0aW5nIHRoZSBTVkcgYW5pbWF0aW9uIHN5c3Rl
bS4KLWJvb2wgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFt
ZSAqcWZyYW1lLCBjb25zdCBRU3RyaW5nICZhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0
IFFTdHJpbmcgJmVsZW1lbnRJZCkKLXsKLSNpZiAhRU5BQkxFKFNWRykKLSAgICByZXR1cm4gZmFs
c2U7Ci0jZWxzZQotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZy
YW1lKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBEb2N1
bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgUV9BU1NFUlQoZG9jKTsKLQotICAg
IGlmICghZG9jLT5zdmdFeHRlbnNpb25zKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IE5vZGUqIGNvcmVOb2RlID0gZG9jLT5nZXRFbGVtZW50QnlJZChhbmltYXRpb25JZCk7Ci0gICAg
aWYgKCFjb3JlTm9kZSB8fCAhU1ZHU01JTEVsZW1lbnQ6OmlzU01JTEVsZW1lbnQoY29yZU5vZGUp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZG9jLT5hY2Nlc3NTVkdFeHRl
bnNpb25zKCktPnNhbXBsZUFuaW1hdGlvbkF0VGltZShlbGVtZW50SWQsIHN0YXRpY19jYXN0PFNW
R1NNSUxFbGVtZW50Kj4oY29yZU5vZGUpLCB0aW1lKTsKLSNlbmRpZgotfQotCi0vLyBSZXR1cm5z
IHRoZSB0b3RhbCBudW1iZXIgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9ucyAoaW5jbHVk
ZXMgYm90aCBDU1MgdHJhbnNpdGlvbnMgYW5kIENTUyBhbmltYXRpb25zKS4KLWludCBRV0VCS0lU
X0VYUE9SVCBxdF9kcnRfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFFXZWJGcmFtZSAqcWZyYW1l
KQotewotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsK
LSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBbmltYXRpb25D
b250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOwotICAgIGlmICghY29u
dHJvbGxlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGNvbnRyb2xsZXIt
Pm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0
X2RydF9jbGVhckZyYW1lTmFtZShRV2ViRnJhbWUqIHFGcmFtZSkKLXsKLSAgICBGcmFtZSogZnJh
bWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgZnJhbWUtPnRyZWUoKS0+
Y2xlYXJOYW1lKCk7Ci19Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfamF2YVNjcmlwdE9i
amVjdHNDb3VudCgpCi17Ci0gICAgcmV0dXJuIEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9i
YWxEYXRhKCktPmhlYXAuZ2xvYmFsT2JqZWN0Q291bnQoKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VY
UE9SVCBxdF9kcnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCkKLXsKLSAgICBnY0NvbnRyb2xs
ZXIoKS5nYXJiYWdlQ29sbGVjdE5vdygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2Ry
dF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRp
bERvbmUpCi17Ci0gICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRo
cmVhZEZvckRlYnVnZ2luZyh3YWl0VW50aWxEb25lKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdmFs
dWUgb2YgY291bnRlciBpbiB0aGUgZWxlbWVudCBzcGVjaWZpZWQgYnkgXGEgaWQuCi1RU3RyaW5n
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9jb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChRV2ViRnJh
bWUqIHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gUVdl
YkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQg
PSBmcmFtZS0+ZG9jdW1lbnQoKSkgewotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1l
bnQtPmdldEVsZW1lbnRCeUlkKGlkKTsKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmNvdW50ZXJW
YWx1ZUZvckVsZW1lbnQoZWxlbWVudCk7Ci0gICAgfQotICAgIHJldHVybiBRU3RyaW5nKCk7Ci19
Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFFX
ZWJGcmFtZSogcUZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhl
aWdodCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFt
ZSk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgRWxlbWVudCog
ZWxlbWVudCA9IGZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmco
aWQpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVy
biBQcmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KGVsZW1lbnQsIEZsb2F0U2l6ZSh3
aWR0aCwgaGVpZ2h0KSk7Ci19Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfbnVtYmVyT2ZQ
YWdlcyhRV2ViRnJhbWUqIHFGcmFtZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLXsKLSAg
ICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYg
KCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6
bnVtYmVyT2ZQYWdlcyhmcmFtZSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLX0KLQotLy8g
U3VzcGVuZCBhY3RpdmUgRE9NIG9iamVjdHMgaW4gdGhpcyBmcmFtZS4KLXZvaWQgUVdFQktJVF9F
WFBPUlQgcXRfc3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBxRnJhbWUpCi17Ci0g
ICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGlm
IChmcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN1c3BlbmRB
Y3RpdmVET01PYmplY3RzKCk7Ci19Ci0gICAgICAgICAgICAKLS8vIFJlc3VtZSBhY3RpdmUgRE9N
IG9iamVjdHMgaW4gdGhpcyBmcmFtZS4KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfcmVzdW1lQWN0
aXZlRE9NT2JqZWN0cyhRV2ViRnJhbWUqIHFGcmFtZSkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBR
V2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKGZyYW1lLT5kb2N1bWVudCgp
KQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpOwot
fSAgICAgICAgICAgICAgICAgICAgICAgIAotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9l
dmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChRV2ViRnJhbWUqIHFGcmFtZSwgaW50IHdvcmxk
SWQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJh
bWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKGZyYW1lKQotICAgICAgICBKU0M6OkpT
VmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0SW5Xb3JsZChtYWlu
VGhyZWFkTm9ybWFsV29ybGQoKSwgc2NyaXB0LCB0cnVlKS5qc1ZhbHVlKCk7Ci19Ci0KIHN0YXRp
YyBib29sIHdlYmZyYW1lX3Njcm9sbE92ZXJmbG93KFdlYkNvcmU6OkZyYW1lKiBmcmFtZSwgaW50
IGR4LCBpbnQgZHksIGNvbnN0IFFQb2ludCYgcG9zKQogewogICAgIGlmICghZnJhbWUgfHwgIWZy
YW1lLT5kb2N1bWVudCgpIHx8ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkpCkBAIC0zNTQsNyArMTY3
LDYgQEAgdm9pZCBRV0VCS0lUX0VYUE9SVCBxdHdlYmtpdF93ZWJmcmFtZV9zY3JvbGxSZWN1cnNp
dmVseShRV2ViRnJhbWUqIHFGcmFtZSwgaW50IGQKICAgICB9CiB9CiAKLQogUVdlYkZyYW1lRGF0
YTo6UVdlYkZyYW1lRGF0YShXZWJDb3JlOjpQYWdlKiBwYXJlbnRQYWdlLCBXZWJDb3JlOjpGcmFt
ZSogcGFyZW50RnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkhU
TUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJGcmFtZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgZnJhbWVOYW1lKQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgK
aW5kZXggY2U5ODA1Yi4uNzNjYzAzZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJh
bWUuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNs
YXNzIFFXZWJTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFFXZWJFbGVtZW50OwogY2xhc3MgUVdlYkVs
ZW1lbnRDb2xsZWN0aW9uOwogCitjbGFzcyBRRFJUU3VwcG9ydDsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBXaWRnZXRQcml2YXRlOwogICAgIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50
UXQ7CkBAIC0yMjUsNiArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUVdlYlBh
Z2U7CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlUHJpdmF0ZTsKICAgICBmcmllbmQgY2xhc3Mg
UVdlYkZyYW1lUHJpdmF0ZTsKKyAgICBmcmllbmQgY2xhc3MgUURSVFN1cHBvcnQ7CiAgICAgZnJp
ZW5kIGNsYXNzIFdlYkNvcmU6OldpZGdldFByaXZhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkNocm9t
ZUNsaWVudFF0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCBhZDgxMjI3Li45OTg0NjUyIDEwMDY0NAotLS0g
YS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcApAQCAtMTE5LDg2ICsxMTksNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
dm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfb3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKQot
ewotICAgIFBsdWdpbkRhdGFiYXNlKiBkYiA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVn
aW5zKC8qIHBvcHVsYXRlICovIGZhbHNlKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwot
ICAgIFN0cmluZyBxdFBhdGgocWdldGVudigiUVRXRUJLSVRfUExVR0lOX1BBVEgiKS5kYXRhKCkp
OwotICAgIHF0UGF0aC5zcGxpdChVQ2hhcignOicpLCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBm
YWxzZSwgcGF0aHMpOwotCi0gICAgZGItPnNldFBsdWdpbkRpcmVjdG9yaWVzKHBhdGhzKTsKLSAg
ICBkYi0+cmVmcmVzaCgpOwotfQotCi1pbnQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3dvcmtlclRo
cmVhZENvdW50KCkKLXsKLSNpZiBFTkFCTEUoV09SS0VSUykKLSAgICByZXR1cm4gV2ViQ29yZTo6
V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRDb3VudCgpOwotI2Vsc2UKLSAgICByZXR1cm4gMDsK
LSNlbmRpZgotfQotCiBib29sIFFXZWJQYWdlUHJpdmF0ZTo6ZHJ0UnVuID0gZmFsc2U7Ci12b2lk
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9ydW4oYm9vbCBiKQotewotICAgIFFXZWJQYWdlUHJpdmF0
ZTo6ZHJ0UnVuID0gYjsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfc2V0RnJhbWVT
ZXRGbGF0dGVuaW5nRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9vbCBlbmFibGVkKQotewotICAg
IFFXZWJQYWdlUHJpdmF0ZTo6Y29yZShwYWdlKS0+c2V0dGluZ3MoKS0+c2V0RnJhbWVTZXRGbGF0
dGVuaW5nRW5hYmxlZChlbmFibGVkKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF93ZWJw
YWdlX3NldEdyb3VwTmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0cmluZyYgZ3JvdXBOYW1l
KQotewotICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXRHcm91cE5hbWUoZ3JvdXBOYW1lKTsK
LX0KLQotUVN0cmluZyBRV0VCS0lUX0VYUE9SVCBxdF93ZWJwYWdlX2dyb3VwTmFtZShRV2ViUGFn
ZSogcGFnZSkKLXsKLSAgICByZXR1cm4gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmdyb3VwTmFtZSgp
OwotfQotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0
X3dlYmluc3BlY3Rvcl9leGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBwYWdlLCBsb25nIGNhbGxJZCwg
Y29uc3QgUVN0cmluZyYgc2NyaXB0KQotewotICAgIGlmICghcGFnZS0+aGFuZGxlKCktPnBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHBhZ2UtPmhhbmRs
ZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVzdEluRnJvbnRl
bmQoY2FsbElkLCBzY3JpcHQpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF93ZWJp
bnNwZWN0b3JfY2xvc2UoUVdlYlBhZ2UqIHBhZ2UpCi17Ci0gICAgaWYgKCFwYWdlLT5oYW5kbGUo
KS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICByZXR1cm47Ci0gICAgcGFn
ZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y2xvc2UoKTsKLX0KLQot
dm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfd2ViaW5zcGVjdG9yX3Nob3coUVdlYlBhZ2UqIHBh
Z2UpCi17Ci0gICAgaWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpKQotICAgICAgICByZXR1cm47Ci0gICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+c2hvdygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9z
ZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxlZCkK
LXsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gcGFnZS0+aGFuZGxlKCkt
PnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAg
ICAgIHJldHVybjsKLSAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAgY29udHJvbGxlci0+c3RhcnRU
aW1lbGluZVByb2ZpbGVyKCk7Ci0gICAgZWxzZQotICAgICAgICBjb250cm9sbGVyLT5zdG9wVGlt
ZWxpbmVQcm9maWxlcigpOwotfQotI2VuZGlmCi0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0
X2VuYWJsZUNhcmV0QnJvd3NpbmcoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgdmFsdWUpCi17Ci0gICAg
cGFnZS0+aGFuZGxlKCktPnBhZ2UtPnNldHRpbmdzKCktPnNldENhcmV0QnJvd3NpbmdFbmFibGVk
KHZhbHVlKTsKLX0KIAogY2xhc3MgUVdlYlBhZ2VXaWRnZXRDbGllbnQgOiBwdWJsaWMgUVdlYlBh
Z2VDbGllbnQgewogcHVibGljOgpAQCAtNDYzLDYgKzM4NCw4IEBAIFFXZWJQYWdlUHJpdmF0ZTo6
UVdlYlBhZ2VQcml2YXRlKFFXZWJQYWdlICpxcSkKICAgICBwbHVnaW5GYWN0b3J5ID0gMDsKICAg
ICBpbnNpZGVPcGVuQ2FsbCA9IGZhbHNlOwogICAgIGZvcndhcmRVbnN1cHBvcnRlZENvbnRlbnQg
PSBmYWxzZTsKKyAgICBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSBmYWxzZTsKKyAgICBzZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gZmFsc2U7CiAgICAgZWRpdGFibGUgPSBmYWxz
ZTsKICAgICB1c2VGaXhlZExheW91dCA9IGZhbHNlOwogICAgIGxpbmtQb2xpY3kgPSBRV2ViUGFn
ZTo6RG9udERlbGVnYXRlTGlua3M7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKaW5kZXggMDc2ZmI3Yy4uODBhNjA3OCAxMDA2
NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuaApAQCAtMzY1LDYgKzM2NSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpRTmV0d29ya1Jl
cGx5SGFuZGxlcjsKKyAgICBmcmllbmQgY2xhc3MgUURSVFN1cHBvcnQ7CiB9OwogCiBRX0RFQ0xB
UkVfT1BFUkFUT1JTX0ZPUl9GTEFHUyhRV2ViUGFnZTo6RmluZEZsYWdzKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaApp
bmRleCAxNWRkZmIyLi5kOGJhNWRkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
X3AuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaApAQCAtMTYyLDYgKzE2Miw4IEBA
IHB1YmxpYzoKICAgICBRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm5ldHdvcmtNYW5hZ2VyOwogCiAg
ICAgYm9vbCBmb3J3YXJkVW5zdXBwb3J0ZWRDb250ZW50OworICAgIGJvb2wgc21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkOworICAgIGJvb2wgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDsK
ICAgICBRV2ViUGFnZTo6TGlua0RlbGVnYXRpb25Qb2xpY3kgbGlua1BvbGljeTsKIAogICAgIFFT
aXplIHZpZXdwb3J0U2l6ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5
b3JpZ2luLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcAppbmRleCA2
YzI2YmQ3Li5iNjlmMjRkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9y
aWdpbi5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCkBAIC0z
MCwyMSArMzAsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBRV0VCS0lU
X0VYUE9SVCBxdF9kcnRfd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBz
b3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFT
dHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykK
LXsKLSAgICBTZWN1cml0eU9yaWdpbjo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbigqU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90
b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci19Ci0K
LXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3Jlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygp
Ci17Ci0gICAgU2VjdXJpdHlPcmlnaW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwot
fQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9zZXREb21haW5SZWxheGF0aW9uRm9yYmlk
ZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpCi17
Ci0gICAgU2VjdXJpdHlPcmlnaW46OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxT
Y2hlbWUoZm9yYmlkZGVuLCBzY2hlbWUpOwotfQotCiAvKiEKICAgICBcY2xhc3MgUVdlYlNlY3Vy
aXR5T3JpZ2luCiAgICAgXHNpbmNlIDQuNQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxv
ZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYjJkMmIyOC4uYWViMGU5YSAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzIgQEAKKzIwMTAtMDMtMTggIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcg
Y2xhc3MgUURSVFN1cHBvcnQuIFRoaXMgbm93IGhvdXNlcyBhbGwgdGhlIHF0X2RydF8qIGZ1bmN0
aW9ucworICAgICAgICB0aGF0IHByZXZpb3VzbHkgbGl2ZWQgaW4gcXdlYnBhZ2UgYW5kIHF3ZWJm
cmFtZS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIgY29t
bWFuZHM6CisgICAgICAgICAgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkCisgICAgICAgICAg
c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZAorICAgICAgICAgIGV4ZWNDb21tYW5k
CisgICAgICAgICAgaXNDb21tYW5kRW5hYmxlZAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg0NAorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5j
cHA6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAg
KiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFFEUlRTdXBwb3J0OjpR
RFJUU3VwcG9ydCk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6flFEUlRTdXBwb3J0KToKKyAgICAg
ICAgKFFEUlRTdXBwb3J0OjpvdmVyd3JpdGVQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgIChR
RFJUU3VwcG9ydDo6d29ya2VyVGhyZWFkQ291bnQpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OnJ1
bik6CisgICAgICAgIChRRFJUU3VwcG9ydDo6c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZCk6
CisgICAgICAgIChRRFJUU3VwcG9ydDo6d2ViUGFnZVNldEdyb3VwTmFtZSk6CisgICAgICAgIChR
RFJUU3VwcG9ydDo6d2ViUGFnZUdyb3VwTmFtZSk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6d2Vi
SW5zcGVjdG9yRXhlY3V0ZVNjcmlwdCk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6d2ViSW5zcGVj
dG9yQ2xvc2UpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OndlYkluc3BlY3RvclNob3cpOgorICAg
ICAgICAoUURSVFN1cHBvcnQ6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAg
IChRRFJUU3VwcG9ydDo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKToKKyAgICAgICAgKFFEUlRT
dXBwb3J0Ojppc0NvbW1hbmRFbmFibGVkKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpoYXNEb2N1
bWVudEVsZW1lbnQpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OnNldEphdmFTY3JpcHRQcm9maWxp
bmdFbmFibGVkKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpwYXVzZUFuaW1hdGlvbik6CisgICAg
ICAgIChRRFJUU3VwcG9ydDo6cGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eSk6CisgICAgICAgIChR
RFJUU3VwcG9ydDo6cGF1c2VTVkdBbmltYXRpb24pOgorICAgICAgICAoUURSVFN1cHBvcnQ6Om51
bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6Y2xlYXJGcmFt
ZU5hbWUpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OmphdmFTY3JpcHRPYmplY3RzQ291bnQpOgor
ICAgICAgICAoUURSVFN1cHBvcnQ6OmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0KToKKyAgICAgICAg
KFFEUlRTdXBwb3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKToK
KyAgICAgICAgKFFEUlRTdXBwb3J0Ojpjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZCk6CisgICAg
ICAgIChRRFJUU3VwcG9ydDo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKFFE
UlRTdXBwb3J0OjpudW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpzdXNwZW5k
QWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6cmVzdW1lQWN0aXZlRE9N
T2JqZWN0cyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVk
V29ybGQpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4p
OgorICAgICAgICAoUURSVFN1cHBvcnQ6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cyk6Cisg
ICAgICAgIChRRFJUU3VwcG9ydDo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNj
aGVtZSk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVk
KToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjplbmFibGVDYXJldEJyb3dzaW5nKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaDogQWRkZWQuCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50UXQ6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6dG9nZ2xlU21hcnRJbnNlcnREZWxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKyAgICAg
ICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQ
YWdlOjptdWx0aXBsZVBhZ2VHcm91cHNBbmRMb2NhbFN0b3JhZ2UpOgorICAgICAgICAodHN0X1FX
ZWJQYWdlOjpwcm90ZWN0QmluZGluZ3NSdW50aW1lT2JqZWN0c0Zyb21Db2xsZWN0b3IpOgorCiAy
MDEwLTAzLTE4ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwIGIvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYjgwNDZiNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCkBAIC0wLDAgKzEsMzYz
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2Jl
cnRob2dhbi5uZXQ+CisgICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDksMjAxMCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgorICAgIENvcHlyaWdodCAoQykgMjAw
NyBBcHBsZSBJbmMuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIgorCisj
aW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNs
dWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1
ZGUgIkNvbnRleHRNZW51LmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRRdC5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR0NDb250
cm9sbGVyLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTZXR0aW5n
cy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgi
CisjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRWRpdG9yLmgiCisjaW5j
bHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJQcmludENvbnRleHQuaCIKKyNpbmNs
dWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKworI2luY2x1ZGUg
InF3ZWJwYWdlLmgiCisjaW5jbHVkZSAicXdlYnBhZ2VfcC5oIgorI2luY2x1ZGUgInF3ZWJmcmFt
ZS5oIgorI2luY2x1ZGUgInF3ZWJmcmFtZV9wLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCitRRFJUU3VwcG9ydDo6UURSVFN1cHBvcnQoKQoreworICAgIHJ1bihmYWxzZSk7Cit9CisK
K1FEUlRTdXBwb3J0Ojp+UURSVFN1cHBvcnQoKQoreworfQorCit2b2lkIFFEUlRTdXBwb3J0Ojpv
dmVyd3JpdGVQbHVnaW5EaXJlY3RvcmllcygpCit7CisgICAgUGx1Z2luRGF0YWJhc2UqIGRiID0g
UGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoLyogcG9wdWxhdGUgKi8gZmFsc2UpOwor
CisgICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7CisgICAgU3RyaW5nIHF0UGF0aChxZ2V0ZW52KCJR
VFdFQktJVF9QTFVHSU5fUEFUSCIpLmRhdGEoKSk7CisgICAgcXRQYXRoLnNwbGl0KFVDaGFyKCc6
JyksIC8qIGFsbG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBwYXRocyk7CisKKyAgICBkYi0+c2V0
UGx1Z2luRGlyZWN0b3JpZXMocGF0aHMpOworICAgIGRiLT5yZWZyZXNoKCk7Cit9CisKK2ludCBR
RFJUU3VwcG9ydDo6d29ya2VyVGhyZWFkQ291bnQoKQoreworI2lmIEVOQUJMRShXT1JLRVJTKQor
ICAgIHJldHVybiBXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZENvdW50KCk7Cisj
ZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OnJ1bihi
b29sIGIpCit7CisgICAgUVdlYlBhZ2VQcml2YXRlOjpkcnRSdW4gPSBiOworfQorCit2b2lkIFFE
UlRTdXBwb3J0OjpzZXRGcmFtZVNldEZsYXR0ZW5pbmdFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBi
b29sIGVuYWJsZWQpCit7CisgICAgUVdlYlBhZ2VQcml2YXRlOjpjb3JlKHBhZ2UpLT5zZXR0aW5n
cygpLT5zZXRGcmFtZVNldEZsYXR0ZW5pbmdFbmFibGVkKGVuYWJsZWQpOworfQorCit2b2lkIFFE
UlRTdXBwb3J0Ojp3ZWJQYWdlU2V0R3JvdXBOYW1lKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3Ry
aW5nJiBncm91cE5hbWUpCit7CisgICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPnNldEdyb3VwTmFt
ZShncm91cE5hbWUpOworfQorCitRU3RyaW5nIFFEUlRTdXBwb3J0Ojp3ZWJQYWdlR3JvdXBOYW1l
KFFXZWJQYWdlKiBwYWdlKQoreworICAgIHJldHVybiBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+Z3Jv
dXBOYW1lKCk7Cit9CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQordm9pZCBRRFJUU3VwcG9ydDo6
d2ViSW5zcGVjdG9yRXhlY3V0ZVNjcmlwdChRV2ViUGFnZSogcGFnZSwgbG9uZyBjYWxsSWQsIGNv
bnN0IFFTdHJpbmcmIHNjcmlwdCkKK3sKKyAgICBpZiAoIXBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5oYW5kbGUo
KS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5k
KGNhbGxJZCwgc2NyaXB0KTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6d2ViSW5zcGVjdG9yQ2xv
c2UoUVdlYlBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+aGFuZGxlKCkt
PnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y2xvc2UoKTsKK30KKwordm9pZCBRRFJUU3Vw
cG9ydDo6d2ViSW5zcGVjdG9yU2hvdyhRV2ViUGFnZSogcGFnZSkKK3sKKyAgICBpZiAoIXBhZ2Ut
PmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93KCk7
Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChRV2Vi
UGFnZSogcGFnZSwgYm9vbCBlbmFibGVkKQoreworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwor
ICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChlbmFibGVkKQor
ICAgICAgICBjb250cm9sbGVyLT5zdGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKKyAgICBlbHNlCisg
ICAgICAgIGNvbnRyb2xsZXItPnN0b3BUaW1lbGluZVByb2ZpbGVyKCk7Cit9CisKK3ZvaWQgUURS
VFN1cHBvcnQ6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3Qg
UVN0cmluZyYgbmFtZSwgY29uc3QgUVN0cmluZyYgdmFsdWUpCit7CisgICAgcGFnZS0+aGFuZGxl
KCktPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9y
KCktPmNvbW1hbmQobmFtZSkuZXhlY3V0ZSh2YWx1ZSk7Cit9CisKK2Jvb2wgUURSVFN1cHBvcnQ6
OmlzQ29tbWFuZEVuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG5hbWUpCit7
CisgICAgcmV0dXJuIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmlzRW5hYmxlZCgpOwor
fQorCisjZW5kaWYKKworYm9vbCBRRFJUU3VwcG9ydDo6aGFzRG9jdW1lbnRFbGVtZW50KFFXZWJG
cmFtZSogcWZyYW1lKQoreworICAgIHJldHVybiBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFt
ZSktPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworfQorCit2b2lkIFFEUlRTdXBwb3J0
OjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChRV2ViRnJhbWUqIHFmcmFtZSwgYm9vbCBl
bmFibGVkKQoreworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIEZyYW1lKiBm
cmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKKyAgICBJbnNwZWN0b3JDb250
cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
OworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChlbmFibGVk
KQorICAgICAgICBjb250cm9sbGVyLT5lbmFibGVQcm9maWxlcigpOworICAgIGVsc2UKKyAgICAg
ICAgY29udHJvbGxlci0+ZGlzYWJsZVByb2ZpbGVyKCk7CisjZW5kaWYKK30KKworLy8gUGF1c2Ug
YSBnaXZlbiBDU1MgYW5pbWF0aW9uIG9yIHRyYW5zaXRpb24gb24gdGhlIHRhcmdldCBub2RlIGF0
IGEgc3BlY2lmaWMgdGltZS4KKy8vIElmIHRoZSBhbmltYXRpb24gb3IgdHJhbnNpdGlvbiBpcyBh
bHJlYWR5IHBhdXNlZCwgaXQgd2lsbCB1cGRhdGUgaXRzIHBhdXNlIHRpbWUuCisvLyBUaGlzIG1l
dGhvZCBpcyBvbmx5IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIHRlc3RpbmcgdGhlIENTUyBhbmlt
YXRpb24gYW5kIHRyYW5zaXRpb24gc3lzdGVtLgorYm9vbCBRRFJUU3VwcG9ydDo6cGF1c2VBbmlt
YXRpb24oUVdlYkZyYW1lICpxZnJhbWUsIGNvbnN0IFFTdHJpbmcgJmFuaW1hdGlvbk5hbWUsIGRv
dWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nICZlbGVtZW50SWQpCit7CisgICAgRnJhbWUqIGZyYW1l
ID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOworICAgIGlmICghZnJhbWUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBmcmFtZS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBEb2N1bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAg
UV9BU1NFUlQoZG9jKTsKKworICAgIE5vZGUqIGNvcmVOb2RlID0gZG9jLT5nZXRFbGVtZW50QnlJ
ZChlbGVtZW50SWQpOworICAgIGlmICghY29yZU5vZGUgfHwgIWNvcmVOb2RlLT5yZW5kZXJlcigp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gY29udHJvbGxlci0+cGF1c2VB
bmltYXRpb25BdFRpbWUoY29yZU5vZGUtPnJlbmRlcmVyKCksIGFuaW1hdGlvbk5hbWUsIHRpbWUp
OworfQorCitib29sIFFEUlRTdXBwb3J0OjpwYXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KFFXZWJG
cmFtZSAqcWZyYW1lLCBjb25zdCBRU3RyaW5nICZwcm9wZXJ0eU5hbWUsIGRvdWJsZSB0aW1lLCBj
b25zdCBRU3RyaW5nICZlbGVtZW50SWQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1l
UHJpdmF0ZTo6Y29yZShxZnJhbWUpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5p
bWF0aW9uKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBEb2N1bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgUV9BU1NFUlQoZG9j
KTsKKworICAgIE5vZGUqIGNvcmVOb2RlID0gZG9jLT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQp
OworICAgIGlmICghY29yZU5vZGUgfHwgIWNvcmVOb2RlLT5yZW5kZXJlcigpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gY29udHJvbGxlci0+cGF1c2VUcmFuc2l0aW9uQXRU
aW1lKGNvcmVOb2RlLT5yZW5kZXJlcigpLCBwcm9wZXJ0eU5hbWUsIHRpbWUpOworfQorCisvLyBQ
YXVzZSBhIGdpdmVuIFNWRyBhbmltYXRpb24gb24gdGhlIHRhcmdldCBub2RlIGF0IGEgc3BlY2lm
aWMgdGltZS4KKy8vIFRoaXMgbWV0aG9kIGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3Ig
dGVzdGluZyB0aGUgU1ZHIGFuaW1hdGlvbiBzeXN0ZW0uCitib29sIFFEUlRTdXBwb3J0OjpwYXVz
ZVNWR0FuaW1hdGlvbihRV2ViRnJhbWUgKnFmcmFtZSwgY29uc3QgUVN0cmluZyAmYW5pbWF0aW9u
SWQsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nICZlbGVtZW50SWQpCit7CisjaWYgIUVOQUJM
RShTVkcpCisgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKKyAgICBGcmFtZSogZnJhbWUgPSBRV2Vi
RnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworICAg
IFFfQVNTRVJUKGRvYyk7CisKKyAgICBpZiAoIWRvYy0+c3ZnRXh0ZW5zaW9ucygpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBOb2RlKiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5
SWQoYW5pbWF0aW9uSWQpOworICAgIGlmICghY29yZU5vZGUgfHwgIVNWR1NNSUxFbGVtZW50Ojpp
c1NNSUxFbGVtZW50KGNvcmVOb2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIGRvYy0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5zYW1wbGVBbmltYXRpb25BdFRpbWUoZWxl
bWVudElkLCBzdGF0aWNfY2FzdDxTVkdTTUlMRWxlbWVudCo+KGNvcmVOb2RlKSwgdGltZSk7Cisj
ZW5kaWYKK30KKworLy8gUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGN1cnJlbnRseSBydW5u
aW5nIGFuaW1hdGlvbnMgKGluY2x1ZGVzIGJvdGggQ1NTIHRyYW5zaXRpb25zIGFuZCBDU1MgYW5p
bWF0aW9ucykuCitpbnQgUURSVFN1cHBvcnQ6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhRV2Vi
RnJhbWUgKnFmcmFtZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpj
b3JlKHFmcmFtZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsK
KyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biBjb250cm9sbGVyLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKK30KKwordm9pZCBRRFJU
U3VwcG9ydDo6Y2xlYXJGcmFtZU5hbWUoUVdlYkZyYW1lKiBxRnJhbWUpCit7CisgICAgRnJhbWUq
IGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOworICAgIGZyYW1lLT50cmVl
KCktPmNsZWFyTmFtZSgpOworfQorCitpbnQgUURSVFN1cHBvcnQ6OmphdmFTY3JpcHRPYmplY3Rz
Q291bnQoKQoreworICAgIHJldHVybiBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0
YSgpLT5oZWFwLmdsb2JhbE9iamVjdENvdW50KCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6Omdh
cmJhZ2VDb2xsZWN0b3JDb2xsZWN0KCkKK3sKKyAgICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdlQ29s
bGVjdE5vdygpOworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVj
dE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSkKK3sKKyAgICBnY0NvbnRyb2xs
ZXIoKS5nYXJiYWdlQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkRm9yRGVidWdnaW5nKHdhaXRVbnRp
bERvbmUpOworfQorCisvLyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiBjb3VudGVyIGluIHRoZSBlbGVt
ZW50IHNwZWNpZmllZCBieSBcYSBpZC4KK1FTdHJpbmcgUURSVFN1cHBvcnQ6OmNvdW50ZXJWYWx1
ZUZvckVsZW1lbnRCeUlkKFFXZWJGcmFtZSogcUZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCkKK3sK
KyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7CisgICAg
aWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpKSB7CisgICAgICAgIEVs
ZW1lbnQqIGVsZW1lbnQgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoaWQpOworICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6Y291bnRlclZhbHVlRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICB9Cisg
ICAgcmV0dXJuIFFTdHJpbmcoKTsKK30KKworaW50IFFEUlRTdXBwb3J0OjpwYWdlTnVtYmVyRm9y
RWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3
aWR0aCwgZmxvYXQgaGVpZ2h0KQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZh
dGU6OmNvcmUocUZyYW1lKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gLTE7CisK
KyAgICBFbGVtZW50KiBlbGVtZW50ID0gZnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlk
KEF0b21pY1N0cmluZyhpZCkpOworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIC0x
OworCisgICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoZWxlbWVu
dCwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKK30KKworaW50IFFEUlRTdXBwb3J0OjpudW1i
ZXJPZlBhZ2VzKFFXZWJGcmFtZSogcUZyYW1lLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQor
eworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gUHJpbnRDb250
ZXh0OjpudW1iZXJPZlBhZ2VzKGZyYW1lLCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCkpOworfQor
CisvLyBTdXNwZW5kIGFjdGl2ZSBET00gb2JqZWN0cyBpbiB0aGlzIGZyYW1lLgordm9pZCBRRFJU
U3VwcG9ydDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBxRnJhbWUpCit7Cisg
ICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOworICAgIGlm
IChmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN1c3BlbmRB
Y3RpdmVET01PYmplY3RzKCk7Cit9CisKKy8vIFJlc3VtZSBhY3RpdmUgRE9NIG9iamVjdHMgaW4g
dGhpcyBmcmFtZS4KK3ZvaWQgUURSVFN1cHBvcnQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoUVdl
YkZyYW1lKiBxRnJhbWUpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6
Y29yZShxRnJhbWUpOworICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgZnJhbWUt
PmRvY3VtZW50KCktPnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKK30KKwordm9pZCBRRFJUU3Vw
cG9ydDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoUVdlYkZyYW1lKiBxRnJhbWUsIGlu
dCB3b3JsZElkLCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpCit7CisgICAgRnJhbWUqIGZyYW1lID0g
UVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOworICAgIGlmIChmcmFtZSkKKyAgICAgICAg
SlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdEluV29y
bGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNjcmlwdCwgdHJ1ZSkuanNWYWx1ZSgpOworfQor
Cit2b2lkIFFEUlRTdXBwb3J0Ojp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IFFTdHJp
bmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29u
c3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21h
aW5zKQoreworICAgIFNlY3VyaXR5T3JpZ2luOjp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKCpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlv
blByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsK
K30KKwordm9pZCBRRFJUU3VwcG9ydDo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCkKK3sK
KyAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7Cit9CisK
K3ZvaWQgUURSVFN1cHBvcnQ6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hl
bWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBTZWN1cml0
eU9yaWdpbjo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShmb3JiaWRk
ZW4sIHNjaGVtZSk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OnNldFNtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZChRV2ViUGFnZSAqcGFnZSwgYm9vbCBlbmFibGVkKQoreworICAgIHBhZ2UtPmQtPnNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKKwordm9pZCBRRFJUU3VwcG9y
dDo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChRV2ViUGFnZSAqcGFnZSwgYm9v
bCBlbmFibGVkKQoreworICAgIHBhZ2UtPmQtPnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQgPSBlbmFibGVkOworfQorCit2b2lkIFFEUlRTdXBwb3J0OjplbmFibGVDYXJldEJyb3dzaW5n
KFFXZWJQYWdlKiBwYWdlLCBib29sIHZhbHVlKQoreworICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdl
LT5zZXR0aW5ncygpLT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZCh2YWx1ZSk7Cit9CisKK3ZvaWQg
UURSVFN1cHBvcnQ6OnNldE1lZGlhVHlwZShRV2ViRnJhbWUqIHFmcmFtZSwgY29uc3QgUVN0cmlu
ZyYgdHlwZSkKK3sKKyAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRl
Ojpjb3JlKHFmcmFtZSk7CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZp
ZXcoKTsKKyAgICB2aWV3LT5zZXRNZWRpYVR5cGUodHlwZSk7CisgICAgZnJhbWUtPmRvY3VtZW50
KCktPnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKKyAgICB2aWV3LT5mb3JjZUxheW91dCgpOworfQpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkODY2NTUKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKQEAg
LTAsMCArMSw4MyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUm9iZXJ0IEhvZ2FuIDxy
b2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorICAgIENvcHlyaWdodCAoQykgMjAwOCwyMDA5LDIwMTAg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJp
Z2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KKyAgICBDb3B5cmln
aHQgKEMpIDIwMDcgQXBwbGUgSW5jLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgUURSVFNVUFBPUlRfSAorI2RlZmlu
ZSBRRFJUU1VQUE9SVF9ICisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKKyNpbmNsdWRl
IDxRdENvcmUvcXN0cmluZy5oPgorCitjbGFzcyBRV2ViUGFnZTsKK2NsYXNzIFFXZWJGcmFtZTsK
K1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVVybDsKK1FUX0VORF9OQU1FU1BBQ0UKKworY2xh
c3MgUVdFQktJVF9FWFBPUlQgUURSVFN1cHBvcnQgeworCitwdWJsaWM6CisKKyAgICBRRFJUU3Vw
cG9ydCgpOworICAgIH5RRFJUU3VwcG9ydCgpOworCisgICAgdm9pZCBjbGVhckZyYW1lTmFtZShR
V2ViRnJhbWUqIHFGcmFtZSk7CisgICAgUVN0cmluZyBjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJ
ZChRV2ViRnJhbWUqIHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQpOworICAgIHZvaWQgZW5hYmxl
Q2FyZXRCcm93c2luZyhRV2ViUGFnZSogcGFnZSwgYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBldmFs
dWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChRV2ViRnJhbWUqIHFGcmFtZSwgaW50IHdvcmxkSWQs
IGNvbnN0IFFTdHJpbmcmIHNjcmlwdCk7CisgICAgdm9pZCBleGVjdXRlQ29yZUNvbW1hbmRCeU5h
bWUoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFTdHJpbmcmIHZh
bHVlKTsKKyAgICBib29sIGlzQ29tbWFuZEVuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFT
dHJpbmcmIG5hbWUpOworICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RvckNvbGxlY3QoKTsKKyAgICB2
b2lkIGdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50
aWxEb25lKTsKKyAgICBib29sIGhhc0RvY3VtZW50RWxlbWVudChRV2ViRnJhbWUqIHFGcmFtZSk7
CisgICAgaW50IGphdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKKyAgICBpbnQgbnVtYmVyT2ZBY3Rp
dmVBbmltYXRpb25zKFFXZWJGcmFtZSopOworICAgIGludCBudW1iZXJPZlBhZ2VzKFFXZWJGcmFt
ZSogcUZyYW1lLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKKyAgICB2b2lkIG92ZXJ3cml0
ZVBsdWdpbkRpcmVjdG9yaWVzKCk7CisgICAgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChR
V2ViRnJhbWUqIHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQpOworICAgIGJvb2wgcGF1c2VBbmltYXRpb24oUVdlYkZyYW1lKiwgY29uc3QgUVN0cmlu
ZyYgbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CisgICAgYm9v
bCBwYXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KFFXZWJGcmFtZSosIGNvbnN0IFFTdHJpbmcmIG5h
bWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOworICAgIGJvb2wgcGF1
c2VTVkdBbmltYXRpb24oUVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYgYW5pbWF0aW9uSWQsIGRv
dWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOworICAgIHZvaWQgcmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CisgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzKFFX
ZWJGcmFtZSogcUZyYW1lKTsKKyAgICB2b2lkIHJ1bihib29sIGIpOworICAgIHZvaWQgc2V0RG9t
YWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29sIGZvcmJpZGRlbiwgY29uc3Qg
UVN0cmluZyYgc2NoZW1lKTsKKyAgICB2b2lkIHNldEZyYW1lU2V0RmxhdHRlbmluZ0VuYWJsZWQo
UVdlYlBhZ2UqLCBib29sKTsKKyAgICB2b2lkIHNldE1lZGlhVHlwZShRV2ViRnJhbWUqIHFmcmFt
ZSwgY29uc3QgUVN0cmluZyYgdHlwZSk7CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5n
RW5hYmxlZChRV2ViRnJhbWUqLCBib29sIGVuYWJsZWQpOworICAgIHZvaWQgc2V0VGltZWxpbmVQ
cm9maWxpbmdFbmFibGVkKFFXZWJQYWdlKiwgYm9vbCBlbmFibGVkKTsKKyAgICB2b2lkIHNldFNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9vbCBlbmFibGVkKTsKKyAg
ICB2b2lkIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoUVdlYlBhZ2UqIHBhZ2Us
IGJvb2wgZW5hYmxlZCk7CisgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhRV2ViRnJh
bWUqIHFGcmFtZSk7CisgICAgdm9pZCB3ZWJJbnNwZWN0b3JFeGVjdXRlU2NyaXB0KFFXZWJQYWdl
KiBwYWdlLCBsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKKyAgICB2b2lkIHdl
Ykluc3BlY3RvclNob3coUVdlYlBhZ2UqIHBhZ2UpOworICAgIHZvaWQgd2ViSW5zcGVjdG9yQ2xv
c2UoUVdlYlBhZ2UqIHBhZ2UpOworICAgIFFTdHJpbmcgd2ViUGFnZUdyb3VwTmFtZShRV2ViUGFn
ZSAqcGFnZSk7CisgICAgdm9pZCB3ZWJQYWdlU2V0R3JvdXBOYW1lKFFXZWJQYWdlKiBwYWdlLCBj
b25zdCBRU3RyaW5nJiBncm91cE5hbWUpOworICAgIHZvaWQgd2hpdGVMaXN0QWNjZXNzRnJvbU9y
aWdpbihjb25zdCBRU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rl
c3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgaW50IHdvcmtlclRocmVhZENvdW50KCk7CisKKyAg
ICBib29sIGRydFJ1bjsKK307CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmNwcAppbmRleCA5MGViYjFkLi44MjVjNTRiIDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnRRdC5oIgogCisjaW5jbHVk
ZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgiCisKICNpbmNsdWRlICJxd2VicGFnZS5oIgogI2lu
Y2x1ZGUgInF3ZWJwYWdlX3AuaCIKIApAQCAtMzMzLDE0ICszMzUsMTggQEAgdm9pZCBFZGl0b3JD
bGllbnRRdDo6cGFnZURlc3Ryb3llZCgpCiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OnNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIG1fcGFnZS0+ZC0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkOwor
fQorCit2b2lkIEVkaXRvckNsaWVudFF0Ojp0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpCit7Cisg
ICAgYm9vbCBjdXJyZW50ID0gbV9wYWdlLT5kLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7Cisg
ICAgbV9wYWdlLT5kLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSAhY3VycmVudDsKIH0KIAog
Ym9vbCBFZGl0b3JDbGllbnRRdDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
bV9wYWdlLT5kLT5zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOwogfQogCiB2b2lkIEVk
aXRvckNsaWVudFF0Ojp0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpCmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaCBiL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCmluZGV4IDQyYTQwMmYuLjZjMjA4OTggMTAw
NjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCisrKyBi
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCkBAIC00OCwxMyArNDgs
MTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShSYW5nZSop
OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlKEhUTUxFbGVtZW50
Kik7CiAgICAgdmlydHVhbCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOyAKKyAgICB2
aXJ0dWFsIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKICAgICB2aXJ0dWFsIGJvb2wg
aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7IAogICAgIHZpcnR1YWwgYm9vbCBp
c0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpOwogICAgIHZpcnR1YWwgdm9pZCB0b2dn
bGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc0dyYW1tYXJD
aGVja2luZ0VuYWJsZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5n
KCk7CiAgICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKLSAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgc2VsZWN0V29yZEJlZm9yZU1lbnVFdmVudCgpOwogICAgIHZpcnR1YWwg
Ym9vbCBpc0VkaXRhYmxlKCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90ZXN0cy9xd2VicGFn
ZS90c3RfcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFn
ZS5jcHAKaW5kZXggYmE3YTg3ZS4uOGE3MTVkZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdl
L3RzdF9xd2VicGFnZS5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICovCiAKICNpbmNsdWRlICIuLi91
dGlsLmgiCisjaW5jbHVkZSAiLi4vV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
LmgiCiAjaW5jbHVkZSA8UURpcj4KICNpbmNsdWRlIDxRR3JhcGhpY3NXaWRnZXQ+CiAjaW5jbHVk
ZSA8UUxpbmVFZGl0PgpAQCAtNzIyLDEyICs3MjMsOSBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6Y3Jl
YXRlVmlld2xlc3NQbHVnaW4oKQogCiB9CiAKLS8vIGltcG9ydCBwcml2YXRlIEFQSQotdm9pZCBR
V0VCS0lUX0VYUE9SVCBxdF93ZWJwYWdlX3NldEdyb3VwTmFtZShRV2ViUGFnZSogcGFnZSwgY29u
c3QgUVN0cmluZyYgZ3JvdXBOYW1lKTsKLVFTdHJpbmcgUVdFQktJVF9FWFBPUlQgcXRfd2VicGFn
ZV9ncm91cE5hbWUoUVdlYlBhZ2UqIHBhZ2UpOwotCiB2b2lkIHRzdF9RV2ViUGFnZTo6bXVsdGlw
bGVQYWdlR3JvdXBzQW5kTG9jYWxTdG9yYWdlKCkKIHsKKyAgICBRRFJUU3VwcG9ydCogZHJ0U3Vw
cG9ydCA9IG5ldyBRRFJUU3VwcG9ydCgpOwogICAgIFFEaXIgZGlyKFFEaXI6OmN1cnJlbnRQYXRo
KCkpOwogICAgIGRpci5ta2RpcigicGF0aDEiKTsKICAgICBkaXIubWtkaXIoInBhdGgyIik7CkBA
IC03MzcsMTIgKzczNSwxMiBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6bXVsdGlwbGVQYWdlR3JvdXBz
QW5kTG9jYWxTdG9yYWdlKCkKIAogICAgIHZpZXcxLnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0
cmlidXRlKFFXZWJTZXR0aW5nczo6TG9jYWxTdG9yYWdlRW5hYmxlZCwgdHJ1ZSk7CiAgICAgdmll
dzEucGFnZSgpLT5zZXR0aW5ncygpLT5zZXRMb2NhbFN0b3JhZ2VQYXRoKFFEaXI6OnRvTmF0aXZl
U2VwYXJhdG9ycyhRRGlyOjpjdXJyZW50UGF0aCgpICsgIi9wYXRoMSIpKTsKLSAgICBxdF93ZWJw
YWdlX3NldEdyb3VwTmFtZSh2aWV3MS5wYWdlKCksICJncm91cDEiKTsKKyAgICBkcnRTdXBwb3J0
LT53ZWJQYWdlU2V0R3JvdXBOYW1lKHZpZXcxLnBhZ2UoKSwgImdyb3VwMSIpOwogICAgIHZpZXcy
LnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6TG9jYWxTdG9y
YWdlRW5hYmxlZCwgdHJ1ZSk7ICAgIAogICAgIHZpZXcyLnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0
TG9jYWxTdG9yYWdlUGF0aChRRGlyOjp0b05hdGl2ZVNlcGFyYXRvcnMoUURpcjo6Y3VycmVudFBh
dGgoKSArICIvcGF0aDIiKSk7Ci0gICAgcXRfd2VicGFnZV9zZXRHcm91cE5hbWUodmlldzIucGFn
ZSgpLCAiZ3JvdXAyIik7Ci0gICAgUUNPTVBBUkUocXRfd2VicGFnZV9ncm91cE5hbWUodmlldzEu
cGFnZSgpKSwgUVN0cmluZygiZ3JvdXAxIikpOwotICAgIFFDT01QQVJFKHF0X3dlYnBhZ2VfZ3Jv
dXBOYW1lKHZpZXcyLnBhZ2UoKSksIFFTdHJpbmcoImdyb3VwMiIpKTsKKyAgICBkcnRTdXBwb3J0
LT53ZWJQYWdlU2V0R3JvdXBOYW1lKHZpZXcyLnBhZ2UoKSwgImdyb3VwMiIpOworICAgIFFDT01Q
QVJFKGRydFN1cHBvcnQtPndlYlBhZ2VHcm91cE5hbWUodmlldzEucGFnZSgpKSwgUVN0cmluZygi
Z3JvdXAxIikpOworICAgIFFDT01QQVJFKGRydFN1cHBvcnQtPndlYlBhZ2VHcm91cE5hbWUodmll
dzIucGFnZSgpKSwgUVN0cmluZygiZ3JvdXAyIikpOwogCiAKICAgICB2aWV3MS5zZXRIdG1sKFFT
dHJpbmcoIjxodG1sPjxib2R5PiA8L2JvZHk+PC9odG1sPiIpLCBRVXJsKCJodHRwOi8vd3d3Lm15
ZXhhbXBsZS5jb20iKSk7CkBAIC0xNDU5LDExICsxNDU3LDkgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6
OmlucHV0TWV0aG9kcygpCiAgICAgZGVsZXRlIGNvbnRhaW5lcjsKIH0KIAotLy8gaW1wb3J0IGEg
bGl0dGxlIERSVCBoZWxwZXIgZnVuY3Rpb24gdG8gdHJpZ2dlciB0aGUgZ2FyYmFnZSBjb2xsZWN0
b3IKLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgp
OwotCiB2b2lkIHRzdF9RV2ViUGFnZTo6cHJvdGVjdEJpbmRpbmdzUnVudGltZU9iamVjdHNGcm9t
Q29sbGVjdG9yKCkKIHsKKyAgICBRRFJUU3VwcG9ydCogZHJ0U3VwcG9ydCA9IG5ldyBRRFJUU3Vw
cG9ydCgpOwogICAgIFFTaWduYWxTcHkgbG9hZFNweShtX3ZpZXcsIFNJR05BTChsb2FkRmluaXNo
ZWQoYm9vbCkpKTsKIAogICAgIFBsdWdpblBhZ2UqIG5ld1BhZ2UgPSBuZXcgUGx1Z2luUGFnZSht
X3ZpZXcpOwpAQCAtMTQ3OCw3ICsxNDc0LDcgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6OnByb3RlY3RC
aW5kaW5nc1J1bnRpbWVPYmplY3RzRnJvbUNvbGxlY3RvcigpCiAKICAgICBuZXdQYWdlLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ0ZXN0bWUoJ2ZvbycpIik7CiAKLSAgICBxdF9k
cnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCk7CisgICAgZHJ0U3VwcG9ydC0+Z2FyYmFnZUNv
bGxlY3RvckNvbGxlY3QoKTsKIAogICAgIC8vIGRvbid0IGNyYXNoIQogICAgIG5ld1BhZ2UtPm1h
aW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInRlc3RtZSgnYmFyJykiKTsKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA3
YjNmMGZkLi5kOWIzYjNiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTAtMDMtMTggIFJvYmVy
dCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBMYXlvdXRUZXN0Q29udHJvbGxl
ciBjb21tYW5kczoKKyAgICAgICAgICBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQKKyAgICAg
ICAgICBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkCisgICAgICAgICAgZXhlY0Nv
bW1hbmQKKyAgICAgICAgICBpc0NvbW1hbmRFbmFibGVkCisKKyAgICAgICAgVXBkYXRlIERSVCB0
byB1c2UgbmV3IFFEUlRTdXBwb3J0IGNsYXNzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg0NAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
cXQvRHVtcFJlbmRlclRyZWVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJl
ZTo6RHVtcFJlbmRlclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWU6OnJl
c2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkR1
bXBSZW5kZXJUcmVlOjpkdW1wRnJhbWVzQXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9EdW1wUmVuZGVyVHJlZVF0Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvR0ND
b250cm9sbGVyUXQuY3BwOgorICAgICAgICAoR0NDb250cm9sbGVyOjpHQ0NvbnRyb2xsZXIpOgor
ICAgICAgICAoR0NDb250cm9sbGVyOjpjb2xsZWN0KToKKyAgICAgICAgKEdDQ29udHJvbGxlcjo6
Y29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKToKKyAgICAgICAgKEdDQ29udHJvbGxlcjo6Z2V0SlNP
YmplY3RDb3VudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQu
aDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5
SWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsb3NlV2ViSW5zcGVjdG9yKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRGcmFtZVNldEZsYXR0ZW5pbmdFbmFibGVkKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5h
YmxlZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGltZWxpbmVQcm9maWxp
bmdFbmFibGVkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYXVzZUFuaW1hdGlv
bkF0VGltZU9uRWxlbWVudFdpdGhJZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4pOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldENhcmV0QnJvd3NpbmdFbmFibGVkKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlk
ZGVuRm9yVVJMU2NoZW1lKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjp3b3JrZXJU
aHJlYWRDb3VudCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZv
ckVsZW1lbnRCeUlkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBh
Z2VzKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV4
ZWNDb21tYW5kKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjppc0NvbW1hbmRFbmFi
bGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
Lmg6CisKIDIwMTAtMDMtMTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCmluZGV4IGQ4ZjUzZjMuLjFiMjI1OWEgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQu
Y3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQu
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJE
dW1wUmVuZGVyVHJlZVF0LmgiCisjaW5jbHVkZSAiLi4vLi4vLi4vV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIgogI2luY2x1ZGUgIkV2ZW50U2VuZGVyUXQu
aCIKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXJRdC5oIgogI2luY2x1ZGUgIkxheW91dFRlc3RDb250
cm9sbGVyUXQuaCIKQEAgLTc1LDEzICs3Niw4IEBACiAKICNpbmNsdWRlIDxxZGVidWcuaD4KIAot
ZXh0ZXJuIHZvaWQgcXRfZHJ0X3J1bihib29sIGIpOwogZXh0ZXJuIHZvaWQgcXRfZHVtcF9zZXRf
YWNjZXB0c19lZGl0aW5nKGJvb2wgYik7CiBleHRlcm4gdm9pZCBxdF9kdW1wX2ZyYW1lX2xvYWRl
cihib29sIGIpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X2NsZWFyRnJhbWVOYW1lKFFXZWJGcmFtZSog
cUZyYW1lKTsKLWV4dGVybiB2b2lkIHF0X2RydF9vdmVyd3JpdGVQbHVnaW5EaXJlY3Rvcmllcygp
OwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3Jlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwotZXh0
ZXJuIGJvb2wgcXRfZHJ0X2hhc0RvY3VtZW50RWxlbWVudChRV2ViRnJhbWUqIHFGcmFtZSk7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzE2LDcgKzMxMiw3IEBAIER1bXBSZW5kZXJUcmVl
OjpEdW1wUmVuZGVyVHJlZSgpCiAgICAgLCBtX2VuYWJsZVRleHRPdXRwdXQoZmFsc2UpCiAgICAg
LCBtX3NpbmdsZUZpbGVNb2RlKGZhbHNlKQogewotICAgIHF0X2RydF9vdmVyd3JpdGVQbHVnaW5E
aXJlY3RvcmllcygpOworICAgIG1fZHJ0U3VwcG9ydC0+b3ZlcndyaXRlUGx1Z2luRGlyZWN0b3Jp
ZXMoKTsKICAgICBRV2ViU2V0dGluZ3M6OmVuYWJsZVBlcnNpc3RlbnRTdG9yYWdlKCk7CiAKICAg
ICAvLyBjcmVhdGUgb3VyIHByaW1hcnkgdGVzdGluZyBwYWdlL3ZpZXcuCkBAIC0zMzIsMTQgKzMy
OCwxNSBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUoKQogCiAgICAgLy8gY3JlYXRl
IG91ciBjb250cm9sbGVycy4gVGhpcyBoYXMgdG8gYmUgZG9uZSBiZWZvcmUgY29ubmVjdEZyYW1l
LAogICAgIC8vIGFzIGl0IGV4cG9ydHMgdGhlcmUgdG8gdGhlIEphdmFTY3JpcHQgRE9NIHdpbmRv
dy4KLSAgICBtX2NvbnRyb2xsZXIgPSBuZXcgTGF5b3V0VGVzdENvbnRyb2xsZXIodGhpcyk7Cisg
ICAgbV9kcnRTdXBwb3J0ID0gbmV3IFFEUlRTdXBwb3J0KCk7CisgICAgbV9jb250cm9sbGVyID0g
bmV3IExheW91dFRlc3RDb250cm9sbGVyKHRoaXMsIG1fZHJ0U3VwcG9ydCk7CiAgICAgY29ubmVj
dChtX2NvbnRyb2xsZXIsIFNJR05BTChzaG93UGFnZSgpKSwgdGhpcywgU0xPVChzaG93UGFnZSgp
KSk7CiAgICAgY29ubmVjdChtX2NvbnRyb2xsZXIsIFNJR05BTChoaWRlUGFnZSgpKSwgdGhpcywg
U0xPVChoaWRlUGFnZSgpKSk7CiAKICAgICBjb25uZWN0KG1fY29udHJvbGxlciwgU0lHTkFMKGRv
bmUoKSksIHRoaXMsIFNMT1QoZHVtcCgpKSk7CiAgICAgbV9ldmVudFNlbmRlciA9IG5ldyBFdmVu
dFNlbmRlcihtX3BhZ2UpOwogICAgIG1fdGV4dElucHV0Q29udHJvbGxlciA9IG5ldyBUZXh0SW5w
dXRDb250cm9sbGVyKG1fcGFnZSk7Ci0gICAgbV9nY0NvbnRyb2xsZXIgPSBuZXcgR0NDb250cm9s
bGVyKG1fcGFnZSk7CisgICAgbV9nY0NvbnRyb2xsZXIgPSBuZXcgR0NDb250cm9sbGVyKG1fcGFn
ZSwgbV9kcnRTdXBwb3J0KTsKIAogICAgIC8vIG5vdyBjb25uZWN0IG91ciBkaWZmZXJlbnQgc2ln
bmFscwogICAgIGNvbm5lY3QobV9wYWdlLCBTSUdOQUwoZnJhbWVDcmVhdGVkKFFXZWJGcmFtZSAq
KSksCkBAIC0zNjMsNyArMzYwLDcgQEAgRHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKCkK
ICAgICAgICAgICAgIHRoaXMsIFNMT1Qoc3RhdHVzQmFyTWVzc2FnZShjb25zdCBRU3RyaW5nJikp
KTsKIAogICAgIFFPYmplY3Q6OmNvbm5lY3QodGhpcywgU0lHTkFMKHF1aXQoKSksIHFBcHAsIFNM
T1QocXVpdCgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwotICAgIHF0X2RydF9ydW4odHJ1ZSk7
CisgICAgbV9kcnRTdXBwb3J0LT5ydW4odHJ1ZSk7CiAgICAgUUZvY3VzRXZlbnQgZXZlbnQoUUV2
ZW50OjpGb2N1c0luLCBRdDo6QWN0aXZlV2luZG93Rm9jdXNSZWFzb24pOwogICAgIFFBcHBsaWNh
dGlvbjo6c2VuZEV2ZW50KG1fbWFpblZpZXcsICZldmVudCk7CiB9CkBAIC00MTcsMTIgKzQxNCwx
MiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVz
dGluZygpCiAgICAgbV9wYWdlLT51bmRvU3RhY2soKS0+Y2xlYXIoKTsKICAgICBtX3BhZ2UtPm1h
aW5GcmFtZSgpLT5zZXRab29tRmFjdG9yKDEuMCk7CiAgICAgY2xlYXJIaXN0b3J5KG1fcGFnZSk7
Ci0gICAgcXRfZHJ0X2NsZWFyRnJhbWVOYW1lKG1fcGFnZS0+bWFpbkZyYW1lKCkpOworICAgIG1f
ZHJ0U3VwcG9ydC0+Y2xlYXJGcmFtZU5hbWUobV9wYWdlLT5tYWluRnJhbWUoKSk7CiAKICAgICBX
b3JrUXVldWU6OnNoYXJlZCgpLT5jbGVhcigpOwogICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnNl
dEZyb3plbihmYWxzZSk7CiAKLSAgICBxdF9kcnRfcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Rz
KCk7CisgICAgbV9kcnRTdXBwb3J0LT5yZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMoKTsKIAog
ICAgIFFMb2NhbGU6OnNldERlZmF1bHQoUUxvY2FsZTo6YygpKTsKICAgICBzZXRsb2NhbGUoTENf
QUxMLCAiIik7CkBAIC01NzMsNyArNTcwLDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6aGlkZVBh
Z2UoKQogCiBRU3RyaW5nIER1bXBSZW5kZXJUcmVlOjpkdW1wRnJhbWVzQXNUZXh0KFFXZWJGcmFt
ZSogZnJhbWUpCiB7Ci0gICAgaWYgKCFmcmFtZSB8fCAhcXRfZHJ0X2hhc0RvY3VtZW50RWxlbWVu
dChmcmFtZSkpCisgICAgaWYgKCFmcmFtZSB8fCAhbV9kcnRTdXBwb3J0LT5oYXNEb2N1bWVudEVs
ZW1lbnQoZnJhbWUpKQogICAgICAgICByZXR1cm4gUVN0cmluZygpOwogCiAgICAgUVN0cmluZyBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVu
ZGVyVHJlZVF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJl
ZVF0LmgKaW5kZXggN2EyODU4YS4uYjAxZDMzZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaApAQCAtNTMsNiArNTMsNyBAQCBRVF9FTkRf
TkFNRVNQQUNFCiBjbGFzcyBRV2ViRnJhbWU7CiAKIGNsYXNzIExheW91dFRlc3RDb250cm9sbGVy
OworY2xhc3MgUURSVFN1cHBvcnQ7CiBjbGFzcyBFdmVudFNlbmRlcjsKIGNsYXNzIFRleHRJbnB1
dENvbnRyb2xsZXI7CiBjbGFzcyBHQ0NvbnRyb2xsZXI7CkBAIC0xMjQsNiArMTI1LDcgQEAgcHJp
dmF0ZToKICAgICBRU3RyaW5nIGR1bXBGcmFtZXNBc1RleHQoUVdlYkZyYW1lKiBmcmFtZSk7CiAg
ICAgUVN0cmluZyBkdW1wQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIgKm1fY29udHJvbGxlcjsKKyAgICBRRFJUU3VwcG9ydCAqbV9kcnRTdXBwb3J0OwogCiAgICAg
Ym9vbCBtX2R1bXBQaXhlbHM7CiAgICAgUVN0cmluZyBtX2V4cGVjdGVkSGFzaDsKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmNwcCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmNwcAppbmRleCA5Y2Mz
YWE3Li5iNzEwNjA0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9H
Q0NvbnRyb2xsZXJRdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0ND
b250cm9sbGVyUXQuY3BwCkBAIC0yOSwzMCArMjksMjcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkdDQ29udHJvbGxlclF0LmgiCisjaW5jbHVkZSAiLi4vLi4vLi4vV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIgogCiAjaW5jbHVkZSA8
cXdlYnBhZ2UuaD4KIAotZXh0ZXJuIGludCBxdF9kcnRfamF2YVNjcmlwdE9iamVjdHNDb3VudCgp
OwotZXh0ZXJuIHZvaWQgcXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgpOwotCi1leHRl
cm4gdm9pZCBxdF9kcnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQo
Ym9vbCB3YWl0VW50aWxEb25lKTsKLQotR0NDb250cm9sbGVyOjpHQ0NvbnRyb2xsZXIoUVdlYlBh
Z2UqIHBhcmVudCkKK0dDQ29udHJvbGxlcjo6R0NDb250cm9sbGVyKFFXZWJQYWdlKiBwYXJlbnQs
IFFEUlRTdXBwb3J0KiBkcnRTdXBwb3J0KQogICAgIDogUU9iamVjdChwYXJlbnQpCisgICAgLCBt
X2RydFN1cHBvcnQoZHJ0U3VwcG9ydCkKIHsKIH0KIAogdm9pZCBHQ0NvbnRyb2xsZXI6OmNvbGxl
Y3QoKSBjb25zdAogewotICAgIHF0X2RydF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3QoKTsKKyAg
ICBtX2RydFN1cHBvcnQtPmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0KCk7CiB9CiAKIHZvaWQgR0ND
b250cm9sbGVyOjpjb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKSBj
b25zdAogewotICAgIHF0X2RydF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3RPbkFsdGVybmF0ZVRo
cmVhZCh3YWl0VW50aWxEb25lKTsKKyAgICBtX2RydFN1cHBvcnQtPmdhcmJhZ2VDb2xsZWN0b3JD
b2xsZWN0T25BbHRlcm5hdGVUaHJlYWQod2FpdFVudGlsRG9uZSk7CiB9CiAKIHNpemVfdCBHQ0Nv
bnRyb2xsZXI6OmdldEpTT2JqZWN0Q291bnQoKSBjb25zdAogewotICAgIHJldHVybiBxdF9kcnRf
amF2YVNjcmlwdE9iamVjdHNDb3VudCgpOworICAgIHJldHVybiBtX2RydFN1cHBvcnQtPmphdmFT
Y3JpcHRPYmplY3RzQ291bnQoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9HQ0NvbnRyb2xsZXJRdC5oCmluZGV4IDhmNWI0MzIuLjU0MDRiMjYgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmgKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuaApAQCAtMzIsMTcgKzMyLDIx
IEBACiAjaW5jbHVkZSA8UU9iamVjdD4KIAogY2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBRRFJUU3Vw
cG9ydDsKIAogY2xhc3MgR0NDb250cm9sbGVyIDogcHVibGljIFFPYmplY3QKIHsKICAgICBRX09C
SkVDVAogcHVibGljOgotICAgIEdDQ29udHJvbGxlcihRV2ViUGFnZSogcGFyZW50KTsKKyAgICBH
Q0NvbnRyb2xsZXIoUVdlYlBhZ2UqIHBhcmVudCwgUURSVFN1cHBvcnQqIGRydFN1cHBvcnQpOwog
CiBwdWJsaWMgc2xvdHM6CiAgICAgdm9pZCBjb2xsZWN0KCkgY29uc3Q7CiAgICAgdm9pZCBjb2xs
ZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKSBjb25zdDsKICAgICBzaXpl
X3QgZ2V0SlNPYmplY3RDb3VudCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFFEUlRTdXBwb3J0
KiBtX2RydFN1cHBvcnQ7CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXggYjVmNjUx
Yy4uNzdmMjJkNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICAqLwogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyUXQuaCIKKyNp
bmNsdWRlICIuLi8uLi8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0LmgiCiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVF0LmgiCiAjaW5jbHVkZSAiV29y
a1F1ZXVlLmgiCkBAIC0zOSwyOSArNDAsMTEgQEAKIGV4dGVybiB2b2lkIHF0X2R1bXBfZWRpdGlu
Z19jYWxsYmFja3MoYm9vbCBiKTsKIGV4dGVybiB2b2lkIHF0X2R1bXBfZnJhbWVfbG9hZGVyKGJv
b2wgYik7CiBleHRlcm4gdm9pZCBxdF9kdW1wX3Jlc291cmNlX2xvYWRfY2FsbGJhY2tzKGJvb2wg
Yik7Ci1leHRlcm4gdm9pZCBxdF9kcnRfc2V0TWVkaWFUeXBlKFFXZWJGcmFtZSogcWZyYW1lLCBj
b25zdCBRU3RyaW5nJiB0eXBlKTsKLWV4dGVybiB2b2lkIHF0X2RydF9zZXRGcmFtZVNldEZsYXR0
ZW5pbmdFbmFibGVkKFFXZWJQYWdlKiwgYm9vbCk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfc2V0SmF2
YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoUVdlYkZyYW1lKiwgYm9vbCBlbmFibGVkKTsKLWV4dGVy
biB2b2lkIHF0X2RydF9zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoUVdlYlBhZ2UqLCBib29s
IGVuYWJsZWQpOwotZXh0ZXJuIGJvb2wgcXRfZHJ0X3BhdXNlQW5pbWF0aW9uKFFXZWJGcmFtZSos
IGNvbnN0IFFTdHJpbmcmIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50
SWQpOwotZXh0ZXJuIGJvb2wgcXRfZHJ0X3BhdXNlVHJhbnNpdGlvbk9mUHJvcGVydHkoUVdlYkZy
YW1lKiwgY29uc3QgUVN0cmluZyYgbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVs
ZW1lbnRJZCk7Ci1leHRlcm4gYm9vbCBxdF9kcnRfcGF1c2VTVkdBbmltYXRpb24oUVdlYkZyYW1l
KiwgY29uc3QgUVN0cmluZyYgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5n
JiBlbGVtZW50SWQpOwotZXh0ZXJuIGludCBxdF9kcnRfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25z
KFFXZWJGcmFtZSopOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3NldERvbWFpblJlbGF4YXRpb25Gb3Ji
aWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNjaGVtZSk7
Ci0KLWV4dGVybiB2b2lkIHF0X2RydF93aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IFFT
dHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwg
Y29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKTsKLWV4dGVybiBRU3RyaW5nIHF0X2RydF9jb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJ
ZChRV2ViRnJhbWUqIHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQpOwotZXh0ZXJuIGludCBxdF9k
cnRfd29ya2VyVGhyZWFkQ291bnQoKTsKLWV4dGVybiBpbnQgcXRfZHJ0X3BhZ2VOdW1iZXJGb3JF
bGVtZW50QnlJZChRV2ViRnJhbWUqIHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQpOwotZXh0ZXJuIGludCBxdF9kcnRfbnVtYmVyT2ZQYWdlcyhRV2Vi
RnJhbWUqIHFGcmFtZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7Ci1leHRlcm4gdm9pZCBx
dF9kcnRfd2ViaW5zcGVjdG9yX2V4ZWN1dGVTY3JpcHQoUVdlYlBhZ2UqIHBhZ2UsIGxvbmcgY2Fs
bElkLCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3dlYmluc3Bl
Y3Rvcl9zaG93KFFXZWJQYWdlICpwYWdlKTsKLWV4dGVybiB2b2lkIHF0X2RydF93ZWJpbnNwZWN0
b3JfY2xvc2UoUVdlYlBhZ2UgKnBhZ2UpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X2VuYWJsZUNhcmV0
QnJvd3NpbmcoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgdmFsdWUpOwotCi1MYXlvdXRUZXN0Q29udHJv
bGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWUqIGRydCkK
KworTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFdlYkNvcmU6OkR1
bXBSZW5kZXJUcmVlKiBkcnQsIFFEUlRTdXBwb3J0KiBkcnRTdXBwb3J0KQogICAgIDogUU9iamVj
dCgpCiAgICAgLCBtX2RydChkcnQpCisgICAgLCBtX2RydFN1cHBvcnQoZHJ0U3VwcG9ydCkKIHsK
ICAgICByZXNldCgpOwogfQpAQCAtMTQzLDcgKzEyNiw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OndhaXRVbnRpbERvbmUoKQogCiBRU3RyaW5nIExheW91dFRlc3RDb250cm9sbGVyOjpj
b3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChjb25zdCBRU3RyaW5nJiBpZCkKIHsKLSAgICByZXR1
cm4gcXRfZHJ0X2NvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKG1fZHJ0LT53ZWJQYWdlKCktPm1h
aW5GcmFtZSgpLCBpZCk7CisgICAgcmV0dXJuIG1fZHJ0U3VwcG9ydC0+Y291bnRlclZhbHVlRm9y
RWxlbWVudEJ5SWQobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIGlkKTsKIH0KIAogaW50
IExheW91dFRlc3RDb250cm9sbGVyOjp3ZWJIaXN0b3J5SXRlbUNvdW50KCkKQEAgLTI5NCwyOSAr
Mjc3LDI5IEBAIFFTdHJpbmcgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRlY29kZUhvc3ROYW1lKGNv
bnN0IFFTdHJpbmcmIGhvc3QpCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1lZGlh
VHlwZShjb25zdCBRU3RyaW5nJiB0eXBlKQogewotICAgIHF0X2RydF9zZXRNZWRpYVR5cGUobV9k
cnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIHR5cGUpOworICAgIG1fZHJ0U3VwcG9ydC0+c2V0
TWVkaWFUeXBlKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpLCB0eXBlKTsKIH0KIAogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xvc2VXZWJJbnNwZWN0b3IoKQogewotICAgIHF0X2Ry
dF93ZWJpbnNwZWN0b3JfY2xvc2UobV9kcnQtPndlYlBhZ2UoKSk7CisgICAgbV9kcnRTdXBwb3J0
LT53ZWJJbnNwZWN0b3JDbG9zZShtX2RydC0+d2ViUGFnZSgpKTsKICAgICBtX2RydC0+d2ViUGFn
ZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJFeHRy
YXNFbmFibGVkLCBmYWxzZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dX
ZWJJbnNwZWN0b3IoKQogewogICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0
dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQsIHRydWUpOwotICAg
IHF0X2RydF93ZWJpbnNwZWN0b3Jfc2hvdyhtX2RydC0+d2ViUGFnZSgpKTsKKyAgICBtX2RydFN1
cHBvcnQtPndlYkluc3BlY3RvclNob3cobV9kcnQtPndlYlBhZ2UoKSk7CiB9CiAKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxsSWQsIGNv
bnN0IFFTdHJpbmcmIHNjcmlwdCkKIHsKLSAgICBxdF9kcnRfd2ViaW5zcGVjdG9yX2V4ZWN1dGVT
Y3JpcHQobV9kcnQtPndlYlBhZ2UoKSwgY2FsbElkLCBzY3JpcHQpOworICAgIG1fZHJ0U3VwcG9y
dC0+d2ViSW5zcGVjdG9yRXhlY3V0ZVNjcmlwdChtX2RydC0+d2ViUGFnZSgpLCBjYWxsSWQsIHNj
cmlwdCk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEZyYW1lU2V0RmxhdHRl
bmluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewotICAgIHF0X2RydF9zZXRGcmFtZVNldEZsYXR0
ZW5pbmdFbmFibGVkKG1fZHJ0LT53ZWJQYWdlKCksIGVuYWJsZWQpOworICAgIG1fZHJ0U3VwcG9y
dC0+c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChtX2RydC0+d2ViUGFnZSgpLCBlbmFibGVk
KTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dVbml2ZXJzYWxBY2Nl
c3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQpAQCAtMzM3LDEyICszMjAsMTIgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGEpCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0UHJv
ZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZSkKIHsKICAgICBtX3RvcExvYWRpbmdGcmFtZS0+cGFn
ZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJFeHRy
YXNFbmFibGVkLCB0cnVlKTsKLSAgICBxdF9kcnRfc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJs
ZWQobV90b3BMb2FkaW5nRnJhbWUsIGVuYWJsZSk7CisgICAgbV9kcnRTdXBwb3J0LT5zZXRKYXZh
U2NyaXB0UHJvZmlsaW5nRW5hYmxlZChtX3RvcExvYWRpbmdGcmFtZSwgZW5hYmxlKTsKIH0KIAog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGJv
b2wgZW5hYmxlKQogewotICAgIHF0X2RydF9zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQobV9k
cnQtPndlYlBhZ2UoKSwgZW5hYmxlKTsKKyAgICBtX2RydFN1cHBvcnQtPnNldFRpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZChtX2RydC0+d2ViUGFnZSgpLCBlbmFibGUpOwogfQogCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRGaXhlZENvbnRlbnRzU2l6ZShpbnQgd2lkdGgsIGludCBoZWln
aHQpCkBAIC0zOTcsNyArMzgwLDcgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VB
bmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyYgYW4KIHsKICAgICBR
V2ViRnJhbWUqIGZyYW1lID0gbV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgUV9B
U1NFUlQoZnJhbWUpOwotICAgIHJldHVybiBxdF9kcnRfcGF1c2VBbmltYXRpb24oZnJhbWUsIGFu
aW1hdGlvbk5hbWUsIHRpbWUsIGVsZW1lbnRJZCk7CisgICAgcmV0dXJuIG1fZHJ0U3VwcG9ydC0+
cGF1c2VBbmltYXRpb24oZnJhbWUsIGFuaW1hdGlvbk5hbWUsIHRpbWUsIGVsZW1lbnRJZCk7CiB9
CiAKIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxl
bWVudFdpdGhJZChjb25zdCBRU3RyaW5nJiBwcm9wZXJ0eU5hbWUsCkBAIC00MDYsNyArMzg5LDcg
QEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVt
ZW50V2l0aElkKGNvbnN0IFFTdHJpbmcmIHAKIHsKICAgICBRV2ViRnJhbWUqIGZyYW1lID0gbV9k
cnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgUV9BU1NFUlQoZnJhbWUpOwotICAgIHJl
dHVybiBxdF9kcnRfcGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eShmcmFtZSwgcHJvcGVydHlOYW1l
LCB0aW1lLCBlbGVtZW50SWQpOworICAgIHJldHVybiBtX2RydFN1cHBvcnQtPnBhdXNlVHJhbnNp
dGlvbk9mUHJvcGVydHkoZnJhbWUsIHByb3BlcnR5TmFtZSwgdGltZSwgZWxlbWVudElkKTsKIH0K
IAogYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVu
dEF0VGltZShjb25zdCBRU3RyaW5nJiBhbmltYXRpb25JZCwKQEAgLTQxNSwxNCArMzk4LDE0IEBA
IGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRB
dFRpbWUoY29uc3QgUVN0cmluZyYgYW5pCiB7CiAgICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fZHJ0
LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIFFfQVNTRVJUKGZyYW1lKTsKLSAgICByZXR1
cm4gcXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKGZyYW1lLCBhbmltYXRpb25JZCwgdGltZSwgZWxl
bWVudElkKTsKKyAgICByZXR1cm4gbV9kcnRTdXBwb3J0LT5wYXVzZVNWR0FuaW1hdGlvbihmcmFt
ZSwgYW5pbWF0aW9uSWQsIHRpbWUsIGVsZW1lbnRJZCk7CiB9CiAKIHVuc2lnbmVkIExheW91dFRl
c3RDb250cm9sbGVyOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25zdAogewogICAgIFFX
ZWJGcmFtZSogZnJhbWUgPSBtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKTsKICAgICBRX0FT
U0VSVChmcmFtZSk7Ci0gICAgcmV0dXJuIHF0X2RydF9udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMo
ZnJhbWUpOworICAgIHJldHVybiBtX2RydFN1cHBvcnQtPm51bWJlck9mQWN0aXZlQW5pbWF0aW9u
cyhmcmFtZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRpc2FibGVJbWFnZUxv
YWRpbmcoKQpAQCAtNDUwLDcgKzQzMyw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNs
ZWFyQWxsRGF0YWJhc2VzKCkKIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2hpdGVMaXN0
QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJp
bmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBxdF9kcnRfd2hpdGVMaXN0
QWNjZXNzRnJvbU9yaWdpbihzb3VyY2VPcmlnaW4sIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3Rp
bmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIG1fZHJ0U3VwcG9y
dC0+d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihzb3VyY2VPcmlnaW4sIGRlc3RpbmF0aW9uUHJv
dG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQog
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjp3YWl0Rm9yUG9saWN5RGVsZWdhdGUoKQpAQCAt
NDg3LDcgKzQ3MCw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24oY29uc3QgUVN0cmluZyYgdXJsKQogCiB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sIHZhbHVlKQogewotICAgIHF0X2RydF9l
bmFibGVDYXJldEJyb3dzaW5nKG1fZHJ0LT53ZWJQYWdlKCksIHZhbHVlKTsKKyAgICBtX2RydFN1
cHBvcnQtPmVuYWJsZUNhcmV0QnJvd3NpbmcobV9kcnQtPndlYlBhZ2UoKSwgdmFsdWUpOwogfQog
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9v
bCBlbmFibGVkKQpAQCAtNTAwLDEyICs0ODMsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAogdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShi
b29sIGZvcmJpZGRlbiwgY29uc3QgUVN0cmluZyYgc2NoZW1lKQogewotICAgIHF0X2RydF9zZXRE
b21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGZvcmJpZGRlbiwgc2NoZW1lKTsK
KyAgICBtX2RydFN1cHBvcnQtPnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hl
bWUoZm9yYmlkZGVuLCBzY2hlbWUpOwogfQogCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Ondv
cmtlclRocmVhZENvdW50KCkKIHsKLSAgICByZXR1cm4gcXRfZHJ0X3dvcmtlclRocmVhZENvdW50
KCk7CisgICAgcmV0dXJuIG1fZHJ0U3VwcG9ydC0+d29ya2VyVGhyZWFkQ291bnQoKTsKIH0KIAog
aW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoY29uc3Qg
UVN0cmluZyYgaWQsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCkBAIC01MTYsMTIgKzQ5OSwz
MiBAQCBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChj
b25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdAogICAgICAgICBoZWlnaHQgPSBtX2RydC0+d2Vi
UGFnZSgpLT52aWV3cG9ydFNpemUoKS5oZWlnaHQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gcXRf
ZHJ0X3BhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUo
KSwgaWQsIHdpZHRoLCBoZWlnaHQpOworICAgIHJldHVybiBtX2RydFN1cHBvcnQtPnBhZ2VOdW1i
ZXJGb3JFbGVtZW50QnlJZChtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKSwgaWQsIHdpZHRo
LCBoZWlnaHQpOwogfQogCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMo
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKIHsKLSAgICByZXR1cm4gcXRfZHJ0X251bWJlck9m
UGFnZXMobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIHdpZHRoLCBoZWlnaHQpOworICAg
IHJldHVybiBtX2RydFN1cHBvcnQtPm51bWJlck9mUGFnZXMobV9kcnQtPndlYlBhZ2UoKS0+bWFp
bkZyYW1lKCksIHdpZHRoLCBoZWlnaHQpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBlbmFibGUpCit7CisgICAgbV9kcnRT
dXBwb3J0LT5zZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQobV9kcnQtPndlYlBhZ2UoKSwgZW5h
YmxlKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAgICBtX2RydFN1cHBvcnQtPnNldFNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQobV9kcnQtPndlYlBhZ2UoKSwgZW5hYmxlKTsK
K30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXhlY0NvbW1hbmQoY29uc3QgUVN0cmlu
ZyYgbmFtZSwgY29uc3QgUVN0cmluZyYgdmFsdWUpCit7CisgICAgbV9kcnRTdXBwb3J0LT5leGVj
dXRlQ29yZUNvbW1hbmRCeU5hbWUobV9kcnQtPndlYlBhZ2UoKSwgbmFtZSwgdmFsdWUpOworfQor
Citib29sIExheW91dFRlc3RDb250cm9sbGVyOjppc0NvbW1hbmRFbmFibGVkKGNvbnN0IFFTdHJp
bmcmIG5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZHJ0U3VwcG9ydC0+aXNDb21tYW5kRW5h
YmxlZChtX2RydC0+d2ViUGFnZSgpLCBuYW1lKTsKIH0KIAogY29uc3QgdW5zaWduZWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6Om1heFZpZXdXaWR0aCA9IDgwMDsKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAppbmRleCA1Y2Y1
MTA0Li40OGQ3NmVlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8
cXdlYnNlY3VyaXR5b3JpZ2luLmg+CiAKIGNsYXNzIFFXZWJGcmFtZTsKK2NsYXNzIFFEUlRTdXBw
b3J0OwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIER1bXBSZW5kZXJUcmVlOwogfQpA
QCAtNTUsNyArNTYsNyBAQCBjbGFzcyBMYXlvdXRUZXN0Q29udHJvbGxlciA6IHB1YmxpYyBRT2Jq
ZWN0IHsKICAgICBRX1BST1BFUlRZKGludCB3b3JrZXJUaHJlYWRDb3VudCBSRUFEIHdvcmtlclRo
cmVhZENvdW50KQogICAgIFFfUFJPUEVSVFkoYm9vbCBnbG9iYWxGbGFnIFJFQUQgZ2xvYmFsRmxh
ZyBXUklURSBzZXRHbG9iYWxGbGFnKQogcHVibGljOgotICAgIExheW91dFRlc3RDb250cm9sbGVy
KFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlKiBkcnQpOworICAgIExheW91dFRlc3RDb250cm9sbGVy
KFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlKiBkcnQsIFFEUlRTdXBwb3J0KiBkcnRTdXBwb3J0KTsK
IAogICAgIGJvb2wgc2hvdWxkRHVtcEFzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dER1bXA7
IH0KICAgICBib29sIHNob3VsZER1bXBCYWNrRm9yd2FyZExpc3QoKSBjb25zdCB7IHJldHVybiBt
X2R1bXBCYWNrRm9yd2FyZExpc3Q7IH0KQEAgLTEzOCw2ICsxMzksMTAgQEAgcHVibGljIHNsb3Rz
OgogICAgIHZvaWQgc2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlcihib29sIGlzRmlyc3QpOwog
ICAgIHZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0
Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCBlbmFibGUpOworICAgIHZvaWQgc2V0U21hcnRJbnNl
cnREZWxldGVFbmFibGVkKGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHNldFNlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBlbmFibGUpOworICAgIHZvaWQgZXhlY0NvbW1hbmQoY29u
c3QgUVN0cmluZyYgbmFtZSwgY29uc3QgUVN0cmluZyYgdmFsdWUgPSBRU3RyaW5nKCkpOworICAg
IGJvb2wgaXNDb21tYW5kRW5hYmxlZChjb25zdCBRU3RyaW5nJiBuYW1lKSBjb25zdDsKIAogICAg
IGJvb2wgcGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyYg
YW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CiAg
ICAgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3QgUVN0cmlu
ZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsK
QEAgLTE4NCw2ICsxODksNyBAQCBwcml2YXRlOgogICAgIFFCYXNpY1RpbWVyIG1fdGltZW91dFRp
bWVyOwogICAgIFFXZWJGcmFtZSogbV90b3BMb2FkaW5nRnJhbWU7CiAgICAgV2ViQ29yZTo6RHVt
cFJlbmRlclRyZWUqIG1fZHJ0OworICAgIFFEUlRTdXBwb3J0KiBtX2RydFN1cHBvcnQ7CiAgICAg
UVdlYkhpc3RvcnkqIG1fd2ViSGlzdG9yeTsKIH07CiAKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51184</attachid>
            <date>2010-03-19 13:19:25 -0700</date>
            <delta_ts>2010-03-19 14:06:35 -0700</delta_ts>
            <desc>Updated Patch per Stylebot</desc>
            <filename>0001-Add-support-for-LayoutTestController-commands.patch</filename>
            <type>text/plain</type>
            <size>63284</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSA5YTcwZDRhZDUzMmZkYWM5YjRjOTM0ODc5MTRiMTkzNzBkYWUxZDgwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDE1IE1hciAyMDEwIDIyOjQ5OjI5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1
cHBvcnQgZm9yIExheW91dFRlc3RDb250cm9sbGVyIGNvbW1hbmRzOgogICAgICAgICAgIHNldFNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZAogICAgICAgICAgIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQKICAgICAgICAgICBleGVjQ29tbWFuZAogICAgICAgICAgIGlzQ29tbWFuZEVu
YWJsZWQKCiAgICAgICAgVW5za2lwIHRlc3RzOgogICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvc21h
cnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCiAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC8xOTA4
OS5odG1sCiAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtaW1hZ2UtaW4tYW5jaG9y
Lmh0bWwKICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2VuYWJsaW5nLWFuZC1zZWxlY3Rpb24t
Mi5odG1sCiAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1j
cmFzaC5odG1sCiAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFj
ZS1pbWctY3Jhc2guaHRtbAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdo
aXRlc3BhY2UuaHRtbAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1saW5lLmh0bWwK
ICAgICAgICBlZGl0aW5nL2RlbGV0aW5nLzUzMDAzNzkuaHRtbAogICAgICAgIGVkaXRpbmcvZGVs
ZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCiAgICAgICAgZWRpdGluZy9kZWxldGluZy9zbWFy
dC1kZWxldGUtMDA0Lmh0bWwKICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRt
bAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMi5odG1sCgogICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg0NAotLS0KIExheW91dFRlc3Rz
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOSArKwogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCAgICAgICAgICAgICAgICAgICAgfCAgIDE1IC0KIFdl
YkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCAr
CiBXZWJDb3JlL1dlYkNvcmUucHJvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDEgKwogV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
fCAgMTg4IC0tLS0tLS0tLS0KIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmggICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgMiArCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgODEgKy0tLS0tCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZV9wLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFdlYktpdC9xdC9BcGkvcXdl
YnNlY3VyaXR5b3JpZ2luLmNwcCAgICAgICAgICAgICAgIHwgICAxNSAtCiBXZWJLaXQvcXQvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjkgKysrKwogV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAgfCAgMzYzICsrKysr
KysrKysrKysrKysrKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0LmggICB8ICAgNzkgKysrKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5jcHAgICAgICAgIHwgICAxNCArLQogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmggICAgICAgICAgfCAgICAyICstCiBXZWJLaXQvcXQvdGVzdHMvcXdlYnBh
Z2UvdHN0X3F3ZWJwYWdlLmNwcCAgICAgICAgICB8ICAgMjAgKy0KIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1MCArKysKIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwIHwgICAyMSArLQogV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oICAgfCAgICAyICsKIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmNwcCAgIHwgICAxNSAr
LQogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuaCAgICAgfCAg
ICA2ICstCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAg
ICB8ICAgODEgKysrLS0KIC4uLi9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmggICAgIHwgICAgOCArLQogMjMgZmlsZXMgY2hhbmdlZCwgNjk2IGluc2VydGlvbnMoKyks
IDM3NiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaAoKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1MjBh
Mjc4Li5mNmUzZTdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTAtMDMtMTggIFJvYmVydCBI
b2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBMYXlvdXRUZXN0Q29udHJvbGxlciBj
b21tYW5kczoKKyAgICAgICAgICBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQKKyAgICAgICAg
ICBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkCisgICAgICAgICAgZXhlY0NvbW1h
bmQKKyAgICAgICAgICBpc0NvbW1hbmRFbmFibGVkCisKKyAgICAgICAgVW5za2lwIHRlc3RzOgor
ICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWVkaXRpbmctZGlzYWJsZWQuaHRtbAorICAg
ICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kLzE5MDg5Lmh0bWwKKyAgICAgICAgZWRpdGluZy9leGVj
Q29tbWFuZC9kZWxldGUtaW1hZ2UtaW4tYW5jaG9yLmh0bWwKKyAgICAgICAgZWRpdGluZy9leGVj
Q29tbWFuZC9lbmFibGluZy1hbmQtc2VsZWN0aW9uLTIuaHRtbAorICAgICAgICBlZGl0aW5nL3Nl
bGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWNyYXNoLmh0bWwKKyAgICAgICAgZWRpdGlu
Zy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1pbWctY3Jhc2guaHRtbAorICAgICAg
ICBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLmh0bWwKKyAgICAgICAg
ZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWxpbmUuaHRtbAorICAgICAgICBlZGl0aW5nL2RlbGV0
aW5nLzUzMDAzNzkuaHRtbAorICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0w
MDMuaHRtbAorICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDQuaHRtbAor
ICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRtbAorICAgICAgICBlZGl0aW5n
L3NlbGVjdGlvbi81MTk1MTY2LTIuaHRtbAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg0NAorCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBl
ZDoKKwogMjAxMC0wMy0xOSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CmluZGV4IDNhM2ZjMWQuLjNhMDNhMmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMjIy
LDkgKzIyMiw2IEBAIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFu
Lmh0bWwKICMgTWlzc2luZyBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoKQogZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1mcmFtZXMuaHRtbAogCi0jIE1pc3Np
bmcgbGF5b3V0VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoKQotZWRpdGluZy9leGVjQ29tbWFu
ZC9kZWxldGUtaW1hZ2UtaW4tYW5jaG9yLmh0bWwgCi0KICMgTWlzc2luZyBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRBbHdheXNBY2NlcHRDb29raWVzKCkKIGh0dHAvdGVzdHMvcGx1Z2lucy90aGly
ZC1wYXJ0eS1jb29raWUtYWNjZXB0LXBvbGljeS5odG1sCiAKQEAgLTI4Nyw3ICsyODQsNiBAQCBm
YXN0L3J1YnkvcnVieURPTS1yZW1vdmUtdGV4dDIuaHRtbAogCiAjIC0tLS0tLS0gZmFpbGluZyBl
ZGl0aW5nIHRlc3RzCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS10by1lbmQtb2YtcGFyYWdyYXBo
Lmh0bWwKLWVkaXRpbmcvZXhlY0NvbW1hbmQvZW5hYmxpbmctYW5kLXNlbGVjdGlvbi0yLmh0bWwK
IGVkaXRpbmcvZXhlY0NvbW1hbmQvbnNyZXNwb25kZXItaW5kZW50Lmh0bWwKIGVkaXRpbmcvZXhl
Y0NvbW1hbmQvbnNyZXNwb25kZXItb3V0ZGVudC5odG1sCiBlZGl0aW5nL2lucHV0L2VtYWNzLWN0
cmwtby5odG1sCkBAIC0xMDc2LDcgKzEwNzIsNiBAQCBmYXN0L2Zvcm1zL21lbnVsaXN0LXdpZHRo
LWNoYW5nZS5odG1sCiAjIHB1dCBpbnRvIHRoZSBza2lwcGVkIGxpc3QgZm9yIG5vdyB0byBoYXZl
IHNvbWUga2luZCBvZgogIyByZWZlcmVuY2UsIHNvIHdlIGRvbid0IGludHJvZHVjZSByZWdyZXNz
aW9ucy4KIGVkaXRpbmcvZGVsZXRpbmcvNTE0NDEzOS0yLmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcv
NTMwMDM3OS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1ibG9jay1tZXJnZS1jb250ZW50
cy0wMDEuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtYmxvY2stbWVyZ2UtY29udGVudHMt
MDE5Lmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWJsb2NrLW1lcmdlLWNvbnRlbnRzLTAy
MC5odG1sCkBAIC0xMDg3LDggKzEwODIsNiBAQCBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saW5l
LWVuZC13cy0wMDEuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGluZS1lbmQtd3MtMDAy
Lmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLXRvLXNlbGVjdC10YWJsZS5odG1sCiBlZGl0
aW5nL2RlbGV0aW5nL2RlbGV0aW9uVUktc2luZ2xlLWluc3RhbmNlLmh0bWwKLWVkaXRpbmcvZGVs
ZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCi1lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0
ZS0wMDQuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC80OTIwNDg4Lmh0bWwKIGVkaXRpbmcvZXhl
Y0NvbW1hbmQvNDkyMDc0Mi0xLmh0bWwKIGVkaXRpbmcvZXhlY0NvbW1hbmQvY3JlYXRlLWxpc3Qt
d2l0aC1oci5odG1sCkBAIC0xMTIwLDE1ICsxMTEzLDEyIEBAIGVkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS10ZXh0LTAwMy5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvcXVpcmtzLW1vZGUtYnItMS5o
dG1sCiBlZGl0aW5nL3NlbGVjdGlvbi80OTgzODU4Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzUx
MzY2OTYuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLmh0bWwKLWVkaXRpbmcvc2Vs
ZWN0aW9uLzUxOTUxNjYtMi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hZnRlci1saW5lLXdyYXAu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZW5kLW9mLWRvY3VtZW50Lmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uL21vdmUtbGVmdC1yaWdodC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxs
LTAwMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWxsLTAwMi5odG1sCiBlZGl0aW5n
L3NlbGVjdGlvbi9zZWxlY3QtYWxsLTAwMy5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qt
bGluZS5odG1sCiBlZGl0aW5nL3N0eWxlL2FwcGxlLXN0eWxlLWVkaXRhYmxlLW1peC5odG1sCiBl
ZGl0aW5nL3N0eWxlL2NyZWF0ZS1ibG9jay1mb3Itc3R5bGUtMDEyLmh0bWwKIGVkaXRpbmcvc3R5
bGUvZm9udC1mYW1pbHktd2l0aC1zcGFjZS5odG1sCkBAIC00NzQ0LDE1ICs0NzM0LDEwIEBAIGRv
bS94aHRtbC9sZXZlbDMvY29yZS9jYW5vbmljYWxmb3JtMDkueGh0bWwKIGVkaXRpbmcvZGVsZXRp
bmcvZGVsZXRlLWxpZ2F0dXJlLTAwMS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdh
dHVyZS0wMDIuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1cmUtMDAzLmh0bWwK
LWVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCi1lZGl0aW5nL2V4
ZWNDb21tYW5kLzE5MDg5Lmh0bWwKIGVkaXRpbmcvaW5zZXJ0aW5nLzU4MDM3MDYtMS5odG1sCiBl
ZGl0aW5nL2luc2VydGluZy81OTk0NDgwLTIuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGVz
LWR1cmluZy1wYWdlLWRyYWdzLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9nZXQtZGF0YS10ZXh0
LXBsYWluLWRyb3AuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFj
ZS1jcmFzaC5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWlt
Zy1jcmFzaC5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLmh0
bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2RyYWctc3RhcnQtZXZlbnQtY2xpZW50LXgteS5odG1sCiBl
ZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWJpZGkuaHRtbAogZWRpdGluZy9zZWxl
Y3Rpb24vaGl0LXRlc3QtYW5vbnltb3VzLmh0bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDYzMjM5YS4uOTk0NmVjNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MSBAQAorMjAxMC0wMy0xOCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0CisKKyAgICAgICAgKiBXZWJDb3JlLnBy
bzogQWRkIER1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKKwogMjAxMC0wMy0xOSAgSm9zZXBoIFBl
Y29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlk
IEtpbHplci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNv
cmUucHJvCmluZGV4IGM4YmQ3ZTYuLmRmMTEyMzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjA4Niw2ICsyMDg2LDcgQEAgU09V
UkNFUyArPSBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50
UXQuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNw
cCBcCisgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dC5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHAgXAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0LmNwcCBc
CiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
IFwKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9B
cGkvcXdlYmZyYW1lLmNwcAppbmRleCA4Njk2NDM3Li44NDJjMzM0IDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3Bw
CkBAIC04OCwxOTMgKzg4LDYgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCiBleHRlcm4gUV9HVUlfRVhQ
T1JUIGludCBxdF9kZWZhdWx0RHBpKCk7CiBRVF9FTkRfTkFNRVNQQUNFCiAKLXZvaWQgUVdFQktJ
VF9FWFBPUlQgcXRfZHJ0X3NldE1lZGlhVHlwZShRV2ViRnJhbWUqIHFmcmFtZSwgY29uc3QgUVN0
cmluZyYgdHlwZSkKLXsKLSAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2
YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUt
PnZpZXcoKTsKLSAgICB2aWV3LT5zZXRNZWRpYVR5cGUodHlwZSk7Ci0gICAgZnJhbWUtPmRvY3Vt
ZW50KCktPnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKLSAgICB2aWV3LT5mb3JjZUxheW91dCgpOwot
fQotCi1ib29sIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9oYXNEb2N1bWVudEVsZW1lbnQoUVdlYkZy
YW1lKiBxZnJhbWUpCi17Ci0gICAgcmV0dXJuIFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1l
KS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBP
UlQgcXRfZHJ0X3NldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKFFXZWJGcmFtZSogcWZyYW1l
LCBib29sIGVuYWJsZWQpCi17Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
RnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOwotICAgIEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250
cm9sbGVyKCk7Ci0gICAgaWYgKCFjb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0gICAgaWYg
KGVuYWJsZWQpCi0gICAgICAgIGNvbnRyb2xsZXItPmVuYWJsZVByb2ZpbGVyKCk7Ci0gICAgZWxz
ZQotICAgICAgICBjb250cm9sbGVyLT5kaXNhYmxlUHJvZmlsZXIoKTsKLSNlbmRpZgotfQotCi0v
LyBQYXVzZSBhIGdpdmVuIENTUyBhbmltYXRpb24gb3IgdHJhbnNpdGlvbiBvbiB0aGUgdGFyZ2V0
IG5vZGUgYXQgYSBzcGVjaWZpYyB0aW1lLgotLy8gSWYgdGhlIGFuaW1hdGlvbiBvciB0cmFuc2l0
aW9uIGlzIGFscmVhZHkgcGF1c2VkLCBpdCB3aWxsIHVwZGF0ZSBpdHMgcGF1c2UgdGltZS4KLS8v
IFRoaXMgbWV0aG9kIGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGVzdGluZyB0aGUg
Q1NTIGFuaW1hdGlvbiBhbmQgdHJhbnNpdGlvbiBzeXN0ZW0uCi1ib29sIFFXRUJLSVRfRVhQT1JU
IHF0X2RydF9wYXVzZUFuaW1hdGlvbihRV2ViRnJhbWUgKnFmcmFtZSwgY29uc3QgUVN0cmluZyAm
YW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCkKLXsK
LSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAg
aWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQW5pbWF0aW9uQ29udHJv
bGxlciogY29udHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xs
ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+
ZG9jdW1lbnQoKTsKLSAgICBRX0FTU0VSVChkb2MpOwotCi0gICAgTm9kZSogY29yZU5vZGUgPSBk
b2MtPmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgaWYgKCFjb3JlTm9kZSB8fCAhY29y
ZU5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBj
b250cm9sbGVyLT5wYXVzZUFuaW1hdGlvbkF0VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwgYW5p
bWF0aW9uTmFtZSwgdGltZSk7Ci19Ci0KLWJvb2wgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNl
VHJhbnNpdGlvbk9mUHJvcGVydHkoUVdlYkZyYW1lICpxZnJhbWUsIGNvbnN0IFFTdHJpbmcgJnBy
b3BlcnR5TmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCkKLXsKLSAg
ICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAgaWYg
KCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQW5pbWF0aW9uQ29udHJvbGxl
ciogY29udHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9j
dW1lbnQoKTsKLSAgICBRX0FTU0VSVChkb2MpOwotCi0gICAgTm9kZSogY29yZU5vZGUgPSBkb2Mt
PmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5v
ZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjb250
cm9sbGVyLT5wYXVzZVRyYW5zaXRpb25BdFRpbWUoY29yZU5vZGUtPnJlbmRlcmVyKCksIHByb3Bl
cnR5TmFtZSwgdGltZSk7Ci19Ci0KLS8vIFBhdXNlIGEgZ2l2ZW4gU1ZHIGFuaW1hdGlvbiBvbiB0
aGUgdGFyZ2V0IG5vZGUgYXQgYSBzcGVjaWZpYyB0aW1lLgotLy8gVGhpcyBtZXRob2QgaXMgb25s
eSBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0ZXN0aW5nIHRoZSBTVkcgYW5pbWF0aW9uIHN5c3Rl
bS4KLWJvb2wgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFt
ZSAqcWZyYW1lLCBjb25zdCBRU3RyaW5nICZhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0
IFFTdHJpbmcgJmVsZW1lbnRJZCkKLXsKLSNpZiAhRU5BQkxFKFNWRykKLSAgICByZXR1cm4gZmFs
c2U7Ci0jZWxzZQotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZy
YW1lKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBEb2N1
bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgUV9BU1NFUlQoZG9jKTsKLQotICAg
IGlmICghZG9jLT5zdmdFeHRlbnNpb25zKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IE5vZGUqIGNvcmVOb2RlID0gZG9jLT5nZXRFbGVtZW50QnlJZChhbmltYXRpb25JZCk7Ci0gICAg
aWYgKCFjb3JlTm9kZSB8fCAhU1ZHU01JTEVsZW1lbnQ6OmlzU01JTEVsZW1lbnQoY29yZU5vZGUp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZG9jLT5hY2Nlc3NTVkdFeHRl
bnNpb25zKCktPnNhbXBsZUFuaW1hdGlvbkF0VGltZShlbGVtZW50SWQsIHN0YXRpY19jYXN0PFNW
R1NNSUxFbGVtZW50Kj4oY29yZU5vZGUpLCB0aW1lKTsKLSNlbmRpZgotfQotCi0vLyBSZXR1cm5z
IHRoZSB0b3RhbCBudW1iZXIgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9ucyAoaW5jbHVk
ZXMgYm90aCBDU1MgdHJhbnNpdGlvbnMgYW5kIENTUyBhbmltYXRpb25zKS4KLWludCBRV0VCS0lU
X0VYUE9SVCBxdF9kcnRfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFFXZWJGcmFtZSAqcWZyYW1l
KQotewotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsK
LSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBbmltYXRpb25D
b250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOwotICAgIGlmICghY29u
dHJvbGxlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGNvbnRyb2xsZXIt
Pm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0
X2RydF9jbGVhckZyYW1lTmFtZShRV2ViRnJhbWUqIHFGcmFtZSkKLXsKLSAgICBGcmFtZSogZnJh
bWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgZnJhbWUtPnRyZWUoKS0+
Y2xlYXJOYW1lKCk7Ci19Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfamF2YVNjcmlwdE9i
amVjdHNDb3VudCgpCi17Ci0gICAgcmV0dXJuIEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9i
YWxEYXRhKCktPmhlYXAuZ2xvYmFsT2JqZWN0Q291bnQoKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VY
UE9SVCBxdF9kcnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCkKLXsKLSAgICBnY0NvbnRyb2xs
ZXIoKS5nYXJiYWdlQ29sbGVjdE5vdygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2Ry
dF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRp
bERvbmUpCi17Ci0gICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRo
cmVhZEZvckRlYnVnZ2luZyh3YWl0VW50aWxEb25lKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdmFs
dWUgb2YgY291bnRlciBpbiB0aGUgZWxlbWVudCBzcGVjaWZpZWQgYnkgXGEgaWQuCi1RU3RyaW5n
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9jb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChRV2ViRnJh
bWUqIHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gUVdl
YkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQg
PSBmcmFtZS0+ZG9jdW1lbnQoKSkgewotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1l
bnQtPmdldEVsZW1lbnRCeUlkKGlkKTsKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmNvdW50ZXJW
YWx1ZUZvckVsZW1lbnQoZWxlbWVudCk7Ci0gICAgfQotICAgIHJldHVybiBRU3RyaW5nKCk7Ci19
Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFFX
ZWJGcmFtZSogcUZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhl
aWdodCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFt
ZSk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgRWxlbWVudCog
ZWxlbWVudCA9IGZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmco
aWQpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVy
biBQcmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KGVsZW1lbnQsIEZsb2F0U2l6ZSh3
aWR0aCwgaGVpZ2h0KSk7Ci19Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfbnVtYmVyT2ZQ
YWdlcyhRV2ViRnJhbWUqIHFGcmFtZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLXsKLSAg
ICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYg
KCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6
bnVtYmVyT2ZQYWdlcyhmcmFtZSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLX0KLQotLy8g
U3VzcGVuZCBhY3RpdmUgRE9NIG9iamVjdHMgaW4gdGhpcyBmcmFtZS4KLXZvaWQgUVdFQktJVF9F
WFBPUlQgcXRfc3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBxRnJhbWUpCi17Ci0g
ICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGlm
IChmcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN1c3BlbmRB
Y3RpdmVET01PYmplY3RzKCk7Ci19Ci0gICAgICAgICAgICAKLS8vIFJlc3VtZSBhY3RpdmUgRE9N
IG9iamVjdHMgaW4gdGhpcyBmcmFtZS4KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfcmVzdW1lQWN0
aXZlRE9NT2JqZWN0cyhRV2ViRnJhbWUqIHFGcmFtZSkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBR
V2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKGZyYW1lLT5kb2N1bWVudCgp
KQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpOwot
fSAgICAgICAgICAgICAgICAgICAgICAgIAotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9l
dmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChRV2ViRnJhbWUqIHFGcmFtZSwgaW50IHdvcmxk
SWQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJh
bWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKGZyYW1lKQotICAgICAgICBKU0M6OkpT
VmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0SW5Xb3JsZChtYWlu
VGhyZWFkTm9ybWFsV29ybGQoKSwgc2NyaXB0LCB0cnVlKS5qc1ZhbHVlKCk7Ci19Ci0KIHN0YXRp
YyBib29sIHdlYmZyYW1lX3Njcm9sbE92ZXJmbG93KFdlYkNvcmU6OkZyYW1lKiBmcmFtZSwgaW50
IGR4LCBpbnQgZHksIGNvbnN0IFFQb2ludCYgcG9zKQogewogICAgIGlmICghZnJhbWUgfHwgIWZy
YW1lLT5kb2N1bWVudCgpIHx8ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkpCkBAIC0zNTQsNyArMTY3
LDYgQEAgdm9pZCBRV0VCS0lUX0VYUE9SVCBxdHdlYmtpdF93ZWJmcmFtZV9zY3JvbGxSZWN1cnNp
dmVseShRV2ViRnJhbWUqIHFGcmFtZSwgaW50IGQKICAgICB9CiB9CiAKLQogUVdlYkZyYW1lRGF0
YTo6UVdlYkZyYW1lRGF0YShXZWJDb3JlOjpQYWdlKiBwYXJlbnRQYWdlLCBXZWJDb3JlOjpGcmFt
ZSogcGFyZW50RnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkhU
TUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJGcmFtZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgZnJhbWVOYW1lKQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgK
aW5kZXggY2U5ODA1Yi4uNzNjYzAzZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJh
bWUuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNs
YXNzIFFXZWJTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFFXZWJFbGVtZW50OwogY2xhc3MgUVdlYkVs
ZW1lbnRDb2xsZWN0aW9uOwogCitjbGFzcyBRRFJUU3VwcG9ydDsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBXaWRnZXRQcml2YXRlOwogICAgIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50
UXQ7CkBAIC0yMjUsNiArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUVdlYlBh
Z2U7CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlUHJpdmF0ZTsKICAgICBmcmllbmQgY2xhc3Mg
UVdlYkZyYW1lUHJpdmF0ZTsKKyAgICBmcmllbmQgY2xhc3MgUURSVFN1cHBvcnQ7CiAgICAgZnJp
ZW5kIGNsYXNzIFdlYkNvcmU6OldpZGdldFByaXZhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkNocm9t
ZUNsaWVudFF0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCBhZDgxMjI3Li45OTg0NjUyIDEwMDY0NAotLS0g
YS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcApAQCAtMTE5LDg2ICsxMTksNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
dm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfb3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKQot
ewotICAgIFBsdWdpbkRhdGFiYXNlKiBkYiA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVn
aW5zKC8qIHBvcHVsYXRlICovIGZhbHNlKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwot
ICAgIFN0cmluZyBxdFBhdGgocWdldGVudigiUVRXRUJLSVRfUExVR0lOX1BBVEgiKS5kYXRhKCkp
OwotICAgIHF0UGF0aC5zcGxpdChVQ2hhcignOicpLCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBm
YWxzZSwgcGF0aHMpOwotCi0gICAgZGItPnNldFBsdWdpbkRpcmVjdG9yaWVzKHBhdGhzKTsKLSAg
ICBkYi0+cmVmcmVzaCgpOwotfQotCi1pbnQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3dvcmtlclRo
cmVhZENvdW50KCkKLXsKLSNpZiBFTkFCTEUoV09SS0VSUykKLSAgICByZXR1cm4gV2ViQ29yZTo6
V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRDb3VudCgpOwotI2Vsc2UKLSAgICByZXR1cm4gMDsK
LSNlbmRpZgotfQotCiBib29sIFFXZWJQYWdlUHJpdmF0ZTo6ZHJ0UnVuID0gZmFsc2U7Ci12b2lk
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9ydW4oYm9vbCBiKQotewotICAgIFFXZWJQYWdlUHJpdmF0
ZTo6ZHJ0UnVuID0gYjsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfc2V0RnJhbWVT
ZXRGbGF0dGVuaW5nRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9vbCBlbmFibGVkKQotewotICAg
IFFXZWJQYWdlUHJpdmF0ZTo6Y29yZShwYWdlKS0+c2V0dGluZ3MoKS0+c2V0RnJhbWVTZXRGbGF0
dGVuaW5nRW5hYmxlZChlbmFibGVkKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF93ZWJw
YWdlX3NldEdyb3VwTmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0cmluZyYgZ3JvdXBOYW1l
KQotewotICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXRHcm91cE5hbWUoZ3JvdXBOYW1lKTsK
LX0KLQotUVN0cmluZyBRV0VCS0lUX0VYUE9SVCBxdF93ZWJwYWdlX2dyb3VwTmFtZShRV2ViUGFn
ZSogcGFnZSkKLXsKLSAgICByZXR1cm4gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmdyb3VwTmFtZSgp
OwotfQotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0
X3dlYmluc3BlY3Rvcl9leGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBwYWdlLCBsb25nIGNhbGxJZCwg
Y29uc3QgUVN0cmluZyYgc2NyaXB0KQotewotICAgIGlmICghcGFnZS0+aGFuZGxlKCktPnBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHBhZ2UtPmhhbmRs
ZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVzdEluRnJvbnRl
bmQoY2FsbElkLCBzY3JpcHQpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF93ZWJp
bnNwZWN0b3JfY2xvc2UoUVdlYlBhZ2UqIHBhZ2UpCi17Ci0gICAgaWYgKCFwYWdlLT5oYW5kbGUo
KS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICByZXR1cm47Ci0gICAgcGFn
ZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y2xvc2UoKTsKLX0KLQot
dm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfd2ViaW5zcGVjdG9yX3Nob3coUVdlYlBhZ2UqIHBh
Z2UpCi17Ci0gICAgaWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpKQotICAgICAgICByZXR1cm47Ci0gICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+c2hvdygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9z
ZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxlZCkK
LXsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gcGFnZS0+aGFuZGxlKCkt
PnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAg
ICAgIHJldHVybjsKLSAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAgY29udHJvbGxlci0+c3RhcnRU
aW1lbGluZVByb2ZpbGVyKCk7Ci0gICAgZWxzZQotICAgICAgICBjb250cm9sbGVyLT5zdG9wVGlt
ZWxpbmVQcm9maWxlcigpOwotfQotI2VuZGlmCi0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0
X2VuYWJsZUNhcmV0QnJvd3NpbmcoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgdmFsdWUpCi17Ci0gICAg
cGFnZS0+aGFuZGxlKCktPnBhZ2UtPnNldHRpbmdzKCktPnNldENhcmV0QnJvd3NpbmdFbmFibGVk
KHZhbHVlKTsKLX0KIAogY2xhc3MgUVdlYlBhZ2VXaWRnZXRDbGllbnQgOiBwdWJsaWMgUVdlYlBh
Z2VDbGllbnQgewogcHVibGljOgpAQCAtNDYzLDYgKzM4NCw4IEBAIFFXZWJQYWdlUHJpdmF0ZTo6
UVdlYlBhZ2VQcml2YXRlKFFXZWJQYWdlICpxcSkKICAgICBwbHVnaW5GYWN0b3J5ID0gMDsKICAg
ICBpbnNpZGVPcGVuQ2FsbCA9IGZhbHNlOwogICAgIGZvcndhcmRVbnN1cHBvcnRlZENvbnRlbnQg
PSBmYWxzZTsKKyAgICBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSBmYWxzZTsKKyAgICBzZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gZmFsc2U7CiAgICAgZWRpdGFibGUgPSBmYWxz
ZTsKICAgICB1c2VGaXhlZExheW91dCA9IGZhbHNlOwogICAgIGxpbmtQb2xpY3kgPSBRV2ViUGFn
ZTo6RG9udERlbGVnYXRlTGlua3M7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKaW5kZXggMDc2ZmI3Yy4uODBhNjA3OCAxMDA2
NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuaApAQCAtMzY1LDYgKzM2NSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpRTmV0d29ya1Jl
cGx5SGFuZGxlcjsKKyAgICBmcmllbmQgY2xhc3MgUURSVFN1cHBvcnQ7CiB9OwogCiBRX0RFQ0xB
UkVfT1BFUkFUT1JTX0ZPUl9GTEFHUyhRV2ViUGFnZTo6RmluZEZsYWdzKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaApp
bmRleCAxNWRkZmIyLi5kOGJhNWRkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
X3AuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaApAQCAtMTYyLDYgKzE2Miw4IEBA
IHB1YmxpYzoKICAgICBRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm5ldHdvcmtNYW5hZ2VyOwogCiAg
ICAgYm9vbCBmb3J3YXJkVW5zdXBwb3J0ZWRDb250ZW50OworICAgIGJvb2wgc21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkOworICAgIGJvb2wgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDsK
ICAgICBRV2ViUGFnZTo6TGlua0RlbGVnYXRpb25Qb2xpY3kgbGlua1BvbGljeTsKIAogICAgIFFT
aXplIHZpZXdwb3J0U2l6ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5
b3JpZ2luLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcAppbmRleCA2
YzI2YmQ3Li5iNjlmMjRkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9y
aWdpbi5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCkBAIC0z
MCwyMSArMzAsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBRV0VCS0lU
X0VYUE9SVCBxdF9kcnRfd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBz
b3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFT
dHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykK
LXsKLSAgICBTZWN1cml0eU9yaWdpbjo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbigqU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90
b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci19Ci0K
LXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3Jlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygp
Ci17Ci0gICAgU2VjdXJpdHlPcmlnaW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwot
fQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9zZXREb21haW5SZWxheGF0aW9uRm9yYmlk
ZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpCi17
Ci0gICAgU2VjdXJpdHlPcmlnaW46OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxT
Y2hlbWUoZm9yYmlkZGVuLCBzY2hlbWUpOwotfQotCiAvKiEKICAgICBcY2xhc3MgUVdlYlNlY3Vy
aXR5T3JpZ2luCiAgICAgXHNpbmNlIDQuNQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxv
ZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYjJkMmIyOC4uYWViMGU5YSAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzIgQEAKKzIwMTAtMDMtMTggIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcg
Y2xhc3MgUURSVFN1cHBvcnQuIFRoaXMgbm93IGhvdXNlcyBhbGwgdGhlIHF0X2RydF8qIGZ1bmN0
aW9ucworICAgICAgICB0aGF0IHByZXZpb3VzbHkgbGl2ZWQgaW4gcXdlYnBhZ2UgYW5kIHF3ZWJm
cmFtZS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIgY29t
bWFuZHM6CisgICAgICAgICAgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkCisgICAgICAgICAg
c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZAorICAgICAgICAgIGV4ZWNDb21tYW5k
CisgICAgICAgICAgaXNDb21tYW5kRW5hYmxlZAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg0NAorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5j
cHA6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAg
KiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFFEUlRTdXBwb3J0OjpR
RFJUU3VwcG9ydCk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6flFEUlRTdXBwb3J0KToKKyAgICAg
ICAgKFFEUlRTdXBwb3J0OjpvdmVyd3JpdGVQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgIChR
RFJUU3VwcG9ydDo6d29ya2VyVGhyZWFkQ291bnQpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OnJ1
bik6CisgICAgICAgIChRRFJUU3VwcG9ydDo6c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZCk6
CisgICAgICAgIChRRFJUU3VwcG9ydDo6d2ViUGFnZVNldEdyb3VwTmFtZSk6CisgICAgICAgIChR
RFJUU3VwcG9ydDo6d2ViUGFnZUdyb3VwTmFtZSk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6d2Vi
SW5zcGVjdG9yRXhlY3V0ZVNjcmlwdCk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6d2ViSW5zcGVj
dG9yQ2xvc2UpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OndlYkluc3BlY3RvclNob3cpOgorICAg
ICAgICAoUURSVFN1cHBvcnQ6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAg
IChRRFJUU3VwcG9ydDo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKToKKyAgICAgICAgKFFEUlRT
dXBwb3J0Ojppc0NvbW1hbmRFbmFibGVkKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpoYXNEb2N1
bWVudEVsZW1lbnQpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OnNldEphdmFTY3JpcHRQcm9maWxp
bmdFbmFibGVkKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpwYXVzZUFuaW1hdGlvbik6CisgICAg
ICAgIChRRFJUU3VwcG9ydDo6cGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eSk6CisgICAgICAgIChR
RFJUU3VwcG9ydDo6cGF1c2VTVkdBbmltYXRpb24pOgorICAgICAgICAoUURSVFN1cHBvcnQ6Om51
bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6Y2xlYXJGcmFt
ZU5hbWUpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OmphdmFTY3JpcHRPYmplY3RzQ291bnQpOgor
ICAgICAgICAoUURSVFN1cHBvcnQ6OmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0KToKKyAgICAgICAg
KFFEUlRTdXBwb3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKToK
KyAgICAgICAgKFFEUlRTdXBwb3J0Ojpjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZCk6CisgICAg
ICAgIChRRFJUU3VwcG9ydDo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKFFE
UlRTdXBwb3J0OjpudW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpzdXNwZW5k
QWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6cmVzdW1lQWN0aXZlRE9N
T2JqZWN0cyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVk
V29ybGQpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4p
OgorICAgICAgICAoUURSVFN1cHBvcnQ6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cyk6Cisg
ICAgICAgIChRRFJUU3VwcG9ydDo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNj
aGVtZSk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVk
KToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjplbmFibGVDYXJldEJyb3dzaW5nKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaDogQWRkZWQuCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50UXQ6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6dG9nZ2xlU21hcnRJbnNlcnREZWxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKyAgICAg
ICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQ
YWdlOjptdWx0aXBsZVBhZ2VHcm91cHNBbmRMb2NhbFN0b3JhZ2UpOgorICAgICAgICAodHN0X1FX
ZWJQYWdlOjpwcm90ZWN0QmluZGluZ3NSdW50aW1lT2JqZWN0c0Zyb21Db2xsZWN0b3IpOgorCiAy
MDEwLTAzLTE4ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwIGIvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMjVjMTBjZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCkBAIC0wLDAgKzEsMzYz
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2Jl
cnRob2dhbi5uZXQ+CisgICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDksMjAxMCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgorICAgIENvcHlyaWdodCAoQykgMjAw
NyBBcHBsZSBJbmMuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkR1bXBSZW5k
ZXJUcmVlU3VwcG9ydC5oIgorCisjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKKyNpbmNsdWRlICJD
b250ZXh0TWVudUNsaWVudFF0LmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgi
CisjaW5jbHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkZv
Y3VzQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCisjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJv
bGxlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNs
dWRlICJQbHVnaW5EYXRhYmFzZS5oIgorI2luY2x1ZGUgIlByaW50Q29udGV4dC5oIgorI2luY2x1
ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisKKyNpbmNsdWRl
ICJxd2VicGFnZS5oIgorI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKKyNpbmNsdWRlICJxd2ViZnJh
bWUuaCIKKyNpbmNsdWRlICJxd2ViZnJhbWVfcC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworUURSVFN1cHBvcnQ6OlFEUlRTdXBwb3J0KCkKK3sKKyAgICBydW4oZmFsc2UpOworfQor
CitRRFJUU3VwcG9ydDo6flFEUlRTdXBwb3J0KCkKK3sKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6
b3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKQoreworICAgIFBsdWdpbkRhdGFiYXNlKiBkYiA9
IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKC8qIHBvcHVsYXRlICovIGZhbHNlKTsK
KworICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOworICAgIFN0cmluZyBxdFBhdGgocWdldGVudigi
UVRXRUJLSVRfUExVR0lOX1BBVEgiKS5kYXRhKCkpOworICAgIHF0UGF0aC5zcGxpdChVQ2hhcign
OicpLCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBmYWxzZSwgcGF0aHMpOworCisgICAgZGItPnNl
dFBsdWdpbkRpcmVjdG9yaWVzKHBhdGhzKTsKKyAgICBkYi0+cmVmcmVzaCgpOworfQorCitpbnQg
UURSVFN1cHBvcnQ6OndvcmtlclRocmVhZENvdW50KCkKK3sKKyNpZiBFTkFCTEUoV09SS0VSUykK
KyAgICByZXR1cm4gV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRDb3VudCgpOwor
I2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit2b2lkIFFEUlRTdXBwb3J0OjpydW4o
Ym9vbCBiKQoreworICAgIFFXZWJQYWdlUHJpdmF0ZTo6ZHJ0UnVuID0gYjsKK30KKwordm9pZCBR
RFJUU3VwcG9ydDo6c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChRV2ViUGFnZSogcGFnZSwg
Ym9vbCBlbmFibGVkKQoreworICAgIFFXZWJQYWdlUHJpdmF0ZTo6Y29yZShwYWdlKS0+c2V0dGlu
Z3MoKS0+c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChlbmFibGVkKTsKK30KKwordm9pZCBR
RFJUU3VwcG9ydDo6d2ViUGFnZVNldEdyb3VwTmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0
cmluZyYgZ3JvdXBOYW1lKQoreworICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXRHcm91cE5h
bWUoZ3JvdXBOYW1lKTsKK30KKworUVN0cmluZyBRRFJUU3VwcG9ydDo6d2ViUGFnZUdyb3VwTmFt
ZShRV2ViUGFnZSogcGFnZSkKK3sKKyAgICByZXR1cm4gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmdy
b3VwTmFtZSgpOworfQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKK3ZvaWQgUURSVFN1cHBvcnQ6
OndlYkluc3BlY3RvckV4ZWN1dGVTY3JpcHQoUVdlYlBhZ2UqIHBhZ2UsIGxvbmcgY2FsbElkLCBj
b25zdCBRU3RyaW5nJiBzY3JpcHQpCit7CisgICAgaWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+aGFuZGxl
KCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVu
ZChjYWxsSWQsIHNjcmlwdCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OndlYkluc3BlY3RvckNs
b3NlKFFXZWJQYWdlKiBwYWdlKQoreworICAgIGlmICghcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2UtPmhhbmRsZSgp
LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNsb3NlKCk7Cit9CisKK3ZvaWQgUURSVFN1
cHBvcnQ6OndlYkluc3BlY3RvclNob3coUVdlYlBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKCFwYWdl
LT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICByZXR1cm47
CisgICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygp
OworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoUVdl
YlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBj
b250cm9sbGVyID0gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsK
KyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoZW5hYmxlZCkK
KyAgICAgICAgY29udHJvbGxlci0+c3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7CisgICAgZWxzZQor
ICAgICAgICBjb250cm9sbGVyLT5zdG9wVGltZWxpbmVQcm9maWxlcigpOworfQorCit2b2lkIFFE
UlRTdXBwb3J0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0
IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQoreworICAgIHBhZ2UtPmhhbmRs
ZSgpLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRv
cigpLT5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOworfQorCitib29sIFFEUlRTdXBwb3J0
Ojppc0NvbW1hbmRFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBuYW1lKQor
eworICAgIHJldHVybiBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsK
K30KKworI2VuZGlmCisKK2Jvb2wgUURSVFN1cHBvcnQ6Omhhc0RvY3VtZW50RWxlbWVudChRV2Vi
RnJhbWUqIHFmcmFtZSkKK3sKKyAgICByZXR1cm4gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJh
bWUpLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKK30KKwordm9pZCBRRFJUU3VwcG9y
dDo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoUVdlYkZyYW1lKiBxZnJhbWUsIGJvb2wg
ZW5hYmxlZCkKK3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBGcmFtZSog
ZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7CisgICAgSW5zcGVjdG9yQ29u
dHJvbGxlciogY29udHJvbGxlciA9IGZyYW1lLT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIo
KTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoZW5hYmxl
ZCkKKyAgICAgICAgY29udHJvbGxlci0+ZW5hYmxlUHJvZmlsZXIoKTsKKyAgICBlbHNlCisgICAg
ICAgIGNvbnRyb2xsZXItPmRpc2FibGVQcm9maWxlcigpOworI2VuZGlmCit9CisKKy8vIFBhdXNl
IGEgZ2l2ZW4gQ1NTIGFuaW1hdGlvbiBvciB0cmFuc2l0aW9uIG9uIHRoZSB0YXJnZXQgbm9kZSBh
dCBhIHNwZWNpZmljIHRpbWUuCisvLyBJZiB0aGUgYW5pbWF0aW9uIG9yIHRyYW5zaXRpb24gaXMg
YWxyZWFkeSBwYXVzZWQsIGl0IHdpbGwgdXBkYXRlIGl0cyBwYXVzZSB0aW1lLgorLy8gVGhpcyBt
ZXRob2QgaXMgb25seSBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0ZXN0aW5nIHRoZSBDU1MgYW5p
bWF0aW9uIGFuZCB0cmFuc2l0aW9uIHN5c3RlbS4KK2Jvb2wgUURSVFN1cHBvcnQ6OnBhdXNlQW5p
bWF0aW9uKFFXZWJGcmFtZSAqcWZyYW1lLCBjb25zdCBRU3RyaW5nICZhbmltYXRpb25OYW1lLCBk
b3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVudElkKQoreworICAgIEZyYW1lKiBmcmFt
ZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKKyAgICBpZiAoIWZyYW1lKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVy
ID0gZnJhbWUtPmFuaW1hdGlvbigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworICAg
IFFfQVNTRVJUKGRvYyk7CisKKyAgICBOb2RlKiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5
SWQoZWxlbWVudElkKTsKKyAgICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+cmVuZGVyZXIo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNvbnRyb2xsZXItPnBhdXNl
QW5pbWF0aW9uQXRUaW1lKGNvcmVOb2RlLT5yZW5kZXJlcigpLCBhbmltYXRpb25OYW1lLCB0aW1l
KTsKK30KKworYm9vbCBRRFJUU3VwcG9ydDo6cGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eShRV2Vi
RnJhbWUgKnFmcmFtZSwgY29uc3QgUVN0cmluZyAmcHJvcGVydHlOYW1lLCBkb3VibGUgdGltZSwg
Y29uc3QgUVN0cmluZyAmZWxlbWVudElkKQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFt
ZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUtPmFu
aW1hdGlvbigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIFFfQVNTRVJUKGRv
Yyk7CisKKyAgICBOb2RlKiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElk
KTsKKyAgICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNvbnRyb2xsZXItPnBhdXNlVHJhbnNpdGlvbkF0
VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwgcHJvcGVydHlOYW1lLCB0aW1lKTsKK30KKworLy8g
UGF1c2UgYSBnaXZlbiBTVkcgYW5pbWF0aW9uIG9uIHRoZSB0YXJnZXQgbm9kZSBhdCBhIHNwZWNp
ZmljIHRpbWUuCisvLyBUaGlzIG1ldGhvZCBpcyBvbmx5IGludGVuZGVkIHRvIGJlIHVzZWQgZm9y
IHRlc3RpbmcgdGhlIFNWRyBhbmltYXRpb24gc3lzdGVtLgorYm9vbCBRRFJUU3VwcG9ydDo6cGF1
c2VTVkdBbmltYXRpb24oUVdlYkZyYW1lICpxZnJhbWUsIGNvbnN0IFFTdHJpbmcgJmFuaW1hdGlv
bklkLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVudElkKQoreworI2lmICFFTkFC
TEUoU1ZHKQorICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisgICAgRnJhbWUqIGZyYW1lID0gUVdl
YkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAg
ICBRX0FTU0VSVChkb2MpOworCisgICAgaWYgKCFkb2MtPnN2Z0V4dGVuc2lvbnMoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgTm9kZSogY29yZU5vZGUgPSBkb2MtPmdldEVsZW1lbnRC
eUlkKGFuaW1hdGlvbklkKTsKKyAgICBpZiAoIWNvcmVOb2RlIHx8ICFTVkdTTUlMRWxlbWVudDo6
aXNTTUlMRWxlbWVudChjb3JlTm9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiBkb2MtPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+c2FtcGxlQW5pbWF0aW9uQXRUaW1lKGVs
ZW1lbnRJZCwgc3RhdGljX2Nhc3Q8U1ZHU01JTEVsZW1lbnQqPihjb3JlTm9kZSksIHRpbWUpOwor
I2VuZGlmCit9CisKKy8vIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBjdXJyZW50bHkgcnVu
bmluZyBhbmltYXRpb25zIChpbmNsdWRlcyBib3RoIENTUyB0cmFuc2l0aW9ucyBhbmQgQ1NTIGFu
aW1hdGlvbnMpLgoraW50IFFEUlRTdXBwb3J0OjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoUVdl
YkZyYW1lICpxZnJhbWUpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6
Y29yZShxZnJhbWUpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7
CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gY29udHJvbGxlci0+bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7Cit9CisKK3ZvaWQgUURS
VFN1cHBvcnQ6OmNsZWFyRnJhbWVOYW1lKFFXZWJGcmFtZSogcUZyYW1lKQoreworICAgIEZyYW1l
KiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKKyAgICBmcmFtZS0+dHJl
ZSgpLT5jbGVhck5hbWUoKTsKK30KKworaW50IFFEUlRTdXBwb3J0OjpqYXZhU2NyaXB0T2JqZWN0
c0NvdW50KCkKK3sKKyAgICByZXR1cm4gSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERh
dGEoKS0+aGVhcC5nbG9iYWxPYmplY3RDb3VudCgpOworfQorCit2b2lkIFFEUlRTdXBwb3J0Ojpn
YXJiYWdlQ29sbGVjdG9yQ29sbGVjdCgpCit7CisgICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNv
bGxlY3ROb3coKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6Z2FyYmFnZUNvbGxlY3RvckNvbGxl
Y3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpCit7CisgICAgZ2NDb250cm9s
bGVyKCkuZ2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZEZvckRlYnVnZ2luZyh3YWl0VW50
aWxEb25lKTsKK30KKworLy8gUmV0dXJucyB0aGUgdmFsdWUgb2YgY291bnRlciBpbiB0aGUgZWxl
bWVudCBzcGVjaWZpZWQgYnkgXGEgaWQuCitRU3RyaW5nIFFEUlRTdXBwb3J0Ojpjb3VudGVyVmFs
dWVGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQpCit7
CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOworICAg
IGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkgeworICAgICAgICBF
bGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQtPmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OmNvdW50ZXJWYWx1ZUZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgfQor
ICAgIHJldHVybiBRU3RyaW5nKCk7Cit9CisKK2ludCBRRFJUU3VwcG9ydDo6cGFnZU51bWJlckZv
ckVsZW1lbnRCeUlkKFFXZWJGcmFtZSogcUZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCwgZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2
YXRlOjpjb3JlKHFGcmFtZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIC0xOwor
CisgICAgRWxlbWVudCogZWxlbWVudCA9IGZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJ
ZChBdG9taWNTdHJpbmcoaWQpKTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiAt
MTsKKworICAgIHJldHVybiBQcmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KGVsZW1l
bnQsIEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Cit9CisKK2ludCBRRFJUU3VwcG9ydDo6bnVt
YmVyT2ZQYWdlcyhRV2ViRnJhbWUqIHFGcmFtZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkK
K3sKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Cisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIFByaW50Q29u
dGV4dDo6bnVtYmVyT2ZQYWdlcyhmcmFtZSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKK30K
KworLy8gU3VzcGVuZCBhY3RpdmUgRE9NIG9iamVjdHMgaW4gdGhpcyBmcmFtZS4KK3ZvaWQgUURS
VFN1cHBvcnQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKFFXZWJGcmFtZSogcUZyYW1lKQorewor
ICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKKyAgICBp
ZiAoZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdXNwZW5k
QWN0aXZlRE9NT2JqZWN0cygpOworfQorCisvLyBSZXN1bWUgYWN0aXZlIERPTSBvYmplY3RzIGlu
IHRoaXMgZnJhbWUuCit2b2lkIFFEUlRTdXBwb3J0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKFFX
ZWJGcmFtZSogcUZyYW1lKQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6
OmNvcmUocUZyYW1lKTsKKyAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIGZyYW1l
LT5kb2N1bWVudCgpLT5yZXN1bWVBY3RpdmVET01PYmplY3RzKCk7Cit9CisKK3ZvaWQgUURSVFN1
cHBvcnQ6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKFFXZWJGcmFtZSogcUZyYW1lLCBp
bnQgd29ybGRJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KQoreworICAgIEZyYW1lKiBmcmFtZSA9
IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKKyAgICBpZiAoZnJhbWUpCisgICAgICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHRJbldv
cmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzY3JpcHQsIHRydWUpLmpzVmFsdWUoKTsKK30K
Kwordm9pZCBRRFJUU3VwcG9ydDo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3Ry
aW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNv
bnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucykKK3sKKyAgICBTZWN1cml0eU9yaWdpbjo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbigq
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRp
b25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7
Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpCit7
CisgICAgU2VjdXJpdHlPcmlnaW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOworfQor
Cit2b2lkIFFEUlRTdXBwb3J0OjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2No
ZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpCit7CisgICAgU2VjdXJp
dHlPcmlnaW46OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlk
ZGVuLCBzY2hlbWUpOworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpzZXRTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQoUVdlYlBhZ2UgKnBhZ2UsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICBwYWdlLT5kLT5z
bWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSBlbmFibGVkOworfQorCisKK3ZvaWQgUURSVFN1cHBv
cnQ6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoUVdlYlBhZ2UgKnBhZ2UsIGJv
b2wgZW5hYmxlZCkKK3sKKyAgICBwYWdlLT5kLT5zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkID0gZW5hYmxlZDsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6ZW5hYmxlQ2FyZXRCcm93c2lu
ZyhRV2ViUGFnZSogcGFnZSwgYm9vbCB2YWx1ZSkKK3sKKyAgICBwYWdlLT5oYW5kbGUoKS0+cGFn
ZS0+c2V0dGluZ3MoKS0+c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQodmFsdWUpOworfQorCit2b2lk
IFFEUlRTdXBwb3J0OjpzZXRNZWRpYVR5cGUoUVdlYkZyYW1lKiBxZnJhbWUsIGNvbnN0IFFTdHJp
bmcmIHR5cGUpCit7CisgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0
ZTo6Y29yZShxZnJhbWUpOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52
aWV3KCk7CisgICAgdmlldy0+c2V0TWVkaWFUeXBlKHR5cGUpOworICAgIGZyYW1lLT5kb2N1bWVu
dCgpLT51cGRhdGVTdHlsZVNlbGVjdG9yKCk7CisgICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsKK30K
ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjliNzE1Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oCkBA
IC0wLDAgKzEsNzkgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEwIFJvYmVydCBIb2dhbiA8
cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsMjAwOSwyMDEw
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHly
aWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCisgICAgQ29weXJp
Z2h0IChDKSAyMDA3IEFwcGxlIEluYy4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIER1bXBSZW5kZXJUcmVlU3VwcG9y
dF9oCisjZGVmaW5lIER1bXBSZW5kZXJUcmVlU3VwcG9ydF9oCisKKyNpbmNsdWRlICJxd2Via2l0
Z2xvYmFsLmgiCisjaW5jbHVkZSA8UXRDb3JlL3FzdHJpbmcuaD4KKworY2xhc3MgUVdlYlBhZ2U7
CitjbGFzcyBRV2ViRnJhbWU7CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFEUlRTdXBwb3J0IHsK
KworcHVibGljOgorCisgICAgUURSVFN1cHBvcnQoKTsKKyAgICB+UURSVFN1cHBvcnQoKTsKKwor
ICAgIHZvaWQgY2xlYXJGcmFtZU5hbWUoUVdlYkZyYW1lKiBxRnJhbWUpOworICAgIFFTdHJpbmcg
Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJp
bmcmIGlkKTsKKyAgICB2b2lkIGVuYWJsZUNhcmV0QnJvd3NpbmcoUVdlYlBhZ2UqIHBhZ2UsIGJv
b2wgdmFsdWUpOworICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoUVdlYkZy
YW1lKiBxRnJhbWUsIGludCB3b3JsZElkLCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpOworICAgIHZv
aWQgZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5n
JiBuYW1lLCBjb25zdCBRU3RyaW5nJiB2YWx1ZSk7CisgICAgYm9vbCBpc0NvbW1hbmRFbmFibGVk
KFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIGdhcmJhZ2VD
b2xsZWN0b3JDb2xsZWN0KCk7CisgICAgdm9pZCBnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0
ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSk7CisgICAgYm9vbCBoYXNEb2N1bWVudEVs
ZW1lbnQoUVdlYkZyYW1lKiBxRnJhbWUpOworICAgIGludCBqYXZhU2NyaXB0T2JqZWN0c0NvdW50
KCk7CisgICAgaW50IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhRV2ViRnJhbWUqKTsKKyAgICBp
bnQgbnVtYmVyT2ZQYWdlcyhRV2ViRnJhbWUqIHFGcmFtZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhl
aWdodCk7CisgICAgdm9pZCBvdmVyd3JpdGVQbHVnaW5EaXJlY3RvcmllcygpOworICAgIGludCBw
YWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJpbmcm
IGlkLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKKyAgICBib29sIHBhdXNlQW5pbWF0aW9u
KFFXZWJGcmFtZSosIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3Ry
aW5nJiBlbGVtZW50SWQpOworICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eShRV2Vi
RnJhbWUqLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYg
ZWxlbWVudElkKTsKKyAgICBib29sIHBhdXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFtZSosIGNvbnN0
IFFTdHJpbmcmIGFuaW1hdGlvbklkLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVu
dElkKTsKKyAgICB2b2lkIHJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOworICAgIHZvaWQg
cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyhRV2ViRnJhbWUqIHFGcmFtZSk7CisgICAgdm9pZCBydW4o
Ym9vbCBiKTsKKyAgICB2b2lkIHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hl
bWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNjaGVtZSk7CisgICAgdm9pZCBzZXRG
cmFtZVNldEZsYXR0ZW5pbmdFbmFibGVkKFFXZWJQYWdlKiwgYm9vbCk7CisgICAgdm9pZCBzZXRN
ZWRpYVR5cGUoUVdlYkZyYW1lKiBxZnJhbWUsIGNvbnN0IFFTdHJpbmcmIHR5cGUpOworICAgIHZv
aWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoUVdlYkZyYW1lKiwgYm9vbCBlbmFibGVk
KTsKKyAgICB2b2lkIHNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChRV2ViUGFnZSosIGJvb2wg
ZW5hYmxlZCk7CisgICAgdm9pZCBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoUVdlYlBhZ2Uq
IHBhZ2UsIGJvb2wgZW5hYmxlZCk7CisgICAgdm9pZCBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3Bh
Y2VFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBib29sIGVuYWJsZWQpOworICAgIHZvaWQgc3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBxRnJhbWUpOworICAgIHZvaWQgd2ViSW5zcGVj
dG9yRXhlY3V0ZVNjcmlwdChRV2ViUGFnZSogcGFnZSwgbG9uZyBjYWxsSWQsIGNvbnN0IFFTdHJp
bmcmIHNjcmlwdCk7CisgICAgdm9pZCB3ZWJJbnNwZWN0b3JTaG93KFFXZWJQYWdlKiBwYWdlKTsK
KyAgICB2b2lkIHdlYkluc3BlY3RvckNsb3NlKFFXZWJQYWdlKiBwYWdlKTsKKyAgICBRU3RyaW5n
IHdlYlBhZ2VHcm91cE5hbWUoUVdlYlBhZ2UgKnBhZ2UpOworICAgIHZvaWQgd2ViUGFnZVNldEdy
b3VwTmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0cmluZyYgZ3JvdXBOYW1lKTsKKyAgICB2
b2lkIHdoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2lu
LCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0
aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIGludCB3
b3JrZXJUaHJlYWRDb3VudCgpOworCisgICAgYm9vbCBkcnRSdW47Cit9OworCisjZW5kaWYKKwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcCBi
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKaW5kZXggOTBlYmIx
ZC4uODI1YzU0YiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQu
Y3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRWRp
dG9yQ2xpZW50UXQuaCIKIAorI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIgorCiAj
aW5jbHVkZSAicXdlYnBhZ2UuaCIKICNpbmNsdWRlICJxd2VicGFnZV9wLmgiCiAKQEAgLTMzMywx
NCArMzM1LDE4IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnBhZ2VEZXN0cm95ZWQoKQogCiBib29s
IEVkaXRvckNsaWVudFF0OjpzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3BhZ2UtPmQtPnNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKK30KKwordm9pZCBFZGl0b3JDbGllbnRRdDo6dG9nZ2xl
U21hcnRJbnNlcnREZWxldGUoKQoreworICAgIGJvb2wgY3VycmVudCA9IG1fcGFnZS0+ZC0+c21h
cnRJbnNlcnREZWxldGVFbmFibGVkOworICAgIG1fcGFnZS0+ZC0+c21hcnRJbnNlcnREZWxldGVF
bmFibGVkID0gIWN1cnJlbnQ7CiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmlzU2VsZWN0VHJh
aWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fcGFnZS0+ZC0+c2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZDsKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRRdDo6dG9nZ2xlQ29udGludW91c1Nw
ZWxsQ2hlY2tpbmcoKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudFF0LmggYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaApp
bmRleCA0MmE0MDJmLi42YzIwODk4IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50UXQuaApAQCAtNDgsMTMgKzQ4LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd0Rl
bGV0ZUludGVyZmFjZShIVE1MRWxlbWVudCopOwogICAgIHZpcnR1YWwgYm9vbCBzbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQoKTsgCisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVs
ZXRlKCk7CiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZCgpOyAKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCk7CiAgICAgdmlydHVhbCB2
b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpOwogICAgIHZpcnR1YWwgaW50IHNwZWxsQ2hlY2tl
ckRvY3VtZW50VGFnKCk7Ci0gICAgCiAgICAgdmlydHVhbCBib29sIHNlbGVjdFdvcmRCZWZvcmVN
ZW51RXZlbnQoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwogCmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9xdC90
ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCmluZGV4IGJhN2E4N2UuLjhhNzE1ZGQgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCisrKyBi
L1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCkBAIC0yMCw2ICsyMCw3
IEBACiAqLwogCiAjaW5jbHVkZSAiLi4vdXRpbC5oIgorI2luY2x1ZGUgIi4uL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIgogI2luY2x1ZGUgPFFEaXI+CiAjaW5jbHVkZSA8
UUdyYXBoaWNzV2lkZ2V0PgogI2luY2x1ZGUgPFFMaW5lRWRpdD4KQEAgLTcyMiwxMiArNzIzLDkg
QEAgdm9pZCB0c3RfUVdlYlBhZ2U6OmNyZWF0ZVZpZXdsZXNzUGx1Z2luKCkKIAogfQogCi0vLyBp
bXBvcnQgcHJpdmF0ZSBBUEkKLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfd2VicGFnZV9zZXRHcm91
cE5hbWUoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIGdyb3VwTmFtZSk7Ci1RU3RyaW5n
IFFXRUJLSVRfRVhQT1JUIHF0X3dlYnBhZ2VfZ3JvdXBOYW1lKFFXZWJQYWdlKiBwYWdlKTsKLQog
dm9pZCB0c3RfUVdlYlBhZ2U6Om11bHRpcGxlUGFnZUdyb3Vwc0FuZExvY2FsU3RvcmFnZSgpCiB7
CisgICAgUURSVFN1cHBvcnQqIGRydFN1cHBvcnQgPSBuZXcgUURSVFN1cHBvcnQoKTsKICAgICBR
RGlyIGRpcihRRGlyOjpjdXJyZW50UGF0aCgpKTsKICAgICBkaXIubWtkaXIoInBhdGgxIik7CiAg
ICAgZGlyLm1rZGlyKCJwYXRoMiIpOwpAQCAtNzM3LDEyICs3MzUsMTIgQEAgdm9pZCB0c3RfUVdl
YlBhZ2U6Om11bHRpcGxlUGFnZUdyb3Vwc0FuZExvY2FsU3RvcmFnZSgpCiAKICAgICB2aWV3MS5w
YWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkxvY2FsU3RvcmFn
ZUVuYWJsZWQsIHRydWUpOwogICAgIHZpZXcxLnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0TG9jYWxT
dG9yYWdlUGF0aChRRGlyOjp0b05hdGl2ZVNlcGFyYXRvcnMoUURpcjo6Y3VycmVudFBhdGgoKSAr
ICIvcGF0aDEiKSk7Ci0gICAgcXRfd2VicGFnZV9zZXRHcm91cE5hbWUodmlldzEucGFnZSgpLCAi
Z3JvdXAxIik7CisgICAgZHJ0U3VwcG9ydC0+d2ViUGFnZVNldEdyb3VwTmFtZSh2aWV3MS5wYWdl
KCksICJncm91cDEiKTsKICAgICB2aWV3Mi5wYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0
ZShRV2ViU2V0dGluZ3M6OkxvY2FsU3RvcmFnZUVuYWJsZWQsIHRydWUpOyAgICAKICAgICB2aWV3
Mi5wYWdlKCktPnNldHRpbmdzKCktPnNldExvY2FsU3RvcmFnZVBhdGgoUURpcjo6dG9OYXRpdmVT
ZXBhcmF0b3JzKFFEaXI6OmN1cnJlbnRQYXRoKCkgKyAiL3BhdGgyIikpOwotICAgIHF0X3dlYnBh
Z2Vfc2V0R3JvdXBOYW1lKHZpZXcyLnBhZ2UoKSwgImdyb3VwMiIpOwotICAgIFFDT01QQVJFKHF0
X3dlYnBhZ2VfZ3JvdXBOYW1lKHZpZXcxLnBhZ2UoKSksIFFTdHJpbmcoImdyb3VwMSIpKTsKLSAg
ICBRQ09NUEFSRShxdF93ZWJwYWdlX2dyb3VwTmFtZSh2aWV3Mi5wYWdlKCkpLCBRU3RyaW5nKCJn
cm91cDIiKSk7CisgICAgZHJ0U3VwcG9ydC0+d2ViUGFnZVNldEdyb3VwTmFtZSh2aWV3Mi5wYWdl
KCksICJncm91cDIiKTsKKyAgICBRQ09NUEFSRShkcnRTdXBwb3J0LT53ZWJQYWdlR3JvdXBOYW1l
KHZpZXcxLnBhZ2UoKSksIFFTdHJpbmcoImdyb3VwMSIpKTsKKyAgICBRQ09NUEFSRShkcnRTdXBw
b3J0LT53ZWJQYWdlR3JvdXBOYW1lKHZpZXcyLnBhZ2UoKSksIFFTdHJpbmcoImdyb3VwMiIpKTsK
IAogCiAgICAgdmlldzEuc2V0SHRtbChRU3RyaW5nKCI8aHRtbD48Ym9keT4gPC9ib2R5PjwvaHRt
bD4iKSwgUVVybCgiaHR0cDovL3d3dy5teWV4YW1wbGUuY29tIikpOwpAQCAtMTQ1OSwxMSArMTQ1
Nyw5IEBAIHZvaWQgdHN0X1FXZWJQYWdlOjppbnB1dE1ldGhvZHMoKQogICAgIGRlbGV0ZSBjb250
YWluZXI7CiB9CiAKLS8vIGltcG9ydCBhIGxpdHRsZSBEUlQgaGVscGVyIGZ1bmN0aW9uIHRvIHRy
aWdnZXIgdGhlIGdhcmJhZ2UgY29sbGVjdG9yCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9n
YXJiYWdlQ29sbGVjdG9yX2NvbGxlY3QoKTsKLQogdm9pZCB0c3RfUVdlYlBhZ2U6OnByb3RlY3RC
aW5kaW5nc1J1bnRpbWVPYmplY3RzRnJvbUNvbGxlY3RvcigpCiB7CisgICAgUURSVFN1cHBvcnQq
IGRydFN1cHBvcnQgPSBuZXcgUURSVFN1cHBvcnQoKTsKICAgICBRU2lnbmFsU3B5IGxvYWRTcHko
bV92aWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7CiAKICAgICBQbHVnaW5QYWdlKiBu
ZXdQYWdlID0gbmV3IFBsdWdpblBhZ2UobV92aWV3KTsKQEAgLTE0NzgsNyArMTQ3NCw3IEBAIHZv
aWQgdHN0X1FXZWJQYWdlOjpwcm90ZWN0QmluZGluZ3NSdW50aW1lT2JqZWN0c0Zyb21Db2xsZWN0
b3IoKQogCiAgICAgbmV3UGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidGVz
dG1lKCdmb28nKSIpOwogCi0gICAgcXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgpOwor
ICAgIGRydFN1cHBvcnQtPmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0KCk7CiAKICAgICAvLyBkb24n
dCBjcmFzaCEKICAgICBuZXdQYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ0
ZXN0bWUoJ2JhcicpIik7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKaW5kZXggN2IzZjBmZC4uZDliM2IzYiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDUzIEBACisyMDEwLTAzLTE4ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIgY29tbWFuZHM6CisgICAgICAgICAgc2V0U21hcnRJ
bnNlcnREZWxldGVFbmFibGVkCisgICAgICAgICAgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNl
RW5hYmxlZAorICAgICAgICAgIGV4ZWNDb21tYW5kCisgICAgICAgICAgaXNDb21tYW5kRW5hYmxl
ZAorCisgICAgICAgIFVwZGF0ZSBEUlQgdG8gdXNlIG5ldyBRRFJUU3VwcG9ydCBjbGFzcy4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4NDQKKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkR1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6ZHVtcEZyYW1lc0FzVGV4dCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKEdDQ29u
dHJvbGxlcjo6R0NDb250cm9sbGVyKToKKyAgICAgICAgKEdDQ29udHJvbGxlcjo6Y29sbGVjdCk6
CisgICAgICAgIChHQ0NvbnRyb2xsZXI6OmNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZCk6CisgICAg
ICAgIChHQ0NvbnRyb2xsZXI6OmdldEpTT2JqZWN0Q291bnQpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpjbG9zZVdlYkluc3BlY3Rvcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2hvd1dlYkluc3BlY3Rvcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVh
dGVJbldlYkluc3BlY3Rvcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RnJh
bWVTZXRGbGF0dGVuaW5nRW5hYmxlZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQpOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdp
dGhJZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5pbWF0aW9u
Rm9yRWxlbWVudEF0VGltZSk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVy
T2ZBY3RpdmVBbmltYXRpb25zKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjp3aGl0
ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRDYXJldEJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSk6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6d29ya2VyVGhyZWFkQ291bnQpOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCk6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQYWdlcyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpleGVjQ29tbWFuZCk6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6aXNDb21tYW5kRW5hYmxlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorCiAyMDEwLTAzLTE5ICBFcmljIFNlaWRlbCAg
PGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5j
cHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcApp
bmRleCBkOGY1M2YzLi4xYjIyNTlhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVRdC5oIgorI2luY2x1ZGUgIi4u
Ly4uLy4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaCIK
ICNpbmNsdWRlICJFdmVudFNlbmRlclF0LmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyUXQuaCIK
ICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlclF0LmgiCkBAIC03NSwxMyArNzYsOCBAQAog
CiAjaW5jbHVkZSA8cWRlYnVnLmg+CiAKLWV4dGVybiB2b2lkIHF0X2RydF9ydW4oYm9vbCBiKTsK
IGV4dGVybiB2b2lkIHF0X2R1bXBfc2V0X2FjY2VwdHNfZWRpdGluZyhib29sIGIpOwogZXh0ZXJu
IHZvaWQgcXRfZHVtcF9mcmFtZV9sb2FkZXIoYm9vbCBiKTsKLWV4dGVybiB2b2lkIHF0X2RydF9j
bGVhckZyYW1lTmFtZShRV2ViRnJhbWUqIHFGcmFtZSk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfb3Zl
cndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKTsKLWV4dGVybiB2b2lkIHF0X2RydF9yZXNldE9yaWdp
bkFjY2Vzc1doaXRlTGlzdHMoKTsKLWV4dGVybiBib29sIHF0X2RydF9oYXNEb2N1bWVudEVsZW1l
bnQoUVdlYkZyYW1lKiBxRnJhbWUpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMxNiw3
ICszMTIsNyBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUoKQogICAgICwgbV9lbmFi
bGVUZXh0T3V0cHV0KGZhbHNlKQogICAgICwgbV9zaW5nbGVGaWxlTW9kZShmYWxzZSkKIHsKLSAg
ICBxdF9kcnRfb3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKTsKKyAgICBtX2RydFN1cHBvcnQt
Pm92ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVzKCk7CiAgICAgUVdlYlNldHRpbmdzOjplbmFibGVQ
ZXJzaXN0ZW50U3RvcmFnZSgpOwogCiAgICAgLy8gY3JlYXRlIG91ciBwcmltYXJ5IHRlc3Rpbmcg
cGFnZS92aWV3LgpAQCAtMzMyLDE0ICszMjgsMTUgQEAgRHVtcFJlbmRlclRyZWU6OkR1bXBSZW5k
ZXJUcmVlKCkKIAogICAgIC8vIGNyZWF0ZSBvdXIgY29udHJvbGxlcnMuIFRoaXMgaGFzIHRvIGJl
IGRvbmUgYmVmb3JlIGNvbm5lY3RGcmFtZSwKICAgICAvLyBhcyBpdCBleHBvcnRzIHRoZXJlIHRv
IHRoZSBKYXZhU2NyaXB0IERPTSB3aW5kb3cuCi0gICAgbV9jb250cm9sbGVyID0gbmV3IExheW91
dFRlc3RDb250cm9sbGVyKHRoaXMpOworICAgIG1fZHJ0U3VwcG9ydCA9IG5ldyBRRFJUU3VwcG9y
dCgpOworICAgIG1fY29udHJvbGxlciA9IG5ldyBMYXlvdXRUZXN0Q29udHJvbGxlcih0aGlzLCBt
X2RydFN1cHBvcnQpOwogICAgIGNvbm5lY3QobV9jb250cm9sbGVyLCBTSUdOQUwoc2hvd1BhZ2Uo
KSksIHRoaXMsIFNMT1Qoc2hvd1BhZ2UoKSkpOwogICAgIGNvbm5lY3QobV9jb250cm9sbGVyLCBT
SUdOQUwoaGlkZVBhZ2UoKSksIHRoaXMsIFNMT1QoaGlkZVBhZ2UoKSkpOwogCiAgICAgY29ubmVj
dChtX2NvbnRyb2xsZXIsIFNJR05BTChkb25lKCkpLCB0aGlzLCBTTE9UKGR1bXAoKSkpOwogICAg
IG1fZXZlbnRTZW5kZXIgPSBuZXcgRXZlbnRTZW5kZXIobV9wYWdlKTsKICAgICBtX3RleHRJbnB1
dENvbnRyb2xsZXIgPSBuZXcgVGV4dElucHV0Q29udHJvbGxlcihtX3BhZ2UpOwotICAgIG1fZ2ND
b250cm9sbGVyID0gbmV3IEdDQ29udHJvbGxlcihtX3BhZ2UpOworICAgIG1fZ2NDb250cm9sbGVy
ID0gbmV3IEdDQ29udHJvbGxlcihtX3BhZ2UsIG1fZHJ0U3VwcG9ydCk7CiAKICAgICAvLyBub3cg
Y29ubmVjdCBvdXIgZGlmZmVyZW50IHNpZ25hbHMKICAgICBjb25uZWN0KG1fcGFnZSwgU0lHTkFM
KGZyYW1lQ3JlYXRlZChRV2ViRnJhbWUgKikpLApAQCAtMzYzLDcgKzM2MCw3IEBAIER1bXBSZW5k
ZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSgpCiAgICAgICAgICAgICB0aGlzLCBTTE9UKHN0YXR1c0Jh
ck1lc3NhZ2UoY29uc3QgUVN0cmluZyYpKSk7CiAKICAgICBRT2JqZWN0Ojpjb25uZWN0KHRoaXMs
IFNJR05BTChxdWl0KCkpLCBxQXBwLCBTTE9UKHF1aXQoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9u
KTsKLSAgICBxdF9kcnRfcnVuKHRydWUpOworICAgIG1fZHJ0U3VwcG9ydC0+cnVuKHRydWUpOwog
ICAgIFFGb2N1c0V2ZW50IGV2ZW50KFFFdmVudDo6Rm9jdXNJbiwgUXQ6OkFjdGl2ZVdpbmRvd0Zv
Y3VzUmVhc29uKTsKICAgICBRQXBwbGljYXRpb246OnNlbmRFdmVudChtX21haW5WaWV3LCAmZXZl
bnQpOwogfQpAQCAtNDE3LDEyICs0MTQsMTIgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6cmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKQogICAgIG1fcGFnZS0+dW5kb1N0YWNrKCkt
PmNsZWFyKCk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+c2V0Wm9vbUZhY3RvcigxLjApOwog
ICAgIGNsZWFySGlzdG9yeShtX3BhZ2UpOwotICAgIHF0X2RydF9jbGVhckZyYW1lTmFtZShtX3Bh
Z2UtPm1haW5GcmFtZSgpKTsKKyAgICBtX2RydFN1cHBvcnQtPmNsZWFyRnJhbWVOYW1lKG1fcGFn
ZS0+bWFpbkZyYW1lKCkpOwogCiAgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+Y2xlYXIoKTsKICAg
ICBXb3JrUXVldWU6OnNoYXJlZCgpLT5zZXRGcm96ZW4oZmFsc2UpOwogCi0gICAgcXRfZHJ0X3Jl
c2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOworICAgIG1fZHJ0U3VwcG9ydC0+cmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CiAKICAgICBRTG9jYWxlOjpzZXREZWZhdWx0KFFMb2NhbGU6
OmMoKSk7CiAgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOwpAQCAtNTczLDcgKzU3MCw3IEBAIHZv
aWQgRHVtcFJlbmRlclRyZWU6OmhpZGVQYWdlKCkKIAogUVN0cmluZyBEdW1wUmVuZGVyVHJlZTo6
ZHVtcEZyYW1lc0FzVGV4dChRV2ViRnJhbWUqIGZyYW1lKQogewotICAgIGlmICghZnJhbWUgfHwg
IXF0X2RydF9oYXNEb2N1bWVudEVsZW1lbnQoZnJhbWUpKQorICAgIGlmICghZnJhbWUgfHwgIW1f
ZHJ0U3VwcG9ydC0+aGFzRG9jdW1lbnRFbGVtZW50KGZyYW1lKSkKICAgICAgICAgcmV0dXJuIFFT
dHJpbmcoKTsKIAogICAgIFFTdHJpbmcgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oCmluZGV4IDdhMjg1OGEuLmIwMWQzM2UgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQu
aAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmgK
QEAgLTUzLDYgKzUzLDcgQEAgUVRfRU5EX05BTUVTUEFDRQogY2xhc3MgUVdlYkZyYW1lOwogCiBj
bGFzcyBMYXlvdXRUZXN0Q29udHJvbGxlcjsKK2NsYXNzIFFEUlRTdXBwb3J0OwogY2xhc3MgRXZl
bnRTZW5kZXI7CiBjbGFzcyBUZXh0SW5wdXRDb250cm9sbGVyOwogY2xhc3MgR0NDb250cm9sbGVy
OwpAQCAtMTI0LDYgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgUVN0cmluZyBkdW1wRnJhbWVzQXNU
ZXh0KFFXZWJGcmFtZSogZnJhbWUpOwogICAgIFFTdHJpbmcgZHVtcEJhY2tGb3J3YXJkTGlzdCgp
OwogICAgIExheW91dFRlc3RDb250cm9sbGVyICptX2NvbnRyb2xsZXI7CisgICAgUURSVFN1cHBv
cnQgKm1fZHJ0U3VwcG9ydDsKIAogICAgIGJvb2wgbV9kdW1wUGl4ZWxzOwogICAgIFFTdHJpbmcg
bV9leHBlY3RlZEhhc2g7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9HQ0NvbnRyb2xsZXJRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0Nv
bnRyb2xsZXJRdC5jcHAKaW5kZXggOWNjM2FhNy4uYjcxMDYwNCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuY3BwCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmNwcApAQCAtMjksMzAgKzI5LDI3
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXJRdC5oIgor
I2luY2x1ZGUgIi4uLy4uLy4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnQuaCIKIAogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CiAKLWV4dGVybiBpbnQgcXRfZHJ0
X2phdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKLWV4dGVybiB2b2lkIHF0X2RydF9nYXJiYWdlQ29s
bGVjdG9yX2NvbGxlY3QoKTsKLQotZXh0ZXJuIHZvaWQgcXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3Jf
Y29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSk7Ci0KLUdDQ29udHJv
bGxlcjo6R0NDb250cm9sbGVyKFFXZWJQYWdlKiBwYXJlbnQpCitHQ0NvbnRyb2xsZXI6OkdDQ29u
dHJvbGxlcihRV2ViUGFnZSogcGFyZW50LCBRRFJUU3VwcG9ydCogZHJ0U3VwcG9ydCkKICAgICA6
IFFPYmplY3QocGFyZW50KQorICAgICwgbV9kcnRTdXBwb3J0KGRydFN1cHBvcnQpCiB7CiB9CiAK
IHZvaWQgR0NDb250cm9sbGVyOjpjb2xsZWN0KCkgY29uc3QKIHsKLSAgICBxdF9kcnRfZ2FyYmFn
ZUNvbGxlY3Rvcl9jb2xsZWN0KCk7CisgICAgbV9kcnRTdXBwb3J0LT5nYXJiYWdlQ29sbGVjdG9y
Q29sbGVjdCgpOwogfQogCiB2b2lkIEdDQ29udHJvbGxlcjo6Y29sbGVjdE9uQWx0ZXJuYXRlVGhy
ZWFkKGJvb2wgd2FpdFVudGlsRG9uZSkgY29uc3QKIHsKLSAgICBxdF9kcnRfZ2FyYmFnZUNvbGxl
Y3Rvcl9jb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQod2FpdFVudGlsRG9uZSk7CisgICAgbV9kcnRT
dXBwb3J0LT5nYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKHdhaXRVbnRp
bERvbmUpOwogfQogCiBzaXplX3QgR0NDb250cm9sbGVyOjpnZXRKU09iamVjdENvdW50KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gcXRfZHJ0X2phdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKKyAgICBy
ZXR1cm4gbV9kcnRTdXBwb3J0LT5qYXZhU2NyaXB0T2JqZWN0c0NvdW50KCk7CiB9CmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5oIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuaAppbmRleCA4ZjViNDMy
Li41NDA0YjI2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0Nv
bnRyb2xsZXJRdC5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJv
bGxlclF0LmgKQEAgLTMyLDE3ICszMiwyMSBAQAogI2luY2x1ZGUgPFFPYmplY3Q+CiAKIGNsYXNz
IFFXZWJQYWdlOworY2xhc3MgUURSVFN1cHBvcnQ7CiAKIGNsYXNzIEdDQ29udHJvbGxlciA6IHB1
YmxpYyBRT2JqZWN0CiB7CiAgICAgUV9PQkpFQ1QKIHB1YmxpYzoKLSAgICBHQ0NvbnRyb2xsZXIo
UVdlYlBhZ2UqIHBhcmVudCk7CisgICAgR0NDb250cm9sbGVyKFFXZWJQYWdlKiBwYXJlbnQsIFFE
UlRTdXBwb3J0KiBkcnRTdXBwb3J0KTsKIAogcHVibGljIHNsb3RzOgogICAgIHZvaWQgY29sbGVj
dCgpIGNvbnN0OwogICAgIHZvaWQgY29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVu
dGlsRG9uZSkgY29uc3Q7CiAgICAgc2l6ZV90IGdldEpTT2JqZWN0Q291bnQoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBRRFJUU3VwcG9ydCogbV9kcnRTdXBwb3J0OwogfTsKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuY3BwCmluZGV4IGI1ZjY1MWMuLjc3ZjIyZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAgKi8KICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMYXlv
dXRUZXN0Q29udHJvbGxlclF0LmgiCisjaW5jbHVkZSAiLi4vLi4vLi4vV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIgogCiAjaW5jbHVkZSAiRHVtcFJlbmRl
clRyZWVRdC5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgpAQCAtMzksMjkgKzQwLDExIEBACiBl
eHRlcm4gdm9pZCBxdF9kdW1wX2VkaXRpbmdfY2FsbGJhY2tzKGJvb2wgYik7CiBleHRlcm4gdm9p
ZCBxdF9kdW1wX2ZyYW1lX2xvYWRlcihib29sIGIpOwogZXh0ZXJuIHZvaWQgcXRfZHVtcF9yZXNv
dXJjZV9sb2FkX2NhbGxiYWNrcyhib29sIGIpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3NldE1lZGlh
VHlwZShRV2ViRnJhbWUqIHFmcmFtZSwgY29uc3QgUVN0cmluZyYgdHlwZSk7Ci1leHRlcm4gdm9p
ZCBxdF9kcnRfc2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChRV2ViUGFnZSosIGJvb2wpOwot
ZXh0ZXJuIHZvaWQgcXRfZHJ0X3NldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKFFXZWJGcmFt
ZSosIGJvb2wgZW5hYmxlZCk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfc2V0VGltZWxpbmVQcm9maWxp
bmdFbmFibGVkKFFXZWJQYWdlKiwgYm9vbCBlbmFibGVkKTsKLWV4dGVybiBib29sIHF0X2RydF9w
YXVzZUFuaW1hdGlvbihRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBkb3VibGUgdGlt
ZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKLWV4dGVybiBib29sIHF0X2RydF9wYXVzZVRy
YW5zaXRpb25PZlByb3BlcnR5KFFXZWJGcmFtZSosIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGRvdWJs
ZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOwotZXh0ZXJuIGJvb2wgcXRfZHJ0X3Bh
dXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFtZSosIGNvbnN0IFFTdHJpbmcmIGFuaW1hdGlvbklkLCBk
b3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKLWV4dGVybiBpbnQgcXRfZHJ0
X251bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhRV2ViRnJhbWUqKTsKLWV4dGVybiB2b2lkIHF0X2Ry
dF9zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVu
LCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpOwotCi1leHRlcm4gdm9pZCBxdF9kcnRfd2hpdGVMaXN0
QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJp
bmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci1leHRlcm4gUVN0cmluZyBxdF9kcnRf
Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJp
bmcmIGlkKTsKLWV4dGVybiBpbnQgcXRfZHJ0X3dvcmtlclRocmVhZENvdW50KCk7Ci1leHRlcm4g
aW50IHF0X2RydF9wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUsIGNv
bnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLWV4dGVybiBpbnQg
cXRfZHJ0X251bWJlck9mUGFnZXMoUVdlYkZyYW1lKiBxRnJhbWUsIGZsb2F0IHdpZHRoLCBmbG9h
dCBoZWlnaHQpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3dlYmluc3BlY3Rvcl9leGVjdXRlU2NyaXB0
KFFXZWJQYWdlKiBwYWdlLCBsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKLWV4
dGVybiB2b2lkIHF0X2RydF93ZWJpbnNwZWN0b3Jfc2hvdyhRV2ViUGFnZSAqcGFnZSk7Ci1leHRl
cm4gdm9pZCBxdF9kcnRfd2ViaW5zcGVjdG9yX2Nsb3NlKFFXZWJQYWdlICpwYWdlKTsKLWV4dGVy
biB2b2lkIHF0X2RydF9lbmFibGVDYXJldEJyb3dzaW5nKFFXZWJQYWdlKiBwYWdlLCBib29sIHZh
bHVlKTsKLQotTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFdlYkNv
cmU6OkR1bXBSZW5kZXJUcmVlKiBkcnQpCisKK0xheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRU
ZXN0Q29udHJvbGxlcihXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZSogZHJ0LCBRRFJUU3VwcG9ydCog
ZHJ0U3VwcG9ydCkKICAgICA6IFFPYmplY3QoKQogICAgICwgbV9kcnQoZHJ0KQorICAgICwgbV9k
cnRTdXBwb3J0KGRydFN1cHBvcnQpCiB7CiAgICAgcmVzZXQoKTsKIH0KQEAgLTE0Myw3ICsxMjYs
NyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjp3YWl0VW50aWxEb25lKCkKIAogUVN0cmlu
ZyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoY29uc3Qg
UVN0cmluZyYgaWQpCiB7Ci0gICAgcmV0dXJuIHF0X2RydF9jb3VudGVyVmFsdWVGb3JFbGVtZW50
QnlJZChtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKSwgaWQpOworICAgIHJldHVybiBtX2Ry
dFN1cHBvcnQtPmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKG1fZHJ0LT53ZWJQYWdlKCktPm1h
aW5GcmFtZSgpLCBpZCk7CiB9CiAKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2ViSGlzdG9y
eUl0ZW1Db3VudCgpCkBAIC0yOTQsMjkgKzI3NywyOSBAQCBRU3RyaW5nIExheW91dFRlc3RDb250
cm9sbGVyOjpkZWNvZGVIb3N0TmFtZShjb25zdCBRU3RyaW5nJiBob3N0KQogCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNZWRpYVR5cGUoY29uc3QgUVN0cmluZyYgdHlwZSkKIHsKLSAg
ICBxdF9kcnRfc2V0TWVkaWFUeXBlKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpLCB0eXBl
KTsKKyAgICBtX2RydFN1cHBvcnQtPnNldE1lZGlhVHlwZShtX2RydC0+d2ViUGFnZSgpLT5tYWlu
RnJhbWUoKSwgdHlwZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsb3NlV2Vi
SW5zcGVjdG9yKCkKIHsKLSAgICBxdF9kcnRfd2ViaW5zcGVjdG9yX2Nsb3NlKG1fZHJ0LT53ZWJQ
YWdlKCkpOworICAgIG1fZHJ0U3VwcG9ydC0+d2ViSW5zcGVjdG9yQ2xvc2UobV9kcnQtPndlYlBh
Z2UoKSk7CiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFX
ZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgZmFsc2UpOwogfQogCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKCkKIHsKICAgICBtX2RydC0+d2Vi
UGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJF
eHRyYXNFbmFibGVkLCB0cnVlKTsKLSAgICBxdF9kcnRfd2ViaW5zcGVjdG9yX3Nob3cobV9kcnQt
PndlYlBhZ2UoKSk7CisgICAgbV9kcnRTdXBwb3J0LT53ZWJJbnNwZWN0b3JTaG93KG1fZHJ0LT53
ZWJQYWdlKCkpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpldmFsdWF0ZUluV2Vi
SW5zcGVjdG9yKGxvbmcgY2FsbElkLCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpCiB7Ci0gICAgcXRf
ZHJ0X3dlYmluc3BlY3Rvcl9leGVjdXRlU2NyaXB0KG1fZHJ0LT53ZWJQYWdlKCksIGNhbGxJZCwg
c2NyaXB0KTsKKyAgICBtX2RydFN1cHBvcnQtPndlYkluc3BlY3RvckV4ZWN1dGVTY3JpcHQobV9k
cnQtPndlYlBhZ2UoKSwgY2FsbElkLCBzY3JpcHQpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRGcmFtZVNldEZsYXR0ZW5pbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAg
ICBxdF9kcnRfc2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChtX2RydC0+d2ViUGFnZSgpLCBl
bmFibGVkKTsKKyAgICBtX2RydFN1cHBvcnQtPnNldEZyYW1lU2V0RmxhdHRlbmluZ0VuYWJsZWQo
bV9kcnQtPndlYlBhZ2UoKSwgZW5hYmxlZCk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKQEAg
LTMzNywxMiArMzIwLDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcENhY2hl
TWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGUpCiB7CiAg
ICAgbV90b3BMb2FkaW5nRnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFX
ZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgdHJ1ZSk7Ci0gICAgcXRfZHJ0X3Nl
dEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKG1fdG9wTG9hZGluZ0ZyYW1lLCBlbmFibGUpOwor
ICAgIG1fZHJ0U3VwcG9ydC0+c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQobV90b3BMb2Fk
aW5nRnJhbWUsIGVuYWJsZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRp
bWVsaW5lUHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZSkKIHsKLSAgICBxdF9kcnRfc2V0VGlt
ZWxpbmVQcm9maWxpbmdFbmFibGVkKG1fZHJ0LT53ZWJQYWdlKCksIGVuYWJsZSk7CisgICAgbV9k
cnRTdXBwb3J0LT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQobV9kcnQtPndlYlBhZ2UoKSwg
ZW5hYmxlKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Rml4ZWRDb250ZW50
c1NpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQpAQCAtMzk3LDcgKzM4MCw3IEBAIGJvb2wgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGNv
bnN0IFFTdHJpbmcmIGFuCiB7CiAgICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fZHJ0LT53ZWJQYWdl
KCktPm1haW5GcmFtZSgpOwogICAgIFFfQVNTRVJUKGZyYW1lKTsKLSAgICByZXR1cm4gcXRfZHJ0
X3BhdXNlQW5pbWF0aW9uKGZyYW1lLCBhbmltYXRpb25OYW1lLCB0aW1lLCBlbGVtZW50SWQpOwor
ICAgIHJldHVybiBtX2RydFN1cHBvcnQtPnBhdXNlQW5pbWF0aW9uKGZyYW1lLCBhbmltYXRpb25O
YW1lLCB0aW1lLCBlbGVtZW50SWQpOwogfQogCiBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpw
YXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyYgcHJvcGVy
dHlOYW1lLApAQCAtNDA2LDcgKzM4OSw3IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBh
dXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBRU3RyaW5nJiBwCiB7CiAg
ICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpOwogICAg
IFFfQVNTRVJUKGZyYW1lKTsKLSAgICByZXR1cm4gcXRfZHJ0X3BhdXNlVHJhbnNpdGlvbk9mUHJv
cGVydHkoZnJhbWUsIHByb3BlcnR5TmFtZSwgdGltZSwgZWxlbWVudElkKTsKKyAgICByZXR1cm4g
bV9kcnRTdXBwb3J0LT5wYXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KGZyYW1lLCBwcm9wZXJ0eU5h
bWUsIHRpbWUsIGVsZW1lbnRJZCk7CiB9CiAKIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNh
bXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUoY29uc3QgUVN0cmluZyYgYW5pbWF0aW9u
SWQsCkBAIC00MTUsMTQgKzM5OCwxNCBAQCBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpzYW1w
bGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKGNvbnN0IFFTdHJpbmcmIGFuaQogewogICAg
IFFXZWJGcmFtZSogZnJhbWUgPSBtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKTsKICAgICBR
X0FTU0VSVChmcmFtZSk7Ci0gICAgcmV0dXJuIHF0X2RydF9wYXVzZVNWR0FuaW1hdGlvbihmcmFt
ZSwgYW5pbWF0aW9uSWQsIHRpbWUsIGVsZW1lbnRJZCk7CisgICAgcmV0dXJuIG1fZHJ0U3VwcG9y
dC0+cGF1c2VTVkdBbmltYXRpb24oZnJhbWUsIGFuaW1hdGlvbklkLCB0aW1lLCBlbGVtZW50SWQp
OwogfQogCiB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZBY3RpdmVBbmlt
YXRpb25zKCkgY29uc3QKIHsKICAgICBRV2ViRnJhbWUqIGZyYW1lID0gbV9kcnQtPndlYlBhZ2Uo
KS0+bWFpbkZyYW1lKCk7CiAgICAgUV9BU1NFUlQoZnJhbWUpOwotICAgIHJldHVybiBxdF9kcnRf
bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKGZyYW1lKTsKKyAgICByZXR1cm4gbV9kcnRTdXBwb3J0
LT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoZnJhbWUpOwogfQogCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpkaXNhYmxlSW1hZ2VMb2FkaW5nKCkKQEAgLTQ1MCw3ICs0MzMsNyBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbERhdGFiYXNlcygpCiAKIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29uc3QgUVN0cmluZyYg
c291cmNlT3JpZ2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBR
U3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
CiB7Ci0gICAgcXRfZHJ0X3doaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oc291cmNlT3JpZ2luLCBk
ZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKTsKKyAgICBtX2RydFN1cHBvcnQtPndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oc291
cmNlT3JpZ2luLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVz
dGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2Fp
dEZvclBvbGljeURlbGVnYXRlKCkKQEAgLTQ4Nyw3ICs0NzAsNyBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IFFTdHJpbmcmIHVybCkK
IAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9v
bCB2YWx1ZSkKIHsKLSAgICBxdF9kcnRfZW5hYmxlQ2FyZXRCcm93c2luZyhtX2RydC0+d2ViUGFn
ZSgpLCB2YWx1ZSk7CisgICAgbV9kcnRTdXBwb3J0LT5lbmFibGVDYXJldEJyb3dzaW5nKG1fZHJ0
LT53ZWJQYWdlKCksIHZhbHVlKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTUwMCwxMiArNDgzLDEyIEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChib29s
IGVuYWJsZWQpCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERvbWFpblJlbGF4YXRp
b25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNj
aGVtZSkKIHsKLSAgICBxdF9kcnRfc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNj
aGVtZShmb3JiaWRkZW4sIHNjaGVtZSk7CisgICAgbV9kcnRTdXBwb3J0LT5zZXREb21haW5SZWxh
eGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGZvcmJpZGRlbiwgc2NoZW1lKTsKIH0KIAogaW50
IExheW91dFRlc3RDb250cm9sbGVyOjp3b3JrZXJUaHJlYWRDb3VudCgpCiB7Ci0gICAgcmV0dXJu
IHF0X2RydF93b3JrZXJUaHJlYWRDb3VudCgpOworICAgIHJldHVybiBtX2RydFN1cHBvcnQtPndv
cmtlclRocmVhZENvdW50KCk7CiB9CiAKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51
bWJlckZvckVsZW1lbnRCeUlkKGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KQpAQCAtNTE2LDEyICs0OTksMzIgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVyOjpw
YWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0IHdpZHQKICAg
ICAgICAgaGVpZ2h0ID0gbV9kcnQtPndlYlBhZ2UoKS0+dmlld3BvcnRTaXplKCkuaGVpZ2h0KCk7
CiAgICAgfQogCi0gICAgcmV0dXJuIHF0X2RydF9wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQobV9k
cnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIGlkLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICByZXR1
cm4gbV9kcnRTdXBwb3J0LT5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQobV9kcnQtPndlYlBhZ2Uo
KS0+bWFpbkZyYW1lKCksIGlkLCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogaW50IExheW91dFRlc3RD
b250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCiB7Ci0g
ICAgcmV0dXJuIHF0X2RydF9udW1iZXJPZlBhZ2VzKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFt
ZSgpLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICByZXR1cm4gbV9kcnRTdXBwb3J0LT5udW1iZXJPZlBh
Z2VzKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpLCB3aWR0aCwgaGVpZ2h0KTsKK30KKwor
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJv
b2wgZW5hYmxlKQoreworICAgIG1fZHJ0U3VwcG9ydC0+c2V0U21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKG1fZHJ0LT53ZWJQYWdlKCksIGVuYWJsZSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBlbmFibGUpCit7
CisgICAgbV9kcnRTdXBwb3J0LT5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKG1f
ZHJ0LT53ZWJQYWdlKCksIGVuYWJsZSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmV4ZWNDb21tYW5kKGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQor
eworICAgIG1fZHJ0U3VwcG9ydC0+ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKG1fZHJ0LT53ZWJQ
YWdlKCksIG5hbWUsIHZhbHVlKTsKK30KKworYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXND
b21tYW5kRW5hYmxlZChjb25zdCBRU3RyaW5nJiBuYW1lKSBjb25zdAoreworICAgIHJldHVybiBt
X2RydFN1cHBvcnQtPmlzQ29tbWFuZEVuYWJsZWQobV9kcnQtPndlYlBhZ2UoKSwgbmFtZSk7CiB9
CiAKIGNvbnN0IHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjptYXhWaWV3V2lkdGggPSA4
MDA7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmgKaW5kZXggNWNmNTEwNC4uNDhkNzZlZSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApAQCAt
NDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPHF3ZWJzZWN1cml0eW9yaWdpbi5oPgogCiBjbGFzcyBR
V2ViRnJhbWU7CitjbGFzcyBRRFJUU3VwcG9ydDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBEdW1wUmVuZGVyVHJlZTsKIH0KQEAgLTU1LDcgKzU2LDcgQEAgY2xhc3MgTGF5b3V0VGVz
dENvbnRyb2xsZXIgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9QUk9QRVJUWShpbnQgd29ya2Vy
VGhyZWFkQ291bnQgUkVBRCB3b3JrZXJUaHJlYWRDb3VudCkKICAgICBRX1BST1BFUlRZKGJvb2wg
Z2xvYmFsRmxhZyBSRUFEIGdsb2JhbEZsYWcgV1JJVEUgc2V0R2xvYmFsRmxhZykKIHB1YmxpYzoK
LSAgICBMYXlvdXRUZXN0Q29udHJvbGxlcihXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZSogZHJ0KTsK
KyAgICBMYXlvdXRUZXN0Q29udHJvbGxlcihXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZSogZHJ0LCBR
RFJUU3VwcG9ydCogZHJ0U3VwcG9ydCk7CiAKICAgICBib29sIHNob3VsZER1bXBBc1RleHQoKSBj
b25zdCB7IHJldHVybiBtX3RleHREdW1wOyB9CiAgICAgYm9vbCBzaG91bGREdW1wQmFja0Zvcndh
cmRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9kdW1wQmFja0ZvcndhcmRMaXN0OyB9CkBAIC0xMzgs
NiArMTM5LDEwIEBAIHB1YmxpYyBzbG90czoKICAgICB2b2lkIHNldE1haW5GcmFtZUlzRmlyc3RS
ZXNwb25kZXIoYm9vbCBpc0ZpcnN0KTsKICAgICB2b2lkIHNldFhTU0F1ZGl0b3JFbmFibGVkKGJv
b2wgZW5hYmxlKTsKICAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wgZW5hYmxl
KTsKKyAgICB2b2lkIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sIGVuYWJsZSk7Cisg
ICAgdm9pZCBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGJvb2wgZW5hYmxlKTsK
KyAgICB2b2lkIGV4ZWNDb21tYW5kKGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFTdHJpbmcm
IHZhbHVlID0gUVN0cmluZygpKTsKKyAgICBib29sIGlzQ29tbWFuZEVuYWJsZWQoY29uc3QgUVN0
cmluZyYgbmFtZSkgY29uc3Q7CiAKICAgICBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVt
ZW50V2l0aElkKGNvbnN0IFFTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lLCBjb25z
dCBRU3RyaW5nJiBlbGVtZW50SWQpOwogICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25F
bGVtZW50V2l0aElkKGNvbnN0IFFTdHJpbmcmIHByb3BlcnR5TmFtZSwgZG91YmxlIHRpbWUsIGNv
bnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CkBAIC0xODQsNiArMTg5LDcgQEAgcHJpdmF0ZToKICAg
ICBRQmFzaWNUaW1lciBtX3RpbWVvdXRUaW1lcjsKICAgICBRV2ViRnJhbWUqIG1fdG9wTG9hZGlu
Z0ZyYW1lOwogICAgIFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlKiBtX2RydDsKKyAgICBRRFJUU3Vw
cG9ydCogbV9kcnRTdXBwb3J0OwogICAgIFFXZWJIaXN0b3J5KiBtX3dlYkhpc3Rvcnk7CiB9Owog
Ci0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51248</attachid>
            <date>2010-03-21 09:03:45 -0700</date>
            <delta_ts>2010-03-22 15:33:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Add-support-for-LayoutTestController-commands.patch</filename>
            <type>text/plain</type>
            <size>72533</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSA0NDY4MGYzMjhkMTdhZTIyZmUyNmNjZjIwOWNlMTYzY2E4ODBkYjVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDE1IE1hciAyMDEwIDIyOjQ5OjI5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1
cHBvcnQgZm9yIExheW91dFRlc3RDb250cm9sbGVyIGNvbW1hbmRzOgogICAgICAgICAgIHNldFNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZAogICAgICAgICAgIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQKICAgICAgICAgICBleGVjQ29tbWFuZAogICAgICAgICAgIGlzQ29tbWFuZEVu
YWJsZWQKCiAgICAgICAgVW5za2lwIHRlc3RzOgogICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvc21h
cnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCiAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC8xOTA4
OS5odG1sCiAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtaW1hZ2UtaW4tYW5jaG9y
Lmh0bWwKICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2VuYWJsaW5nLWFuZC1zZWxlY3Rpb24t
Mi5odG1sCiAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1j
cmFzaC5odG1sCiAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFj
ZS1pbWctY3Jhc2guaHRtbAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdo
aXRlc3BhY2UuaHRtbAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1saW5lLmh0bWwK
ICAgICAgICBlZGl0aW5nL2RlbGV0aW5nLzUzMDAzNzkuaHRtbAogICAgICAgIGVkaXRpbmcvZGVs
ZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCiAgICAgICAgZWRpdGluZy9kZWxldGluZy9zbWFy
dC1kZWxldGUtMDA0Lmh0bWwKICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRt
bAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMi5odG1sCgogICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg0NAotLS0KIExheW91dFRlc3Rz
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOSArKwogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCAgICAgICAgICAgICAgICAgICAgfCAgIDE1IC0KIC4u
Li9lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDMtZXhwZWN0ZWQudHh0IHwgICAzMiAr
LQogLi4uL2VkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC1leHBlY3RlZC50eHQgfCAg
IDMyICstCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDggKwogV2ViQ29yZS9XZWJDb3JlLnBybyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgICAxICsKIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCAgICAgICAgICAgICAg
ICAgICAgICAgIHwgIDE4OCAtLS0tLS0tLS0tCiBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5j
cHAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDgxICstLS0tLQogV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYktpdC9xdC9B
cGkvcXdlYnBhZ2VfcC5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJLaXQv
cXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAgICAgICAgICAgICAgICB8ICAgMTUgLQogV2Vi
S2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDY5ICsr
KysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwIHwg
IDM2NiArKysrKysrKysrKysrKysrKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydC5oICAgfCAgIDc5ICsrKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuY3BwICAgICAgICB8ICAgMTQgKy0KIFdlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oICAgICAgICAgIHwgICAgMiArLQogV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAgICAgICAgICAgfCAgIDIwICstCiBXZWJLaXRU
b29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTAgKysrCiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcCB8ICAgMjMg
Ky0KIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaCAgIHwg
ICAgMiArCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5jcHAg
ICB8ICAgMTUgKy0KIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0
LmggICAgIHwgICAgNiArLQogLi4uL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwICAgfCAgIDgxICsrKy0tCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5oICAgICB8ICAgIDggKy0KIDI1IGZpbGVzIGNoYW5nZWQsIDczNSBpbnNl
cnRpb25zKCspLCA0MDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMDEwZDFiMS4uNjg1MGRlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEwLTAzLTE4
ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTGF5b3V0VGVzdENv
bnRyb2xsZXIgY29tbWFuZHM6CisgICAgICAgICAgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVk
CisgICAgICAgICAgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZAorICAgICAgICAg
IGV4ZWNDb21tYW5kCisgICAgICAgICAgaXNDb21tYW5kRW5hYmxlZAorCisgICAgICAgIFVuc2tp
cCB0ZXN0czoKKyAgICAgICAgZWRpdGluZy9kZWxldGluZy9zbWFydC1lZGl0aW5nLWRpc2FibGVk
Lmh0bWwKKyAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC8xOTA4OS5odG1sCisgICAgICAgIGVk
aXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLWltYWdlLWluLWFuY2hvci5odG1sCisgICAgICAgIGVk
aXRpbmcvZXhlY0NvbW1hbmQvZW5hYmxpbmctYW5kLXNlbGVjdGlvbi0yLmh0bWwKKyAgICAgICAg
ZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1jcmFzaC5odG1sCisgICAg
ICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtaW1nLWNyYXNoLmh0
bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5odG1s
CisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1saW5lLmh0bWwKKyAgICAgICAgZWRp
dGluZy9kZWxldGluZy81MzAwMzc5Lmh0bWwKKyAgICAgICAgZWRpdGluZy9kZWxldGluZy9zbWFy
dC1kZWxldGUtMDAzLmh0bWwKKyAgICAgICAgZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUt
MDA0Lmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLmh0bWwKKyAgICAg
ICAgZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0yLmh0bWwKKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4NDQKKworICAgICAgICAqIHBsYXRmb3Jt
L3F0L1NraXBwZWQ6CisKIDIwMTAtMDMtMTkgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQKaW5kZXggMTZhOTYwZS4uOTU0ZmMzMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkCkBAIC0yMjIsOSArMjIyLDYgQEAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2st
YmVzaWRlLWNyLXNwYW4uaHRtbAogIyBNaXNzaW5nIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhG
aWxlcygpCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWZyYW1lcy5o
dG1sCiAKLSMgTWlzc2luZyBsYXlvdXRUZXN0Q29udHJvbGxlci5leGVjQ29tbWFuZCgpCi1lZGl0
aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1pbWFnZS1pbi1hbmNob3IuaHRtbCAKLQogIyBNaXNzaW5n
IGxheW91dFRlc3RDb250cm9sbGVyLnNldEFsd2F5c0FjY2VwdENvb2tpZXMoKQogaHR0cC90ZXN0
cy9wbHVnaW5zL3RoaXJkLXBhcnR5LWNvb2tpZS1hY2NlcHQtcG9saWN5Lmh0bWwKIApAQCAtMjg3
LDcgKzI4NCw2IEBAIGZhc3QvcnVieS9ydWJ5RE9NLXJlbW92ZS10ZXh0Mi5odG1sCiAKICMgLS0t
LS0tLSBmYWlsaW5nIGVkaXRpbmcgdGVzdHMKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLXRvLWVu
ZC1vZi1wYXJhZ3JhcGguaHRtbAotZWRpdGluZy9leGVjQ29tbWFuZC9lbmFibGluZy1hbmQtc2Vs
ZWN0aW9uLTIuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC9uc3Jlc3BvbmRlci1pbmRlbnQuaHRt
bAogZWRpdGluZy9leGVjQ29tbWFuZC9uc3Jlc3BvbmRlci1vdXRkZW50Lmh0bWwKIGVkaXRpbmcv
aW5wdXQvZW1hY3MtY3RybC1vLmh0bWwKQEAgLTEwNzYsNyArMTA3Miw2IEBAIGZhc3QvZm9ybXMv
bWVudWxpc3Qtd2lkdGgtY2hhbmdlLmh0bWwKICMgcHV0IGludG8gdGhlIHNraXBwZWQgbGlzdCBm
b3Igbm93IHRvIGhhdmUgc29tZSBraW5kIG9mCiAjIHJlZmVyZW5jZSwgc28gd2UgZG9uJ3QgaW50
cm9kdWNlIHJlZ3Jlc3Npb25zLgogZWRpdGluZy9kZWxldGluZy81MTQ0MTM5LTIuaHRtbAotZWRp
dGluZy9kZWxldGluZy81MzAwMzc5Lmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWJsb2Nr
LW1lcmdlLWNvbnRlbnRzLTAwMS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1ibG9jay1t
ZXJnZS1jb250ZW50cy0wMTkuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtYmxvY2stbWVy
Z2UtY29udGVudHMtMDIwLmh0bWwKQEAgLTEwODcsOCArMTA4Miw2IEBAIGVkaXRpbmcvZGVsZXRp
bmcvZGVsZXRlLWxpbmUtZW5kLXdzLTAwMS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1s
aW5lLWVuZC13cy0wMDIuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtdG8tc2VsZWN0LXRh
YmxlLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRpb25VSS1zaW5nbGUtaW5zdGFuY2UuaHRt
bAotZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDAzLmh0bWwKLWVkaXRpbmcvZGVsZXRp
bmcvc21hcnQtZGVsZXRlLTAwNC5odG1sCiBlZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MjA0ODguaHRt
bAogZWRpdGluZy9leGVjQ29tbWFuZC80OTIwNzQyLTEuaHRtbAogZWRpdGluZy9leGVjQ29tbWFu
ZC9jcmVhdGUtbGlzdC13aXRoLWhyLmh0bWwKQEAgLTExMjAsMTUgKzExMTMsMTIgQEAgZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDAzLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9xdWly
a3MtbW9kZS1ici0xLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzQ5ODM4NTguaHRtbAogZWRpdGlu
Zy9zZWxlY3Rpb24vNTEzNjY5Ni5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRt
bAotZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0yLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Fm
dGVyLWxpbmUtd3JhcC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9lbmQtb2YtZG9jdW1lbnQuaHRt
bAogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1sZWZ0LXJpZ2h0Lmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uL3NlbGVjdC1hbGwtMDAxLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtMDAy
Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtMDAzLmh0bWwKLWVkaXRpbmcvc2Vs
ZWN0aW9uL3NlbGVjdC1saW5lLmh0bWwKIGVkaXRpbmcvc3R5bGUvYXBwbGUtc3R5bGUtZWRpdGFi
bGUtbWl4Lmh0bWwKIGVkaXRpbmcvc3R5bGUvY3JlYXRlLWJsb2NrLWZvci1zdHlsZS0wMTIuaHRt
bAogZWRpdGluZy9zdHlsZS9mb250LWZhbWlseS13aXRoLXNwYWNlLmh0bWwKQEAgLTQ3NDQsMTUg
KzQ3MzQsMTAgQEAgZG9tL3hodG1sL2xldmVsMy9jb3JlL2Nhbm9uaWNhbGZvcm0wOS54aHRtbAog
ZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1cmUtMDAxLmh0bWwKIGVkaXRpbmcvZGVsZXRp
bmcvZGVsZXRlLWxpZ2F0dXJlLTAwMi5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdh
dHVyZS0wMDMuaHRtbAotZWRpdGluZy9kZWxldGluZy9zbWFydC1lZGl0aW5nLWRpc2FibGVkLmh0
bWwKLWVkaXRpbmcvZXhlY0NvbW1hbmQvMTkwODkuaHRtbAogZWRpdGluZy9pbnNlcnRpbmcvNTgw
MzcwNi0xLmh0bWwKIGVkaXRpbmcvaW5zZXJ0aW5nLzU5OTQ0ODAtMi5odG1sCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZmlsZXMtZHVyaW5nLXBhZ2UtZHJhZ3MuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJk
L2dldC1kYXRhLXRleHQtcGxhaW4tZHJvcC5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVj
bGljay13aGl0ZXNwYWNlLWNyYXNoLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNr
LXdoaXRlc3BhY2UtaW1nLWNyYXNoLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNr
LXdoaXRlc3BhY2UuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZHJhZy1zdGFydC1ldmVudC1jbGll
bnQteC15Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tYmlkaS5odG1s
CiBlZGl0aW5nL3NlbGVjdGlvbi9oaXQtdGVzdC1hbm9ueW1vdXMuaHRtbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDAz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvZGVsZXRpbmcv
c21hcnQtZGVsZXRlLTAwMy1leHBlY3RlZC50eHQKaW5kZXggY2E3M2YzMy4uOWQzNjBkOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9kZWxldGluZy9zbWFydC1k
ZWxldGUtMDAzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0
aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDMtZXhwZWN0ZWQudHh0CkBAIC0xLDExICsxLDEx
IEBACi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdl
IGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mIERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRp
bmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byAzIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRp
b24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwp
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5n
ZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZB
TFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgot
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVE
T01SYW5nZTpyYW5nZSBmcm9tIDQgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byA3IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJ
TkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9m
ICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNyBvZiAjdGV4dCA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9mICN0
ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiAjdGV4dCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3du
c3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxl
dGVET01SYW5nZTpyYW5nZSBmcm9tIDQgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0byAxIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VE
SVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAw
IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9m
ICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
IEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlm
aWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCkBAIC0xMywxMyArMTMsMTUgQEAg
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
ICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAogICAgIFJlbmRlckJv
ZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0
ICgwLDApIHNpemUgNzg0eDM4Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDc2NHgzOAotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM5NDogIlRoaXMg
dGVzdHMgZGVsZXRpbmcgYSBzZWxlY3Rpb24gY3JlYXRlZCB3aXRoIGEgd29yZCBncmFudWxhcml0
eS4gIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgzOTQsMCkgd2lkdGggMzQ1OiAiVG8gcnVuIGl0
IG1hbnVhbGx5LCBkb3VibGUgY2xpY2sgb24gJ2JhcicgYW5kIGhpdCBkZWxldGUuICIKLSAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoNzM5LDApIHdpZHRoIDI1OiAiWW91IgotICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDE5KSB3aWR0aCAxMjg6ICJzaG91bGQgc2VlICdmb28gYmFyJy4iCi0gICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1Mikgc2l6ZSA3ODR4MTkKLSAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNTF4MTkKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA1MTogImZvbyAgYmF6IgotY2FyZXQ6IHBvc2l0aW9uIDQgb2YgY2hpbGQgMCB7I3Rl
eHR9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0g
b2YgZG9jdW1lbnQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgzNgor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3Njh4MzYKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzOTI6ICJUaGlzIHRlc3RzIGRlbGV0aW5nIGEgc2Vs
ZWN0aW9uIGNyZWF0ZWQgd2l0aCBhIHdvcmQgZ3JhbnVsYXJpdHkuICIKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMzkyLDApIHdpZHRoIDM0ODogIlRvIHJ1biBpdCBtYW51YWxseSwgZG91YmxlIGNs
aWNrIG9uICdiYXInIGFuZCBoaXQgZGVsZXRlLiAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDc0
MCwwKSB3aWR0aCAyODogIllvdSIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGgg
MTI3OiAic2hvdWxkIHNlZSAnZm9vIGJheicuIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDAsNTIpIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDIxeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjE6ICJmb28iCisg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjEsMCkgc2l6ZSAyNngxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgyMSwwKSB3aWR0aCAyNjogIiBiYXoiCitjYXJldDogcG9zaXRpb24gMyBv
ZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBj
aGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDA0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC1l
eHBlY3RlZC50eHQKaW5kZXggNTgzNDIyZi4uMGYyOTcxMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDA0LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0
LWRlbGV0ZS0wMDQtZXhwZWN0ZWQudHh0CkBAIC0xLDExICsxLDExIEBACi1FRElUSU5HIERFTEVH
QVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50CitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdl
IGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mIERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5F
ZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdB
VEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAj
dGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9u
QWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6
cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
NSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSA0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBv
ZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZTpyYW5nZSBmcm9t
IDQgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA3IG9mICN0ZXh0
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9mICN0ZXh0ID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZTpyYW5nZSBm
cm9tIDQgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0
ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0ID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCkBAIC0xMywxMyArMTMsMTUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgUmVuZGVyQmxvY2sge0hU
TUx9IGF0ICgwLDApIHNpemUgODAweDYwMAogICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgp
IHNpemUgNzg0eDU4NAotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDM4
Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc0MHgzOAotICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM5NDogIlRoaXMgdGVzdHMgZGVsZXRpbmcgYSBz
ZWxlY3Rpb24gY3JlYXRlZCB3aXRoIGEgd29yZCBncmFudWxhcml0eS4gIgotICAgICAgICAgIHRl
eHQgcnVuIGF0ICgzOTQsMCkgd2lkdGggMzQ2OiAiVG8gcnVuIGl0IG1hbnVhbGx5LCBkb3VibGUg
Y2xpY2sgb24gJ2JhcicgYW5kIGhpdCBmb3J3YXJkIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDE5KSB3aWR0aCA0NzogImRlbGV0ZS4gIgotICAgICAgICAgIHRleHQgcnVuIGF0ICg0NywxOSkg
d2lkdGggMTU3OiAiWW91IHNob3VsZCBzZWUgJ2ZvbyBiYXInLiIKLSAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDUyKSBzaXplIDc4NHgxOQotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSA1MXgxOQotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUx
OiAiZm9vICBiYXoiCi1jYXJldDogcG9zaXRpb24gNCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hp
bGQgMiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVu
dAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDM2CisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc0NXgzNgorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDM5MjogIlRoaXMgdGVzdHMgZGVsZXRpbmcgYSBzZWxlY3Rpb24gY3Jl
YXRlZCB3aXRoIGEgd29yZCBncmFudWxhcml0eS4gIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgz
OTIsMCkgd2lkdGggMzUzOiAiVG8gcnVuIGl0IG1hbnVhbGx5LCBkb3VibGUgY2xpY2sgb24gJ2Jh
cicgYW5kIGhpdCBmb3J3YXJkIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA0
NTogImRlbGV0ZS4gIgorICAgICAgICAgIHRleHQgcnVuIGF0ICg0NSwxOCkgd2lkdGggMTU5OiAi
WW91IHNob3VsZCBzZWUgJ2ZvbyBiYXonLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgw
LDUyKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAyMXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIxOiAiZm9vIgorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIxLDApIHNpemUgMjZ4MTgKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMjEsMCkgd2lkdGggMjY6ICIgYmF6IgorY2FyZXQ6IHBvc2l0aW9uIDMgb2Yg
Y2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hp
bGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTYyNDAyMi4uNTA0MDczYyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMSBAQAor
MjAxMC0wMy0xOCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0CisKKyAgICAgICAgKiBXZWJDb3JlLnBybzogQWRk
IER1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKKwogMjAxMC0wMy0yMCAgSm9zZXBoIFBlY29yYXJv
ICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHpl
ci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJv
CmluZGV4IDEyMDJhZmYuLjliOWI5NjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8K
KysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjA4Nyw2ICsyMDg3LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBc
CiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3Bw
IFwKICAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcCBcCisg
ICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAg
XAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAgXAog
ICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0LmNwcCBcCiAgICAg
Li4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIFwKZGlm
ZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdl
YmZyYW1lLmNwcAppbmRleCA4Njk2NDM3Li44NDJjMzM0IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
QXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC04
OCwxOTMgKzg4LDYgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCiBleHRlcm4gUV9HVUlfRVhQT1JUIGlu
dCBxdF9kZWZhdWx0RHBpKCk7CiBRVF9FTkRfTkFNRVNQQUNFCiAKLXZvaWQgUVdFQktJVF9FWFBP
UlQgcXRfZHJ0X3NldE1lZGlhVHlwZShRV2ViRnJhbWUqIHFmcmFtZSwgY29uc3QgUVN0cmluZyYg
dHlwZSkKLXsKLSAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpj
b3JlKHFmcmFtZSk7Ci0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXco
KTsKLSAgICB2aWV3LT5zZXRNZWRpYVR5cGUodHlwZSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCkt
PnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKLSAgICB2aWV3LT5mb3JjZUxheW91dCgpOwotfQotCi1i
b29sIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9oYXNEb2N1bWVudEVsZW1lbnQoUVdlYkZyYW1lKiBx
ZnJhbWUpCi17Ci0gICAgcmV0dXJuIFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKS0+ZG9j
dW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRf
ZHJ0X3NldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKFFXZWJGcmFtZSogcWZyYW1lLCBib29s
IGVuYWJsZWQpCi17Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgRnJhbWUq
IGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOwotICAgIEluc3BlY3RvckNv
bnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCk7Ci0gICAgaWYgKCFjb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGVuYWJs
ZWQpCi0gICAgICAgIGNvbnRyb2xsZXItPmVuYWJsZVByb2ZpbGVyKCk7Ci0gICAgZWxzZQotICAg
ICAgICBjb250cm9sbGVyLT5kaXNhYmxlUHJvZmlsZXIoKTsKLSNlbmRpZgotfQotCi0vLyBQYXVz
ZSBhIGdpdmVuIENTUyBhbmltYXRpb24gb3IgdHJhbnNpdGlvbiBvbiB0aGUgdGFyZ2V0IG5vZGUg
YXQgYSBzcGVjaWZpYyB0aW1lLgotLy8gSWYgdGhlIGFuaW1hdGlvbiBvciB0cmFuc2l0aW9uIGlz
IGFscmVhZHkgcGF1c2VkLCBpdCB3aWxsIHVwZGF0ZSBpdHMgcGF1c2UgdGltZS4KLS8vIFRoaXMg
bWV0aG9kIGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGVzdGluZyB0aGUgQ1NTIGFu
aW1hdGlvbiBhbmQgdHJhbnNpdGlvbiBzeXN0ZW0uCi1ib29sIFFXRUJLSVRfRVhQT1JUIHF0X2Ry
dF9wYXVzZUFuaW1hdGlvbihRV2ViRnJhbWUgKnFmcmFtZSwgY29uc3QgUVN0cmluZyAmYW5pbWF0
aW9uTmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCkKLXsKLSAgICBG
cmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQW5pbWF0aW9uQ29udHJvbGxlciog
Y29udHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1l
bnQoKTsKLSAgICBRX0FTU0VSVChkb2MpOwotCi0gICAgTm9kZSogY29yZU5vZGUgPSBkb2MtPmdl
dEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5vZGUt
PnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjb250cm9s
bGVyLT5wYXVzZUFuaW1hdGlvbkF0VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwgYW5pbWF0aW9u
TmFtZSwgdGltZSk7Ci19Ci0KLWJvb2wgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNlVHJhbnNp
dGlvbk9mUHJvcGVydHkoUVdlYkZyYW1lICpxZnJhbWUsIGNvbnN0IFFTdHJpbmcgJnByb3BlcnR5
TmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCkKLXsKLSAgICBGcmFt
ZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAgaWYgKCFmcmFt
ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29u
dHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQo
KTsKLSAgICBRX0FTU0VSVChkb2MpOwotCi0gICAgTm9kZSogY29yZU5vZGUgPSBkb2MtPmdldEVs
ZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5vZGUtPnJl
bmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjb250cm9sbGVy
LT5wYXVzZVRyYW5zaXRpb25BdFRpbWUoY29yZU5vZGUtPnJlbmRlcmVyKCksIHByb3BlcnR5TmFt
ZSwgdGltZSk7Ci19Ci0KLS8vIFBhdXNlIGEgZ2l2ZW4gU1ZHIGFuaW1hdGlvbiBvbiB0aGUgdGFy
Z2V0IG5vZGUgYXQgYSBzcGVjaWZpYyB0aW1lLgotLy8gVGhpcyBtZXRob2QgaXMgb25seSBpbnRl
bmRlZCB0byBiZSB1c2VkIGZvciB0ZXN0aW5nIHRoZSBTVkcgYW5pbWF0aW9uIHN5c3RlbS4KLWJv
b2wgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFtZSAqcWZy
YW1lLCBjb25zdCBRU3RyaW5nICZhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJp
bmcgJmVsZW1lbnRJZCkKLXsKLSNpZiAhRU5BQkxFKFNWRykKLSAgICByZXR1cm4gZmFsc2U7Ci0j
ZWxzZQotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsK
LSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBEb2N1bWVudCog
ZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgUV9BU1NFUlQoZG9jKTsKLQotICAgIGlmICgh
ZG9jLT5zdmdFeHRlbnNpb25zKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIE5vZGUq
IGNvcmVOb2RlID0gZG9jLT5nZXRFbGVtZW50QnlJZChhbmltYXRpb25JZCk7Ci0gICAgaWYgKCFj
b3JlTm9kZSB8fCAhU1ZHU01JTEVsZW1lbnQ6OmlzU01JTEVsZW1lbnQoY29yZU5vZGUpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZG9jLT5hY2Nlc3NTVkdFeHRlbnNpb25z
KCktPnNhbXBsZUFuaW1hdGlvbkF0VGltZShlbGVtZW50SWQsIHN0YXRpY19jYXN0PFNWR1NNSUxF
bGVtZW50Kj4oY29yZU5vZGUpLCB0aW1lKTsKLSNlbmRpZgotfQotCi0vLyBSZXR1cm5zIHRoZSB0
b3RhbCBudW1iZXIgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9ucyAoaW5jbHVkZXMgYm90
aCBDU1MgdHJhbnNpdGlvbnMgYW5kIENTUyBhbmltYXRpb25zKS4KLWludCBRV0VCS0lUX0VYUE9S
VCBxdF9kcnRfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFFXZWJGcmFtZSAqcWZyYW1lKQotewot
ICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKLSAgICBp
ZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBbmltYXRpb25Db250cm9s
bGVyKiBjb250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOwotICAgIGlmICghY29udHJvbGxl
cikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGNvbnRyb2xsZXItPm51bWJl
ck9mQWN0aXZlQW5pbWF0aW9ucygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9j
bGVhckZyYW1lTmFtZShRV2ViRnJhbWUqIHFGcmFtZSkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBR
V2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgZnJhbWUtPnRyZWUoKS0+Y2xlYXJO
YW1lKCk7Ci19Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfamF2YVNjcmlwdE9iamVjdHND
b3VudCgpCi17Ci0gICAgcmV0dXJuIEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRh
KCktPmhlYXAuZ2xvYmFsT2JqZWN0Q291bnQoKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBx
dF9kcnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCkKLXsKLSAgICBnY0NvbnRyb2xsZXIoKS5n
YXJiYWdlQ29sbGVjdE5vdygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9nYXJi
YWdlQ29sbGVjdG9yX2NvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUp
Ci17Ci0gICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZEZv
ckRlYnVnZ2luZyh3YWl0VW50aWxEb25lKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdmFsdWUgb2Yg
Y291bnRlciBpbiB0aGUgZWxlbWVudCBzcGVjaWZpZWQgYnkgXGEgaWQuCi1RU3RyaW5nIFFXRUJL
SVRfRVhQT1JUIHF0X2RydF9jb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIHFG
cmFtZSwgY29uc3QgUVN0cmluZyYgaWQpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1l
UHJpdmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKSkgewotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQtPmdl
dEVsZW1lbnRCeUlkKGlkKTsKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmNvdW50ZXJWYWx1ZUZv
ckVsZW1lbnQoZWxlbWVudCk7Ci0gICAgfQotICAgIHJldHVybiBRU3RyaW5nKCk7Ci19Ci0KLWlu
dCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFFXZWJGcmFt
ZSogcUZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkK
LXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0g
ICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgRWxlbWVudCogZWxlbWVu
dCA9IGZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmcoaWQpKTsK
LSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBQcmlu
dENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KGVsZW1lbnQsIEZsb2F0U2l6ZSh3aWR0aCwg
aGVpZ2h0KSk7Ci19Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfbnVtYmVyT2ZQYWdlcyhR
V2ViRnJhbWUqIHFGcmFtZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLXsKLSAgICBGcmFt
ZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKCFmcmFt
ZSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6bnVtYmVy
T2ZQYWdlcyhmcmFtZSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLX0KLQotLy8gU3VzcGVu
ZCBhY3RpdmUgRE9NIG9iamVjdHMgaW4gdGhpcyBmcmFtZS4KLXZvaWQgUVdFQktJVF9FWFBPUlQg
cXRfc3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBxRnJhbWUpCi17Ci0gICAgRnJh
bWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGlmIChmcmFt
ZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN1c3BlbmRBY3RpdmVE
T01PYmplY3RzKCk7Ci19Ci0gICAgICAgICAgICAKLS8vIFJlc3VtZSBhY3RpdmUgRE9NIG9iamVj
dHMgaW4gdGhpcyBmcmFtZS4KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfcmVzdW1lQWN0aXZlRE9N
T2JqZWN0cyhRV2ViRnJhbWUqIHFGcmFtZSkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJh
bWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQotICAg
ICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpOwotfSAgICAg
ICAgICAgICAgICAgICAgICAgIAotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9ldmFsdWF0
ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChRV2ViRnJhbWUqIHFGcmFtZSwgaW50IHdvcmxkSWQsIGNv
bnN0IFFTdHJpbmcmIHNjcmlwdCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2
YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKGZyYW1lKQotICAgICAgICBKU0M6OkpTVmFsdWUg
cmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0SW5Xb3JsZChtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSwgc2NyaXB0LCB0cnVlKS5qc1ZhbHVlKCk7Ci19Ci0KIHN0YXRpYyBib29s
IHdlYmZyYW1lX3Njcm9sbE92ZXJmbG93KFdlYkNvcmU6OkZyYW1lKiBmcmFtZSwgaW50IGR4LCBp
bnQgZHksIGNvbnN0IFFQb2ludCYgcG9zKQogewogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5k
b2N1bWVudCgpIHx8ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkpCkBAIC0zNTQsNyArMTY3LDYgQEAg
dm9pZCBRV0VCS0lUX0VYUE9SVCBxdHdlYmtpdF93ZWJmcmFtZV9zY3JvbGxSZWN1cnNpdmVseShR
V2ViRnJhbWUqIHFGcmFtZSwgaW50IGQKICAgICB9CiB9CiAKLQogUVdlYkZyYW1lRGF0YTo6UVdl
YkZyYW1lRGF0YShXZWJDb3JlOjpQYWdlKiBwYXJlbnRQYWdlLCBXZWJDb3JlOjpGcmFtZSogcGFy
ZW50RnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJGcmFtZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgZnJhbWVOYW1lKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuaCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKaW5kZXgg
Y2U5ODA1Yi4uNzNjYzAzZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAor
KysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFFX
ZWJTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFFXZWJFbGVtZW50OwogY2xhc3MgUVdlYkVsZW1lbnRD
b2xsZWN0aW9uOwogCitjbGFzcyBRRFJUU3VwcG9ydDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBXaWRnZXRQcml2YXRlOwogICAgIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50UXQ7CkBA
IC0yMjUsNiArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2U7CiAg
ICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlUHJpdmF0ZTsKICAgICBmcmllbmQgY2xhc3MgUVdlYkZy
YW1lUHJpdmF0ZTsKKyAgICBmcmllbmQgY2xhc3MgUURSVFN1cHBvcnQ7CiAgICAgZnJpZW5kIGNs
YXNzIFdlYkNvcmU6OldpZGdldFByaXZhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkNocm9tZUNsaWVu
dFF0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAppbmRleCBhZDgxMjI3Li45OTg0NjUyIDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApA
QCAtMTE5LDg2ICsxMTksNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBR
V0VCS0lUX0VYUE9SVCBxdF9kcnRfb3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKQotewotICAg
IFBsdWdpbkRhdGFiYXNlKiBkYiA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKC8q
IHBvcHVsYXRlICovIGZhbHNlKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwotICAgIFN0
cmluZyBxdFBhdGgocWdldGVudigiUVRXRUJLSVRfUExVR0lOX1BBVEgiKS5kYXRhKCkpOwotICAg
IHF0UGF0aC5zcGxpdChVQ2hhcignOicpLCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBmYWxzZSwg
cGF0aHMpOwotCi0gICAgZGItPnNldFBsdWdpbkRpcmVjdG9yaWVzKHBhdGhzKTsKLSAgICBkYi0+
cmVmcmVzaCgpOwotfQotCi1pbnQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3dvcmtlclRocmVhZENv
dW50KCkKLXsKLSNpZiBFTkFCTEUoV09SS0VSUykKLSAgICByZXR1cm4gV2ViQ29yZTo6V29ya2Vy
VGhyZWFkOjp3b3JrZXJUaHJlYWRDb3VudCgpOwotI2Vsc2UKLSAgICByZXR1cm4gMDsKLSNlbmRp
ZgotfQotCiBib29sIFFXZWJQYWdlUHJpdmF0ZTo6ZHJ0UnVuID0gZmFsc2U7Ci12b2lkIFFXRUJL
SVRfRVhQT1JUIHF0X2RydF9ydW4oYm9vbCBiKQotewotICAgIFFXZWJQYWdlUHJpdmF0ZTo6ZHJ0
UnVuID0gYjsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfc2V0RnJhbWVTZXRGbGF0
dGVuaW5nRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9vbCBlbmFibGVkKQotewotICAgIFFXZWJQ
YWdlUHJpdmF0ZTo6Y29yZShwYWdlKS0+c2V0dGluZ3MoKS0+c2V0RnJhbWVTZXRGbGF0dGVuaW5n
RW5hYmxlZChlbmFibGVkKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF93ZWJwYWdlX3Nl
dEdyb3VwTmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0cmluZyYgZ3JvdXBOYW1lKQotewot
ICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXRHcm91cE5hbWUoZ3JvdXBOYW1lKTsKLX0KLQot
UVN0cmluZyBRV0VCS0lUX0VYUE9SVCBxdF93ZWJwYWdlX2dyb3VwTmFtZShRV2ViUGFnZSogcGFn
ZSkKLXsKLSAgICByZXR1cm4gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmdyb3VwTmFtZSgpOwotfQot
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3dlYmlu
c3BlY3Rvcl9leGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBwYWdlLCBsb25nIGNhbGxJZCwgY29uc3Qg
UVN0cmluZyYgc2NyaXB0KQotewotICAgIGlmICghcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHBhZ2UtPmhhbmRsZSgpLT5w
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoY2Fs
bElkLCBzY3JpcHQpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF93ZWJpbnNwZWN0
b3JfY2xvc2UoUVdlYlBhZ2UqIHBhZ2UpCi17Ci0gICAgaWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICByZXR1cm47Ci0gICAgcGFnZS0+aGFu
ZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y2xvc2UoKTsKLX0KLQotdm9pZCBR
V0VCS0lUX0VYUE9SVCBxdF9kcnRfd2ViaW5zcGVjdG9yX3Nob3coUVdlYlBhZ2UqIHBhZ2UpCi17
Ci0gICAgaWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQot
ICAgICAgICByZXR1cm47Ci0gICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+c2hvdygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9zZXRUaW1l
bGluZVByb2ZpbGluZ0VuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxlZCkKLXsKLSAg
ICBJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gcGFnZS0+aGFuZGxlKCktPnBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAgIHJl
dHVybjsKLSAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAgY29udHJvbGxlci0+c3RhcnRUaW1lbGlu
ZVByb2ZpbGVyKCk7Ci0gICAgZWxzZQotICAgICAgICBjb250cm9sbGVyLT5zdG9wVGltZWxpbmVQ
cm9maWxlcigpOwotfQotI2VuZGlmCi0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X2VuYWJs
ZUNhcmV0QnJvd3NpbmcoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgdmFsdWUpCi17Ci0gICAgcGFnZS0+
aGFuZGxlKCktPnBhZ2UtPnNldHRpbmdzKCktPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKHZhbHVl
KTsKLX0KIAogY2xhc3MgUVdlYlBhZ2VXaWRnZXRDbGllbnQgOiBwdWJsaWMgUVdlYlBhZ2VDbGll
bnQgewogcHVibGljOgpAQCAtNDYzLDYgKzM4NCw4IEBAIFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBh
Z2VQcml2YXRlKFFXZWJQYWdlICpxcSkKICAgICBwbHVnaW5GYWN0b3J5ID0gMDsKICAgICBpbnNp
ZGVPcGVuQ2FsbCA9IGZhbHNlOwogICAgIGZvcndhcmRVbnN1cHBvcnRlZENvbnRlbnQgPSBmYWxz
ZTsKKyAgICBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSBmYWxzZTsKKyAgICBzZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkID0gZmFsc2U7CiAgICAgZWRpdGFibGUgPSBmYWxzZTsKICAg
ICB1c2VGaXhlZExheW91dCA9IGZhbHNlOwogICAgIGxpbmtQb2xpY3kgPSBRV2ViUGFnZTo6RG9u
dERlbGVnYXRlTGlua3M7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmggYi9X
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKaW5kZXggMDc2ZmI3Yy4uODBhNjA3OCAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2Uu
aApAQCAtMzY1LDYgKzM2NSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFu
ZGxlcjsKKyAgICBmcmllbmQgY2xhc3MgUURSVFN1cHBvcnQ7CiB9OwogCiBRX0RFQ0xBUkVfT1BF
UkFUT1JTX0ZPUl9GTEFHUyhRV2ViUGFnZTo6RmluZEZsYWdzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L0FwaS9xd2VicGFnZV9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAppbmRleCAx
NWRkZmIyLi5kOGJhNWRkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAor
KysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaApAQCAtMTYyLDYgKzE2Miw4IEBAIHB1Ymxp
YzoKICAgICBRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm5ldHdvcmtNYW5hZ2VyOwogCiAgICAgYm9v
bCBmb3J3YXJkVW5zdXBwb3J0ZWRDb250ZW50OworICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVF
bmFibGVkOworICAgIGJvb2wgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDsKICAgICBR
V2ViUGFnZTo6TGlua0RlbGVnYXRpb25Qb2xpY3kgbGlua1BvbGljeTsKIAogICAgIFFTaXplIHZp
ZXdwb3J0U2l6ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2lu
LmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcAppbmRleCA2YzI2YmQ3
Li5iNjlmMjRkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5j
cHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCkBAIC0zMCwyMSAr
MzAsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBRV0VCS0lUX0VYUE9S
VCBxdF9kcnRfd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBzb3VyY2VP
cmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFTdHJpbmcm
IGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKLXsKLSAg
ICBTZWN1cml0eU9yaWdpbjo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbigqU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwg
ZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci19Ci0KLXZvaWQg
UVdFQktJVF9FWFBPUlQgcXRfZHJ0X3Jlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpCi17Ci0g
ICAgU2VjdXJpdHlPcmlnaW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwotfQotCi12
b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9y
VVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpCi17Ci0gICAg
U2VjdXJpdHlPcmlnaW46OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUo
Zm9yYmlkZGVuLCBzY2hlbWUpOwotfQotCiAvKiEKICAgICBcY2xhc3MgUVdlYlNlY3VyaXR5T3Jp
Z2luCiAgICAgXHNpbmNlIDQuNQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dl
YktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNjI0ZWYxOC4uMGRiMDkxYiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIg
QEAKKzIwMTAtMDMtMTggIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgY2xhc3Mg
UURSVFN1cHBvcnQuIFRoaXMgbm93IGhvdXNlcyBhbGwgdGhlIHF0X2RydF8qIGZ1bmN0aW9ucwor
ICAgICAgICB0aGF0IHByZXZpb3VzbHkgbGl2ZWQgaW4gcXdlYnBhZ2UgYW5kIHF3ZWJmcmFtZS4K
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIgY29tbWFuZHM6
CisgICAgICAgICAgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkCisgICAgICAgICAgc2V0U2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZAorICAgICAgICAgIGV4ZWNDb21tYW5kCisgICAg
ICAgICAgaXNDb21tYW5kRW5hYmxlZAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNTg0NAorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6Cisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBBcGkv
cXdlYnNlY3VyaXR5b3JpZ2luLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFFEUlRTdXBwb3J0OjpRRFJUU3Vw
cG9ydCk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6flFEUlRTdXBwb3J0KToKKyAgICAgICAgKFFE
UlRTdXBwb3J0OjpvdmVyd3JpdGVQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgIChRRFJUU3Vw
cG9ydDo6d29ya2VyVGhyZWFkQ291bnQpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OnJ1bik6Cisg
ICAgICAgIChRRFJUU3VwcG9ydDo6c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZCk6CisgICAg
ICAgIChRRFJUU3VwcG9ydDo6d2ViUGFnZVNldEdyb3VwTmFtZSk6CisgICAgICAgIChRRFJUU3Vw
cG9ydDo6d2ViUGFnZUdyb3VwTmFtZSk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6d2ViSW5zcGVj
dG9yRXhlY3V0ZVNjcmlwdCk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6d2ViSW5zcGVjdG9yQ2xv
c2UpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OndlYkluc3BlY3RvclNob3cpOgorICAgICAgICAo
UURSVFN1cHBvcnQ6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgIChRRFJU
U3VwcG9ydDo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKToKKyAgICAgICAgKFFEUlRTdXBwb3J0
Ojppc0NvbW1hbmRFbmFibGVkKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpoYXNEb2N1bWVudEVs
ZW1lbnQpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFi
bGVkKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAgIChR
RFJUU3VwcG9ydDo6cGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eSk6CisgICAgICAgIChRRFJUU3Vw
cG9ydDo6cGF1c2VTVkdBbmltYXRpb24pOgorICAgICAgICAoUURSVFN1cHBvcnQ6Om51bWJlck9m
QWN0aXZlQW5pbWF0aW9ucyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6Y2xlYXJGcmFtZU5hbWUp
OgorICAgICAgICAoUURSVFN1cHBvcnQ6OmphdmFTY3JpcHRPYmplY3RzQ291bnQpOgorICAgICAg
ICAoUURSVFN1cHBvcnQ6OmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0KToKKyAgICAgICAgKFFEUlRT
dXBwb3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKToKKyAgICAg
ICAgKFFEUlRTdXBwb3J0Ojpjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZCk6CisgICAgICAgIChR
RFJUU3VwcG9ydDo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKFFEUlRTdXBw
b3J0OjpudW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpzdXNwZW5kQWN0aXZl
RE9NT2JqZWN0cyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0
cyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQp
OgorICAgICAgICAoUURSVFN1cHBvcnQ6OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4pOgorICAg
ICAgICAoUURSVFN1cHBvcnQ6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cyk6CisgICAgICAg
IChRRFJUU3VwcG9ydDo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSk6
CisgICAgICAgIChRRFJUU3VwcG9ydDo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKKyAg
ICAgICAgKFFEUlRTdXBwb3J0OjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToK
KyAgICAgICAgKFFEUlRTdXBwb3J0OjplbmFibGVDYXJldEJyb3dzaW5nKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaDogQWRkZWQuCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50UXQ6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRRdDo6dG9nZ2xlU21hcnRJbnNlcnREZWxldGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50UXQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKiB0
ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpt
dWx0aXBsZVBhZ2VHcm91cHNBbmRMb2NhbFN0b3JhZ2UpOgorICAgICAgICAodHN0X1FXZWJQYWdl
Ojpwcm90ZWN0QmluZGluZ3NSdW50aW1lT2JqZWN0c0Zyb21Db2xsZWN0b3IpOgorCiAyMDEwLTAz
LTE5ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2U0
ODUzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydC5jcHAKQEAgLTAsMCArMSwzNjYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChD
KSAyMDEwIFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKyAgICBDb3B5cmln
aHQgKEMpIDIwMDgsMjAwOSwyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2
aWNlcyBJbmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgiCisKKyNpbmNs
dWRlICJDb250ZXh0TWVudS5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50UXQuaCIKKyNp
bmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKKyNp
bmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHQ0NvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZS5o
IgorI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCisj
aW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgor
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpZiBF
TkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50LmgiCisjZW5kaWYKKyNpbmNsdWRl
ICJXb3JrZXJUaHJlYWQuaCIKKworI2luY2x1ZGUgInF3ZWJmcmFtZS5oIgorI2luY2x1ZGUgInF3
ZWJmcmFtZV9wLmgiCisjaW5jbHVkZSAicXdlYnBhZ2UuaCIKKyNpbmNsdWRlICJxd2VicGFnZV9w
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitRRFJUU3VwcG9ydDo6UURSVFN1cHBv
cnQoKQoreworICAgIHJ1bihmYWxzZSk7Cit9CisKK1FEUlRTdXBwb3J0Ojp+UURSVFN1cHBvcnQo
KQoreworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpvdmVyd3JpdGVQbHVnaW5EaXJlY3Rvcmllcygp
Cit7CisgICAgUGx1Z2luRGF0YWJhc2UqIGRiID0gUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBs
dWdpbnMoLyogcG9wdWxhdGUgKi8gZmFsc2UpOworCisgICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7
CisgICAgU3RyaW5nIHF0UGF0aChxZ2V0ZW52KCJRVFdFQktJVF9QTFVHSU5fUEFUSCIpLmRhdGEo
KSk7CisgICAgcXRQYXRoLnNwbGl0KFVDaGFyKCc6JyksIC8qIGFsbG93RW1wdHlFbnRyaWVzICov
IGZhbHNlLCBwYXRocyk7CisKKyAgICBkYi0+c2V0UGx1Z2luRGlyZWN0b3JpZXMocGF0aHMpOwor
ICAgIGRiLT5yZWZyZXNoKCk7Cit9CisKK2ludCBRRFJUU3VwcG9ydDo6d29ya2VyVGhyZWFkQ291
bnQoKQoreworI2lmIEVOQUJMRShXT1JLRVJTKQorICAgIHJldHVybiBXZWJDb3JlOjpXb3JrZXJU
aHJlYWQ6OndvcmtlclRocmVhZENvdW50KCk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlm
Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OnJ1bihib29sIGIpCit7CisgICAgUVdlYlBhZ2VQcml2
YXRlOjpkcnRSdW4gPSBiOworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpzZXRGcmFtZVNldEZsYXR0
ZW5pbmdFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBib29sIGVuYWJsZWQpCit7CisgICAgUVdlYlBh
Z2VQcml2YXRlOjpjb3JlKHBhZ2UpLT5zZXR0aW5ncygpLT5zZXRGcmFtZVNldEZsYXR0ZW5pbmdF
bmFibGVkKGVuYWJsZWQpOworfQorCit2b2lkIFFEUlRTdXBwb3J0Ojp3ZWJQYWdlU2V0R3JvdXBO
YW1lKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBncm91cE5hbWUpCit7CisgICAgcGFn
ZS0+aGFuZGxlKCktPnBhZ2UtPnNldEdyb3VwTmFtZShncm91cE5hbWUpOworfQorCitRU3RyaW5n
IFFEUlRTdXBwb3J0Ojp3ZWJQYWdlR3JvdXBOYW1lKFFXZWJQYWdlKiBwYWdlKQoreworICAgIHJl
dHVybiBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+Z3JvdXBOYW1lKCk7Cit9CisKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQordm9pZCBRRFJUU3VwcG9ydDo6d2ViSW5zcGVjdG9yRXhlY3V0ZVNjcmlwdChR
V2ViUGFnZSogcGFnZSwgbG9uZyBjYWxsSWQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCkKK3sKKyAg
ICBpZiAoIXBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGNhbGxJZCwgc2NyaXB0KTsKK30KKwordm9p
ZCBRRFJUU3VwcG9ydDo6d2ViSW5zcGVjdG9yQ2xvc2UoUVdlYlBhZ2UqIHBhZ2UpCit7CisgICAg
aWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAg
ICByZXR1cm47CisgICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+Y2xvc2UoKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6d2ViSW5zcGVjdG9yU2hvdyhRV2Vi
UGFnZSogcGFnZSkKK3sKKyAgICBpZiAoIXBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93KCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OnNl
dFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9vbCBlbmFibGVkKQor
eworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBwYWdlLT5oYW5kbGUoKS0+
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmIChlbmFibGVkKQorICAgICAgICBjb250cm9sbGVyLT5zdGFydFRp
bWVsaW5lUHJvZmlsZXIoKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRyb2xsZXItPnN0b3BUaW1l
bGluZVByb2ZpbGVyKCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OmV4ZWN1dGVDb3JlQ29tbWFu
ZEJ5TmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0cmluZyYgbmFtZSwgY29uc3QgUVN0cmlu
ZyYgdmFsdWUpCit7CisgICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuZXhlY3V0ZSh2
YWx1ZSk7Cit9CisKK2Jvb2wgUURSVFN1cHBvcnQ6OmlzQ29tbWFuZEVuYWJsZWQoUVdlYlBhZ2Uq
IHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIHBhZ2UtPmhhbmRsZSgp
LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigp
LT5jb21tYW5kKG5hbWUpLmlzRW5hYmxlZCgpOworfQorCisjZW5kaWYKKworYm9vbCBRRFJUU3Vw
cG9ydDo6aGFzRG9jdW1lbnRFbGVtZW50KFFXZWJGcmFtZSogcWZyYW1lKQoreworICAgIHJldHVy
biBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSktPmRvY3VtZW50KCktPmRvY3VtZW50RWxl
bWVudCgpOworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5h
YmxlZChRV2ViRnJhbWUqIHFmcmFtZSwgYm9vbCBlbmFibGVkKQoreworI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQorICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNv
cmUocWZyYW1lKTsKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUt
PnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIGlmICghY29udHJvbGxlcikKKyAg
ICAgICAgcmV0dXJuOworICAgIGlmIChlbmFibGVkKQorICAgICAgICBjb250cm9sbGVyLT5lbmFi
bGVQcm9maWxlcigpOworICAgIGVsc2UKKyAgICAgICAgY29udHJvbGxlci0+ZGlzYWJsZVByb2Zp
bGVyKCk7CisjZW5kaWYKK30KKworLy8gUGF1c2UgYSBnaXZlbiBDU1MgYW5pbWF0aW9uIG9yIHRy
YW5zaXRpb24gb24gdGhlIHRhcmdldCBub2RlIGF0IGEgc3BlY2lmaWMgdGltZS4KKy8vIElmIHRo
ZSBhbmltYXRpb24gb3IgdHJhbnNpdGlvbiBpcyBhbHJlYWR5IHBhdXNlZCwgaXQgd2lsbCB1cGRh
dGUgaXRzIHBhdXNlIHRpbWUuCisvLyBUaGlzIG1ldGhvZCBpcyBvbmx5IGludGVuZGVkIHRvIGJl
IHVzZWQgZm9yIHRlc3RpbmcgdGhlIENTUyBhbmltYXRpb24gYW5kIHRyYW5zaXRpb24gc3lzdGVt
LgorYm9vbCBRRFJUU3VwcG9ydDo6cGF1c2VBbmltYXRpb24oUVdlYkZyYW1lICpxZnJhbWUsIGNv
bnN0IFFTdHJpbmcgJmFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nICZl
bGVtZW50SWQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShx
ZnJhbWUpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFu
aW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7CisgICAg
aWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBEb2N1bWVudCog
ZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgUV9BU1NFUlQoZG9jKTsKKworICAgIE5vZGUq
IGNvcmVOb2RlID0gZG9jLT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOworICAgIGlmICghY29y
ZU5vZGUgfHwgIWNvcmVOb2RlLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gY29udHJvbGxlci0+cGF1c2VBbmltYXRpb25BdFRpbWUoY29yZU5vZGUtPnJl
bmRlcmVyKCksIGFuaW1hdGlvbk5hbWUsIHRpbWUpOworfQorCitib29sIFFEUlRTdXBwb3J0Ojpw
YXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KFFXZWJGcmFtZSAqcWZyYW1lLCBjb25zdCBRU3RyaW5n
ICZwcm9wZXJ0eU5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nICZlbGVtZW50SWQpCit7
CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOworICAg
IGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFuaW1hdGlvbkNvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFjb250cm9s
bGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBEb2N1bWVudCogZG9jID0gZnJhbWUt
PmRvY3VtZW50KCk7CisgICAgUV9BU1NFUlQoZG9jKTsKKworICAgIE5vZGUqIGNvcmVOb2RlID0g
ZG9jLT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOworICAgIGlmICghY29yZU5vZGUgfHwgIWNv
cmVOb2RlLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
Y29udHJvbGxlci0+cGF1c2VUcmFuc2l0aW9uQXRUaW1lKGNvcmVOb2RlLT5yZW5kZXJlcigpLCBw
cm9wZXJ0eU5hbWUsIHRpbWUpOworfQorCisvLyBQYXVzZSBhIGdpdmVuIFNWRyBhbmltYXRpb24g
b24gdGhlIHRhcmdldCBub2RlIGF0IGEgc3BlY2lmaWMgdGltZS4KKy8vIFRoaXMgbWV0aG9kIGlz
IG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGVzdGluZyB0aGUgU1ZHIGFuaW1hdGlvbiBz
eXN0ZW0uCitib29sIFFEUlRTdXBwb3J0OjpwYXVzZVNWR0FuaW1hdGlvbihRV2ViRnJhbWUgKnFm
cmFtZSwgY29uc3QgUVN0cmluZyAmYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3Ry
aW5nICZlbGVtZW50SWQpCit7CisjaWYgIUVOQUJMRShTVkcpCisgICAgcmV0dXJuIGZhbHNlOwor
I2Vsc2UKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRG9jdW1lbnQq
IGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIFFfQVNTRVJUKGRvYyk7CisKKyAgICBpZiAo
IWRvYy0+c3ZnRXh0ZW5zaW9ucygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBOb2Rl
KiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoYW5pbWF0aW9uSWQpOworICAgIGlmICgh
Y29yZU5vZGUgfHwgIVNWR1NNSUxFbGVtZW50Ojppc1NNSUxFbGVtZW50KGNvcmVOb2RlKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGRvYy0+YWNjZXNzU1ZHRXh0ZW5zaW9u
cygpLT5zYW1wbGVBbmltYXRpb25BdFRpbWUoZWxlbWVudElkLCBzdGF0aWNfY2FzdDxTVkdTTUlM
RWxlbWVudCo+KGNvcmVOb2RlKSwgdGltZSk7CisjZW5kaWYKK30KKworLy8gUmV0dXJucyB0aGUg
dG90YWwgbnVtYmVyIG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbnMgKGluY2x1ZGVzIGJv
dGggQ1NTIHRyYW5zaXRpb25zIGFuZCBDU1MgYW5pbWF0aW9ucykuCitpbnQgUURSVFN1cHBvcnQ6
Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhRV2ViRnJhbWUgKnFmcmFtZSkKK3sKKyAgICBGcmFt
ZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7CisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29u
dHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBjb250cm9sbGVyLT5udW1iZXJPZkFjdGl2
ZUFuaW1hdGlvbnMoKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6Y2xlYXJGcmFtZU5hbWUoUVdl
YkZyYW1lKiBxRnJhbWUpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6
Y29yZShxRnJhbWUpOworICAgIGZyYW1lLT50cmVlKCktPmNsZWFyTmFtZSgpOworfQorCitpbnQg
UURSVFN1cHBvcnQ6OmphdmFTY3JpcHRPYmplY3RzQ291bnQoKQoreworICAgIHJldHVybiBKU0RP
TVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmdsb2JhbE9iamVjdENvdW50
KCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0KCkKK3sK
KyAgICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdlQ29sbGVjdE5vdygpOworfQorCit2b2lkIFFEUlRT
dXBwb3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2Fp
dFVudGlsRG9uZSkKK3sKKyAgICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdlQ29sbGVjdE9uQWx0ZXJu
YXRlVGhyZWFkRm9yRGVidWdnaW5nKHdhaXRVbnRpbERvbmUpOworfQorCisvLyBSZXR1cm5zIHRo
ZSB2YWx1ZSBvZiBjb3VudGVyIGluIHRoZSBlbGVtZW50IHNwZWNpZmllZCBieSBcYSBpZC4KK1FT
dHJpbmcgUURSVFN1cHBvcnQ6OmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKFFXZWJGcmFtZSog
cUZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJh
bWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7CisgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGZy
YW1lLT5kb2N1bWVudCgpKSB7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBkb2N1bWVudC0+
Z2V0RWxlbWVudEJ5SWQoaWQpOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6Y291bnRlclZhbHVl
Rm9yRWxlbWVudChlbGVtZW50KTsKKyAgICB9CisgICAgcmV0dXJuIFFTdHJpbmcoKTsKK30KKwor
aW50IFFEUlRTdXBwb3J0OjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJh
bWUsIGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQoreworICAg
IEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKKyAgICBpZiAo
IWZyYW1lKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gZnJh
bWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZyhpZCkpOworICAgIGlm
ICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIFByaW50Q29udGV4
dDo6cGFnZU51bWJlckZvckVsZW1lbnQoZWxlbWVudCwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQp
KTsKK30KKworaW50IFFEUlRTdXBwb3J0OjpudW1iZXJPZlBhZ2VzKFFXZWJGcmFtZSogcUZyYW1l
LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJG
cmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1
cm4gLTE7CisKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKGZyYW1lLCBG
bG9hdFNpemUod2lkdGgsIGhlaWdodCkpOworfQorCisvLyBTdXNwZW5kIGFjdGl2ZSBET00gb2Jq
ZWN0cyBpbiB0aGlzIGZyYW1lLgordm9pZCBRRFJUU3VwcG9ydDo6c3VzcGVuZEFjdGl2ZURPTU9i
amVjdHMoUVdlYkZyYW1lKiBxRnJhbWUpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1l
UHJpdmF0ZTo6Y29yZShxRnJhbWUpOworICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAg
ICAgZnJhbWUtPmRvY3VtZW50KCktPnN1c3BlbmRBY3RpdmVET01PYmplY3RzKCk7Cit9CisKKy8v
IFJlc3VtZSBhY3RpdmUgRE9NIG9iamVjdHMgaW4gdGhpcyBmcmFtZS4KK3ZvaWQgUURSVFN1cHBv
cnQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBxRnJhbWUpCit7CisgICAgRnJh
bWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOworICAgIGlmIChmcmFt
ZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnJlc3VtZUFjdGl2ZURP
TU9iamVjdHMoKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xh
dGVkV29ybGQoUVdlYkZyYW1lKiBxRnJhbWUsIGludCB3b3JsZElkLCBjb25zdCBRU3RyaW5nJiBz
Y3JpcHQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJh
bWUpOworICAgIGlmIChmcmFtZSkKKyAgICAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1l
LT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdEluV29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCks
IHNjcmlwdCwgdHJ1ZSkuanNWYWx1ZSgpOworfQorCit2b2lkIFFEUlRTdXBwb3J0Ojp3aGl0ZUxp
c3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0
cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0
LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQoreworICAgIFNlY3VyaXR5T3JpZ2lu
Ojp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3Qs
IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6cmVz
ZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCkKK3sKKyAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRP
cmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OnNldERvbWFp
blJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0IFFT
dHJpbmcmIHNjaGVtZSkKK3sKKyAgICBTZWN1cml0eU9yaWdpbjo6c2V0RG9tYWluUmVsYXhhdGlv
bkZvcmJpZGRlbkZvclVSTFNjaGVtZShmb3JiaWRkZW4sIHNjaGVtZSk7Cit9CisKK3ZvaWQgUURS
VFN1cHBvcnQ6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChRV2ViUGFnZSAqcGFnZSwgYm9v
bCBlbmFibGVkKQoreworICAgIHBhZ2UtPmQtPnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9IGVu
YWJsZWQ7Cit9CisKKwordm9pZCBRRFJUU3VwcG9ydDo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZChRV2ViUGFnZSAqcGFnZSwgYm9vbCBlbmFibGVkKQoreworICAgIHBhZ2UtPmQt
PnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgPSBlbmFibGVkOworfQorCit2b2lkIFFE
UlRTdXBwb3J0OjplbmFibGVDYXJldEJyb3dzaW5nKFFXZWJQYWdlKiBwYWdlLCBib29sIHZhbHVl
KQoreworICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXR0aW5ncygpLT5zZXRDYXJldEJyb3dz
aW5nRW5hYmxlZCh2YWx1ZSk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OnNldE1lZGlhVHlwZShR
V2ViRnJhbWUqIHFmcmFtZSwgY29uc3QgUVN0cmluZyYgdHlwZSkKK3sKKyAgICBXZWJDb3JlOjpG
cmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7CisgICAgV2ViQ29y
ZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAgICB2aWV3LT5zZXRNZWRpYVR5
cGUodHlwZSk7CisgICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsK
KyAgICB2aWV3LT5mb3JjZUxheW91dCgpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjUyOWI3MTUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMTAgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorICAg
IENvcHlyaWdodCAoQykgMjAwOCwyMDA5LDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0
aW5nIFNlcnZpY2VzIEluYy4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
KyNpZm5kZWYgRHVtcFJlbmRlclRyZWVTdXBwb3J0X2gKKyNkZWZpbmUgRHVtcFJlbmRlclRyZWVT
dXBwb3J0X2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRdENvcmUv
cXN0cmluZy5oPgorCitjbGFzcyBRV2ViUGFnZTsKK2NsYXNzIFFXZWJGcmFtZTsKKworY2xhc3Mg
UVdFQktJVF9FWFBPUlQgUURSVFN1cHBvcnQgeworCitwdWJsaWM6CisKKyAgICBRRFJUU3VwcG9y
dCgpOworICAgIH5RRFJUU3VwcG9ydCgpOworCisgICAgdm9pZCBjbGVhckZyYW1lTmFtZShRV2Vi
RnJhbWUqIHFGcmFtZSk7CisgICAgUVN0cmluZyBjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChR
V2ViRnJhbWUqIHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQpOworICAgIHZvaWQgZW5hYmxlQ2Fy
ZXRCcm93c2luZyhRV2ViUGFnZSogcGFnZSwgYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBldmFsdWF0
ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChRV2ViRnJhbWUqIHFGcmFtZSwgaW50IHdvcmxkSWQsIGNv
bnN0IFFTdHJpbmcmIHNjcmlwdCk7CisgICAgdm9pZCBleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUo
UVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFTdHJpbmcmIHZhbHVl
KTsKKyAgICBib29sIGlzQ29tbWFuZEVuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJp
bmcmIG5hbWUpOworICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RvckNvbGxlY3QoKTsKKyAgICB2b2lk
IGdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxE
b25lKTsKKyAgICBib29sIGhhc0RvY3VtZW50RWxlbWVudChRV2ViRnJhbWUqIHFGcmFtZSk7Cisg
ICAgaW50IGphdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKKyAgICBpbnQgbnVtYmVyT2ZBY3RpdmVB
bmltYXRpb25zKFFXZWJGcmFtZSopOworICAgIGludCBudW1iZXJPZlBhZ2VzKFFXZWJGcmFtZSog
cUZyYW1lLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKKyAgICB2b2lkIG92ZXJ3cml0ZVBs
dWdpbkRpcmVjdG9yaWVzKCk7CisgICAgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChRV2Vi
RnJhbWUqIHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQpOworICAgIGJvb2wgcGF1c2VBbmltYXRpb24oUVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYg
bmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CisgICAgYm9vbCBw
YXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KFFXZWJGcmFtZSosIGNvbnN0IFFTdHJpbmcmIG5hbWUs
IGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOworICAgIGJvb2wgcGF1c2VT
VkdBbmltYXRpb24oUVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYgYW5pbWF0aW9uSWQsIGRvdWJs
ZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOworICAgIHZvaWQgcmVzZXRPcmlnaW5B
Y2Nlc3NXaGl0ZUxpc3RzKCk7CisgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzKFFXZWJG
cmFtZSogcUZyYW1lKTsKKyAgICB2b2lkIHJ1bihib29sIGIpOworICAgIHZvaWQgc2V0RG9tYWlu
UmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29sIGZvcmJpZGRlbiwgY29uc3QgUVN0
cmluZyYgc2NoZW1lKTsKKyAgICB2b2lkIHNldEZyYW1lU2V0RmxhdHRlbmluZ0VuYWJsZWQoUVdl
YlBhZ2UqLCBib29sKTsKKyAgICB2b2lkIHNldE1lZGlhVHlwZShRV2ViRnJhbWUqIHFmcmFtZSwg
Y29uc3QgUVN0cmluZyYgdHlwZSk7CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5h
YmxlZChRV2ViRnJhbWUqLCBib29sIGVuYWJsZWQpOworICAgIHZvaWQgc2V0VGltZWxpbmVQcm9m
aWxpbmdFbmFibGVkKFFXZWJQYWdlKiwgYm9vbCBlbmFibGVkKTsKKyAgICB2b2lkIHNldFNtYXJ0
SW5zZXJ0RGVsZXRlRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9vbCBlbmFibGVkKTsKKyAgICB2
b2lkIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGJv
b2wgZW5hYmxlZCk7CisgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhRV2ViRnJhbWUq
IHFGcmFtZSk7CisgICAgdm9pZCB3ZWJJbnNwZWN0b3JFeGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBw
YWdlLCBsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKKyAgICB2b2lkIHdlYklu
c3BlY3RvclNob3coUVdlYlBhZ2UqIHBhZ2UpOworICAgIHZvaWQgd2ViSW5zcGVjdG9yQ2xvc2Uo
UVdlYlBhZ2UqIHBhZ2UpOworICAgIFFTdHJpbmcgd2ViUGFnZUdyb3VwTmFtZShRV2ViUGFnZSAq
cGFnZSk7CisgICAgdm9pZCB3ZWJQYWdlU2V0R3JvdXBOYW1lKFFXZWJQYWdlKiBwYWdlLCBjb25z
dCBRU3RyaW5nJiBncm91cE5hbWUpOworICAgIHZvaWQgd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdp
bihjb25zdCBRU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3Rp
bmF0aW9uU3ViZG9tYWlucyk7CisgICAgaW50IHdvcmtlclRocmVhZENvdW50KCk7CisKKyAgICBi
b29sIGRydFJ1bjsKK307CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmNwcAppbmRleCA5MGViYjFkLi44MjVjNTRiIDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnRRdC5oIgogCisjaW5jbHVkZSAi
RHVtcFJlbmRlclRyZWVTdXBwb3J0LmgiCisKICNpbmNsdWRlICJxd2VicGFnZS5oIgogI2luY2x1
ZGUgInF3ZWJwYWdlX3AuaCIKIApAQCAtMzMzLDE0ICszMzUsMTggQEAgdm9pZCBFZGl0b3JDbGll
bnRRdDo6cGFnZURlc3Ryb3llZCgpCiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OnNtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIG1fcGFnZS0+ZC0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkOworfQor
Cit2b2lkIEVkaXRvckNsaWVudFF0Ojp0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpCit7CisgICAg
Ym9vbCBjdXJyZW50ID0gbV9wYWdlLT5kLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7CisgICAg
bV9wYWdlLT5kLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSAhY3VycmVudDsKIH0KIAogYm9v
bCBFZGl0b3JDbGllbnRRdDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9w
YWdlLT5kLT5zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOwogfQogCiB2b2lkIEVkaXRv
ckNsaWVudFF0Ojp0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpCmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaCBiL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCmluZGV4IDQyYTQwMmYuLjZjMjA4OTggMTAwNjQ0
Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCisrKyBiL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCkBAIC00OCwxMyArNDgsMTMg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShSYW5nZSopOwog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlKEhUTUxFbGVtZW50Kik7
CiAgICAgdmlydHVhbCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOyAKKyAgICB2aXJ0
dWFsIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7IAogICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpOwogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVD
b250aW51b3VzU3BlbGxDaGVja2luZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc0dyYW1tYXJDaGVj
a2luZ0VuYWJsZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCk7
CiAgICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKLSAgICAKICAgICB2
aXJ0dWFsIGJvb2wgc2VsZWN0V29yZEJlZm9yZU1lbnVFdmVudCgpOwogICAgIHZpcnR1YWwgYm9v
bCBpc0VkaXRhYmxlKCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90
c3RfcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5j
cHAKaW5kZXggYmE3YTg3ZS4uOGE3MTVkZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3Rz
dF9xd2VicGFnZS5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICovCiAKICNpbmNsdWRlICIuLi91dGls
LmgiCisjaW5jbHVkZSAiLi4vV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0Lmgi
CiAjaW5jbHVkZSA8UURpcj4KICNpbmNsdWRlIDxRR3JhcGhpY3NXaWRnZXQ+CiAjaW5jbHVkZSA8
UUxpbmVFZGl0PgpAQCAtNzIyLDEyICs3MjMsOSBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6Y3JlYXRl
Vmlld2xlc3NQbHVnaW4oKQogCiB9CiAKLS8vIGltcG9ydCBwcml2YXRlIEFQSQotdm9pZCBRV0VC
S0lUX0VYUE9SVCBxdF93ZWJwYWdlX3NldEdyb3VwTmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3Qg
UVN0cmluZyYgZ3JvdXBOYW1lKTsKLVFTdHJpbmcgUVdFQktJVF9FWFBPUlQgcXRfd2VicGFnZV9n
cm91cE5hbWUoUVdlYlBhZ2UqIHBhZ2UpOwotCiB2b2lkIHRzdF9RV2ViUGFnZTo6bXVsdGlwbGVQ
YWdlR3JvdXBzQW5kTG9jYWxTdG9yYWdlKCkKIHsKKyAgICBRRFJUU3VwcG9ydCogZHJ0U3VwcG9y
dCA9IG5ldyBRRFJUU3VwcG9ydCgpOwogICAgIFFEaXIgZGlyKFFEaXI6OmN1cnJlbnRQYXRoKCkp
OwogICAgIGRpci5ta2RpcigicGF0aDEiKTsKICAgICBkaXIubWtkaXIoInBhdGgyIik7CkBAIC03
MzcsMTIgKzczNSwxMiBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6bXVsdGlwbGVQYWdlR3JvdXBzQW5k
TG9jYWxTdG9yYWdlKCkKIAogICAgIHZpZXcxLnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmli
dXRlKFFXZWJTZXR0aW5nczo6TG9jYWxTdG9yYWdlRW5hYmxlZCwgdHJ1ZSk7CiAgICAgdmlldzEu
cGFnZSgpLT5zZXR0aW5ncygpLT5zZXRMb2NhbFN0b3JhZ2VQYXRoKFFEaXI6OnRvTmF0aXZlU2Vw
YXJhdG9ycyhRRGlyOjpjdXJyZW50UGF0aCgpICsgIi9wYXRoMSIpKTsKLSAgICBxdF93ZWJwYWdl
X3NldEdyb3VwTmFtZSh2aWV3MS5wYWdlKCksICJncm91cDEiKTsKKyAgICBkcnRTdXBwb3J0LT53
ZWJQYWdlU2V0R3JvdXBOYW1lKHZpZXcxLnBhZ2UoKSwgImdyb3VwMSIpOwogICAgIHZpZXcyLnBh
Z2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6TG9jYWxTdG9yYWdl
RW5hYmxlZCwgdHJ1ZSk7ICAgIAogICAgIHZpZXcyLnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0TG9j
YWxTdG9yYWdlUGF0aChRRGlyOjp0b05hdGl2ZVNlcGFyYXRvcnMoUURpcjo6Y3VycmVudFBhdGgo
KSArICIvcGF0aDIiKSk7Ci0gICAgcXRfd2VicGFnZV9zZXRHcm91cE5hbWUodmlldzIucGFnZSgp
LCAiZ3JvdXAyIik7Ci0gICAgUUNPTVBBUkUocXRfd2VicGFnZV9ncm91cE5hbWUodmlldzEucGFn
ZSgpKSwgUVN0cmluZygiZ3JvdXAxIikpOwotICAgIFFDT01QQVJFKHF0X3dlYnBhZ2VfZ3JvdXBO
YW1lKHZpZXcyLnBhZ2UoKSksIFFTdHJpbmcoImdyb3VwMiIpKTsKKyAgICBkcnRTdXBwb3J0LT53
ZWJQYWdlU2V0R3JvdXBOYW1lKHZpZXcyLnBhZ2UoKSwgImdyb3VwMiIpOworICAgIFFDT01QQVJF
KGRydFN1cHBvcnQtPndlYlBhZ2VHcm91cE5hbWUodmlldzEucGFnZSgpKSwgUVN0cmluZygiZ3Jv
dXAxIikpOworICAgIFFDT01QQVJFKGRydFN1cHBvcnQtPndlYlBhZ2VHcm91cE5hbWUodmlldzIu
cGFnZSgpKSwgUVN0cmluZygiZ3JvdXAyIikpOwogCiAKICAgICB2aWV3MS5zZXRIdG1sKFFTdHJp
bmcoIjxodG1sPjxib2R5PiA8L2JvZHk+PC9odG1sPiIpLCBRVXJsKCJodHRwOi8vd3d3Lm15ZXhh
bXBsZS5jb20iKSk7CkBAIC0xNDU5LDExICsxNDU3LDkgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6Omlu
cHV0TWV0aG9kcygpCiAgICAgZGVsZXRlIGNvbnRhaW5lcjsKIH0KIAotLy8gaW1wb3J0IGEgbGl0
dGxlIERSVCBoZWxwZXIgZnVuY3Rpb24gdG8gdHJpZ2dlciB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IK
LXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgpOwot
CiB2b2lkIHRzdF9RV2ViUGFnZTo6cHJvdGVjdEJpbmRpbmdzUnVudGltZU9iamVjdHNGcm9tQ29s
bGVjdG9yKCkKIHsKKyAgICBRRFJUU3VwcG9ydCogZHJ0U3VwcG9ydCA9IG5ldyBRRFJUU3VwcG9y
dCgpOwogICAgIFFTaWduYWxTcHkgbG9hZFNweShtX3ZpZXcsIFNJR05BTChsb2FkRmluaXNoZWQo
Ym9vbCkpKTsKIAogICAgIFBsdWdpblBhZ2UqIG5ld1BhZ2UgPSBuZXcgUGx1Z2luUGFnZShtX3Zp
ZXcpOwpAQCAtMTQ3OCw3ICsxNDc0LDcgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6OnByb3RlY3RCaW5k
aW5nc1J1bnRpbWVPYmplY3RzRnJvbUNvbGxlY3RvcigpCiAKICAgICBuZXdQYWdlLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ0ZXN0bWUoJ2ZvbycpIik7CiAKLSAgICBxdF9kcnRf
Z2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCk7CisgICAgZHJ0U3VwcG9ydC0+Z2FyYmFnZUNvbGxl
Y3RvckNvbGxlY3QoKTsKIAogICAgIC8vIGRvbid0IGNyYXNoIQogICAgIG5ld1BhZ2UtPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInRlc3RtZSgnYmFyJykiKTsKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA0OGVh
YjczLi5mMjg3N2EzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTAtMDMtMTggIFJvYmVydCBI
b2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBMYXlvdXRUZXN0Q29udHJvbGxlciBj
b21tYW5kczoKKyAgICAgICAgICBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQKKyAgICAgICAg
ICBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkCisgICAgICAgICAgZXhlY0NvbW1h
bmQKKyAgICAgICAgICBpc0NvbW1hbmRFbmFibGVkCisKKyAgICAgICAgVXBkYXRlIERSVCB0byB1
c2UgbmV3IFFEUlRTdXBwb3J0IGNsYXNzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg0NAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQv
RHVtcFJlbmRlclRyZWVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6
RHVtcFJlbmRlclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWU6OnJlc2V0
VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bXBS
ZW5kZXJUcmVlOjpkdW1wRnJhbWVzQXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9x
dC9EdW1wUmVuZGVyVHJlZVF0Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvR0NDb250
cm9sbGVyUXQuY3BwOgorICAgICAgICAoR0NDb250cm9sbGVyOjpHQ0NvbnRyb2xsZXIpOgorICAg
ICAgICAoR0NDb250cm9sbGVyOjpjb2xsZWN0KToKKyAgICAgICAgKEdDQ29udHJvbGxlcjo6Y29s
bGVjdE9uQWx0ZXJuYXRlVGhyZWFkKToKKyAgICAgICAgKEdDQ29udHJvbGxlcjo6Z2V0SlNPYmpl
Y3RDb3VudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuaDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQp
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsb3NlV2ViSW5zcGVjdG9yKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzZXRGcmFtZVNldEZsYXR0ZW5pbmdFbmFibGVkKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxl
ZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGltZWxpbmVQcm9maWxpbmdF
bmFibGVkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYXVzZUFuaW1hdGlvbkF0
VGltZU9uRWxlbWVudFdpdGhJZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1
c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4pOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldENhcmV0QnJvd3NpbmdFbmFibGVkKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVu
Rm9yVVJMU2NoZW1lKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjp3b3JrZXJUaHJl
YWRDb3VudCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVs
ZW1lbnRCeUlkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2Vz
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTbWFydEluc2VydERlbGV0ZUVu
YWJsZWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV4ZWND
b21tYW5kKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjppc0NvbW1hbmRFbmFibGVk
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6
CisKIDIwMTAtMDMtMTkgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHAgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAppbmRleCBkOGY1M2YzLi44NGVk
YmIyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVy
VHJlZVF0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVy
VHJlZVF0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5j
bHVkZSAiRHVtcFJlbmRlclRyZWVRdC5oIgorI2luY2x1ZGUgIi4uLy4uLy4uL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaCIKICNpbmNsdWRlICJFdmVudFNl
bmRlclF0LmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyUXQuaCIKICNpbmNsdWRlICJMYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmgiCkBAIC03NSwxMyArNzYsOCBAQAogCiAjaW5jbHVkZSA8cWRlYnVn
Lmg+CiAKLWV4dGVybiB2b2lkIHF0X2RydF9ydW4oYm9vbCBiKTsKIGV4dGVybiB2b2lkIHF0X2R1
bXBfc2V0X2FjY2VwdHNfZWRpdGluZyhib29sIGIpOwogZXh0ZXJuIHZvaWQgcXRfZHVtcF9mcmFt
ZV9sb2FkZXIoYm9vbCBiKTsKLWV4dGVybiB2b2lkIHF0X2RydF9jbGVhckZyYW1lTmFtZShRV2Vi
RnJhbWUqIHFGcmFtZSk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfb3ZlcndyaXRlUGx1Z2luRGlyZWN0
b3JpZXMoKTsKLWV4dGVybiB2b2lkIHF0X2RydF9yZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMo
KTsKLWV4dGVybiBib29sIHF0X2RydF9oYXNEb2N1bWVudEVsZW1lbnQoUVdlYkZyYW1lKiBxRnJh
bWUpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE2OSw2ICsxNjUsOCBAQCB2b2lkIFdl
YlBhZ2U6OnJlc2V0U2V0dGluZ3MoKQogICAgIHNldHRpbmdzKCktPnJlc2V0QXR0cmlidXRlKFFX
ZWJTZXR0aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKTsKICAgICBzZXR0
aW5ncygpLT5yZXNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vz
c1JlbW90ZVVybHMpOwogICAgIG1fZHJ0LT5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT5zZXRDYXJl
dEJyb3dzaW5nRW5hYmxlZChmYWxzZSk7CisgICAgbV9kcnQtPmxheW91dFRlc3RDb250cm9sbGVy
KCktPnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCh0cnVlKTsKKyAgICBtX2RydC0+bGF5b3V0
VGVzdENvbnRyb2xsZXIoKS0+c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxz
ZSk7CiAKICAgICAvLyBnbG9iYWxTZXR0aW5ncyBtdXN0IGJlIHJlc2V0IGV4cGxpY2l0bHkuCiAg
ICAgbV9kcnQtPmxheW91dFRlc3RDb250cm9sbGVyKCktPnNldFhTU0F1ZGl0b3JFbmFibGVkKGZh
bHNlKTsKQEAgLTMxNiw3ICszMTQsNyBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUo
KQogICAgICwgbV9lbmFibGVUZXh0T3V0cHV0KGZhbHNlKQogICAgICwgbV9zaW5nbGVGaWxlTW9k
ZShmYWxzZSkKIHsKLSAgICBxdF9kcnRfb3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKTsKKyAg
ICBtX2RydFN1cHBvcnQtPm92ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVzKCk7CiAgICAgUVdlYlNl
dHRpbmdzOjplbmFibGVQZXJzaXN0ZW50U3RvcmFnZSgpOwogCiAgICAgLy8gY3JlYXRlIG91ciBw
cmltYXJ5IHRlc3RpbmcgcGFnZS92aWV3LgpAQCAtMzMyLDE0ICszMzAsMTUgQEAgRHVtcFJlbmRl
clRyZWU6OkR1bXBSZW5kZXJUcmVlKCkKIAogICAgIC8vIGNyZWF0ZSBvdXIgY29udHJvbGxlcnMu
IFRoaXMgaGFzIHRvIGJlIGRvbmUgYmVmb3JlIGNvbm5lY3RGcmFtZSwKICAgICAvLyBhcyBpdCBl
eHBvcnRzIHRoZXJlIHRvIHRoZSBKYXZhU2NyaXB0IERPTSB3aW5kb3cuCi0gICAgbV9jb250cm9s
bGVyID0gbmV3IExheW91dFRlc3RDb250cm9sbGVyKHRoaXMpOworICAgIG1fZHJ0U3VwcG9ydCA9
IG5ldyBRRFJUU3VwcG9ydCgpOworICAgIG1fY29udHJvbGxlciA9IG5ldyBMYXlvdXRUZXN0Q29u
dHJvbGxlcih0aGlzLCBtX2RydFN1cHBvcnQpOwogICAgIGNvbm5lY3QobV9jb250cm9sbGVyLCBT
SUdOQUwoc2hvd1BhZ2UoKSksIHRoaXMsIFNMT1Qoc2hvd1BhZ2UoKSkpOwogICAgIGNvbm5lY3Qo
bV9jb250cm9sbGVyLCBTSUdOQUwoaGlkZVBhZ2UoKSksIHRoaXMsIFNMT1QoaGlkZVBhZ2UoKSkp
OwogCiAgICAgY29ubmVjdChtX2NvbnRyb2xsZXIsIFNJR05BTChkb25lKCkpLCB0aGlzLCBTTE9U
KGR1bXAoKSkpOwogICAgIG1fZXZlbnRTZW5kZXIgPSBuZXcgRXZlbnRTZW5kZXIobV9wYWdlKTsK
ICAgICBtX3RleHRJbnB1dENvbnRyb2xsZXIgPSBuZXcgVGV4dElucHV0Q29udHJvbGxlcihtX3Bh
Z2UpOwotICAgIG1fZ2NDb250cm9sbGVyID0gbmV3IEdDQ29udHJvbGxlcihtX3BhZ2UpOworICAg
IG1fZ2NDb250cm9sbGVyID0gbmV3IEdDQ29udHJvbGxlcihtX3BhZ2UsIG1fZHJ0U3VwcG9ydCk7
CiAKICAgICAvLyBub3cgY29ubmVjdCBvdXIgZGlmZmVyZW50IHNpZ25hbHMKICAgICBjb25uZWN0
KG1fcGFnZSwgU0lHTkFMKGZyYW1lQ3JlYXRlZChRV2ViRnJhbWUgKikpLApAQCAtMzYzLDcgKzM2
Miw3IEBAIER1bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSgpCiAgICAgICAgICAgICB0aGlz
LCBTTE9UKHN0YXR1c0Jhck1lc3NhZ2UoY29uc3QgUVN0cmluZyYpKSk7CiAKICAgICBRT2JqZWN0
Ojpjb25uZWN0KHRoaXMsIFNJR05BTChxdWl0KCkpLCBxQXBwLCBTTE9UKHF1aXQoKSksIFF0OjpR
dWV1ZWRDb25uZWN0aW9uKTsKLSAgICBxdF9kcnRfcnVuKHRydWUpOworICAgIG1fZHJ0U3VwcG9y
dC0+cnVuKHRydWUpOwogICAgIFFGb2N1c0V2ZW50IGV2ZW50KFFFdmVudDo6Rm9jdXNJbiwgUXQ6
OkFjdGl2ZVdpbmRvd0ZvY3VzUmVhc29uKTsKICAgICBRQXBwbGljYXRpb246OnNlbmRFdmVudCht
X21haW5WaWV3LCAmZXZlbnQpOwogfQpAQCAtNDE3LDEyICs0MTYsMTIgQEAgdm9pZCBEdW1wUmVu
ZGVyVHJlZTo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKQogICAgIG1fcGFn
ZS0+dW5kb1N0YWNrKCktPmNsZWFyKCk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+c2V0Wm9v
bUZhY3RvcigxLjApOwogICAgIGNsZWFySGlzdG9yeShtX3BhZ2UpOwotICAgIHF0X2RydF9jbGVh
ckZyYW1lTmFtZShtX3BhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBtX2RydFN1cHBvcnQtPmNsZWFy
RnJhbWVOYW1lKG1fcGFnZS0+bWFpbkZyYW1lKCkpOwogCiAgICAgV29ya1F1ZXVlOjpzaGFyZWQo
KS0+Y2xlYXIoKTsKICAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5zZXRGcm96ZW4oZmFsc2UpOwog
Ci0gICAgcXRfZHJ0X3Jlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOworICAgIG1fZHJ0U3Vw
cG9ydC0+cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CiAKICAgICBRTG9jYWxlOjpzZXRE
ZWZhdWx0KFFMb2NhbGU6OmMoKSk7CiAgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOwpAQCAtNTcz
LDcgKzU3Miw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OmhpZGVQYWdlKCkKIAogUVN0cmluZyBE
dW1wUmVuZGVyVHJlZTo6ZHVtcEZyYW1lc0FzVGV4dChRV2ViRnJhbWUqIGZyYW1lKQogewotICAg
IGlmICghZnJhbWUgfHwgIXF0X2RydF9oYXNEb2N1bWVudEVsZW1lbnQoZnJhbWUpKQorICAgIGlm
ICghZnJhbWUgfHwgIW1fZHJ0U3VwcG9ydC0+aGFzRG9jdW1lbnRFbGVtZW50KGZyYW1lKSkKICAg
ICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKIAogICAgIFFTdHJpbmcgcmVzdWx0OwpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oCmluZGV4IDdhMjg1
OGEuLmIwMWQzM2UgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1
bXBSZW5kZXJUcmVlUXQuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1w
UmVuZGVyVHJlZVF0LmgKQEAgLTUzLDYgKzUzLDcgQEAgUVRfRU5EX05BTUVTUEFDRQogY2xhc3Mg
UVdlYkZyYW1lOwogCiBjbGFzcyBMYXlvdXRUZXN0Q29udHJvbGxlcjsKK2NsYXNzIFFEUlRTdXBw
b3J0OwogY2xhc3MgRXZlbnRTZW5kZXI7CiBjbGFzcyBUZXh0SW5wdXRDb250cm9sbGVyOwogY2xh
c3MgR0NDb250cm9sbGVyOwpAQCAtMTI0LDYgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgUVN0cmlu
ZyBkdW1wRnJhbWVzQXNUZXh0KFFXZWJGcmFtZSogZnJhbWUpOwogICAgIFFTdHJpbmcgZHVtcEJh
Y2tGb3J3YXJkTGlzdCgpOwogICAgIExheW91dFRlc3RDb250cm9sbGVyICptX2NvbnRyb2xsZXI7
CisgICAgUURSVFN1cHBvcnQgKm1fZHJ0U3VwcG9ydDsKIAogICAgIGJvb2wgbV9kdW1wUGl4ZWxz
OwogICAgIFFTdHJpbmcgbV9leHBlY3RlZEhhc2g7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5jcHAKaW5kZXggOWNjM2FhNy4uYjcxMDYwNCAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuY3Bw
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmNwcApA
QCAtMjksMzAgKzI5LDI3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHQ0Nv
bnRyb2xsZXJRdC5oIgorI2luY2x1ZGUgIi4uLy4uLy4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaCIKIAogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CiAKLWV4
dGVybiBpbnQgcXRfZHJ0X2phdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKLWV4dGVybiB2b2lkIHF0
X2RydF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3QoKTsKLQotZXh0ZXJuIHZvaWQgcXRfZHJ0X2dh
cmJhZ2VDb2xsZWN0b3JfY29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9u
ZSk7Ci0KLUdDQ29udHJvbGxlcjo6R0NDb250cm9sbGVyKFFXZWJQYWdlKiBwYXJlbnQpCitHQ0Nv
bnRyb2xsZXI6OkdDQ29udHJvbGxlcihRV2ViUGFnZSogcGFyZW50LCBRRFJUU3VwcG9ydCogZHJ0
U3VwcG9ydCkKICAgICA6IFFPYmplY3QocGFyZW50KQorICAgICwgbV9kcnRTdXBwb3J0KGRydFN1
cHBvcnQpCiB7CiB9CiAKIHZvaWQgR0NDb250cm9sbGVyOjpjb2xsZWN0KCkgY29uc3QKIHsKLSAg
ICBxdF9kcnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCk7CisgICAgbV9kcnRTdXBwb3J0LT5n
YXJiYWdlQ29sbGVjdG9yQ29sbGVjdCgpOwogfQogCiB2b2lkIEdDQ29udHJvbGxlcjo6Y29sbGVj
dE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSkgY29uc3QKIHsKLSAgICBxdF9k
cnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQod2FpdFVudGlsRG9u
ZSk7CisgICAgbV9kcnRTdXBwb3J0LT5nYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRl
VGhyZWFkKHdhaXRVbnRpbERvbmUpOwogfQogCiBzaXplX3QgR0NDb250cm9sbGVyOjpnZXRKU09i
amVjdENvdW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcXRfZHJ0X2phdmFTY3JpcHRPYmplY3Rz
Q291bnQoKTsKKyAgICByZXR1cm4gbV9kcnRTdXBwb3J0LT5qYXZhU2NyaXB0T2JqZWN0c0NvdW50
KCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRy
b2xsZXJRdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQu
aAppbmRleCA4ZjViNDMyLi41NDA0YjI2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0dDQ29udHJvbGxlclF0LmgKQEAgLTMyLDE3ICszMiwyMSBAQAogI2luY2x1ZGUgPFFP
YmplY3Q+CiAKIGNsYXNzIFFXZWJQYWdlOworY2xhc3MgUURSVFN1cHBvcnQ7CiAKIGNsYXNzIEdD
Q29udHJvbGxlciA6IHB1YmxpYyBRT2JqZWN0CiB7CiAgICAgUV9PQkpFQ1QKIHB1YmxpYzoKLSAg
ICBHQ0NvbnRyb2xsZXIoUVdlYlBhZ2UqIHBhcmVudCk7CisgICAgR0NDb250cm9sbGVyKFFXZWJQ
YWdlKiBwYXJlbnQsIFFEUlRTdXBwb3J0KiBkcnRTdXBwb3J0KTsKIAogcHVibGljIHNsb3RzOgog
ICAgIHZvaWQgY29sbGVjdCgpIGNvbnN0OwogICAgIHZvaWQgY29sbGVjdE9uQWx0ZXJuYXRlVGhy
ZWFkKGJvb2wgd2FpdFVudGlsRG9uZSkgY29uc3Q7CiAgICAgc2l6ZV90IGdldEpTT2JqZWN0Q291
bnQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBRRFJUU3VwcG9ydCogbV9kcnRTdXBwb3J0Owog
fTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IDcwODc5MjQuLjNiMWZjZWUgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAgKi8KICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlclF0LmgiCisjaW5jbHVkZSAiLi4vLi4vLi4v
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIgogCiAjaW5j
bHVkZSAiRHVtcFJlbmRlclRyZWVRdC5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgpAQCAtMzks
MjkgKzQwLDExIEBACiBleHRlcm4gdm9pZCBxdF9kdW1wX2VkaXRpbmdfY2FsbGJhY2tzKGJvb2wg
Yik7CiBleHRlcm4gdm9pZCBxdF9kdW1wX2ZyYW1lX2xvYWRlcihib29sIGIpOwogZXh0ZXJuIHZv
aWQgcXRfZHVtcF9yZXNvdXJjZV9sb2FkX2NhbGxiYWNrcyhib29sIGIpOwotZXh0ZXJuIHZvaWQg
cXRfZHJ0X3NldE1lZGlhVHlwZShRV2ViRnJhbWUqIHFmcmFtZSwgY29uc3QgUVN0cmluZyYgdHlw
ZSk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfc2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChRV2Vi
UGFnZSosIGJvb2wpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3NldEphdmFTY3JpcHRQcm9maWxpbmdF
bmFibGVkKFFXZWJGcmFtZSosIGJvb2wgZW5hYmxlZCk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfc2V0
VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKFFXZWJQYWdlKiwgYm9vbCBlbmFibGVkKTsKLWV4dGVy
biBib29sIHF0X2RydF9wYXVzZUFuaW1hdGlvbihRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBu
YW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKLWV4dGVybiBib29s
IHF0X2RydF9wYXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KFFXZWJGcmFtZSosIGNvbnN0IFFTdHJp
bmcmIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOwotZXh0ZXJu
IGJvb2wgcXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFtZSosIGNvbnN0IFFTdHJpbmcm
IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKLWV4
dGVybiBpbnQgcXRfZHJ0X251bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhRV2ViRnJhbWUqKTsKLWV4
dGVybiB2b2lkIHF0X2RydF9zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1l
KGJvb2wgZm9yYmlkZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpOwotCi1leHRlcm4gdm9pZCBx
dF9kcnRfd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBzb3VyY2VPcmln
aW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFTdHJpbmcmIGRl
c3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci1leHRlcm4g
UVN0cmluZyBxdF9kcnRfY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJh
bWUsIGNvbnN0IFFTdHJpbmcmIGlkKTsKLWV4dGVybiBpbnQgcXRfZHJ0X3dvcmtlclRocmVhZENv
dW50KCk7Ci1leHRlcm4gaW50IHF0X2RydF9wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoUVdlYkZy
YW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
KTsKLWV4dGVybiBpbnQgcXRfZHJ0X251bWJlck9mUGFnZXMoUVdlYkZyYW1lKiBxRnJhbWUsIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3dlYmluc3BlY3Rv
cl9leGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBwYWdlLCBsb25nIGNhbGxJZCwgY29uc3QgUVN0cmlu
ZyYgc2NyaXB0KTsKLWV4dGVybiB2b2lkIHF0X2RydF93ZWJpbnNwZWN0b3Jfc2hvdyhRV2ViUGFn
ZSAqcGFnZSk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfd2ViaW5zcGVjdG9yX2Nsb3NlKFFXZWJQYWdl
ICpwYWdlKTsKLWV4dGVybiB2b2lkIHF0X2RydF9lbmFibGVDYXJldEJyb3dzaW5nKFFXZWJQYWdl
KiBwYWdlLCBib29sIHZhbHVlKTsKLQotTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RD
b250cm9sbGVyKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlKiBkcnQpCisKK0xheW91dFRlc3RDb250
cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZSogZHJ0
LCBRRFJUU3VwcG9ydCogZHJ0U3VwcG9ydCkKICAgICA6IFFPYmplY3QoKQogICAgICwgbV9kcnQo
ZHJ0KQorICAgICwgbV9kcnRTdXBwb3J0KGRydFN1cHBvcnQpCiB7CiAgICAgcmVzZXQoKTsKIH0K
QEAgLTE0Myw3ICsxMjYsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjp3YWl0VW50aWxE
b25lKCkKIAogUVN0cmluZyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y291bnRlclZhbHVlRm9yRWxl
bWVudEJ5SWQoY29uc3QgUVN0cmluZyYgaWQpCiB7Ci0gICAgcmV0dXJuIHF0X2RydF9jb3VudGVy
VmFsdWVGb3JFbGVtZW50QnlJZChtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKSwgaWQpOwor
ICAgIHJldHVybiBtX2RydFN1cHBvcnQtPmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKG1fZHJ0
LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpLCBpZCk7CiB9CiAKIGludCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6d2ViSGlzdG9yeUl0ZW1Db3VudCgpCkBAIC0yOTQsMjkgKzI3NywyOSBAQCBRU3RyaW5n
IExheW91dFRlc3RDb250cm9sbGVyOjpkZWNvZGVIb3N0TmFtZShjb25zdCBRU3RyaW5nJiBob3N0
KQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNZWRpYVR5cGUoY29uc3QgUVN0cmlu
ZyYgdHlwZSkKIHsKLSAgICBxdF9kcnRfc2V0TWVkaWFUeXBlKG1fZHJ0LT53ZWJQYWdlKCktPm1h
aW5GcmFtZSgpLCB0eXBlKTsKKyAgICBtX2RydFN1cHBvcnQtPnNldE1lZGlhVHlwZShtX2RydC0+
d2ViUGFnZSgpLT5tYWluRnJhbWUoKSwgdHlwZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmNsb3NlV2ViSW5zcGVjdG9yKCkKIHsKLSAgICBxdF9kcnRfd2ViaW5zcGVjdG9yX2Ns
b3NlKG1fZHJ0LT53ZWJQYWdlKCkpOworICAgIG1fZHJ0U3VwcG9ydC0+d2ViSW5zcGVjdG9yQ2xv
c2UobV9kcnQtPndlYlBhZ2UoKSk7CiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+
c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgZmFsc2Up
OwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKCkKIHsK
ICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRp
bmdzOjpEZXZlbG9wZXJFeHRyYXNFbmFibGVkLCB0cnVlKTsKLSAgICBxdF9kcnRfd2ViaW5zcGVj
dG9yX3Nob3cobV9kcnQtPndlYlBhZ2UoKSk7CisgICAgbV9kcnRTdXBwb3J0LT53ZWJJbnNwZWN0
b3JTaG93KG1fZHJ0LT53ZWJQYWdlKCkpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElkLCBjb25zdCBRU3RyaW5nJiBzY3Jp
cHQpCiB7Ci0gICAgcXRfZHJ0X3dlYmluc3BlY3Rvcl9leGVjdXRlU2NyaXB0KG1fZHJ0LT53ZWJQ
YWdlKCksIGNhbGxJZCwgc2NyaXB0KTsKKyAgICBtX2RydFN1cHBvcnQtPndlYkluc3BlY3RvckV4
ZWN1dGVTY3JpcHQobV9kcnQtPndlYlBhZ2UoKSwgY2FsbElkLCBzY3JpcHQpOwogfQogCiB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRGcmFtZVNldEZsYXR0ZW5pbmdFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKIHsKLSAgICBxdF9kcnRfc2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChtX2Ry
dC0+d2ViUGFnZSgpLCBlbmFibGVkKTsKKyAgICBtX2RydFN1cHBvcnQtPnNldEZyYW1lU2V0Rmxh
dHRlbmluZ0VuYWJsZWQobV9kcnQtPndlYlBhZ2UoKSwgZW5hYmxlZCk7CiB9CiAKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJv
b2wgZW5hYmxlZCkKQEAgLTMzNywxMiArMzIwLDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9v
bCBlbmFibGUpCiB7CiAgICAgbV90b3BMb2FkaW5nRnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+
c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgdHJ1ZSk7
Ci0gICAgcXRfZHJ0X3NldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKG1fdG9wTG9hZGluZ0Zy
YW1lLCBlbmFibGUpOworICAgIG1fZHJ0U3VwcG9ydC0+c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0Vu
YWJsZWQobV90b3BMb2FkaW5nRnJhbWUsIGVuYWJsZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZSkKIHsKLSAg
ICBxdF9kcnRfc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKG1fZHJ0LT53ZWJQYWdlKCksIGVu
YWJsZSk7CisgICAgbV9kcnRTdXBwb3J0LT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQobV9k
cnQtPndlYlBhZ2UoKSwgZW5hYmxlKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0Rml4ZWRDb250ZW50c1NpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQpAQCAtMzk3LDcgKzM4
MCw3IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25F
bGVtZW50V2l0aElkKGNvbnN0IFFTdHJpbmcmIGFuCiB7CiAgICAgUVdlYkZyYW1lKiBmcmFtZSA9
IG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIFFfQVNTRVJUKGZyYW1lKTsKLSAg
ICByZXR1cm4gcXRfZHJ0X3BhdXNlQW5pbWF0aW9uKGZyYW1lLCBhbmltYXRpb25OYW1lLCB0aW1l
LCBlbGVtZW50SWQpOworICAgIHJldHVybiBtX2RydFN1cHBvcnQtPnBhdXNlQW5pbWF0aW9uKGZy
YW1lLCBhbmltYXRpb25OYW1lLCB0aW1lLCBlbGVtZW50SWQpOwogfQogCiBib29sIExheW91dFRl
c3RDb250cm9sbGVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3Qg
UVN0cmluZyYgcHJvcGVydHlOYW1lLApAQCAtNDA2LDcgKzM4OSw3IEBAIGJvb2wgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBR
U3RyaW5nJiBwCiB7CiAgICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fZHJ0LT53ZWJQYWdlKCktPm1h
aW5GcmFtZSgpOwogICAgIFFfQVNTRVJUKGZyYW1lKTsKLSAgICByZXR1cm4gcXRfZHJ0X3BhdXNl
VHJhbnNpdGlvbk9mUHJvcGVydHkoZnJhbWUsIHByb3BlcnR5TmFtZSwgdGltZSwgZWxlbWVudElk
KTsKKyAgICByZXR1cm4gbV9kcnRTdXBwb3J0LT5wYXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KGZy
YW1lLCBwcm9wZXJ0eU5hbWUsIHRpbWUsIGVsZW1lbnRJZCk7CiB9CiAKIGJvb2wgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUoY29uc3QgUVN0
cmluZyYgYW5pbWF0aW9uSWQsCkBAIC00MTUsMTQgKzM5OCwxNCBAQCBib29sIExheW91dFRlc3RD
b250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKGNvbnN0IFFTdHJp
bmcmIGFuaQogewogICAgIFFXZWJGcmFtZSogZnJhbWUgPSBtX2RydC0+d2ViUGFnZSgpLT5tYWlu
RnJhbWUoKTsKICAgICBRX0FTU0VSVChmcmFtZSk7Ci0gICAgcmV0dXJuIHF0X2RydF9wYXVzZVNW
R0FuaW1hdGlvbihmcmFtZSwgYW5pbWF0aW9uSWQsIHRpbWUsIGVsZW1lbnRJZCk7CisgICAgcmV0
dXJuIG1fZHJ0U3VwcG9ydC0+cGF1c2VTVkdBbmltYXRpb24oZnJhbWUsIGFuaW1hdGlvbklkLCB0
aW1lLCBlbGVtZW50SWQpOwogfQogCiB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVt
YmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKIHsKICAgICBRV2ViRnJhbWUqIGZyYW1lID0g
bV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgUV9BU1NFUlQoZnJhbWUpOwotICAg
IHJldHVybiBxdF9kcnRfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKGZyYW1lKTsKKyAgICByZXR1
cm4gbV9kcnRTdXBwb3J0LT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoZnJhbWUpOwogfQogCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkaXNhYmxlSW1hZ2VMb2FkaW5nKCkKQEAgLTQ1MCw3
ICs0MzMsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbERhdGFiYXNlcygp
CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4o
Y29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblBy
b3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgcXRfZHJ0X3doaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4o
c291cmNlT3JpZ2luLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBtX2RydFN1cHBvcnQtPndoaXRlTGlzdEFjY2Vz
c0Zyb21PcmlnaW4oc291cmNlT3JpZ2luLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlv
bkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKCkKQEAgLTQ4Nyw3ICs0NzAsNyBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0
IFFTdHJpbmcmIHVybCkKIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Q2FyZXRCcm93
c2luZ0VuYWJsZWQoYm9vbCB2YWx1ZSkKIHsKLSAgICBxdF9kcnRfZW5hYmxlQ2FyZXRCcm93c2lu
ZyhtX2RydC0+d2ViUGFnZSgpLCB2YWx1ZSk7CisgICAgbV9kcnRTdXBwb3J0LT5lbmFibGVDYXJl
dEJyb3dzaW5nKG1fZHJ0LT53ZWJQYWdlKCksIHZhbHVlKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTUw
MCwxMiArNDgzLDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZXJTdHlsZVNo
ZWV0RW5hYmxlZChib29sIGVuYWJsZWQpCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4sIGNv
bnN0IFFTdHJpbmcmIHNjaGVtZSkKIHsKLSAgICBxdF9kcnRfc2V0RG9tYWluUmVsYXhhdGlvbkZv
cmJpZGRlbkZvclVSTFNjaGVtZShmb3JiaWRkZW4sIHNjaGVtZSk7CisgICAgbV9kcnRTdXBwb3J0
LT5zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGZvcmJpZGRlbiwgc2No
ZW1lKTsKIH0KIAogaW50IExheW91dFRlc3RDb250cm9sbGVyOjp3b3JrZXJUaHJlYWRDb3VudCgp
CiB7Ci0gICAgcmV0dXJuIHF0X2RydF93b3JrZXJUaHJlYWRDb3VudCgpOworICAgIHJldHVybiBt
X2RydFN1cHBvcnQtPndvcmtlclRocmVhZENvdW50KCk7CiB9CiAKIGludCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQpAQCAtNTE2LDEyICs0OTksMzIgQEAgaW50IExheW91dFRl
c3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoY29uc3QgUVN0cmluZyYgaWQs
IGZsb2F0IHdpZHQKICAgICAgICAgaGVpZ2h0ID0gbV9kcnQtPndlYlBhZ2UoKS0+dmlld3BvcnRT
aXplKCkuaGVpZ2h0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHF0X2RydF9wYWdlTnVtYmVyRm9y
RWxlbWVudEJ5SWQobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIGlkLCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICByZXR1cm4gbV9kcnRTdXBwb3J0LT5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQo
bV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIGlkLCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAog
aW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0IHdpZHRoLCBmbG9h
dCBoZWlnaHQpCiB7Ci0gICAgcmV0dXJuIHF0X2RydF9udW1iZXJPZlBhZ2VzKG1fZHJ0LT53ZWJQ
YWdlKCktPm1haW5GcmFtZSgpLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICByZXR1cm4gbV9kcnRTdXBw
b3J0LT5udW1iZXJPZlBhZ2VzKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpLCB3aWR0aCwg
aGVpZ2h0KTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAgIG1fZHJ0U3VwcG9ydC0+c2V0U21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKG1fZHJ0LT53ZWJQYWdlKCksIGVuYWJsZSk7Cit9CisKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQo
Ym9vbCBlbmFibGUpCit7CisgICAgbV9kcnRTdXBwb3J0LT5zZXRTZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkKG1fZHJ0LT53ZWJQYWdlKCksIGVuYWJsZSk7Cit9CisKK3ZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmV4ZWNDb21tYW5kKGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFT
dHJpbmcmIHZhbHVlKQoreworICAgIG1fZHJ0U3VwcG9ydC0+ZXhlY3V0ZUNvcmVDb21tYW5kQnlO
YW1lKG1fZHJ0LT53ZWJQYWdlKCksIG5hbWUsIHZhbHVlKTsKK30KKworYm9vbCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6aXNDb21tYW5kRW5hYmxlZChjb25zdCBRU3RyaW5nJiBuYW1lKSBjb25zdAor
eworICAgIHJldHVybiBtX2RydFN1cHBvcnQtPmlzQ29tbWFuZEVuYWJsZWQobV9kcnQtPndlYlBh
Z2UoKSwgbmFtZSk7CiB9CiAKIGNvbnN0IHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjpt
YXhWaWV3V2lkdGggPSA4MDA7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKaW5kZXggNWNmNTEwNC4uNDhkNzZlZSAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuaApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPHF3ZWJzZWN1cml0eW9yaWdp
bi5oPgogCiBjbGFzcyBRV2ViRnJhbWU7CitjbGFzcyBRRFJUU3VwcG9ydDsKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBEdW1wUmVuZGVyVHJlZTsKIH0KQEAgLTU1LDcgKzU2LDcgQEAg
Y2xhc3MgTGF5b3V0VGVzdENvbnRyb2xsZXIgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9QUk9Q
RVJUWShpbnQgd29ya2VyVGhyZWFkQ291bnQgUkVBRCB3b3JrZXJUaHJlYWRDb3VudCkKICAgICBR
X1BST1BFUlRZKGJvb2wgZ2xvYmFsRmxhZyBSRUFEIGdsb2JhbEZsYWcgV1JJVEUgc2V0R2xvYmFs
RmxhZykKIHB1YmxpYzoKLSAgICBMYXlvdXRUZXN0Q29udHJvbGxlcihXZWJDb3JlOjpEdW1wUmVu
ZGVyVHJlZSogZHJ0KTsKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlcihXZWJDb3JlOjpEdW1wUmVu
ZGVyVHJlZSogZHJ0LCBRRFJUU3VwcG9ydCogZHJ0U3VwcG9ydCk7CiAKICAgICBib29sIHNob3Vs
ZER1bXBBc1RleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHREdW1wOyB9CiAgICAgYm9vbCBzaG91
bGREdW1wQmFja0ZvcndhcmRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9kdW1wQmFja0ZvcndhcmRM
aXN0OyB9CkBAIC0xMzgsNiArMTM5LDEwIEBAIHB1YmxpYyBzbG90czoKICAgICB2b2lkIHNldE1h
aW5GcmFtZUlzRmlyc3RSZXNwb25kZXIoYm9vbCBpc0ZpcnN0KTsKICAgICB2b2lkIHNldFhTU0F1
ZGl0b3JFbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChi
b29sIGVuYWJsZSk7CisgICAgdm9pZCBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
KGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIGV4ZWNDb21tYW5kKGNvbnN0IFFTdHJpbmcmIG5hbWUs
IGNvbnN0IFFTdHJpbmcmIHZhbHVlID0gUVN0cmluZygpKTsKKyAgICBib29sIGlzQ29tbWFuZEVu
YWJsZWQoY29uc3QgUVN0cmluZyYgbmFtZSkgY29uc3Q7CiAKICAgICBib29sIHBhdXNlQW5pbWF0
aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGNvbnN0IFFTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRv
dWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOwogICAgIGJvb2wgcGF1c2VUcmFu
c2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGNvbnN0IFFTdHJpbmcmIHByb3BlcnR5TmFtZSwg
ZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CkBAIC0xODQsNiArMTg5LDcg
QEAgcHJpdmF0ZToKICAgICBRQmFzaWNUaW1lciBtX3RpbWVvdXRUaW1lcjsKICAgICBRV2ViRnJh
bWUqIG1fdG9wTG9hZGluZ0ZyYW1lOwogICAgIFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlKiBtX2Ry
dDsKKyAgICBRRFJUU3VwcG9ydCogbV9kcnRTdXBwb3J0OwogICAgIFFXZWJIaXN0b3J5KiBtX3dl
Ykhpc3Rvcnk7CiB9OwogCi0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51254</attachid>
            <date>2010-03-21 13:57:01 -0700</date>
            <delta_ts>2010-04-02 07:28:20 -0700</delta_ts>
            <desc>patch (for your patch) to make buildbot happy</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>8055</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">LS0tIC90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEt
ZXhwZWN0ZWQudHh0CTIwMTAtMDMtMjEgMTM6MTk6MzcuMDAwMDAwMDAwIC0wNzAwCisrKyAvdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLWFjdHVhbC50
eHQJMjAxMC0wMy0yMSAxMzoxOTozNy4wMDAwMDAwMDAgLTA3MDAKQEAgLTIsMTcgKzIsMTcgQEAK
ICAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKIGxheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAogICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc4Ci0gICAgICBSZW5kZXJCbG9j
ayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTkKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgNzAzeDE5Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzAz
OiAiVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgZXh0ZW5kaW5nIGEgc2VsZWN0aW9uIGNyZWF0
ZWQgd2l0aCB0aGUgbW91c2Ugd291bGQgYmxvdyBpdCBhd2F5IGJlZm9yZSBleHRlbmRpbmcgaXQu
IgotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzMpIHNpemUgNzg0eDE5Ci0gICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM2NXgxOQotICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDM2NTogIlRoZXJlIHNob3VsZCBiZSBmaXZlIGNoYXJhY3RlcnMg
c2VsZWN0ZWQgaW4gdGhpcyBzZW50ZW5jZS4iCi0gICAgICBSZW5kZXJCbG9jayB7VUx9IGF0ICgw
LDY2KSBzaXplIDc4NHgxOQotICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwwKSBz
aXplIDc0NHgxOQotICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKC0xNywwKSBzaXplIDd4
MTk6IGJ1bGxldAotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUz
eDE5Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1MzogIlN1Y2Nlc3MiCisg
ICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJC
bG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MjAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgNzgzeDIwCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
NzgzOiAiVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgZXh0ZW5kaW5nIGEgc2VsZWN0aW9uIGNy
ZWF0ZWQgd2l0aCB0aGUgbW91c2Ugd291bGQgYmxvdyBpdCBhd2F5IGJlZm9yZSBleHRlbmRpbmcg
aXQuIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzYpIHNpemUgNzg0eDIwCisgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDQwNngyMAorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDQwNjogIlRoZXJlIHNob3VsZCBiZSBmaXZlIGNoYXJhY3Rl
cnMgc2VsZWN0ZWQgaW4gdGhpcyBzZW50ZW5jZS4iCisgICAgICBSZW5kZXJCbG9jayB7VUx9IGF0
ICgwLDcyKSBzaXplIDc4NHgyMAorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCww
KSBzaXplIDc0NHgyMAorICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKC0xOCwwKSBzaXpl
IDd4MjA6IGJ1bGxldAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDYxeDIwCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA2MTogIlN1Y2Nlc3Mi
CiBzZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDMgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxk
IDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQK
IHNlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gOSBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQg
MiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAot
LS0gL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMi1l
eHBlY3RlZC50eHQJMjAxMC0wMy0yMSAxMzoxOTozNy4wMDAwMDAwMDAgLTA3MDAKKysrIC90bXAv
bGF5b3V0LXRlc3QtcmVzdWx0cy9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTItYWN0dWFsLnR4
dAkyMDEwLTAzLTIxIDEzOjE5OjM3LjAwMDAwMDAwMCAtMDcwMApAQCAtMTMsMTMgKzEzLDEzIEBA
CiAgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiBsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAotICAg
IFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3OAotICAgICAgUmVuZGVyQmxv
Y2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE5Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDY2MHgxOQotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDY2
MDogIlRoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZXJlIHNlbGVjdGlvbiBjaGFuZ2Ugbm90aWZpY2F0
aW9ucyB3b3VsZCBwb3N0IHRoZSB3cm9uZyBwcm9wb3NlZCBzZWxlY3RlZCByYW5nZS4iCi0gICAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzMykgc2l6ZSA3ODR4MTkKLSAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzY1eDE5Ci0gICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMzY1OiAiVGhlcmUgc2hvdWxkIGJlIGZpdmUgY2hhcmFjdGVycyBzZWxlY3Rl
ZCBpbiB0aGlzIHNlbnRlbmNlLiIKLSAgICAgIFJlbmRlckJsb2NrIHtVTH0gYXQgKDAsNjYpIHNp
emUgNzg0eDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAg
ICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgyMAorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3MzV4MjAKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCA3MzU6ICJUaGlzIHRlc3RzIGZvciBhIGJ1ZyB3aGVyZSBzZWxlY3Rpb24gY2hh
bmdlIG5vdGlmaWNhdGlvbnMgd291bGQgcG9zdCB0aGUgd3JvbmcgcHJvcG9zZWQgc2VsZWN0ZWQg
cmFuZ2UuIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzYpIHNpemUgNzg0eDIwCisg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDQwNngyMAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQwNjogIlRoZXJlIHNob3VsZCBiZSBmaXZlIGNoYXJh
Y3RlcnMgc2VsZWN0ZWQgaW4gdGhpcyBzZW50ZW5jZS4iCisgICAgICBSZW5kZXJCbG9jayB7VUx9
IGF0ICgwLDcyKSBzaXplIDc4NHgwCiBzZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDAgb2YgY2hp
bGQgMCB7I3RleHR9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQg
MCB7SFRNTH0gb2YgZG9jdW1lbnQKIHNlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gMiBvZiBjaGls
ZCAwIHsjdGV4dH0gb2YgY2hpbGQgMiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAw
IHtIVE1MfSBvZiBkb2N1bWVudAotLS0gL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2VkaXRpbmcv
ZGVsZXRpbmcvNTMwMDM3OS1leHBlY3RlZC50eHQJMjAxMC0wMy0yMSAxMzoxOTozMS4wMDAwMDAw
MDAgLTA3MDAKKysrIC90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9lZGl0aW5nL2RlbGV0aW5nLzUz
MDAzNzktYWN0dWFsLnR4dAkyMDEwLTAzLTIxIDEzOjE5OjMxLjAwMDAwMDAwMCAtMDcwMApAQCAt
NCw4ICs0LDggQEAKICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAog
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAogICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MAotICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDAsMCkgc2l6ZSA3ODR4MTkKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgNTN4MTkKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1MzogIlN1Y2Nl
c3MiCi0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxOSkgc2l6ZSA3ODR4MAorICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MjAKKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNjF4MjAKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA2MTogIlN1Y2Nlc3MiCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwyMCkg
c2l6ZSA3ODR4MAogY2FyZXQ6IHBvc2l0aW9uIDcgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxk
IDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQK
LS0tIC90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0
ZS0wMDMtZXhwZWN0ZWQudHh0CTIwMTAtMDMtMjEgMTM6MTk6MzIuMDAwMDAwMDAwIC0wNzAwCisr
KyAvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUt
MDAzLWFjdHVhbC50eHQJMjAxMC0wMy0yMSAxMzoxOTozMi4wMDAwMDAwMDAgLTA3MDAKQEAgLTEz
LDE1ICsxMywxNSBAQAogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc4NHg1ODQKLSAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4
NHgzNgotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3Njh4MzYKLSAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzOTI6ICJUaGlzIHRlc3RzIGRlbGV0aW5n
IGEgc2VsZWN0aW9uIGNyZWF0ZWQgd2l0aCBhIHdvcmQgZ3JhbnVsYXJpdHkuICIKLSAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMzkyLDApIHdpZHRoIDM0ODogIlRvIHJ1biBpdCBtYW51YWxseSwgZG91
YmxlIGNsaWNrIG9uICdiYXInIGFuZCBoaXQgZGVsZXRlLiAiCi0gICAgICAgICAgdGV4dCBydW4g
YXQgKDc0MCwwKSB3aWR0aCAyODogIllvdSIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkg
d2lkdGggMTI3OiAic2hvdWxkIHNlZSAnZm9vIGJheicuIgotICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDAsNTIpIHNpemUgNzg0eDE4Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDIxeDE4Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjE6ICJm
b28iCi0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjEsMCkgc2l6ZSAyNngxOAotICAg
ICAgICAgIHRleHQgcnVuIGF0ICgyMSwwKSB3aWR0aCAyNjogIiBiYXoiCisgICAgICBSZW5kZXJC
bG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4NDAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgNzY2eDQwCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
NDM5OiAiVGhpcyB0ZXN0cyBkZWxldGluZyBhIHNlbGVjdGlvbiBjcmVhdGVkIHdpdGggYSB3b3Jk
IGdyYW51bGFyaXR5LiAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDQzOSwwKSB3aWR0aCAzMjc6
ICJUbyBydW4gaXQgbWFudWFsbHksIGRvdWJsZSBjbGljayBvbiAnYmFyJyBhbmQgaGl0IgorICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDIwKSB3aWR0aCA1MjogImRlbGV0ZS4gIgorICAgICAgICAg
IHRleHQgcnVuIGF0ICg1MiwyMCkgd2lkdGggMTc3OiAiWW91IHNob3VsZCBzZWUgJ2ZvbyBiYXon
LiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDU2KSBzaXplIDc4NHgyMAorICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMngyMAorICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDIyOiAiZm9vIgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDIyLDApIHNpemUgMzB4MjAKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjIsMCkgd2lkdGgg
MzA6ICIgYmF6IgogY2FyZXQ6IHBvc2l0aW9uIDMgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxk
IDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQK
LS0tIC90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0
ZS0wMDQtZXhwZWN0ZWQudHh0CTIwMTAtMDMtMjEgMTM6MTk6MzIuMDAwMDAwMDAwIC0wNzAwCisr
KyAvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUt
MDA0LWFjdHVhbC50eHQJMjAxMC0wMy0yMSAxMzoxOTozMi4wMDAwMDAwMDAgLTA3MDAKQEAgLTEz
LDE1ICsxMywxNSBAQAogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc4NHg1ODQKLSAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4
NHgzNgotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NDV4MzYKLSAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzOTI6ICJUaGlzIHRlc3RzIGRlbGV0aW5n
IGEgc2VsZWN0aW9uIGNyZWF0ZWQgd2l0aCBhIHdvcmQgZ3JhbnVsYXJpdHkuICIKLSAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMzkyLDApIHdpZHRoIDM1MzogIlRvIHJ1biBpdCBtYW51YWxseSwgZG91
YmxlIGNsaWNrIG9uICdiYXInIGFuZCBoaXQgZm9yd2FyZCIKLSAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwxOCkgd2lkdGggNDU6ICJkZWxldGUuICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDUs
MTgpIHdpZHRoIDE1OTogIllvdSBzaG91bGQgc2VlICdmb28gYmF6Jy4iCi0gICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMCw1Mikgc2l6ZSA3ODR4MTgKLSAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMjF4MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAyMTogImZvbyIKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyMSwwKSBzaXplIDI2
eDE4Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDIxLDApIHdpZHRoIDI2OiAiIGJheiIKKyAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHg0MAorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NjZ4NDAKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA0Mzk6ICJUaGlzIHRlc3RzIGRlbGV0aW5nIGEgc2VsZWN0aW9uIGNyZWF0ZWQgd2l0
aCBhIHdvcmQgZ3JhbnVsYXJpdHkuICIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDM5LDApIHdp
ZHRoIDMyNzogIlRvIHJ1biBpdCBtYW51YWxseSwgZG91YmxlIGNsaWNrIG9uICdiYXInIGFuZCBo
aXQiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjApIHdpZHRoIDEwOTogImZvcndhcmQgZGVs
ZXRlLiAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDEwOSwyMCkgd2lkdGggMTc3OiAiWW91IHNo
b3VsZCBzZWUgJ2ZvbyBiYXonLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDU2KSBz
aXplIDc4NHgyMAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMngy
MAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIyOiAiZm9vIgorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIyLDApIHNpemUgMzB4MjAKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMjIsMCkgd2lkdGggMzA6ICIgYmF6IgogY2FyZXQ6IHBvc2l0aW9uIDMgb2YgY2hpbGQg
MCB7I3RleHR9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7
SFRNTH0gb2YgZG9jdW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51363</attachid>
            <date>2010-03-22 15:33:41 -0700</date>
            <delta_ts>2010-04-02 07:28:20 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>0001-Add-support-for-LayoutTestController-commands.patch</filename>
            <type>text/plain</type>
            <size>70365</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSA0YzMzMmM3NTM3MjY4ZThlZmUyNGU2NDJlOGY0NjM2NWIzZjFhOTk0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDE1IE1hciAyMDEwIDIyOjQ5OjI5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1
cHBvcnQgZm9yIExheW91dFRlc3RDb250cm9sbGVyIGNvbW1hbmRzOgogICAgICAgICAgIHNldFNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZAogICAgICAgICAgIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQKICAgICAgICAgICBleGVjQ29tbWFuZAogICAgICAgICAgIGlzQ29tbWFuZEVu
YWJsZWQKCiAgICAgICAgVW5za2lwIHRlc3RzOgogICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvc21h
cnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCiAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC8xOTA4
OS5odG1sCiAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtaW1hZ2UtaW4tYW5jaG9y
Lmh0bWwKICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2VuYWJsaW5nLWFuZC1zZWxlY3Rpb24t
Mi5odG1sCiAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1j
cmFzaC5odG1sCiAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFj
ZS1pbWctY3Jhc2guaHRtbAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdo
aXRlc3BhY2UuaHRtbAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1saW5lLmh0bWwK
ICAgICAgICBlZGl0aW5nL2RlbGV0aW5nLzUzMDAzNzkuaHRtbAogICAgICAgIGVkaXRpbmcvZGVs
ZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCiAgICAgICAgZWRpdGluZy9kZWxldGluZy9zbWFy
dC1kZWxldGUtMDA0Lmh0bWwKICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRt
bAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMi5odG1sCgogICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg0NAotLS0KIExheW91dFRlc3Rz
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOSArKwogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCAgICAgICAgICAgICAgICAgICAgfCAgIDE1IC0KIC4u
Li9lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDMtZXhwZWN0ZWQudHh0IHwgICAzMiAr
LQogLi4uL2VkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC1leHBlY3RlZC50eHQgfCAg
IDMyICstCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDggKwogV2ViQ29yZS9XZWJDb3JlLnBybyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgICAxICsKIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCAgICAgICAgICAgICAg
ICAgICAgICAgIHwgIDE4OCAtLS0tLS0tLS0tCiBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5j
cHAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDgxICstLS0tLQogV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYktpdC9xdC9B
cGkvcXdlYnBhZ2VfcC5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJLaXQv
cXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAgICAgICAgICAgICAgICB8ICAgMTUgLQogV2Vi
S2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDY5ICsr
KysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwIHwg
IDM2NSArKysrKysrKysrKysrKysrKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydC5oICAgfCAgIDc5ICsrKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuY3BwICAgICAgICB8ICAgMTQgKy0KIFdlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oICAgICAgICAgIHwgICAgMiArLQogV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAgICAgICAgICAgfCAgIDE4ICstCiBXZWJLaXRU
b29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTAgKysrCiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcCB8ICAgMTgg
Ky0KIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaCAgIHwg
ICAgMSArCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5jcHAg
ICB8ICAgMTIgKy0KIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0
LmggICAgIHwgICAgMiArCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5jcHAgICB8ICAgNzYgKystLQogLi4uL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaCAgICAgfCAgICA1ICsKIDI1IGZpbGVzIGNoYW5nZWQsIDcxOCBpbnNlcnRp
b25zKCspLCAzOTkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggMDEwZDFiMS4uNjg1MGRlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEwLTAzLTE4ICBS
b2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTGF5b3V0VGVzdENvbnRy
b2xsZXIgY29tbWFuZHM6CisgICAgICAgICAgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkCisg
ICAgICAgICAgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZAorICAgICAgICAgIGV4
ZWNDb21tYW5kCisgICAgICAgICAgaXNDb21tYW5kRW5hYmxlZAorCisgICAgICAgIFVuc2tpcCB0
ZXN0czoKKyAgICAgICAgZWRpdGluZy9kZWxldGluZy9zbWFydC1lZGl0aW5nLWRpc2FibGVkLmh0
bWwKKyAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC8xOTA4OS5odG1sCisgICAgICAgIGVkaXRp
bmcvZXhlY0NvbW1hbmQvZGVsZXRlLWltYWdlLWluLWFuY2hvci5odG1sCisgICAgICAgIGVkaXRp
bmcvZXhlY0NvbW1hbmQvZW5hYmxpbmctYW5kLXNlbGVjdGlvbi0yLmh0bWwKKyAgICAgICAgZWRp
dGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1jcmFzaC5odG1sCisgICAgICAg
IGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtaW1nLWNyYXNoLmh0bWwK
KyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5odG1sCisg
ICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1saW5lLmh0bWwKKyAgICAgICAgZWRpdGlu
Zy9kZWxldGluZy81MzAwMzc5Lmh0bWwKKyAgICAgICAgZWRpdGluZy9kZWxldGluZy9zbWFydC1k
ZWxldGUtMDAzLmh0bWwKKyAgICAgICAgZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDA0
Lmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLmh0bWwKKyAgICAgICAg
ZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0yLmh0bWwKKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4NDQKKworICAgICAgICAqIHBsYXRmb3JtL3F0
L1NraXBwZWQ6CisKIDIwMTAtMDMtMTkgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQKaW5kZXggMTZhOTYwZS4uOTU0ZmMzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lw
cGVkCkBAIC0yMjIsOSArMjIyLDYgQEAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVz
aWRlLWNyLXNwYW4uaHRtbAogIyBNaXNzaW5nIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxl
cygpCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWZyYW1lcy5odG1s
CiAKLSMgTWlzc2luZyBsYXlvdXRUZXN0Q29udHJvbGxlci5leGVjQ29tbWFuZCgpCi1lZGl0aW5n
L2V4ZWNDb21tYW5kL2RlbGV0ZS1pbWFnZS1pbi1hbmNob3IuaHRtbCAKLQogIyBNaXNzaW5nIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldEFsd2F5c0FjY2VwdENvb2tpZXMoKQogaHR0cC90ZXN0cy9w
bHVnaW5zL3RoaXJkLXBhcnR5LWNvb2tpZS1hY2NlcHQtcG9saWN5Lmh0bWwKIApAQCAtMjg3LDcg
KzI4NCw2IEBAIGZhc3QvcnVieS9ydWJ5RE9NLXJlbW92ZS10ZXh0Mi5odG1sCiAKICMgLS0tLS0t
LSBmYWlsaW5nIGVkaXRpbmcgdGVzdHMKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLXRvLWVuZC1v
Zi1wYXJhZ3JhcGguaHRtbAotZWRpdGluZy9leGVjQ29tbWFuZC9lbmFibGluZy1hbmQtc2VsZWN0
aW9uLTIuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC9uc3Jlc3BvbmRlci1pbmRlbnQuaHRtbAog
ZWRpdGluZy9leGVjQ29tbWFuZC9uc3Jlc3BvbmRlci1vdXRkZW50Lmh0bWwKIGVkaXRpbmcvaW5w
dXQvZW1hY3MtY3RybC1vLmh0bWwKQEAgLTEwNzYsNyArMTA3Miw2IEBAIGZhc3QvZm9ybXMvbWVu
dWxpc3Qtd2lkdGgtY2hhbmdlLmh0bWwKICMgcHV0IGludG8gdGhlIHNraXBwZWQgbGlzdCBmb3Ig
bm93IHRvIGhhdmUgc29tZSBraW5kIG9mCiAjIHJlZmVyZW5jZSwgc28gd2UgZG9uJ3QgaW50cm9k
dWNlIHJlZ3Jlc3Npb25zLgogZWRpdGluZy9kZWxldGluZy81MTQ0MTM5LTIuaHRtbAotZWRpdGlu
Zy9kZWxldGluZy81MzAwMzc5Lmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWJsb2NrLW1l
cmdlLWNvbnRlbnRzLTAwMS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1ibG9jay1tZXJn
ZS1jb250ZW50cy0wMTkuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtYmxvY2stbWVyZ2Ut
Y29udGVudHMtMDIwLmh0bWwKQEAgLTEwODcsOCArMTA4Miw2IEBAIGVkaXRpbmcvZGVsZXRpbmcv
ZGVsZXRlLWxpbmUtZW5kLXdzLTAwMS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saW5l
LWVuZC13cy0wMDIuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtdG8tc2VsZWN0LXRhYmxl
Lmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRpb25VSS1zaW5nbGUtaW5zdGFuY2UuaHRtbAot
ZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDAzLmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcv
c21hcnQtZGVsZXRlLTAwNC5odG1sCiBlZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MjA0ODguaHRtbAog
ZWRpdGluZy9leGVjQ29tbWFuZC80OTIwNzQyLTEuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC9j
cmVhdGUtbGlzdC13aXRoLWhyLmh0bWwKQEAgLTExMjAsMTUgKzExMTMsMTIgQEAgZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDAzLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9xdWlya3Mt
bW9kZS1ici0xLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzQ5ODM4NTguaHRtbAogZWRpdGluZy9z
ZWxlY3Rpb24vNTEzNjY5Ni5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRtbAot
ZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0yLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2FmdGVy
LWxpbmUtd3JhcC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9lbmQtb2YtZG9jdW1lbnQuaHRtbAog
ZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1sZWZ0LXJpZ2h0Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9u
L3NlbGVjdC1hbGwtMDAxLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtMDAyLmh0
bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtMDAzLmh0bWwKLWVkaXRpbmcvc2VsZWN0
aW9uL3NlbGVjdC1saW5lLmh0bWwKIGVkaXRpbmcvc3R5bGUvYXBwbGUtc3R5bGUtZWRpdGFibGUt
bWl4Lmh0bWwKIGVkaXRpbmcvc3R5bGUvY3JlYXRlLWJsb2NrLWZvci1zdHlsZS0wMTIuaHRtbAog
ZWRpdGluZy9zdHlsZS9mb250LWZhbWlseS13aXRoLXNwYWNlLmh0bWwKQEAgLTQ3NDQsMTUgKzQ3
MzQsMTAgQEAgZG9tL3hodG1sL2xldmVsMy9jb3JlL2Nhbm9uaWNhbGZvcm0wOS54aHRtbAogZWRp
dGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1cmUtMDAxLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcv
ZGVsZXRlLWxpZ2F0dXJlLTAwMi5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVy
ZS0wMDMuaHRtbAotZWRpdGluZy9kZWxldGluZy9zbWFydC1lZGl0aW5nLWRpc2FibGVkLmh0bWwK
LWVkaXRpbmcvZXhlY0NvbW1hbmQvMTkwODkuaHRtbAogZWRpdGluZy9pbnNlcnRpbmcvNTgwMzcw
Ni0xLmh0bWwKIGVkaXRpbmcvaW5zZXJ0aW5nLzU5OTQ0ODAtMi5odG1sCiBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvZmlsZXMtZHVyaW5nLXBhZ2UtZHJhZ3MuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2dl
dC1kYXRhLXRleHQtcGxhaW4tZHJvcC5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGlj
ay13aGl0ZXNwYWNlLWNyYXNoLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdo
aXRlc3BhY2UtaW1nLWNyYXNoLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdo
aXRlc3BhY2UuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZHJhZy1zdGFydC1ldmVudC1jbGllbnQt
eC15Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tYmlkaS5odG1sCiBl
ZGl0aW5nL3NlbGVjdGlvbi9oaXQtdGVzdC1hbm9ueW1vdXMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDAzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvZGVsZXRpbmcvc21h
cnQtZGVsZXRlLTAwMy1leHBlY3RlZC50eHQKaW5kZXggY2E3M2YzMy4uOWQzNjBkOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxl
dGUtMDAzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5n
L2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDMtZXhwZWN0ZWQudHh0CkBAIC0xLDExICsxLDExIEBA
Ci1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZy
b20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mIERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJ
bkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byAzIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CiBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24K
K0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRv
RE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gNSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmlu
aXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNl
bGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01S
YW5nZTpyYW5nZSBmcm9tIDQgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byA3IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcg
REVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9mICN0
ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNyBvZiAjdGV4dCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9mICN0ZXh0
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiAjdGV4dCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3Ry
ZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVE
T01SYW5nZTpyYW5nZSBmcm9tIDQgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAxIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJ
TkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9m
ICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0
ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3du
c3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNh
dGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCkBAIC0xMywxMyArMTMsMTUgQEAgbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAg
UmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAogICAgIFJlbmRlckJvZHkg
e0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgw
LDApIHNpemUgNzg0eDM4Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDc2NHgzOAotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM5NDogIlRoaXMgdGVz
dHMgZGVsZXRpbmcgYSBzZWxlY3Rpb24gY3JlYXRlZCB3aXRoIGEgd29yZCBncmFudWxhcml0eS4g
IgotICAgICAgICAgIHRleHQgcnVuIGF0ICgzOTQsMCkgd2lkdGggMzQ1OiAiVG8gcnVuIGl0IG1h
bnVhbGx5LCBkb3VibGUgY2xpY2sgb24gJ2JhcicgYW5kIGhpdCBkZWxldGUuICIKLSAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoNzM5LDApIHdpZHRoIDI1OiAiWW91IgotICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDE5KSB3aWR0aCAxMjg6ICJzaG91bGQgc2VlICdmb28gYmFyJy4iCi0gICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCw1Mikgc2l6ZSA3ODR4MTkKLSAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgNTF4MTkKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCA1MTogImZvbyAgYmF6IgotY2FyZXQ6IHBvc2l0aW9uIDQgb2YgY2hpbGQgMCB7I3RleHR9
IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2Yg
ZG9jdW1lbnQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgzNgorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3Njh4MzYKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzOTI6ICJUaGlzIHRlc3RzIGRlbGV0aW5nIGEgc2VsZWN0
aW9uIGNyZWF0ZWQgd2l0aCBhIHdvcmQgZ3JhbnVsYXJpdHkuICIKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMzkyLDApIHdpZHRoIDM0ODogIlRvIHJ1biBpdCBtYW51YWxseSwgZG91YmxlIGNsaWNr
IG9uICdiYXInIGFuZCBoaXQgZGVsZXRlLiAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDc0MCww
KSB3aWR0aCAyODogIllvdSIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMTI3
OiAic2hvdWxkIHNlZSAnZm9vIGJheicuIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
NTIpIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDIxeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjE6ICJmb28iCisgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjEsMCkgc2l6ZSAyNngxOAorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgyMSwwKSB3aWR0aCAyNjogIiBiYXoiCitjYXJldDogcG9zaXRpb24gMyBvZiBj
aGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGls
ZCAwIHtIVE1MfSBvZiBkb2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDA0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC1leHBl
Y3RlZC50eHQKaW5kZXggNTgzNDIyZi4uMGYyOTcxMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDA0LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRl
bGV0ZS0wMDQtZXhwZWN0ZWQudHh0CkBAIC0xLDExICsxLDExIEBACi1FRElUSU5HIERFTEVHQVRF
OiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
CitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZy
b20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mIERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0
aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6
IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJv
bSA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4
dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZm
aW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFu
Z2UgZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBv
ZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSA0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAj
dGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9u
QWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZTpyYW5nZSBmcm9tIDQg
b2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA3IG9mICN0ZXh0ID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gNyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gNCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5n
OkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZTpyYW5nZSBmcm9t
IDQgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCkBAIC0xMywxMyArMTMsMTUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgUmVuZGVyQmxvY2sge0hUTUx9
IGF0ICgwLDApIHNpemUgODAweDYwMAogICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNp
emUgNzg0eDU4NAotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDM4Ci0g
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc0MHgzOAotICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM5NDogIlRoaXMgdGVzdHMgZGVsZXRpbmcgYSBzZWxl
Y3Rpb24gY3JlYXRlZCB3aXRoIGEgd29yZCBncmFudWxhcml0eS4gIgotICAgICAgICAgIHRleHQg
cnVuIGF0ICgzOTQsMCkgd2lkdGggMzQ2OiAiVG8gcnVuIGl0IG1hbnVhbGx5LCBkb3VibGUgY2xp
Y2sgb24gJ2JhcicgYW5kIGhpdCBmb3J3YXJkIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE5
KSB3aWR0aCA0NzogImRlbGV0ZS4gIgotICAgICAgICAgIHRleHQgcnVuIGF0ICg0NywxOSkgd2lk
dGggMTU3OiAiWW91IHNob3VsZCBzZWUgJ2ZvbyBiYXInLiIKLSAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgwLDUyKSBzaXplIDc4NHgxOQotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSA1MXgxOQotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUxOiAi
Zm9vICBiYXoiCi1jYXJldDogcG9zaXRpb24gNCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQg
MiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAor
ICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDM2CisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc0NXgzNgorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDM5MjogIlRoaXMgdGVzdHMgZGVsZXRpbmcgYSBzZWxlY3Rpb24gY3JlYXRl
ZCB3aXRoIGEgd29yZCBncmFudWxhcml0eS4gIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgzOTIs
MCkgd2lkdGggMzUzOiAiVG8gcnVuIGl0IG1hbnVhbGx5LCBkb3VibGUgY2xpY2sgb24gJ2Jhcicg
YW5kIGhpdCBmb3J3YXJkIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA0NTog
ImRlbGV0ZS4gIgorICAgICAgICAgIHRleHQgcnVuIGF0ICg0NSwxOCkgd2lkdGggMTU5OiAiWW91
IHNob3VsZCBzZWUgJ2ZvbyBiYXonLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDUy
KSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAy
MXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIxOiAiZm9vIgorICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIxLDApIHNpemUgMjZ4MTgKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMjEsMCkgd2lkdGggMjY6ICIgYmF6IgorY2FyZXQ6IHBvc2l0aW9uIDMgb2YgY2hp
bGQgMCB7I3RleHR9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQg
MCB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNTYyNDAyMi4uNTA0MDczYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMSBAQAorMjAx
MC0wMy0xOCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0CisKKyAgICAgICAgKiBXZWJDb3JlLnBybzogQWRkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKKwogMjAxMC0wMy0yMCAgSm9zZXBoIFBlY29yYXJvICA8
am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IDEyMDJhZmYuLjliOWI5NjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjA4Nyw2ICsyMDg3LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBcCiAg
ICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwIFwK
ICAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcCBcCisgICAg
Li4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAgXAog
ICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAgXAogICAg
IC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0LmNwcCBcCiAgICAgLi4v
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIFwKZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYmZy
YW1lLmNwcAppbmRleCA4Njk2NDM3Li44NDJjMzM0IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC04OCwx
OTMgKzg4LDYgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCiBleHRlcm4gUV9HVUlfRVhQT1JUIGludCBx
dF9kZWZhdWx0RHBpKCk7CiBRVF9FTkRfTkFNRVNQQUNFCiAKLXZvaWQgUVdFQktJVF9FWFBPUlQg
cXRfZHJ0X3NldE1lZGlhVHlwZShRV2ViRnJhbWUqIHFmcmFtZSwgY29uc3QgUVN0cmluZyYgdHlw
ZSkKLXsKLSAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3Jl
KHFmcmFtZSk7Ci0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsK
LSAgICB2aWV3LT5zZXRNZWRpYVR5cGUodHlwZSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVw
ZGF0ZVN0eWxlU2VsZWN0b3IoKTsKLSAgICB2aWV3LT5mb3JjZUxheW91dCgpOwotfQotCi1ib29s
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9oYXNEb2N1bWVudEVsZW1lbnQoUVdlYkZyYW1lKiBxZnJh
bWUpCi17Ci0gICAgcmV0dXJuIFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKS0+ZG9jdW1l
bnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0
X3NldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKFFXZWJGcmFtZSogcWZyYW1lLCBib29sIGVu
YWJsZWQpCi17Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgRnJhbWUqIGZy
YW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOwotICAgIEluc3BlY3RvckNvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7
Ci0gICAgaWYgKCFjb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGVuYWJsZWQp
Ci0gICAgICAgIGNvbnRyb2xsZXItPmVuYWJsZVByb2ZpbGVyKCk7Ci0gICAgZWxzZQotICAgICAg
ICBjb250cm9sbGVyLT5kaXNhYmxlUHJvZmlsZXIoKTsKLSNlbmRpZgotfQotCi0vLyBQYXVzZSBh
IGdpdmVuIENTUyBhbmltYXRpb24gb3IgdHJhbnNpdGlvbiBvbiB0aGUgdGFyZ2V0IG5vZGUgYXQg
YSBzcGVjaWZpYyB0aW1lLgotLy8gSWYgdGhlIGFuaW1hdGlvbiBvciB0cmFuc2l0aW9uIGlzIGFs
cmVhZHkgcGF1c2VkLCBpdCB3aWxsIHVwZGF0ZSBpdHMgcGF1c2UgdGltZS4KLS8vIFRoaXMgbWV0
aG9kIGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGVzdGluZyB0aGUgQ1NTIGFuaW1h
dGlvbiBhbmQgdHJhbnNpdGlvbiBzeXN0ZW0uCi1ib29sIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9w
YXVzZUFuaW1hdGlvbihRV2ViRnJhbWUgKnFmcmFtZSwgY29uc3QgUVN0cmluZyAmYW5pbWF0aW9u
TmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCkKLXsKLSAgICBGcmFt
ZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAgaWYgKCFmcmFt
ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29u
dHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQo
KTsKLSAgICBRX0FTU0VSVChkb2MpOwotCi0gICAgTm9kZSogY29yZU5vZGUgPSBkb2MtPmdldEVs
ZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5vZGUtPnJl
bmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjb250cm9sbGVy
LT5wYXVzZUFuaW1hdGlvbkF0VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwgYW5pbWF0aW9uTmFt
ZSwgdGltZSk7Ci19Ci0KLWJvb2wgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNlVHJhbnNpdGlv
bk9mUHJvcGVydHkoUVdlYkZyYW1lICpxZnJhbWUsIGNvbnN0IFFTdHJpbmcgJnByb3BlcnR5TmFt
ZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCkKLXsKLSAgICBGcmFtZSog
ZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAgaWYgKCFmcmFtZSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJv
bGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKTsK
LSAgICBRX0FTU0VSVChkb2MpOwotCi0gICAgTm9kZSogY29yZU5vZGUgPSBkb2MtPmdldEVsZW1l
bnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5vZGUtPnJlbmRl
cmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjb250cm9sbGVyLT5w
YXVzZVRyYW5zaXRpb25BdFRpbWUoY29yZU5vZGUtPnJlbmRlcmVyKCksIHByb3BlcnR5TmFtZSwg
dGltZSk7Ci19Ci0KLS8vIFBhdXNlIGEgZ2l2ZW4gU1ZHIGFuaW1hdGlvbiBvbiB0aGUgdGFyZ2V0
IG5vZGUgYXQgYSBzcGVjaWZpYyB0aW1lLgotLy8gVGhpcyBtZXRob2QgaXMgb25seSBpbnRlbmRl
ZCB0byBiZSB1c2VkIGZvciB0ZXN0aW5nIHRoZSBTVkcgYW5pbWF0aW9uIHN5c3RlbS4KLWJvb2wg
UVdFQktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFtZSAqcWZyYW1l
LCBjb25zdCBRU3RyaW5nICZhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcg
JmVsZW1lbnRJZCkKLXsKLSNpZiAhRU5BQkxFKFNWRykKLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxz
ZQotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKLSAg
ICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBEb2N1bWVudCogZG9j
ID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgUV9BU1NFUlQoZG9jKTsKLQotICAgIGlmICghZG9j
LT5zdmdFeHRlbnNpb25zKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIE5vZGUqIGNv
cmVOb2RlID0gZG9jLT5nZXRFbGVtZW50QnlJZChhbmltYXRpb25JZCk7Ci0gICAgaWYgKCFjb3Jl
Tm9kZSB8fCAhU1ZHU01JTEVsZW1lbnQ6OmlzU01JTEVsZW1lbnQoY29yZU5vZGUpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZG9jLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCkt
PnNhbXBsZUFuaW1hdGlvbkF0VGltZShlbGVtZW50SWQsIHN0YXRpY19jYXN0PFNWR1NNSUxFbGVt
ZW50Kj4oY29yZU5vZGUpLCB0aW1lKTsKLSNlbmRpZgotfQotCi0vLyBSZXR1cm5zIHRoZSB0b3Rh
bCBudW1iZXIgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9ucyAoaW5jbHVkZXMgYm90aCBD
U1MgdHJhbnNpdGlvbnMgYW5kIENTUyBhbmltYXRpb25zKS4KLWludCBRV0VCS0lUX0VYUE9SVCBx
dF9kcnRfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFFXZWJGcmFtZSAqcWZyYW1lKQotewotICAg
IEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKLSAgICBpZiAo
IWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBbmltYXRpb25Db250cm9sbGVy
KiBjb250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOwotICAgIGlmICghY29udHJvbGxlcikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGNvbnRyb2xsZXItPm51bWJlck9m
QWN0aXZlQW5pbWF0aW9ucygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9jbGVh
ckZyYW1lTmFtZShRV2ViRnJhbWUqIHFGcmFtZSkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2Vi
RnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgZnJhbWUtPnRyZWUoKS0+Y2xlYXJOYW1l
KCk7Ci19Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfamF2YVNjcmlwdE9iamVjdHNDb3Vu
dCgpCi17Ci0gICAgcmV0dXJuIEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkt
PmhlYXAuZ2xvYmFsT2JqZWN0Q291bnQoKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9k
cnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCkKLXsKLSAgICBnY0NvbnRyb2xsZXIoKS5nYXJi
YWdlQ29sbGVjdE5vdygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9nYXJiYWdl
Q29sbGVjdG9yX2NvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpCi17
Ci0gICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZEZvckRl
YnVnZ2luZyh3YWl0VW50aWxEb25lKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdmFsdWUgb2YgY291
bnRlciBpbiB0aGUgZWxlbWVudCBzcGVjaWZpZWQgYnkgXGEgaWQuCi1RU3RyaW5nIFFXRUJLSVRf
RVhQT1JUIHF0X2RydF9jb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIHFGcmFt
ZSwgY29uc3QgUVN0cmluZyYgaWQpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJp
dmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+
ZG9jdW1lbnQoKSkgewotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQtPmdldEVs
ZW1lbnRCeUlkKGlkKTsKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmNvdW50ZXJWYWx1ZUZvckVs
ZW1lbnQoZWxlbWVudCk7Ci0gICAgfQotICAgIHJldHVybiBRU3RyaW5nKCk7Ci19Ci0KLWludCBR
V0VCS0lUX0VYUE9SVCBxdF9kcnRfcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFFXZWJGcmFtZSog
cUZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLXsK
LSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAg
aWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgRWxlbWVudCogZWxlbWVudCA9
IGZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmcoaWQpKTsKLSAg
ICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBQcmludENv
bnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KGVsZW1lbnQsIEZsb2F0U2l6ZSh3aWR0aCwgaGVp
Z2h0KSk7Ci19Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfbnVtYmVyT2ZQYWdlcyhRV2Vi
RnJhbWUqIHFGcmFtZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLXsKLSAgICBGcmFtZSog
ZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKCFmcmFtZSkK
LSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6bnVtYmVyT2ZQ
YWdlcyhmcmFtZSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLX0KLQotLy8gU3VzcGVuZCBh
Y3RpdmUgRE9NIG9iamVjdHMgaW4gdGhpcyBmcmFtZS4KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRf
c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBxRnJhbWUpCi17Ci0gICAgRnJhbWUq
IGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGlmIChmcmFtZS0+
ZG9jdW1lbnQoKSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN1c3BlbmRBY3RpdmVET01P
YmplY3RzKCk7Ci19Ci0gICAgICAgICAgICAKLS8vIFJlc3VtZSBhY3RpdmUgRE9NIG9iamVjdHMg
aW4gdGhpcyBmcmFtZS4KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfcmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0cyhRV2ViRnJhbWUqIHFGcmFtZSkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQ
cml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpOwotfSAgICAgICAg
ICAgICAgICAgICAgICAgIAotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9ldmFsdWF0ZVNj
cmlwdEluSXNvbGF0ZWRXb3JsZChRV2ViRnJhbWUqIHFGcmFtZSwgaW50IHdvcmxkSWQsIGNvbnN0
IFFTdHJpbmcmIHNjcmlwdCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRl
Ojpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKGZyYW1lKQotICAgICAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0gZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0SW5Xb3JsZChtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSwgc2NyaXB0LCB0cnVlKS5qc1ZhbHVlKCk7Ci19Ci0KIHN0YXRpYyBib29sIHdl
YmZyYW1lX3Njcm9sbE92ZXJmbG93KFdlYkNvcmU6OkZyYW1lKiBmcmFtZSwgaW50IGR4LCBpbnQg
ZHksIGNvbnN0IFFQb2ludCYgcG9zKQogewogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5kb2N1
bWVudCgpIHx8ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkpCkBAIC0zNTQsNyArMTY3LDYgQEAgdm9p
ZCBRV0VCS0lUX0VYUE9SVCBxdHdlYmtpdF93ZWJmcmFtZV9zY3JvbGxSZWN1cnNpdmVseShRV2Vi
RnJhbWUqIHFGcmFtZSwgaW50IGQKICAgICB9CiB9CiAKLQogUVdlYkZyYW1lRGF0YTo6UVdlYkZy
YW1lRGF0YShXZWJDb3JlOjpQYWdlKiBwYXJlbnRQYWdlLCBXZWJDb3JlOjpGcmFtZSogcGFyZW50
RnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJGcmFtZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgZnJhbWVOYW1lKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L0FwaS9xd2ViZnJhbWUuaCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKaW5kZXggY2U5
ODA1Yi4uNzNjYzAzZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAorKysg
Yi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFFXZWJT
ZWN1cml0eU9yaWdpbjsKIGNsYXNzIFFXZWJFbGVtZW50OwogY2xhc3MgUVdlYkVsZW1lbnRDb2xs
ZWN0aW9uOwogCitjbGFzcyBRRFJUU3VwcG9ydDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBXaWRnZXRQcml2YXRlOwogICAgIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50UXQ7CkBAIC0y
MjUsNiArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2U7CiAgICAg
ZnJpZW5kIGNsYXNzIFFXZWJQYWdlUHJpdmF0ZTsKICAgICBmcmllbmQgY2xhc3MgUVdlYkZyYW1l
UHJpdmF0ZTsKKyAgICBmcmllbmQgY2xhc3MgUURSVFN1cHBvcnQ7CiAgICAgZnJpZW5kIGNsYXNz
IFdlYkNvcmU6OldpZGdldFByaXZhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkNocm9tZUNsaWVudFF0
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmNwcAppbmRleCBhZDgxMjI3Li45OTg0NjUyIDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAt
MTE5LDg2ICsxMTksNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBRV0VC
S0lUX0VYUE9SVCBxdF9kcnRfb3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKQotewotICAgIFBs
dWdpbkRhdGFiYXNlKiBkYiA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKC8qIHBv
cHVsYXRlICovIGZhbHNlKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwotICAgIFN0cmlu
ZyBxdFBhdGgocWdldGVudigiUVRXRUJLSVRfUExVR0lOX1BBVEgiKS5kYXRhKCkpOwotICAgIHF0
UGF0aC5zcGxpdChVQ2hhcignOicpLCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBmYWxzZSwgcGF0
aHMpOwotCi0gICAgZGItPnNldFBsdWdpbkRpcmVjdG9yaWVzKHBhdGhzKTsKLSAgICBkYi0+cmVm
cmVzaCgpOwotfQotCi1pbnQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3dvcmtlclRocmVhZENvdW50
KCkKLXsKLSNpZiBFTkFCTEUoV09SS0VSUykKLSAgICByZXR1cm4gV2ViQ29yZTo6V29ya2VyVGhy
ZWFkOjp3b3JrZXJUaHJlYWRDb3VudCgpOwotI2Vsc2UKLSAgICByZXR1cm4gMDsKLSNlbmRpZgot
fQotCiBib29sIFFXZWJQYWdlUHJpdmF0ZTo6ZHJ0UnVuID0gZmFsc2U7Ci12b2lkIFFXRUJLSVRf
RVhQT1JUIHF0X2RydF9ydW4oYm9vbCBiKQotewotICAgIFFXZWJQYWdlUHJpdmF0ZTo6ZHJ0UnVu
ID0gYjsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfc2V0RnJhbWVTZXRGbGF0dGVu
aW5nRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9vbCBlbmFibGVkKQotewotICAgIFFXZWJQYWdl
UHJpdmF0ZTo6Y29yZShwYWdlKS0+c2V0dGluZ3MoKS0+c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5h
YmxlZChlbmFibGVkKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF93ZWJwYWdlX3NldEdy
b3VwTmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0cmluZyYgZ3JvdXBOYW1lKQotewotICAg
IHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXRHcm91cE5hbWUoZ3JvdXBOYW1lKTsKLX0KLQotUVN0
cmluZyBRV0VCS0lUX0VYUE9SVCBxdF93ZWJwYWdlX2dyb3VwTmFtZShRV2ViUGFnZSogcGFnZSkK
LXsKLSAgICByZXR1cm4gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmdyb3VwTmFtZSgpOwotfQotCi0j
aWYgRU5BQkxFKElOU1BFQ1RPUikKLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3dlYmluc3Bl
Y3Rvcl9leGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBwYWdlLCBsb25nIGNhbGxJZCwgY29uc3QgUVN0
cmluZyYgc2NyaXB0KQotewotICAgIGlmICghcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoY2FsbElk
LCBzY3JpcHQpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF93ZWJpbnNwZWN0b3Jf
Y2xvc2UoUVdlYlBhZ2UqIHBhZ2UpCi17Ci0gICAgaWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICByZXR1cm47Ci0gICAgcGFnZS0+aGFuZGxl
KCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y2xvc2UoKTsKLX0KLQotdm9pZCBRV0VC
S0lUX0VYUE9SVCBxdF9kcnRfd2ViaW5zcGVjdG9yX3Nob3coUVdlYlBhZ2UqIHBhZ2UpCi17Ci0g
ICAgaWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAg
ICAgICByZXR1cm47Ci0gICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+c2hvdygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9zZXRUaW1lbGlu
ZVByb2ZpbGluZ0VuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxlZCkKLXsKLSAgICBJ
bnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVy
bjsKLSAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAgY29udHJvbGxlci0+c3RhcnRUaW1lbGluZVBy
b2ZpbGVyKCk7Ci0gICAgZWxzZQotICAgICAgICBjb250cm9sbGVyLT5zdG9wVGltZWxpbmVQcm9m
aWxlcigpOwotfQotI2VuZGlmCi0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X2VuYWJsZUNh
cmV0QnJvd3NpbmcoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgdmFsdWUpCi17Ci0gICAgcGFnZS0+aGFu
ZGxlKCktPnBhZ2UtPnNldHRpbmdzKCktPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKHZhbHVlKTsK
LX0KIAogY2xhc3MgUVdlYlBhZ2VXaWRnZXRDbGllbnQgOiBwdWJsaWMgUVdlYlBhZ2VDbGllbnQg
ewogcHVibGljOgpAQCAtNDYzLDYgKzM4NCw4IEBAIFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQ
cml2YXRlKFFXZWJQYWdlICpxcSkKICAgICBwbHVnaW5GYWN0b3J5ID0gMDsKICAgICBpbnNpZGVP
cGVuQ2FsbCA9IGZhbHNlOwogICAgIGZvcndhcmRVbnN1cHBvcnRlZENvbnRlbnQgPSBmYWxzZTsK
KyAgICBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSBmYWxzZTsKKyAgICBzZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkID0gZmFsc2U7CiAgICAgZWRpdGFibGUgPSBmYWxzZTsKICAgICB1
c2VGaXhlZExheW91dCA9IGZhbHNlOwogICAgIGxpbmtQb2xpY3kgPSBRV2ViUGFnZTo6RG9udERl
bGVnYXRlTGlua3M7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmggYi9XZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmgKaW5kZXggMDc2ZmI3Yy4uODBhNjA3OCAxMDA2NDQKLS0tIGEv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaApA
QCAtMzY1LDYgKzM2NSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxl
cjsKKyAgICBmcmllbmQgY2xhc3MgUURSVFN1cHBvcnQ7CiB9OwogCiBRX0RFQ0xBUkVfT1BFUkFU
T1JTX0ZPUl9GTEFHUyhRV2ViUGFnZTo6RmluZEZsYWdzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZV9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAppbmRleCAxNWRk
ZmIyLi5kOGJhNWRkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAorKysg
Yi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaApAQCAtMTYyLDYgKzE2Miw4IEBAIHB1YmxpYzoK
ICAgICBRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm5ldHdvcmtNYW5hZ2VyOwogCiAgICAgYm9vbCBm
b3J3YXJkVW5zdXBwb3J0ZWRDb250ZW50OworICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFi
bGVkOworICAgIGJvb2wgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDsKICAgICBRV2Vi
UGFnZTo6TGlua0RlbGVnYXRpb25Qb2xpY3kgbGlua1BvbGljeTsKIAogICAgIFFTaXplIHZpZXdw
b3J0U2l6ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNw
cCBiL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcAppbmRleCA2YzI2YmQ3Li5i
NjlmMjRkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAK
KysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCkBAIC0zMCwyMSArMzAs
NiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBRV0VCS0lUX0VYUE9SVCBx
dF9kcnRfd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBzb3VyY2VPcmln
aW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFTdHJpbmcmIGRl
c3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKLXsKLSAgICBT
ZWN1cml0eU9yaWdpbjo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbigqU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVz
dGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci19Ci0KLXZvaWQgUVdF
QktJVF9FWFBPUlQgcXRfZHJ0X3Jlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpCi17Ci0gICAg
U2VjdXJpdHlPcmlnaW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwotfQotCi12b2lk
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJM
U2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgU2Vj
dXJpdHlPcmlnaW46OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9y
YmlkZGVuLCBzY2hlbWUpOwotfQotCiAvKiEKICAgICBcY2xhc3MgUVdlYlNlY3VyaXR5T3JpZ2lu
CiAgICAgXHNpbmNlIDQuNQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktp
dC9xdC9DaGFuZ2VMb2cKaW5kZXggNjI0ZWYxOC4uMGRiMDkxYiAxMDA2NDQKLS0tIGEvV2ViS2l0
L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAK
KzIwMTAtMDMtMTggIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgY2xhc3MgUURS
VFN1cHBvcnQuIFRoaXMgbm93IGhvdXNlcyBhbGwgdGhlIHF0X2RydF8qIGZ1bmN0aW9ucworICAg
ICAgICB0aGF0IHByZXZpb3VzbHkgbGl2ZWQgaW4gcXdlYnBhZ2UgYW5kIHF3ZWJmcmFtZS4KKwor
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIgY29tbWFuZHM6Cisg
ICAgICAgICAgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkCisgICAgICAgICAgc2V0U2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZAorICAgICAgICAgIGV4ZWNDb21tYW5kCisgICAgICAg
ICAgaXNDb21tYW5kRW5hYmxlZAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNTg0NAorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBBcGkvcXdl
YnNlY3VyaXR5b3JpZ2luLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFFEUlRTdXBwb3J0OjpRRFJUU3VwcG9y
dCk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6flFEUlRTdXBwb3J0KToKKyAgICAgICAgKFFEUlRT
dXBwb3J0OjpvdmVyd3JpdGVQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgIChRRFJUU3VwcG9y
dDo6d29ya2VyVGhyZWFkQ291bnQpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OnJ1bik6CisgICAg
ICAgIChRRFJUU3VwcG9ydDo6c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZCk6CisgICAgICAg
IChRRFJUU3VwcG9ydDo6d2ViUGFnZVNldEdyb3VwTmFtZSk6CisgICAgICAgIChRRFJUU3VwcG9y
dDo6d2ViUGFnZUdyb3VwTmFtZSk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6d2ViSW5zcGVjdG9y
RXhlY3V0ZVNjcmlwdCk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6d2ViSW5zcGVjdG9yQ2xvc2Up
OgorICAgICAgICAoUURSVFN1cHBvcnQ6OndlYkluc3BlY3RvclNob3cpOgorICAgICAgICAoUURS
VFN1cHBvcnQ6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgIChRRFJUU3Vw
cG9ydDo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKToKKyAgICAgICAgKFFEUlRTdXBwb3J0Ojpp
c0NvbW1hbmRFbmFibGVkKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpoYXNEb2N1bWVudEVsZW1l
bnQpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVk
KToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAgIChRRFJU
U3VwcG9ydDo6cGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eSk6CisgICAgICAgIChRRFJUU3VwcG9y
dDo6cGF1c2VTVkdBbmltYXRpb24pOgorICAgICAgICAoUURSVFN1cHBvcnQ6Om51bWJlck9mQWN0
aXZlQW5pbWF0aW9ucyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6Y2xlYXJGcmFtZU5hbWUpOgor
ICAgICAgICAoUURSVFN1cHBvcnQ6OmphdmFTY3JpcHRPYmplY3RzQ291bnQpOgorICAgICAgICAo
UURSVFN1cHBvcnQ6OmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0KToKKyAgICAgICAgKFFEUlRTdXBw
b3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKToKKyAgICAgICAg
KFFEUlRTdXBwb3J0Ojpjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZCk6CisgICAgICAgIChRRFJU
U3VwcG9ydDo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKFFEUlRTdXBwb3J0
OjpudW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpzdXNwZW5kQWN0aXZlRE9N
T2JqZWN0cyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6
CisgICAgICAgIChRRFJUU3VwcG9ydDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQpOgor
ICAgICAgICAoUURSVFN1cHBvcnQ6OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4pOgorICAgICAg
ICAoUURSVFN1cHBvcnQ6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cyk6CisgICAgICAgIChR
RFJUU3VwcG9ydDo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSk6Cisg
ICAgICAgIChRRFJUU3VwcG9ydDo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKKyAgICAg
ICAgKFFEUlRTdXBwb3J0OjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAg
ICAgICAgKFFEUlRTdXBwb3J0OjplbmFibGVDYXJldEJyb3dzaW5nKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaDogQWRkZWQuCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50UXQ6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRRdDo6dG9nZ2xlU21hcnRJbnNlcnREZWxldGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50UXQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKiB0ZXN0
cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjptdWx0
aXBsZVBhZ2VHcm91cHNBbmRMb2NhbFN0b3JhZ2UpOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpw
cm90ZWN0QmluZGluZ3NSdW50aW1lT2JqZWN0c0Zyb21Db2xsZWN0b3IpOgorCiAyMDEwLTAzLTE5
ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWE1MjY2
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydC5jcHAKQEAgLTAsMCArMSwzNjUgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAy
MDEwIFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDgsMjAwOSwyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNl
cyBJbmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgiCisKKyNpbmNsdWRl
ICJDb250ZXh0TWVudS5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50UXQuaCIKKyNpbmNs
dWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNs
dWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHQ0NvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgor
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCisjaW5j
bHVkZSAiUHJpbnRDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgorI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpZiBFTkFC
TEUoU1ZHKQorI2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50LmgiCisjZW5kaWYKKyNpbmNsdWRlICJX
b3JrZXJUaHJlYWQuaCIKKworI2luY2x1ZGUgInF3ZWJmcmFtZS5oIgorI2luY2x1ZGUgInF3ZWJm
cmFtZV9wLmgiCisjaW5jbHVkZSAicXdlYnBhZ2UuaCIKKyNpbmNsdWRlICJxd2VicGFnZV9wLmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitRRFJUU3VwcG9ydDo6UURSVFN1cHBvcnQo
KQoreworfQorCitRRFJUU3VwcG9ydDo6flFEUlRTdXBwb3J0KCkKK3sKK30KKwordm9pZCBRRFJU
U3VwcG9ydDo6b3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKQoreworICAgIFBsdWdpbkRhdGFi
YXNlKiBkYiA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKC8qIHBvcHVsYXRlICov
IGZhbHNlKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOworICAgIFN0cmluZyBxdFBhdGgo
cWdldGVudigiUVRXRUJLSVRfUExVR0lOX1BBVEgiKS5kYXRhKCkpOworICAgIHF0UGF0aC5zcGxp
dChVQ2hhcignOicpLCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBmYWxzZSwgcGF0aHMpOworCisg
ICAgZGItPnNldFBsdWdpbkRpcmVjdG9yaWVzKHBhdGhzKTsKKyAgICBkYi0+cmVmcmVzaCgpOwor
fQorCitpbnQgUURSVFN1cHBvcnQ6OndvcmtlclRocmVhZENvdW50KCkKK3sKKyNpZiBFTkFCTEUo
V09SS0VSUykKKyAgICByZXR1cm4gV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRD
b3VudCgpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit2b2lkIFFEUlRTdXBw
b3J0OjpydW4oYm9vbCBiKQoreworICAgIFFXZWJQYWdlUHJpdmF0ZTo6ZHJ0UnVuID0gYjsKK30K
Kwordm9pZCBRRFJUU3VwcG9ydDo6c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChRV2ViUGFn
ZSogcGFnZSwgYm9vbCBlbmFibGVkKQoreworICAgIFFXZWJQYWdlUHJpdmF0ZTo6Y29yZShwYWdl
KS0+c2V0dGluZ3MoKS0+c2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZChlbmFibGVkKTsKK30K
Kwordm9pZCBRRFJUU3VwcG9ydDo6d2ViUGFnZVNldEdyb3VwTmFtZShRV2ViUGFnZSogcGFnZSwg
Y29uc3QgUVN0cmluZyYgZ3JvdXBOYW1lKQoreworICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5z
ZXRHcm91cE5hbWUoZ3JvdXBOYW1lKTsKK30KKworUVN0cmluZyBRRFJUU3VwcG9ydDo6d2ViUGFn
ZUdyb3VwTmFtZShRV2ViUGFnZSogcGFnZSkKK3sKKyAgICByZXR1cm4gcGFnZS0+aGFuZGxlKCkt
PnBhZ2UtPmdyb3VwTmFtZSgpOworfQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKK3ZvaWQgUURS
VFN1cHBvcnQ6OndlYkluc3BlY3RvckV4ZWN1dGVTY3JpcHQoUVdlYlBhZ2UqIHBhZ2UsIGxvbmcg
Y2FsbElkLCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpCit7CisgICAgaWYgKCFwYWdlLT5oYW5kbGUo
KS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICByZXR1cm47CisgICAgcGFn
ZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZXZhbHVhdGVGb3JUZXN0
SW5Gcm9udGVuZChjYWxsSWQsIHNjcmlwdCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OndlYklu
c3BlY3RvckNsb3NlKFFXZWJQYWdlKiBwYWdlKQoreworICAgIGlmICghcGFnZS0+aGFuZGxlKCkt
PnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2Ut
PmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNsb3NlKCk7Cit9CisKK3Zv
aWQgUURSVFN1cHBvcnQ6OndlYkluc3BlY3RvclNob3coUVdlYlBhZ2UqIHBhZ2UpCit7CisgICAg
aWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAg
ICByZXR1cm47CisgICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+c2hvdygpOworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpzZXRUaW1lbGluZVByb2ZpbGluZ0Vu
YWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICBJbnNwZWN0b3JDb250
cm9sbGVyKiBjb250cm9sbGVyID0gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAo
ZW5hYmxlZCkKKyAgICAgICAgY29udHJvbGxlci0+c3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7Cisg
ICAgZWxzZQorICAgICAgICBjb250cm9sbGVyLT5zdG9wVGltZWxpbmVQcm9maWxlcigpOworfQor
Cit2b2lkIFFEUlRTdXBwb3J0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoUVdlYlBhZ2UqIHBh
Z2UsIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQoreworICAgIHBh
Z2UtPmhhbmRsZSgpLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOworfQorCitib29sIFFE
UlRTdXBwb3J0Ojppc0NvbW1hbmRFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5n
JiBuYW1lKQoreworICAgIHJldHVybiBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5pc0Vu
YWJsZWQoKTsKK30KKworI2VuZGlmCisKK2Jvb2wgUURSVFN1cHBvcnQ6Omhhc0RvY3VtZW50RWxl
bWVudChRV2ViRnJhbWUqIHFmcmFtZSkKK3sKKyAgICByZXR1cm4gUVdlYkZyYW1lUHJpdmF0ZTo6
Y29yZShxZnJhbWUpLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKK30KKwordm9pZCBR
RFJUU3VwcG9ydDo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoUVdlYkZyYW1lKiBxZnJh
bWUsIGJvb2wgZW5hYmxlZCkKK3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAg
ICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7CisgICAgSW5z
cGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IGZyYW1lLT5wYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoZW5hYmxlZCkKKyAgICAgICAgY29udHJvbGxlci0+ZW5hYmxlUHJvZmlsZXIoKTsKKyAgICBl
bHNlCisgICAgICAgIGNvbnRyb2xsZXItPmRpc2FibGVQcm9maWxlcigpOworI2VuZGlmCit9CisK
Ky8vIFBhdXNlIGEgZ2l2ZW4gQ1NTIGFuaW1hdGlvbiBvciB0cmFuc2l0aW9uIG9uIHRoZSB0YXJn
ZXQgbm9kZSBhdCBhIHNwZWNpZmljIHRpbWUuCisvLyBJZiB0aGUgYW5pbWF0aW9uIG9yIHRyYW5z
aXRpb24gaXMgYWxyZWFkeSBwYXVzZWQsIGl0IHdpbGwgdXBkYXRlIGl0cyBwYXVzZSB0aW1lLgor
Ly8gVGhpcyBtZXRob2QgaXMgb25seSBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0ZXN0aW5nIHRo
ZSBDU1MgYW5pbWF0aW9uIGFuZCB0cmFuc2l0aW9uIHN5c3RlbS4KK2Jvb2wgUURSVFN1cHBvcnQ6
OnBhdXNlQW5pbWF0aW9uKFFXZWJGcmFtZSAqcWZyYW1lLCBjb25zdCBRU3RyaW5nICZhbmltYXRp
b25OYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVudElkKQoreworICAgIEZy
YW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKKyAgICBpZiAoIWZy
YW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBBbmltYXRpb25Db250cm9sbGVyKiBj
b250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOworICAgIGlmICghY29udHJvbGxlcikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVu
dCgpOworICAgIFFfQVNTRVJUKGRvYyk7CisKKyAgICBOb2RlKiBjb3JlTm9kZSA9IGRvYy0+Z2V0
RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+
cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNvbnRyb2xs
ZXItPnBhdXNlQW5pbWF0aW9uQXRUaW1lKGNvcmVOb2RlLT5yZW5kZXJlcigpLCBhbmltYXRpb25O
YW1lLCB0aW1lKTsKK30KKworYm9vbCBRRFJUU3VwcG9ydDo6cGF1c2VUcmFuc2l0aW9uT2ZQcm9w
ZXJ0eShRV2ViRnJhbWUgKnFmcmFtZSwgY29uc3QgUVN0cmluZyAmcHJvcGVydHlOYW1lLCBkb3Vi
bGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVudElkKQoreworICAgIEZyYW1lKiBmcmFtZSA9
IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0g
ZnJhbWUtPmFuaW1hdGlvbigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIFFf
QVNTRVJUKGRvYyk7CisKKyAgICBOb2RlKiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQo
ZWxlbWVudElkKTsKKyAgICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+cmVuZGVyZXIoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNvbnRyb2xsZXItPnBhdXNlVHJh
bnNpdGlvbkF0VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwgcHJvcGVydHlOYW1lLCB0aW1lKTsK
K30KKworLy8gUGF1c2UgYSBnaXZlbiBTVkcgYW5pbWF0aW9uIG9uIHRoZSB0YXJnZXQgbm9kZSBh
dCBhIHNwZWNpZmljIHRpbWUuCisvLyBUaGlzIG1ldGhvZCBpcyBvbmx5IGludGVuZGVkIHRvIGJl
IHVzZWQgZm9yIHRlc3RpbmcgdGhlIFNWRyBhbmltYXRpb24gc3lzdGVtLgorYm9vbCBRRFJUU3Vw
cG9ydDo6cGF1c2VTVkdBbmltYXRpb24oUVdlYkZyYW1lICpxZnJhbWUsIGNvbnN0IFFTdHJpbmcg
JmFuaW1hdGlvbklkLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVudElkKQorewor
I2lmICFFTkFCTEUoU1ZHKQorICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisgICAgRnJhbWUqIGZy
YW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOworICAgIGlmICghZnJhbWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1l
bnQoKTsKKyAgICBRX0FTU0VSVChkb2MpOworCisgICAgaWYgKCFkb2MtPnN2Z0V4dGVuc2lvbnMo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTm9kZSogY29yZU5vZGUgPSBkb2MtPmdl
dEVsZW1lbnRCeUlkKGFuaW1hdGlvbklkKTsKKyAgICBpZiAoIWNvcmVOb2RlIHx8ICFTVkdTTUlM
RWxlbWVudDo6aXNTTUlMRWxlbWVudChjb3JlTm9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBkb2MtPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+c2FtcGxlQW5pbWF0aW9u
QXRUaW1lKGVsZW1lbnRJZCwgc3RhdGljX2Nhc3Q8U1ZHU01JTEVsZW1lbnQqPihjb3JlTm9kZSks
IHRpbWUpOworI2VuZGlmCit9CisKKy8vIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBjdXJy
ZW50bHkgcnVubmluZyBhbmltYXRpb25zIChpbmNsdWRlcyBib3RoIENTUyB0cmFuc2l0aW9ucyBh
bmQgQ1NTIGFuaW1hdGlvbnMpLgoraW50IFFEUlRTdXBwb3J0OjpudW1iZXJPZkFjdGl2ZUFuaW1h
dGlvbnMoUVdlYkZyYW1lICpxZnJhbWUpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1l
UHJpdmF0ZTo6Y29yZShxZnJhbWUpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5p
bWF0aW9uKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gY29udHJvbGxlci0+bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7Cit9CisK
K3ZvaWQgUURSVFN1cHBvcnQ6OmNsZWFyRnJhbWVOYW1lKFFXZWJGcmFtZSogcUZyYW1lKQorewor
ICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKKyAgICBm
cmFtZS0+dHJlZSgpLT5jbGVhck5hbWUoKTsKK30KKworaW50IFFEUlRTdXBwb3J0OjpqYXZhU2Ny
aXB0T2JqZWN0c0NvdW50KCkKK3sKKyAgICByZXR1cm4gSlNET01XaW5kb3dCYXNlOjpjb21tb25K
U0dsb2JhbERhdGEoKS0+aGVhcC5nbG9iYWxPYmplY3RDb3VudCgpOworfQorCit2b2lkIFFEUlRT
dXBwb3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdCgpCit7CisgICAgZ2NDb250cm9sbGVyKCku
Z2FyYmFnZUNvbGxlY3ROb3coKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6Z2FyYmFnZUNvbGxl
Y3RvckNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpCit7CisgICAg
Z2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZEZvckRlYnVnZ2lu
Zyh3YWl0VW50aWxEb25lKTsKK30KKworLy8gUmV0dXJucyB0aGUgdmFsdWUgb2YgY291bnRlciBp
biB0aGUgZWxlbWVudCBzcGVjaWZpZWQgYnkgXGEgaWQuCitRU3RyaW5nIFFEUlRTdXBwb3J0Ojpj
b3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIHFGcmFtZSwgY29uc3QgUVN0cmlu
ZyYgaWQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJh
bWUpOworICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkgewor
ICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQtPmdldEVsZW1lbnRCeUlkKGlkKTsK
KyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmNvdW50ZXJWYWx1ZUZvckVsZW1lbnQoZWxlbWVudCk7
CisgICAgfQorICAgIHJldHVybiBRU3RyaW5nKCk7Cit9CisKK2ludCBRRFJUU3VwcG9ydDo6cGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkKFFXZWJGcmFtZSogcUZyYW1lLCBjb25zdCBRU3RyaW5nJiBp
ZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBRV2Vi
RnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0
dXJuIC0xOworCisgICAgRWxlbWVudCogZWxlbWVudCA9IGZyYW1lLT5kb2N1bWVudCgpLT5nZXRF
bGVtZW50QnlJZChBdG9taWNTdHJpbmcoaWQpKTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAg
IHJldHVybiAtMTsKKworICAgIHJldHVybiBQcmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVt
ZW50KGVsZW1lbnQsIEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Cit9CisKK2ludCBRRFJUU3Vw
cG9ydDo6bnVtYmVyT2ZQYWdlcyhRV2ViRnJhbWUqIHFGcmFtZSwgZmxvYXQgd2lkdGgsIGZsb2F0
IGhlaWdodCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFG
cmFtZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJu
IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhmcmFtZSwgRmxvYXRTaXplKHdpZHRoLCBoZWln
aHQpKTsKK30KKworLy8gU3VzcGVuZCBhY3RpdmUgRE9NIG9iamVjdHMgaW4gdGhpcyBmcmFtZS4K
K3ZvaWQgUURSVFN1cHBvcnQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKFFXZWJGcmFtZSogcUZy
YW1lKQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1l
KTsKKyAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgp
LT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpOworfQorCisvLyBSZXN1bWUgYWN0aXZlIERPTSBv
YmplY3RzIGluIHRoaXMgZnJhbWUuCit2b2lkIFFEUlRTdXBwb3J0OjpyZXN1bWVBY3RpdmVET01P
YmplY3RzKFFXZWJGcmFtZSogcUZyYW1lKQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFt
ZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKKyAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCisgICAg
ICAgIGZyYW1lLT5kb2N1bWVudCgpLT5yZXN1bWVBY3RpdmVET01PYmplY3RzKCk7Cit9CisKK3Zv
aWQgUURSVFN1cHBvcnQ6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKFFXZWJGcmFtZSog
cUZyYW1lLCBpbnQgd29ybGRJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KQoreworICAgIEZyYW1l
KiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKKyAgICBpZiAoZnJhbWUp
CisgICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVT
Y3JpcHRJbldvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzY3JpcHQsIHRydWUpLmpzVmFs
dWUoKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihj
b25zdCBRU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJv
dG9jb2wsIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWlucykKK3sKKyAgICBTZWN1cml0eU9yaWdpbjo6d2hpdGVMaXN0QWNjZXNzRnJv
bU9yaWdpbigqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwg
ZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucyk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVM
aXN0cygpCit7CisgICAgU2VjdXJpdHlPcmlnaW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0
cygpOworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVu
Rm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpCit7Cisg
ICAgU2VjdXJpdHlPcmlnaW46OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hl
bWUoZm9yYmlkZGVuLCBzY2hlbWUpOworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpzZXRTbWFydElu
c2VydERlbGV0ZUVuYWJsZWQoUVdlYlBhZ2UgKnBhZ2UsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICBw
YWdlLT5kLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSBlbmFibGVkOworfQorCisKK3ZvaWQg
UURSVFN1cHBvcnQ6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoUVdlYlBhZ2Ug
KnBhZ2UsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICBwYWdlLT5kLT5zZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkID0gZW5hYmxlZDsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6ZW5hYmxlQ2Fy
ZXRCcm93c2luZyhRV2ViUGFnZSogcGFnZSwgYm9vbCB2YWx1ZSkKK3sKKyAgICBwYWdlLT5oYW5k
bGUoKS0+cGFnZS0+c2V0dGluZ3MoKS0+c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQodmFsdWUpOwor
fQorCit2b2lkIFFEUlRTdXBwb3J0OjpzZXRNZWRpYVR5cGUoUVdlYkZyYW1lKiBxZnJhbWUsIGNv
bnN0IFFTdHJpbmcmIHR5cGUpCit7CisgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gUVdlYkZy
YW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9
IGZyYW1lLT52aWV3KCk7CisgICAgdmlldy0+c2V0TWVkaWFUeXBlKHR5cGUpOworICAgIGZyYW1l
LT5kb2N1bWVudCgpLT51cGRhdGVTdHlsZVNlbGVjdG9yKCk7CisgICAgdmlldy0+Zm9yY2VMYXlv
dXQoKTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTNhNzM5Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydC5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEwIFJvYmVy
dCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgs
MjAwOSwyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
ICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCisg
ICAgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIER1bXBSZW5kZXJU
cmVlU3VwcG9ydF9oCisjZGVmaW5lIER1bXBSZW5kZXJUcmVlU3VwcG9ydF9oCisKKyNpbmNsdWRl
ICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSA8UXRDb3JlL3FzdHJpbmcuaD4KKworY2xhc3Mg
UVdlYlBhZ2U7CitjbGFzcyBRV2ViRnJhbWU7CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFEUlRT
dXBwb3J0IHsKKworcHVibGljOgorCisgICAgUURSVFN1cHBvcnQoKTsKKyAgICB+UURSVFN1cHBv
cnQoKTsKKworICAgIHN0YXRpYyB2b2lkIGNsZWFyRnJhbWVOYW1lKFFXZWJGcmFtZSogcUZyYW1l
KTsKKyAgICBzdGF0aWMgUVN0cmluZyBjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChRV2ViRnJh
bWUqIHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQpOworICAgIHN0YXRpYyB2b2lkIGVuYWJsZUNh
cmV0QnJvd3NpbmcoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgdmFsdWUpOworICAgIHN0YXRpYyB2b2lk
IGV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKFFXZWJGcmFtZSogcUZyYW1lLCBpbnQgd29y
bGRJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKKyAgICBzdGF0aWMgdm9pZCBleGVjdXRlQ29y
ZUNvbW1hbmRCeU5hbWUoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0
IFFTdHJpbmcmIHZhbHVlKTsKKyAgICBzdGF0aWMgYm9vbCBpc0NvbW1hbmRFbmFibGVkKFFXZWJQ
YWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBnYXJiYWdl
Q29sbGVjdG9yQ29sbGVjdCgpOworICAgIHN0YXRpYyB2b2lkIGdhcmJhZ2VDb2xsZWN0b3JDb2xs
ZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKTsKKyAgICBzdGF0aWMgYm9v
bCBoYXNEb2N1bWVudEVsZW1lbnQoUVdlYkZyYW1lKiBxRnJhbWUpOworICAgIHN0YXRpYyBpbnQg
amF2YVNjcmlwdE9iamVjdHNDb3VudCgpOworICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZBY3RpdmVB
bmltYXRpb25zKFFXZWJGcmFtZSopOworICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZQYWdlcyhRV2Vi
RnJhbWUqIHFGcmFtZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CisgICAgc3RhdGljIHZv
aWQgb3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKTsKKyAgICBzdGF0aWMgaW50IHBhZ2VOdW1i
ZXJGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQsIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOworICAgIHN0YXRpYyBib29sIHBhdXNlQW5pbWF0aW9u
KFFXZWJGcmFtZSosIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3Ry
aW5nJiBlbGVtZW50SWQpOworICAgIHN0YXRpYyBib29sIHBhdXNlVHJhbnNpdGlvbk9mUHJvcGVy
dHkoUVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYgbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFT
dHJpbmcmIGVsZW1lbnRJZCk7CisgICAgc3RhdGljIGJvb2wgcGF1c2VTVkdBbmltYXRpb24oUVdl
YkZyYW1lKiwgY29uc3QgUVN0cmluZyYgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lLCBjb25zdCBR
U3RyaW5nJiBlbGVtZW50SWQpOworICAgIHN0YXRpYyB2b2lkIHJlc2V0T3JpZ2luQWNjZXNzV2hp
dGVMaXN0cygpOworICAgIHN0YXRpYyB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHMoUVdlYkZy
YW1lKiBxRnJhbWUpOworICAgIHN0YXRpYyB2b2lkIHJ1bihib29sIGIpOworICAgIHN0YXRpYyB2
b2lkIHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRk
ZW4sIGNvbnN0IFFTdHJpbmcmIHNjaGVtZSk7CisgICAgc3RhdGljIHZvaWQgc2V0RnJhbWVTZXRG
bGF0dGVuaW5nRW5hYmxlZChRV2ViUGFnZSosIGJvb2wpOworICAgIHN0YXRpYyB2b2lkIHNldE1l
ZGlhVHlwZShRV2ViRnJhbWUqIHFmcmFtZSwgY29uc3QgUVN0cmluZyYgdHlwZSk7CisgICAgc3Rh
dGljIHZvaWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoUVdlYkZyYW1lKiwgYm9vbCBl
bmFibGVkKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoUVdl
YlBhZ2UqLCBib29sIGVuYWJsZWQpOworICAgIHN0YXRpYyB2b2lkIHNldFNtYXJ0SW5zZXJ0RGVs
ZXRlRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9vbCBlbmFibGVkKTsKKyAgICBzdGF0aWMgdm9p
ZCBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBib29s
IGVuYWJsZWQpOworICAgIHN0YXRpYyB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzKFFXZWJG
cmFtZSogcUZyYW1lKTsKKyAgICBzdGF0aWMgdm9pZCB3ZWJJbnNwZWN0b3JFeGVjdXRlU2NyaXB0
KFFXZWJQYWdlKiBwYWdlLCBsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKKyAg
ICBzdGF0aWMgdm9pZCB3ZWJJbnNwZWN0b3JTaG93KFFXZWJQYWdlKiBwYWdlKTsKKyAgICBzdGF0
aWMgdm9pZCB3ZWJJbnNwZWN0b3JDbG9zZShRV2ViUGFnZSogcGFnZSk7CisgICAgc3RhdGljIFFT
dHJpbmcgd2ViUGFnZUdyb3VwTmFtZShRV2ViUGFnZSAqcGFnZSk7CisgICAgc3RhdGljIHZvaWQg
d2ViUGFnZVNldEdyb3VwTmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0cmluZyYgZ3JvdXBO
YW1lKTsKKyAgICBzdGF0aWMgdm9pZCB3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IFFT
dHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwg
Y29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKTsKKyAgICBzdGF0aWMgaW50IHdvcmtlclRocmVhZENvdW50KCk7CisKKyAgICBib29s
IGRydFJ1bjsKK307CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudFF0LmNwcAppbmRleCA5MGViYjFkLi44MjVjNTRiIDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnRRdC5oIgogCisjaW5jbHVkZSAiRHVt
cFJlbmRlclRyZWVTdXBwb3J0LmgiCisKICNpbmNsdWRlICJxd2VicGFnZS5oIgogI2luY2x1ZGUg
InF3ZWJwYWdlX3AuaCIKIApAQCAtMzMzLDE0ICszMzUsMTggQEAgdm9pZCBFZGl0b3JDbGllbnRR
dDo6cGFnZURlc3Ryb3llZCgpCiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OnNtYXJ0SW5zZXJ0RGVs
ZXRlRW5hYmxlZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIG1fcGFnZS0+ZC0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkOworfQorCit2
b2lkIEVkaXRvckNsaWVudFF0Ojp0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpCit7CisgICAgYm9v
bCBjdXJyZW50ID0gbV9wYWdlLT5kLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7CisgICAgbV9w
YWdlLT5kLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSAhY3VycmVudDsKIH0KIAogYm9vbCBF
ZGl0b3JDbGllbnRRdDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wYWdl
LT5kLT5zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOwogfQogCiB2b2lkIEVkaXRvckNs
aWVudFF0Ojp0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpCmRpZmYgLS1naXQgYS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaCBiL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCmluZGV4IDQyYTQwMmYuLjZjMjA4OTggMTAwNjQ0Ci0t
LSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCisrKyBiL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCkBAIC00OCwxMyArNDgsMTMgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShSYW5nZSopOwogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlKEhUTUxFbGVtZW50Kik7CiAg
ICAgdmlydHVhbCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOyAKKyAgICB2aXJ0dWFs
IHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7IAogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRp
bnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpOwogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVDb250
aW51b3VzU3BlbGxDaGVja2luZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc0dyYW1tYXJDaGVja2lu
Z0VuYWJsZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCk7CiAg
ICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKLSAgICAKICAgICB2aXJ0
dWFsIGJvb2wgc2VsZWN0V29yZEJlZm9yZU1lbnVFdmVudCgpOwogICAgIHZpcnR1YWwgYm9vbCBp
c0VkaXRhYmxlKCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3Rf
cXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAK
aW5kZXggYmE3YTg3ZS4uYjY0YmYxNyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJw
YWdlL3RzdF9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9x
d2VicGFnZS5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICovCiAKICNpbmNsdWRlICIuLi91dGlsLmgi
CisjaW5jbHVkZSAiLi4vV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgiCiAj
aW5jbHVkZSA8UURpcj4KICNpbmNsdWRlIDxRR3JhcGhpY3NXaWRnZXQ+CiAjaW5jbHVkZSA8UUxp
bmVFZGl0PgpAQCAtNzIyLDEwICs3MjMsNiBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6Y3JlYXRlVmll
d2xlc3NQbHVnaW4oKQogCiB9CiAKLS8vIGltcG9ydCBwcml2YXRlIEFQSQotdm9pZCBRV0VCS0lU
X0VYUE9SVCBxdF93ZWJwYWdlX3NldEdyb3VwTmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0
cmluZyYgZ3JvdXBOYW1lKTsKLVFTdHJpbmcgUVdFQktJVF9FWFBPUlQgcXRfd2VicGFnZV9ncm91
cE5hbWUoUVdlYlBhZ2UqIHBhZ2UpOwotCiB2b2lkIHRzdF9RV2ViUGFnZTo6bXVsdGlwbGVQYWdl
R3JvdXBzQW5kTG9jYWxTdG9yYWdlKCkKIHsKICAgICBRRGlyIGRpcihRRGlyOjpjdXJyZW50UGF0
aCgpKTsKQEAgLTczNywxMiArNzM0LDEyIEBAIHZvaWQgdHN0X1FXZWJQYWdlOjptdWx0aXBsZVBh
Z2VHcm91cHNBbmRMb2NhbFN0b3JhZ2UoKQogCiAgICAgdmlldzEucGFnZSgpLT5zZXR0aW5ncygp
LT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpMb2NhbFN0b3JhZ2VFbmFibGVkLCB0cnVlKTsK
ICAgICB2aWV3MS5wYWdlKCktPnNldHRpbmdzKCktPnNldExvY2FsU3RvcmFnZVBhdGgoUURpcjo6
dG9OYXRpdmVTZXBhcmF0b3JzKFFEaXI6OmN1cnJlbnRQYXRoKCkgKyAiL3BhdGgxIikpOwotICAg
IHF0X3dlYnBhZ2Vfc2V0R3JvdXBOYW1lKHZpZXcxLnBhZ2UoKSwgImdyb3VwMSIpOworICAgIFFE
UlRTdXBwb3J0Ojp3ZWJQYWdlU2V0R3JvdXBOYW1lKHZpZXcxLnBhZ2UoKSwgImdyb3VwMSIpOwog
ICAgIHZpZXcyLnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6
TG9jYWxTdG9yYWdlRW5hYmxlZCwgdHJ1ZSk7ICAgIAogICAgIHZpZXcyLnBhZ2UoKS0+c2V0dGlu
Z3MoKS0+c2V0TG9jYWxTdG9yYWdlUGF0aChRRGlyOjp0b05hdGl2ZVNlcGFyYXRvcnMoUURpcjo6
Y3VycmVudFBhdGgoKSArICIvcGF0aDIiKSk7Ci0gICAgcXRfd2VicGFnZV9zZXRHcm91cE5hbWUo
dmlldzIucGFnZSgpLCAiZ3JvdXAyIik7Ci0gICAgUUNPTVBBUkUocXRfd2VicGFnZV9ncm91cE5h
bWUodmlldzEucGFnZSgpKSwgUVN0cmluZygiZ3JvdXAxIikpOwotICAgIFFDT01QQVJFKHF0X3dl
YnBhZ2VfZ3JvdXBOYW1lKHZpZXcyLnBhZ2UoKSksIFFTdHJpbmcoImdyb3VwMiIpKTsKKyAgICBR
RFJUU3VwcG9ydDo6d2ViUGFnZVNldEdyb3VwTmFtZSh2aWV3Mi5wYWdlKCksICJncm91cDIiKTsK
KyAgICBRQ09NUEFSRShRRFJUU3VwcG9ydDo6d2ViUGFnZUdyb3VwTmFtZSh2aWV3MS5wYWdlKCkp
LCBRU3RyaW5nKCJncm91cDEiKSk7CisgICAgUUNPTVBBUkUoUURSVFN1cHBvcnQ6OndlYlBhZ2VH
cm91cE5hbWUodmlldzIucGFnZSgpKSwgUVN0cmluZygiZ3JvdXAyIikpOwogCiAKICAgICB2aWV3
MS5zZXRIdG1sKFFTdHJpbmcoIjxodG1sPjxib2R5PiA8L2JvZHk+PC9odG1sPiIpLCBRVXJsKCJo
dHRwOi8vd3d3Lm15ZXhhbXBsZS5jb20iKSk7CkBAIC0xNDU5LDkgKzE0NTYsNiBAQCB2b2lkIHRz
dF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzKCkKICAgICBkZWxldGUgY29udGFpbmVyOwogfQogCi0v
LyBpbXBvcnQgYSBsaXR0bGUgRFJUIGhlbHBlciBmdW5jdGlvbiB0byB0cmlnZ2VyIHRoZSBnYXJi
YWdlIGNvbGxlY3Rvcgotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfZ2FyYmFnZUNvbGxlY3Rv
cl9jb2xsZWN0KCk7Ci0KIHZvaWQgdHN0X1FXZWJQYWdlOjpwcm90ZWN0QmluZGluZ3NSdW50aW1l
T2JqZWN0c0Zyb21Db2xsZWN0b3IoKQogewogICAgIFFTaWduYWxTcHkgbG9hZFNweShtX3ZpZXcs
IFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsKQEAgLTE0NzgsNyArMTQ3Miw3IEBAIHZvaWQg
dHN0X1FXZWJQYWdlOjpwcm90ZWN0QmluZGluZ3NSdW50aW1lT2JqZWN0c0Zyb21Db2xsZWN0b3Io
KQogCiAgICAgbmV3UGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidGVzdG1l
KCdmb28nKSIpOwogCi0gICAgcXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgpOworICAg
IFFEUlRTdXBwb3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdCgpOwogCiAgICAgLy8gZG9uJ3Qg
Y3Jhc2ghCiAgICAgbmV3UGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidGVz
dG1lKCdiYXInKSIpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ4ZWFiNzMuLmYyODc3YTMgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
MyBAQAorMjAxMC0wMy0xOCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIExheW91dFRlc3RDb250cm9sbGVyIGNvbW1hbmRzOgorICAgICAgICAgIHNldFNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZAorICAgICAgICAgIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWQKKyAgICAgICAgICBleGVjQ29tbWFuZAorICAgICAgICAgIGlzQ29tbWFuZEVuYWJsZWQK
KworICAgICAgICBVcGRhdGUgRFJUIHRvIHVzZSBuZXcgUURSVFN1cHBvcnQgY2xhc3MuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0CisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChXZWJD
b3JlOjpEdW1wUmVuZGVyVHJlZTo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWU6OmR1bXBGcmFtZXNBc1RleHQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChHQ0NvbnRy
b2xsZXI6OkdDQ29udHJvbGxlcik6CisgICAgICAgIChHQ0NvbnRyb2xsZXI6OmNvbGxlY3QpOgor
ICAgICAgICAoR0NDb250cm9sbGVyOjpjb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQpOgorICAgICAg
ICAoR0NDb250cm9sbGVyOjpnZXRKU09iamVjdENvdW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpj
b3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6Y2xvc2VXZWJJbnNwZWN0b3IpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNo
b3dXZWJJbnNwZWN0b3IpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRl
SW5XZWJJbnNwZWN0b3IpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEZyYW1l
U2V0RmxhdHRlbmluZ0VuYWJsZWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQpOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRo
SWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZv
ckVsZW1lbnRBdFRpbWUpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9m
QWN0aXZlQW5pbWF0aW9ucyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2hpdGVM
aXN0QWNjZXNzRnJvbU9yaWdpbik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
Q2FyZXRCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUpOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OndvcmtlclRocmVhZENvdW50KToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6ZXhlY0NvbW1hbmQpOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKwogMjAxMC0wMy0xOSAgRGlyayBQcmFua2UgIDxk
cHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXpr
b3YuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVy
VHJlZVF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVl
UXQuY3BwCmluZGV4IGQ4ZjUzZjMuLmRjZmQ3MWMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVF0LmgiCisjaW5j
bHVkZSAiLi4vLi4vLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydC5oIgogI2luY2x1ZGUgIkV2ZW50U2VuZGVyUXQuaCIKICNpbmNsdWRlICJHQ0NvbnRyb2xs
ZXJRdC5oIgogI2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyUXQuaCIKQEAgLTc1LDEzICs3
Niw4IEBACiAKICNpbmNsdWRlIDxxZGVidWcuaD4KIAotZXh0ZXJuIHZvaWQgcXRfZHJ0X3J1bihi
b29sIGIpOwogZXh0ZXJuIHZvaWQgcXRfZHVtcF9zZXRfYWNjZXB0c19lZGl0aW5nKGJvb2wgYik7
CiBleHRlcm4gdm9pZCBxdF9kdW1wX2ZyYW1lX2xvYWRlcihib29sIGIpOwotZXh0ZXJuIHZvaWQg
cXRfZHJ0X2NsZWFyRnJhbWVOYW1lKFFXZWJGcmFtZSogcUZyYW1lKTsKLWV4dGVybiB2b2lkIHF0
X2RydF9vdmVyd3JpdGVQbHVnaW5EaXJlY3RvcmllcygpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3Jl
c2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwotZXh0ZXJuIGJvb2wgcXRfZHJ0X2hhc0RvY3Vt
ZW50RWxlbWVudChRV2ViRnJhbWUqIHFGcmFtZSk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTY5LDYgKzE2NSw4IEBAIHZvaWQgV2ViUGFnZTo6cmVzZXRTZXR0aW5ncygpCiAgICAgc2V0
dGluZ3MoKS0+cmVzZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpPZmZsaW5lV2ViQXBwbGljYXRp
b25DYWNoZUVuYWJsZWQpOwogICAgIHNldHRpbmdzKCktPnJlc2V0QXR0cmlidXRlKFFXZWJTZXR0
aW5nczo6TG9jYWxDb250ZW50Q2FuQWNjZXNzUmVtb3RlVXJscyk7CiAgICAgbV9kcnQtPmxheW91
dFRlc3RDb250cm9sbGVyKCktPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBt
X2RydC0+bGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVk
KHRydWUpOworICAgIG1fZHJ0LT5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT5zZXRTZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkKGZhbHNlKTsKIAogICAgIC8vIGdsb2JhbFNldHRpbmdzIG11
c3QgYmUgcmVzZXQgZXhwbGljaXRseS4KICAgICBtX2RydC0+bGF5b3V0VGVzdENvbnRyb2xsZXIo
KS0+c2V0WFNTQXVkaXRvckVuYWJsZWQoZmFsc2UpOwpAQCAtMzE2LDcgKzMxNCw3IEBAIER1bXBS
ZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSgpCiAgICAgLCBtX2VuYWJsZVRleHRPdXRwdXQoZmFs
c2UpCiAgICAgLCBtX3NpbmdsZUZpbGVNb2RlKGZhbHNlKQogewotICAgIHF0X2RydF9vdmVyd3Jp
dGVQbHVnaW5EaXJlY3RvcmllcygpOworICAgIFFEUlRTdXBwb3J0OjpvdmVyd3JpdGVQbHVnaW5E
aXJlY3RvcmllcygpOwogICAgIFFXZWJTZXR0aW5nczo6ZW5hYmxlUGVyc2lzdGVudFN0b3JhZ2Uo
KTsKIAogICAgIC8vIGNyZWF0ZSBvdXIgcHJpbWFyeSB0ZXN0aW5nIHBhZ2Uvdmlldy4KQEAgLTM2
Myw3ICszNjEsNyBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUoKQogICAgICAgICAg
ICAgdGhpcywgU0xPVChzdGF0dXNCYXJNZXNzYWdlKGNvbnN0IFFTdHJpbmcmKSkpOwogCiAgICAg
UU9iamVjdDo6Y29ubmVjdCh0aGlzLCBTSUdOQUwocXVpdCgpKSwgcUFwcCwgU0xPVChxdWl0KCkp
LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7Ci0gICAgcXRfZHJ0X3J1bih0cnVlKTsKKyAgICBRRFJU
U3VwcG9ydDo6cnVuKHRydWUpOwogICAgIFFGb2N1c0V2ZW50IGV2ZW50KFFFdmVudDo6Rm9jdXNJ
biwgUXQ6OkFjdGl2ZVdpbmRvd0ZvY3VzUmVhc29uKTsKICAgICBRQXBwbGljYXRpb246OnNlbmRF
dmVudChtX21haW5WaWV3LCAmZXZlbnQpOwogfQpAQCAtNDE3LDEyICs0MTUsMTIgQEAgdm9pZCBE
dW1wUmVuZGVyVHJlZTo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKQogICAg
IG1fcGFnZS0+dW5kb1N0YWNrKCktPmNsZWFyKCk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+
c2V0Wm9vbUZhY3RvcigxLjApOwogICAgIGNsZWFySGlzdG9yeShtX3BhZ2UpOwotICAgIHF0X2Ry
dF9jbGVhckZyYW1lTmFtZShtX3BhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBRRFJUU3VwcG9ydDo6
Y2xlYXJGcmFtZU5hbWUobV9wYWdlLT5tYWluRnJhbWUoKSk7CiAKICAgICBXb3JrUXVldWU6OnNo
YXJlZCgpLT5jbGVhcigpOwogICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnNldEZyb3plbihmYWxz
ZSk7CiAKLSAgICBxdF9kcnRfcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CisgICAgUURS
VFN1cHBvcnQ6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwogCiAgICAgUUxvY2FsZTo6
c2V0RGVmYXVsdChRTG9jYWxlOjpjKCkpOwogICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKQEAg
LTU3Myw3ICs1NzEsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpoaWRlUGFnZSgpCiAKIFFTdHJp
bmcgRHVtcFJlbmRlclRyZWU6OmR1bXBGcmFtZXNBc1RleHQoUVdlYkZyYW1lKiBmcmFtZSkKIHsK
LSAgICBpZiAoIWZyYW1lIHx8ICFxdF9kcnRfaGFzRG9jdW1lbnRFbGVtZW50KGZyYW1lKSkKKyAg
ICBpZiAoIWZyYW1lIHx8ICFRRFJUU3VwcG9ydDo6aGFzRG9jdW1lbnRFbGVtZW50KGZyYW1lKSkK
ICAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKIAogICAgIFFTdHJpbmcgcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oCmluZGV4IDdh
Mjg1OGEuLmQ5NTMzYjEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0R1bXBSZW5kZXJUcmVlUXQuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9E
dW1wUmVuZGVyVHJlZVF0LmgKQEAgLTUzLDYgKzUzLDcgQEAgUVRfRU5EX05BTUVTUEFDRQogY2xh
c3MgUVdlYkZyYW1lOwogCiBjbGFzcyBMYXlvdXRUZXN0Q29udHJvbGxlcjsKK2NsYXNzIFFEUlRT
dXBwb3J0OwogY2xhc3MgRXZlbnRTZW5kZXI7CiBjbGFzcyBUZXh0SW5wdXRDb250cm9sbGVyOwog
Y2xhc3MgR0NDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvR0NDb250cm9sbGVyUXQuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
R0NDb250cm9sbGVyUXQuY3BwCmluZGV4IDljYzNhYTcuLjNlODkwZGYgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5jcHAKQEAgLTI5LDE0ICsy
OSwxMCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyUXQu
aCIKKyNpbmNsdWRlICIuLi8uLi8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0LmgiCiAKICNpbmNsdWRlIDxxd2VicGFnZS5oPgogCi1leHRlcm4gaW50IHF0
X2RydF9qYXZhU2NyaXB0T2JqZWN0c0NvdW50KCk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfZ2FyYmFn
ZUNvbGxlY3Rvcl9jb2xsZWN0KCk7Ci0KLWV4dGVybiB2b2lkIHF0X2RydF9nYXJiYWdlQ29sbGVj
dG9yX2NvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpOwotCiBHQ0Nv
bnRyb2xsZXI6OkdDQ29udHJvbGxlcihRV2ViUGFnZSogcGFyZW50KQogICAgIDogUU9iamVjdChw
YXJlbnQpCiB7CkBAIC00NCwxNSArNDAsMTUgQEAgR0NDb250cm9sbGVyOjpHQ0NvbnRyb2xsZXIo
UVdlYlBhZ2UqIHBhcmVudCkKIAogdm9pZCBHQ0NvbnRyb2xsZXI6OmNvbGxlY3QoKSBjb25zdAog
ewotICAgIHF0X2RydF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3QoKTsKKyAgICBRRFJUU3VwcG9y
dDo6Z2FyYmFnZUNvbGxlY3RvckNvbGxlY3QoKTsKIH0KIAogdm9pZCBHQ0NvbnRyb2xsZXI6OmNv
bGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpIGNvbnN0CiB7Ci0gICAg
cXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKHdhaXRVbnRp
bERvbmUpOworICAgIFFEUlRTdXBwb3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJu
YXRlVGhyZWFkKHdhaXRVbnRpbERvbmUpOwogfQogCiBzaXplX3QgR0NDb250cm9sbGVyOjpnZXRK
U09iamVjdENvdW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcXRfZHJ0X2phdmFTY3JpcHRPYmpl
Y3RzQ291bnQoKTsKKyAgICByZXR1cm4gUURSVFN1cHBvcnQ6OmphdmFTY3JpcHRPYmplY3RzQ291
bnQoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29u
dHJvbGxlclF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJR
dC5oCmluZGV4IDhmNWI0MzIuLjEyNzk3ZjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvR0NDb250cm9sbGVyUXQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPFFP
YmplY3Q+CiAKIGNsYXNzIFFXZWJQYWdlOworY2xhc3MgUURSVFN1cHBvcnQ7CiAKIGNsYXNzIEdD
Q29udHJvbGxlciA6IHB1YmxpYyBRT2JqZWN0CiB7CkBAIC00Myw2ICs0NCw3IEBAIHB1YmxpYyBz
bG90czoKICAgICB2b2lkIGNvbGxlY3QoKSBjb25zdDsKICAgICB2b2lkIGNvbGxlY3RPbkFsdGVy
bmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpIGNvbnN0OwogICAgIHNpemVfdCBnZXRKU09i
amVjdENvdW50KCkgY29uc3Q7CisKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCA3
MDg3OTI0Li5kY2M1ZDgyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogICov
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5o
IgorI2luY2x1ZGUgIi4uLy4uLy4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnQuaCIKIAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlUXQuaCIKICNpbmNsdWRl
ICJXb3JrUXVldWUuaCIKQEAgLTM5LDI1ICs0MCw2IEBACiBleHRlcm4gdm9pZCBxdF9kdW1wX2Vk
aXRpbmdfY2FsbGJhY2tzKGJvb2wgYik7CiBleHRlcm4gdm9pZCBxdF9kdW1wX2ZyYW1lX2xvYWRl
cihib29sIGIpOwogZXh0ZXJuIHZvaWQgcXRfZHVtcF9yZXNvdXJjZV9sb2FkX2NhbGxiYWNrcyhi
b29sIGIpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3NldE1lZGlhVHlwZShRV2ViRnJhbWUqIHFmcmFt
ZSwgY29uc3QgUVN0cmluZyYgdHlwZSk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfc2V0RnJhbWVTZXRG
bGF0dGVuaW5nRW5hYmxlZChRV2ViUGFnZSosIGJvb2wpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3Nl
dEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKFFXZWJGcmFtZSosIGJvb2wgZW5hYmxlZCk7Ci1l
eHRlcm4gdm9pZCBxdF9kcnRfc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKFFXZWJQYWdlKiwg
Ym9vbCBlbmFibGVkKTsKLWV4dGVybiBib29sIHF0X2RydF9wYXVzZUFuaW1hdGlvbihRV2ViRnJh
bWUqLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxl
bWVudElkKTsKLWV4dGVybiBib29sIHF0X2RydF9wYXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KFFX
ZWJGcmFtZSosIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5n
JiBlbGVtZW50SWQpOwotZXh0ZXJuIGJvb2wgcXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKFFXZWJG
cmFtZSosIGNvbnN0IFFTdHJpbmcmIGFuaW1hdGlvbklkLCBkb3VibGUgdGltZSwgY29uc3QgUVN0
cmluZyYgZWxlbWVudElkKTsKLWV4dGVybiBpbnQgcXRfZHJ0X251bWJlck9mQWN0aXZlQW5pbWF0
aW9ucyhRV2ViRnJhbWUqKTsKLWV4dGVybiB2b2lkIHF0X2RydF9zZXREb21haW5SZWxheGF0aW9u
Rm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hl
bWUpOwotCi1leHRlcm4gdm9pZCBxdF9kcnRfd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25z
dCBRU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucyk7Ci1leHRlcm4gUVN0cmluZyBxdF9kcnRfY291bnRlclZhbHVlRm9yRWxlbWVu
dEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJpbmcmIGlkKTsKLWV4dGVybiBpbnQg
cXRfZHJ0X3dvcmtlclRocmVhZENvdW50KCk7Ci1leHRlcm4gaW50IHF0X2RydF9wYWdlTnVtYmVy
Rm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLWV4dGVybiBpbnQgcXRfZHJ0X251bWJlck9mUGFnZXMo
UVdlYkZyYW1lKiBxRnJhbWUsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwotZXh0ZXJuIHZv
aWQgcXRfZHJ0X3dlYmluc3BlY3Rvcl9leGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBwYWdlLCBsb25n
IGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKLWV4dGVybiB2b2lkIHF0X2RydF93ZWJp
bnNwZWN0b3Jfc2hvdyhRV2ViUGFnZSAqcGFnZSk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfd2ViaW5z
cGVjdG9yX2Nsb3NlKFFXZWJQYWdlICpwYWdlKTsKLWV4dGVybiB2b2lkIHF0X2RydF9lbmFibGVD
YXJldEJyb3dzaW5nKFFXZWJQYWdlKiBwYWdlLCBib29sIHZhbHVlKTsKIAogTGF5b3V0VGVzdENv
bnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlKiBk
cnQpCiAgICAgOiBRT2JqZWN0KCkKQEAgLTE0Myw3ICsxMjUsNyBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjp3YWl0VW50aWxEb25lKCkKIAogUVN0cmluZyBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoY29uc3QgUVN0cmluZyYgaWQpCiB7Ci0gICAg
cmV0dXJuIHF0X2RydF9jb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChtX2RydC0+d2ViUGFnZSgp
LT5tYWluRnJhbWUoKSwgaWQpOworICAgIHJldHVybiBRRFJUU3VwcG9ydDo6Y291bnRlclZhbHVl
Rm9yRWxlbWVudEJ5SWQobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIGlkKTsKIH0KIAog
aW50IExheW91dFRlc3RDb250cm9sbGVyOjp3ZWJIaXN0b3J5SXRlbUNvdW50KCkKQEAgLTI5NCwy
OSArMjc2LDI5IEBAIFFTdHJpbmcgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRlY29kZUhvc3ROYW1l
KGNvbnN0IFFTdHJpbmcmIGhvc3QpCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1l
ZGlhVHlwZShjb25zdCBRU3RyaW5nJiB0eXBlKQogewotICAgIHF0X2RydF9zZXRNZWRpYVR5cGUo
bV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIHR5cGUpOworICAgIFFEUlRTdXBwb3J0Ojpz
ZXRNZWRpYVR5cGUobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIHR5cGUpOwogfQogCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbG9zZVdlYkluc3BlY3RvcigpCiB7Ci0gICAgcXRf
ZHJ0X3dlYmluc3BlY3Rvcl9jbG9zZShtX2RydC0+d2ViUGFnZSgpKTsKKyAgICBRRFJUU3VwcG9y
dDo6d2ViSW5zcGVjdG9yQ2xvc2UobV9kcnQtPndlYlBhZ2UoKSk7CiAgICAgbV9kcnQtPndlYlBh
Z2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZCwgZmFsc2UpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzaG93
V2ViSW5zcGVjdG9yKCkKIHsKICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRB
dHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJFeHRyYXNFbmFibGVkLCB0cnVlKTsKLSAg
ICBxdF9kcnRfd2ViaW5zcGVjdG9yX3Nob3cobV9kcnQtPndlYlBhZ2UoKSk7CisgICAgUURSVFN1
cHBvcnQ6OndlYkluc3BlY3RvclNob3cobV9kcnQtPndlYlBhZ2UoKSk7CiB9CiAKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxsSWQsIGNv
bnN0IFFTdHJpbmcmIHNjcmlwdCkKIHsKLSAgICBxdF9kcnRfd2ViaW5zcGVjdG9yX2V4ZWN1dGVT
Y3JpcHQobV9kcnQtPndlYlBhZ2UoKSwgY2FsbElkLCBzY3JpcHQpOworICAgIFFEUlRTdXBwb3J0
Ojp3ZWJJbnNwZWN0b3JFeGVjdXRlU2NyaXB0KG1fZHJ0LT53ZWJQYWdlKCksIGNhbGxJZCwgc2Ny
aXB0KTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RnJhbWVTZXRGbGF0dGVu
aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0gICAgcXRfZHJ0X3NldEZyYW1lU2V0RmxhdHRl
bmluZ0VuYWJsZWQobV9kcnQtPndlYlBhZ2UoKSwgZW5hYmxlZCk7CisgICAgUURSVFN1cHBvcnQ6
OnNldEZyYW1lU2V0RmxhdHRlbmluZ0VuYWJsZWQobV9kcnQtPndlYlBhZ2UoKSwgZW5hYmxlZCk7
CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93VW5pdmVyc2FsQWNjZXNz
RnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKQEAgLTMzNywxMiArMzE5LDEyIEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBs
b25nIHF1b3RhKQogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SmF2YVNjcmlwdFByb2Zp
bGluZ0VuYWJsZWQoYm9vbCBlbmFibGUpCiB7CiAgICAgbV90b3BMb2FkaW5nRnJhbWUtPnBhZ2Uo
KS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZCwgdHJ1ZSk7Ci0gICAgcXRfZHJ0X3NldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVk
KG1fdG9wTG9hZGluZ0ZyYW1lLCBlbmFibGUpOworICAgIFFEUlRTdXBwb3J0OjpzZXRKYXZhU2Ny
aXB0UHJvZmlsaW5nRW5hYmxlZChtX3RvcExvYWRpbmdGcmFtZSwgZW5hYmxlKTsKIH0KIAogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGJvb2wg
ZW5hYmxlKQogewotICAgIHF0X2RydF9zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQobV9kcnQt
PndlYlBhZ2UoKSwgZW5hYmxlKTsKKyAgICBRRFJUU3VwcG9ydDo6c2V0VGltZWxpbmVQcm9maWxp
bmdFbmFibGVkKG1fZHJ0LT53ZWJQYWdlKCksIGVuYWJsZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEZpeGVkQ29udGVudHNTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkK
QEAgLTM5Nyw3ICszNzksNyBAQCBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpwYXVzZUFuaW1h
dGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBRU3RyaW5nJiBhbgogewogICAgIFFXZWJG
cmFtZSogZnJhbWUgPSBtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKTsKICAgICBRX0FTU0VS
VChmcmFtZSk7Ci0gICAgcmV0dXJuIHF0X2RydF9wYXVzZUFuaW1hdGlvbihmcmFtZSwgYW5pbWF0
aW9uTmFtZSwgdGltZSwgZWxlbWVudElkKTsKKyAgICByZXR1cm4gUURSVFN1cHBvcnQ6OnBhdXNl
QW5pbWF0aW9uKGZyYW1lLCBhbmltYXRpb25OYW1lLCB0aW1lLCBlbGVtZW50SWQpOwogfQogCiBi
b29sIExheW91dFRlc3RDb250cm9sbGVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRX
aXRoSWQoY29uc3QgUVN0cmluZyYgcHJvcGVydHlOYW1lLApAQCAtNDA2LDcgKzM4OCw3IEBAIGJv
b2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdp
dGhJZChjb25zdCBRU3RyaW5nJiBwCiB7CiAgICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fZHJ0LT53
ZWJQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIFFfQVNTRVJUKGZyYW1lKTsKLSAgICByZXR1cm4g
cXRfZHJ0X3BhdXNlVHJhbnNpdGlvbk9mUHJvcGVydHkoZnJhbWUsIHByb3BlcnR5TmFtZSwgdGlt
ZSwgZWxlbWVudElkKTsKKyAgICByZXR1cm4gUURSVFN1cHBvcnQ6OnBhdXNlVHJhbnNpdGlvbk9m
UHJvcGVydHkoZnJhbWUsIHByb3BlcnR5TmFtZSwgdGltZSwgZWxlbWVudElkKTsKIH0KIAogYm9v
bCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGlt
ZShjb25zdCBRU3RyaW5nJiBhbmltYXRpb25JZCwKQEAgLTQxNSwxNCArMzk3LDE0IEBAIGJvb2wg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUo
Y29uc3QgUVN0cmluZyYgYW5pCiB7CiAgICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fZHJ0LT53ZWJQ
YWdlKCktPm1haW5GcmFtZSgpOwogICAgIFFfQVNTRVJUKGZyYW1lKTsKLSAgICByZXR1cm4gcXRf
ZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKGZyYW1lLCBhbmltYXRpb25JZCwgdGltZSwgZWxlbWVudElk
KTsKKyAgICByZXR1cm4gUURSVFN1cHBvcnQ6OnBhdXNlU1ZHQW5pbWF0aW9uKGZyYW1lLCBhbmlt
YXRpb25JZCwgdGltZSwgZWxlbWVudElkKTsKIH0KIAogdW5zaWduZWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0CiB7CiAgICAgUVdlYkZyYW1l
KiBmcmFtZSA9IG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIFFfQVNTRVJUKGZy
YW1lKTsKLSAgICByZXR1cm4gcXRfZHJ0X251bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhmcmFtZSk7
CisgICAgcmV0dXJuIFFEUlRTdXBwb3J0OjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoZnJhbWUp
OwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkaXNhYmxlSW1hZ2VMb2FkaW5nKCkK
QEAgLTQ1MCw3ICs0MzIsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbERh
dGFiYXNlcygpCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndoaXRlTGlzdEFjY2Vzc0Zy
b21PcmlnaW4oY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBRU3RyaW5nJiBkZXN0
aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgcXRfZHJ0X3doaXRlTGlzdEFjY2Vzc0Zy
b21PcmlnaW4oc291cmNlT3JpZ2luLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhv
c3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBRRFJUU3VwcG9ydDo6d2hpdGVM
aXN0QWNjZXNzRnJvbU9yaWdpbihzb3VyY2VPcmlnaW4sIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRl
c3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjp3YWl0Rm9yUG9saWN5RGVsZWdhdGUoKQpAQCAtNDg3LDcgKzQ2
OSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRp
b24oY29uc3QgUVN0cmluZyYgdXJsKQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRD
YXJldEJyb3dzaW5nRW5hYmxlZChib29sIHZhbHVlKQogewotICAgIHF0X2RydF9lbmFibGVDYXJl
dEJyb3dzaW5nKG1fZHJ0LT53ZWJQYWdlKCksIHZhbHVlKTsKKyAgICBRRFJUU3VwcG9ydDo6ZW5h
YmxlQ2FyZXRCcm93c2luZyhtX2RydC0+d2ViUGFnZSgpLCB2YWx1ZSk7CiB9CiAKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChib29sIGVuYWJsZWQp
CkBAIC01MDAsMTIgKzQ4MiwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2Vy
U3R5bGVTaGVldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogCiB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlk
ZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgcXRfZHJ0X3NldERvbWFpblJlbGF4
YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlkZGVuLCBzY2hlbWUpOworICAgIFFEUlRT
dXBwb3J0OjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGZvcmJpZGRl
biwgc2NoZW1lKTsKIH0KIAogaW50IExheW91dFRlc3RDb250cm9sbGVyOjp3b3JrZXJUaHJlYWRD
b3VudCgpCiB7Ci0gICAgcmV0dXJuIHF0X2RydF93b3JrZXJUaHJlYWRDb3VudCgpOworICAgIHJl
dHVybiBRRFJUU3VwcG9ydDo6d29ya2VyVGhyZWFkQ291bnQoKTsKIH0KIAogaW50IExheW91dFRl
c3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoY29uc3QgUVN0cmluZyYgaWQs
IGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCkBAIC01MTYsMTIgKzQ5OCwzMiBAQCBpbnQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChjb25zdCBRU3RyaW5n
JiBpZCwgZmxvYXQgd2lkdAogICAgICAgICBoZWlnaHQgPSBtX2RydC0+d2ViUGFnZSgpLT52aWV3
cG9ydFNpemUoKS5oZWlnaHQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gcXRfZHJ0X3BhZ2VOdW1i
ZXJGb3JFbGVtZW50QnlJZChtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKSwgaWQsIHdpZHRo
LCBoZWlnaHQpOworICAgIHJldHVybiBRRFJUU3VwcG9ydDo6cGFnZU51bWJlckZvckVsZW1lbnRC
eUlkKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpLCBpZCwgd2lkdGgsIGhlaWdodCk7CiB9
CiAKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQYWdlcyhmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0KQogewotICAgIHJldHVybiBxdF9kcnRfbnVtYmVyT2ZQYWdlcyhtX2RydC0+
d2ViUGFnZSgpLT5tYWluRnJhbWUoKSwgd2lkdGgsIGhlaWdodCk7CisgICAgcmV0dXJuIFFEUlRT
dXBwb3J0OjpudW1iZXJPZlBhZ2VzKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpLCB3aWR0
aCwgaGVpZ2h0KTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U21hcnRJbnNl
cnREZWxldGVFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAgIFFEUlRTdXBwb3J0OjpzZXRTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQobV9kcnQtPndlYlBhZ2UoKSwgZW5hYmxlKTsKK30KKwordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZChib29sIGVuYWJsZSkKK3sKKyAgICBRRFJUU3VwcG9ydDo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZChtX2RydC0+d2ViUGFnZSgpLCBlbmFibGUpOworfQorCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpleGVjQ29tbWFuZChjb25zdCBRU3RyaW5nJiBuYW1lLCBjb25zdCBR
U3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBRRFJUU3VwcG9ydDo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlO
YW1lKG1fZHJ0LT53ZWJQYWdlKCksIG5hbWUsIHZhbHVlKTsKK30KKworYm9vbCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6aXNDb21tYW5kRW5hYmxlZChjb25zdCBRU3RyaW5nJiBuYW1lKSBjb25zdAor
eworICAgIHJldHVybiBRRFJUU3VwcG9ydDo6aXNDb21tYW5kRW5hYmxlZChtX2RydC0+d2ViUGFn
ZSgpLCBuYW1lKTsKIH0KIAogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1h
eFZpZXdXaWR0aCA9IDgwMDsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAppbmRleCA1Y2Y1MTA0Li5lOWJlN2ZkIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8cXdlYnNlY3VyaXR5b3JpZ2lu
Lmg+CiAKIGNsYXNzIFFXZWJGcmFtZTsKK2NsYXNzIFFEUlRTdXBwb3J0OwogbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIER1bXBSZW5kZXJUcmVlOwogfQpAQCAtMTM4LDYgKzEzOSwxMCBA
QCBwdWJsaWMgc2xvdHM6CiAgICAgdm9pZCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyKGJv
b2wgaXNGaXJzdCk7CiAgICAgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sIGVuYWJsZSk7
CiAgICAgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJsZSk7CisgICAgdm9p
ZCBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBlbmFibGUpOworICAgIHZvaWQgc2V0
U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChib29sIGVuYWJsZSk7CisgICAgdm9pZCBl
eGVjQ29tbWFuZChjb25zdCBRU3RyaW5nJiBuYW1lLCBjb25zdCBRU3RyaW5nJiB2YWx1ZSA9IFFT
dHJpbmcoKSk7CisgICAgYm9vbCBpc0NvbW1hbmRFbmFibGVkKGNvbnN0IFFTdHJpbmcmIG5hbWUp
IGNvbnN0OwogCiAgICAgYm9vbCBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChj
b25zdCBRU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYg
ZWxlbWVudElkKTsKICAgICBib29sIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJ
ZChjb25zdCBRU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5n
JiBlbGVtZW50SWQpOwotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52416</attachid>
            <date>2010-04-02 07:28:20 -0700</date>
            <delta_ts>2010-04-02 07:47:36 -0700</delta_ts>
            <desc>Refactor DRT Support</desc>
            <filename>0001-Refactor-Qt-DRT-support-in-QtWebKit.patch</filename>
            <type>text/plain</type>
            <size>52708</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSBhYzM5OTNhNzlhN2M3NmRhMjM5NTgxMmYzYjQxMWVhNmY5MGYzODRiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDE1IE1hciAyMDEwIDIyOjQ5OjI5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gUmVmYWN0
b3IgUXQgRFJUIHN1cHBvcnQgaW4gUXRXZWJLaXQKCk1vdmUgYWxsIFFUIERSVCBzdXBwb3J0IGZ1
bmN0aW9ucyB0byBhIHN0YXRpYyBjbGFzcy4KCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNTg0NAotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAyOSArKwogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIFdlYkNvcmUvV2ViQ29yZS5wcm8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFt
ZS5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxODggLS0tLS0tLS0tLS0KIFdlYktpdC9x
dC9BcGkvcXdlYmZyYW1lLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzkgLS0t
LS0KIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgMSArCiBXZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAgICAgICAgICAgICAg
ICB8ICAgMTUgLQogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDU3ICsrKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnQuY3BwIHwgIDM0NCArKysrKysrKysrKysrKysrKysrKwogV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oICAgfCAgIDc3ICsrKysrCiBXZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwICAgICAgICB8ICAgIDIgKwogV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmggICAgICAgICAgfCAgICAxIC0K
IFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwICAgICAgICAgIHwgICAx
OCArLQogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDQxICsrKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVR
dC5jcHAgfCAgIDE2ICstCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVy
VHJlZVF0LmggICB8ICAgIDEgKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250
cm9sbGVyUXQuY3BwICAgfCAgIDEyICstCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9H
Q0NvbnRyb2xsZXJRdC5oICAgICB8ICAgIDIgKwogLi4uL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuY3BwICAgfCAgIDU4ICsrLS0KIC4uLi9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggICAgIHwgICAgMSArCiAyMSBmaWxlcyBjaGFuZ2Vk
LCA2MDUgaW5zZXJ0aW9ucygrKSwgMzUwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0
IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydC5oCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDA2ZGFlYTEuLmFiZjgyOGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAor
MjAxMC0wMy0xOCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIExh
eW91dFRlc3RDb250cm9sbGVyIGNvbW1hbmRzOgorICAgICAgICAgIHNldFNtYXJ0SW5zZXJ0RGVs
ZXRlRW5hYmxlZAorICAgICAgICAgIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQK
KyAgICAgICAgICBleGVjQ29tbWFuZAorICAgICAgICAgIGlzQ29tbWFuZEVuYWJsZWQKKworICAg
ICAgICBVbnNraXAgdGVzdHM6CisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZWRpdGlu
Zy1kaXNhYmxlZC5odG1sCisgICAgICAgIGVkaXRpbmcvZXhlY0NvbW1hbmQvMTkwODkuaHRtbAor
ICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1pbWFnZS1pbi1hbmNob3IuaHRtbAor
ICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2VuYWJsaW5nLWFuZC1zZWxlY3Rpb24tMi5odG1s
CisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtY3Jhc2gu
aHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWlt
Zy1jcmFzaC5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRl
c3BhY2UuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbGluZS5odG1sCisg
ICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvNTMwMDM3OS5odG1sCisgICAgICAgIGVkaXRpbmcvZGVs
ZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCisgICAgICAgIGVkaXRpbmcvZGVsZXRpbmcvc21h
cnQtZGVsZXRlLTAwNC5odG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS5o
dG1sCisgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMi5odG1sCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0CisKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorCiAyMDEwLTA0LTAyICBDc2FiYSBPc3p0cm9nb27DoWMg
IDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSAgaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9hY2Nlc3MtY29udHJvbC1yZXNwb25zZS13aXRoLWJvZHkuaHRtbCB3YXMgaW50cm9kdWNl
ZCBpbiByNTY5NTUsCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGZlOGQ5YTQuLmU5YzdjMmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDQtMDIg
IFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIFF0IERSVCBzdXBwb3J0IGluIFF0
V2ViS2l0CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM1ODQ0CisKKyAgICAgICAgKiBXZWJDb3JlLnBybzogQWRkIER1bXBSZW5kZXJUcmVlU3VwcG9y
dC5jcHAKKwogMjAxMC0wNC0wMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggd2hlbiBidWlsZGluZyAtLW5v
LXN2Zy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUu
cHJvCmluZGV4IGVhZjk3YTkuLjA2MDhhZTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5w
cm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjEwMCw2ICsyMTAwLDcgQEAgU09VUkNF
UyArPSBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cCBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQu
Y3BwIFwKICAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcCBc
CisgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5j
cHAgXAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAg
XAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0LmNwcCBcCiAg
ICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIFwK
ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9BcGkv
cXdlYmZyYW1lLmNwcAppbmRleCAzYmJjZmUyLi40YzA1ZDhkIDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBA
IC04OCwxOTMgKzg4LDYgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCiBleHRlcm4gUV9HVUlfRVhQT1JU
IGludCBxdF9kZWZhdWx0RHBpKCk7CiBRVF9FTkRfTkFNRVNQQUNFCiAKLXZvaWQgUVdFQktJVF9F
WFBPUlQgcXRfZHJ0X3NldE1lZGlhVHlwZShRV2ViRnJhbWUqIHFmcmFtZSwgY29uc3QgUVN0cmlu
ZyYgdHlwZSkKLXsKLSAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRl
Ojpjb3JlKHFmcmFtZSk7Ci0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZp
ZXcoKTsKLSAgICB2aWV3LT5zZXRNZWRpYVR5cGUodHlwZSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50
KCktPnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKLSAgICB2aWV3LT5mb3JjZUxheW91dCgpOwotfQot
Ci1ib29sIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9oYXNEb2N1bWVudEVsZW1lbnQoUVdlYkZyYW1l
KiBxZnJhbWUpCi17Ci0gICAgcmV0dXJuIFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKS0+
ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQg
cXRfZHJ0X3NldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKFFXZWJGcmFtZSogcWZyYW1lLCBi
b29sIGVuYWJsZWQpCi17Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgRnJh
bWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOwotICAgIEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCk7Ci0gICAgaWYgKCFjb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGVu
YWJsZWQpCi0gICAgICAgIGNvbnRyb2xsZXItPmVuYWJsZVByb2ZpbGVyKCk7Ci0gICAgZWxzZQot
ICAgICAgICBjb250cm9sbGVyLT5kaXNhYmxlUHJvZmlsZXIoKTsKLSNlbmRpZgotfQotCi0vLyBQ
YXVzZSBhIGdpdmVuIENTUyBhbmltYXRpb24gb3IgdHJhbnNpdGlvbiBvbiB0aGUgdGFyZ2V0IG5v
ZGUgYXQgYSBzcGVjaWZpYyB0aW1lLgotLy8gSWYgdGhlIGFuaW1hdGlvbiBvciB0cmFuc2l0aW9u
IGlzIGFscmVhZHkgcGF1c2VkLCBpdCB3aWxsIHVwZGF0ZSBpdHMgcGF1c2UgdGltZS4KLS8vIFRo
aXMgbWV0aG9kIGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGVzdGluZyB0aGUgQ1NT
IGFuaW1hdGlvbiBhbmQgdHJhbnNpdGlvbiBzeXN0ZW0uCi1ib29sIFFXRUJLSVRfRVhQT1JUIHF0
X2RydF9wYXVzZUFuaW1hdGlvbihRV2ViRnJhbWUgKnFmcmFtZSwgY29uc3QgUVN0cmluZyAmYW5p
bWF0aW9uTmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCkKLXsKLSAg
ICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAgaWYg
KCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQW5pbWF0aW9uQ29udHJvbGxl
ciogY29udHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9j
dW1lbnQoKTsKLSAgICBRX0FTU0VSVChkb2MpOwotCi0gICAgTm9kZSogY29yZU5vZGUgPSBkb2Mt
PmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5v
ZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjb250
cm9sbGVyLT5wYXVzZUFuaW1hdGlvbkF0VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwgYW5pbWF0
aW9uTmFtZSwgdGltZSk7Ci19Ci0KLWJvb2wgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNlVHJh
bnNpdGlvbk9mUHJvcGVydHkoUVdlYkZyYW1lICpxZnJhbWUsIGNvbnN0IFFTdHJpbmcgJnByb3Bl
cnR5TmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCkKLXsKLSAgICBG
cmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQW5pbWF0aW9uQ29udHJvbGxlciog
Y29udHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1l
bnQoKTsKLSAgICBRX0FTU0VSVChkb2MpOwotCi0gICAgTm9kZSogY29yZU5vZGUgPSBkb2MtPmdl
dEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5vZGUt
PnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjb250cm9s
bGVyLT5wYXVzZVRyYW5zaXRpb25BdFRpbWUoY29yZU5vZGUtPnJlbmRlcmVyKCksIHByb3BlcnR5
TmFtZSwgdGltZSk7Ci19Ci0KLS8vIFBhdXNlIGEgZ2l2ZW4gU1ZHIGFuaW1hdGlvbiBvbiB0aGUg
dGFyZ2V0IG5vZGUgYXQgYSBzcGVjaWZpYyB0aW1lLgotLy8gVGhpcyBtZXRob2QgaXMgb25seSBp
bnRlbmRlZCB0byBiZSB1c2VkIGZvciB0ZXN0aW5nIHRoZSBTVkcgYW5pbWF0aW9uIHN5c3RlbS4K
LWJvb2wgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFtZSAq
cWZyYW1lLCBjb25zdCBRU3RyaW5nICZhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IFFT
dHJpbmcgJmVsZW1lbnRJZCkKLXsKLSNpZiAhRU5BQkxFKFNWRykKLSAgICByZXR1cm4gZmFsc2U7
Ci0jZWxzZQotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1l
KTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBEb2N1bWVu
dCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgUV9BU1NFUlQoZG9jKTsKLQotICAgIGlm
ICghZG9jLT5zdmdFeHRlbnNpb25zKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIE5v
ZGUqIGNvcmVOb2RlID0gZG9jLT5nZXRFbGVtZW50QnlJZChhbmltYXRpb25JZCk7Ci0gICAgaWYg
KCFjb3JlTm9kZSB8fCAhU1ZHU01JTEVsZW1lbnQ6OmlzU01JTEVsZW1lbnQoY29yZU5vZGUpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZG9jLT5hY2Nlc3NTVkdFeHRlbnNp
b25zKCktPnNhbXBsZUFuaW1hdGlvbkF0VGltZShlbGVtZW50SWQsIHN0YXRpY19jYXN0PFNWR1NN
SUxFbGVtZW50Kj4oY29yZU5vZGUpLCB0aW1lKTsKLSNlbmRpZgotfQotCi0vLyBSZXR1cm5zIHRo
ZSB0b3RhbCBudW1iZXIgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9ucyAoaW5jbHVkZXMg
Ym90aCBDU1MgdHJhbnNpdGlvbnMgYW5kIENTUyBhbmltYXRpb25zKS4KLWludCBRV0VCS0lUX0VY
UE9SVCBxdF9kcnRfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFFXZWJGcmFtZSAqcWZyYW1lKQot
ewotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKLSAg
ICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBbmltYXRpb25Db250
cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOwotICAgIGlmICghY29udHJv
bGxlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGNvbnRyb2xsZXItPm51
bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2Ry
dF9jbGVhckZyYW1lTmFtZShRV2ViRnJhbWUqIHFGcmFtZSkKLXsKLSAgICBGcmFtZSogZnJhbWUg
PSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgZnJhbWUtPnRyZWUoKS0+Y2xl
YXJOYW1lKCk7Ci19Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfamF2YVNjcmlwdE9iamVj
dHNDb3VudCgpCi17Ci0gICAgcmV0dXJuIEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxE
YXRhKCktPmhlYXAuZ2xvYmFsT2JqZWN0Q291bnQoKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9S
VCBxdF9kcnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCkKLXsKLSAgICBnY0NvbnRyb2xsZXIo
KS5nYXJiYWdlQ29sbGVjdE5vdygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9n
YXJiYWdlQ29sbGVjdG9yX2NvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERv
bmUpCi17Ci0gICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVh
ZEZvckRlYnVnZ2luZyh3YWl0VW50aWxEb25lKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdmFsdWUg
b2YgY291bnRlciBpbiB0aGUgZWxlbWVudCBzcGVjaWZpZWQgYnkgXGEgaWQuCi1RU3RyaW5nIFFX
RUJLSVRfRVhQT1JUIHF0X2RydF9jb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUq
IHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gUVdlYkZy
YW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBm
cmFtZS0+ZG9jdW1lbnQoKSkgewotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQt
PmdldEVsZW1lbnRCeUlkKGlkKTsKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmNvdW50ZXJWYWx1
ZUZvckVsZW1lbnQoZWxlbWVudCk7Ci0gICAgfQotICAgIHJldHVybiBRU3RyaW5nKCk7Ci19Ci0K
LWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFFXZWJG
cmFtZSogcUZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7
Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgRWxlbWVudCogZWxl
bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmcoaWQp
KTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBQ
cmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KGVsZW1lbnQsIEZsb2F0U2l6ZSh3aWR0
aCwgaGVpZ2h0KSk7Ci19Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfbnVtYmVyT2ZQYWdl
cyhRV2ViRnJhbWUqIHFGcmFtZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLXsKLSAgICBG
cmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6bnVt
YmVyT2ZQYWdlcyhmcmFtZSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLX0KLQotLy8gU3Vz
cGVuZCBhY3RpdmUgRE9NIG9iamVjdHMgaW4gdGhpcyBmcmFtZS4KLXZvaWQgUVdFQktJVF9FWFBP
UlQgcXRfc3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBxRnJhbWUpCi17Ci0gICAg
RnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGlmIChm
cmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN1c3BlbmRBY3Rp
dmVET01PYmplY3RzKCk7Ci19Ci0gICAgICAgICAgICAKLS8vIFJlc3VtZSBhY3RpdmUgRE9NIG9i
amVjdHMgaW4gdGhpcyBmcmFtZS4KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfcmVzdW1lQWN0aXZl
RE9NT2JqZWN0cyhRV2ViRnJhbWUqIHFGcmFtZSkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2Vi
RnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQot
ICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpOwotfSAg
ICAgICAgICAgICAgICAgICAgICAgIAotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9ldmFs
dWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChRV2ViRnJhbWUqIHFGcmFtZSwgaW50IHdvcmxkSWQs
IGNvbnN0IFFTdHJpbmcmIHNjcmlwdCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQ
cml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKGZyYW1lKQotICAgICAgICBKU0M6OkpTVmFs
dWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0SW5Xb3JsZChtYWluVGhy
ZWFkTm9ybWFsV29ybGQoKSwgc2NyaXB0LCB0cnVlKS5qc1ZhbHVlKCk7Ci19Ci0KIHN0YXRpYyBi
b29sIHdlYmZyYW1lX3Njcm9sbE92ZXJmbG93KFdlYkNvcmU6OkZyYW1lKiBmcmFtZSwgaW50IGR4
LCBpbnQgZHksIGNvbnN0IFFQb2ludCYgcG9zKQogewogICAgIGlmICghZnJhbWUgfHwgIWZyYW1l
LT5kb2N1bWVudCgpIHx8ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkpCkBAIC0zNTQsNyArMTY3LDYg
QEAgdm9pZCBRV0VCS0lUX0VYUE9SVCBxdHdlYmtpdF93ZWJmcmFtZV9zY3JvbGxSZWN1cnNpdmVs
eShRV2ViRnJhbWUqIHFGcmFtZSwgaW50IGQKICAgICB9CiB9CiAKLQogUVdlYkZyYW1lRGF0YTo6
UVdlYkZyYW1lRGF0YShXZWJDb3JlOjpQYWdlKiBwYXJlbnRQYWdlLCBXZWJDb3JlOjpGcmFtZSog
cGFyZW50RnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJGcmFtZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgZnJhbWVOYW1lKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKaW5k
ZXggY2U5ODA1Yi4uNzNjYzAzZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUu
aAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNz
IFFXZWJTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFFXZWJFbGVtZW50OwogY2xhc3MgUVdlYkVsZW1l
bnRDb2xsZWN0aW9uOwogCitjbGFzcyBRRFJUU3VwcG9ydDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBXaWRnZXRQcml2YXRlOwogICAgIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50UXQ7
CkBAIC0yMjUsNiArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2U7
CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlUHJpdmF0ZTsKICAgICBmcmllbmQgY2xhc3MgUVdl
YkZyYW1lUHJpdmF0ZTsKKyAgICBmcmllbmQgY2xhc3MgUURSVFN1cHBvcnQ7CiAgICAgZnJpZW5k
IGNsYXNzIFdlYkNvcmU6OldpZGdldFByaXZhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkNocm9tZUNs
aWVudFF0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCAzMzg2NzJjLi5iNTRhYzg2IDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNw
cApAQCAtMTI4LDg2ICsxMjgsNyBAQCB2b2lkIFFXRUJLSVRfRVhQT1JUIHF0X3dydF9zZXRWaWV3
TW9kZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0cmluZyYgbW9kZSkKICAgICB2aWV3LT5mb3Jj
ZUxheW91dCgpOwogfQogCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9vdmVyd3JpdGVQbHVn
aW5EaXJlY3RvcmllcygpCi17Ci0gICAgUGx1Z2luRGF0YWJhc2UqIGRiID0gUGx1Z2luRGF0YWJh
c2U6Omluc3RhbGxlZFBsdWdpbnMoLyogcG9wdWxhdGUgKi8gZmFsc2UpOwotCi0gICAgVmVjdG9y
PFN0cmluZz4gcGF0aHM7Ci0gICAgU3RyaW5nIHF0UGF0aChxZ2V0ZW52KCJRVFdFQktJVF9QTFVH
SU5fUEFUSCIpLmRhdGEoKSk7Ci0gICAgcXRQYXRoLnNwbGl0KFVDaGFyKCc6JyksIC8qIGFsbG93
RW1wdHlFbnRyaWVzICovIGZhbHNlLCBwYXRocyk7Ci0KLSAgICBkYi0+c2V0UGx1Z2luRGlyZWN0
b3JpZXMocGF0aHMpOwotICAgIGRiLT5yZWZyZXNoKCk7Ci19Ci0KLWludCBRV0VCS0lUX0VYUE9S
VCBxdF9kcnRfd29ya2VyVGhyZWFkQ291bnQoKQotewotI2lmIEVOQUJMRShXT1JLRVJTKQotICAg
IHJldHVybiBXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZENvdW50KCk7Ci0jZWxz
ZQotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KIGJvb2wgUVdlYlBhZ2VQcml2YXRlOjpkcnRS
dW4gPSBmYWxzZTsKLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3J1bihib29sIGIpCi17Ci0g
ICAgUVdlYlBhZ2VQcml2YXRlOjpkcnRSdW4gPSBiOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JU
IHF0X2RydF9zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBib29sIGVu
YWJsZWQpCi17Ci0gICAgUVdlYlBhZ2VQcml2YXRlOjpjb3JlKHBhZ2UpLT5zZXR0aW5ncygpLT5z
ZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKGVuYWJsZWQpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQ
T1JUIHF0X3dlYnBhZ2Vfc2V0R3JvdXBOYW1lKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5n
JiBncm91cE5hbWUpCi17Ci0gICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPnNldEdyb3VwTmFtZShn
cm91cE5hbWUpOwotfQotCi1RU3RyaW5nIFFXRUJLSVRfRVhQT1JUIHF0X3dlYnBhZ2VfZ3JvdXBO
YW1lKFFXZWJQYWdlKiBwYWdlKQotewotICAgIHJldHVybiBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+
Z3JvdXBOYW1lKCk7Ci19Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotdm9pZCBRV0VCS0lUX0VY
UE9SVCBxdF9kcnRfd2ViaW5zcGVjdG9yX2V4ZWN1dGVTY3JpcHQoUVdlYlBhZ2UqIHBhZ2UsIGxv
bmcgY2FsbElkLCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpCi17Ci0gICAgaWYgKCFwYWdlLT5oYW5k
bGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICByZXR1cm47Ci0gICAg
cGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZXZhbHVhdGVGb3JU
ZXN0SW5Gcm9udGVuZChjYWxsSWQsIHNjcmlwdCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQg
cXRfZHJ0X3dlYmluc3BlY3Rvcl9jbG9zZShRV2ViUGFnZSogcGFnZSkKLXsKLSAgICBpZiAoIXBh
Z2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jbG9z
ZSgpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF93ZWJpbnNwZWN0b3Jfc2hvdyhR
V2ViUGFnZSogcGFnZSkKLXsKLSAgICBpZiAoIXBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBwYWdlLT5oYW5kbGUoKS0+cGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93KCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBP
UlQgcXRfZHJ0X3NldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9v
bCBlbmFibGVkKQotewotICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBwYWdl
LT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGlmICghY29udHJv
bGxlcikKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChlbmFibGVkKQotICAgICAgICBjb250cm9s
bGVyLT5zdGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRyb2xs
ZXItPnN0b3BUaW1lbGluZVByb2ZpbGVyKCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBRV0VCS0lUX0VY
UE9SVCBxdF9kcnRfZW5hYmxlQ2FyZXRCcm93c2luZyhRV2ViUGFnZSogcGFnZSwgYm9vbCB2YWx1
ZSkKLXsKLSAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+c2V0dGluZ3MoKS0+c2V0Q2FyZXRCcm93
c2luZ0VuYWJsZWQodmFsdWUpOwotfQogCiBjbGFzcyBRV2ViUGFnZVdpZGdldENsaWVudCA6IHB1
YmxpYyBRV2ViUGFnZUNsaWVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKaW5kZXggMjRkMGVkOS4uY2Vk
YmRlOCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCisrKyBiL1dlYktpdC9x
dC9BcGkvcXdlYnBhZ2UuaApAQCAtMzY3LDYgKzM2Nyw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNs
YXNzIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpR
TmV0d29ya1JlcGx5SGFuZGxlcjsKKyAgICBmcmllbmQgY2xhc3MgUURSVFN1cHBvcnQ7CiB9Owog
CiBRX0RFQ0xBUkVfT1BFUkFUT1JTX0ZPUl9GTEFHUyhRV2ViUGFnZTo6RmluZEZsYWdzKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwIGIvV2ViS2l0L3F0
L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCmluZGV4IDZjMjZiZDcuLmI2OWYyNGQgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcAorKysgYi9XZWJLaXQv
cXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAKQEAgLTMwLDIxICszMCw2IEBACiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF93aGl0ZUxp
c3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0
cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0
LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQotewotICAgIFNlY3VyaXR5T3JpZ2lu
Ojp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3Qs
IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBx
dF9kcnRfcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCkKLXsKLSAgICBTZWN1cml0eU9yaWdp
bjo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBP
UlQgcXRfZHJ0X3NldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBm
b3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBTZWN1cml0eU9yaWdpbjo6
c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShmb3JiaWRkZW4sIHNjaGVt
ZSk7Ci19Ci0KIC8qIQogICAgIFxjbGFzcyBRV2ViU2VjdXJpdHlPcmlnaW4KICAgICBcc2luY2Ug
NC41CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxv
ZwppbmRleCAwM2QyZjlhLi5mN2I5NTI0IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxMC0wNC0wMiAg
Um9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgUXQgRFJUIHN1cHBvcnQgaW4gUXRX
ZWJLaXQKKworICAgICAgICBBZGQgbmV3IGNsYXNzIFFEUlRTdXBwb3J0LiBUaGlzIG5vdyBob3Vz
ZXMgYWxsIHRoZSBxdF9kcnRfKiBmdW5jdGlvbnMKKyAgICAgICAgdGhhdCBwcmV2aW91c2x5IGxp
dmVkIGluIHF3ZWJwYWdlIGFuZCBxd2ViZnJhbWUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
LmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdl
LmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnNlY3Vy
aXR5b3JpZ2luLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFFEUlRTdXBwb3J0OjpRRFJUU3VwcG9ydCk6Cisg
ICAgICAgIChRRFJUU3VwcG9ydDo6flFEUlRTdXBwb3J0KToKKyAgICAgICAgKFFEUlRTdXBwb3J0
OjpvdmVyd3JpdGVQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6d29y
a2VyVGhyZWFkQ291bnQpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OnJ1bik6CisgICAgICAgIChR
RFJUU3VwcG9ydDo6c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCk6CisgICAgICAgIChRRFJUU3Vw
cG9ydDo6d2ViUGFnZVNldEdyb3VwTmFtZSk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6d2ViUGFn
ZUdyb3VwTmFtZSk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6d2ViSW5zcGVjdG9yRXhlY3V0ZVNj
cmlwdCk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6d2ViSW5zcGVjdG9yQ2xvc2UpOgorICAgICAg
ICAoUURSVFN1cHBvcnQ6OndlYkluc3BlY3RvclNob3cpOgorICAgICAgICAoUURSVFN1cHBvcnQ6
OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6aGFz
RG9jdW1lbnRFbGVtZW50KToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpzZXRKYXZhU2NyaXB0UHJv
ZmlsaW5nRW5hYmxlZCk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6cGF1c2VBbmltYXRpb24pOgor
ICAgICAgICAoUURSVFN1cHBvcnQ6OnBhdXNlVHJhbnNpdGlvbk9mUHJvcGVydHkpOgorICAgICAg
ICAoUURSVFN1cHBvcnQ6OnBhdXNlU1ZHQW5pbWF0aW9uKToKKyAgICAgICAgKFFEUlRTdXBwb3J0
OjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OmNsZWFy
RnJhbWVOYW1lKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpqYXZhU2NyaXB0T2JqZWN0c0NvdW50
KToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdCk6CisgICAg
ICAgIChRRFJUU3VwcG9ydDo6Z2FyYmFnZUNvbGxlY3RvckNvbGxlY3RPbkFsdGVybmF0ZVRocmVh
ZCk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQpOgor
ICAgICAgICAoUURSVFN1cHBvcnQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCk6CisgICAgICAg
IChRRFJUU3VwcG9ydDo6bnVtYmVyT2ZQYWdlcyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6c3Vz
cGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OnJlc3VtZUFjdGl2
ZURPTU9iamVjdHMpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OmV2YWx1YXRlU2NyaXB0SW5Jc29s
YXRlZFdvcmxkKToKKyAgICAgICAgKFFEUlRTdXBwb3J0Ojp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3Jp
Z2luKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMp
OgorICAgICAgICAoUURSVFN1cHBvcnQ6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JV
UkxTY2hlbWUpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OmVuYWJsZUNhcmV0QnJvd3NpbmcpOgor
ICAgICAgICAoUURSVFN1cHBvcnQ6OnNldE1lZGlhVHlwZSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRRdC5oOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6
CisgICAgICAgICh0c3RfUVdlYlBhZ2U6Om11bHRpcGxlUGFnZUdyb3Vwc0FuZExvY2FsU3RvcmFn
ZSk6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OnByb3RlY3RCaW5kaW5nc1J1bnRpbWVPYmplY3Rz
RnJvbUNvbGxlY3Rvcik6CisKIDIwMTAtMDQtMDIgIFRhc3VrdSBTdXp1a2kgIDx0YXN1a3Uuc3V6
dWtpQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3Bw
IGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRhNTc2ZAotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCkBA
IC0wLDAgKzEsMzQ0IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2JlcnQgSG9nYW4g
PHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisgICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDksMjAx
MCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgorICAgIENvcHly
aWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIgorCisjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIK
KyNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudFF0LmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVD
b250cm9sbGVyLmgiCisjaW5jbHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgor
I2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlR3Jv
dXAuaCIKKyNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgorI2luY2x1ZGUgIlByaW50Q29udGV4
dC5oIgorI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRl
ICJTVkdTTUlMRWxlbWVudC5oIgorI2VuZGlmCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisK
KyNpbmNsdWRlICJxd2ViZnJhbWUuaCIKKyNpbmNsdWRlICJxd2ViZnJhbWVfcC5oIgorI2luY2x1
ZGUgInF3ZWJwYWdlLmgiCisjaW5jbHVkZSAicXdlYnBhZ2VfcC5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworUURSVFN1cHBvcnQ6OlFEUlRTdXBwb3J0KCkKK3sKK30KKworUURSVFN1
cHBvcnQ6On5RRFJUU3VwcG9ydCgpCit7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6Om92ZXJ3cml0
ZVBsdWdpbkRpcmVjdG9yaWVzKCkKK3sKKyAgICBQbHVnaW5EYXRhYmFzZSogZGIgPSBQbHVnaW5E
YXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygvKiBwb3B1bGF0ZSAqLyBmYWxzZSk7CisKKyAgICBW
ZWN0b3I8U3RyaW5nPiBwYXRoczsKKyAgICBTdHJpbmcgcXRQYXRoKHFnZXRlbnYoIlFUV0VCS0lU
X1BMVUdJTl9QQVRIIikuZGF0YSgpKTsKKyAgICBxdFBhdGguc3BsaXQoVUNoYXIoJzonKSwgLyog
YWxsb3dFbXB0eUVudHJpZXMgKi8gZmFsc2UsIHBhdGhzKTsKKworICAgIGRiLT5zZXRQbHVnaW5E
aXJlY3RvcmllcyhwYXRocyk7CisgICAgZGItPnJlZnJlc2goKTsKK30KKworaW50IFFEUlRTdXBw
b3J0Ojp3b3JrZXJUaHJlYWRDb3VudCgpCit7CisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgcmV0
dXJuIFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkQ291bnQoKTsKKyNlbHNlCisg
ICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6cnVuKGJvb2wgYikK
K3sKKyAgICBRV2ViUGFnZVByaXZhdGU6OmRydFJ1biA9IGI7Cit9CisKK3ZvaWQgUURSVFN1cHBv
cnQ6OnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxl
ZCkKK3sKKyAgICBRV2ViUGFnZVByaXZhdGU6OmNvcmUocGFnZSktPnNldHRpbmdzKCktPnNldEZy
YW1lRmxhdHRlbmluZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6Ondl
YlBhZ2VTZXRHcm91cE5hbWUoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIGdyb3VwTmFt
ZSkKK3sKKyAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+c2V0R3JvdXBOYW1lKGdyb3VwTmFtZSk7
Cit9CisKK1FTdHJpbmcgUURSVFN1cHBvcnQ6OndlYlBhZ2VHcm91cE5hbWUoUVdlYlBhZ2UqIHBh
Z2UpCit7CisgICAgcmV0dXJuIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5ncm91cE5hbWUoKTsKK30K
KworI2lmIEVOQUJMRShJTlNQRUNUT1IpCit2b2lkIFFEUlRTdXBwb3J0Ojp3ZWJJbnNwZWN0b3JF
eGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBwYWdlLCBsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYg
c2NyaXB0KQoreworICAgIGlmICghcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoY2FsbElkLCBzY3Jp
cHQpOworfQorCit2b2lkIFFEUlRTdXBwb3J0Ojp3ZWJJbnNwZWN0b3JDbG9zZShRV2ViUGFnZSog
cGFnZSkKK3sKKyAgICBpZiAoIXBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5jbG9zZSgpOworfQorCit2b2lkIFFEUlRTdXBwb3J0Ojp3ZWJJbnNw
ZWN0b3JTaG93KFFXZWJQYWdlKiBwYWdlKQoreworICAgIGlmICghcGFnZS0+aGFuZGxlKCktPnBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2UtPmhh
bmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNob3coKTsKK30KKwordm9pZCBR
RFJUU3VwcG9ydDo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBi
b29sIGVuYWJsZWQpCit7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHBh
Z2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgaWYgKCFjb250
cm9sbGVyKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGVuYWJsZWQpCisgICAgICAgIGNvbnRy
b2xsZXItPnN0YXJ0VGltZWxpbmVQcm9maWxlcigpOworICAgIGVsc2UKKyAgICAgICAgY29udHJv
bGxlci0+c3RvcFRpbWVsaW5lUHJvZmlsZXIoKTsKK30KKworI2VuZGlmCisKK2Jvb2wgUURSVFN1
cHBvcnQ6Omhhc0RvY3VtZW50RWxlbWVudChRV2ViRnJhbWUqIHFmcmFtZSkKK3sKKyAgICByZXR1
cm4gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpLT5kb2N1bWVudCgpLT5kb2N1bWVudEVs
ZW1lbnQoKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0Vu
YWJsZWQoUVdlYkZyYW1lKiBxZnJhbWUsIGJvb2wgZW5hYmxlZCkKK3sKKyNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpj
b3JlKHFmcmFtZSk7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IGZyYW1l
LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoZW5hYmxlZCkKKyAgICAgICAgY29udHJvbGxlci0+ZW5h
YmxlUHJvZmlsZXIoKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRyb2xsZXItPmRpc2FibGVQcm9m
aWxlcigpOworI2VuZGlmCit9CisKKy8vIFBhdXNlIGEgZ2l2ZW4gQ1NTIGFuaW1hdGlvbiBvciB0
cmFuc2l0aW9uIG9uIHRoZSB0YXJnZXQgbm9kZSBhdCBhIHNwZWNpZmljIHRpbWUuCisvLyBJZiB0
aGUgYW5pbWF0aW9uIG9yIHRyYW5zaXRpb24gaXMgYWxyZWFkeSBwYXVzZWQsIGl0IHdpbGwgdXBk
YXRlIGl0cyBwYXVzZSB0aW1lLgorLy8gVGhpcyBtZXRob2QgaXMgb25seSBpbnRlbmRlZCB0byBi
ZSB1c2VkIGZvciB0ZXN0aW5nIHRoZSBDU1MgYW5pbWF0aW9uIGFuZCB0cmFuc2l0aW9uIHN5c3Rl
bS4KK2Jvb2wgUURSVFN1cHBvcnQ6OnBhdXNlQW5pbWF0aW9uKFFXZWJGcmFtZSAqcWZyYW1lLCBj
b25zdCBRU3RyaW5nICZhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAm
ZWxlbWVudElkKQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUo
cWZyYW1lKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBB
bmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOworICAg
IGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRG9jdW1lbnQq
IGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIFFfQVNTRVJUKGRvYyk7CisKKyAgICBOb2Rl
KiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICBpZiAoIWNv
cmVOb2RlIHx8ICFjb3JlTm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIGNvbnRyb2xsZXItPnBhdXNlQW5pbWF0aW9uQXRUaW1lKGNvcmVOb2RlLT5y
ZW5kZXJlcigpLCBhbmltYXRpb25OYW1lLCB0aW1lKTsKK30KKworYm9vbCBRRFJUU3VwcG9ydDo6
cGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eShRV2ViRnJhbWUgKnFmcmFtZSwgY29uc3QgUVN0cmlu
ZyAmcHJvcGVydHlOYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVudElkKQor
eworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBBbmltYXRpb25Db250
cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOworICAgIGlmICghY29udHJv
bGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1l
LT5kb2N1bWVudCgpOworICAgIFFfQVNTRVJUKGRvYyk7CisKKyAgICBOb2RlKiBjb3JlTm9kZSA9
IGRvYy0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICBpZiAoIWNvcmVOb2RlIHx8ICFj
b3JlTm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IGNvbnRyb2xsZXItPnBhdXNlVHJhbnNpdGlvbkF0VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwg
cHJvcGVydHlOYW1lLCB0aW1lKTsKK30KKworLy8gUGF1c2UgYSBnaXZlbiBTVkcgYW5pbWF0aW9u
IG9uIHRoZSB0YXJnZXQgbm9kZSBhdCBhIHNwZWNpZmljIHRpbWUuCisvLyBUaGlzIG1ldGhvZCBp
cyBvbmx5IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIHRlc3RpbmcgdGhlIFNWRyBhbmltYXRpb24g
c3lzdGVtLgorYm9vbCBRRFJUU3VwcG9ydDo6cGF1c2VTVkdBbmltYXRpb24oUVdlYkZyYW1lICpx
ZnJhbWUsIGNvbnN0IFFTdHJpbmcgJmFuaW1hdGlvbklkLCBkb3VibGUgdGltZSwgY29uc3QgUVN0
cmluZyAmZWxlbWVudElkKQoreworI2lmICFFTkFCTEUoU1ZHKQorICAgIHJldHVybiBmYWxzZTsK
KyNlbHNlCisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUp
OworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERvY3VtZW50
KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBRX0FTU0VSVChkb2MpOworCisgICAgaWYg
KCFkb2MtPnN2Z0V4dGVuc2lvbnMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTm9k
ZSogY29yZU5vZGUgPSBkb2MtPmdldEVsZW1lbnRCeUlkKGFuaW1hdGlvbklkKTsKKyAgICBpZiAo
IWNvcmVOb2RlIHx8ICFTVkdTTUlMRWxlbWVudDo6aXNTTUlMRWxlbWVudChjb3JlTm9kZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBkb2MtPmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKS0+c2FtcGxlQW5pbWF0aW9uQXRUaW1lKGVsZW1lbnRJZCwgc3RhdGljX2Nhc3Q8U1ZHU01J
TEVsZW1lbnQqPihjb3JlTm9kZSksIHRpbWUpOworI2VuZGlmCit9CisKKy8vIFJldHVybnMgdGhl
IHRvdGFsIG51bWJlciBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb25zIChpbmNsdWRlcyBi
b3RoIENTUyB0cmFuc2l0aW9ucyBhbmQgQ1NTIGFuaW1hdGlvbnMpLgoraW50IFFEUlRTdXBwb3J0
OjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoUVdlYkZyYW1lICpxZnJhbWUpCit7CisgICAgRnJh
bWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOworICAgIGlmICghZnJh
bWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gY29udHJvbGxlci0+bnVtYmVyT2ZBY3Rp
dmVBbmltYXRpb25zKCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OmNsZWFyRnJhbWVOYW1lKFFX
ZWJGcmFtZSogcUZyYW1lKQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6
OmNvcmUocUZyYW1lKTsKKyAgICBmcmFtZS0+dHJlZSgpLT5jbGVhck5hbWUoKTsKK30KKworaW50
IFFEUlRTdXBwb3J0OjpqYXZhU2NyaXB0T2JqZWN0c0NvdW50KCkKK3sKKyAgICByZXR1cm4gSlNE
T01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5nbG9iYWxPYmplY3RDb3Vu
dCgpOworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdCgpCit7
CisgICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3ROb3coKTsKK30KKwordm9pZCBRRFJU
U3VwcG9ydDo6Z2FyYmFnZUNvbGxlY3RvckNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdh
aXRVbnRpbERvbmUpCit7CisgICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RPbkFsdGVy
bmF0ZVRocmVhZEZvckRlYnVnZ2luZyh3YWl0VW50aWxEb25lKTsKK30KKworLy8gUmV0dXJucyB0
aGUgdmFsdWUgb2YgY291bnRlciBpbiB0aGUgZWxlbWVudCBzcGVjaWZpZWQgYnkgXGEgaWQuCitR
U3RyaW5nIFFEUlRTdXBwb3J0Ojpjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUq
IHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZy
YW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOworICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBm
cmFtZS0+ZG9jdW1lbnQoKSkgeworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQt
PmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmNvdW50ZXJWYWx1
ZUZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgfQorICAgIHJldHVybiBRU3RyaW5nKCk7Cit9CisK
K2ludCBRRFJUU3VwcG9ydDo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFFXZWJGcmFtZSogcUZy
YW1lLCBjb25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKK3sKKyAg
ICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7CisgICAgaWYg
KCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgRWxlbWVudCogZWxlbWVudCA9IGZy
YW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmcoaWQpKTsKKyAgICBp
ZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiBQcmludENvbnRl
eHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KGVsZW1lbnQsIEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0
KSk7Cit9CisKK2ludCBRRFJUU3VwcG9ydDo6bnVtYmVyT2ZQYWdlcyhRV2ViRnJhbWUqIHFGcmFt
ZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBRV2Vi
RnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0
dXJuIC0xOworCisgICAgcmV0dXJuIFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhmcmFtZSwg
RmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKK30KKworLy8gU3VzcGVuZCBhY3RpdmUgRE9NIG9i
amVjdHMgaW4gdGhpcyBmcmFtZS4KK3ZvaWQgUURSVFN1cHBvcnQ6OnN1c3BlbmRBY3RpdmVET01P
YmplY3RzKFFXZWJGcmFtZSogcUZyYW1lKQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFt
ZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKKyAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCisgICAg
ICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpOworfQorCisv
LyBSZXN1bWUgYWN0aXZlIERPTSBvYmplY3RzIGluIHRoaXMgZnJhbWUuCit2b2lkIFFEUlRTdXBw
b3J0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKFFXZWJGcmFtZSogcUZyYW1lKQoreworICAgIEZy
YW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKKyAgICBpZiAoZnJh
bWUtPmRvY3VtZW50KCkpCisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5yZXN1bWVBY3RpdmVE
T01PYmplY3RzKCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OmV2YWx1YXRlU2NyaXB0SW5Jc29s
YXRlZFdvcmxkKFFXZWJGcmFtZSogcUZyYW1lLCBpbnQgd29ybGRJZCwgY29uc3QgUVN0cmluZyYg
c2NyaXB0KQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZy
YW1lKTsKKyAgICBpZiAoZnJhbWUpCisgICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBmcmFt
ZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHRJbldvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgp
LCBzY3JpcHQsIHRydWUpLmpzVmFsdWUoKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6d2hpdGVM
aXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFT
dHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKK3sKKyAgICBTZWN1cml0eU9yaWdp
bjo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbigqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0
LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OnJl
c2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpCit7CisgICAgU2VjdXJpdHlPcmlnaW46OnJlc2V0
T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpzZXREb21h
aW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBR
U3RyaW5nJiBzY2hlbWUpCit7CisgICAgU2VjdXJpdHlPcmlnaW46OnNldERvbWFpblJlbGF4YXRp
b25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlkZGVuLCBzY2hlbWUpOworfQorCit2b2lkIFFE
UlRTdXBwb3J0OjplbmFibGVDYXJldEJyb3dzaW5nKFFXZWJQYWdlKiBwYWdlLCBib29sIHZhbHVl
KQoreworICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXR0aW5ncygpLT5zZXRDYXJldEJyb3dz
aW5nRW5hYmxlZCh2YWx1ZSk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OnNldE1lZGlhVHlwZShR
V2ViRnJhbWUqIHFmcmFtZSwgY29uc3QgUVN0cmluZyYgdHlwZSkKK3sKKyAgICBXZWJDb3JlOjpG
cmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7CisgICAgV2ViQ29y
ZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAgICB2aWV3LT5zZXRNZWRpYVR5
cGUodHlwZSk7CisgICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsK
KyAgICB2aWV3LT5mb3JjZUxheW91dCgpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmI0YTc3N2QKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMTAgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorICAg
IENvcHlyaWdodCAoQykgMjAwOCwyMDA5LDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0
aW5nIFNlcnZpY2VzIEluYy4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
KyNpZm5kZWYgRHVtcFJlbmRlclRyZWVTdXBwb3J0X2gKKyNkZWZpbmUgRHVtcFJlbmRlclRyZWVT
dXBwb3J0X2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRdENvcmUv
cXN0cmluZy5oPgorCitjbGFzcyBRV2ViUGFnZTsKK2NsYXNzIFFXZWJGcmFtZTsKKworY2xhc3Mg
UVdFQktJVF9FWFBPUlQgUURSVFN1cHBvcnQgeworCitwdWJsaWM6CisKKyAgICBRRFJUU3VwcG9y
dCgpOworICAgIH5RRFJUU3VwcG9ydCgpOworCisgICAgc3RhdGljIHZvaWQgY2xlYXJGcmFtZU5h
bWUoUVdlYkZyYW1lKiBxRnJhbWUpOworICAgIHN0YXRpYyBRU3RyaW5nIGNvdW50ZXJWYWx1ZUZv
ckVsZW1lbnRCeUlkKFFXZWJGcmFtZSogcUZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCk7CisgICAg
c3RhdGljIHZvaWQgZW5hYmxlQ2FyZXRCcm93c2luZyhRV2ViUGFnZSogcGFnZSwgYm9vbCB2YWx1
ZSk7CisgICAgc3RhdGljIHZvaWQgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoUVdlYkZy
YW1lKiBxRnJhbWUsIGludCB3b3JsZElkLCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpOworICAgIHN0
YXRpYyB2b2lkIGV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3Qg
UVN0cmluZyYgbmFtZSwgY29uc3QgUVN0cmluZyYgdmFsdWUpOworICAgIHN0YXRpYyBib29sIGlz
Q29tbWFuZEVuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG5hbWUpOworICAg
IHN0YXRpYyB2b2lkIGdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0KCk7CisgICAgc3RhdGljIHZvaWQg
Z2FyYmFnZUNvbGxlY3RvckNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERv
bmUpOworICAgIHN0YXRpYyBib29sIGhhc0RvY3VtZW50RWxlbWVudChRV2ViRnJhbWUqIHFGcmFt
ZSk7CisgICAgc3RhdGljIGludCBqYXZhU2NyaXB0T2JqZWN0c0NvdW50KCk7CisgICAgc3RhdGlj
IGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoUVdlYkZyYW1lKik7CisgICAgc3RhdGljIGlu
dCBudW1iZXJPZlBhZ2VzKFFXZWJGcmFtZSogcUZyYW1lLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVp
Z2h0KTsKKyAgICBzdGF0aWMgdm9pZCBvdmVyd3JpdGVQbHVnaW5EaXJlY3RvcmllcygpOworICAg
IHN0YXRpYyBpbnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFFXZWJGcmFtZSogcUZyYW1lLCBj
b25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CisgICAgc3RhdGlj
IGJvb2wgcGF1c2VBbmltYXRpb24oUVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYgbmFtZSwgZG91
YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CisgICAgc3RhdGljIGJvb2wgcGF1
c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eShRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBk
b3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKKyAgICBzdGF0aWMgYm9vbCBw
YXVzZVNWR0FuaW1hdGlvbihRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBhbmltYXRpb25JZCwg
ZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CisgICAgc3RhdGljIHZvaWQg
cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CisgICAgc3RhdGljIHZvaWQgcmVzdW1lQWN0
aXZlRE9NT2JqZWN0cyhRV2ViRnJhbWUqIHFGcmFtZSk7CisgICAgc3RhdGljIHZvaWQgcnVuKGJv
b2wgYik7CisgICAgc3RhdGljIHZvaWQgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVS
TFNjaGVtZShib29sIGZvcmJpZGRlbiwgY29uc3QgUVN0cmluZyYgc2NoZW1lKTsKKyAgICBzdGF0
aWMgdm9pZCBzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKFFXZWJQYWdlKiwgYm9vbCk7CisgICAg
c3RhdGljIHZvaWQgc2V0TWVkaWFUeXBlKFFXZWJGcmFtZSogcWZyYW1lLCBjb25zdCBRU3RyaW5n
JiB0eXBlKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChR
V2ViRnJhbWUqLCBib29sIGVuYWJsZWQpOworICAgIHN0YXRpYyB2b2lkIHNldFRpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZChRV2ViUGFnZSosIGJvb2wgZW5hYmxlZCk7CisgICAgc3RhdGljIHZvaWQg
c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBxRnJhbWUpOworICAgIHN0YXRpYyB2
b2lkIHdlYkluc3BlY3RvckV4ZWN1dGVTY3JpcHQoUVdlYlBhZ2UqIHBhZ2UsIGxvbmcgY2FsbElk
LCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpOworICAgIHN0YXRpYyB2b2lkIHdlYkluc3BlY3RvclNo
b3coUVdlYlBhZ2UqIHBhZ2UpOworICAgIHN0YXRpYyB2b2lkIHdlYkluc3BlY3RvckNsb3NlKFFX
ZWJQYWdlKiBwYWdlKTsKKyAgICBzdGF0aWMgUVN0cmluZyB3ZWJQYWdlR3JvdXBOYW1lKFFXZWJQ
YWdlICpwYWdlKTsKKyAgICBzdGF0aWMgdm9pZCB3ZWJQYWdlU2V0R3JvdXBOYW1lKFFXZWJQYWdl
KiBwYWdlLCBjb25zdCBRU3RyaW5nJiBncm91cE5hbWUpOworICAgIHN0YXRpYyB2b2lkIHdoaXRl
TGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBR
U3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbkhv
c3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIHN0YXRpYyBpbnQgd29y
a2VyVGhyZWFkQ291bnQoKTsKKworICAgIGJvb2wgZHJ0UnVuOworfTsKKworI2VuZGlmCisKZGlm
ZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAgYi9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCmluZGV4IDVlYzNhMTgu
LmJiNGFiNjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNw
cApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVkaXRv
ckNsaWVudFF0LmgiCiAKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnQuaCIKKwogI2lu
Y2x1ZGUgInF3ZWJwYWdlLmgiCiAjaW5jbHVkZSAicXdlYnBhZ2VfcC5oIgogCmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaCBiL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCmluZGV4IDQyYTQwMmYuLmQ2YzI0OGQgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCisrKyBi
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCkBAIC01NCw3ICs1NCw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCk7
CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpOwogICAgIHZpcnR1YWwg
aW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7Ci0gICAgCiAgICAgdmlydHVhbCBib29sIHNl
bGVjdFdvcmRCZWZvcmVNZW51RXZlbnQoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgp
OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNw
cCBiL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCmluZGV4IDQ0MjVi
YWMuLmM4NGYwMTkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdl
YnBhZ2UuY3BwCisrKyBiL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3Bw
CkBAIC0yMCw2ICsyMCw3IEBACiAqLwogCiAjaW5jbHVkZSAiLi4vdXRpbC5oIgorI2luY2x1ZGUg
Ii4uL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIgogI2luY2x1ZGUgPFFE
aXI+CiAjaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0PgogI2luY2x1ZGUgPFFMaW5lRWRpdD4KQEAg
LTcyMiwxMCArNzIzLDYgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6OmNyZWF0ZVZpZXdsZXNzUGx1Z2lu
KCkKIAogfQogCi0vLyBpbXBvcnQgcHJpdmF0ZSBBUEkKLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRf
d2VicGFnZV9zZXRHcm91cE5hbWUoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIGdyb3Vw
TmFtZSk7Ci1RU3RyaW5nIFFXRUJLSVRfRVhQT1JUIHF0X3dlYnBhZ2VfZ3JvdXBOYW1lKFFXZWJQ
YWdlKiBwYWdlKTsKLQogdm9pZCB0c3RfUVdlYlBhZ2U6Om11bHRpcGxlUGFnZUdyb3Vwc0FuZExv
Y2FsU3RvcmFnZSgpCiB7CiAgICAgUURpciBkaXIoUURpcjo6Y3VycmVudFBhdGgoKSk7CkBAIC03
MzcsMTIgKzczNCwxMiBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6bXVsdGlwbGVQYWdlR3JvdXBzQW5k
TG9jYWxTdG9yYWdlKCkKIAogICAgIHZpZXcxLnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmli
dXRlKFFXZWJTZXR0aW5nczo6TG9jYWxTdG9yYWdlRW5hYmxlZCwgdHJ1ZSk7CiAgICAgdmlldzEu
cGFnZSgpLT5zZXR0aW5ncygpLT5zZXRMb2NhbFN0b3JhZ2VQYXRoKFFEaXI6OnRvTmF0aXZlU2Vw
YXJhdG9ycyhRRGlyOjpjdXJyZW50UGF0aCgpICsgIi9wYXRoMSIpKTsKLSAgICBxdF93ZWJwYWdl
X3NldEdyb3VwTmFtZSh2aWV3MS5wYWdlKCksICJncm91cDEiKTsKKyAgICBRRFJUU3VwcG9ydDo6
d2ViUGFnZVNldEdyb3VwTmFtZSh2aWV3MS5wYWdlKCksICJncm91cDEiKTsKICAgICB2aWV3Mi5w
YWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkxvY2FsU3RvcmFn
ZUVuYWJsZWQsIHRydWUpOyAgICAKICAgICB2aWV3Mi5wYWdlKCktPnNldHRpbmdzKCktPnNldExv
Y2FsU3RvcmFnZVBhdGgoUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKFFEaXI6OmN1cnJlbnRQYXRo
KCkgKyAiL3BhdGgyIikpOwotICAgIHF0X3dlYnBhZ2Vfc2V0R3JvdXBOYW1lKHZpZXcyLnBhZ2Uo
KSwgImdyb3VwMiIpOwotICAgIFFDT01QQVJFKHF0X3dlYnBhZ2VfZ3JvdXBOYW1lKHZpZXcxLnBh
Z2UoKSksIFFTdHJpbmcoImdyb3VwMSIpKTsKLSAgICBRQ09NUEFSRShxdF93ZWJwYWdlX2dyb3Vw
TmFtZSh2aWV3Mi5wYWdlKCkpLCBRU3RyaW5nKCJncm91cDIiKSk7CisgICAgUURSVFN1cHBvcnQ6
OndlYlBhZ2VTZXRHcm91cE5hbWUodmlldzIucGFnZSgpLCAiZ3JvdXAyIik7CisgICAgUUNPTVBB
UkUoUURSVFN1cHBvcnQ6OndlYlBhZ2VHcm91cE5hbWUodmlldzEucGFnZSgpKSwgUVN0cmluZygi
Z3JvdXAxIikpOworICAgIFFDT01QQVJFKFFEUlRTdXBwb3J0Ojp3ZWJQYWdlR3JvdXBOYW1lKHZp
ZXcyLnBhZ2UoKSksIFFTdHJpbmcoImdyb3VwMiIpKTsKIAogCiAgICAgdmlldzEuc2V0SHRtbChR
U3RyaW5nKCI8aHRtbD48Ym9keT4gPC9ib2R5PjwvaHRtbD4iKSwgUVVybCgiaHR0cDovL3d3dy5t
eWV4YW1wbGUuY29tIikpOwpAQCAtMTQ3OSw5ICsxNDc2LDYgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6
OmlucHV0TWV0aG9kcygpCiAgICAgZGVsZXRlIGNvbnRhaW5lcjsKIH0KIAotLy8gaW1wb3J0IGEg
bGl0dGxlIERSVCBoZWxwZXIgZnVuY3Rpb24gdG8gdHJpZ2dlciB0aGUgZ2FyYmFnZSBjb2xsZWN0
b3IKLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgp
OwotCiB2b2lkIHRzdF9RV2ViUGFnZTo6cHJvdGVjdEJpbmRpbmdzUnVudGltZU9iamVjdHNGcm9t
Q29sbGVjdG9yKCkKIHsKICAgICBRU2lnbmFsU3B5IGxvYWRTcHkobV92aWV3LCBTSUdOQUwobG9h
ZEZpbmlzaGVkKGJvb2wpKSk7CkBAIC0xNDk4LDcgKzE0OTIsNyBAQCB2b2lkIHRzdF9RV2ViUGFn
ZTo6cHJvdGVjdEJpbmRpbmdzUnVudGltZU9iamVjdHNGcm9tQ29sbGVjdG9yKCkKIAogICAgIG5l
d1BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInRlc3RtZSgnZm9vJykiKTsK
IAotICAgIHF0X2RydF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3QoKTsKKyAgICBRRFJUU3VwcG9y
dDo6Z2FyYmFnZUNvbGxlY3RvckNvbGxlY3QoKTsKIAogICAgIC8vIGRvbid0IGNyYXNoIQogICAg
IG5ld1BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInRlc3RtZSgnYmFyJyki
KTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZwppbmRleCAyMzliMWQ2Li5jZjE2NjgwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTAt
MDQtMDIgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIFF0IERSVCBzdXBwb3J0
IGluIFF0V2ViS2l0CisKKyAgICAgICAgVXBkYXRlIERSVCB0byB1c2UgbmV3IFFEUlRTdXBwb3J0
IGNsYXNzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNTg0NAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWU6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGVC
ZWZvcmVUZXN0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlOjpkdW1wRnJh
bWVzQXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuY3BwOgorICAg
ICAgICAoR0NDb250cm9sbGVyOjpjb2xsZWN0KToKKyAgICAgICAgKEdDQ29udHJvbGxlcjo6Y29s
bGVjdE9uQWx0ZXJuYXRlVGhyZWFkKToKKyAgICAgICAgKEdDQ29udHJvbGxlcjo6Z2V0SlNPYmpl
Y3RDb3VudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuaDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJ
ZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWVkaWFUeXBlKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjbG9zZVdlYkluc3BlY3Rvcik6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvd1dlYkluc3BlY3Rvcik6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcik6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCk6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQpOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1l
bnRXaXRoSWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlv
bkF0VGltZU9uRWxlbWVudFdpdGhJZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZSk6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKToKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRDYXJldEJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVt
ZSk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6d29ya2VyVGhyZWFkQ291bnQpOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCk6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQYWdlcyk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorCiAyMDEwLTA0
LTAyICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHAKaW5kZXggMDcyNWNhZi4uMTc0YzQ2YiAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5j
cHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkR1
bXBSZW5kZXJUcmVlUXQuaCIKKyNpbmNsdWRlICIuLi8uLi8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXJRdC5o
IgogI2luY2x1ZGUgIkdDQ29udHJvbGxlclF0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5oIgpAQCAtNzcsMTMgKzc4LDggQEAKIAogI2luY2x1ZGUgPHFkZWJ1Zy5oPgogCi1l
eHRlcm4gdm9pZCBxdF9kcnRfcnVuKGJvb2wgYik7CiBleHRlcm4gdm9pZCBxdF9kdW1wX3NldF9h
Y2NlcHRzX2VkaXRpbmcoYm9vbCBiKTsKIGV4dGVybiB2b2lkIHF0X2R1bXBfZnJhbWVfbG9hZGVy
KGJvb2wgYik7Ci1leHRlcm4gdm9pZCBxdF9kcnRfY2xlYXJGcmFtZU5hbWUoUVdlYkZyYW1lKiBx
RnJhbWUpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X292ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVzKCk7
Ci1leHRlcm4gdm9pZCBxdF9kcnRfcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7Ci1leHRl
cm4gYm9vbCBxdF9kcnRfaGFzRG9jdW1lbnRFbGVtZW50KFFXZWJGcmFtZSogcUZyYW1lKTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMzksNyArMzM1LDcgQEAgRHVtcFJlbmRlclRyZWU6
OkR1bXBSZW5kZXJUcmVlKCkKICAgICAsIG1fZW5hYmxlVGV4dE91dHB1dChmYWxzZSkKICAgICAs
IG1fc2luZ2xlRmlsZU1vZGUoZmFsc2UpCiB7Ci0gICAgcXRfZHJ0X292ZXJ3cml0ZVBsdWdpbkRp
cmVjdG9yaWVzKCk7CisgICAgUURSVFN1cHBvcnQ6Om92ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVz
KCk7CiAgICAgUVdlYlNldHRpbmdzOjplbmFibGVQZXJzaXN0ZW50U3RvcmFnZSgpOwogCiAgICAg
Ly8gY3JlYXRlIG91ciBwcmltYXJ5IHRlc3RpbmcgcGFnZS92aWV3LgpAQCAtMzg2LDcgKzM4Miw3
IEBAIER1bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSgpCiAgICAgICAgICAgICB0aGlzLCBT
TE9UKHN0YXR1c0Jhck1lc3NhZ2UoY29uc3QgUVN0cmluZyYpKSk7CiAKICAgICBRT2JqZWN0Ojpj
b25uZWN0KHRoaXMsIFNJR05BTChxdWl0KCkpLCBxQXBwLCBTTE9UKHF1aXQoKSksIFF0OjpRdWV1
ZWRDb25uZWN0aW9uKTsKLSAgICBxdF9kcnRfcnVuKHRydWUpOworICAgIFFEUlRTdXBwb3J0Ojpy
dW4odHJ1ZSk7CiAgICAgUUZvY3VzRXZlbnQgZXZlbnQoUUV2ZW50OjpGb2N1c0luLCBRdDo6QWN0
aXZlV2luZG93Rm9jdXNSZWFzb24pOwogICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fbWFp
blZpZXcsICZldmVudCk7CiB9CkBAIC00MzksMTIgKzQzNSwxMiBAQCB2b2lkIER1bXBSZW5kZXJU
cmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpCiAgICAgbV9wYWdlLT51
bmRvU3RhY2soKS0+Y2xlYXIoKTsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZXRab29tRmFj
dG9yKDEuMCk7CiAgICAgY2xlYXJIaXN0b3J5KG1fcGFnZSk7Ci0gICAgcXRfZHJ0X2NsZWFyRnJh
bWVOYW1lKG1fcGFnZS0+bWFpbkZyYW1lKCkpOworICAgIFFEUlRTdXBwb3J0OjpjbGVhckZyYW1l
TmFtZShtX3BhZ2UtPm1haW5GcmFtZSgpKTsKIAogICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPmNs
ZWFyKCk7CiAgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+c2V0RnJvemVuKGZhbHNlKTsKIAotICAg
IHF0X2RydF9yZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMoKTsKKyAgICBRRFJUU3VwcG9ydDo6
cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CiAKICAgICBRTG9jYWxlOjpzZXREZWZhdWx0
KFFMb2NhbGU6OmMoKSk7CiAgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOwpAQCAtNjA1LDcgKzYw
MSw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OmhpZGVQYWdlKCkKIAogUVN0cmluZyBEdW1wUmVu
ZGVyVHJlZTo6ZHVtcEZyYW1lc0FzVGV4dChRV2ViRnJhbWUqIGZyYW1lKQogewotICAgIGlmICgh
ZnJhbWUgfHwgIXF0X2RydF9oYXNEb2N1bWVudEVsZW1lbnQoZnJhbWUpKQorICAgIGlmICghZnJh
bWUgfHwgIVFEUlRTdXBwb3J0OjpoYXNEb2N1bWVudEVsZW1lbnQoZnJhbWUpKQogICAgICAgICBy
ZXR1cm4gUVN0cmluZygpOwogCiAgICAgUVN0cmluZyByZXN1bHQ7CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmggYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmgKaW5kZXggN2EyODU4YS4uZDk1
MzNiMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRl
clRyZWVRdC5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJU
cmVlUXQuaApAQCAtNTMsNiArNTMsNyBAQCBRVF9FTkRfTkFNRVNQQUNFCiBjbGFzcyBRV2ViRnJh
bWU7CiAKIGNsYXNzIExheW91dFRlc3RDb250cm9sbGVyOworY2xhc3MgUURSVFN1cHBvcnQ7CiBj
bGFzcyBFdmVudFNlbmRlcjsKIGNsYXNzIFRleHRJbnB1dENvbnRyb2xsZXI7CiBjbGFzcyBHQ0Nv
bnRyb2xsZXI7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0Nv
bnRyb2xsZXJRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xs
ZXJRdC5jcHAKaW5kZXggOWNjM2FhNy4uM2U4OTBkZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmNwcApAQCAtMjksMTQgKzI5LDEwIEBACiAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXJRdC5oIgorI2luY2x1
ZGUgIi4uLy4uLy4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnQuaCIKIAogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CiAKLWV4dGVybiBpbnQgcXRfZHJ0X2phdmFT
Y3JpcHRPYmplY3RzQ291bnQoKTsKLWV4dGVybiB2b2lkIHF0X2RydF9nYXJiYWdlQ29sbGVjdG9y
X2NvbGxlY3QoKTsKLQotZXh0ZXJuIHZvaWQgcXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVj
dE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSk7Ci0KIEdDQ29udHJvbGxlcjo6
R0NDb250cm9sbGVyKFFXZWJQYWdlKiBwYXJlbnQpCiAgICAgOiBRT2JqZWN0KHBhcmVudCkKIHsK
QEAgLTQ0LDE1ICs0MCwxNSBAQCBHQ0NvbnRyb2xsZXI6OkdDQ29udHJvbGxlcihRV2ViUGFnZSog
cGFyZW50KQogCiB2b2lkIEdDQ29udHJvbGxlcjo6Y29sbGVjdCgpIGNvbnN0CiB7Ci0gICAgcXRf
ZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgpOworICAgIFFEUlRTdXBwb3J0OjpnYXJiYWdl
Q29sbGVjdG9yQ29sbGVjdCgpOwogfQogCiB2b2lkIEdDQ29udHJvbGxlcjo6Y29sbGVjdE9uQWx0
ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSkgY29uc3QKIHsKLSAgICBxdF9kcnRfZ2Fy
YmFnZUNvbGxlY3Rvcl9jb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQod2FpdFVudGlsRG9uZSk7Cisg
ICAgUURSVFN1cHBvcnQ6OmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQo
d2FpdFVudGlsRG9uZSk7CiB9CiAKIHNpemVfdCBHQ0NvbnRyb2xsZXI6OmdldEpTT2JqZWN0Q291
bnQoKSBjb25zdAogewotICAgIHJldHVybiBxdF9kcnRfamF2YVNjcmlwdE9iamVjdHNDb3VudCgp
OworICAgIHJldHVybiBRRFJUU3VwcG9ydDo6amF2YVNjcmlwdE9iamVjdHNDb3VudCgpOwogfQpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQu
aCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmgKaW5kZXgg
OGY1YjQzMi4uMTI3OTdmMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvR0NDb250cm9sbGVyUXQuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9H
Q0NvbnRyb2xsZXJRdC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8UU9iamVjdD4KIAog
Y2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBRRFJUU3VwcG9ydDsKIAogY2xhc3MgR0NDb250cm9sbGVy
IDogcHVibGljIFFPYmplY3QKIHsKQEAgLTQzLDYgKzQ0LDcgQEAgcHVibGljIHNsb3RzOgogICAg
IHZvaWQgY29sbGVjdCgpIGNvbnN0OwogICAgIHZvaWQgY29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFk
KGJvb2wgd2FpdFVudGlsRG9uZSkgY29uc3Q7CiAgICAgc2l6ZV90IGdldEpTT2JqZWN0Q291bnQo
KSBjb25zdDsKKwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IGI2NDgwYzIuLjYw
MDJiZmQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAgKi8KICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlclF0LmgiCisjaW5jbHVk
ZSAiLi4vLi4vLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dC5oIgogCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVRdC5oIgogI2luY2x1ZGUgIldvcmtRdWV1
ZS5oIgpAQCAtNDAsMjUgKzQxLDYgQEAgZXh0ZXJuIHZvaWQgcXRfd3J0X3NldFZpZXdNb2RlKFFX
ZWJQYWdlKiwgY29uc3QgUVN0cmluZyYgbW9kZSk7CiBleHRlcm4gdm9pZCBxdF9kdW1wX2VkaXRp
bmdfY2FsbGJhY2tzKGJvb2wgYik7CiBleHRlcm4gdm9pZCBxdF9kdW1wX2ZyYW1lX2xvYWRlcihi
b29sIGIpOwogZXh0ZXJuIHZvaWQgcXRfZHVtcF9yZXNvdXJjZV9sb2FkX2NhbGxiYWNrcyhib29s
IGIpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3NldE1lZGlhVHlwZShRV2ViRnJhbWUqIHFmcmFtZSwg
Y29uc3QgUVN0cmluZyYgdHlwZSk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfc2V0RnJhbWVGbGF0dGVu
aW5nRW5hYmxlZChRV2ViUGFnZSosIGJvb2wpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3NldEphdmFT
Y3JpcHRQcm9maWxpbmdFbmFibGVkKFFXZWJGcmFtZSosIGJvb2wgZW5hYmxlZCk7Ci1leHRlcm4g
dm9pZCBxdF9kcnRfc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKFFXZWJQYWdlKiwgYm9vbCBl
bmFibGVkKTsKLWV4dGVybiBib29sIHF0X2RydF9wYXVzZUFuaW1hdGlvbihRV2ViRnJhbWUqLCBj
b25zdCBRU3RyaW5nJiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElk
KTsKLWV4dGVybiBib29sIHF0X2RydF9wYXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KFFXZWJGcmFt
ZSosIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVt
ZW50SWQpOwotZXh0ZXJuIGJvb2wgcXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFtZSos
IGNvbnN0IFFTdHJpbmcmIGFuaW1hdGlvbklkLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYg
ZWxlbWVudElkKTsKLWV4dGVybiBpbnQgcXRfZHJ0X251bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhR
V2ViRnJhbWUqKTsKLWV4dGVybiB2b2lkIHF0X2RydF9zZXREb21haW5SZWxheGF0aW9uRm9yYmlk
ZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpOwot
Ci1leHRlcm4gdm9pZCBxdF9kcnRfd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3Ry
aW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNv
bnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7Ci1leHRlcm4gUVN0cmluZyBxdF9kcnRfY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQo
UVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJpbmcmIGlkKTsKLWV4dGVybiBpbnQgcXRfZHJ0
X3dvcmtlclRocmVhZENvdW50KCk7Ci1leHRlcm4gaW50IHF0X2RydF9wYWdlTnVtYmVyRm9yRWxl
bWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0KTsKLWV4dGVybiBpbnQgcXRfZHJ0X251bWJlck9mUGFnZXMoUVdlYkZy
YW1lKiBxRnJhbWUsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwotZXh0ZXJuIHZvaWQgcXRf
ZHJ0X3dlYmluc3BlY3Rvcl9leGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBwYWdlLCBsb25nIGNhbGxJ
ZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKLWV4dGVybiB2b2lkIHF0X2RydF93ZWJpbnNwZWN0
b3Jfc2hvdyhRV2ViUGFnZSAqcGFnZSk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfd2ViaW5zcGVjdG9y
X2Nsb3NlKFFXZWJQYWdlICpwYWdlKTsKLWV4dGVybiB2b2lkIHF0X2RydF9lbmFibGVDYXJldEJy
b3dzaW5nKFFXZWJQYWdlKiBwYWdlLCBib29sIHZhbHVlKTsKIAogTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlKiBkcnQpCiAg
ICAgOiBRT2JqZWN0KCkKQEAgLTE0NCw3ICsxMjYsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjp3YWl0VW50aWxEb25lKCkKIAogUVN0cmluZyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y291
bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoY29uc3QgUVN0cmluZyYgaWQpCiB7Ci0gICAgcmV0dXJu
IHF0X2RydF9jb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChtX2RydC0+d2ViUGFnZSgpLT5tYWlu
RnJhbWUoKSwgaWQpOworICAgIHJldHVybiBRRFJUU3VwcG9ydDo6Y291bnRlclZhbHVlRm9yRWxl
bWVudEJ5SWQobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIGlkKTsKIH0KIAogdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoY29uc3QgUVN0cmlu
ZyYgbW9kZSkKQEAgLTMwMCwxMiArMjgyLDEzIEBAIFFTdHJpbmcgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmRlY29kZUhvc3ROYW1lKGNvbnN0IFFTdHJpbmcmIGhvc3QpCiAKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldE1lZGlhVHlwZShjb25zdCBRU3RyaW5nJiB0eXBlKQogewotICAgIHF0
X2RydF9zZXRNZWRpYVR5cGUobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIHR5cGUpOwor
ICAgIFFEUlRTdXBwb3J0OjpzZXRNZWRpYVR5cGUobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1l
KCksIHR5cGUpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbG9zZVdlYkluc3Bl
Y3RvcigpCiB7Ci0gICAgcXRfZHJ0X3dlYmluc3BlY3Rvcl9jbG9zZShtX2RydC0+d2ViUGFnZSgp
KTsKKyAgICBRRFJUU3VwcG9ydDo6d2ViSW5zcGVjdG9yQ2xvc2UobV9kcnQtPndlYlBhZ2UoKSk7
CisgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0
aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgZmFsc2UpOwogfQogCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAg
LTMxNSwxNyArMjk4LDE4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERldmVsb3Bl
ckV4dHJhc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzaG93V2ViSW5zcGVjdG9yKCkKIHsKLSAgICBxdF9kcnRfd2ViaW5zcGVjdG9yX3Nob3cobV9k
cnQtPndlYlBhZ2UoKSk7CisgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0
cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgdHJ1ZSk7CisgICAg
UURSVFN1cHBvcnQ6OndlYkluc3BlY3RvclNob3cobV9kcnQtPndlYlBhZ2UoKSk7CiB9CiAKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxs
SWQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCkKIHsKLSAgICBxdF9kcnRfd2ViaW5zcGVjdG9yX2V4
ZWN1dGVTY3JpcHQobV9kcnQtPndlYlBhZ2UoKSwgY2FsbElkLCBzY3JpcHQpOworICAgIFFEUlRT
dXBwb3J0Ojp3ZWJJbnNwZWN0b3JFeGVjdXRlU2NyaXB0KG1fZHJ0LT53ZWJQYWdlKCksIGNhbGxJ
ZCwgc2NyaXB0KTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RnJhbWVGbGF0
dGVuaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0gICAgcXRfZHJ0X3NldEZyYW1lRmxhdHRl
bmluZ0VuYWJsZWQobV9kcnQtPndlYlBhZ2UoKSwgZW5hYmxlZCk7CisgICAgUURSVFN1cHBvcnQ6
OnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQobV9kcnQtPndlYlBhZ2UoKSwgZW5hYmxlZCk7CiB9
CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJv
bUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKQEAgLTM0NiwxMiArMzMwLDEyIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25n
IHF1b3RhKQogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGlu
Z0VuYWJsZWQoYm9vbCBlbmFibGUpCiB7CiAgICAgc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChl
bmFibGUpOwotICAgIHF0X2RydF9zZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChtX3RvcExv
YWRpbmdGcmFtZSwgZW5hYmxlKTsKKyAgICBRRFJUU3VwcG9ydDo6c2V0SmF2YVNjcmlwdFByb2Zp
bGluZ0VuYWJsZWQobV90b3BMb2FkaW5nRnJhbWUsIGVuYWJsZSk7CiB9CiAKIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZSkK
IHsKLSAgICBxdF9kcnRfc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKG1fZHJ0LT53ZWJQYWdl
KCksIGVuYWJsZSk7CisgICAgUURSVFN1cHBvcnQ6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxl
ZChtX2RydC0+d2ViUGFnZSgpLCBlbmFibGUpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRGaXhlZENvbnRlbnRzU2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCkBAIC00MDYs
NyArMzkwLDcgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VBbmltYXRpb25BdFRp
bWVPbkVsZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyYgYW4KIHsKICAgICBRV2ViRnJhbWUqIGZy
YW1lID0gbV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgUV9BU1NFUlQoZnJhbWUp
OwotICAgIHJldHVybiBxdF9kcnRfcGF1c2VBbmltYXRpb24oZnJhbWUsIGFuaW1hdGlvbk5hbWUs
IHRpbWUsIGVsZW1lbnRJZCk7CisgICAgcmV0dXJuIFFEUlRTdXBwb3J0OjpwYXVzZUFuaW1hdGlv
bihmcmFtZSwgYW5pbWF0aW9uTmFtZSwgdGltZSwgZWxlbWVudElkKTsKIH0KIAogYm9vbCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGNv
bnN0IFFTdHJpbmcmIHByb3BlcnR5TmFtZSwKQEAgLTQxNSw3ICszOTksNyBAQCBib29sIExheW91
dFRlc3RDb250cm9sbGVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoY29u
c3QgUVN0cmluZyYgcAogewogICAgIFFXZWJGcmFtZSogZnJhbWUgPSBtX2RydC0+d2ViUGFnZSgp
LT5tYWluRnJhbWUoKTsKICAgICBRX0FTU0VSVChmcmFtZSk7Ci0gICAgcmV0dXJuIHF0X2RydF9w
YXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KGZyYW1lLCBwcm9wZXJ0eU5hbWUsIHRpbWUsIGVsZW1l
bnRJZCk7CisgICAgcmV0dXJuIFFEUlRTdXBwb3J0OjpwYXVzZVRyYW5zaXRpb25PZlByb3BlcnR5
KGZyYW1lLCBwcm9wZXJ0eU5hbWUsIHRpbWUsIGVsZW1lbnRJZCk7CiB9CiAKIGJvb2wgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUoY29uc3Qg
UVN0cmluZyYgYW5pbWF0aW9uSWQsCkBAIC00MjQsMTQgKzQwOCwxNCBAQCBib29sIExheW91dFRl
c3RDb250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKGNvbnN0IFFT
dHJpbmcmIGFuaQogewogICAgIFFXZWJGcmFtZSogZnJhbWUgPSBtX2RydC0+d2ViUGFnZSgpLT5t
YWluRnJhbWUoKTsKICAgICBRX0FTU0VSVChmcmFtZSk7Ci0gICAgcmV0dXJuIHF0X2RydF9wYXVz
ZVNWR0FuaW1hdGlvbihmcmFtZSwgYW5pbWF0aW9uSWQsIHRpbWUsIGVsZW1lbnRJZCk7CisgICAg
cmV0dXJuIFFEUlRTdXBwb3J0OjpwYXVzZVNWR0FuaW1hdGlvbihmcmFtZSwgYW5pbWF0aW9uSWQs
IHRpbWUsIGVsZW1lbnRJZCk7CiB9CiAKIHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjpu
dW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25zdAogewogICAgIFFXZWJGcmFtZSogZnJhbWUg
PSBtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKTsKICAgICBRX0FTU0VSVChmcmFtZSk7Ci0g
ICAgcmV0dXJuIHF0X2RydF9udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoZnJhbWUpOworICAgIHJl
dHVybiBRRFJUU3VwcG9ydDo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKGZyYW1lKTsKIH0KIAog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlzYWJsZUltYWdlTG9hZGluZygpCkBAIC00NTks
NyArNDQzLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxEYXRhYmFzZXMo
KQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2lu
KGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Q
cm90b2NvbCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGlu
YXRpb25TdWJkb21haW5zKQogewotICAgIHF0X2RydF93aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2lu
KHNvdXJjZU9yaWdpbiwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgUURSVFN1cHBvcnQ6OndoaXRlTGlzdEFjY2Vz
c0Zyb21PcmlnaW4oc291cmNlT3JpZ2luLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlv
bkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKCkKQEAgLTQ5OCw3ICs0ODIsNyBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0
IFFTdHJpbmcmIHVybCkKIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Q2FyZXRCcm93
c2luZ0VuYWJsZWQoYm9vbCB2YWx1ZSkKIHsKLSAgICBxdF9kcnRfZW5hYmxlQ2FyZXRCcm93c2lu
ZyhtX2RydC0+d2ViUGFnZSgpLCB2YWx1ZSk7CisgICAgUURSVFN1cHBvcnQ6OmVuYWJsZUNhcmV0
QnJvd3NpbmcobV9kcnQtPndlYlBhZ2UoKSwgdmFsdWUpOwogfQogCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtNTEx
LDEyICs0OTUsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlU2hl
ZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29sIGZvcmJpZGRlbiwgY29u
c3QgUVN0cmluZyYgc2NoZW1lKQogewotICAgIHF0X2RydF9zZXREb21haW5SZWxheGF0aW9uRm9y
YmlkZGVuRm9yVVJMU2NoZW1lKGZvcmJpZGRlbiwgc2NoZW1lKTsKKyAgICBRRFJUU3VwcG9ydDo6
c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShmb3JiaWRkZW4sIHNjaGVt
ZSk7CiB9CiAKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d29ya2VyVGhyZWFkQ291bnQoKQog
ewotICAgIHJldHVybiBxdF9kcnRfd29ya2VyVGhyZWFkQ291bnQoKTsKKyAgICByZXR1cm4gUURS
VFN1cHBvcnQ6OndvcmtlclRocmVhZENvdW50KCk7CiB9CiAKIGludCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3
aWR0aCwgZmxvYXQgaGVpZ2h0KQpAQCAtNTI3LDEyICs1MTEsMTIgQEAgaW50IExheW91dFRlc3RD
b250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoY29uc3QgUVN0cmluZyYgaWQsIGZs
b2F0IHdpZHQKICAgICAgICAgaGVpZ2h0ID0gbV9kcnQtPndlYlBhZ2UoKS0+dmlld3BvcnRTaXpl
KCkuaGVpZ2h0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHF0X2RydF9wYWdlTnVtYmVyRm9yRWxl
bWVudEJ5SWQobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIGlkLCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICByZXR1cm4gUURSVFN1cHBvcnQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChtX2Ry
dC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKSwgaWQsIHdpZHRoLCBoZWlnaHQpOwogfQogCiBpbnQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMoZmxvYXQgd2lkdGgsIGZsb2F0IGhl
aWdodCkKIHsKLSAgICByZXR1cm4gcXRfZHJ0X251bWJlck9mUGFnZXMobV9kcnQtPndlYlBhZ2Uo
KS0+bWFpbkZyYW1lKCksIHdpZHRoLCBoZWlnaHQpOworICAgIHJldHVybiBRRFJUU3VwcG9ydDo6
bnVtYmVyT2ZQYWdlcyhtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKSwgd2lkdGgsIGhlaWdo
dCk7CiB9CiAKIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxTaG91bGRDbG9zZU9uV2Vi
VmlldygpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmgKaW5kZXggMzZiNWY3MC4uZGZmNmE0YyAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisrKyBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApA
QCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPHF3ZWJzZWN1cml0eW9yaWdpbi5oPgogCiBjbGFz
cyBRV2ViRnJhbWU7CitjbGFzcyBRRFJUU3VwcG9ydDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBEdW1wUmVuZGVyVHJlZTsKIH0KLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52417</attachid>
            <date>2010-04-02 07:47:36 -0700</date>
            <delta_ts>2010-04-10 12:43:50 -0700</delta_ts>
            <desc>Removed stray changelog entry</desc>
            <filename>0001-Refactor-Qt-DRT-support-in-QtWebKit.patch</filename>
            <type>text/plain</type>
            <size>52124</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSAwMzIzODY2NmFhNDI3ZGFlMDBhOTk5Mzc1YzhiZDZjNWNmMDFmNjU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDE1IE1hciAyMDEwIDIyOjQ5OjI5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gUmVmYWN0
b3IgUXQgRFJUIHN1cHBvcnQgaW4gUXRXZWJLaXQKCk1vdmUgYWxsIFFUIERSVCBzdXBwb3J0IGZ1
bmN0aW9ucyB0byBhIHN0YXRpYyBjbGFzcy4KCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNTg0NAotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMCArCiBXZWJDb3JlL1dlYkNvcmUucHJvICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3Bw
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTg4IC0tLS0tLS0tLS0tCiBXZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZS5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDg4IC0tLS0tCiBX
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEg
KwogV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwICAgICAgICAgICAgICAgfCAg
IDE1IC0KIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICA1NyArKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0LmNwcCB8ICAzNTMgKysrKysrKysrKysrKysrKysrKysKIFdlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaCAgIHwgICA3OCArKysrKwogV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcCAgICAgICAgfCAgICAyICsKIFdlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oICAgICAgICAgIHwgICAgMSAtCiBXZWJL
aXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcCAgICAgICAgICB8ICAgMTggKy0K
IFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0
MSArKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3Bw
IHwgICAxNiArLQogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVR
dC5oICAgfCAgICAxICsKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxl
clF0LmNwcCAgIHwgICAxMiArLQogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250
cm9sbGVyUXQuaCAgICAgfCAgICAyICsKIC4uLi9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmNwcCAgIHwgICA2MSArKy0tLQogLi4uL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuaCAgICAgfCAgICAxICsKIDIwIGZpbGVzIGNoYW5nZWQsIDU4
NyBpbnNlcnRpb25zKCspLCAzNjEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
LmgKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGZlOGQ5YTQuLmU5YzdjMmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDQtMDIgIFJvYmVydCBI
b2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIFF0IERSVCBzdXBwb3J0IGluIFF0V2ViS2l0CisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0CisK
KyAgICAgICAgKiBXZWJDb3JlLnBybzogQWRkIER1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKKwog
MjAxMC0wNC0wMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggd2hlbiBidWlsZGluZyAtLW5vLXN2Zy4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4
IGVhZjk3YTkuLjA2MDhhZTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjEwMCw2ICsyMTAwLDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBcCiAgICAg
Li4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwIFwKICAg
ICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcCBcCisgICAgLi4v
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAgXAogICAg
IC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAgXAogICAgIC4u
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0LmNwcCBcCiAgICAgLi4vV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIFwKZGlmZiAtLWdp
dCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1l
LmNwcAppbmRleCAzYmJjZmUyLi40YzA1ZDhkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3
ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC04OCwxOTMg
Kzg4LDYgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCiBleHRlcm4gUV9HVUlfRVhQT1JUIGludCBxdF9k
ZWZhdWx0RHBpKCk7CiBRVF9FTkRfTkFNRVNQQUNFCiAKLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRf
ZHJ0X3NldE1lZGlhVHlwZShRV2ViRnJhbWUqIHFmcmFtZSwgY29uc3QgUVN0cmluZyYgdHlwZSkK
LXsKLSAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFm
cmFtZSk7Ci0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKLSAg
ICB2aWV3LT5zZXRNZWRpYVR5cGUodHlwZSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0
ZVN0eWxlU2VsZWN0b3IoKTsKLSAgICB2aWV3LT5mb3JjZUxheW91dCgpOwotfQotCi1ib29sIFFX
RUJLSVRfRVhQT1JUIHF0X2RydF9oYXNEb2N1bWVudEVsZW1lbnQoUVdlYkZyYW1lKiBxZnJhbWUp
Ci17Ci0gICAgcmV0dXJuIFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKS0+ZG9jdW1lbnQo
KS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3Nl
dEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKFFXZWJGcmFtZSogcWZyYW1lLCBib29sIGVuYWJs
ZWQpCi17Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgRnJhbWUqIGZyYW1l
ID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOwotICAgIEluc3BlY3RvckNvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0g
ICAgaWYgKCFjb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGVuYWJsZWQpCi0g
ICAgICAgIGNvbnRyb2xsZXItPmVuYWJsZVByb2ZpbGVyKCk7Ci0gICAgZWxzZQotICAgICAgICBj
b250cm9sbGVyLT5kaXNhYmxlUHJvZmlsZXIoKTsKLSNlbmRpZgotfQotCi0vLyBQYXVzZSBhIGdp
dmVuIENTUyBhbmltYXRpb24gb3IgdHJhbnNpdGlvbiBvbiB0aGUgdGFyZ2V0IG5vZGUgYXQgYSBz
cGVjaWZpYyB0aW1lLgotLy8gSWYgdGhlIGFuaW1hdGlvbiBvciB0cmFuc2l0aW9uIGlzIGFscmVh
ZHkgcGF1c2VkLCBpdCB3aWxsIHVwZGF0ZSBpdHMgcGF1c2UgdGltZS4KLS8vIFRoaXMgbWV0aG9k
IGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGVzdGluZyB0aGUgQ1NTIGFuaW1hdGlv
biBhbmQgdHJhbnNpdGlvbiBzeXN0ZW0uCi1ib29sIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9wYXVz
ZUFuaW1hdGlvbihRV2ViRnJhbWUgKnFmcmFtZSwgY29uc3QgUVN0cmluZyAmYW5pbWF0aW9uTmFt
ZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCkKLXsKLSAgICBGcmFtZSog
ZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAgaWYgKCFmcmFtZSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJv
bGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKTsK
LSAgICBRX0FTU0VSVChkb2MpOwotCi0gICAgTm9kZSogY29yZU5vZGUgPSBkb2MtPmdldEVsZW1l
bnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5vZGUtPnJlbmRl
cmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjb250cm9sbGVyLT5w
YXVzZUFuaW1hdGlvbkF0VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwgYW5pbWF0aW9uTmFtZSwg
dGltZSk7Ci19Ci0KLWJvb2wgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNlVHJhbnNpdGlvbk9m
UHJvcGVydHkoUVdlYkZyYW1lICpxZnJhbWUsIGNvbnN0IFFTdHJpbmcgJnByb3BlcnR5TmFtZSwg
ZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCkKLXsKLSAgICBGcmFtZSogZnJh
bWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAgaWYgKCFmcmFtZSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxl
ciA9IGZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKLSAg
ICBRX0FTU0VSVChkb2MpOwotCi0gICAgTm9kZSogY29yZU5vZGUgPSBkb2MtPmdldEVsZW1lbnRC
eUlkKGVsZW1lbnRJZCk7Ci0gICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5vZGUtPnJlbmRlcmVy
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjb250cm9sbGVyLT5wYXVz
ZVRyYW5zaXRpb25BdFRpbWUoY29yZU5vZGUtPnJlbmRlcmVyKCksIHByb3BlcnR5TmFtZSwgdGlt
ZSk7Ci19Ci0KLS8vIFBhdXNlIGEgZ2l2ZW4gU1ZHIGFuaW1hdGlvbiBvbiB0aGUgdGFyZ2V0IG5v
ZGUgYXQgYSBzcGVjaWZpYyB0aW1lLgotLy8gVGhpcyBtZXRob2QgaXMgb25seSBpbnRlbmRlZCB0
byBiZSB1c2VkIGZvciB0ZXN0aW5nIHRoZSBTVkcgYW5pbWF0aW9uIHN5c3RlbS4KLWJvb2wgUVdF
QktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFtZSAqcWZyYW1lLCBj
b25zdCBRU3RyaW5nICZhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVs
ZW1lbnRJZCkKLXsKLSNpZiAhRU5BQkxFKFNWRykKLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQot
ICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKLSAgICBp
ZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBEb2N1bWVudCogZG9jID0g
ZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgUV9BU1NFUlQoZG9jKTsKLQotICAgIGlmICghZG9jLT5z
dmdFeHRlbnNpb25zKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIE5vZGUqIGNvcmVO
b2RlID0gZG9jLT5nZXRFbGVtZW50QnlJZChhbmltYXRpb25JZCk7Ci0gICAgaWYgKCFjb3JlTm9k
ZSB8fCAhU1ZHU01JTEVsZW1lbnQ6OmlzU01JTEVsZW1lbnQoY29yZU5vZGUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZG9jLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnNh
bXBsZUFuaW1hdGlvbkF0VGltZShlbGVtZW50SWQsIHN0YXRpY19jYXN0PFNWR1NNSUxFbGVtZW50
Kj4oY29yZU5vZGUpLCB0aW1lKTsKLSNlbmRpZgotfQotCi0vLyBSZXR1cm5zIHRoZSB0b3RhbCBu
dW1iZXIgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9ucyAoaW5jbHVkZXMgYm90aCBDU1Mg
dHJhbnNpdGlvbnMgYW5kIENTUyBhbmltYXRpb25zKS4KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9k
cnRfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFFXZWJGcmFtZSAqcWZyYW1lKQotewotICAgIEZy
YW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKLSAgICBpZiAoIWZy
YW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBbmltYXRpb25Db250cm9sbGVyKiBj
b250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOwotICAgIGlmICghY29udHJvbGxlcikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGNvbnRyb2xsZXItPm51bWJlck9mQWN0
aXZlQW5pbWF0aW9ucygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9jbGVhckZy
YW1lTmFtZShRV2ViRnJhbWUqIHFGcmFtZSkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJh
bWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgZnJhbWUtPnRyZWUoKS0+Y2xlYXJOYW1lKCk7
Ci19Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfamF2YVNjcmlwdE9iamVjdHNDb3VudCgp
Ci17Ci0gICAgcmV0dXJuIEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhl
YXAuZ2xvYmFsT2JqZWN0Q291bnQoKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRf
Z2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCkKLXsKLSAgICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdl
Q29sbGVjdE5vdygpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9nYXJiYWdlQ29s
bGVjdG9yX2NvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpCi17Ci0g
ICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZEZvckRlYnVn
Z2luZyh3YWl0VW50aWxEb25lKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdmFsdWUgb2YgY291bnRl
ciBpbiB0aGUgZWxlbWVudCBzcGVjaWZpZWQgYnkgXGEgaWQuCi1RU3RyaW5nIFFXRUJLSVRfRVhQ
T1JUIHF0X2RydF9jb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIHFGcmFtZSwg
Y29uc3QgUVN0cmluZyYgaWQpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0
ZTo6Y29yZShxRnJhbWUpOwotICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9j
dW1lbnQoKSkgewotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQtPmdldEVsZW1l
bnRCeUlkKGlkKTsKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmNvdW50ZXJWYWx1ZUZvckVsZW1l
bnQoZWxlbWVudCk7Ci0gICAgfQotICAgIHJldHVybiBRU3RyaW5nKCk7Ci19Ci0KLWludCBRV0VC
S0lUX0VYUE9SVCBxdF9kcnRfcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFFXZWJGcmFtZSogcUZy
YW1lLCBjb25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLXsKLSAg
ICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYg
KCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgRWxlbWVudCogZWxlbWVudCA9IGZy
YW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmcoaWQpKTsKLSAgICBp
ZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBQcmludENvbnRl
eHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KGVsZW1lbnQsIEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0
KSk7Ci19Ci0KLWludCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfbnVtYmVyT2ZQYWdlcyhRV2ViRnJh
bWUqIHFGcmFtZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLXsKLSAgICBGcmFtZSogZnJh
bWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKCFmcmFtZSkKLSAg
ICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdl
cyhmcmFtZSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLX0KLQotLy8gU3VzcGVuZCBhY3Rp
dmUgRE9NIG9iamVjdHMgaW4gdGhpcyBmcmFtZS4KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfc3Vz
cGVuZEFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBxRnJhbWUpCi17Ci0gICAgRnJhbWUqIGZy
YW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOwotICAgIGlmIChmcmFtZS0+ZG9j
dW1lbnQoKSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN1c3BlbmRBY3RpdmVET01PYmpl
Y3RzKCk7Ci19Ci0gICAgICAgICAgICAKLS8vIFJlc3VtZSBhY3RpdmUgRE9NIG9iamVjdHMgaW4g
dGhpcyBmcmFtZS4KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfcmVzdW1lQWN0aXZlRE9NT2JqZWN0
cyhRV2ViRnJhbWUqIHFGcmFtZSkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2
YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpOwotfSAgICAgICAgICAg
ICAgICAgICAgICAgIAotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9ldmFsdWF0ZVNjcmlw
dEluSXNvbGF0ZWRXb3JsZChRV2ViRnJhbWUqIHFGcmFtZSwgaW50IHdvcmxkSWQsIGNvbnN0IFFT
dHJpbmcmIHNjcmlwdCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpj
b3JlKHFGcmFtZSk7Ci0gICAgaWYgKGZyYW1lKQotICAgICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0
ID0gZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0SW5Xb3JsZChtYWluVGhyZWFkTm9ybWFs
V29ybGQoKSwgc2NyaXB0LCB0cnVlKS5qc1ZhbHVlKCk7Ci19Ci0KIHN0YXRpYyBib29sIHdlYmZy
YW1lX3Njcm9sbE92ZXJmbG93KFdlYkNvcmU6OkZyYW1lKiBmcmFtZSwgaW50IGR4LCBpbnQgZHks
IGNvbnN0IFFQb2ludCYgcG9zKQogewogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5kb2N1bWVu
dCgpIHx8ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkpCkBAIC0zNTQsNyArMTY3LDYgQEAgdm9pZCBR
V0VCS0lUX0VYUE9SVCBxdHdlYmtpdF93ZWJmcmFtZV9zY3JvbGxSZWN1cnNpdmVseShRV2ViRnJh
bWUqIHFGcmFtZSwgaW50IGQKICAgICB9CiB9CiAKLQogUVdlYkZyYW1lRGF0YTo6UVdlYkZyYW1l
RGF0YShXZWJDb3JlOjpQYWdlKiBwYXJlbnRQYWdlLCBXZWJDb3JlOjpGcmFtZSogcGFyZW50RnJh
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVy
RWxlbWVudCogb3duZXJGcmFtZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgZnJhbWVOYW1lKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L0FwaS9xd2ViZnJhbWUuaCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKaW5kZXggY2U5ODA1
Yi4uNzNjYzAzZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAorKysgYi9X
ZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFFXZWJTZWN1
cml0eU9yaWdpbjsKIGNsYXNzIFFXZWJFbGVtZW50OwogY2xhc3MgUVdlYkVsZW1lbnRDb2xsZWN0
aW9uOwogCitjbGFzcyBRRFJUU3VwcG9ydDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBXaWRnZXRQcml2YXRlOwogICAgIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50UXQ7CkBAIC0yMjUs
NiArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2U7CiAgICAgZnJp
ZW5kIGNsYXNzIFFXZWJQYWdlUHJpdmF0ZTsKICAgICBmcmllbmQgY2xhc3MgUVdlYkZyYW1lUHJp
dmF0ZTsKKyAgICBmcmllbmQgY2xhc3MgUURSVFN1cHBvcnQ7CiAgICAgZnJpZW5kIGNsYXNzIFdl
YkNvcmU6OldpZGdldFByaXZhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Owpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3
ZWJwYWdlLmNwcAppbmRleCAzMzg2NzJjLi5jMzZlM2ZiIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMTE5
LDk1ICsxMTksNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBRV0VCS0lU
X0VYUE9SVCBxdF93cnRfc2V0Vmlld01vZGUoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcm
IG1vZGUpCi17Ci0gICAgUVdlYlBhZ2VQcml2YXRlOjpwcml2KHBhZ2UpLT52aWV3TW9kZSA9IG1v
ZGU7Ci0gICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShw
YWdlLT5tYWluRnJhbWUoKSk7Ci0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUt
PnZpZXcoKTsKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVTZWxlY3RvcigpOwot
ICAgIHZpZXctPmZvcmNlTGF5b3V0KCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0
X292ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVzKCkKLXsKLSAgICBQbHVnaW5EYXRhYmFzZSogZGIg
PSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygvKiBwb3B1bGF0ZSAqLyBmYWxzZSk7
Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKLSAgICBTdHJpbmcgcXRQYXRoKHFnZXRlbnYo
IlFUV0VCS0lUX1BMVUdJTl9QQVRIIikuZGF0YSgpKTsKLSAgICBxdFBhdGguc3BsaXQoVUNoYXIo
JzonKSwgLyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFsc2UsIHBhdGhzKTsKLQotICAgIGRiLT5z
ZXRQbHVnaW5EaXJlY3RvcmllcyhwYXRocyk7Ci0gICAgZGItPnJlZnJlc2goKTsKLX0KLQotaW50
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF93b3JrZXJUaHJlYWRDb3VudCgpCi17Ci0jaWYgRU5BQkxF
KFdPUktFUlMpCi0gICAgcmV0dXJuIFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFk
Q291bnQoKTsKLSNlbHNlCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQogYm9vbCBRV2ViUGFn
ZVByaXZhdGU6OmRydFJ1biA9IGZhbHNlOwotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfcnVu
KGJvb2wgYikKLXsKLSAgICBRV2ViUGFnZVByaXZhdGU6OmRydFJ1biA9IGI7Ci19Ci0KLXZvaWQg
UVdFQktJVF9FWFBPUlQgcXRfZHJ0X3NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoUVdlYlBhZ2Uq
IHBhZ2UsIGJvb2wgZW5hYmxlZCkKLXsKLSAgICBRV2ViUGFnZVByaXZhdGU6OmNvcmUocGFnZSkt
PnNldHRpbmdzKCktPnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KLXZv
aWQgUVdFQktJVF9FWFBPUlQgcXRfd2VicGFnZV9zZXRHcm91cE5hbWUoUVdlYlBhZ2UqIHBhZ2Us
IGNvbnN0IFFTdHJpbmcmIGdyb3VwTmFtZSkKLXsKLSAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+
c2V0R3JvdXBOYW1lKGdyb3VwTmFtZSk7Ci19Ci0KLVFTdHJpbmcgUVdFQktJVF9FWFBPUlQgcXRf
d2VicGFnZV9ncm91cE5hbWUoUVdlYlBhZ2UqIHBhZ2UpCi17Ci0gICAgcmV0dXJuIHBhZ2UtPmhh
bmRsZSgpLT5wYWdlLT5ncm91cE5hbWUoKTsKLX0KLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi12
b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF93ZWJpbnNwZWN0b3JfZXhlY3V0ZVNjcmlwdChRV2Vi
UGFnZSogcGFnZSwgbG9uZyBjYWxsSWQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCkKLXsKLSAgICBp
ZiAoIXBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LT5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGNhbGxJZCwgc2NyaXB0KTsKLX0KLQotdm9pZCBR
V0VCS0lUX0VYUE9SVCBxdF9kcnRfd2ViaW5zcGVjdG9yX2Nsb3NlKFFXZWJQYWdlKiBwYWdlKQot
ewotICAgIGlmICghcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmNsb3NlKCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3dlYmlu
c3BlY3Rvcl9zaG93KFFXZWJQYWdlKiBwYWdlKQotewotICAgIGlmICghcGFnZS0+aGFuZGxlKCkt
PnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHBhZ2Ut
PmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNob3coKTsKLX0KLQotdm9p
ZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKFFXZWJQ
YWdlKiBwYWdlLCBib29sIGVuYWJsZWQpCi17Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogY29u
dHJvbGxlciA9IHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0g
ICAgaWYgKCFjb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGVuYWJsZWQpCi0g
ICAgICAgIGNvbnRyb2xsZXItPnN0YXJ0VGltZWxpbmVQcm9maWxlcigpOwotICAgIGVsc2UKLSAg
ICAgICAgY29udHJvbGxlci0+c3RvcFRpbWVsaW5lUHJvZmlsZXIoKTsKLX0KLSNlbmRpZgotCi12
b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9lbmFibGVDYXJldEJyb3dzaW5nKFFXZWJQYWdlKiBw
YWdlLCBib29sIHZhbHVlKQotewotICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXR0aW5ncygp
LT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZCh2YWx1ZSk7Ci19CiAKIGNsYXNzIFFXZWJQYWdlV2lk
Z2V0Q2xpZW50IDogcHVibGljIFFXZWJQYWdlQ2xpZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAppbmRl
eCAyNGQwZWQ5Li5jZWRiZGU4IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgK
KysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCkBAIC0zNjcsNiArMzY3LDcgQEAgcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdDsK
ICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU7CiAgICAgZnJpZW5kIGNs
YXNzIFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOworICAgIGZyaWVuZCBjbGFzcyBRRFJU
U3VwcG9ydDsKIH07CiAKIFFfREVDTEFSRV9PUEVSQVRPUlNfRk9SX0ZMQUdTKFFXZWJQYWdlOjpG
aW5kRmxhZ3MpCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5j
cHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAKaW5kZXggNmMyNmJkNy4u
YjY5ZjI0ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3Bw
CisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcApAQCAtMzAsMjEgKzMw
LDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgUVdFQktJVF9FWFBPUlQg
cXRfZHJ0X3doaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29uc3QgUVN0cmluZyYgc291cmNlT3Jp
Z2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBk
ZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCi17Ci0gICAg
U2VjdXJpdHlPcmlnaW46OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oKlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRl
c3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwotfQotCi12b2lkIFFX
RUJLSVRfRVhQT1JUIHF0X2RydF9yZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMoKQotewotICAg
IFNlY3VyaXR5T3JpZ2luOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMoKTsKLX0KLQotdm9p
ZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVS
TFNjaGVtZShib29sIGZvcmJpZGRlbiwgY29uc3QgUVN0cmluZyYgc2NoZW1lKQotewotICAgIFNl
Y3VyaXR5T3JpZ2luOjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGZv
cmJpZGRlbiwgc2NoZW1lKTsKLX0KLQogLyohCiAgICAgXGNsYXNzIFFXZWJTZWN1cml0eU9yaWdp
bgogICAgIFxzaW5jZSA0LjUKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJL
aXQvcXQvQ2hhbmdlTG9nCmluZGV4IDAzZDJmOWEuLmY3Yjk1MjQgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBA
CisyMDEwLTA0LTAyICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBRdCBEUlQg
c3VwcG9ydCBpbiBRdFdlYktpdAorCisgICAgICAgIEFkZCBuZXcgY2xhc3MgUURSVFN1cHBvcnQu
IFRoaXMgbm93IGhvdXNlcyBhbGwgdGhlIHF0X2RydF8qIGZ1bmN0aW9ucworICAgICAgICB0aGF0
IHByZXZpb3VzbHkgbGl2ZWQgaW4gcXdlYnBhZ2UgYW5kIHF3ZWJmcmFtZS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4NDQKKworICAgICAgICAq
IEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAq
IEFwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHA6IEFkZGVkLgorICAgICAgICAoUURSVFN1cHBvcnQ6OlFE
UlRTdXBwb3J0KToKKyAgICAgICAgKFFEUlRTdXBwb3J0Ojp+UURSVFN1cHBvcnQpOgorICAgICAg
ICAoUURSVFN1cHBvcnQ6Om92ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKFFE
UlRTdXBwb3J0Ojp3b3JrZXJUaHJlYWRDb3VudCk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6cnVu
KToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKToKKyAg
ICAgICAgKFFEUlRTdXBwb3J0Ojp3ZWJQYWdlU2V0R3JvdXBOYW1lKToKKyAgICAgICAgKFFEUlRT
dXBwb3J0Ojp3ZWJQYWdlR3JvdXBOYW1lKToKKyAgICAgICAgKFFEUlRTdXBwb3J0Ojp3ZWJJbnNw
ZWN0b3JFeGVjdXRlU2NyaXB0KToKKyAgICAgICAgKFFEUlRTdXBwb3J0Ojp3ZWJJbnNwZWN0b3JD
bG9zZSk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6d2ViSW5zcGVjdG9yU2hvdyk6CisgICAgICAg
IChRRFJUU3VwcG9ydDo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKFFE
UlRTdXBwb3J0OjpoYXNEb2N1bWVudEVsZW1lbnQpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OnNl
dEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpwYXVz
ZUFuaW1hdGlvbik6CisgICAgICAgIChRRFJUU3VwcG9ydDo6cGF1c2VUcmFuc2l0aW9uT2ZQcm9w
ZXJ0eSk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6cGF1c2VTVkdBbmltYXRpb24pOgorICAgICAg
ICAoUURSVFN1cHBvcnQ6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6CisgICAgICAgIChRRFJU
U3VwcG9ydDo6Y2xlYXJGcmFtZU5hbWUpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OmphdmFTY3Jp
cHRPYmplY3RzQ291bnQpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OmdhcmJhZ2VDb2xsZWN0b3JD
b2xsZWN0KToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9u
QWx0ZXJuYXRlVGhyZWFkKToKKyAgICAgICAgKFFEUlRTdXBwb3J0Ojpjb3VudGVyVmFsdWVGb3JF
bGVtZW50QnlJZCk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6cGFnZU51bWJlckZvckVsZW1lbnRC
eUlkKToKKyAgICAgICAgKFFEUlRTdXBwb3J0OjpudW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKFFE
UlRTdXBwb3J0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChRRFJUU3VwcG9y
dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6ZXZhbHVh
dGVTY3JpcHRJbklzb2xhdGVkV29ybGQpOgorICAgICAgICAoUURSVFN1cHBvcnQ6OndoaXRlTGlz
dEFjY2Vzc0Zyb21PcmlnaW4pOgorICAgICAgICAoUURSVFN1cHBvcnQ6OnJlc2V0T3JpZ2luQWNj
ZXNzV2hpdGVMaXN0cyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6c2V0RG9tYWluUmVsYXhhdGlv
bkZvcmJpZGRlbkZvclVSTFNjaGVtZSk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6ZW5hYmxlQ2Fy
ZXRCcm93c2luZyk6CisgICAgICAgIChRRFJUU3VwcG9ydDo6c2V0TWVkaWFUeXBlKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaDogQWRkZWQuCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudFF0Lmg6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0
X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6bXVsdGlwbGVQYWdlR3JvdXBz
QW5kTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6cHJvdGVjdEJpbmRpbmdz
UnVudGltZU9iamVjdHNGcm9tQ29sbGVjdG9yKToKKwogMjAxMC0wNC0wMiAgVGFzdWt1IFN1enVr
aSAgPHRhc3VrdS5zdXp1a2lAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjJjMjRkCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydC5jcHAKQEAgLTAsMCArMSwzNTMgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEw
IFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDgsMjAwOSwyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJ
bmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgiCisKKyNpbmNsdWRlICJD
b250ZXh0TWVudS5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50UXQuaCIKKyNpbmNsdWRl
ICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNsdWRl
ICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2lu
Y2x1ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCisjaW5jbHVk
ZSAiUHJpbnRDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpZiBFTkFCTEUo
U1ZHKQorI2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50LmgiCisjZW5kaWYKKyNpbmNsdWRlICJXb3Jr
ZXJUaHJlYWQuaCIKKworI2luY2x1ZGUgInF3ZWJmcmFtZS5oIgorI2luY2x1ZGUgInF3ZWJmcmFt
ZV9wLmgiCisjaW5jbHVkZSAicXdlYnBhZ2UuaCIKKyNpbmNsdWRlICJxd2VicGFnZV9wLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitRRFJUU3VwcG9ydDo6UURSVFN1cHBvcnQoKQor
eworfQorCitRRFJUU3VwcG9ydDo6flFEUlRTdXBwb3J0KCkKK3sKK30KKwordm9pZCBRRFJUU3Vw
cG9ydDo6b3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKQoreworICAgIFBsdWdpbkRhdGFiYXNl
KiBkYiA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKC8qIHBvcHVsYXRlICovIGZh
bHNlKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOworICAgIFN0cmluZyBxdFBhdGgocWdl
dGVudigiUVRXRUJLSVRfUExVR0lOX1BBVEgiKS5kYXRhKCkpOworICAgIHF0UGF0aC5zcGxpdChV
Q2hhcignOicpLCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBmYWxzZSwgcGF0aHMpOworCisgICAg
ZGItPnNldFBsdWdpbkRpcmVjdG9yaWVzKHBhdGhzKTsKKyAgICBkYi0+cmVmcmVzaCgpOworfQor
CitpbnQgUURSVFN1cHBvcnQ6OndvcmtlclRocmVhZENvdW50KCkKK3sKKyNpZiBFTkFCTEUoV09S
S0VSUykKKyAgICByZXR1cm4gV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRDb3Vu
dCgpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit2b2lkIFFEUlRTdXBwb3J0
OjpydW4oYm9vbCBiKQoreworICAgIFFXZWJQYWdlUHJpdmF0ZTo6ZHJ0UnVuID0gYjsKK30KKwor
dm9pZCBRRFJUU3VwcG9ydDo6c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChRV2ViUGFnZSogcGFn
ZSwgYm9vbCBlbmFibGVkKQoreworICAgIFFXZWJQYWdlUHJpdmF0ZTo6Y29yZShwYWdlKS0+c2V0
dGluZ3MoKS0+c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChlbmFibGVkKTsKK30KKwordm9pZCBR
RFJUU3VwcG9ydDo6d2ViUGFnZVNldEdyb3VwTmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0
cmluZyYgZ3JvdXBOYW1lKQoreworICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXRHcm91cE5h
bWUoZ3JvdXBOYW1lKTsKK30KKworUVN0cmluZyBRRFJUU3VwcG9ydDo6d2ViUGFnZUdyb3VwTmFt
ZShRV2ViUGFnZSogcGFnZSkKK3sKKyAgICByZXR1cm4gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmdy
b3VwTmFtZSgpOworfQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKK3ZvaWQgUURSVFN1cHBvcnQ6
OndlYkluc3BlY3RvckV4ZWN1dGVTY3JpcHQoUVdlYlBhZ2UqIHBhZ2UsIGxvbmcgY2FsbElkLCBj
b25zdCBRU3RyaW5nJiBzY3JpcHQpCit7CisgICAgaWYgKCFwYWdlLT5oYW5kbGUoKS0+cGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+aGFuZGxl
KCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVu
ZChjYWxsSWQsIHNjcmlwdCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OndlYkluc3BlY3RvckNs
b3NlKFFXZWJQYWdlKiBwYWdlKQoreworICAgIGlmICghcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2UtPmhhbmRsZSgp
LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNsb3NlKCk7Cit9CisKK3ZvaWQgUURSVFN1
cHBvcnQ6OndlYkluc3BlY3RvclNob3coUVdlYlBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKCFwYWdl
LT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICByZXR1cm47
CisgICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygp
OworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoUVdl
YlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBj
b250cm9sbGVyID0gcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsK
KyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoZW5hYmxlZCkK
KyAgICAgICAgY29udHJvbGxlci0+c3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7CisgICAgZWxzZQor
ICAgICAgICBjb250cm9sbGVyLT5zdG9wVGltZWxpbmVQcm9maWxlcigpOworfQorCisjZW5kaWYK
KworYm9vbCBRRFJUU3VwcG9ydDo6aGFzRG9jdW1lbnRFbGVtZW50KFFXZWJGcmFtZSogcWZyYW1l
KQoreworICAgIHJldHVybiBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSktPmRvY3VtZW50
KCktPmRvY3VtZW50RWxlbWVudCgpOworfQorCit2b2lkIFFEUlRTdXBwb3J0OjpzZXRKYXZhU2Ny
aXB0UHJvZmlsaW5nRW5hYmxlZChRV2ViRnJhbWUqIHFmcmFtZSwgYm9vbCBlbmFibGVkKQorewor
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJG
cmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBjb250
cm9sbGVyID0gZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIGlmICgh
Y29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChlbmFibGVkKQorICAgICAgICBj
b250cm9sbGVyLT5lbmFibGVQcm9maWxlcigpOworICAgIGVsc2UKKyAgICAgICAgY29udHJvbGxl
ci0+ZGlzYWJsZVByb2ZpbGVyKCk7CisjZW5kaWYKK30KKworLy8gUGF1c2UgYSBnaXZlbiBDU1Mg
YW5pbWF0aW9uIG9yIHRyYW5zaXRpb24gb24gdGhlIHRhcmdldCBub2RlIGF0IGEgc3BlY2lmaWMg
dGltZS4KKy8vIElmIHRoZSBhbmltYXRpb24gb3IgdHJhbnNpdGlvbiBpcyBhbHJlYWR5IHBhdXNl
ZCwgaXQgd2lsbCB1cGRhdGUgaXRzIHBhdXNlIHRpbWUuCisvLyBUaGlzIG1ldGhvZCBpcyBvbmx5
IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIHRlc3RpbmcgdGhlIENTUyBhbmltYXRpb24gYW5kIHRy
YW5zaXRpb24gc3lzdGVtLgorYm9vbCBRRFJUU3VwcG9ydDo6cGF1c2VBbmltYXRpb24oUVdlYkZy
YW1lICpxZnJhbWUsIGNvbnN0IFFTdHJpbmcgJmFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lLCBj
b25zdCBRU3RyaW5nICZlbGVtZW50SWQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1l
UHJpdmF0ZTo6Y29yZShxZnJhbWUpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5p
bWF0aW9uKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBEb2N1bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgUV9BU1NFUlQoZG9j
KTsKKworICAgIE5vZGUqIGNvcmVOb2RlID0gZG9jLT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQp
OworICAgIGlmICghY29yZU5vZGUgfHwgIWNvcmVOb2RlLT5yZW5kZXJlcigpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gY29udHJvbGxlci0+cGF1c2VBbmltYXRpb25BdFRp
bWUoY29yZU5vZGUtPnJlbmRlcmVyKCksIGFuaW1hdGlvbk5hbWUsIHRpbWUpOworfQorCitib29s
IFFEUlRTdXBwb3J0OjpwYXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KFFXZWJGcmFtZSAqcWZyYW1l
LCBjb25zdCBRU3RyaW5nICZwcm9wZXJ0eU5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5n
ICZlbGVtZW50SWQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29y
ZShxZnJhbWUpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7Cisg
ICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBEb2N1bWVu
dCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgUV9BU1NFUlQoZG9jKTsKKworICAgIE5v
ZGUqIGNvcmVOb2RlID0gZG9jLT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOworICAgIGlmICgh
Y29yZU5vZGUgfHwgIWNvcmVOb2RlLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gY29udHJvbGxlci0+cGF1c2VUcmFuc2l0aW9uQXRUaW1lKGNvcmVOb2Rl
LT5yZW5kZXJlcigpLCBwcm9wZXJ0eU5hbWUsIHRpbWUpOworfQorCisvLyBQYXVzZSBhIGdpdmVu
IFNWRyBhbmltYXRpb24gb24gdGhlIHRhcmdldCBub2RlIGF0IGEgc3BlY2lmaWMgdGltZS4KKy8v
IFRoaXMgbWV0aG9kIGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGVzdGluZyB0aGUg
U1ZHIGFuaW1hdGlvbiBzeXN0ZW0uCitib29sIFFEUlRTdXBwb3J0OjpwYXVzZVNWR0FuaW1hdGlv
bihRV2ViRnJhbWUgKnFmcmFtZSwgY29uc3QgUVN0cmluZyAmYW5pbWF0aW9uSWQsIGRvdWJsZSB0
aW1lLCBjb25zdCBRU3RyaW5nICZlbGVtZW50SWQpCit7CisjaWYgIUVOQUJMRShTVkcpCisgICAg
cmV0dXJuIGZhbHNlOworI2Vsc2UKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRl
Ojpjb3JlKHFmcmFtZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIFFfQVNTRVJUKGRv
Yyk7CisKKyAgICBpZiAoIWRvYy0+c3ZnRXh0ZW5zaW9ucygpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBOb2RlKiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoYW5pbWF0aW9u
SWQpOworICAgIGlmICghY29yZU5vZGUgfHwgIVNWR1NNSUxFbGVtZW50Ojppc1NNSUxFbGVtZW50
KGNvcmVOb2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGRvYy0+YWNj
ZXNzU1ZHRXh0ZW5zaW9ucygpLT5zYW1wbGVBbmltYXRpb25BdFRpbWUoZWxlbWVudElkLCBzdGF0
aWNfY2FzdDxTVkdTTUlMRWxlbWVudCo+KGNvcmVOb2RlKSwgdGltZSk7CisjZW5kaWYKK30KKwor
Ly8gUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlv
bnMgKGluY2x1ZGVzIGJvdGggQ1NTIHRyYW5zaXRpb25zIGFuZCBDU1MgYW5pbWF0aW9ucykuCitp
bnQgUURSVFN1cHBvcnQ6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhRV2ViRnJhbWUgKnFmcmFt
ZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQW5pbWF0aW9u
Q29udHJvbGxlciogY29udHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKKyAgICBpZiAoIWNv
bnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBjb250cm9sbGVy
LT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6Y2xl
YXJGcmFtZU5hbWUoUVdlYkZyYW1lKiBxRnJhbWUpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdl
YkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOworICAgIGZyYW1lLT50cmVlKCktPmNsZWFyTmFt
ZSgpOworfQorCitpbnQgUURSVFN1cHBvcnQ6OmphdmFTY3JpcHRPYmplY3RzQ291bnQoKQorewor
ICAgIHJldHVybiBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmds
b2JhbE9iamVjdENvdW50KCk7Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OmdhcmJhZ2VDb2xsZWN0
b3JDb2xsZWN0KCkKK3sKKyAgICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdlQ29sbGVjdE5vdygpOwor
fQorCit2b2lkIFFEUlRTdXBwb3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRl
VGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSkKK3sKKyAgICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdl
Q29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkRm9yRGVidWdnaW5nKHdhaXRVbnRpbERvbmUpOworfQor
CisvLyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiBjb3VudGVyIGluIHRoZSBlbGVtZW50IHNwZWNpZmll
ZCBieSBcYSBpZC4KK1FTdHJpbmcgUURSVFN1cHBvcnQ6OmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRC
eUlkKFFXZWJGcmFtZSogcUZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCkKK3sKKyAgICBGcmFtZSog
ZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7CisgICAgaWYgKERvY3VtZW50
KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpKSB7CisgICAgICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoaWQpOworICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6Y291bnRlclZhbHVlRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICB9CisgICAgcmV0dXJuIFFT
dHJpbmcoKTsKK30KKworaW50IFFEUlRTdXBwb3J0OjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQo
UVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZy
YW1lKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBFbGVtZW50
KiBlbGVtZW50ID0gZnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmlu
ZyhpZCkpOworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0
dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoZWxlbWVudCwgRmxvYXRTaXpl
KHdpZHRoLCBoZWlnaHQpKTsKK30KKworaW50IFFEUlRTdXBwb3J0OjpudW1iZXJPZlBhZ2VzKFFX
ZWJGcmFtZSogcUZyYW1lLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQoreworICAgIEZyYW1l
KiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKKyAgICBpZiAoIWZyYW1l
KQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpudW1iZXJP
ZlBhZ2VzKGZyYW1lLCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCkpOworfQorCisvLyBTdXNwZW5k
IGFjdGl2ZSBET00gb2JqZWN0cyBpbiB0aGlzIGZyYW1lLgordm9pZCBRRFJUU3VwcG9ydDo6c3Vz
cGVuZEFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBxRnJhbWUpCit7CisgICAgRnJhbWUqIGZy
YW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUpOworICAgIGlmIChmcmFtZS0+ZG9j
dW1lbnQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN1c3BlbmRBY3RpdmVET01PYmpl
Y3RzKCk7Cit9CisKKy8vIFJlc3VtZSBhY3RpdmUgRE9NIG9iamVjdHMgaW4gdGhpcyBmcmFtZS4K
K3ZvaWQgUURSVFN1cHBvcnQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBxRnJh
bWUpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUp
OworICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkt
PnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6ZXZhbHVh
dGVTY3JpcHRJbklzb2xhdGVkV29ybGQoUVdlYkZyYW1lKiBxRnJhbWUsIGludCB3b3JsZElkLCBj
b25zdCBRU3RyaW5nJiBzY3JpcHQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJp
dmF0ZTo6Y29yZShxRnJhbWUpOworICAgIGlmIChmcmFtZSkKKyAgICAgICAgSlNDOjpKU1ZhbHVl
IHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdEluV29ybGQobWFpblRocmVh
ZE5vcm1hbFdvcmxkKCksIHNjcmlwdCwgdHJ1ZSkuanNWYWx1ZSgpOworfQorCit2b2lkIFFEUlRT
dXBwb3J0Ojp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9y
aWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYg
ZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQoreworICAg
IFNlY3VyaXR5T3JpZ2luOjp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKCpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBk
ZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKK30KKwordm9pZCBR
RFJUU3VwcG9ydDo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCkKK3sKKyAgICBTZWN1cml0
eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7Cit9CisKK3ZvaWQgUURSVFN1
cHBvcnQ6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3Ji
aWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBTZWN1cml0eU9yaWdpbjo6c2V0
RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShmb3JiaWRkZW4sIHNjaGVtZSk7
Cit9CisKK3ZvaWQgUURSVFN1cHBvcnQ6OmVuYWJsZUNhcmV0QnJvd3NpbmcoUVdlYlBhZ2UqIHBh
Z2UsIGJvb2wgdmFsdWUpCit7CisgICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPnNldHRpbmdzKCkt
PnNldENhcmV0QnJvd3NpbmdFbmFibGVkKHZhbHVlKTsKK30KKwordm9pZCBRRFJUU3VwcG9ydDo6
c2V0TWVkaWFUeXBlKFFXZWJGcmFtZSogcWZyYW1lLCBjb25zdCBRU3RyaW5nJiB0eXBlKQorewor
ICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1l
KTsKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOworICAgIHZp
ZXctPnNldE1lZGlhVHlwZSh0eXBlKTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5
bGVTZWxlY3RvcigpOworICAgIHZpZXctPmZvcmNlTGF5b3V0KCk7Cit9CisKK3ZvaWQgUURSVFN1
cHBvcnQ6OnNldFZpZXdNb2RlKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBtb2RlKQor
eworICAgIFFXZWJQYWdlUHJpdmF0ZTo6cHJpdihwYWdlKS0+dmlld01vZGUgPSBtb2RlOworICAg
IFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocGFnZS0+bWFp
bkZyYW1lKCkpOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52aWV3KCk7
CisgICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKKyAgICB2aWV3
LT5mb3JjZUxheW91dCgpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5
YTI5YzYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMp
IDIwMTAgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorICAgIENvcHlyaWdo
dCAoQykgMjAwOCwyMDA5LDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZp
Y2VzIEluYy4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLgorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYg
RHVtcFJlbmRlclRyZWVTdXBwb3J0X2gKKyNkZWZpbmUgRHVtcFJlbmRlclRyZWVTdXBwb3J0X2gK
KworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRdENvcmUvcXN0cmluZy5o
PgorCitjbGFzcyBRV2ViUGFnZTsKK2NsYXNzIFFXZWJGcmFtZTsKKworY2xhc3MgUVdFQktJVF9F
WFBPUlQgUURSVFN1cHBvcnQgeworCitwdWJsaWM6CisKKyAgICBRRFJUU3VwcG9ydCgpOworICAg
IH5RRFJUU3VwcG9ydCgpOworCisgICAgc3RhdGljIHZvaWQgY2xlYXJGcmFtZU5hbWUoUVdlYkZy
YW1lKiBxRnJhbWUpOworICAgIHN0YXRpYyBRU3RyaW5nIGNvdW50ZXJWYWx1ZUZvckVsZW1lbnRC
eUlkKFFXZWJGcmFtZSogcUZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCk7CisgICAgc3RhdGljIHZv
aWQgZW5hYmxlQ2FyZXRCcm93c2luZyhRV2ViUGFnZSogcGFnZSwgYm9vbCB2YWx1ZSk7CisgICAg
c3RhdGljIHZvaWQgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoUVdlYkZyYW1lKiBxRnJh
bWUsIGludCB3b3JsZElkLCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpOworICAgIHN0YXRpYyB2b2lk
IGV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0cmluZyYg
bmFtZSwgY29uc3QgUVN0cmluZyYgdmFsdWUpOworICAgIHN0YXRpYyBib29sIGlzQ29tbWFuZEVu
YWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG5hbWUpOworICAgIHN0YXRpYyB2
b2lkIGdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0KCk7CisgICAgc3RhdGljIHZvaWQgZ2FyYmFnZUNv
bGxlY3RvckNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpOworICAg
IHN0YXRpYyBib29sIGhhc0RvY3VtZW50RWxlbWVudChRV2ViRnJhbWUqIHFGcmFtZSk7CisgICAg
c3RhdGljIGludCBqYXZhU2NyaXB0T2JqZWN0c0NvdW50KCk7CisgICAgc3RhdGljIGludCBudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoUVdlYkZyYW1lKik7CisgICAgc3RhdGljIGludCBudW1iZXJP
ZlBhZ2VzKFFXZWJGcmFtZSogcUZyYW1lLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKKyAg
ICBzdGF0aWMgdm9pZCBvdmVyd3JpdGVQbHVnaW5EaXJlY3RvcmllcygpOworICAgIHN0YXRpYyBp
bnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFFXZWJGcmFtZSogcUZyYW1lLCBjb25zdCBRU3Ry
aW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CisgICAgc3RhdGljIGJvb2wgcGF1
c2VBbmltYXRpb24oUVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYgbmFtZSwgZG91YmxlIHRpbWUs
IGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CisgICAgc3RhdGljIGJvb2wgcGF1c2VUcmFuc2l0
aW9uT2ZQcm9wZXJ0eShRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBkb3VibGUgdGlt
ZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKKyAgICBzdGF0aWMgYm9vbCBwYXVzZVNWR0Fu
aW1hdGlvbihRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBhbmltYXRpb25JZCwgZG91YmxlIHRp
bWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CisgICAgc3RhdGljIHZvaWQgcmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CisgICAgc3RhdGljIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0cyhRV2ViRnJhbWUqIHFGcmFtZSk7CisgICAgc3RhdGljIHZvaWQgcnVuKGJvb2wgYik7Cisg
ICAgc3RhdGljIHZvaWQgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShi
b29sIGZvcmJpZGRlbiwgY29uc3QgUVN0cmluZyYgc2NoZW1lKTsKKyAgICBzdGF0aWMgdm9pZCBz
ZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKFFXZWJQYWdlKiwgYm9vbCk7CisgICAgc3RhdGljIHZv
aWQgc2V0TWVkaWFUeXBlKFFXZWJGcmFtZSogcWZyYW1lLCBjb25zdCBRU3RyaW5nJiB0eXBlKTsK
KyAgICBzdGF0aWMgdm9pZCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChRV2ViRnJhbWUq
LCBib29sIGVuYWJsZWQpOworICAgIHN0YXRpYyB2b2lkIHNldFRpbWVsaW5lUHJvZmlsaW5nRW5h
YmxlZChRV2ViUGFnZSosIGJvb2wgZW5hYmxlZCk7CisgICAgc3RhdGljIHZvaWQgc2V0Vmlld01v
ZGUoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lk
IHN1c3BlbmRBY3RpdmVET01PYmplY3RzKFFXZWJGcmFtZSogcUZyYW1lKTsKKyAgICBzdGF0aWMg
dm9pZCB3ZWJJbnNwZWN0b3JFeGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBwYWdlLCBsb25nIGNhbGxJ
ZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKKyAgICBzdGF0aWMgdm9pZCB3ZWJJbnNwZWN0b3JT
aG93KFFXZWJQYWdlKiBwYWdlKTsKKyAgICBzdGF0aWMgdm9pZCB3ZWJJbnNwZWN0b3JDbG9zZShR
V2ViUGFnZSogcGFnZSk7CisgICAgc3RhdGljIFFTdHJpbmcgd2ViUGFnZUdyb3VwTmFtZShRV2Vi
UGFnZSAqcGFnZSk7CisgICAgc3RhdGljIHZvaWQgd2ViUGFnZVNldEdyb3VwTmFtZShRV2ViUGFn
ZSogcGFnZSwgY29uc3QgUVN0cmluZyYgZ3JvdXBOYW1lKTsKKyAgICBzdGF0aWMgdm9pZCB3aGl0
ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3Qg
UVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25I
b3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBzdGF0aWMgaW50IHdv
cmtlclRocmVhZENvdW50KCk7CisKKyAgICBib29sIGRydFJ1bjsKK307CisKKyNlbmRpZgorCmRp
ZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwIGIv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAppbmRleCA1ZWMzYTE4
Li5iYjRhYjYxIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFZGl0
b3JDbGllbnRRdC5oIgogCisjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgiCisKICNp
bmNsdWRlICJxd2VicGFnZS5oIgogI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKIApkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmggYi9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAppbmRleCA0MmE0MDJmLi5kNmMyNDhkIDEw
MDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAorKysg
Yi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaApAQCAtNTQsNyArNTQs
NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgp
OwogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKICAgICB2aXJ0dWFs
IGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpOwotICAgIAogICAgIHZpcnR1YWwgYm9vbCBz
ZWxlY3RXb3JkQmVmb3JlTWVudUV2ZW50KCk7CiAgICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUo
KTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5j
cHAgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcAppbmRleCA0NDI1
YmFjLi5jODRmMDE5IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3
ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNw
cApAQCAtMjAsNiArMjAsNyBAQAogKi8KIAogI2luY2x1ZGUgIi4uL3V0aWwuaCIKKyNpbmNsdWRl
ICIuLi9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaCIKICNpbmNsdWRlIDxR
RGlyPgogI2luY2x1ZGUgPFFHcmFwaGljc1dpZGdldD4KICNpbmNsdWRlIDxRTGluZUVkaXQ+CkBA
IC03MjIsMTAgKzcyMyw2IEBAIHZvaWQgdHN0X1FXZWJQYWdlOjpjcmVhdGVWaWV3bGVzc1BsdWdp
bigpCiAKIH0KIAotLy8gaW1wb3J0IHByaXZhdGUgQVBJCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0
X3dlYnBhZ2Vfc2V0R3JvdXBOYW1lKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBncm91
cE5hbWUpOwotUVN0cmluZyBRV0VCS0lUX0VYUE9SVCBxdF93ZWJwYWdlX2dyb3VwTmFtZShRV2Vi
UGFnZSogcGFnZSk7Ci0KIHZvaWQgdHN0X1FXZWJQYWdlOjptdWx0aXBsZVBhZ2VHcm91cHNBbmRM
b2NhbFN0b3JhZ2UoKQogewogICAgIFFEaXIgZGlyKFFEaXI6OmN1cnJlbnRQYXRoKCkpOwpAQCAt
NzM3LDEyICs3MzQsMTIgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6Om11bHRpcGxlUGFnZUdyb3Vwc0Fu
ZExvY2FsU3RvcmFnZSgpCiAKICAgICB2aWV3MS5wYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJp
YnV0ZShRV2ViU2V0dGluZ3M6OkxvY2FsU3RvcmFnZUVuYWJsZWQsIHRydWUpOwogICAgIHZpZXcx
LnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0TG9jYWxTdG9yYWdlUGF0aChRRGlyOjp0b05hdGl2ZVNl
cGFyYXRvcnMoUURpcjo6Y3VycmVudFBhdGgoKSArICIvcGF0aDEiKSk7Ci0gICAgcXRfd2VicGFn
ZV9zZXRHcm91cE5hbWUodmlldzEucGFnZSgpLCAiZ3JvdXAxIik7CisgICAgUURSVFN1cHBvcnQ6
OndlYlBhZ2VTZXRHcm91cE5hbWUodmlldzEucGFnZSgpLCAiZ3JvdXAxIik7CiAgICAgdmlldzIu
cGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpMb2NhbFN0b3Jh
Z2VFbmFibGVkLCB0cnVlKTsgICAgCiAgICAgdmlldzIucGFnZSgpLT5zZXR0aW5ncygpLT5zZXRM
b2NhbFN0b3JhZ2VQYXRoKFFEaXI6OnRvTmF0aXZlU2VwYXJhdG9ycyhRRGlyOjpjdXJyZW50UGF0
aCgpICsgIi9wYXRoMiIpKTsKLSAgICBxdF93ZWJwYWdlX3NldEdyb3VwTmFtZSh2aWV3Mi5wYWdl
KCksICJncm91cDIiKTsKLSAgICBRQ09NUEFSRShxdF93ZWJwYWdlX2dyb3VwTmFtZSh2aWV3MS5w
YWdlKCkpLCBRU3RyaW5nKCJncm91cDEiKSk7Ci0gICAgUUNPTVBBUkUocXRfd2VicGFnZV9ncm91
cE5hbWUodmlldzIucGFnZSgpKSwgUVN0cmluZygiZ3JvdXAyIikpOworICAgIFFEUlRTdXBwb3J0
Ojp3ZWJQYWdlU2V0R3JvdXBOYW1lKHZpZXcyLnBhZ2UoKSwgImdyb3VwMiIpOworICAgIFFDT01Q
QVJFKFFEUlRTdXBwb3J0Ojp3ZWJQYWdlR3JvdXBOYW1lKHZpZXcxLnBhZ2UoKSksIFFTdHJpbmco
Imdyb3VwMSIpKTsKKyAgICBRQ09NUEFSRShRRFJUU3VwcG9ydDo6d2ViUGFnZUdyb3VwTmFtZSh2
aWV3Mi5wYWdlKCkpLCBRU3RyaW5nKCJncm91cDIiKSk7CiAKIAogICAgIHZpZXcxLnNldEh0bWwo
UVN0cmluZygiPGh0bWw+PGJvZHk+IDwvYm9keT48L2h0bWw+IiksIFFVcmwoImh0dHA6Ly93d3cu
bXlleGFtcGxlLmNvbSIpKTsKQEAgLTE0NzksOSArMTQ3Niw2IEBAIHZvaWQgdHN0X1FXZWJQYWdl
OjppbnB1dE1ldGhvZHMoKQogICAgIGRlbGV0ZSBjb250YWluZXI7CiB9CiAKLS8vIGltcG9ydCBh
IGxpdHRsZSBEUlQgaGVscGVyIGZ1bmN0aW9uIHRvIHRyaWdnZXIgdGhlIGdhcmJhZ2UgY29sbGVj
dG9yCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3Qo
KTsKLQogdm9pZCB0c3RfUVdlYlBhZ2U6OnByb3RlY3RCaW5kaW5nc1J1bnRpbWVPYmplY3RzRnJv
bUNvbGxlY3RvcigpCiB7CiAgICAgUVNpZ25hbFNweSBsb2FkU3B5KG1fdmlldywgU0lHTkFMKGxv
YWRGaW5pc2hlZChib29sKSkpOwpAQCAtMTQ5OCw3ICsxNDkyLDcgQEAgdm9pZCB0c3RfUVdlYlBh
Z2U6OnByb3RlY3RCaW5kaW5nc1J1bnRpbWVPYmplY3RzRnJvbUNvbGxlY3RvcigpCiAKICAgICBu
ZXdQYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ0ZXN0bWUoJ2ZvbycpIik7
CiAKLSAgICBxdF9kcnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0KCk7CisgICAgUURSVFN1cHBv
cnQ6OmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0KCk7CiAKICAgICAvLyBkb24ndCBjcmFzaCEKICAg
ICBuZXdQYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ0ZXN0bWUoJ2Jhcicp
Iik7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFu
Z2VMb2cKaW5kZXggMjM5YjFkNi4uY2YxNjY4MCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEw
LTA0LTAyICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBRdCBEUlQgc3VwcG9y
dCBpbiBRdFdlYktpdAorCisgICAgICAgIFVwZGF0ZSBEUlQgdG8gdXNlIG5ldyBRRFJUU3VwcG9y
dCBjbGFzcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzU4NDQKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRl
QmVmb3JlVGVzdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6ZHVtcEZy
YW1lc0FzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVR
dC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmNwcDoKKyAg
ICAgICAgKEdDQ29udHJvbGxlcjo6Y29sbGVjdCk6CisgICAgICAgIChHQ0NvbnRyb2xsZXI6OmNv
bGxlY3RPbkFsdGVybmF0ZVRocmVhZCk6CisgICAgICAgIChHQ0NvbnRyb2xsZXI6OmdldEpTT2Jq
ZWN0Q291bnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0Lmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5
SWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1lZGlhVHlwZSk6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xvc2VXZWJJbnNwZWN0b3IpOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3IpOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IpOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQpOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQpOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVt
ZW50V2l0aElkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYXVzZVRyYW5zaXRp
b25BdFRpbWVPbkVsZW1lbnRXaXRoSWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUpOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbik6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hl
bWUpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OndvcmtlclRocmVhZENvdW50KToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQp
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKwogMjAxMC0w
NC0wMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCmluZGV4IDA3MjVjYWYuLjE3NGM0NmIgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQu
Y3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQu
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJE
dW1wUmVuZGVyVHJlZVF0LmgiCisjaW5jbHVkZSAiLi4vLi4vLi4vV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIgogI2luY2x1ZGUgIkV2ZW50U2VuZGVyUXQu
aCIKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXJRdC5oIgogI2luY2x1ZGUgIkxheW91dFRlc3RDb250
cm9sbGVyUXQuaCIKQEAgLTc3LDEzICs3OCw4IEBACiAKICNpbmNsdWRlIDxxZGVidWcuaD4KIAot
ZXh0ZXJuIHZvaWQgcXRfZHJ0X3J1bihib29sIGIpOwogZXh0ZXJuIHZvaWQgcXRfZHVtcF9zZXRf
YWNjZXB0c19lZGl0aW5nKGJvb2wgYik7CiBleHRlcm4gdm9pZCBxdF9kdW1wX2ZyYW1lX2xvYWRl
cihib29sIGIpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X2NsZWFyRnJhbWVOYW1lKFFXZWJGcmFtZSog
cUZyYW1lKTsKLWV4dGVybiB2b2lkIHF0X2RydF9vdmVyd3JpdGVQbHVnaW5EaXJlY3Rvcmllcygp
OwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3Jlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwotZXh0
ZXJuIGJvb2wgcXRfZHJ0X2hhc0RvY3VtZW50RWxlbWVudChRV2ViRnJhbWUqIHFGcmFtZSk7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzM5LDcgKzMzNSw3IEBAIER1bXBSZW5kZXJUcmVl
OjpEdW1wUmVuZGVyVHJlZSgpCiAgICAgLCBtX2VuYWJsZVRleHRPdXRwdXQoZmFsc2UpCiAgICAg
LCBtX3NpbmdsZUZpbGVNb2RlKGZhbHNlKQogewotICAgIHF0X2RydF9vdmVyd3JpdGVQbHVnaW5E
aXJlY3RvcmllcygpOworICAgIFFEUlRTdXBwb3J0OjpvdmVyd3JpdGVQbHVnaW5EaXJlY3Rvcmll
cygpOwogICAgIFFXZWJTZXR0aW5nczo6ZW5hYmxlUGVyc2lzdGVudFN0b3JhZ2UoKTsKIAogICAg
IC8vIGNyZWF0ZSBvdXIgcHJpbWFyeSB0ZXN0aW5nIHBhZ2Uvdmlldy4KQEAgLTM4Niw3ICszODIs
NyBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUoKQogICAgICAgICAgICAgdGhpcywg
U0xPVChzdGF0dXNCYXJNZXNzYWdlKGNvbnN0IFFTdHJpbmcmKSkpOwogCiAgICAgUU9iamVjdDo6
Y29ubmVjdCh0aGlzLCBTSUdOQUwocXVpdCgpKSwgcUFwcCwgU0xPVChxdWl0KCkpLCBRdDo6UXVl
dWVkQ29ubmVjdGlvbik7Ci0gICAgcXRfZHJ0X3J1bih0cnVlKTsKKyAgICBRRFJUU3VwcG9ydDo6
cnVuKHRydWUpOwogICAgIFFGb2N1c0V2ZW50IGV2ZW50KFFFdmVudDo6Rm9jdXNJbiwgUXQ6OkFj
dGl2ZVdpbmRvd0ZvY3VzUmVhc29uKTsKICAgICBRQXBwbGljYXRpb246OnNlbmRFdmVudChtX21h
aW5WaWV3LCAmZXZlbnQpOwogfQpAQCAtNDM5LDEyICs0MzUsMTIgQEAgdm9pZCBEdW1wUmVuZGVy
VHJlZTo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKQogICAgIG1fcGFnZS0+
dW5kb1N0YWNrKCktPmNsZWFyKCk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+c2V0Wm9vbUZh
Y3RvcigxLjApOwogICAgIGNsZWFySGlzdG9yeShtX3BhZ2UpOwotICAgIHF0X2RydF9jbGVhckZy
YW1lTmFtZShtX3BhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBRRFJUU3VwcG9ydDo6Y2xlYXJGcmFt
ZU5hbWUobV9wYWdlLT5tYWluRnJhbWUoKSk7CiAKICAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5j
bGVhcigpOwogICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnNldEZyb3plbihmYWxzZSk7CiAKLSAg
ICBxdF9kcnRfcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CisgICAgUURSVFN1cHBvcnQ6
OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwogCiAgICAgUUxvY2FsZTo6c2V0RGVmYXVs
dChRTG9jYWxlOjpjKCkpOwogICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKQEAgLTYwNSw3ICs2
MDEsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpoaWRlUGFnZSgpCiAKIFFTdHJpbmcgRHVtcFJl
bmRlclRyZWU6OmR1bXBGcmFtZXNBc1RleHQoUVdlYkZyYW1lKiBmcmFtZSkKIHsKLSAgICBpZiAo
IWZyYW1lIHx8ICFxdF9kcnRfaGFzRG9jdW1lbnRFbGVtZW50KGZyYW1lKSkKKyAgICBpZiAoIWZy
YW1lIHx8ICFRRFJUU3VwcG9ydDo6aGFzRG9jdW1lbnRFbGVtZW50KGZyYW1lKSkKICAgICAgICAg
cmV0dXJuIFFTdHJpbmcoKTsKIAogICAgIFFTdHJpbmcgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oCmluZGV4IDdhMjg1OGEuLmQ5
NTMzYjEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5k
ZXJUcmVlUXQuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVy
VHJlZVF0LmgKQEAgLTUzLDYgKzUzLDcgQEAgUVRfRU5EX05BTUVTUEFDRQogY2xhc3MgUVdlYkZy
YW1lOwogCiBjbGFzcyBMYXlvdXRUZXN0Q29udHJvbGxlcjsKK2NsYXNzIFFEUlRTdXBwb3J0Owog
Y2xhc3MgRXZlbnRTZW5kZXI7CiBjbGFzcyBUZXh0SW5wdXRDb250cm9sbGVyOwogY2xhc3MgR0ND
b250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0ND
b250cm9sbGVyUXQuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9s
bGVyUXQuY3BwCmluZGV4IDljYzNhYTcuLjNlODkwZGYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmNwcAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5jcHAKQEAgLTI5LDE0ICsyOSwxMCBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyUXQuaCIKKyNpbmNs
dWRlICIuLi8uLi8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0LmgiCiAKICNpbmNsdWRlIDxxd2VicGFnZS5oPgogCi1leHRlcm4gaW50IHF0X2RydF9qYXZh
U2NyaXB0T2JqZWN0c0NvdW50KCk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfZ2FyYmFnZUNvbGxlY3Rv
cl9jb2xsZWN0KCk7Ci0KLWV4dGVybiB2b2lkIHF0X2RydF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxl
Y3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpOwotCiBHQ0NvbnRyb2xsZXI6
OkdDQ29udHJvbGxlcihRV2ViUGFnZSogcGFyZW50KQogICAgIDogUU9iamVjdChwYXJlbnQpCiB7
CkBAIC00NCwxNSArNDAsMTUgQEAgR0NDb250cm9sbGVyOjpHQ0NvbnRyb2xsZXIoUVdlYlBhZ2Uq
IHBhcmVudCkKIAogdm9pZCBHQ0NvbnRyb2xsZXI6OmNvbGxlY3QoKSBjb25zdAogewotICAgIHF0
X2RydF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3QoKTsKKyAgICBRRFJUU3VwcG9ydDo6Z2FyYmFn
ZUNvbGxlY3RvckNvbGxlY3QoKTsKIH0KIAogdm9pZCBHQ0NvbnRyb2xsZXI6OmNvbGxlY3RPbkFs
dGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpIGNvbnN0CiB7Ci0gICAgcXRfZHJ0X2dh
cmJhZ2VDb2xsZWN0b3JfY29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKHdhaXRVbnRpbERvbmUpOwor
ICAgIFFEUlRTdXBwb3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFk
KHdhaXRVbnRpbERvbmUpOwogfQogCiBzaXplX3QgR0NDb250cm9sbGVyOjpnZXRKU09iamVjdENv
dW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcXRfZHJ0X2phdmFTY3JpcHRPYmplY3RzQ291bnQo
KTsKKyAgICByZXR1cm4gUURSVFN1cHBvcnQ6OmphdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0
LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5oCmluZGV4
IDhmNWI0MzIuLjEyNzk3ZjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0dDQ29udHJvbGxlclF0LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
R0NDb250cm9sbGVyUXQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPFFPYmplY3Q+CiAK
IGNsYXNzIFFXZWJQYWdlOworY2xhc3MgUURSVFN1cHBvcnQ7CiAKIGNsYXNzIEdDQ29udHJvbGxl
ciA6IHB1YmxpYyBRT2JqZWN0CiB7CkBAIC00Myw2ICs0NCw3IEBAIHB1YmxpYyBzbG90czoKICAg
ICB2b2lkIGNvbGxlY3QoKSBjb25zdDsKICAgICB2b2lkIGNvbGxlY3RPbkFsdGVybmF0ZVRocmVh
ZChib29sIHdhaXRVbnRpbERvbmUpIGNvbnN0OwogICAgIHNpemVfdCBnZXRKU09iamVjdENvdW50
KCkgY29uc3Q7CisKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCBiNjQ4MGMyLi5l
NWNhOTE1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogICovCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIgorI2luY2x1
ZGUgIi4uLy4uLy4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnQuaCIKIAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlUXQuaCIKICNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKQEAgLTM2LDI5ICszNyw5IEBACiAjaW5jbHVkZSA8UUxvY2FsZT4KICNpbmNsdWRlIDxx
d2Vic2V0dGluZ3MuaD4KIAotZXh0ZXJuIHZvaWQgcXRfd3J0X3NldFZpZXdNb2RlKFFXZWJQYWdl
KiwgY29uc3QgUVN0cmluZyYgbW9kZSk7CiBleHRlcm4gdm9pZCBxdF9kdW1wX2VkaXRpbmdfY2Fs
bGJhY2tzKGJvb2wgYik7CiBleHRlcm4gdm9pZCBxdF9kdW1wX2ZyYW1lX2xvYWRlcihib29sIGIp
OwogZXh0ZXJuIHZvaWQgcXRfZHVtcF9yZXNvdXJjZV9sb2FkX2NhbGxiYWNrcyhib29sIGIpOwot
ZXh0ZXJuIHZvaWQgcXRfZHJ0X3NldE1lZGlhVHlwZShRV2ViRnJhbWUqIHFmcmFtZSwgY29uc3Qg
UVN0cmluZyYgdHlwZSk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfc2V0RnJhbWVGbGF0dGVuaW5nRW5h
YmxlZChRV2ViUGFnZSosIGJvb2wpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3NldEphdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkKFFXZWJGcmFtZSosIGJvb2wgZW5hYmxlZCk7Ci1leHRlcm4gdm9pZCBx
dF9kcnRfc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKFFXZWJQYWdlKiwgYm9vbCBlbmFibGVk
KTsKLWV4dGVybiBib29sIHF0X2RydF9wYXVzZUFuaW1hdGlvbihRV2ViRnJhbWUqLCBjb25zdCBR
U3RyaW5nJiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKLWV4
dGVybiBib29sIHF0X2RydF9wYXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KFFXZWJGcmFtZSosIGNv
bnN0IFFTdHJpbmcmIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQp
OwotZXh0ZXJuIGJvb2wgcXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFtZSosIGNvbnN0
IFFTdHJpbmcmIGFuaW1hdGlvbklkLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVu
dElkKTsKLWV4dGVybiBpbnQgcXRfZHJ0X251bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhRV2ViRnJh
bWUqKTsKLWV4dGVybiB2b2lkIHF0X2RydF9zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9y
VVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpOwotCi1leHRl
cm4gdm9pZCBxdF9kcnRfd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBz
b3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFT
dHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7
Ci1leHRlcm4gUVN0cmluZyBxdF9kcnRfY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoUVdlYkZy
YW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJpbmcmIGlkKTsKLWV4dGVybiBpbnQgcXRfZHJ0X3dvcmtl
clRocmVhZENvdW50KCk7Ci1leHRlcm4gaW50IHF0X2RydF9wYWdlTnVtYmVyRm9yRWxlbWVudEJ5
SWQoUVdlYkZyYW1lKiBxRnJhbWUsIGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0KTsKLWV4dGVybiBpbnQgcXRfZHJ0X251bWJlck9mUGFnZXMoUVdlYkZyYW1lKiBx
RnJhbWUsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3dl
Ymluc3BlY3Rvcl9leGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBwYWdlLCBsb25nIGNhbGxJZCwgY29u
c3QgUVN0cmluZyYgc2NyaXB0KTsKLWV4dGVybiB2b2lkIHF0X2RydF93ZWJpbnNwZWN0b3Jfc2hv
dyhRV2ViUGFnZSAqcGFnZSk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfd2ViaW5zcGVjdG9yX2Nsb3Nl
KFFXZWJQYWdlICpwYWdlKTsKLWV4dGVybiB2b2lkIHF0X2RydF9lbmFibGVDYXJldEJyb3dzaW5n
KFFXZWJQYWdlKiBwYWdlLCBib29sIHZhbHVlKTsKIAogTGF5b3V0VGVzdENvbnRyb2xsZXI6Okxh
eW91dFRlc3RDb250cm9sbGVyKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlKiBkcnQpCiAgICAgOiBR
T2JqZWN0KCkKQEAgLTE0NCwxMiArMTI1LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OndhaXRVbnRpbERvbmUoKQogCiBRU3RyaW5nIExheW91dFRlc3RDb250cm9sbGVyOjpjb3VudGVy
VmFsdWVGb3JFbGVtZW50QnlJZChjb25zdCBRU3RyaW5nJiBpZCkKIHsKLSAgICByZXR1cm4gcXRf
ZHJ0X2NvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFt
ZSgpLCBpZCk7CisgICAgcmV0dXJuIFFEUlRTdXBwb3J0Ojpjb3VudGVyVmFsdWVGb3JFbGVtZW50
QnlJZChtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKSwgaWQpOwogfQogCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRWaWV3TW9kZU1lZGlhRmVhdHVyZShjb25zdCBRU3RyaW5nJiBt
b2RlKQogewotICAgIHF0X3dydF9zZXRWaWV3TW9kZShtX2RydC0+d2ViUGFnZSgpLCBtb2RlKTsK
KyAgICBRRFJUU3VwcG9ydDo6c2V0Vmlld01vZGUobV9kcnQtPndlYlBhZ2UoKSwgbW9kZSk7CiB9
CiAKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2ViSGlzdG9yeUl0ZW1Db3VudCgpCkBAIC0z
MDAsMTIgKzI4MSwxMyBAQCBRU3RyaW5nIExheW91dFRlc3RDb250cm9sbGVyOjpkZWNvZGVIb3N0
TmFtZShjb25zdCBRU3RyaW5nJiBob3N0KQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNZWRpYVR5cGUoY29uc3QgUVN0cmluZyYgdHlwZSkKIHsKLSAgICBxdF9kcnRfc2V0TWVkaWFU
eXBlKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpLCB0eXBlKTsKKyAgICBRRFJUU3VwcG9y
dDo6c2V0TWVkaWFUeXBlKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpLCB0eXBlKTsKIH0K
IAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xvc2VXZWJJbnNwZWN0b3IoKQogewotICAg
IHF0X2RydF93ZWJpbnNwZWN0b3JfY2xvc2UobV9kcnQtPndlYlBhZ2UoKSk7CisgICAgUURSVFN1
cHBvcnQ6OndlYkluc3BlY3RvckNsb3NlKG1fZHJ0LT53ZWJQYWdlKCkpOworICAgIG1fZHJ0LT53
ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkRldmVsb3Bl
ckV4dHJhc0VuYWJsZWQsIGZhbHNlKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC0zMTUsMTcgKzI5Nywx
OCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVk
KGJvb2wgZW5hYmxlZCkKIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvd1dlYkluc3Bl
Y3RvcigpCiB7Ci0gICAgcXRfZHJ0X3dlYmluc3BlY3Rvcl9zaG93KG1fZHJ0LT53ZWJQYWdlKCkp
OworICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0
dGluZ3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQsIHRydWUpOworICAgIFFEUlRTdXBwb3J0Ojp3
ZWJJbnNwZWN0b3JTaG93KG1fZHJ0LT53ZWJQYWdlKCkpOwogfQogCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElkLCBjb25zdCBRU3Ry
aW5nJiBzY3JpcHQpCiB7Ci0gICAgcXRfZHJ0X3dlYmluc3BlY3Rvcl9leGVjdXRlU2NyaXB0KG1f
ZHJ0LT53ZWJQYWdlKCksIGNhbGxJZCwgc2NyaXB0KTsKKyAgICBRRFJUU3VwcG9ydDo6d2ViSW5z
cGVjdG9yRXhlY3V0ZVNjcmlwdChtX2RydC0+d2ViUGFnZSgpLCBjYWxsSWQsIHNjcmlwdCk7CiB9
CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQo
Ym9vbCBlbmFibGVkKQogewotICAgIHF0X2RydF9zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKG1f
ZHJ0LT53ZWJQYWdlKCksIGVuYWJsZWQpOworICAgIFFEUlRTdXBwb3J0OjpzZXRGcmFtZUZsYXR0
ZW5pbmdFbmFibGVkKG1fZHJ0LT53ZWJQYWdlKCksIGVuYWJsZWQpOwogfQogCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhib29s
IGVuYWJsZWQpCkBAIC0zNDYsMTIgKzMyOSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wg
ZW5hYmxlKQogewogICAgIHNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZW5hYmxlKTsKLSAgICBx
dF9kcnRfc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQobV90b3BMb2FkaW5nRnJhbWUsIGVu
YWJsZSk7CisgICAgUURSVFN1cHBvcnQ6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKG1f
dG9wTG9hZGluZ0ZyYW1lLCBlbmFibGUpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGUpCiB7Ci0gICAgcXRfZHJ0
X3NldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChtX2RydC0+d2ViUGFnZSgpLCBlbmFibGUpOwor
ICAgIFFEUlRTdXBwb3J0OjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQobV9kcnQtPndlYlBh
Z2UoKSwgZW5hYmxlKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Rml4ZWRD
b250ZW50c1NpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQpAQCAtNDA2LDcgKzM4OSw3IEBAIGJv
b2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0
aElkKGNvbnN0IFFTdHJpbmcmIGFuCiB7CiAgICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fZHJ0LT53
ZWJQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIFFfQVNTRVJUKGZyYW1lKTsKLSAgICByZXR1cm4g
cXRfZHJ0X3BhdXNlQW5pbWF0aW9uKGZyYW1lLCBhbmltYXRpb25OYW1lLCB0aW1lLCBlbGVtZW50
SWQpOworICAgIHJldHVybiBRRFJUU3VwcG9ydDo6cGF1c2VBbmltYXRpb24oZnJhbWUsIGFuaW1h
dGlvbk5hbWUsIHRpbWUsIGVsZW1lbnRJZCk7CiB9CiAKIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBRU3RyaW5nJiBw
cm9wZXJ0eU5hbWUsCkBAIC00MTUsNyArMzk4LDcgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGNvbnN0IFFTdHJpbmcmIHAK
IHsKICAgICBRV2ViRnJhbWUqIGZyYW1lID0gbV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCk7
CiAgICAgUV9BU1NFUlQoZnJhbWUpOwotICAgIHJldHVybiBxdF9kcnRfcGF1c2VUcmFuc2l0aW9u
T2ZQcm9wZXJ0eShmcmFtZSwgcHJvcGVydHlOYW1lLCB0aW1lLCBlbGVtZW50SWQpOworICAgIHJl
dHVybiBRRFJUU3VwcG9ydDo6cGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eShmcmFtZSwgcHJvcGVy
dHlOYW1lLCB0aW1lLCBlbGVtZW50SWQpOwogfQogCiBib29sIExheW91dFRlc3RDb250cm9sbGVy
OjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKGNvbnN0IFFTdHJpbmcmIGFuaW1h
dGlvbklkLApAQCAtNDI0LDE0ICs0MDcsMTQgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZShjb25zdCBRU3RyaW5nJiBhbmkKIHsK
ICAgICBRV2ViRnJhbWUqIGZyYW1lID0gbV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAg
ICAgUV9BU1NFUlQoZnJhbWUpOwotICAgIHJldHVybiBxdF9kcnRfcGF1c2VTVkdBbmltYXRpb24o
ZnJhbWUsIGFuaW1hdGlvbklkLCB0aW1lLCBlbGVtZW50SWQpOworICAgIHJldHVybiBRRFJUU3Vw
cG9ydDo6cGF1c2VTVkdBbmltYXRpb24oZnJhbWUsIGFuaW1hdGlvbklkLCB0aW1lLCBlbGVtZW50
SWQpOwogfQogCiB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZBY3RpdmVB
bmltYXRpb25zKCkgY29uc3QKIHsKICAgICBRV2ViRnJhbWUqIGZyYW1lID0gbV9kcnQtPndlYlBh
Z2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgUV9BU1NFUlQoZnJhbWUpOwotICAgIHJldHVybiBxdF9k
cnRfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKGZyYW1lKTsKKyAgICByZXR1cm4gUURSVFN1cHBv
cnQ6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhmcmFtZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmRpc2FibGVJbWFnZUxvYWRpbmcoKQpAQCAtNDU5LDcgKzQ0Miw3IEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsRGF0YWJhc2VzKCkKIAogdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5n
JiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0
IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cykKIHsKLSAgICBxdF9kcnRfd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihzb3VyY2VPcmlnaW4s
IGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMpOworICAgIFFEUlRTdXBwb3J0Ojp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKHNv
dXJjZU9yaWdpbiwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rl
c3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Ondh
aXRGb3JQb2xpY3lEZWxlZ2F0ZSgpCkBAIC00OTgsNyArNDgxLDcgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBRU3RyaW5nJiB1cmwp
CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJv
b2wgdmFsdWUpCiB7Ci0gICAgcXRfZHJ0X2VuYWJsZUNhcmV0QnJvd3NpbmcobV9kcnQtPndlYlBh
Z2UoKSwgdmFsdWUpOworICAgIFFEUlRTdXBwb3J0OjplbmFibGVDYXJldEJyb3dzaW5nKG1fZHJ0
LT53ZWJQYWdlKCksIHZhbHVlKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTUxMSwxMiArNDk0LDEyIEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChib29s
IGVuYWJsZWQpCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERvbWFpblJlbGF4YXRp
b25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNj
aGVtZSkKIHsKLSAgICBxdF9kcnRfc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNj
aGVtZShmb3JiaWRkZW4sIHNjaGVtZSk7CisgICAgUURSVFN1cHBvcnQ6OnNldERvbWFpblJlbGF4
YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlkZGVuLCBzY2hlbWUpOwogfQogCiBpbnQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OndvcmtlclRocmVhZENvdW50KCkKIHsKLSAgICByZXR1cm4g
cXRfZHJ0X3dvcmtlclRocmVhZENvdW50KCk7CisgICAgcmV0dXJuIFFEUlRTdXBwb3J0Ojp3b3Jr
ZXJUaHJlYWRDb3VudCgpOwogfQogCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1i
ZXJGb3JFbGVtZW50QnlJZChjb25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhl
aWdodCkKQEAgLTUyNywxMiArNTEwLDEyIEBAIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkKGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0CiAgICAg
ICAgIGhlaWdodCA9IG1fZHJ0LT53ZWJQYWdlKCktPnZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpOwog
ICAgIH0KIAotICAgIHJldHVybiBxdF9kcnRfcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKG1fZHJ0
LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpLCBpZCwgd2lkdGgsIGhlaWdodCk7CisgICAgcmV0dXJu
IFFEUlRTdXBwb3J0OjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQobV9kcnQtPndlYlBhZ2UoKS0+
bWFpbkZyYW1lKCksIGlkLCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogaW50IExheW91dFRlc3RDb250
cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCiB7Ci0gICAg
cmV0dXJuIHF0X2RydF9udW1iZXJPZlBhZ2VzKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgp
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICByZXR1cm4gUURSVFN1cHBvcnQ6Om51bWJlck9mUGFnZXMo
bV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIHdpZHRoLCBoZWlnaHQpOwogfQogCiBib29s
IExheW91dFRlc3RDb250cm9sbGVyOjpjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcoKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5oCmluZGV4IDM2YjVmNzAuLmRmZjZhNGMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKQEAgLTQ2LDYgKzQ2LDcg
QEAKICNpbmNsdWRlIDxxd2Vic2VjdXJpdHlvcmlnaW4uaD4KIAogY2xhc3MgUVdlYkZyYW1lOwor
Y2xhc3MgUURSVFN1cHBvcnQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRHVtcFJl
bmRlclRyZWU7CiB9Ci0tIAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="35886"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53050</attachid>
            <date>2010-04-10 12:43:50 -0700</date>
            <delta_ts>2010-04-10 18:35:11 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>0001-Refactor-Qt-DRT-support-in-QtWebKit.patch</filename>
            <type>text/plain</type>
            <size>53908</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSBmYzU1ZmM2NTdlMTcxNjc4YzY3MGMzZDM4Y2I0MzIwMTI4MjJmZDE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDE1IE1hciAyMDEwIDIyOjQ5OjI5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gUmVmYWN0
b3IgUXQgRFJUIHN1cHBvcnQgaW4gUXRXZWJLaXQKCk1vdmUgYWxsIFFUIERSVCBzdXBwb3J0IGZ1
bmN0aW9ucyB0byBhIHN0YXRpYyBjbGFzcy4KCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNTg0NAotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMCArCiBXZWJDb3JlL1dlYkNvcmUucHJvICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3Bw
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTg4IC0tLS0tLS0tLS0tCiBXZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZS5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDg4IC0tLS0tCiBX
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEg
KwogV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwICAgICAgICAgICAgICAgfCAg
IDE1IC0KIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICA1NyArKysrCiAuLi4vcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuY3BwICB8ICAzNTMgKysrKysrKysrKysrKysrKysrKysKIFdlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oIHwgICA4MiArKysrKwogV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmggICAgICAgICAgfCAgICAxIC0KIFdlYktpdC9x
dC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwICAgICAgICAgIHwgICAxNyArLQogV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQyICsr
KwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHAgfCAg
IDE3ICstCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0Lmgg
ICB8ICAgIDEgKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQu
Y3BwICAgfCAgIDEyICstCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xs
ZXJRdC5oICAgICB8ICAgIDIgKwogLi4uL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuY3BwICAgfCAgIDYxICsrLS0tCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5oICAgICB8ICAgIDEgKwogMTkgZmlsZXMgY2hhbmdlZCwgNTkxIGlu
c2VydGlvbnMoKyksIDM2MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
LmgKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDk0OGE1M2UuLmM0MTQxZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDQtMTAgIFJvYmVydCBI
b2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIFF0IERSVCBzdXBwb3J0IGluIFF0V2ViS2l0CisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0CisK
KyAgICAgICAgKiBXZWJDb3JlLnBybzogQWRkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAor
CiAyMDEwLTA0LTEwICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGU5
ZGUzOTkuLjc5ODgyNzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwpAQCAtMjExNSw2ICsyMTE1LDcgQEAgU09VUkNFUyArPSBcCiAgICAg
Li4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBcCiAgICAgLi4v
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwIFwKICAgICAu
Li9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcCBcCisgICAgLi4vV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcCBcCiAgICAg
Li4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcCBcCiAgICAgLi4v
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRDb21tYW5kUXQuY3BwIFwKICAgICAuLi9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgXApkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUu
Y3BwCmluZGV4IGNiOGJmYjkuLjFjYzc3ZGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdl
YmZyYW1lLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKQEAgLTg4LDE5MyAr
ODgsNiBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKIGV4dGVybiBRX0dVSV9FWFBPUlQgaW50IHF0X2Rl
ZmF1bHREcGkoKTsKIFFUX0VORF9OQU1FU1BBQ0UKIAotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9k
cnRfc2V0TWVkaWFUeXBlKFFXZWJGcmFtZSogcWZyYW1lLCBjb25zdCBRU3RyaW5nJiB0eXBlKQot
ewotICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZy
YW1lKTsKLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOwotICAg
IHZpZXctPnNldE1lZGlhVHlwZSh0eXBlKTsKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRl
U3R5bGVTZWxlY3RvcigpOwotICAgIHZpZXctPmZvcmNlTGF5b3V0KCk7Ci19Ci0KLWJvb2wgUVdF
QktJVF9FWFBPUlQgcXRfZHJ0X2hhc0RvY3VtZW50RWxlbWVudChRV2ViRnJhbWUqIHFmcmFtZSkK
LXsKLSAgICByZXR1cm4gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpLT5kb2N1bWVudCgp
LT5kb2N1bWVudEVsZW1lbnQoKTsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfc2V0
SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoUVdlYkZyYW1lKiBxZnJhbWUsIGJvb2wgZW5hYmxl
ZCkKLXsKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBGcmFtZSogZnJhbWUg
PSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFmcmFtZSk7Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxl
ciogY29udHJvbGxlciA9IGZyYW1lLT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAg
ICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoZW5hYmxlZCkKLSAg
ICAgICAgY29udHJvbGxlci0+ZW5hYmxlUHJvZmlsZXIoKTsKLSAgICBlbHNlCi0gICAgICAgIGNv
bnRyb2xsZXItPmRpc2FibGVQcm9maWxlcigpOwotI2VuZGlmCi19Ci0KLS8vIFBhdXNlIGEgZ2l2
ZW4gQ1NTIGFuaW1hdGlvbiBvciB0cmFuc2l0aW9uIG9uIHRoZSB0YXJnZXQgbm9kZSBhdCBhIHNw
ZWNpZmljIHRpbWUuCi0vLyBJZiB0aGUgYW5pbWF0aW9uIG9yIHRyYW5zaXRpb24gaXMgYWxyZWFk
eSBwYXVzZWQsIGl0IHdpbGwgdXBkYXRlIGl0cyBwYXVzZSB0aW1lLgotLy8gVGhpcyBtZXRob2Qg
aXMgb25seSBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0ZXN0aW5nIHRoZSBDU1MgYW5pbWF0aW9u
IGFuZCB0cmFuc2l0aW9uIHN5c3RlbS4KLWJvb2wgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNl
QW5pbWF0aW9uKFFXZWJGcmFtZSAqcWZyYW1lLCBjb25zdCBRU3RyaW5nICZhbmltYXRpb25OYW1l
LCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVudElkKQotewotICAgIEZyYW1lKiBm
cmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKLSAgICBpZiAoIWZyYW1lKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9s
bGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOwotICAgIGlmICghY29udHJvbGxlcikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOwot
ICAgIFFfQVNTRVJUKGRvYyk7Ci0KLSAgICBOb2RlKiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVu
dEJ5SWQoZWxlbWVudElkKTsKLSAgICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+cmVuZGVy
ZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGNvbnRyb2xsZXItPnBh
dXNlQW5pbWF0aW9uQXRUaW1lKGNvcmVOb2RlLT5yZW5kZXJlcigpLCBhbmltYXRpb25OYW1lLCB0
aW1lKTsKLX0KLQotYm9vbCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfcGF1c2VUcmFuc2l0aW9uT2ZQ
cm9wZXJ0eShRV2ViRnJhbWUgKnFmcmFtZSwgY29uc3QgUVN0cmluZyAmcHJvcGVydHlOYW1lLCBk
b3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVudElkKQotewotICAgIEZyYW1lKiBmcmFt
ZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocWZyYW1lKTsKLSAgICBpZiAoIWZyYW1lKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVy
ID0gZnJhbWUtPmFuaW1hdGlvbigpOwotICAgIGlmICghY29udHJvbGxlcikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOwotICAg
IFFfQVNTRVJUKGRvYyk7Ci0KLSAgICBOb2RlKiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5
SWQoZWxlbWVudElkKTsKLSAgICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+cmVuZGVyZXIo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGNvbnRyb2xsZXItPnBhdXNl
VHJhbnNpdGlvbkF0VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwgcHJvcGVydHlOYW1lLCB0aW1l
KTsKLX0KLQotLy8gUGF1c2UgYSBnaXZlbiBTVkcgYW5pbWF0aW9uIG9uIHRoZSB0YXJnZXQgbm9k
ZSBhdCBhIHNwZWNpZmljIHRpbWUuCi0vLyBUaGlzIG1ldGhvZCBpcyBvbmx5IGludGVuZGVkIHRv
IGJlIHVzZWQgZm9yIHRlc3RpbmcgdGhlIFNWRyBhbmltYXRpb24gc3lzdGVtLgotYm9vbCBRV0VC
S0lUX0VYUE9SVCBxdF9kcnRfcGF1c2VTVkdBbmltYXRpb24oUVdlYkZyYW1lICpxZnJhbWUsIGNv
bnN0IFFTdHJpbmcgJmFuaW1hdGlvbklkLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxl
bWVudElkKQotewotI2lmICFFTkFCTEUoU1ZHKQotICAgIHJldHVybiBmYWxzZTsKLSNlbHNlCi0g
ICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOwotICAgIGlm
ICghZnJhbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIERvY3VtZW50KiBkb2MgPSBm
cmFtZS0+ZG9jdW1lbnQoKTsKLSAgICBRX0FTU0VSVChkb2MpOwotCi0gICAgaWYgKCFkb2MtPnN2
Z0V4dGVuc2lvbnMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgTm9kZSogY29yZU5v
ZGUgPSBkb2MtPmdldEVsZW1lbnRCeUlkKGFuaW1hdGlvbklkKTsKLSAgICBpZiAoIWNvcmVOb2Rl
IHx8ICFTVkdTTUlMRWxlbWVudDo6aXNTTUlMRWxlbWVudChjb3JlTm9kZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBkb2MtPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+c2Ft
cGxlQW5pbWF0aW9uQXRUaW1lKGVsZW1lbnRJZCwgc3RhdGljX2Nhc3Q8U1ZHU01JTEVsZW1lbnQq
Pihjb3JlTm9kZSksIHRpbWUpOwotI2VuZGlmCi19Ci0KLS8vIFJldHVybnMgdGhlIHRvdGFsIG51
bWJlciBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb25zIChpbmNsdWRlcyBib3RoIENTUyB0
cmFuc2l0aW9ucyBhbmQgQ1NTIGFuaW1hdGlvbnMpLgotaW50IFFXRUJLSVRfRVhQT1JUIHF0X2Ry
dF9udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoUVdlYkZyYW1lICpxZnJhbWUpCi17Ci0gICAgRnJh
bWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxZnJhbWUpOwotICAgIGlmICghZnJh
bWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7Ci0gICAgaWYgKCFjb250cm9sbGVyKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gY29udHJvbGxlci0+bnVtYmVyT2ZBY3Rp
dmVBbmltYXRpb25zKCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X2NsZWFyRnJh
bWVOYW1lKFFXZWJGcmFtZSogcUZyYW1lKQotewotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFt
ZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKLSAgICBmcmFtZS0+dHJlZSgpLT5jbGVhck5hbWUoKTsK
LX0KLQotaW50IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9qYXZhU2NyaXB0T2JqZWN0c0NvdW50KCkK
LXsKLSAgICByZXR1cm4gSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVh
cC5nbG9iYWxPYmplY3RDb3VudCgpOwotfQotCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9n
YXJiYWdlQ29sbGVjdG9yX2NvbGxlY3QoKQotewotICAgIGdjQ29udHJvbGxlcigpLmdhcmJhZ2VD
b2xsZWN0Tm93KCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X2dhcmJhZ2VDb2xs
ZWN0b3JfY29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSkKLXsKLSAg
ICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdlQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkRm9yRGVidWdn
aW5nKHdhaXRVbnRpbERvbmUpOwotfQotCi0vLyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiBjb3VudGVy
IGluIHRoZSBlbGVtZW50IHNwZWNpZmllZCBieSBcYSBpZC4KLVFTdHJpbmcgUVdFQktJVF9FWFBP
UlQgcXRfZHJ0X2NvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKFFXZWJGcmFtZSogcUZyYW1lLCBj
b25zdCBRU3RyaW5nJiBpZCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRl
Ojpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1
bWVudCgpKSB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBkb2N1bWVudC0+Z2V0RWxlbWVu
dEJ5SWQoaWQpOwotICAgICAgICByZXR1cm4gV2ViQ29yZTo6Y291bnRlclZhbHVlRm9yRWxlbWVu
dChlbGVtZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIFFTdHJpbmcoKTsKLX0KLQotaW50IFFXRUJL
SVRfRVhQT1JUIHF0X2RydF9wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBxRnJh
bWUsIGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQotewotICAg
IEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKLSAgICBpZiAo
IWZyYW1lKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBFbGVtZW50KiBlbGVtZW50ID0gZnJh
bWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZyhpZCkpOwotICAgIGlm
ICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIFByaW50Q29udGV4
dDo6cGFnZU51bWJlckZvckVsZW1lbnQoZWxlbWVudCwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQp
KTsKLX0KLQotaW50IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9udW1iZXJPZlBhZ2VzKFFXZWJGcmFt
ZSogcUZyYW1lLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQotewotICAgIEZyYW1lKiBmcmFt
ZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocUZyYW1lKTsKLSAgICBpZiAoIWZyYW1lKQotICAg
ICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2Vz
KGZyYW1lLCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCkpOwotfQotCi0vLyBTdXNwZW5kIGFjdGl2
ZSBET00gb2JqZWN0cyBpbiB0aGlzIGZyYW1lLgotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9zdXNw
ZW5kQWN0aXZlRE9NT2JqZWN0cyhRV2ViRnJhbWUqIHFGcmFtZSkKLXsKLSAgICBGcmFtZSogZnJh
bWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKHFGcmFtZSk7Ci0gICAgaWYgKGZyYW1lLT5kb2N1
bWVudCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3VzcGVuZEFjdGl2ZURPTU9iamVj
dHMoKTsKLX0KLSAgICAgICAgICAgIAotLy8gUmVzdW1lIGFjdGl2ZSBET00gb2JqZWN0cyBpbiB0
aGlzIGZyYW1lLgotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9yZXN1bWVBY3RpdmVET01PYmplY3Rz
KFFXZWJGcmFtZSogcUZyYW1lKQotewotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZh
dGU6OmNvcmUocUZyYW1lKTsKLSAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIGZy
YW1lLT5kb2N1bWVudCgpLT5yZXN1bWVBY3RpdmVET01PYmplY3RzKCk7Ci19ICAgICAgICAgICAg
ICAgICAgICAgICAgCi0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X2V2YWx1YXRlU2NyaXB0
SW5Jc29sYXRlZFdvcmxkKFFXZWJGcmFtZSogcUZyYW1lLCBpbnQgd29ybGRJZCwgY29uc3QgUVN0
cmluZyYgc2NyaXB0KQotewotICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNv
cmUocUZyYW1lKTsKLSAgICBpZiAoZnJhbWUpCi0gICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQg
PSBmcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHRJbldvcmxkKG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpLCBzY3JpcHQsIHRydWUpLmpzVmFsdWUoKTsKLX0KLQogc3RhdGljIGJvb2wgd2ViZnJh
bWVfc2Nyb2xsT3ZlcmZsb3coV2ViQ29yZTo6RnJhbWUqIGZyYW1lLCBpbnQgZHgsIGludCBkeSwg
Y29uc3QgUVBvaW50JiBwb3MpCiB7CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmRvY3VtZW50
KCkgfHwgIWZyYW1lLT52aWV3KCkgfHwgIWZyYW1lLT5ldmVudEhhbmRsZXIoKSkKQEAgLTM1MSw3
ICsxNjQsNiBAQCB2b2lkIFFXRUJLSVRfRVhQT1JUIHF0d2Via2l0X3dlYmZyYW1lX3Njcm9sbFJl
Y3Vyc2l2ZWx5KFFXZWJGcmFtZSogcUZyYW1lLCBpbnQgZAogICAgIH0gd2hpbGUgKHFGcmFtZSk7
CiB9CiAKLQogUVdlYkZyYW1lRGF0YTo6UVdlYkZyYW1lRGF0YShXZWJDb3JlOjpQYWdlKiBwYXJl
bnRQYWdlLCBXZWJDb3JlOjpGcmFtZSogcGFyZW50RnJhbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJGcmFtZUVsZW1l
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
ZnJhbWVOYW1lKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaCBiL1dlYktp
dC9xdC9BcGkvcXdlYmZyYW1lLmgKaW5kZXggY2U5ODA1Yi4uZWNkMzFkZSAxMDA2NDQKLS0tIGEv
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5o
CkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFFXZWJTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFFXZWJF
bGVtZW50OwogY2xhc3MgUVdlYkVsZW1lbnRDb2xsZWN0aW9uOwogCitjbGFzcyBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBXaWRnZXRQcml2
YXRlOwogICAgIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50UXQ7CkBAIC0yMjUsNiArMjI2LDcgQEAg
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2U7CiAgICAgZnJpZW5kIGNsYXNzIFFX
ZWJQYWdlUHJpdmF0ZTsKICAgICBmcmllbmQgY2xhc3MgUVdlYkZyYW1lUHJpdmF0ZTsKKyAgICBm
cmllbmQgY2xhc3MgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdl
YkNvcmU6OldpZGdldFByaXZhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Owpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3
ZWJwYWdlLmNwcAppbmRleCAxYWNiODdlLi4xODBjN2FmIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMTIw
LDk1ICsxMjAsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBRV0VCS0lU
X0VYUE9SVCBxdF93cnRfc2V0Vmlld01vZGUoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcm
IG1vZGUpCi17Ci0gICAgUVdlYlBhZ2VQcml2YXRlOjpwcml2KHBhZ2UpLT52aWV3TW9kZSA9IG1v
ZGU7Ci0gICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShw
YWdlLT5tYWluRnJhbWUoKSk7Ci0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUt
PnZpZXcoKTsKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVTZWxlY3RvcigpOwot
ICAgIHZpZXctPmZvcmNlTGF5b3V0KCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0
X292ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVzKCkKLXsKLSAgICBQbHVnaW5EYXRhYmFzZSogZGIg
PSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygvKiBwb3B1bGF0ZSAqLyBmYWxzZSk7
Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKLSAgICBTdHJpbmcgcXRQYXRoKHFnZXRlbnYo
IlFUV0VCS0lUX1BMVUdJTl9QQVRIIikuZGF0YSgpKTsKLSAgICBxdFBhdGguc3BsaXQoVUNoYXIo
JzonKSwgLyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFsc2UsIHBhdGhzKTsKLQotICAgIGRiLT5z
ZXRQbHVnaW5EaXJlY3RvcmllcyhwYXRocyk7Ci0gICAgZGItPnJlZnJlc2goKTsKLX0KLQotaW50
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF93b3JrZXJUaHJlYWRDb3VudCgpCi17Ci0jaWYgRU5BQkxF
KFdPUktFUlMpCi0gICAgcmV0dXJuIFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFk
Q291bnQoKTsKLSNlbHNlCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQogYm9vbCBRV2ViUGFn
ZVByaXZhdGU6OmRydFJ1biA9IGZhbHNlOwotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfcnVu
KGJvb2wgYikKLXsKLSAgICBRV2ViUGFnZVByaXZhdGU6OmRydFJ1biA9IGI7Ci19Ci0KLXZvaWQg
UVdFQktJVF9FWFBPUlQgcXRfZHJ0X3NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoUVdlYlBhZ2Uq
IHBhZ2UsIGJvb2wgZW5hYmxlZCkKLXsKLSAgICBRV2ViUGFnZVByaXZhdGU6OmNvcmUocGFnZSkt
PnNldHRpbmdzKCktPnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KLXZv
aWQgUVdFQktJVF9FWFBPUlQgcXRfd2VicGFnZV9zZXRHcm91cE5hbWUoUVdlYlBhZ2UqIHBhZ2Us
IGNvbnN0IFFTdHJpbmcmIGdyb3VwTmFtZSkKLXsKLSAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+
c2V0R3JvdXBOYW1lKGdyb3VwTmFtZSk7Ci19Ci0KLVFTdHJpbmcgUVdFQktJVF9FWFBPUlQgcXRf
d2VicGFnZV9ncm91cE5hbWUoUVdlYlBhZ2UqIHBhZ2UpCi17Ci0gICAgcmV0dXJuIHBhZ2UtPmhh
bmRsZSgpLT5wYWdlLT5ncm91cE5hbWUoKTsKLX0KLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi12
b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF93ZWJpbnNwZWN0b3JfZXhlY3V0ZVNjcmlwdChRV2Vi
UGFnZSogcGFnZSwgbG9uZyBjYWxsSWQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCkKLXsKLSAgICBp
ZiAoIXBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LT5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGNhbGxJZCwgc2NyaXB0KTsKLX0KLQotdm9pZCBR
V0VCS0lUX0VYUE9SVCBxdF9kcnRfd2ViaW5zcGVjdG9yX2Nsb3NlKFFXZWJQYWdlKiBwYWdlKQot
ewotICAgIGlmICghcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmNsb3NlKCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3dlYmlu
c3BlY3Rvcl9zaG93KFFXZWJQYWdlKiBwYWdlKQotewotICAgIGlmICghcGFnZS0+aGFuZGxlKCkt
PnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHBhZ2Ut
PmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNob3coKTsKLX0KLQotdm9p
ZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKFFXZWJQ
YWdlKiBwYWdlLCBib29sIGVuYWJsZWQpCi17Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogY29u
dHJvbGxlciA9IHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0g
ICAgaWYgKCFjb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGVuYWJsZWQpCi0g
ICAgICAgIGNvbnRyb2xsZXItPnN0YXJ0VGltZWxpbmVQcm9maWxlcigpOwotICAgIGVsc2UKLSAg
ICAgICAgY29udHJvbGxlci0+c3RvcFRpbWVsaW5lUHJvZmlsZXIoKTsKLX0KLSNlbmRpZgotCi12
b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2RydF9lbmFibGVDYXJldEJyb3dzaW5nKFFXZWJQYWdlKiBw
YWdlLCBib29sIHZhbHVlKQotewotICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXR0aW5ncygp
LT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZCh2YWx1ZSk7Ci19CiAKIGNsYXNzIFFXZWJQYWdlV2lk
Z2V0Q2xpZW50IDogcHVibGljIFFXZWJQYWdlQ2xpZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAppbmRl
eCBmNzlkYjc3Li5jMDg1ZmQ3IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgK
KysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCkBAIC0zNzMsNiArMzczLDcgQEAgcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOwogICAgIGZyaWVu
ZCBjbGFzcyBXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjsKKyAgICBmcmllbmQgY2xhc3Mg
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ7CiB9OwogCiBRX0RFQ0xBUkVfT1BFUkFUT1JTX0ZPUl9G
TEFHUyhRV2ViUGFnZTo6RmluZEZsYWdzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vi
c2VjdXJpdHlvcmlnaW4uY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3Bw
CmluZGV4IDZjMjZiZDcuLmI2OWYyNGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnNl
Y3VyaXR5b3JpZ2luLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5j
cHAKQEAgLTMwLDIxICszMCw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lk
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF93aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IFFT
dHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwg
Y29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKQotewotICAgIFNlY3VyaXR5T3JpZ2luOjp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2lu
KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5h
dGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
KTsKLX0KLQotdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfcmVzZXRPcmlnaW5BY2Nlc3NXaGl0
ZUxpc3RzKCkKLXsKLSAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxp
c3RzKCk7Ci19Ci0KLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X3NldERvbWFpblJlbGF4YXRp
b25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNj
aGVtZSkKLXsKLSAgICBTZWN1cml0eU9yaWdpbjo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRl
bkZvclVSTFNjaGVtZShmb3JiaWRkZW4sIHNjaGVtZSk7Ci19Ci0KIC8qIQogICAgIFxjbGFzcyBR
V2ViU2VjdXJpdHlPcmlnaW4KICAgICBcc2luY2UgNC41CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBmNzk0YjhhLi4yMjZiMjE1IDEw
MDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2MCBAQAorMjAxMC0wNC0xMCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVmYWN0b3IgUXQgRFJUIHN1cHBvcnQgaW4gUXRXZWJLaXQKKworICAgICAgICBNb3ZlIGFsbCBR
VCBEUlQgc3VwcG9ydCBmdW5jdGlvbnMgdG8gYSBzdGF0aWMgY2xhc3MuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0CisKKyAgICAgICAgKiBB
cGkvcXdlYmZyYW1lLmNwcDogUmVtb3ZlIHN0YXRpYyBmdW5jdGlvbnMuCisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5oOiBNYWtlIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0IGEgZnJpZW5kLgorICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6IFJlbW92ZSBzdGF0aWMgZnVuY3Rpb25zLgorICAgICAg
ICAqIEFwaS9xd2VicGFnZS5oOiBNYWtlIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0IGEgZnJpZW5k
LgorICAgICAgICAqIEFwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwOiBSZW1vdmUgc3RhdGljIGZ1
bmN0aW9ucy4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5jcHA6IEFkZGVkLgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OkR1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp+RHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
Om92ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0Ojp3b3JrZXJUaHJlYWRDb3VudCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6c2V0RHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZCk6CisgICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCk6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6d2ViUGFnZVNldEdyb3VwTmFtZSk6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6d2ViUGFnZUdyb3VwTmFtZSk6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6d2ViSW5zcGVjdG9yRXhlY3V0ZVNjcmlwdCk6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2ViSW5zcGVjdG9yQ2xvc2UpOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OndlYkluc3BlY3RvclNob3cpOgorICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aGFzRG9jdW1lbnRFbGVtZW50KToKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCk6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cGF1c2VBbmltYXRpb24pOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnBhdXNlVHJhbnNpdGlvbk9mUHJvcGVydHkp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnBhdXNlU1ZHQW5pbWF0aW9uKToK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlv
bnMpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNsZWFyRnJhbWVOYW1lKToK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpqYXZhU2NyaXB0T2JqZWN0c0NvdW50
KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpnYXJiYWdlQ29sbGVjdG9yQ29s
bGVjdCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Z2FyYmFnZUNvbGxlY3Rv
ckNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCk6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6bnVtYmVyT2ZQYWdlcyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKToKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKToK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRl
TGlzdHMpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldERvbWFpblJlbGF4
YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OnNldENhcmV0QnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpzZXRNZWRpYVR5cGUpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnNldFZpZXdNb2RlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5oOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAg
ICAgICh0c3RfUVdlYlBhZ2U6Om11bHRpcGxlUGFnZUdyb3Vwc0FuZExvY2FsU3RvcmFnZSk6Cisg
ICAgICAgICh0c3RfUVdlYlBhZ2U6OmlucHV0TWV0aG9kc1RleHRGb3JtYXQpOgorICAgICAgICAo
dHN0X1FXZWJQYWdlOjpwcm90ZWN0QmluZGluZ3NSdW50aW1lT2JqZWN0c0Zyb21Db2xsZWN0b3Ip
OgorCiAyMDEwLTA0LTExICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAgYi9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjUyYTM5MWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCkBAIC0wLDAgKzEsMzUz
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2Jl
cnRob2dhbi5uZXQ+CisgICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDksMjAxMCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgorICAgIENvcHlyaWdodCAoQykgMjAw
NyBBcHBsZSBJbmMuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkR1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmgiCisKKyNpbmNsdWRlICJDb250ZXh0TWVudS5oIgorI2luY2x1ZGUg
IkNvbnRleHRNZW51Q2xpZW50UXQuaCIKKyNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAi
Rm9jdXNDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKKyNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250
cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgorI2lu
Y2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCisjaW5j
bHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR1NNSUxF
bGVtZW50LmgiCisjZW5kaWYKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKworI2luY2x1ZGUg
InF3ZWJmcmFtZS5oIgorI2luY2x1ZGUgInF3ZWJmcmFtZV9wLmgiCisjaW5jbHVkZSAicXdlYnBh
Z2UuaCIKKyNpbmNsdWRlICJxd2VicGFnZV9wLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCitEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQoKQor
eworfQorCitEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6fkR1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
KCkKK3sKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6b3ZlcndyaXRlUGx1Z2lu
RGlyZWN0b3JpZXMoKQoreworICAgIFBsdWdpbkRhdGFiYXNlKiBkYiA9IFBsdWdpbkRhdGFiYXNl
OjppbnN0YWxsZWRQbHVnaW5zKC8qIHBvcHVsYXRlICovIGZhbHNlKTsKKworICAgIFZlY3RvcjxT
dHJpbmc+IHBhdGhzOworICAgIFN0cmluZyBxdFBhdGgocWdldGVudigiUVRXRUJLSVRfUExVR0lO
X1BBVEgiKS5kYXRhKCkpOworICAgIHF0UGF0aC5zcGxpdChVQ2hhcignOicpLCAvKiBhbGxvd0Vt
cHR5RW50cmllcyAqLyBmYWxzZSwgcGF0aHMpOworCisgICAgZGItPnNldFBsdWdpbkRpcmVjdG9y
aWVzKHBhdGhzKTsKKyAgICBkYi0+cmVmcmVzaCgpOworfQorCitpbnQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OndvcmtlclRocmVhZENvdW50KCkKK3sKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAg
ICByZXR1cm4gV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRDb3VudCgpOworI2Vs
c2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpzZXREdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKGJvb2wgYikKK3sKKyAgICBRV2ViUGFn
ZVByaXZhdGU6OmRydFJ1biA9IGI7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxlZCkK
K3sKKyAgICBRV2ViUGFnZVByaXZhdGU6OmNvcmUocGFnZSktPnNldHRpbmdzKCktPnNldEZyYW1l
RmxhdHRlbmluZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OndlYlBhZ2VTZXRHcm91cE5hbWUoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcm
IGdyb3VwTmFtZSkKK3sKKyAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+c2V0R3JvdXBOYW1lKGdy
b3VwTmFtZSk7Cit9CisKK1FTdHJpbmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OndlYlBhZ2VH
cm91cE5hbWUoUVdlYlBhZ2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIHBhZ2UtPmhhbmRsZSgpLT5w
YWdlLT5ncm91cE5hbWUoKTsKK30KKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCit2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0Ojp3ZWJJbnNwZWN0b3JFeGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBw
YWdlLCBsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KQoreworICAgIGlmICghcGFn
ZS0+aGFuZGxlKCktPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1
YXRlRm9yVGVzdEluRnJvbnRlbmQoY2FsbElkLCBzY3JpcHQpOworfQorCit2b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0Ojp3ZWJJbnNwZWN0b3JDbG9zZShRV2ViUGFnZSogcGFnZSkKK3sKKyAg
ICBpZiAoIXBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5jbG9zZSgpOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3ZWJJbnNw
ZWN0b3JTaG93KFFXZWJQYWdlKiBwYWdlKQoreworICAgIGlmICghcGFnZS0+aGFuZGxlKCktPnBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2UtPmhh
bmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNob3coKTsKK30KKwordm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKFFXZWJQ
YWdlKiBwYWdlLCBib29sIGVuYWJsZWQpCit7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogY29u
dHJvbGxlciA9IHBhZ2UtPmhhbmRsZSgpLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Cisg
ICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGVuYWJsZWQpCisg
ICAgICAgIGNvbnRyb2xsZXItPnN0YXJ0VGltZWxpbmVQcm9maWxlcigpOworICAgIGVsc2UKKyAg
ICAgICAgY29udHJvbGxlci0+c3RvcFRpbWVsaW5lUHJvZmlsZXIoKTsKK30KKworI2VuZGlmCisK
K2Jvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Omhhc0RvY3VtZW50RWxlbWVudChRV2ViRnJh
bWUqIGZyYW1lKQoreworICAgIHJldHVybiBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKGZyYW1lKS0+
ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKFFXZWJGcmFtZSogZnJhbWUs
IGJvb2wgZW5hYmxlZCkKK3sKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBG
cmFtZSogY29yZUZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShmcmFtZSk7CisgICAgSW5z
cGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IGNvcmVGcmFtZS0+cGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKGVuYWJsZWQpCisgICAgICAgIGNvbnRyb2xsZXItPmVuYWJsZVByb2ZpbGVyKCk7Cisg
ICAgZWxzZQorICAgICAgICBjb250cm9sbGVyLT5kaXNhYmxlUHJvZmlsZXIoKTsKKyNlbmRpZgor
fQorCisvLyBQYXVzZSBhIGdpdmVuIENTUyBhbmltYXRpb24gb3IgdHJhbnNpdGlvbiBvbiB0aGUg
dGFyZ2V0IG5vZGUgYXQgYSBzcGVjaWZpYyB0aW1lLgorLy8gSWYgdGhlIGFuaW1hdGlvbiBvciB0
cmFuc2l0aW9uIGlzIGFscmVhZHkgcGF1c2VkLCBpdCB3aWxsIHVwZGF0ZSBpdHMgcGF1c2UgdGlt
ZS4KKy8vIFRoaXMgbWV0aG9kIGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGVzdGlu
ZyB0aGUgQ1NTIGFuaW1hdGlvbiBhbmQgdHJhbnNpdGlvbiBzeXN0ZW0uCitib29sIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpwYXVzZUFuaW1hdGlvbihRV2ViRnJhbWUgKmZyYW1lLCBjb25zdCBR
U3RyaW5nICZhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVu
dElkKQoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKGZy
YW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
QW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IGNvcmVGcmFtZS0+YW5pbWF0aW9uKCk7
CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBEb2N1
bWVudCogZG9jID0gY29yZUZyYW1lLT5kb2N1bWVudCgpOworICAgIFFfQVNTRVJUKGRvYyk7CisK
KyAgICBOb2RlKiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKyAg
ICBpZiAoIWNvcmVOb2RlIHx8ICFjb3JlTm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIGNvbnRyb2xsZXItPnBhdXNlQW5pbWF0aW9uQXRUaW1lKGNv
cmVOb2RlLT5yZW5kZXJlcigpLCBhbmltYXRpb25OYW1lLCB0aW1lKTsKK30KKworYm9vbCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6cGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eShRV2ViRnJhbWUg
KmZyYW1lLCBjb25zdCBRU3RyaW5nICZwcm9wZXJ0eU5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBR
U3RyaW5nICZlbGVtZW50SWQpCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IFFXZWJGcmFtZVBy
aXZhdGU6OmNvcmUoZnJhbWUpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gY29yZUZyYW1l
LT5hbmltYXRpb24oKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIERvY3VtZW50KiBkb2MgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCk7CisgICAgUV9B
U1NFUlQoZG9jKTsKKworICAgIE5vZGUqIGNvcmVOb2RlID0gZG9jLT5nZXRFbGVtZW50QnlJZChl
bGVtZW50SWQpOworICAgIGlmICghY29yZU5vZGUgfHwgIWNvcmVOb2RlLT5yZW5kZXJlcigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gY29udHJvbGxlci0+cGF1c2VUcmFu
c2l0aW9uQXRUaW1lKGNvcmVOb2RlLT5yZW5kZXJlcigpLCBwcm9wZXJ0eU5hbWUsIHRpbWUpOwor
fQorCisvLyBQYXVzZSBhIGdpdmVuIFNWRyBhbmltYXRpb24gb24gdGhlIHRhcmdldCBub2RlIGF0
IGEgc3BlY2lmaWMgdGltZS4KKy8vIFRoaXMgbWV0aG9kIGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUg
dXNlZCBmb3IgdGVzdGluZyB0aGUgU1ZHIGFuaW1hdGlvbiBzeXN0ZW0uCitib29sIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpwYXVzZVNWR0FuaW1hdGlvbihRV2ViRnJhbWUgKmZyYW1lLCBjb25z
dCBRU3RyaW5nICZhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1l
bnRJZCkKK3sKKyNpZiAhRU5BQkxFKFNWRykKKyAgICByZXR1cm4gZmFsc2U7CisjZWxzZQorICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKGZyYW1lKTsKKyAgICBp
ZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRG9jdW1lbnQqIGRv
YyA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBRX0FTU0VSVChkb2MpOworCisgICAgaWYg
KCFkb2MtPnN2Z0V4dGVuc2lvbnMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTm9k
ZSogY29yZU5vZGUgPSBkb2MtPmdldEVsZW1lbnRCeUlkKGFuaW1hdGlvbklkKTsKKyAgICBpZiAo
IWNvcmVOb2RlIHx8ICFTVkdTTUlMRWxlbWVudDo6aXNTTUlMRWxlbWVudChjb3JlTm9kZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBkb2MtPmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKS0+c2FtcGxlQW5pbWF0aW9uQXRUaW1lKGVsZW1lbnRJZCwgc3RhdGljX2Nhc3Q8U1ZHU01J
TEVsZW1lbnQqPihjb3JlTm9kZSksIHRpbWUpOworI2VuZGlmCit9CisKKy8vIFJldHVybnMgdGhl
IHRvdGFsIG51bWJlciBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb25zIChpbmNsdWRlcyBi
b3RoIENTUyB0cmFuc2l0aW9ucyBhbmQgQ1NTIGFuaW1hdGlvbnMpLgoraW50IER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0OjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoUVdlYkZyYW1lICpmcmFtZSkK
K3sKKyAgICBGcmFtZSogY29yZUZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShmcmFtZSk7
CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFuaW1h
dGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBjb3JlRnJhbWUtPmFuaW1hdGlvbigpOworICAg
IGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNv
bnRyb2xsZXItPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOworfQorCit2b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpjbGVhckZyYW1lTmFtZShRV2ViRnJhbWUqIGZyYW1lKQoreworICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKGZyYW1lKTsKKyAgICBj
b3JlRnJhbWUtPnRyZWUoKS0+Y2xlYXJOYW1lKCk7Cit9CisKK2ludCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6amF2YVNjcmlwdE9iamVjdHNDb3VudCgpCit7CisgICAgcmV0dXJuIEpTRE9NV2lu
ZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAuZ2xvYmFsT2JqZWN0Q291bnQoKTsK
K30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Z2FyYmFnZUNvbGxlY3RvckNvbGxl
Y3QoKQoreworICAgIGdjQ29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0Tm93KCk7Cit9CisKK3Zv
aWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0T25BbHRl
cm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKQoreworICAgIGdjQ29udHJvbGxlcigpLmdh
cmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcod2FpdFVudGlsRG9uZSk7
Cit9CisKKy8vIFJldHVybnMgdGhlIHZhbHVlIG9mIGNvdW50ZXIgaW4gdGhlIGVsZW1lbnQgc3Bl
Y2lmaWVkIGJ5IFxhIGlkLgorUVN0cmluZyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y291bnRl
clZhbHVlRm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBmcmFtZSwgY29uc3QgUVN0cmluZyYgaWQp
Cit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUoZnJhbWUp
OworICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCkpIHsK
KyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGRvY3VtZW50LT5nZXRFbGVtZW50QnlJZChpZCk7
CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpjb3VudGVyVmFsdWVGb3JFbGVtZW50KGVsZW1lbnQp
OworICAgIH0KKyAgICByZXR1cm4gUVN0cmluZygpOworfQorCitpbnQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIGZyYW1lLCBjb25z
dCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKK3sKKyAgICBGcmFtZSog
Y29yZUZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShmcmFtZSk7CisgICAgaWYgKCFjb3Jl
RnJhbWUpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBjb3Jl
RnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZyhpZCkpOworICAg
IGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIFByaW50Q29u
dGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoZWxlbWVudCwgRmxvYXRTaXplKHdpZHRoLCBoZWln
aHQpKTsKK30KKworaW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpudW1iZXJPZlBhZ2VzKFFX
ZWJGcmFtZSogZnJhbWUsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCit7CisgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUoZnJhbWUpOworICAgIGlmICghY29y
ZUZyYW1lKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0Ojpu
dW1iZXJPZlBhZ2VzKGNvcmVGcmFtZSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKK30KKwor
Ly8gU3VzcGVuZCBhY3RpdmUgRE9NIG9iamVjdHMgaW4gdGhpcyBmcmFtZS4KK3ZvaWQgRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKFFXZWJGcmFtZSogZnJh
bWUpCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUoZnJh
bWUpOworICAgIGlmIChjb3JlRnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIGNvcmVGcmFtZS0+
ZG9jdW1lbnQoKS0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKTsKK30KKworLy8gUmVzdW1lIGFj
dGl2ZSBET00gb2JqZWN0cyBpbiB0aGlzIGZyYW1lLgordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyhRV2ViRnJhbWUqIGZyYW1lKQoreworICAgIEZy
YW1lKiBjb3JlRnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKGZyYW1lKTsKKyAgICBpZiAo
Y29yZUZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICBjb3JlRnJhbWUtPmRvY3VtZW50KCktPnJl
c3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoUVdlYkZyYW1lKiBmcmFtZSwgaW50IHdv
cmxkSWQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCkKK3sKKyAgICBGcmFtZSogY29yZUZyYW1lID0g
UVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShmcmFtZSk7CisgICAgaWYgKGNvcmVGcmFtZSkKKyAgICAg
ICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3Jp
cHRJbldvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzY3JpcHQsIHRydWUpLmpzVmFsdWUo
KTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2hpdGVMaXN0QWNjZXNzRnJv
bU9yaWdpbihjb25zdCBRU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKK3sKKyAgICBTZWN1cml0eU9yaWdpbjo6d2hpdGVMaXN0
QWNjZXNzRnJvbU9yaWdpbigqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNl
T3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3Rp
bmF0aW9uU3ViZG9tYWlucyk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJl
c2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpCit7CisgICAgU2VjdXJpdHlPcmlnaW46OnJlc2V0
T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlk
ZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpCit7CisgICAgU2VjdXJpdHlPcmlnaW46OnNldERv
bWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlkZGVuLCBzY2hlbWUpOwor
fQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRDYXJldEJyb3dzaW5nRW5hYmxl
ZChRV2ViUGFnZSogcGFnZSwgYm9vbCB2YWx1ZSkKK3sKKyAgICBwYWdlLT5oYW5kbGUoKS0+cGFn
ZS0+c2V0dGluZ3MoKS0+c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQodmFsdWUpOworfQorCit2b2lk
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNZWRpYVR5cGUoUVdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgUVN0cmluZyYgdHlwZSkKK3sKKyAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0g
UVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShmcmFtZSk7CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2
aWV3ID0gY29yZUZyYW1lLT52aWV3KCk7CisgICAgdmlldy0+c2V0TWVkaWFUeXBlKHR5cGUpOwor
ICAgIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVTZWxlY3RvcigpOworICAgIHZp
ZXctPmZvcmNlTGF5b3V0KCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNl
dFZpZXdNb2RlKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBtb2RlKQoreworICAgIFFX
ZWJQYWdlUHJpdmF0ZTo6cHJpdihwYWdlKS0+dmlld01vZGUgPSBtb2RlOworICAgIFdlYkNvcmU6
OkZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUocGFnZS0+bWFpbkZyYW1lKCkp
OworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAgZnJh
bWUtPmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKKyAgICB2aWV3LT5mb3JjZUxh
eW91dCgpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmggYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTAzZDdj
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTAgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorICAgIENvcHlyaWdodCAo
QykgMjAwOCwyMDA5LDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2Vz
IEluYy4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXRfaAorI2RlZmluZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdF9o
CisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKK2NsYXNzIFFXZWJQYWdlOworY2xhc3Mg
UVdlYkZyYW1lOworCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dCB7CisKK3B1YmxpYzoKKworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0KCk7CisgICAgfkR1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0KCk7CisKKworICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVDb3Jl
Q29tbWFuZEJ5TmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0cmluZyYgbmFtZSwgY29uc3Qg
UVN0cmluZyYgdmFsdWUpOworICAgIHN0YXRpYyBib29sIGlzQ29tbWFuZEVuYWJsZWQoUVdlYlBh
Z2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG5hbWUpOworCisgICAgc3RhdGljIGJvb2wgcGF1c2VB
bmltYXRpb24oUVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYgbmFtZSwgZG91YmxlIHRpbWUsIGNv
bnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CisgICAgc3RhdGljIGJvb2wgcGF1c2VUcmFuc2l0aW9u
T2ZQcm9wZXJ0eShRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBkb3VibGUgdGltZSwg
Y29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKKyAgICBzdGF0aWMgYm9vbCBwYXVzZVNWR0FuaW1h
dGlvbihRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBhbmltYXRpb25JZCwgZG91YmxlIHRpbWUs
IGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CisgICAgc3RhdGljIHZvaWQgc3VzcGVuZEFjdGl2
ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBmcmFtZSk7CisgICAgc3RhdGljIHZvaWQgcmVzdW1lQWN0
aXZlRE9NT2JqZWN0cyhRV2ViRnJhbWUqIGZyYW1lKTsKKworICAgIHN0YXRpYyB2b2lkIHNldERv
bWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0
IFFTdHJpbmcmIHNjaGVtZSk7CisgICAgc3RhdGljIHZvaWQgc2V0RnJhbWVGbGF0dGVuaW5nRW5h
YmxlZChRV2ViUGFnZSosIGJvb2wpOworICAgIHN0YXRpYyB2b2lkIHNldENhcmV0QnJvd3NpbmdF
bmFibGVkKFFXZWJQYWdlKiBwYWdlLCBib29sIHZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRN
ZWRpYVR5cGUoUVdlYkZyYW1lKiBxZnJhbWUsIGNvbnN0IFFTdHJpbmcmIHR5cGUpOworICAgIHN0
YXRpYyB2b2lkIHNldER1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoYm9vbCBiKTsKKworICAgIHN0
YXRpYyB2b2lkIGV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKFFXZWJGcmFtZSogZnJhbWUs
IGludCB3b3JsZElkLCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpOworICAgIHN0YXRpYyB2b2lkIGdh
cmJhZ2VDb2xsZWN0b3JDb2xsZWN0KCk7CisgICAgc3RhdGljIHZvaWQgZ2FyYmFnZUNvbGxlY3Rv
ckNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpOworICAgIHN0YXRp
YyB2b2lkIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKFFXZWJGcmFtZSosIGJvb2wgZW5h
YmxlZCk7CisgICAgc3RhdGljIGludCBqYXZhU2NyaXB0T2JqZWN0c0NvdW50KCk7CisKKyAgICBz
dGF0aWMgdm9pZCBzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoUVdlYlBhZ2UqLCBib29sIGVu
YWJsZWQpOworICAgIHN0YXRpYyB2b2lkIHdlYkluc3BlY3RvckV4ZWN1dGVTY3JpcHQoUVdlYlBh
Z2UqIHBhZ2UsIGxvbmcgY2FsbElkLCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpOworICAgIHN0YXRp
YyB2b2lkIHdlYkluc3BlY3RvclNob3coUVdlYlBhZ2UqIHBhZ2UpOworICAgIHN0YXRpYyB2b2lk
IHdlYkluc3BlY3RvckNsb3NlKFFXZWJQYWdlKiBwYWdlKTsKKworICAgIHN0YXRpYyBRU3RyaW5n
IHdlYlBhZ2VHcm91cE5hbWUoUVdlYlBhZ2UgKnBhZ2UpOworICAgIHN0YXRpYyBRU3RyaW5nIGNv
dW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKFFXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFFTdHJpbmcm
IGlkKTsKKyAgICBzdGF0aWMgdm9pZCB3ZWJQYWdlU2V0R3JvdXBOYW1lKFFXZWJQYWdlKiBwYWdl
LCBjb25zdCBRU3RyaW5nJiBncm91cE5hbWUpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyRnJhbWVO
YW1lKFFXZWJGcmFtZSogZnJhbWUpOworICAgIHN0YXRpYyB2b2lkIHNldFZpZXdNb2RlKFFXZWJQ
YWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBtb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBvdmVyd3Jp
dGVQbHVnaW5EaXJlY3RvcmllcygpOworICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZBY3RpdmVBbmlt
YXRpb25zKFFXZWJGcmFtZSopOworICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZQYWdlcyhRV2ViRnJh
bWUqIGZyYW1lLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKKyAgICBzdGF0aWMgaW50IHBh
Z2VOdW1iZXJGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBRU3RyaW5nJiBp
ZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CisgICAgc3RhdGljIGJvb2wgaGFzRG9jdW1l
bnRFbGVtZW50KFFXZWJGcmFtZSogZnJhbWUpOworCisgICAgc3RhdGljIHZvaWQgd2hpdGVMaXN0
QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJp
bmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgc3RhdGljIHZvaWQgcmVzZXRP
cmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CisKKyAgICBzdGF0aWMgaW50IHdvcmtlclRocmVhZENv
dW50KCk7Cit9OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0LmgKaW5kZXggNDJhNDAyZi4uZDZjMjQ4ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmgKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xl
R3JhbW1hckNoZWNraW5nKCk7CiAgICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRU
YWcoKTsKLSAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0V29yZEJlZm9yZU1lbnVFdmVudCgp
OwogICAgIHZpcnR1YWwgYm9vbCBpc0VkaXRhYmxlKCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9x
dC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJw
YWdlL3RzdF9xd2VicGFnZS5jcHAKaW5kZXggMWY5N2U2OS4uYzg1N2IwMCAxMDA2NDQKLS0tIGEv
V2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0
L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICovCiAK
ICNpbmNsdWRlICIuLi91dGlsLmgiCisjaW5jbHVkZSAiLi4vV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuaCIKICNpbmNsdWRlIDxRRGlyPgogI2luY2x1ZGUgPFFHcmFwaGlj
c1dpZGdldD4KICNpbmNsdWRlIDxRTGluZUVkaXQ+CkBAIC03MjUsMTAgKzcyNiw2IEBAIHZvaWQg
dHN0X1FXZWJQYWdlOjpjcmVhdGVWaWV3bGVzc1BsdWdpbigpCiAKIH0KIAotLy8gaW1wb3J0IHBy
aXZhdGUgQVBJCi12b2lkIFFXRUJLSVRfRVhQT1JUIHF0X3dlYnBhZ2Vfc2V0R3JvdXBOYW1lKFFX
ZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBncm91cE5hbWUpOwotUVN0cmluZyBRV0VCS0lU
X0VYUE9SVCBxdF93ZWJwYWdlX2dyb3VwTmFtZShRV2ViUGFnZSogcGFnZSk7Ci0KIHZvaWQgdHN0
X1FXZWJQYWdlOjptdWx0aXBsZVBhZ2VHcm91cHNBbmRMb2NhbFN0b3JhZ2UoKQogewogICAgIFFE
aXIgZGlyKFFEaXI6OmN1cnJlbnRQYXRoKCkpOwpAQCAtNzQwLDEyICs3MzcsMTIgQEAgdm9pZCB0
c3RfUVdlYlBhZ2U6Om11bHRpcGxlUGFnZUdyb3Vwc0FuZExvY2FsU3RvcmFnZSgpCiAKICAgICB2
aWV3MS5wYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkxvY2Fs
U3RvcmFnZUVuYWJsZWQsIHRydWUpOwogICAgIHZpZXcxLnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0
TG9jYWxTdG9yYWdlUGF0aChRRGlyOjp0b05hdGl2ZVNlcGFyYXRvcnMoUURpcjo6Y3VycmVudFBh
dGgoKSArICIvcGF0aDEiKSk7Ci0gICAgcXRfd2VicGFnZV9zZXRHcm91cE5hbWUodmlldzEucGFn
ZSgpLCAiZ3JvdXAxIik7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OndlYlBhZ2VTZXRH
cm91cE5hbWUodmlldzEucGFnZSgpLCAiZ3JvdXAxIik7CiAgICAgdmlldzIucGFnZSgpLT5zZXR0
aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpMb2NhbFN0b3JhZ2VFbmFibGVkLCB0
cnVlKTsgICAgCiAgICAgdmlldzIucGFnZSgpLT5zZXR0aW5ncygpLT5zZXRMb2NhbFN0b3JhZ2VQ
YXRoKFFEaXI6OnRvTmF0aXZlU2VwYXJhdG9ycyhRRGlyOjpjdXJyZW50UGF0aCgpICsgIi9wYXRo
MiIpKTsKLSAgICBxdF93ZWJwYWdlX3NldEdyb3VwTmFtZSh2aWV3Mi5wYWdlKCksICJncm91cDIi
KTsKLSAgICBRQ09NUEFSRShxdF93ZWJwYWdlX2dyb3VwTmFtZSh2aWV3MS5wYWdlKCkpLCBRU3Ry
aW5nKCJncm91cDEiKSk7Ci0gICAgUUNPTVBBUkUocXRfd2VicGFnZV9ncm91cE5hbWUodmlldzIu
cGFnZSgpKSwgUVN0cmluZygiZ3JvdXAyIikpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
Ojp3ZWJQYWdlU2V0R3JvdXBOYW1lKHZpZXcyLnBhZ2UoKSwgImdyb3VwMiIpOworICAgIFFDT01Q
QVJFKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3ZWJQYWdlR3JvdXBOYW1lKHZpZXcxLnBhZ2Uo
KSksIFFTdHJpbmcoImdyb3VwMSIpKTsKKyAgICBRQ09NUEFSRShEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6d2ViUGFnZUdyb3VwTmFtZSh2aWV3Mi5wYWdlKCkpLCBRU3RyaW5nKCJncm91cDIiKSk7
CiAKIAogICAgIHZpZXcxLnNldEh0bWwoUVN0cmluZygiPGh0bWw+PGJvZHk+IDwvYm9keT48L2h0
bWw+IiksIFFVcmwoImh0dHA6Ly93d3cubXlleGFtcGxlLmNvbSIpKTsKQEAgLTE1MzIsOCArMTUy
OSw2IEBAIHZvaWQgdHN0X1FXZWJQYWdlOjppbnB1dE1ldGhvZHNUZXh0Rm9ybWF0KCkKIAogICAg
IGRlbGV0ZSB2aWV3OwogfQotLy8gaW1wb3J0IGEgbGl0dGxlIERSVCBoZWxwZXIgZnVuY3Rpb24g
dG8gdHJpZ2dlciB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IKLXZvaWQgUVdFQktJVF9FWFBPUlQgcXRf
ZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgpOwogCiB2b2lkIHRzdF9RV2ViUGFnZTo6cHJv
dGVjdEJpbmRpbmdzUnVudGltZU9iamVjdHNGcm9tQ29sbGVjdG9yKCkKIHsKQEAgLTE1NTEsNyAr
MTU0Niw3IEBAIHZvaWQgdHN0X1FXZWJQYWdlOjpwcm90ZWN0QmluZGluZ3NSdW50aW1lT2JqZWN0
c0Zyb21Db2xsZWN0b3IoKQogCiAgICAgbmV3UGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgidGVzdG1lKCdmb28nKSIpOwogCi0gICAgcXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3Jf
Y29sbGVjdCgpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpnYXJiYWdlQ29sbGVjdG9y
Q29sbGVjdCgpOwogCiAgICAgLy8gZG9uJ3QgY3Jhc2ghCiAgICAgbmV3UGFnZS0+bWFpbkZyYW1l
KCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidGVzdG1lKCdiYXInKSIpOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ4YjE0NTYu
LmNiNTQ2ODAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0NyBAQAogMjAxMC0wNC0xMCAgUm9iZXJ0IEhvZ2Fu
ICA8cm9iZXJ0QHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVmYWN0b3IgUXQgRFJUIHN1cHBvcnQgaW4gUXRXZWJLaXQKKworICAg
ICAgICBVcGRhdGUgUXQgRFJUIHRvIHVzZSBuZXcgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQgc3Rh
dGljIGNsYXNzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNTg0NAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWU6OnJlc2V0VG9Db25zaXN0ZW50U3Rh
dGVCZWZvcmVUZXN0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlOjpkdW1w
RnJhbWVzQXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJl
ZVF0Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuY3BwOgor
ICAgICAgICAoR0NDb250cm9sbGVyOjpjb2xsZWN0KToKKyAgICAgICAgKEdDQ29udHJvbGxlcjo6
Y29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKToKKyAgICAgICAgKEdDQ29udHJvbGxlcjo6Z2V0SlNP
YmplY3RDb3VudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQu
aDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjb3VudGVyVmFsdWVGb3JFbGVtZW50
QnlJZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Vmlld01vZGVNZWRpYUZl
YXR1cmUpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1lZGlhVHlwZSk6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xvc2VXZWJJbnNwZWN0b3IpOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3IpOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IpOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQpOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQp
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25F
bGVtZW50V2l0aElkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYXVzZVRyYW5z
aXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUpOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbik6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxT
Y2hlbWUpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OndvcmtlclRocmVhZENvdW50
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5
SWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKworMjAx
MC0wNC0xMCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKICAgICAgICAgVW5y
ZXZpZXdlZCBmaXggdG8gcmVncmVzc2lvbnMgaW4gcjU3NDE2LgogCiAgICAgICAgIFtRdF0gRml4
IHJlZ3Jlc3Npb25zIGluIGh0dHAvdGVzdHMvbmF2aWdhdGlvbiBmcm9tIHI1NzQxNgpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHAg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAppbmRl
eCAwMTc5NDg2Li43NDMzYmQyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVRdC5oIgorI2luY2x1ZGUgIi4uLy4u
Ly4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oIgog
I2luY2x1ZGUgIkV2ZW50U2VuZGVyUXQuaCIKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXJRdC5oIgog
I2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyUXQuaCIKQEAgLTc5LDEzICs4MCw4IEBACiAK
ICNpbmNsdWRlIDxxZGVidWcuaD4KIAotZXh0ZXJuIHZvaWQgcXRfZHJ0X3J1bihib29sIGIpOwog
ZXh0ZXJuIHZvaWQgcXRfZHVtcF9zZXRfYWNjZXB0c19lZGl0aW5nKGJvb2wgYik7CiBleHRlcm4g
dm9pZCBxdF9kdW1wX2ZyYW1lX2xvYWRlcihib29sIGIpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X2Ns
ZWFyRnJhbWVOYW1lKFFXZWJGcmFtZSogcUZyYW1lKTsKLWV4dGVybiB2b2lkIHF0X2RydF9vdmVy
d3JpdGVQbHVnaW5EaXJlY3RvcmllcygpOwotZXh0ZXJuIHZvaWQgcXRfZHJ0X3Jlc2V0T3JpZ2lu
QWNjZXNzV2hpdGVMaXN0cygpOwotZXh0ZXJuIGJvb2wgcXRfZHJ0X2hhc0RvY3VtZW50RWxlbWVu
dChRV2ViRnJhbWUqIHFGcmFtZSk7CiBleHRlcm4gdm9pZCBxdF9kdW1wX3Jlc291cmNlX2xvYWRf
Y2FsbGJhY2tzKGJvb2wgYik7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0NCw3ICszNDAs
NyBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUoKQogICAgICwgbV9lbmFibGVUZXh0
T3V0cHV0KGZhbHNlKQogICAgICwgbV9zaW5nbGVGaWxlTW9kZShmYWxzZSkKIHsKLSAgICBxdF9k
cnRfb3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6b3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKTsKIAogICAgIGNoYXIqIGR1bXBSZW5k
ZXJUcmVlVGVtcCA9IGdldGVudigiRFVNUFJFTkRFUlRSRUVfVEVNUCIpOwogICAgIGlmIChkdW1w
UmVuZGVyVHJlZVRlbXApCkBAIC0zOTYsNyArMzkyLDggQEAgRHVtcFJlbmRlclRyZWU6OkR1bXBS
ZW5kZXJUcmVlKCkKICAgICAgICAgICAgIHRoaXMsIFNMT1Qoc3RhdHVzQmFyTWVzc2FnZShjb25z
dCBRU3RyaW5nJikpKTsKIAogICAgIFFPYmplY3Q6OmNvbm5lY3QodGhpcywgU0lHTkFMKHF1aXQo
KSksIHFBcHAsIFNMT1QocXVpdCgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwotICAgIHF0X2Ry
dF9ydW4odHJ1ZSk7CisKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0RHVtcFJlbmRl
clRyZWVNb2RlRW5hYmxlZCh0cnVlKTsKICAgICBRRm9jdXNFdmVudCBldmVudChRRXZlbnQ6OkZv
Y3VzSW4sIFF0OjpBY3RpdmVXaW5kb3dGb2N1c1JlYXNvbik7CiAgICAgUUFwcGxpY2F0aW9uOjpz
ZW5kRXZlbnQobV9tYWluVmlldywgJmV2ZW50KTsKIH0KQEAgLTQ1MSw3ICs0NDgsNyBAQCB2b2lk
IER1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpCiAg
ICAgbV9wYWdlLT51bmRvU3RhY2soKS0+Y2xlYXIoKTsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgp
LT5zZXRab29tRmFjdG9yKDEuMCk7CiAgICAgY2xlYXJIaXN0b3J5KG1fcGFnZSk7Ci0gICAgcXRf
ZHJ0X2NsZWFyRnJhbWVOYW1lKG1fcGFnZS0+bWFpbkZyYW1lKCkpOworICAgIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0OjpjbGVhckZyYW1lTmFtZShtX3BhZ2UtPm1haW5GcmFtZSgpKTsKIAogICAg
IG1fcGFnZS0+bWFpbkZyYW1lKCktPnNldFNjcm9sbEJhclBvbGljeShRdDo6VmVydGljYWwsIFF0
OjpTY3JvbGxCYXJBc05lZWRlZCk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+c2V0U2Nyb2xs
QmFyUG9saWN5KFF0OjpIb3Jpem9udGFsLCBRdDo6U2Nyb2xsQmFyQXNOZWVkZWQpOwpAQCAtNDU5
LDcgKzQ1Niw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGVC
ZWZvcmVUZXN0aW5nKCkKICAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5jbGVhcigpOwogICAgIFdv
cmtRdWV1ZTo6c2hhcmVkKCktPnNldEZyb3plbihmYWxzZSk7CiAKLSAgICBxdF9kcnRfcmVzZXRP
cmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJl
c2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwogCiAgICAgUUxvY2FsZTo6c2V0RGVmYXVsdChR
TG9jYWxlOjpjKCkpOwogICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKQEAgLTYyMCw3ICs2MTcs
NyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpoaWRlUGFnZSgpCiAKIFFTdHJpbmcgRHVtcFJlbmRl
clRyZWU6OmR1bXBGcmFtZXNBc1RleHQoUVdlYkZyYW1lKiBmcmFtZSkKIHsKLSAgICBpZiAoIWZy
YW1lIHx8ICFxdF9kcnRfaGFzRG9jdW1lbnRFbGVtZW50KGZyYW1lKSkKKyAgICBpZiAoIWZyYW1l
IHx8ICFEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aGFzRG9jdW1lbnRFbGVtZW50KGZyYW1lKSkK
ICAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKIAogICAgIFFTdHJpbmcgcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oCmluZGV4IDdh
Mjg1OGEuLjgzMDk0OTIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0R1bXBSZW5kZXJUcmVlUXQuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9E
dW1wUmVuZGVyVHJlZVF0LmgKQEAgLTUzLDYgKzUzLDcgQEAgUVRfRU5EX05BTUVTUEFDRQogY2xh
c3MgUVdlYkZyYW1lOwogCiBjbGFzcyBMYXlvdXRUZXN0Q29udHJvbGxlcjsKK2NsYXNzIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OwogY2xhc3MgRXZlbnRTZW5kZXI7CiBjbGFzcyBUZXh0SW5wdXRD
b250cm9sbGVyOwogY2xhc3MgR0NDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuY3BwCmluZGV4IDljYzNhYTcuLmJhN2UyYzMgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5jcHAK
QEAgLTI5LDE0ICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR0ND
b250cm9sbGVyUXQuaCIKKyNpbmNsdWRlICIuLi8uLi8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCIKIAogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CiAK
LWV4dGVybiBpbnQgcXRfZHJ0X2phdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKLWV4dGVybiB2b2lk
IHF0X2RydF9nYXJiYWdlQ29sbGVjdG9yX2NvbGxlY3QoKTsKLQotZXh0ZXJuIHZvaWQgcXRfZHJ0
X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGls
RG9uZSk7Ci0KIEdDQ29udHJvbGxlcjo6R0NDb250cm9sbGVyKFFXZWJQYWdlKiBwYXJlbnQpCiAg
ICAgOiBRT2JqZWN0KHBhcmVudCkKIHsKQEAgLTQ0LDE1ICs0MCwxNSBAQCBHQ0NvbnRyb2xsZXI6
OkdDQ29udHJvbGxlcihRV2ViUGFnZSogcGFyZW50KQogCiB2b2lkIEdDQ29udHJvbGxlcjo6Y29s
bGVjdCgpIGNvbnN0CiB7Ci0gICAgcXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCgpOwor
ICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdCgpOwog
fQogCiB2b2lkIEdDQ29udHJvbGxlcjo6Y29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2Fp
dFVudGlsRG9uZSkgY29uc3QKIHsKLSAgICBxdF9kcnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0
T25BbHRlcm5hdGVUaHJlYWQod2FpdFVudGlsRG9uZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQod2FpdFVudGls
RG9uZSk7CiB9CiAKIHNpemVfdCBHQ0NvbnRyb2xsZXI6OmdldEpTT2JqZWN0Q291bnQoKSBjb25z
dAogewotICAgIHJldHVybiBxdF9kcnRfamF2YVNjcmlwdE9iamVjdHNDb3VudCgpOworICAgIHJl
dHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6amF2YVNjcmlwdE9iamVjdHNDb3VudCgpOwog
fQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVy
UXQuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmgKaW5k
ZXggOGY1YjQzMi4uZWQyYTg1OCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvR0NDb250cm9sbGVyUXQuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9HQ0NvbnRyb2xsZXJRdC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8UU9iamVjdD4K
IAogY2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDsKIAogY2xh
c3MgR0NDb250cm9sbGVyIDogcHVibGljIFFPYmplY3QKIHsKQEAgLTQzLDYgKzQ0LDcgQEAgcHVi
bGljIHNsb3RzOgogICAgIHZvaWQgY29sbGVjdCgpIGNvbnN0OwogICAgIHZvaWQgY29sbGVjdE9u
QWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSkgY29uc3Q7CiAgICAgc2l6ZV90IGdl
dEpTT2JqZWN0Q291bnQoKSBjb25zdDsKKwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmlu
ZGV4IGJhZTkwMzEuLjJmOTQ0ZjQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAgKi8KICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxl
clF0LmgiCisjaW5jbHVkZSAiLi4vLi4vLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmgiCiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVF0LmgiCiAj
aW5jbHVkZSAiV29ya1F1ZXVlLmgiCkBAIC0zNiwzMCArMzcsMTAgQEAKICNpbmNsdWRlIDxRTG9j
YWxlPgogI2luY2x1ZGUgPHF3ZWJzZXR0aW5ncy5oPgogCi1leHRlcm4gdm9pZCBxdF93cnRfc2V0
Vmlld01vZGUoUVdlYlBhZ2UqLCBjb25zdCBRU3RyaW5nJiBtb2RlKTsKIGV4dGVybiB2b2lkIHF0
X2R1bXBfZWRpdGluZ19jYWxsYmFja3MoYm9vbCBiKTsKIGV4dGVybiB2b2lkIHF0X2R1bXBfZnJh
bWVfbG9hZGVyKGJvb2wgYik7CiBleHRlcm4gdm9pZCBxdF9kdW1wX3Jlc291cmNlX2xvYWRfY2Fs
bGJhY2tzKGJvb2wgYik7CiBleHRlcm4gdm9pZCBxdF9zZXRfd2lsbF9zZW5kX3JlcXVlc3RfcmV0
dXJuc19udWxsX29uX3JlZGlyZWN0KGJvb2wgYik7Ci1leHRlcm4gdm9pZCBxdF9kcnRfc2V0TWVk
aWFUeXBlKFFXZWJGcmFtZSogcWZyYW1lLCBjb25zdCBRU3RyaW5nJiB0eXBlKTsKLWV4dGVybiB2
b2lkIHF0X2RydF9zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKFFXZWJQYWdlKiwgYm9vbCk7Ci1l
eHRlcm4gdm9pZCBxdF9kcnRfc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoUVdlYkZyYW1l
KiwgYm9vbCBlbmFibGVkKTsKLWV4dGVybiB2b2lkIHF0X2RydF9zZXRUaW1lbGluZVByb2ZpbGlu
Z0VuYWJsZWQoUVdlYlBhZ2UqLCBib29sIGVuYWJsZWQpOwotZXh0ZXJuIGJvb2wgcXRfZHJ0X3Bh
dXNlQW5pbWF0aW9uKFFXZWJGcmFtZSosIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGRvdWJsZSB0aW1l
LCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOwotZXh0ZXJuIGJvb2wgcXRfZHJ0X3BhdXNlVHJh
bnNpdGlvbk9mUHJvcGVydHkoUVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYgbmFtZSwgZG91Ymxl
IHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7Ci1leHRlcm4gYm9vbCBxdF9kcnRfcGF1
c2VTVkdBbmltYXRpb24oUVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYgYW5pbWF0aW9uSWQsIGRv
dWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOwotZXh0ZXJuIGludCBxdF9kcnRf
bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFFXZWJGcmFtZSopOwotZXh0ZXJuIHZvaWQgcXRfZHJ0
X3NldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4s
IGNvbnN0IFFTdHJpbmcmIHNjaGVtZSk7Ci0KLWV4dGVybiB2b2lkIHF0X2RydF93aGl0ZUxpc3RB
Y2Nlc3NGcm9tT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmlu
ZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBi
b29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKLWV4dGVybiBRU3RyaW5nIHF0X2RydF9j
b3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIHFGcmFtZSwgY29uc3QgUVN0cmlu
ZyYgaWQpOwotZXh0ZXJuIGludCBxdF9kcnRfd29ya2VyVGhyZWFkQ291bnQoKTsKLWV4dGVybiBp
bnQgcXRfZHJ0X3BhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIHFGcmFtZSwgY29u
c3QgUVN0cmluZyYgaWQsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwotZXh0ZXJuIGludCBx
dF9kcnRfbnVtYmVyT2ZQYWdlcyhRV2ViRnJhbWUqIHFGcmFtZSwgZmxvYXQgd2lkdGgsIGZsb2F0
IGhlaWdodCk7Ci1leHRlcm4gdm9pZCBxdF9kcnRfd2ViaW5zcGVjdG9yX2V4ZWN1dGVTY3JpcHQo
UVdlYlBhZ2UqIHBhZ2UsIGxvbmcgY2FsbElkLCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpOwotZXh0
ZXJuIHZvaWQgcXRfZHJ0X3dlYmluc3BlY3Rvcl9zaG93KFFXZWJQYWdlICpwYWdlKTsKLWV4dGVy
biB2b2lkIHF0X2RydF93ZWJpbnNwZWN0b3JfY2xvc2UoUVdlYlBhZ2UgKnBhZ2UpOwotZXh0ZXJu
IHZvaWQgcXRfZHJ0X2VuYWJsZUNhcmV0QnJvd3NpbmcoUVdlYlBhZ2UqIHBhZ2UsIGJvb2wgdmFs
dWUpOwogZXh0ZXJuIHZvaWQgcXRfZHVtcF9ub3RpZmljYXRpb24oYm9vbCBiKTsKIAogTGF5b3V0
VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFdlYkNvcmU6OkR1bXBSZW5kZXJU
cmVlKiBkcnQpCkBAIC0xNDgsMTIgKzEyOSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
Ojp3YWl0VW50aWxEb25lKCkKIAogUVN0cmluZyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y291bnRl
clZhbHVlRm9yRWxlbWVudEJ5SWQoY29uc3QgUVN0cmluZyYgaWQpCiB7Ci0gICAgcmV0dXJuIHF0
X2RydF9jb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJh
bWUoKSwgaWQpOworICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y291bnRlclZh
bHVlRm9yRWxlbWVudEJ5SWQobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIGlkKTsKIH0K
IAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoY29u
c3QgUVN0cmluZyYgbW9kZSkKIHsKLSAgICBxdF93cnRfc2V0Vmlld01vZGUobV9kcnQtPndlYlBh
Z2UoKSwgbW9kZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFZpZXdNb2RlKG1f
ZHJ0LT53ZWJQYWdlKCksIG1vZGUpOwogfQogCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Ondl
Ykhpc3RvcnlJdGVtQ291bnQoKQpAQCAtMzIwLDEyICszMDEsMTMgQEAgUVN0cmluZyBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6ZGVjb2RlSG9zdE5hbWUoY29uc3QgUVN0cmluZyYgaG9zdCkKIAogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWVkaWFUeXBlKGNvbnN0IFFTdHJpbmcmIHR5cGUp
CiB7Ci0gICAgcXRfZHJ0X3NldE1lZGlhVHlwZShtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUo
KSwgdHlwZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1lZGlhVHlwZShtX2Ry
dC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKSwgdHlwZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmNsb3NlV2ViSW5zcGVjdG9yKCkKIHsKLSAgICBxdF9kcnRfd2ViaW5zcGVjdG9y
X2Nsb3NlKG1fZHJ0LT53ZWJQYWdlKCkpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3
ZWJJbnNwZWN0b3JDbG9zZShtX2RydC0+d2ViUGFnZSgpKTsKKyAgICBtX2RydC0+d2ViUGFnZSgp
LT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJFeHRyYXNF
bmFibGVkLCBmYWxzZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERldmVs
b3BlckV4dHJhc0VuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtMzM1LDE3ICszMTcsMTggQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChib29sIGVu
YWJsZWQpCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3IoKQog
ewotICAgIHF0X2RydF93ZWJpbnNwZWN0b3Jfc2hvdyhtX2RydC0+d2ViUGFnZSgpKTsKKyAgICBt
X2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpE
ZXZlbG9wZXJFeHRyYXNFbmFibGVkLCB0cnVlKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6d2ViSW5zcGVjdG9yU2hvdyhtX2RydC0+d2ViUGFnZSgpKTsKIH0KIAogdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihsb25nIGNhbGxJZCwgY29uc3Qg
UVN0cmluZyYgc2NyaXB0KQogewotICAgIHF0X2RydF93ZWJpbnNwZWN0b3JfZXhlY3V0ZVNjcmlw
dChtX2RydC0+d2ViUGFnZSgpLCBjYWxsSWQsIHNjcmlwdCk7CisgICAgRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OndlYkluc3BlY3RvckV4ZWN1dGVTY3JpcHQobV9kcnQtPndlYlBhZ2UoKSwgY2Fs
bElkLCBzY3JpcHQpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRGcmFtZUZs
YXR0ZW5pbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBxdF9kcnRfc2V0RnJhbWVGbGF0
dGVuaW5nRW5hYmxlZChtX2RydC0+d2ViUGFnZSgpLCBlbmFibGVkKTsKKyAgICBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChtX2RydC0+d2ViUGFnZSgp
LCBlbmFibGVkKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dVbml2
ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQpAQCAtMzY2LDEyICszNDksMTIg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1bnNp
Z25lZCBsb25nIGxvbmcgcXVvdGEpCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZh
U2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZSkKIHsKICAgICBzZXREZXZlbG9wZXJF
eHRyYXNFbmFibGVkKGVuYWJsZSk7Ci0gICAgcXRfZHJ0X3NldEphdmFTY3JpcHRQcm9maWxpbmdF
bmFibGVkKG1fdG9wTG9hZGluZ0ZyYW1lLCBlbmFibGUpOworICAgIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChtX3RvcExvYWRpbmdGcmFtZSwg
ZW5hYmxlKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGltZWxpbmVQcm9m
aWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlKQogewotICAgIHF0X2RydF9zZXRUaW1lbGluZVByb2Zp
bGluZ0VuYWJsZWQobV9kcnQtPndlYlBhZ2UoKSwgZW5hYmxlKTsKKyAgICBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKG1fZHJ0LT53ZWJQYWdlKCks
IGVuYWJsZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEZpeGVkQ29udGVu
dHNTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkKQEAgLTQyNiw3ICs0MDksNyBAQCBib29sIExh
eW91dFRlc3RDb250cm9sbGVyOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChj
b25zdCBRU3RyaW5nJiBhbgogewogICAgIFFXZWJGcmFtZSogZnJhbWUgPSBtX2RydC0+d2ViUGFn
ZSgpLT5tYWluRnJhbWUoKTsKICAgICBRX0FTU0VSVChmcmFtZSk7Ci0gICAgcmV0dXJuIHF0X2Ry
dF9wYXVzZUFuaW1hdGlvbihmcmFtZSwgYW5pbWF0aW9uTmFtZSwgdGltZSwgZWxlbWVudElkKTsK
KyAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnBhdXNlQW5pbWF0aW9uKGZyYW1l
LCBhbmltYXRpb25OYW1lLCB0aW1lLCBlbGVtZW50SWQpOwogfQogCiBib29sIExheW91dFRlc3RD
b250cm9sbGVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3QgUVN0
cmluZyYgcHJvcGVydHlOYW1lLApAQCAtNDM1LDcgKzQxOCw3IEBAIGJvb2wgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBRU3Ry
aW5nJiBwCiB7CiAgICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fZHJ0LT53ZWJQYWdlKCktPm1haW5G
cmFtZSgpOwogICAgIFFfQVNTRVJUKGZyYW1lKTsKLSAgICByZXR1cm4gcXRfZHJ0X3BhdXNlVHJh
bnNpdGlvbk9mUHJvcGVydHkoZnJhbWUsIHByb3BlcnR5TmFtZSwgdGltZSwgZWxlbWVudElkKTsK
KyAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnBhdXNlVHJhbnNpdGlvbk9mUHJv
cGVydHkoZnJhbWUsIHByb3BlcnR5TmFtZSwgdGltZSwgZWxlbWVudElkKTsKIH0KIAogYm9vbCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZShj
b25zdCBRU3RyaW5nJiBhbmltYXRpb25JZCwKQEAgLTQ0NCwxNCArNDI3LDE0IEBAIGJvb2wgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUoY29u
c3QgUVN0cmluZyYgYW5pCiB7CiAgICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fZHJ0LT53ZWJQYWdl
KCktPm1haW5GcmFtZSgpOwogICAgIFFfQVNTRVJUKGZyYW1lKTsKLSAgICByZXR1cm4gcXRfZHJ0
X3BhdXNlU1ZHQW5pbWF0aW9uKGZyYW1lLCBhbmltYXRpb25JZCwgdGltZSwgZWxlbWVudElkKTsK
KyAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnBhdXNlU1ZHQW5pbWF0aW9uKGZy
YW1lLCBhbmltYXRpb25JZCwgdGltZSwgZWxlbWVudElkKTsKIH0KIAogdW5zaWduZWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0CiB7CiAgICAg
UVdlYkZyYW1lKiBmcmFtZSA9IG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIFFf
QVNTRVJUKGZyYW1lKTsKLSAgICByZXR1cm4gcXRfZHJ0X251bWJlck9mQWN0aXZlQW5pbWF0aW9u
cyhmcmFtZSk7CisgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpudW1iZXJPZkFj
dGl2ZUFuaW1hdGlvbnMoZnJhbWUpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpk
aXNhYmxlSW1hZ2VMb2FkaW5nKCkKQEAgLTQ3OSw3ICs0NjIsNyBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpjbGVhckFsbERhdGFiYXNlcygpCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2lu
LCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0
aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgcXRf
ZHJ0X3doaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oc291cmNlT3JpZ2luLCBkZXN0aW5hdGlvblBy
b3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihzb3Vy
Y2VPcmlnaW4sIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjp3YWl0
Rm9yUG9saWN5RGVsZWdhdGUoKQpAQCAtNTE4LDcgKzUwMSw3IEBAIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oY29uc3QgUVN0cmluZyYgdXJsKQog
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29s
IHZhbHVlKQogewotICAgIHF0X2RydF9lbmFibGVDYXJldEJyb3dzaW5nKG1fZHJ0LT53ZWJQYWdl
KCksIHZhbHVlKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0Q2FyZXRCcm93c2lu
Z0VuYWJsZWQobV9kcnQtPndlYlBhZ2UoKSwgdmFsdWUpOwogfQogCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtNTMx
LDEyICs1MTQsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlU2hl
ZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29sIGZvcmJpZGRlbiwgY29u
c3QgUVN0cmluZyYgc2NoZW1lKQogewotICAgIHF0X2RydF9zZXREb21haW5SZWxheGF0aW9uRm9y
YmlkZGVuRm9yVVJMU2NoZW1lKGZvcmJpZGRlbiwgc2NoZW1lKTsKKyAgICBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShmb3Ji
aWRkZW4sIHNjaGVtZSk7CiB9CiAKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d29ya2VyVGhy
ZWFkQ291bnQoKQogewotICAgIHJldHVybiBxdF9kcnRfd29ya2VyVGhyZWFkQ291bnQoKTsKKyAg
ICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OndvcmtlclRocmVhZENvdW50KCk7CiB9
CiAKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGNv
bnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQpAQCAtNTQ3LDEyICs1
MzAsMTIgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5
SWQoY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0IHdpZHQKICAgICAgICAgaGVpZ2h0ID0gbV9kcnQt
PndlYlBhZ2UoKS0+dmlld3BvcnRTaXplKCkuaGVpZ2h0KCk7CiAgICAgfQogCi0gICAgcmV0dXJu
IHF0X2RydF9wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZy
YW1lKCksIGlkLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJh
bWUoKSwgaWQsIHdpZHRoLCBoZWlnaHQpOwogfQogCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
Om51bWJlck9mUGFnZXMoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKIHsKLSAgICByZXR1cm4g
cXRfZHJ0X251bWJlck9mUGFnZXMobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIHdpZHRo
LCBoZWlnaHQpOworICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6bnVtYmVyT2ZQ
YWdlcyhtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKSwgd2lkdGgsIGhlaWdodCk7CiB9CiAK
IGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxTaG91bGRDbG9zZU9uV2ViVmlldygpCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmgKaW5kZXggODE2MTBmNy4uZTI3MTE1ZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApAQCAtNDYsNiAr
NDYsNyBAQAogI2luY2x1ZGUgPHF3ZWJzZWN1cml0eW9yaWdpbi5oPgogCiBjbGFzcyBRV2ViRnJh
bWU7CitjbGFzcyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBEdW1wUmVuZGVyVHJlZTsKIH0KLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53084</attachid>
            <date>2010-04-11 03:46:40 -0700</date>
            <delta_ts>2010-04-16 17:27:08 -0700</delta_ts>
            <desc>LayoutTestController Commands Patch</desc>
            <filename>0001-Qt-Add-support-for-LayoutTestController-commands.patch</filename>
            <type>text/plain</type>
            <size>28965</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSBkODllZTUzMzhlMzU0MWQ3Mjc2NTljOTc1MTY0ZTMwNGEwY2EwYzZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEB3ZWJraXQub3JnPgpEYXRl
OiBTdW4sIDExIEFwciAyMDEwIDExOjMxOjE0ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gW1F0XSBB
ZGQgc3VwcG9ydCBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIgY29tbWFuZHM6CiAgICAgICAgICAg
IHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZAogICAgICAgICAgICBzZXRTZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkCiAgICAgICAgICAgIGV4ZWNDb21tYW5kCiAgICAgICAgICAgIGlz
Q29tbWFuZEVuYWJsZWQKCiAgICAgICAgVW5za2lwIHRlc3RzOgogICAgICAgIGVkaXRpbmcvZGVs
ZXRpbmcvc21hcnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCiAgICAgICAgZWRpdGluZy9leGVjQ29t
bWFuZC8xOTA4OS5odG1sCiAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtaW1hZ2Ut
aW4tYW5jaG9yLmh0bWwKICAgICAgICBlZGl0aW5nL2V4ZWNDb21tYW5kL2VuYWJsaW5nLWFuZC1z
ZWxlY3Rpb24tMi5odG1sCiAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hp
dGVzcGFjZS1jcmFzaC5odG1sCiAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2st
d2hpdGVzcGFjZS1pbWctY3Jhc2guaHRtbAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJs
ZWNsaWNrLXdoaXRlc3BhY2UuaHRtbAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1s
aW5lLmh0bWwKICAgICAgICBlZGl0aW5nL2RlbGV0aW5nLzUzMDAzNzkuaHRtbAogICAgICAgIGVk
aXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCiAgICAgICAgZWRpdGluZy9kZWxl
dGluZy9zbWFydC1kZWxldGUtMDA0Lmh0bWwKICAgICAgICBlZGl0aW5nL3NlbGVjdGlvbi81MTk1
MTY2LTEuaHRtbAogICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMi5odG1sCgogICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg0NAotLS0KIExh
eW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzNCAr
KysrKysrKysrKysrKysrKysrKwogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCAgICAg
ICAgICAgICAgICAgICAgfCAgIDE1IC0tLS0tLS0tLQogLi4uL3F0L2VkaXRpbmcvZGVsZXRpbmcv
NTMwMDM3OS1leHBlY3RlZC50eHQgICAgICAgfCAgICA4ICsrLS0KIC4uLi9lZGl0aW5nL2RlbGV0
aW5nL3NtYXJ0LWRlbGV0ZS0wMDMtZXhwZWN0ZWQudHh0IHwgICAzMiArKysrKysrKysrLS0tLS0t
LS0tCiAuLi4vZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDA0LWV4cGVjdGVkLnR4dCB8
ICAgMzIgKysrKysrKysrKy0tLS0tLS0tLQogLi4uL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUx
NjYtMS1leHBlY3RlZC50eHQgICAgfCAgICA0ICsrCiAuLi4vcXQvZWRpdGluZy9zZWxlY3Rpb24v
NTE5NTE2Ni0yLWV4cGVjdGVkLnR4dCAgICB8ICAgMTYgKysrKystLS0tLQogV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFdlYktpdC9x
dC9BcGkvcXdlYnBhZ2VfcC5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJL
aXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjcgKysr
KysrKysrKysrKysrCiAuLi4vcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuY3BwICB8ICAgMjIgKysrKysrKysrKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggfCAgICAyICsKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRRdC5jcHAgICAgICAgIHwgICAxMiArKysrKy0tCiBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaCAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIyICsrKysrKysr
KysrKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3Bw
IHwgICAgMiArCiAuLi4vRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHAgICB8ICAgMjAgKysrKysrKysrKysKIC4uLi9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmggICAgIHwgICAgNCArKwogMTggZmlsZXMgY2hhbmdlZCwgMTk2IGluc2Vy
dGlvbnMoKyksIDYxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS1leHBlY3RlZC50eHQKCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggYzg4ZmU2My4uMDg1YWFmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEwLTA0LTEx
ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEFkZCBzdXBwb3J0IGZvciBMYXlvdXRU
ZXN0Q29udHJvbGxlciBjb21tYW5kczoKKyAgICAgICAgICAgICAgICAgICBzZXRTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQKKyAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkCisgICAgICAgICAgICAgICAgICAgZXhlY0NvbW1hbmQKKyAgICAgICAgICAg
ICAgICAgICBpc0NvbW1hbmRFbmFibGVkCisKKyAgICAgICAgVW5za2lwIHRlc3RzOgorICAgICAg
ICBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWVkaXRpbmctZGlzYWJsZWQuaHRtbAorICAgICAgICBl
ZGl0aW5nL2V4ZWNDb21tYW5kLzE5MDg5Lmh0bWwKKyAgICAgICAgZWRpdGluZy9leGVjQ29tbWFu
ZC9kZWxldGUtaW1hZ2UtaW4tYW5jaG9yLmh0bWwKKyAgICAgICAgZWRpdGluZy9leGVjQ29tbWFu
ZC9lbmFibGluZy1hbmQtc2VsZWN0aW9uLTIuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVjdGlv
bi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWNyYXNoLmh0bWwKKyAgICAgICAgZWRpdGluZy9zZWxl
Y3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1pbWctY3Jhc2guaHRtbAorICAgICAgICBlZGl0
aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLmh0bWwKKyAgICAgICAgZWRpdGlu
Zy9zZWxlY3Rpb24vc2VsZWN0LWxpbmUuaHRtbAorICAgICAgICBlZGl0aW5nL2RlbGV0aW5nLzUz
MDAzNzkuaHRtbAorICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDMuaHRt
bAorICAgICAgICBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDQuaHRtbAorICAgICAg
ICBlZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRtbAorICAgICAgICBlZGl0aW5nL3NlbGVj
dGlvbi81MTk1MTY2LTIuaHRtbAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNTg0NAorCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9xdC9lZGl0aW5nL2RlbGV0aW5nLzUzMDAzNzktZXhwZWN0ZWQudHh0
OiBVcGRhdGUgcGxhdGZvcm0tc3BlY2lmaWMgcmVzdWx0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDMtZXhwZWN0ZWQudHh0OiBVcGRhdGUg
cGxhdGZvcm0tc3BlY2lmaWMgcmVzdWx0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9lZGl0aW5n
L2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDQtZXhwZWN0ZWQudHh0OiBVcGRhdGUgcGxhdGZvcm0t
c3BlY2lmaWMgcmVzdWx0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlv
bi81MTk1MTY2LTEtZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLWV4cGVjdGVkLnR4dC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTItZXhwZWN0ZWQudHh0OiBV
cGRhdGUgcGxhdGZvcm0tc3BlY2lmaWMgcmVzdWx0cy4KKwogMjAxMC0wNC0xMCAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggYTBmNjUxNi4uNTQyZTJmNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCkBAIC0zMzAsOSArMzMwLDYgQEAgZWRpdGluZy9zZWxlY3Rpb24vZG91
YmxlY2xpY2stYmVzaWRlLWNyLXNwYW4uaHRtbAogIyBNaXNzaW5nIGV2ZW50U2VuZGVyLmJlZ2lu
RHJhZ1dpdGhGaWxlcygpCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25l
LWZyYW1lcy5odG1sCiAKLSMgTWlzc2luZyBsYXlvdXRUZXN0Q29udHJvbGxlci5leGVjQ29tbWFu
ZCgpCi1lZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1pbWFnZS1pbi1hbmNob3IuaHRtbCAKLQog
IyBNaXNzaW5nIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFsd2F5c0FjY2VwdENvb2tpZXMoKQog
aHR0cC90ZXN0cy9wbHVnaW5zL3RoaXJkLXBhcnR5LWNvb2tpZS1hY2NlcHQtcG9saWN5Lmh0bWwK
IApAQCAtNDAwLDcgKzM5Nyw2IEBAIGZhc3QvcnVieS9ydWJ5RE9NLXJlbW92ZS10ZXh0Mi5odG1s
CiAKICMgLS0tLS0tLSBmYWlsaW5nIGVkaXRpbmcgdGVzdHMKIGVkaXRpbmcvZGVsZXRpbmcvZGVs
ZXRlLXRvLWVuZC1vZi1wYXJhZ3JhcGguaHRtbAotZWRpdGluZy9leGVjQ29tbWFuZC9lbmFibGlu
Zy1hbmQtc2VsZWN0aW9uLTIuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC9uc3Jlc3BvbmRlci1p
bmRlbnQuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC9uc3Jlc3BvbmRlci1vdXRkZW50Lmh0bWwK
IGVkaXRpbmcvaW5wdXQvZW1hY3MtY3RybC1vLmh0bWwKQEAgLTExODgsNyArMTE4NCw2IEBAIGZh
c3QvZm9ybXMvbWVudWxpc3Qtd2lkdGgtY2hhbmdlLmh0bWwKICMgcHV0IGludG8gdGhlIHNraXBw
ZWQgbGlzdCBmb3Igbm93IHRvIGhhdmUgc29tZSBraW5kIG9mCiAjIHJlZmVyZW5jZSwgc28gd2Ug
ZG9uJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLgogZWRpdGluZy9kZWxldGluZy81MTQ0MTM5LTIu
aHRtbAotZWRpdGluZy9kZWxldGluZy81MzAwMzc5Lmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVs
ZXRlLWJsb2NrLW1lcmdlLWNvbnRlbnRzLTAwMS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0
ZS1ibG9jay1tZXJnZS1jb250ZW50cy0wMTkuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUt
YmxvY2stbWVyZ2UtY29udGVudHMtMDIwLmh0bWwKQEAgLTExOTksOCArMTE5NCw2IEBAIGVkaXRp
bmcvZGVsZXRpbmcvZGVsZXRlLWxpbmUtZW5kLXdzLTAwMS5odG1sCiBlZGl0aW5nL2RlbGV0aW5n
L2RlbGV0ZS1saW5lLWVuZC13cy0wMDIuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtdG8t
c2VsZWN0LXRhYmxlLmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRpb25VSS1zaW5nbGUtaW5z
dGFuY2UuaHRtbAotZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDAzLmh0bWwKLWVkaXRp
bmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC5odG1sCiBlZGl0aW5nL2V4ZWNDb21tYW5kLzQ5
MjA0ODguaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC80OTIwNzQyLTEuaHRtbAogZWRpdGluZy9l
eGVjQ29tbWFuZC9jcmVhdGUtbGlzdC13aXRoLWhyLmh0bWwKQEAgLTEyMzIsMTUgKzEyMjUsMTIg
QEAgZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDAzLmh0bWwKIGVkaXRpbmcvcGFzdGVi
b2FyZC9xdWlya3MtbW9kZS1ici0xLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzQ5ODM4NTguaHRt
bAogZWRpdGluZy9zZWxlY3Rpb24vNTEzNjY5Ni5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi81MTk1
MTY2LTEuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0yLmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uL2FmdGVyLWxpbmUtd3JhcC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9lbmQtb2YtZG9j
dW1lbnQuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1sZWZ0LXJpZ2h0Lmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtMDAxLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVj
dC1hbGwtMDAyLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hbGwtMDAzLmh0bWwKLWVk
aXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1saW5lLmh0bWwKIGVkaXRpbmcvc3R5bGUvYXBwbGUtc3R5
bGUtZWRpdGFibGUtbWl4Lmh0bWwKIGVkaXRpbmcvc3R5bGUvY3JlYXRlLWJsb2NrLWZvci1zdHls
ZS0wMTIuaHRtbAogZWRpdGluZy9zdHlsZS9mb250LWZhbWlseS13aXRoLXNwYWNlLmh0bWwKQEAg
LTQ4NTAsMTUgKzQ4NDAsMTAgQEAgZG9tL3hodG1sL2xldmVsMy9jb3JlL2Nhbm9uaWNhbGZvcm0w
OS54aHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1cmUtMDAxLmh0bWwKIGVkaXRp
bmcvZGVsZXRpbmcvZGVsZXRlLWxpZ2F0dXJlLTAwMi5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2Rl
bGV0ZS1saWdhdHVyZS0wMDMuaHRtbAotZWRpdGluZy9kZWxldGluZy9zbWFydC1lZGl0aW5nLWRp
c2FibGVkLmh0bWwKLWVkaXRpbmcvZXhlY0NvbW1hbmQvMTkwODkuaHRtbAogZWRpdGluZy9pbnNl
cnRpbmcvNTgwMzcwNi0xLmh0bWwKIGVkaXRpbmcvaW5zZXJ0aW5nLzU5OTQ0ODAtMi5odG1sCiBl
ZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZXMtZHVyaW5nLXBhZ2UtZHJhZ3MuaHRtbAogZWRpdGluZy9w
YXN0ZWJvYXJkL2dldC1kYXRhLXRleHQtcGxhaW4tZHJvcC5odG1sCi1lZGl0aW5nL3NlbGVjdGlv
bi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWNyYXNoLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2Rv
dWJsZWNsaWNrLXdoaXRlc3BhY2UtaW1nLWNyYXNoLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2Rv
dWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZHJhZy1zdGFydC1l
dmVudC1jbGllbnQteC15Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24t
YmlkaS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9oaXQtdGVzdC1hbm9ueW1vdXMuaHRtbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9kZWxldGluZy81MzAwMzc5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvZGVsZXRpbmcv
NTMwMDM3OS1leHBlY3RlZC50eHQKaW5kZXggZjdlODQyZS4uMjM5NzVlMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9kZWxldGluZy81MzAwMzc5LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL2RlbGV0aW5nLzUzMDAz
NzktZXhwZWN0ZWQudHh0CkBAIC00LDggKzQsOCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAogICAgIFJlbmRl
ckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAogICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDAsMCkgc2l6ZSA3ODR4MAotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkg
c2l6ZSA3ODR4MTkKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNTN4
MTkKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1MzogIlN1Y2Nlc3MiCi0gICAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxOSkgc2l6ZSA3ODR4MAorICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MjAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgNjF4MjAKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA2
MTogIlN1Y2Nlc3MiCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwyMCkgc2l6ZSA3ODR4
MAogY2FyZXQ6IHBvc2l0aW9uIDcgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDIge0RJVn0g
b2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRl
LTAwMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL2RlbGV0
aW5nL3NtYXJ0LWRlbGV0ZS0wMDMtZXhwZWN0ZWQudHh0CmluZGV4IGNhNzNmMzMuLjMxMDc4ZWMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvZGVsZXRpbmcvc21h
cnQtZGVsZXRlLTAwMy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
ZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDAzLWV4cGVjdGVkLnR4dApAQCAtMSwxMSAr
MSwxMSBAQAotRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpy
YW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAorRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5F
ZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMyBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAogRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZp
Y2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihu
dWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpG
QUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRD
aGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGlu
ZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRp
b24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkRGVs
ZXRlRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gNyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50Ci1F
RElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20g
NCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDcgb2YgI3RleHQg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNCBv
ZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgI3RleHQgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5
RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxk
RGVsZXRlRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
CitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZy
b20gMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2YgI3Rl
eHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20g
MyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmlu
aXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VO
b3RpZmljYXRpb24KIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMApAQCAtMTMsMTMgKzEzLDE1
IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCiAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKLSAgICAgIFJlbmRlckJsb2NrIHtQ
fSBhdCAoMCwwKSBzaXplIDc4NHgzOAotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA3NjR4MzgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzOTQ6ICJU
aGlzIHRlc3RzIGRlbGV0aW5nIGEgc2VsZWN0aW9uIGNyZWF0ZWQgd2l0aCBhIHdvcmQgZ3JhbnVs
YXJpdHkuICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzk0LDApIHdpZHRoIDM0NTogIlRvIHJ1
biBpdCBtYW51YWxseSwgZG91YmxlIGNsaWNrIG9uICdiYXInIGFuZCBoaXQgZGVsZXRlLiAiCi0g
ICAgICAgICAgdGV4dCBydW4gYXQgKDczOSwwKSB3aWR0aCAyNTogIllvdSIKLSAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwxOSkgd2lkdGggMTI4OiAic2hvdWxkIHNlZSAnZm9vIGJhcicuIgotICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTIpIHNpemUgNzg0eDE5Ci0gICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUxeDE5Ci0gICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggNTE6ICJmb28gIGJheiIKLWNhcmV0OiBwb3NpdGlvbiA0IG9mIGNoaWxkIDAg
eyN0ZXh0fSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hU
TUx9IG9mIGRvY3VtZW50CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4
NDAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzY3eDQwCisgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDM5OiAiVGhpcyB0ZXN0cyBkZWxldGluZyBh
IHNlbGVjdGlvbiBjcmVhdGVkIHdpdGggYSB3b3JkIGdyYW51bGFyaXR5LiAiCisgICAgICAgICAg
dGV4dCBydW4gYXQgKDQzOSwwKSB3aWR0aCAzMjg6ICJUbyBydW4gaXQgbWFudWFsbHksIGRvdWJs
ZSBjbGljayBvbiAnYmFyJyBhbmQgaGl0IgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIwKSB3
aWR0aCA1MjogImRlbGV0ZS4gIgorICAgICAgICAgIHRleHQgcnVuIGF0ICg1MiwyMCkgd2lkdGgg
MTc3OiAiWW91IHNob3VsZCBzZWUgJ2ZvbyBiYXonLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDU2KSBzaXplIDc4NHgyMAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAyMngyMAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIyOiAiZm9v
IgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIyLDApIHNpemUgMzF4MjAKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMjIsMCkgd2lkdGggMzE6ICIgYmF6IgorY2FyZXQ6IHBvc2l0aW9u
IDMgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0g
b2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2VkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0w
MDQtZXhwZWN0ZWQudHh0CmluZGV4IDU4MzQyMmYuLjA2YmJhMzcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9kZWxldGluZy9z
bWFydC1kZWxldGUtMDA0LWV4cGVjdGVkLnR4dApAQCAtMSwxMSArMSwxMSBAQAotRURJVElORyBE
RUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudAorRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpy
YW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJl
Z2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCitFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gNSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUg
b2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVj
dGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
Tm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJh
bmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDUgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdl
OnJhbmdlIGZyb20gNCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRv
IDEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1Nl
bGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkRGVsZXRlRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSA0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNyBvZiAj
dGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50Ci1FRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gNCBvZiAjdGV4dCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDcgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNCBvZiAjdGV4dCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNl
bGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkRGVsZXRlRE9NUmFuZ2U6cmFu
Z2UgZnJvbSA0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBv
ZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGls
bFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIGxheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMApAQCAtMTMsMTMgKzEzLDE1IEBAIGxheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc4NHg1ODQKLSAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4
NHgzOAotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NDB4MzgKLSAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzOTQ6ICJUaGlzIHRlc3RzIGRlbGV0aW5n
IGEgc2VsZWN0aW9uIGNyZWF0ZWQgd2l0aCBhIHdvcmQgZ3JhbnVsYXJpdHkuICIKLSAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMzk0LDApIHdpZHRoIDM0NjogIlRvIHJ1biBpdCBtYW51YWxseSwgZG91
YmxlIGNsaWNrIG9uICdiYXInIGFuZCBoaXQgZm9yd2FyZCIKLSAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwxOSkgd2lkdGggNDc6ICJkZWxldGUuICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDcs
MTkpIHdpZHRoIDE1NzogIllvdSBzaG91bGQgc2VlICdmb28gYmFyJy4iCi0gICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMCw1Mikgc2l6ZSA3ODR4MTkKLSAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgNTF4MTkKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCA1MTogImZvbyAgYmF6IgotY2FyZXQ6IHBvc2l0aW9uIDQgb2YgY2hpbGQgMCB7I3RleHR9IG9m
IGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9j
dW1lbnQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHg0MAorICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3Njd4NDAKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA0Mzk6ICJUaGlzIHRlc3RzIGRlbGV0aW5nIGEgc2VsZWN0aW9u
IGNyZWF0ZWQgd2l0aCBhIHdvcmQgZ3JhbnVsYXJpdHkuICIKKyAgICAgICAgICB0ZXh0IHJ1biBh
dCAoNDM5LDApIHdpZHRoIDMyODogIlRvIHJ1biBpdCBtYW51YWxseSwgZG91YmxlIGNsaWNrIG9u
ICdiYXInIGFuZCBoaXQiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjApIHdpZHRoIDEwOTog
ImZvcndhcmQgZGVsZXRlLiAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDEwOSwyMCkgd2lkdGgg
MTc3OiAiWW91IHNob3VsZCBzZWUgJ2ZvbyBiYXonLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDU2KSBzaXplIDc4NHgyMAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAyMngyMAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIyOiAiZm9v
IgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIyLDApIHNpemUgMzF4MjAKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMjIsMCkgd2lkdGggMzE6ICIgYmF6IgorY2FyZXQ6IHBvc2l0aW9u
IDMgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0g
b2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiYzgyNzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi81MTk1
MTY2LTEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0cyBmb3IgYSBidWcg
d2hlcmUgZXh0ZW5kaW5nIGEgc2VsZWN0aW9uIGNyZWF0ZWQgd2l0aCB0aGUgbW91c2Ugd291bGQg
YmxvdyBpdCBhd2F5IGJlZm9yZSBleHRlbmRpbmcgaXQuCisKK1RoZXJlIHNob3VsZCBiZSBzaXgg
Y2hhcmFjdGVycyBzZWxlY3RlZCBpbiB0aGlzIHNlbnRlbmNlIG9uIE1hYyBhbmQgZm91ciBjaGFy
YWN0ZXJzIHNlbGVjdGVkIG9uIFdpbi9MaW51eC4KK1N1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTIt
ZXhwZWN0ZWQudHh0CmluZGV4IGZmN2U5ZGUuLmJlOGQ5YjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMi1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0y
LWV4cGVjdGVkLnR4dApAQCAtMTMsMTMgKzEzLDEzIEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAogICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAogbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCiAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
LSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzgKLSAgICAgIFJlbmRl
ckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOQotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSA2NjB4MTkKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCA2NjA6ICJUaGlzIHRlc3RzIGZvciBhIGJ1ZyB3aGVyZSBzZWxlY3Rpb24gY2hhbmdlIG5vdGlm
aWNhdGlvbnMgd291bGQgcG9zdCB0aGUgd3JvbmcgcHJvcG9zZWQgc2VsZWN0ZWQgcmFuZ2UuIgot
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzMpIHNpemUgNzg0eDE5Ci0gICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM2NXgxOQotICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDM2NTogIlRoZXJlIHNob3VsZCBiZSBmaXZlIGNoYXJhY3RlcnMgc2Vs
ZWN0ZWQgaW4gdGhpcyBzZW50ZW5jZS4iCi0gICAgICBSZW5kZXJCbG9jayB7VUx9IGF0ICgwLDY2
KSBzaXplIDc4NHgwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2
CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MjAKKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzM3eDIwCisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggNzM3OiAiVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgc2VsZWN0aW9u
IGNoYW5nZSBub3RpZmljYXRpb25zIHdvdWxkIHBvc3QgdGhlIHdyb25nIHByb3Bvc2VkIHNlbGVj
dGVkIHJhbmdlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM2KSBzaXplIDc4NHgy
MAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0MDZ4MjAKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0MDY6ICJUaGVyZSBzaG91bGQgYmUgZml2ZSBj
aGFyYWN0ZXJzIHNlbGVjdGVkIGluIHRoaXMgc2VudGVuY2UuIgorICAgICAgUmVuZGVyQmxvY2sg
e1VMfSBhdCAoMCw3Mikgc2l6ZSA3ODR4MAogc2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAwIG9m
IGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNo
aWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CiBzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDIgb2Yg
Y2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hp
bGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXggMTgwYzdhZi4uZWI2ZmMw
ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5jcHAKQEAgLTM5Nyw2ICszOTcsOCBAQCBRV2ViUGFnZVByaXZhdGU6OlFX
ZWJQYWdlUHJpdmF0ZShRV2ViUGFnZSAqcXEpCiAjaWZuZGVmIFFUX05PX0NPTlRFWFRNRU5VCiAg
ICAgY3VycmVudENvbnRleHRNZW51ID0gMDsKICNlbmRpZgorICAgIHNtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZCA9IGZhbHNlOworICAgIHNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgPSBm
YWxzZTsKIAogICAgIGhpc3RvcnkuZCA9IG5ldyBRV2ViSGlzdG9yeVByaXZhdGUocGFnZS0+YmFj
a0ZvcndhcmRMaXN0KCkpOwogICAgIG1lbXNldChhY3Rpb25zLCAwLCBzaXplb2YoYWN0aW9ucykp
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmggYi9XZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlX3AuaAppbmRleCAxOTg3ODA3Li5mNDAwNTNiIDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlX3AuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaApAQCAt
MTY0LDYgKzE2NCw4IEBAIHB1YmxpYzoKICAgICBRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm5ldHdv
cmtNYW5hZ2VyOwogCiAgICAgYm9vbCBmb3J3YXJkVW5zdXBwb3J0ZWRDb250ZW50OworICAgIGJv
b2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkOworICAgIGJvb2wgc2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZDsKICAgICBRV2ViUGFnZTo6TGlua0RlbGVnYXRpb25Qb2xpY3kgbGlua1Bv
bGljeTsKIAogICAgIFFTaXplIHZpZXdwb3J0U2l6ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9D
aGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDg1YzNlYTQuLmFmMjQ3NzAgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMwIEBACisyMDEwLTA0LTExICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIEFkZCBzdXBwb3J0IGZvciBMYXlvdXRUZXN0Q29udHJvbGxlciBjb21tYW5kczoKKyAgICAg
ICAgICAgICAgICAgICBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQKKyAgICAgICAgICAgICAg
ICAgICBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkCisgICAgICAgICAgICAgICAg
ICAgZXhlY0NvbW1hbmQKKyAgICAgICAgICAgICAgICAgICBpc0NvbW1hbmRFbmFibGVkCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0CisKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2Vi
UGFnZVByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXhlY3V0ZUNvcmVDb21t
YW5kQnlOYW1lKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojppc0NvbW1hbmRF
bmFibGVkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojppc1NlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0
Lmg6CisKIDIwMTAtMDQtMTAgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcCBi
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKaW5k
ZXggNTJhMzkxZS4uYjBjYjY2MiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCkBAIC0zNTEsMyArMzUxLDI1IEBAIHZvaWQg
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFZpZXdNb2RlKFFXZWJQYWdlKiBwYWdlLCBjb25z
dCBRU3RyaW5nJiBtb2RlKQogICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVTdHlsZVNlbGVj
dG9yKCk7CiAgICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsKIH0KKwordm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBi
b29sIGVuYWJsZWQpCit7CisgICAgcGFnZS0+ZC0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkID0g
ZW5hYmxlZDsKK30KKworCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRTZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKFFXZWJQYWdlKiBwYWdlLCBib29sIGVuYWJsZWQpCit7
CisgICAgcGFnZS0+ZC0+c2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA9IGVuYWJsZWQ7
Cit9CisKKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXhlY3V0ZUNvcmVDb21tYW5k
QnlOYW1lKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBjb25zdCBRU3RyaW5n
JiB2YWx1ZSkKK3sKKyAgICBwYWdlLT5oYW5kbGUoKS0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5leGVjdXRlKHZh
bHVlKTsKK30KKworYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aXNDb21tYW5kRW5hYmxl
ZChRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gcGFn
ZS0+aGFuZGxlKCktPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuaXNFbmFibGVkKCk7Cit9CmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCBiL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCmluZGV4IDdlMDNk
N2MuLjY2NTZlNGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5oCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5oCkBAIC0zOCw2ICszOCw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyB2b2lkIGV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0
cmluZyYgbmFtZSwgY29uc3QgUVN0cmluZyYgdmFsdWUpOwogICAgIHN0YXRpYyBib29sIGlzQ29t
bWFuZEVuYWJsZWQoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG5hbWUpOworICAgIHN0
YXRpYyB2b2lkIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChRV2ViUGFnZSogcGFnZSwgYm9v
bCBlbmFibGVkKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkKFFXZWJQYWdlKiBwYWdlLCBib29sIGVuYWJsZWQpOwogCiAgICAgc3RhdGljIGJvb2wg
cGF1c2VBbmltYXRpb24oUVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYgbmFtZSwgZG91YmxlIHRp
bWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CiAgICAgc3RhdGljIGJvb2wgcGF1c2VUcmFu
c2l0aW9uT2ZQcm9wZXJ0eShRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBkb3VibGUg
dGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuY3BwCmluZGV4IDVlYzNhMTguLjhhMGFhMDggMTAwNjQ0Ci0tLSBh
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcApAQCAtMzMzLDE0ICszMzMsMTgg
QEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6cGFnZURlc3Ryb3llZCgpCiAKIGJvb2wgRWRpdG9yQ2xp
ZW50UXQ6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fcGFnZS0+ZC0+c21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkOworfQorCit2b2lkIEVkaXRvckNsaWVudFF0Ojp0b2dnbGVTbWFydEluc2Vy
dERlbGV0ZSgpCit7CisgICAgYm9vbCBjdXJyZW50ID0gbV9wYWdlLT5kLT5zbWFydEluc2VydERl
bGV0ZUVuYWJsZWQ7CisgICAgbV9wYWdlLT5kLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSAh
Y3VycmVudDsKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6aXNTZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gbV9wYWdlLT5kLT5zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
OwogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0Ojp0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2lu
ZygpCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQu
aCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCmluZGV4IGQ2YzI0
OGQuLjZjMjA4OTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5oCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5o
CkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRl
UmFuZ2UoUmFuZ2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd0RlbGV0ZUludGVyZmFj
ZShIVE1MRWxlbWVudCopOwogICAgIHZpcnR1YWwgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQoKTsgCisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCk7CiAgICAg
dmlydHVhbCBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpOyAKICAgICB2
aXJ0dWFsIGJvb2wgaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCAzYzllZjFi
Li45Y2M5NTk1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDQtMTEgIFJvYmVydCBIb2dh
biAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtRdF0gQWRkIHN1cHBvcnQgZm9yIExheW91dFRlc3RDb250cm9sbGVy
IGNvbW1hbmRzOgorICAgICAgICAgICAgICAgICAgIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxl
ZAorICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQK
KyAgICAgICAgICAgICAgICAgICBleGVjQ29tbWFuZAorICAgICAgICAgICAgICAgICAgIGlzQ29t
bWFuZEVuYWJsZWQKKworCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNTg0NAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRy
ZWVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJQYWdlOjpyZXNldFNldHRpbmdzKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQp
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV4ZWNDb21tYW5k
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjppc0NvbW1hbmRFbmFibGVkKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisKIDIw
MTAtMDQtMTEgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbUXRdIFVucmV2aWV3ZWQgYnVpbGRmaXggZm9yIC0tZGVidWcgYnVpbGQgYWZ0ZXIgcjU3NDMz
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRy
ZWVRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0
LmNwcAppbmRleCA3NDMzYmQyLi5kODIzOTRiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcApAQCAtMTkzLDYgKzE5Myw4IEBAIHZv
aWQgV2ViUGFnZTo6cmVzZXRTZXR0aW5ncygpCiAKICAgICBtX2RydC0+bGF5b3V0VGVzdENvbnRy
b2xsZXIoKS0+c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoZmFsc2UpOwogICAgIG1fZHJ0LT5sYXlv
dXRUZXN0Q29udHJvbGxlcigpLT5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKGZhbHNlKTsKKyAg
ICBtX2RydC0+bGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2V0U21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKHRydWUpOworICAgIG1fZHJ0LT5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT5zZXRTZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGZhbHNlKTsKIAogICAgIC8vIGdsb2JhbFNldHRpbmdz
IG11c3QgYmUgcmVzZXQgZXhwbGljaXRseS4KICAgICBtX2RydC0+bGF5b3V0VGVzdENvbnRyb2xs
ZXIoKS0+c2V0WFNTQXVkaXRvckVuYWJsZWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCAy
Zjk0NGY0Li5jOTI0MGM3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcApAQCAtNTY4LDUgKzU2OCwyNSBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTY3JvbGxiYXJQb2xpY3koY29uc3QgUVN0cmlu
ZyYgb3JpZW50YXRpb24sIGNvbnN0CiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCkt
PnNldFNjcm9sbEJhclBvbGljeShvLCBwKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAgIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQobV9kcnQtPndl
YlBhZ2UoKSwgZW5hYmxlKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAgICBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChtX2Ry
dC0+d2ViUGFnZSgpLCBlbmFibGUpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpl
eGVjQ29tbWFuZChjb25zdCBRU3RyaW5nJiBuYW1lLCBjb25zdCBRU3RyaW5nJiB2YWx1ZSkKK3sK
KyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKG1f
ZHJ0LT53ZWJQYWdlKCksIG5hbWUsIHZhbHVlKTsKK30KKworYm9vbCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6aXNDb21tYW5kRW5hYmxlZChjb25zdCBRU3RyaW5nJiBuYW1lKSBjb25zdAoreworICAg
IHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aXNDb21tYW5kRW5hYmxlZChtX2RydC0+
d2ViUGFnZSgpLCBuYW1lKTsKK30KKwogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6Om1heFZpZXdXaWR0aCA9IDgwMDsKIGNvbnN0IHVuc2lnbmVkIExheW91dFRlc3RDb250cm9s
bGVyOjptYXhWaWV3SGVpZ2h0ID0gNjAwOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IGUyNzExNWYuLjkwMmQx
ZjIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmgKQEAgLTE0NCw2ICsxNDQsMTAgQEAgcHVibGljIHNsb3RzOgogICAg
IHZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0Q2Fy
ZXRCcm93c2luZ0VuYWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0Vmlld01vZGVNZWRp
YUZlYXR1cmUoY29uc3QgUVN0cmluZyYgbW9kZSk7CisgICAgdm9pZCBzZXRTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoYm9vbCBlbmFibGUpOworICAgIHZvaWQgc2V0U2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZChib29sIGVuYWJsZSk7CisgICAgdm9pZCBleGVjQ29tbWFuZChjb25zdCBR
U3RyaW5nJiBuYW1lLCBjb25zdCBRU3RyaW5nJiB2YWx1ZSA9IFFTdHJpbmcoKSk7CisgICAgYm9v
bCBpc0NvbW1hbmRFbmFibGVkKGNvbnN0IFFTdHJpbmcmIG5hbWUpIGNvbnN0OwogCiAgICAgYm9v
bCBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBRU3RyaW5nJiBhbmlt
YXRpb25OYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKICAgICBi
b29sIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBRU3RyaW5nJiBw
cm9wZXJ0eU5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOwotLSAK
MS42LjMuMwoK
</data>
<flag name="review"
          id="36736"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>