<?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>225362</bug_id>
          
          <creation_ts>2021-05-04 10:48:34 -0700</creation_ts>
          <short_desc>Port Filesystem::fileMetadata() &amp; Filesystem::getFileModificationTime() to std::filesystem</short_desc>
          <delta_ts>2023-07-11 00:32:17 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225491</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=225507</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=259098</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1756591</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 10:48:34 -0700</bug_when>
    <thetext>Port Filesystem::getFileModificationTime() to std::filesystem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756592</commentid>
    <comment_count>1</comment_count>
      <attachid>427686</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 10:49:49 -0700</bug_when>
    <thetext>Created attachment 427686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756595</commentid>
    <comment_count>2</comment_count>
      <attachid>427687</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 10:55:21 -0700</bug_when>
    <thetext>Created attachment 427687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756617</commentid>
    <comment_count>3</comment_count>
      <attachid>427687</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 11:52:27 -0700</bug_when>
    <thetext>Comment on attachment 427687
Patch

Looks like the new test is failing for the GTK port. Will try and figure it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756618</commentid>
    <comment_count>4</comment_count>
      <attachid>427690</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 11:57:53 -0700</bug_when>
    <thetext>Created attachment 427690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756621</commentid>
    <comment_count>5</comment_count>
      <attachid>427691</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 12:04:48 -0700</bug_when>
    <thetext>Created attachment 427691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756637</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 13:00:31 -0700</bug_when>
    <thetext>Test is still failing in GTK:
../../Tools/TestWebKitAPI/Tests/WTF/FileSystem.cpp:560
Expected: (newModificationTime-&gt;secondsSinceEpoch().value()) &gt; (timeBeforeModification.secondsSinceEpoch().value()), actual: -4.81751e+09 vs 1.62016e+09

Look like I am getting a negative modification time :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756647</commentid>
    <comment_count>7</comment_count>
      <attachid>427694</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 13:29:53 -0700</bug_when>
    <thetext>Created attachment 427694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756722</commentid>
    <comment_count>8</comment_count>
      <attachid>427712</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 16:58:35 -0700</bug_when>
    <thetext>Created attachment 427712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756733</commentid>
    <comment_count>9</comment_count>
      <attachid>427694</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-04 17:16:15 -0700</bug_when>
    <thetext>Comment on attachment 427694
Patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:633
&gt; +    auto modificationTimeAsTimeT = std::chrono::system_clock::to_time_t(std::chrono::time_point_cast&lt;std::chrono::system_clock::duration&gt;(modificationTime - decltype(modificationTime)::clock::now() + std::chrono::system_clock::now()));

There must be a way that doesn’t depend on two subsequent calls to now!

I looked here https://stackoverflow.com/questions/61030383/how-to-convert-stdfilesystemfile-time-type-to-time-t

Didn’t find something better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756735</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 17:27:34 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 427694 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427694&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/FileSystem.cpp:633
&gt; &gt; +    auto modificationTimeAsTimeT = std::chrono::system_clock::to_time_t(std::chrono::time_point_cast&lt;std::chrono::system_clock::duration&gt;(modificationTime - decltype(modificationTime)::clock::now() + std::chrono::system_clock::now()));
&gt; 
&gt; There must be a way that doesn’t depend on two subsequent calls to now!
&gt; 
&gt; I looked here
&gt; https://stackoverflow.com/questions/61030383/how-to-convert-
&gt; stdfilesystemfile-time-type-to-time-t
&gt; 
&gt; Didn’t find something better.

I did some research and apparently there is no good way with C++17. This is the best I could find so I did this and added a FIXME comment for when we switch to C++20 (which has a better way).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756741</commentid>
    <comment_count>11</comment_count>
      <attachid>427712</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-04 17:45:44 -0700</bug_when>
    <thetext>Comment on attachment 427712
Patch

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

&gt; Source/WTF/wtf/FileSystem.h:120
&gt; -WTF_EXPORT_PRIVATE Optional&lt;FileMetadata&gt; fileMetadata(const String&amp; path);
&gt; -WTF_EXPORT_PRIVATE Optional&lt;FileMetadata&gt; fileMetadataFollowingSymlinks(const String&amp; path);
&gt; +WTF_EXPORT_PRIVATE Optional&lt;FileMetadata&gt; fileMetadata(const String&amp; path, ShouldFollowSymbolicLinks = ShouldFollowSymbolicLinks::No);

Is this an improvement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756748</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 18:00:36 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #11)
&gt; Comment on attachment 427712 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427712&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/FileSystem.h:120
&gt; &gt; -WTF_EXPORT_PRIVATE Optional&lt;FileMetadata&gt; fileMetadata(const String&amp; path);
&gt; &gt; -WTF_EXPORT_PRIVATE Optional&lt;FileMetadata&gt; fileMetadataFollowingSymlinks(const String&amp; path);
&gt; &gt; +WTF_EXPORT_PRIVATE Optional&lt;FileMetadata&gt; fileMetadata(const String&amp; path, ShouldFollowSymbolicLinks = ShouldFollowSymbolicLinks::No);
&gt; 
&gt; Is this an improvement?

I think so. We already have the ShouldFollowSymbolicLinks enum and use it for other FileSystem functions. I don&apos;t see why fileMetadata() needs a separate function for this. I hesitated making the parameter mandatory though.

You seem to disagree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756749</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-04 18:12:47 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; You seem to disagree?

I generally prefer named functions to parameters that set policy for a function, except in cases where the combinatorial explosion makes them impractical, or when it’s more common to pass an argument through from one level to the next, rather than pass a constant.

Just seems less wordy and more human.

I think I inherited that preference from Cocoa naming style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756752</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 18:22:55 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; (In reply to Chris Dumez from comment #12)
&gt; &gt; You seem to disagree?
&gt; 
&gt; I generally prefer named functions to parameters that set policy for a
&gt; function, except in cases where the combinatorial explosion makes them
&gt; impractical, or when it’s more common to pass an argument through from one
&gt; level to the next, rather than pass a constant.
&gt; 
&gt; Just seems less wordy and more human.
&gt; 
&gt; I think I inherited that preference from Cocoa naming style.

Ok. I will revert this part of my change since it seems a little controversial. I do think that we should make our FileSystem API consistent eventually though, in one direction or another (I have a slight preference for the parameter but I won&apos;t fight you on this).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756756</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-04 18:31:07 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; I do think that we should make our FileSystem API consistent
&gt; eventually though, in one direction or another (I have a slight preference
&gt; for the parameter but I won&apos;t fight you on this).

I agree.

And my preference is also slight!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756757</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-04 18:31:52 -0700</bug_when>
    <thetext>Another strength of having a separate named function is that it’s easier to find out if it’s used or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756763</commentid>
    <comment_count>17</comment_count>
      <attachid>427722</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 18:41:32 -0700</bug_when>
    <thetext>Created attachment 427722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756791</commentid>
    <comment_count>18</comment_count>
      <attachid>427729</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 20:53:22 -0700</bug_when>
    <thetext>Created attachment 427729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756952</commentid>
    <comment_count>19</comment_count>
      <attachid>427771</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 09:11:40 -0700</bug_when>
    <thetext>Created attachment 427771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756953</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 09:14:22 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; (In reply to Darin Adler from comment #9)
&gt; &gt; Comment on attachment 427694 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=427694&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/FileSystem.cpp:633
&gt; &gt; &gt; +    auto modificationTimeAsTimeT = std::chrono::system_clock::to_time_t(std::chrono::time_point_cast&lt;std::chrono::system_clock::duration&gt;(modificationTime - decltype(modificationTime)::clock::now() + std::chrono::system_clock::now()));
&gt; &gt; 
&gt; &gt; There must be a way that doesn’t depend on two subsequent calls to now!
&gt; &gt; 
&gt; &gt; I looked here
&gt; &gt; https://stackoverflow.com/questions/61030383/how-to-convert-
&gt; &gt; stdfilesystemfile-time-type-to-time-t
&gt; &gt; 
&gt; &gt; Didn’t find something better.
&gt; 
&gt; I did some research and apparently there is no good way with C++17. This is
&gt; the best I could find so I did this and added a FIXME comment for when we
&gt; switch to C++20 (which has a better way).

In this latest iteration, I use SFINAE to use std::filesystem::file_time_type::clock::to_time_t() whenever available (It is available on my machine but according to [1] is not available in MSVC and GCC 9).

[1] https://en.cppreference.com/w/cpp/filesystem/file_time_type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756954</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 09:15:06 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #20)
&gt; (In reply to Chris Dumez from comment #10)
&gt; &gt; (In reply to Darin Adler from comment #9)
&gt; &gt; &gt; Comment on attachment 427694 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=427694&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WTF/wtf/FileSystem.cpp:633
&gt; &gt; &gt; &gt; +    auto modificationTimeAsTimeT = std::chrono::system_clock::to_time_t(std::chrono::time_point_cast&lt;std::chrono::system_clock::duration&gt;(modificationTime - decltype(modificationTime)::clock::now() + std::chrono::system_clock::now()));
&gt; &gt; &gt; 
&gt; &gt; &gt; There must be a way that doesn’t depend on two subsequent calls to now!
&gt; &gt; &gt; 
&gt; &gt; &gt; I looked here
&gt; &gt; &gt; https://stackoverflow.com/questions/61030383/how-to-convert-
&gt; &gt; &gt; stdfilesystemfile-time-type-to-time-t
&gt; &gt; &gt; 
&gt; &gt; &gt; Didn’t find something better.
&gt; &gt; 
&gt; &gt; I did some research and apparently there is no good way with C++17. This is
&gt; &gt; the best I could find so I did this and added a FIXME comment for when we
&gt; &gt; switch to C++20 (which has a better way).
&gt; 
&gt; In this latest iteration, I use SFINAE to use
&gt; std::filesystem::file_time_type::clock::to_time_t() whenever available (It
&gt; is available on my machine but according to [1] is not available in MSVC and
&gt; GCC 9).
&gt; 
&gt; [1] https://en.cppreference.com/w/cpp/filesystem/file_time_type

But of course, it doesn&apos;t build on GTK :face-palm:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756956</commentid>
    <comment_count>22</comment_count>
      <attachid>427773</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 09:25:51 -0700</bug_when>
    <thetext>Created attachment 427773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756959</commentid>
    <comment_count>23</comment_count>
      <attachid>427774</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 09:36:15 -0700</bug_when>
    <thetext>Created attachment 427774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756969</commentid>
    <comment_count>24</comment_count>
      <attachid>427774</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-05 10:03:57 -0700</bug_when>
    <thetext>Comment on attachment 427774
Patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:671
&gt; +    if (shouldFollowSymbolicLinks == ShouldFollowSymbolicLinks::Yes &amp;&amp; std::filesystem::is_symlink(fsPath, ec)) {
&gt; +        fsPath = std::filesystem::read_symlink(fsPath, ec);
&gt; +        if (ec)
&gt; +            return WTF::nullopt;
&gt; +    }

This follows one level of symbolic link. To &quot;follow&quot; a symbolic ink I think we may need to do this in a loop, likely with a limit of some sort to deal with cycles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756974</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 10:07:42 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #24)
&gt; Comment on attachment 427774 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427774&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/FileSystem.cpp:671
&gt; &gt; +    if (shouldFollowSymbolicLinks == ShouldFollowSymbolicLinks::Yes &amp;&amp; std::filesystem::is_symlink(fsPath, ec)) {
&gt; &gt; +        fsPath = std::filesystem::read_symlink(fsPath, ec);
&gt; &gt; +        if (ec)
&gt; &gt; +            return WTF::nullopt;
&gt; &gt; +    }
&gt; 
&gt; This follows one level of symbolic link. To &quot;follow&quot; a symbolic ink I think
&gt; we may need to do this in a loop, likely with a limit of some sort to deal
&gt; with cycles.

Interesting. I did not realize this was a thing. I&apos;ll write a test and tweak the code accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756992</commentid>
    <comment_count>26</comment_count>
      <attachid>427781</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 10:56:58 -0700</bug_when>
    <thetext>Created attachment 427781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757490</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-06 10:31:03 -0700</bug_when>
    <thetext>Anybody willing to review this? I have addressed all the feedback so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757504</commentid>
    <comment_count>28</comment_count>
      <attachid>427781</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-06 11:02:41 -0700</bug_when>
    <thetext>Comment on attachment 427781
Patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:130
&gt; +    std::time_t timeT = toTimeT(fileTime);
&gt; +    return WallTime::fromRawSeconds(timeT);

Don’t think we need the local variable.

&gt; Source/WTF/wtf/FileSystem.cpp:133
&gt; +static std::filesystem::path resolveSymlinks(std::filesystem::path path, std::error_code ec)

I think we intend that ec is an in/out argument, but here it’s only being passed in. I would expect tests to fail because of this, since failure would not be propagated to the caller.

&gt; Source/WTF/wtf/FileSystem.cpp:136
&gt; +    static const unsigned maxSymlinkDepth = MAXSYMLINKS;

constexpr

&gt; Source/WTF/wtf/FileSystem.cpp:138
&gt; +    static const unsigned maxSymlinkDepth = 40;

constexpr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757509</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-06 11:04:17 -0700</bug_when>
    <thetext>Started reviewing yesterday and spotted one significant mistake that makes me worry about the thoroughness of our testing. Don’t have time to finish reviewing right now, but sent you my comment in progress that include that mistake.

I applaud the goal of making this more elegant and less platform-specific, but I am worried about making a lot of changes here with room for error, without extensive testing, and without obvious compelling, concrete benefit that would cause us to take the risk. That’s why I am not super-fast to review, since I feel we need to be cautious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757521</commentid>
    <comment_count>30</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-06 11:24:03 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #29)
&gt; Started reviewing yesterday and spotted one significant mistake that makes
&gt; me worry about the thoroughness of our testing. Don’t have time to finish
&gt; reviewing right now, but sent you my comment in progress that include that
&gt; mistake.
&gt; 
&gt; I applaud the goal of making this more elegant and less platform-specific,
&gt; but I am worried about making a lot of changes here with room for error,
&gt; without extensive testing, and without obvious compelling, concrete benefit
&gt; that would cause us to take the risk. That’s why I am not super-fast to
&gt; review, since I feel we need to be cautious.

I understand. I would just like to point out that we had almost no testing for our FileSystem API and my patches do bring in API tests. Clearly my tests were not enough since you&apos;ve spotted mistakes but I have added tests for every mistake you spotted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757539</commentid>
    <comment_count>31</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-06 11:39:58 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #28)
&gt; Comment on attachment 427781 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427781&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/FileSystem.cpp:130
&gt; &gt; +    std::time_t timeT = toTimeT(fileTime);
&gt; &gt; +    return WallTime::fromRawSeconds(timeT);
&gt; 
&gt; Don’t think we need the local variable.

Will fix.

&gt; 
&gt; &gt; Source/WTF/wtf/FileSystem.cpp:133
&gt; &gt; +static std::filesystem::path resolveSymlinks(std::filesystem::path path, std::error_code ec)
&gt; 
&gt; I think we intend that ec is an in/out argument, but here it’s only being
&gt; passed in. I would expect tests to fail because of this, since failure would
&gt; not be propagated to the caller.

The function also returns a default-constructed path when failing so the caller (even though it didn&apos;t have the right error_code) would still fail later on.

&gt; 
&gt; &gt; Source/WTF/wtf/FileSystem.cpp:136
&gt; &gt; +    static const unsigned maxSymlinkDepth = MAXSYMLINKS;
&gt; 
&gt; constexpr
&gt; 
&gt; &gt; Source/WTF/wtf/FileSystem.cpp:138
&gt; &gt; +    static const unsigned maxSymlinkDepth = 40;
&gt; 
&gt; constexpr

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757547</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-06 11:46:43 -0700</bug_when>
    <thetext>Yes, really happy about the new tests you are adding! If someone else doesn’t review, I will eventually get to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757552</commentid>
    <comment_count>33</comment_count>
      <attachid>427916</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-06 11:56:20 -0700</bug_when>
    <thetext>Created attachment 427916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757700</commentid>
    <comment_count>34</comment_count>
      <attachid>427916</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-06 16:23:53 -0700</bug_when>
    <thetext>Comment on attachment 427916
Patch

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

&gt; LayoutTests/ChangeLog:8
&gt; +        Stop testing the size of a directory in the data transfer API as the result is implementation-specific.

I understand that this test wasn’t a good way to test the value of size. But is it right to just stop testing it at all? How can we best make sure it keeps working properly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757702</commentid>
    <comment_count>35</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-06 16:27:32 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #34)
&gt; Comment on attachment 427916 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427916&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:8
&gt; &gt; +        Stop testing the size of a directory in the data transfer API as the result is implementation-specific.
&gt; 
&gt; I understand that this test wasn’t a good way to test the value of size. But
&gt; is it right to just stop testing it at all? How can we best make sure it
&gt; keeps working properly?

Maybe I can just add 0 to the list of allowed values then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757718</commentid>
    <comment_count>36</comment_count>
      <attachid>427958</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-06 16:44:44 -0700</bug_when>
    <thetext>Created attachment 427958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757783</commentid>
    <comment_count>37</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-06 21:09:31 -0700</bug_when>
    <thetext>Found 1 new test failure: http/tests/media/clearkey/collect-webkit-media-session.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757787</commentid>
    <comment_count>38</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-06 22:00:47 -0700</bug_when>
    <thetext>Committed r277158 (237444@main): &lt;https://commits.webkit.org/237444@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427958.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757788</commentid>
    <comment_count>39</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-06 22:01:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/77640765&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427686</attachid>
            <date>2021-05-04 10:49:49 -0700</date>
            <delta_ts>2021-05-04 10:55:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225362-20210504104948.patch</filename>
            <type>text/plain</type>
            <size>6622</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFmNWZmMjhhMmFkYzI2OTQzNjY1MmM2
ODQ2YjhjM2UxY2I4MTIzYmIuLjYzNjJiNGY3MWIxNGYyZGE0ZjdjNzZmZWZlMDcxMDUwOTdhYTFl
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDUtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRp
b25UaW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25U
aW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtIGFuZCBnZXQgcmlkIG9mCisgICAgICAgIHBsYXRmb3Jt
LXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNw
cDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmdldEZpbGVNb2RpZmljYXRpb25UaW1l
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHA6CisgICAgICAgIChXVEY6
OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6IERlbGV0ZWQuCisgICAg
ICAgICogd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6IERlbGV0ZWQuCisgICAgICAgICog
d3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKTogRGVsZXRlZC4KKwogMjAyMS0wNS0wMyAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBNb3ZlIEdQ
VVByb2Nlc3MgV2ViR0wgdG8gRXhwZXJpbWVudGFsIEZlYXR1cmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAK
aW5kZXggZjdkNjc0OWNjOWViZTVjOTE5N2JkMDg4MDBhZDY4MjkyODFmMjlkYy4uNmUwMDUzZTI5
Mzk1ODhjODRkNzYwYTNmMzY4OGMzOTE5NDU1MzdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAg
LTYyMyw1ICs2MjMsMTQgQEAgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgpCiAgICAgcmV0dXJuICFlYzsKIH0KIAorT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBzdGQ6OmVycm9y
X2NvZGUgZWM7CisgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gc3RkOjpmaWxlc3lzdGVtOjps
YXN0X3dyaXRlX3RpbWUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgZWMp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
V2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6
Y2hyb25vOjpuYW5vc2Vjb25kcz4obW9kaWZpY2F0aW9uVGltZS50aW1lX3NpbmNlX2Vwb2NoKCkp
LmNvdW50KCkgLyAxMDAwMDAwMDAwLik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1J
bXBsCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIv
RmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAKaW5kZXggNjNkNWRhZjFhOTk0ZmY3MjBjYzk0MzAzYzFmM2M1MmJhNDRlNDA4My4uYjFlMTFk
YTkzMDU2MWEwZWJlNjJhODQ2NmQ3NzRjNGViZmQzZjU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9G
aWxlU3lzdGVtR2xpYi5jcHAKQEAgLTE1MiwxNSArMTUyLDYgQEAgT3B0aW9uYWw8V2FsbFRpbWU+
IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7Ci0gICAgaWYgKCFn
ZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3Rf
bXRpbWUpOwotfQotCiBzdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUo
R1N0YXRCdWYgc3RhdFJlc3VsdCkKIHsKICAgICBpZiAoU19JU0RJUihzdGF0UmVzdWx0LnN0X21v
ZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggYmZlOGZh
YmI2YmZjNjcwZTRlZTRiMzBkOGIzYzQ4ZTQ3OWRjNWQyMy4uZTk4ZWI0Njc0ZmIyYTcyZjAzMGU4
NGNjNDRmNzBiNzdjYTMzYzM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9T
SVguY3BwCkBAIC0xODYsMjEgKzE4Niw2IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3Jl
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1PcHRpb25hbDxXYWxs
VGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAg
IENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBp
ZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0gICAgaWYg
KHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9t
dGltZSk7Ci19Ci0KIHN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShz
dHJ1Y3Qgc3RhdCBmaWxlSW5mbykKIHsKICAgICBpZiAoU19JU0RJUihmaWxlSW5mby5zdF9tb2Rl
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBmZDU5ZjE5MDNlNmUxZmU4
NGQxNThkNTc1YTk2MjllYWI5MDBjOWQ1Li5mOTMxNDU1MDZlZWM1N2VmMWNiMzA4YWM4NmQyYmQy
ZWJkMDNiMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0xMTQsMTcg
KzExNCw2IEBAIGJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUs
IGxvbmcgbG9uZyYgc2l6ZSkKICAgICByZXR1cm4gZ2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxl
SW5mb3JtYXRpb25TdHJ1Y3R1cmUoZmlsZUluZm9ybWF0aW9uLCBzaXplKTsKIH0KIAotT3B0aW9u
YWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkK
LXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0RmluZERhdGEo
cGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgdGlt
ZV90IHRpbWUgPSAwOwotICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGZp
bmREYXRhLCB0aW1lKTsKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWUp
OwotfQotCiBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJp
bmcmIHBhdGgpCiB7CiAgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0YWUwNWRhNGU0ZDMzNDgz
NDk1NTRlOGNjMDVlNGQyMzM4YTI4YTA3Li41ZDk5NjZkYTNmZjhkYzU4Y2ViMDc1ZDBmYThlZWZl
ZWE0ZGUzNDAxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25U
aW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisKIDIwMjEtMDUtMDMgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0gTW92ZSBHUFVQcm9jZXNzIFdlYkdMIHRvIEV4cGVy
aW1lbnRhbCBGZWF0dXJlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0
ZW0uY3BwCmluZGV4IDhiNzNhZjFlODhkYWYyYmJlZGU2MjkzNmJhYzg3ZmMyZTRkODY4OGMuLjI1
NTQ5MjE3Nzk5YmViN2IwMmEyNjI5NzgyNzk4MTc4NGQwMjIwZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSAiVXRpbGl0aWVz
LmgiCiAjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTUyOCw0ICs1MjksMzYgQEAg
VEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBjcmVhdGVIYXJkTGlua09yQ29weUZpbGUpCiAgICAgRVhQ
RUNUX0VRKGxpbmtGaWxlU2l6ZSwgZmlsZVNpemUpOwogfQogCitURVNUX0YoRmlsZVN5c3RlbVRl
c3QsIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKQoreworICAgIGF1dG8gbW9kaWZpY2F0aW9uVGlt
ZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHRlbXBGaWxlUGF0aCgpKTsK
KyAgICBFWFBFQ1RfVFJVRSghIW1vZGlmaWNhdGlvblRpbWUpOworICAgIGlmICghbW9kaWZpY2F0
aW9uVGltZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xl
ZXAoMSk7CisKKyAgICBFWFBFQ1RfTFQoKm1vZGlmaWNhdGlvblRpbWUsIFdhbGxUaW1lOjpub3co
KSk7CisKKyAgICBhdXRvIHRpbWVCZWZvcmVNb2RpZmljYXRpb24gPSBXYWxsVGltZTo6bm93KCk7
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgxKTsKKworICAgIC8vIE1vZGlmeSB0
aGUgZmlsZS4KKyAgICBhdXRvIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZSh0ZW1w
RmlsZVBhdGgoKSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUpOworICAgIEVY
UEVDVF9UUlVFKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOworICAgIEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsICJmb28iLCBzdHJsZW4oImZvbyIpKTsK
KyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpzbGVlcCgxKTsKKworICAgIGF1dG8gbmV3TW9kaWZpY2F0aW9uVGltZSA9IEZp
bGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBF
WFBFQ1RfVFJVRSghIW5ld01vZGlmaWNhdGlvblRpbWUpOworICAgIGlmICghbmV3TW9kaWZpY2F0
aW9uVGltZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRVhQRUNUX0dUKCpuZXdNb2RpZmljYXRp
b25UaW1lLCBtb2RpZmljYXRpb25UaW1lKTsKKyAgICBFWFBFQ1RfR1QoKm5ld01vZGlmaWNhdGlv
blRpbWUsIHRpbWVCZWZvcmVNb2RpZmljYXRpb24pOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427687</attachid>
            <date>2021-05-04 10:55:21 -0700</date>
            <delta_ts>2021-05-04 11:57:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225362-20210504105520.patch</filename>
            <type>text/plain</type>
            <size>6642</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFmNWZmMjhhMmFkYzI2OTQzNjY1MmM2
ODQ2YjhjM2UxY2I4MTIzYmIuLjYzNjJiNGY3MWIxNGYyZGE0ZjdjNzZmZWZlMDcxMDUwOTdhYTFl
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDUtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRp
b25UaW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25U
aW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtIGFuZCBnZXQgcmlkIG9mCisgICAgICAgIHBsYXRmb3Jt
LXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNw
cDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmdldEZpbGVNb2RpZmljYXRpb25UaW1l
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHA6CisgICAgICAgIChXVEY6
OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6IERlbGV0ZWQuCisgICAg
ICAgICogd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6IERlbGV0ZWQuCisgICAgICAgICog
d3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKTogRGVsZXRlZC4KKwogMjAyMS0wNS0wMyAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBNb3ZlIEdQ
VVByb2Nlc3MgV2ViR0wgdG8gRXhwZXJpbWVudGFsIEZlYXR1cmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAK
aW5kZXggZjdkNjc0OWNjOWViZTVjOTE5N2JkMDg4MDBhZDY4MjkyODFmMjlkYy4uNjhjMjk3Mjhk
MDBiZWQ3ODJhYWFmMzdkNzUwNmUwMGM4ZjU5Mzk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAg
LTYyMyw1ICs2MjMsMTQgQEAgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgpCiAgICAgcmV0dXJuICFlYzsKIH0KIAorT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBzdGQ6OmVycm9y
X2NvZGUgZWM7CisgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gc3RkOjpmaWxlc3lzdGVtOjps
YXN0X3dyaXRlX3RpbWUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgZWMp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
V2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKFNlY29uZHM6OmZyb21OYW5vc2Vjb25kcyhzdGQ6OmNo
cm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bmFub3NlY29uZHM+KG1vZGlmaWNhdGlv
blRpbWUudGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpKS52YWx1ZSgpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9n
bGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCA2M2Q1ZGFmMWE5OTRmZjcyMGNjOTQzMDNjMWYz
YzUyYmE0NGU0MDgzLi5iMWUxMWRhOTMwNTYxYTBlYmU2MmE4NDY2ZDc3NGM0ZWJmZDNmNTdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMTUyLDE1ICsxNTIsNiBA
QCBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKQog
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1N0YXRCdWYgc3Rh
dFJlc3VsdDsKLSAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSk7Ci19Ci0KIHN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5
cGUgdG9GaWxlTWV0YXRhVHlwZShHU3RhdEJ1ZiBzdGF0UmVzdWx0KQogewogICAgIGlmIChTX0lT
RElSKHN0YXRSZXN1bHQuc3RfbW9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcAppbmRleCBiZmU4ZmFiYjZiZmM2NzBlNGVlNGIzMGQ4YjNjNDhlNDc5ZGM1ZDIzLi5l
OThlYjQ2NzRmYjJhNzJmMDMwZTg0Y2M0NGY3MGI3N2NhMzNjMzdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTE4NiwyMSArMTg2LDYgQEAgT3B0aW9uYWw8
V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlm
CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9
PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgc3RydWN0IHN0YXQg
ZmlsZUluZm87Ci0KLSAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKTsKLX0KLQogc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlw
ZSB0b0ZpbGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZvKQogewogICAgIGlmIChTX0lT
RElSKGZpbGVJbmZvLnN0X21vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmlu
ZGV4IGZkNTlmMTkwM2U2ZTFmZTg0ZDE1OGQ1NzVhOTYyOWVhYjkwMGM5ZDUuLmY5MzE0NTUwNmVl
YzU3ZWYxY2IzMDhhYzg2ZDJiZDJlYmQwM2IzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAKQEAgLTExNCwxNyArMTE0LDYgQEAgYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZUhhbmRsZSwgbG9uZyBsb25nJiBzaXplKQogICAgIHJldHVybiBnZXRGaWxl
U2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24s
IHNpemUpOwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0g
ICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KLSAgICB0aW1lX3QgdGltZSA9IDA7Ci0gICAgZ2V0RmlsZU1vZGlmaWNhdGlv
blRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOwotICAgIHJldHVybiBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHModGltZSk7Ci19Ci0KIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3Jl
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZp
bmREYXRhOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDRhZTA1ZGE0ZTRkMzM0ODM0OTU1NGU4Y2MwNWU0ZDIzMzhhMjhhMDcuLjVkOTk2NmRhM2Zm
OGRjNThjZWIwNzVkMGZhOGVlZmVlYTRkZTM0MDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNS0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTM2MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFn
ZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0wNS0wMyAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBNb3ZlIEdQVVBy
b2Nlc3MgV2ViR0wgdG8gRXhwZXJpbWVudGFsIEZlYXR1cmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggOGI3M2FmMWU4OGRhZjJiYmVkZTYyOTM2
YmFjODdmYzJlNGQ4Njg4Yy4uMjU1NDkyMTc3OTliZWI3YjAyYTI2Mjk3ODI3OTgxNzg0ZDAyMjBm
NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlRlc3QuaCIK
KyNpbmNsdWRlICJVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpA
QCAtNTI4LDQgKzUyOSwzNiBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGNyZWF0ZUhhcmRMaW5r
T3JDb3B5RmlsZSkKICAgICBFWFBFQ1RfRVEobGlua0ZpbGVTaXplLCBmaWxlU2l6ZSk7CiB9CiAK
K1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpCit7CisgICAg
YXV0byBtb2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUodGVtcEZpbGVQYXRoKCkpOworICAgIEVYUEVDVF9UUlVFKCEhbW9kaWZpY2F0aW9uVGltZSk7
CisgICAgaWYgKCFtb2RpZmljYXRpb25UaW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgxKTsKKworICAgIEVYUEVDVF9MVCgqbW9kaWZpY2F0aW9u
VGltZSwgV2FsbFRpbWU6Om5vdygpKTsKKworICAgIGF1dG8gdGltZUJlZm9yZU1vZGlmaWNhdGlv
biA9IFdhbGxUaW1lOjpub3coKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDEp
OworCisgICAgLy8gTW9kaWZ5IHRoZSBmaWxlLgorICAgIGF1dG8gZmlsZUhhbmRsZSA9IEZpbGVT
eXN0ZW06Om9wZW5GaWxlKHRlbXBGaWxlUGF0aCgpLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6
OlJlYWRXcml0ZSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChm
aWxlSGFuZGxlKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgImZv
byIsIHN0cmxlbigiZm9vIikpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxl
KTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDEpOworCisgICAgYXV0byBuZXdN
b2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUodGVt
cEZpbGVQYXRoKCkpOworICAgIEVYUEVDVF9UUlVFKCEhbmV3TW9kaWZpY2F0aW9uVGltZSk7Cisg
ICAgaWYgKCFuZXdNb2RpZmljYXRpb25UaW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBFWFBF
Q1RfR1QoKm5ld01vZGlmaWNhdGlvblRpbWUsIG1vZGlmaWNhdGlvblRpbWUpOworICAgIEVYUEVD
VF9HVCgqbmV3TW9kaWZpY2F0aW9uVGltZSwgdGltZUJlZm9yZU1vZGlmaWNhdGlvbik7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427690</attachid>
            <date>2021-05-04 11:57:53 -0700</date>
            <delta_ts>2021-05-04 12:04:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225362-20210504115752.patch</filename>
            <type>text/plain</type>
            <size>6777</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFmNWZmMjhhMmFkYzI2OTQzNjY1MmM2
ODQ2YjhjM2UxY2I4MTIzYmIuLjYzNjJiNGY3MWIxNGYyZGE0ZjdjNzZmZWZlMDcxMDUwOTdhYTFl
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDUtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRp
b25UaW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25U
aW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtIGFuZCBnZXQgcmlkIG9mCisgICAgICAgIHBsYXRmb3Jt
LXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNw
cDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmdldEZpbGVNb2RpZmljYXRpb25UaW1l
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHA6CisgICAgICAgIChXVEY6
OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6IERlbGV0ZWQuCisgICAg
ICAgICogd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6IERlbGV0ZWQuCisgICAgICAgICog
d3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKTogRGVsZXRlZC4KKwogMjAyMS0wNS0wMyAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBNb3ZlIEdQ
VVByb2Nlc3MgV2ViR0wgdG8gRXhwZXJpbWVudGFsIEZlYXR1cmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAK
aW5kZXggZjdkNjc0OWNjOWViZTVjOTE5N2JkMDg4MDBhZDY4MjkyODFmMjlkYy4uNjhjMjk3Mjhk
MDBiZWQ3ODJhYWFmMzdkNzUwNmUwMGM4ZjU5Mzk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAg
LTYyMyw1ICs2MjMsMTQgQEAgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgpCiAgICAgcmV0dXJuICFlYzsKIH0KIAorT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBzdGQ6OmVycm9y
X2NvZGUgZWM7CisgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gc3RkOjpmaWxlc3lzdGVtOjps
YXN0X3dyaXRlX3RpbWUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgZWMp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
V2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKFNlY29uZHM6OmZyb21OYW5vc2Vjb25kcyhzdGQ6OmNo
cm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bmFub3NlY29uZHM+KG1vZGlmaWNhdGlv
blRpbWUudGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpKS52YWx1ZSgpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9n
bGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCA2M2Q1ZGFmMWE5OTRmZjcyMGNjOTQzMDNjMWYz
YzUyYmE0NGU0MDgzLi5iMWUxMWRhOTMwNTYxYTBlYmU2MmE4NDY2ZDc3NGM0ZWJmZDNmNTdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMTUyLDE1ICsxNTIsNiBA
QCBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKQog
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1N0YXRCdWYgc3Rh
dFJlc3VsdDsKLSAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSk7Ci19Ci0KIHN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5
cGUgdG9GaWxlTWV0YXRhVHlwZShHU3RhdEJ1ZiBzdGF0UmVzdWx0KQogewogICAgIGlmIChTX0lT
RElSKHN0YXRSZXN1bHQuc3RfbW9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcAppbmRleCBiZmU4ZmFiYjZiZmM2NzBlNGVlNGIzMGQ4YjNjNDhlNDc5ZGM1ZDIzLi5l
OThlYjQ2NzRmYjJhNzJmMDMwZTg0Y2M0NGY3MGI3N2NhMzNjMzdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTE4NiwyMSArMTg2LDYgQEAgT3B0aW9uYWw8
V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlm
CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9
PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgc3RydWN0IHN0YXQg
ZmlsZUluZm87Ci0KLSAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKTsKLX0KLQogc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlw
ZSB0b0ZpbGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZvKQogewogICAgIGlmIChTX0lT
RElSKGZpbGVJbmZvLnN0X21vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmlu
ZGV4IGZkNTlmMTkwM2U2ZTFmZTg0ZDE1OGQ1NzVhOTYyOWVhYjkwMGM5ZDUuLmY5MzE0NTUwNmVl
YzU3ZWYxY2IzMDhhYzg2ZDJiZDJlYmQwM2IzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAKQEAgLTExNCwxNyArMTE0LDYgQEAgYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZUhhbmRsZSwgbG9uZyBsb25nJiBzaXplKQogICAgIHJldHVybiBnZXRGaWxl
U2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24s
IHNpemUpOwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0g
ICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KLSAgICB0aW1lX3QgdGltZSA9IDA7Ci0gICAgZ2V0RmlsZU1vZGlmaWNhdGlv
blRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOwotICAgIHJldHVybiBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHModGltZSk7Ci19Ci0KIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3Jl
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZp
bmREYXRhOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDRhZTA1ZGE0ZTRkMzM0ODM0OTU1NGU4Y2MwNWU0ZDIzMzhhMjhhMDcuLjVkOTk2NmRhM2Zm
OGRjNThjZWIwNzVkMGZhOGVlZmVlYTRkZTM0MDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNS0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTM2MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFn
ZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0wNS0wMyAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBNb3ZlIEdQVVBy
b2Nlc3MgV2ViR0wgdG8gRXhwZXJpbWVudGFsIEZlYXR1cmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggOGI3M2FmMWU4OGRhZjJiYmVkZTYyOTM2
YmFjODdmYzJlNGQ4Njg4Yy4uNGFiMDUwMWMxNGVmMTk3MGIwZGNmNWM4ZDkxMGQ0NzU0N2QzZDll
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlRlc3QuaCIK
KyNpbmNsdWRlICJVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpA
QCAtNTI4LDQgKzUyOSwzNCBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGNyZWF0ZUhhcmRMaW5r
T3JDb3B5RmlsZSkKICAgICBFWFBFQ1RfRVEobGlua0ZpbGVTaXplLCBmaWxlU2l6ZSk7CiB9CiAK
K1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpCit7CisgICAg
YXV0byBtb2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUodGVtcEZpbGVQYXRoKCkpOworICAgIEVYUEVDVF9UUlVFKCEhbW9kaWZpY2F0aW9uVGltZSk7
CisgICAgaWYgKCFtb2RpZmljYXRpb25UaW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgxLjUpOworCisgICAgRVhQRUNUX0xUKG1vZGlmaWNhdGlv
blRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSwgV2FsbFRpbWU6Om5vdygpLnNlY29u
ZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CisKKyAgICBhdXRvIHRpbWVCZWZvcmVNb2RpZmljYXRp
b24gPSBXYWxsVGltZTo6bm93KCk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgx
LjUpOworCisgICAgLy8gTW9kaWZ5IHRoZSBmaWxlLgorICAgIGF1dG8gZmlsZUhhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKHRlbXBGaWxlUGF0aCgpLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1v
ZGU6OlJlYWRXcml0ZSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChmaWxlSGFuZGxlKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwg
ImZvbyIsIHN0cmxlbigiZm9vIikpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFu
ZGxlKTsKKworICAgIGF1dG8gbmV3TW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZp
bGVNb2RpZmljYXRpb25UaW1lKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBFWFBFQ1RfVFJVRSghIW5l
d01vZGlmaWNhdGlvblRpbWUpOworICAgIGlmICghbmV3TW9kaWZpY2F0aW9uVGltZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgRVhQRUNUX0dUKG5ld01vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNT
aW5jZUVwb2NoKCkudmFsdWUoKSwgbW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2go
KS52YWx1ZSgpKTsKKyAgICBFWFBFQ1RfR1QobmV3TW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1Np
bmNlRXBvY2goKS52YWx1ZSgpLCB0aW1lQmVmb3JlTW9kaWZpY2F0aW9uLnNlY29uZHNTaW5jZUVw
b2NoKCkudmFsdWUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427691</attachid>
            <date>2021-05-04 12:04:48 -0700</date>
            <delta_ts>2021-05-04 13:29:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225362-20210504120447.patch</filename>
            <type>text/plain</type>
            <size>6872</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFmNWZmMjhhMmFkYzI2OTQzNjY1MmM2
ODQ2YjhjM2UxY2I4MTIzYmIuLjYzNjJiNGY3MWIxNGYyZGE0ZjdjNzZmZWZlMDcxMDUwOTdhYTFl
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDUtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRp
b25UaW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25U
aW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtIGFuZCBnZXQgcmlkIG9mCisgICAgICAgIHBsYXRmb3Jt
LXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNw
cDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmdldEZpbGVNb2RpZmljYXRpb25UaW1l
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHA6CisgICAgICAgIChXVEY6
OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6IERlbGV0ZWQuCisgICAg
ICAgICogd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6IERlbGV0ZWQuCisgICAgICAgICog
d3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKTogRGVsZXRlZC4KKwogMjAyMS0wNS0wMyAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBNb3ZlIEdQ
VVByb2Nlc3MgV2ViR0wgdG8gRXhwZXJpbWVudGFsIEZlYXR1cmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAK
aW5kZXggZjdkNjc0OWNjOWViZTVjOTE5N2JkMDg4MDBhZDY4MjkyODFmMjlkYy4uNjhjMjk3Mjhk
MDBiZWQ3ODJhYWFmMzdkNzUwNmUwMGM4ZjU5Mzk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAg
LTYyMyw1ICs2MjMsMTQgQEAgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgpCiAgICAgcmV0dXJuICFlYzsKIH0KIAorT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBzdGQ6OmVycm9y
X2NvZGUgZWM7CisgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gc3RkOjpmaWxlc3lzdGVtOjps
YXN0X3dyaXRlX3RpbWUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgZWMp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
V2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKFNlY29uZHM6OmZyb21OYW5vc2Vjb25kcyhzdGQ6OmNo
cm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bmFub3NlY29uZHM+KG1vZGlmaWNhdGlv
blRpbWUudGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpKS52YWx1ZSgpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9n
bGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCA2M2Q1ZGFmMWE5OTRmZjcyMGNjOTQzMDNjMWYz
YzUyYmE0NGU0MDgzLi5iMWUxMWRhOTMwNTYxYTBlYmU2MmE4NDY2ZDc3NGM0ZWJmZDNmNTdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMTUyLDE1ICsxNTIsNiBA
QCBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKQog
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1N0YXRCdWYgc3Rh
dFJlc3VsdDsKLSAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSk7Ci19Ci0KIHN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5
cGUgdG9GaWxlTWV0YXRhVHlwZShHU3RhdEJ1ZiBzdGF0UmVzdWx0KQogewogICAgIGlmIChTX0lT
RElSKHN0YXRSZXN1bHQuc3RfbW9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcAppbmRleCBiZmU4ZmFiYjZiZmM2NzBlNGVlNGIzMGQ4YjNjNDhlNDc5ZGM1ZDIzLi5l
OThlYjQ2NzRmYjJhNzJmMDMwZTg0Y2M0NGY3MGI3N2NhMzNjMzdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTE4NiwyMSArMTg2LDYgQEAgT3B0aW9uYWw8
V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlm
CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9
PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgc3RydWN0IHN0YXQg
ZmlsZUluZm87Ci0KLSAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKTsKLX0KLQogc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlw
ZSB0b0ZpbGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZvKQogewogICAgIGlmIChTX0lT
RElSKGZpbGVJbmZvLnN0X21vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmlu
ZGV4IGZkNTlmMTkwM2U2ZTFmZTg0ZDE1OGQ1NzVhOTYyOWVhYjkwMGM5ZDUuLmY5MzE0NTUwNmVl
YzU3ZWYxY2IzMDhhYzg2ZDJiZDJlYmQwM2IzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAKQEAgLTExNCwxNyArMTE0LDYgQEAgYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZUhhbmRsZSwgbG9uZyBsb25nJiBzaXplKQogICAgIHJldHVybiBnZXRGaWxl
U2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24s
IHNpemUpOwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0g
ICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KLSAgICB0aW1lX3QgdGltZSA9IDA7Ci0gICAgZ2V0RmlsZU1vZGlmaWNhdGlv
blRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOwotICAgIHJldHVybiBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHModGltZSk7Ci19Ci0KIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3Jl
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZp
bmREYXRhOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDRhZTA1ZGE0ZTRkMzM0ODM0OTU1NGU4Y2MwNWU0ZDIzMzhhMjhhMDcuLjVkOTk2NmRhM2Zm
OGRjNThjZWIwNzVkMGZhOGVlZmVlYTRkZTM0MDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNS0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTM2MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFn
ZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0wNS0wMyAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBNb3ZlIEdQVVBy
b2Nlc3MgV2ViR0wgdG8gRXhwZXJpbWVudGFsIEZlYXR1cmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggOGI3M2FmMWU4OGRhZjJiYmVkZTYyOTM2
YmFjODdmYzJlNGQ4Njg4Yy4uYWZjYTYyNzhkNzYwM2VhMTQ4YmViNThhZmU2MjE5YzBlN2JlNjU2
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlRlc3QuaCIK
KyNpbmNsdWRlICJVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpA
QCAtNTI4LDQgKzUyOSwzNSBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGNyZWF0ZUhhcmRMaW5r
T3JDb3B5RmlsZSkKICAgICBFWFBFQ1RfRVEobGlua0ZpbGVTaXplLCBmaWxlU2l6ZSk7CiB9CiAK
K1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpCit7CisgICAg
YXV0byBtb2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUodGVtcEZpbGVQYXRoKCkpOworICAgIEVYUEVDVF9UUlVFKCEhbW9kaWZpY2F0aW9uVGltZSk7
CisgICAgaWYgKCFtb2RpZmljYXRpb25UaW1lKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNp
Z25lZCB0aW1lb3V0ID0gMDsKKyAgICB3aGlsZSAoKm1vZGlmaWNhdGlvblRpbWUgPj0gV2FsbFRp
bWU6Om5vdygpICYmICsrdGltZW91dCA8IDIwKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpzbGVlcCgwLjEpOworICAgIEVYUEVDVF9MVChtb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2lu
Y2VFcG9jaCgpLnZhbHVlKCksIFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZh
bHVlKCkpOworCisgICAgYXV0byB0aW1lQmVmb3JlTW9kaWZpY2F0aW9uID0gV2FsbFRpbWU6Om5v
dygpOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMik7CisKKyAgICAvLyBNb2Rp
ZnkgdGhlIGZpbGUuCisgICAgYXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
dGVtcEZpbGVQYXRoKCksIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlKTsKKyAg
ICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKKyAg
ICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCAiZm9vIiwgc3RybGVuKCJmb28i
KSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworCisgICAgYXV0byBu
ZXdNb2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUo
dGVtcEZpbGVQYXRoKCkpOworICAgIEVYUEVDVF9UUlVFKCEhbmV3TW9kaWZpY2F0aW9uVGltZSk7
CisgICAgaWYgKCFuZXdNb2RpZmljYXRpb25UaW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBF
WFBFQ1RfR1QobmV3TW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgp
LCBtb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOworICAgIEVY
UEVDVF9HVChuZXdNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCks
IHRpbWVCZWZvcmVNb2RpZmljYXRpb24uc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427694</attachid>
            <date>2021-05-04 13:29:53 -0700</date>
            <delta_ts>2021-05-04 16:54:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225362-20210504132952.patch</filename>
            <type>text/plain</type>
            <size>7086</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI1Y2Q0NDMxYTVkYWI0ZThhZWJhMDFj
YmZjZTAxYWQzYjY0YzQ4YjQuLjk2YjhhYzZkM2FiNmU2NDI3NDJkOGViODlmOGMwNWI4MzZjYjg2
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDUtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRp
b25UaW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25U
aW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtIGFuZCBnZXQgcmlkIG9mCisgICAgICAgIHBsYXRmb3Jt
LXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNw
cDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmdldEZpbGVNb2RpZmljYXRpb25UaW1l
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHA6CisgICAgICAgIChXVEY6
OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6IERlbGV0ZWQuCisgICAg
ICAgICogd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6IERlbGV0ZWQuCisgICAgICAgICog
d3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKTogRGVsZXRlZC4KKwogMjAyMS0wNS0wNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIERvbid0IGl0
ZXJhdGUgTmV0d29ya1Byb2Nlc3NQcm94eTo6bV93ZWJzaXRlRGF0YVN0b3JlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmNwcAppbmRleCBmN2Q2NzQ5Y2M5ZWJlNWM5MTk3YmQwODgwMGFkNjgyOTI4MWYyOWRjLi5k
MzlkMjE5YTBhZDhmYWRlZGMwMDliMTIyOGRmNzFkYWU2MmFhZTMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmNwcApAQCAtNjIzLDUgKzYyMywxNiBAQCBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gIWVjOwogfQogCitPcHRpb25hbDxXYWxsVGlt
ZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHN0
ZDo6ZXJyb3JfY29kZSBlYzsKKyAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBzdGQ6OmZpbGVz
eXN0ZW06Omxhc3Rfd3JpdGVfdGltZShmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0
YSgpLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IC8vIEZJWE1FOiBVc2Ugc3RkOjpjaHJvbm86OmZpbGVfY2xvY2s6OnRvX3N5cygpIG9uY2Ugd2Ug
Y2FuIHVzZSBDKysyMC4KKyAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWVBc1RpbWVUID0gc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dG9fdGltZV90KHN0ZDo6Y2hyb25vOjp0aW1lX3BvaW50X2Nh
c3Q8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZHVyYXRpb24+KG1vZGlmaWNhdGlvblRpbWUg
LSBkZWNsdHlwZShtb2RpZmljYXRpb25UaW1lKTo6Y2xvY2s6Om5vdygpICsgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6bm93KCkpKTsKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKG1vZGlmaWNhdGlvblRpbWVBc1RpbWVUKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgRmlsZVN5
c3RlbUltcGwKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Z2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1H
bGliLmNwcAppbmRleCA2M2Q1ZGFmMWE5OTRmZjcyMGNjOTQzMDNjMWYzYzUyYmE0NGU0MDgzLi5i
MWUxMWRhOTMwNTYxYTBlYmU2MmE4NDY2ZDc3NGM0ZWJmZDNmNTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9n
bGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMTUyLDE1ICsxNTIsNiBAQCBPcHRpb25hbDxXYWxs
VGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKQogICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKLSAgICBp
ZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLQotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3RhdFJlc3Vs
dC5zdF9tdGltZSk7Ci19Ci0KIHN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRh
VHlwZShHU3RhdEJ1ZiBzdGF0UmVzdWx0KQogewogICAgIGlmIChTX0lTRElSKHN0YXRSZXN1bHQu
c3RfbW9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9T
SVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCBi
ZmU4ZmFiYjZiZmM2NzBlNGVlNGIzMGQ4YjNjNDhlNDc5ZGM1ZDIzLi5lOThlYjQ2NzRmYjJhNzJm
MDMwZTg0Y2M0NGY3MGI3N2NhMzNjMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0
ZW1QT1NJWC5jcHAKQEAgLTE4NiwyMSArMTg2LDYgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZp
bGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLU9wdGlvbmFs
PFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17
Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQot
ICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0KLSAg
ICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZv
LnN0X210aW1lKTsKLX0KLQogc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFU
eXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZvKQogewogICAgIGlmIChTX0lTRElSKGZpbGVJbmZvLnN0
X21vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
IGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IGZkNTlmMTkwM2U2
ZTFmZTg0ZDE1OGQ1NzVhOTYyOWVhYjkwMGM5ZDUuLmY5MzE0NTUwNmVlYzU3ZWYxY2IzMDhhYzg2
ZDJiZDJlYmQwM2IzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVt
V2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTEx
NCwxNyArMTE0LDYgQEAgYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhh
bmRsZSwgbG9uZyBsb25nJiBzaXplKQogICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21CeUhhbmRs
ZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24sIHNpemUpOwogfQogCi1P
cHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5k
RGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAg
ICB0aW1lX3QgdGltZSA9IDA7Ci0gICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERh
dGEoZmluZERhdGEsIHRpbWUpOwotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMo
dGltZSk7Ci19Ci0KIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA5ZDAzMzc5M2Fh
MmY4MzU3OWZlZGUwNDZmMTQ0NGMyOWE4Zjg0MjkuLmFkOGVhODMyMmZjM2IyN2YwOTM5NWMxYjNi
OTRmYWZhNGQwYzBiMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0wNS0wNCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW2V3c10gRW5zdXJlIGZpbGUgaGFuZGxlcyBhcmUgbm90
IGxlYWtlZCBpbiB1bml0IHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Zp
bGVTeXN0ZW0uY3BwCmluZGV4IDhiNzNhZjFlODhkYWYyYmJlZGU2MjkzNmJhYzg3ZmMyZTRkODY4
OGMuLmFmY2E2Mjc4ZDc2MDNlYTE0OGJlYjU4YWZlNjIxOWMwZTdiZTY1NjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSAiVXRp
bGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTUyOCw0ICs1Mjks
MzUgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBjcmVhdGVIYXJkTGlua09yQ29weUZpbGUpCiAg
ICAgRVhQRUNUX0VRKGxpbmtGaWxlU2l6ZSwgZmlsZVNpemUpOwogfQogCitURVNUX0YoRmlsZVN5
c3RlbVRlc3QsIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKQoreworICAgIGF1dG8gbW9kaWZpY2F0
aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHRlbXBGaWxlUGF0
aCgpKTsKKyAgICBFWFBFQ1RfVFJVRSghIW1vZGlmaWNhdGlvblRpbWUpOworICAgIGlmICghbW9k
aWZpY2F0aW9uVGltZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgdGltZW91dCA9
IDA7CisgICAgd2hpbGUgKCptb2RpZmljYXRpb25UaW1lID49IFdhbGxUaW1lOjpub3coKSAmJiAr
K3RpbWVvdXQgPCAyMCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsK
KyAgICBFWFBFQ1RfTFQobW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1
ZSgpLCBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKKworICAg
IGF1dG8gdGltZUJlZm9yZU1vZGlmaWNhdGlvbiA9IFdhbGxUaW1lOjpub3coKTsKKworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDIpOworCisgICAgLy8gTW9kaWZ5IHRoZSBmaWxlLgor
ICAgIGF1dG8gZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHRlbXBGaWxlUGF0aCgp
LCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSk7CisgICAgRVhQRUNUX1RSVUUo
RmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CisgICAgRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgImZvbyIsIHN0cmxlbigiZm9vIikpOworICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKworICAgIGF1dG8gbmV3TW9kaWZpY2F0aW9u
VGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHRlbXBGaWxlUGF0aCgp
KTsKKyAgICBFWFBFQ1RfVFJVRSghIW5ld01vZGlmaWNhdGlvblRpbWUpOworICAgIGlmICghbmV3
TW9kaWZpY2F0aW9uVGltZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRVhQRUNUX0dUKG5ld01v
ZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSwgbW9kaWZpY2F0aW9u
VGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKKyAgICBFWFBFQ1RfR1QobmV3TW9k
aWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpLCB0aW1lQmVmb3JlTW9k
aWZpY2F0aW9uLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427712</attachid>
            <date>2021-05-04 16:58:35 -0700</date>
            <delta_ts>2021-05-04 18:41:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225362-20210504165834.patch</filename>
            <type>text/plain</type>
            <size>27888</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjFiN2JlY2UzZjBiN2VjNDFiMjkwOWU0MmViYzhlOWNlOGZjNWNiLi5jNzgyMWFiMzFhZmFmNWJm
YTE2M2U1ZmJlZGQ5ZGJmNmUzZWRlYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisKIDIwMjEtMDUtMDMg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzeW50YXggZXJy
b3IgbWVzc2FnZSBmb3IgQVVUT1BMVVNQTFVTIHRva2VuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyNWNkNDQzMWE1ZGFiNGU4
YWViYTAxY2JmY2UwMWFkM2I2NGM0OGI0Li41ZTZlYjJmM2I5MWY1ZmEyNjlhZjkwYmFlMDA3YWE1
NDEzYjEwNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpmaWxlTWV0YWRh
dGEoKSAmIEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKCkgdG8gc3RkOjpmaWxl
c3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
b3J0IEZpbGVzeXN0ZW06OmZpbGVNZXRhZGF0YSgpICYgRmlsZXN5c3RlbTo6Z2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgYW5kIGdldCByaWQgb2Yg
cGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogd3RmL0ZpbGVT
eXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6dG9XYWxsVGltZSk6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxlTWV0YWRhdGEpOgorICAgICAgICAqIHd0
Zi9GaWxlU3lzdGVtLmg6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHd0Zi93
aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisKIDIwMjEtMDUtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCBpdGVyYXRlIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Om1fd2Vic2l0ZURhdGFTdG9yZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZmE1NWQ1MzNm
Y2Y2NzUzMjMzNDIzMDhlNzRmYTZkODhjZWZlMzI3Li41ZTJkZmU4MDg1Yjc2ZjIzNTE2ZGRjODFm
NjU5MmE3M2QxYjJhZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDUtMDQg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQb3J0IEZpbGVzeXN0
ZW06OmZpbGVNZXRhZGF0YSgpICYgRmlsZXN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUo
KSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENhbGwgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgd2l0aCBhIFNob3Vs
ZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyBwYXJhbWV0ZXIgaW5zdGVhZCBvZgorICAgICAgICBG
aWxlc3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcygpLiBXZSBhbHJlYWR5IGhh
ZCB0aGlzIGVudW1zIHNvIHdlIG1heSBhcyB3ZWxsCisgICAgICAgIHVzZSBpdCBpbnN0ZWFkIG9m
IGhhdmluZyAyIHNlcGFyYXRlIGZ1bmN0aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlvbnMpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUp
OgorCiAyMDIxLTA1LTA0ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgSGFuZGxlIGNsYW1waW5nIG9mIGhlaWdodHMgZm9yIGltYWdlcyBhZmZlY3RlZCBi
eSBiYWNrZ3JvdW5kLXNpemUgYW5kIEVYSUYgb3JpZW50YXRpb24gY29ycmVjdGx5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUu
eGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlw
dENvcmUueGNjb25maWcKaW5kZXggNWZiNTYwMTVmYmQwODg3OWEwZGJjOWFiNzUyZDEzZDJmMTQz
Mzg4OC4uM2E1ZGE0M2M2M2RhNWRmYjU3NDFiYjQwNmZlNGU1OWIxYThiNWMzNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhj
Y29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2Ny
aXB0Q29yZS54Y2NvbmZpZwpAQCAtMjcsNyArMjcsNyBAQCBERUZJTkVTX01PRFVMRSA9IFlFUzsK
IE1PRFVMRU1BUF9GSUxFID0gJChTUkNST09UKS9KYXZhU2NyaXB0Q29yZS5tb2R1bGVtYXA7CiAK
IC8vIFByZXZlbnQgQysrIHN0YW5kYXJkIGxpYnJhcnkgb3BlcmF0b3IgbmV3LCBkZWxldGUgYW5k
IHRoZWlyIHJlbGF0ZWQgZXhjZXB0aW9uIHR5cGVzIGZyb20gYmVpbmcgZXhwb3J0ZWQgYXMgd2Vh
ayBzeW1ib2xzLgotT1RIRVJfTERGTEFHU19ISURFX1NZTUJPTFMgPSAtV2wsLXVuZXhwb3J0ZWRf
c3ltYm9sLF9fWlRJU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDll
eGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUU1N0OWJhZF9hbGxvYyAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aZGxQdlNfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19abndtUHYgLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdnZFRWNsRXYgLVdsLC11bmV4cG9ydGVkX3N5
bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVFQzFFT1MyXyAtV2wsLXVuZXhwb3J0ZWRfc3lt
Ym9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVDMkVPUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wsX19aTktTdDNfXzE4ZnVuY3Rpb25JRnZSTjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9yRVBOUzFf
MTBSZWdpc3RlcklERUVFY2xFUzNfUzVfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19f
MThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURF
RUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdlJOM0pT
QzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVEMkV2IC1XbCwtdW5leHBv
cnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdnZFRUQxRXYgLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVFRDJFdiAtV2wsLXVuZXhwb3J0ZWRfc3lt
Ym9sLF9fWlRWTlN0M19fMTE3YmFkX2Z1bmN0aW9uX2NhbGxFIC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJ
UEtjUzRfY0xiMUVFMTFfX3JhbmdlX2VuZEVTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pO
U3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9j
TGIxRUUxM19fcmFuZ2VfYmVnaW5FUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19f
MTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTRfX2FwcGVuZF9yYW5nZUlQS2NFRU5TXzll
bmFibGVfaWZJWHNyMjdfX2lzX2NwcDE3X2ZvcndhcmRfaXRlcmF0b3JJVF9FRTV2YWx1ZUV2RTR0
eXBlRVJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9y
SWNFRUVFUzhfUzhfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxl
c3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VJUEtjRUV2Uk5TXzEyYmFzaWNfc3Ry
aW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVSS1RfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTRf
X2FwcGVuZF9yYW5nZUlQS2NFRU5TXzllbmFibGVfaWZJWHNyMjFfX2lzX2ZvcndhcmRfaXRlcmF0
b3JJVF9FRTV2YWx1ZUV2RTR0eXBlRVJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0
c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUzhfUzhfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TktTdDNfXzE0X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0b3J5X2l0ZXJhdG9yZGVFdiAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0b3J5X2l0
ZXJhdG9ycHBFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5
c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SUExMF9jUGNjTGIxRUUxMV9fcmFuZ2VfZW5k
RVBLYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0
X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SUExMF9jUGNjTGIxRUUxM19fcmFuZ2VfYmVnaW5FUEtj
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtNHBhdGhk
VkVSS1MyXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3Rl
bThfUGF0aENWVEljRTE1X19hcHBlbmRfc291cmNlSUExMF9jRUV2Uk5TXzEyYmFzaWNfc3RyaW5n
SWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVSS1RfOworT1RIRVJfTERG
TEFHU19ISURFX1NZTUJPTFMgPSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRJU3Q5YmFkX2Fs
bG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDlleGNlcHRpb24gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pUU1N0OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRT
U3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aZGxQdlNfIC1XbCwtdW5leHBv
cnRlZF9zeW1ib2wsX19abndtUHYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThm
dW5jdGlvbklGdnZFRWNsRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0
aW9uSUZ2dkVFQzFFT1MyXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rp
b25JRnZ2RUVDMkVPUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTktTdDNfXzE4ZnVuY3Rp
b25JRnZSTjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9yRVBOUzFfMTBSZWdpc3RlcklERUVFY2xFUzNf
UzVfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3
Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVEMUV2IC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JF
UE5TMV8xMFJlZ2lzdGVySURFRUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19f
MThmdW5jdGlvbklGdnZFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1
bmN0aW9uSUZ2dkVFRDJFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRWTlN0M19fMTE3YmFk
X2Z1bmN0aW9uX2NhbGxFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBm
aWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJUEtjUzRfY0xiMUVFMTFfX3Jhbmdl
X2VuZEVTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxM19fcmFuZ2VfYmVnaW5F
UzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9Q
YXRoQ1ZUSWNFMTRfX2FwcGVuZF9yYW5nZUlQS2NFRU5TXzllbmFibGVfaWZJWHNyMjdfX2lzX2Nw
cDE3X2ZvcndhcmRfaXRlcmF0b3JJVF9FRTV2YWx1ZUV2RTR0eXBlRVJOU18xMmJhc2ljX3N0cmlu
Z0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUzhfUzhfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVf
X2FwcGVuZF9zb3VyY2VJUEtjRUV2Uk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRz
SWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVSS1RfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0
M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTRfX2FwcGVuZF9yYW5nZUlQS2NFRU5T
XzllbmFibGVfaWZJWHNyMjFfX2lzX2ZvcndhcmRfaXRlcmF0b3JJVF9FRTV2YWx1ZUV2RTR0eXBl
RVJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNF
RUVFUzhfUzhfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTktTdDNfXzE0X19mczEwZmlsZXN5
c3RlbTE4ZGlyZWN0b3J5X2l0ZXJhdG9yZGVFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5T
dDNfXzE0X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0b3J5X2l0ZXJhdG9ycHBFdiAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9j
aGFyX2FycmF5SUExMF9jUGNjTGIxRUUxMV9fcmFuZ2VfZW5kRVBLYyAtV2wsLXVuZXhwb3J0ZWRf
c3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2Fy
cmF5SUExMF9jUGNjTGIxRUUxM19fcmFuZ2VfYmVnaW5FUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtNHBhdGhkVkVSS1MyXyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbThfUGF0aENWVEljRTE1X19hcHBl
bmRfc291cmNlSUExMF9jRUV2Uk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNF
RU5TXzlhbGxvY2F0b3JJY0VFRUVSS1RfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19f
MTRfX2ZzMTBmaWxlc3lzdGVtMjRfX3Rocm93X2ZpbGVzeXN0ZW1fZXJyb3JJSlJQS2NSS05TMV80
cGF0aEVSS05TXzEwZXJyb3JfY29kZUVFRUV2RHBPVF87CiAKIE9USEVSX0xERkxBR1NfQkFTRSA9
ICQoT1RIRVJfTERGTEFHU19ISURFX1NZTUJPTFMpIC1mb3JjZV9sb2FkICIkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvbGliV1RGLmEiOwogT1RIRVJf
TERGTEFHU1tzZGs9ZW1iZWRkZWQqXSA9ICQoaW5oZXJpdGVkKSAkKE9USEVSX0xERkxBR1NfQkFT
RSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IGY3ZDY3NDljYzllYmU1YzkxOTdiZDA4ODAwYWQ2
ODI5MjgxZjI5ZGMuLmNmZTJmMDA0YTc4MDU0NjZmNmEzNTQ4MjAzYWVlZjMwODg5ZmNjYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC02MjMsNSArNjIzLDU0IEBAIGJvb2wgZGVsZXRlTm9uRW1w
dHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiAhZWM7CiB9CiAKK3N0
YXRpYyBXYWxsVGltZSB0b1dhbGxUaW1lKHN0ZDo6ZmlsZXN5c3RlbTo6ZmlsZV90aW1lX3R5cGUg
ZmlsZVRpbWUpCit7CisgICAgLy8gRklYTUU6IFVzZSBzdGQ6OmNocm9ubzo6ZmlsZV9jbG9jazo6
dG9fc3lzKCkgb25jZSB3ZSBjYW4gdXNlIEMrKzIwLgorICAgIGF1dG8gbW9kaWZpY2F0aW9uVGlt
ZUFzVGltZVQgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0b190aW1lX3Qoc3RkOjpjaHJv
bm86OnRpbWVfcG9pbnRfY2FzdDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4o
ZmlsZVRpbWUgLSBkZWNsdHlwZShmaWxlVGltZSk6OmNsb2NrOjpub3coKSArIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6Om5vdygpKSk7CisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vj
b25kcyhtb2RpZmljYXRpb25UaW1lQXNUaW1lVCk7Cit9CisKK09wdGlvbmFsPFdhbGxUaW1lPiBn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgc3RkOjpl
cnJvcl9jb2RlIGVjOworICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IHN0ZDo6ZmlsZXN5c3Rl
bTo6bGFzdF93cml0ZV90aW1lKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCks
IGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHRvV2FsbFRpbWUobW9kaWZpY2F0aW9uVGltZSk7Cit9CisKK09wdGlvbmFsPEZpbGVNZXRh
ZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9sbG93U3ltYm9s
aWNMaW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQoreworICAgIHN0ZDo6ZmlsZXN5c3Rl
bTo6cGF0aCBmc1BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpOwor
CisgICAgc3RkOjplcnJvcl9jb2RlIGVjOworICAgIGlmIChzaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyAmJiBzdGQ6OmZpbGVzeXN0ZW06
OmlzX3N5bWxpbmsoZnNQYXRoLCBlYykpIHsKKyAgICAgICAgZnNQYXRoID0gc3RkOjpmaWxlc3lz
dGVtOjpyZWFkX3N5bWxpbmsoZnNQYXRoLCBlYyk7CisgICAgICAgIGlmIChlYykKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgZWMgPSB7IH07CisgICAgc3Rk
OjpmaWxlc3lzdGVtOjpkaXJlY3RvcnlfZW50cnkgZW50cnkoZnNQYXRoLCBlYyk7CisgICAgaWYg
KGVjKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBtb2RpZmljYXRp
b25UaW1lID0gdG9XYWxsVGltZShlbnRyeS5sYXN0X3dyaXRlX3RpbWUoKSk7CisgICAgYXV0byBm
aWxlU2l6ZSA9IGVudHJ5LmZpbGVfc2l6ZShlYyk7CisjaWYgT1MoVU5JWCkKKyAgICBzdGQ6OmZp
bGVzeXN0ZW06OnBhdGg6OnN0cmluZ190eXBlIGZpbGVuYW1lID0gZnNQYXRoLmZpbGVuYW1lKCk7
CisgICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5lbXB0eSgpICYmIGZpbGVuYW1lWzBdID09
ICcuJzsKKyNlbHNlCisgICAgYm9vbCBpc0hpZGRlbiA9IGZhbHNlOworI2VuZGlmCisgICAgRmls
ZU1ldGFkYXRhOjpUeXBlIHR5cGUgPSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7CisgICAgaWYg
KGVudHJ5LmlzX3N5bWxpbmsoZWMpKQorICAgICAgICB0eXBlID0gRmlsZU1ldGFkYXRhOjpUeXBl
OjpTeW1ib2xpY0xpbms7CisgICAgZWxzZSBpZiAoZW50cnkuaXNfZGlyZWN0b3J5KGVjKSkKKyAg
ICAgICAgdHlwZSA9IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworCisgICAgcmV0dXJu
IEZpbGVNZXRhZGF0YSB7IG1vZGlmaWNhdGlvblRpbWUsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4o
ZmlsZVNpemUpLCBpc0hpZGRlbiwgdHlwZSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBGaWxlU3lz
dGVtSW1wbAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggZjZjNDNhNTgz
YTA3ZjhhODljMjAzMTBkOThjNDc5ODlhMjc1MTIwNS4uYWUxMzBiMGE2YmI5ODNjMjc1NTNhMDZj
ZWI1YTZkNjgyOWNhYjFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTE3LDggKzExNyw3IEBAIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYsIGxvbmcgbG9u
ZyYgcmVzdWx0KTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGdldEZpbGVTaXplKFBsYXRmb3Jt
RmlsZUhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHQpOwogV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlv
bmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmKTsKIFdU
Rl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShj
b25zdCBTdHJpbmcmKTsgLy8gTm90IGFsbCBwbGF0Zm9ybXMgc3RvcmUgZmlsZSBjcmVhdGlvbiB0
aW1lLgotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFk
YXRhKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8Rmls
ZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBh
dGgpOworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFk
YXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyA9IFNob3Vs
ZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVJ
c0RpcmVjdG9yeShjb25zdCBTdHJpbmcmLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKTsKIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpOwogV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3Qg
VmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lz
dGVtR2xpYi5jcHAKaW5kZXggNjNkNWRhZjFhOTk0ZmY3MjBjYzk0MzAzYzFmM2M1MmJhNDRlNDA4
My4uNmRmYmE1MWYyMjhlOGRhYmFiNWJhM2U5MTg3YTNlODI4NjFhOWY5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTE1Miw1MSArMTUyLDYgQEAgT3B0aW9uYWw8
V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJikKICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlv
blRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7Ci0g
ICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRS
ZXN1bHQuc3RfbXRpbWUpOwotfQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1l
dGF0YVR5cGUoR1N0YXRCdWYgc3RhdFJlc3VsdCkKLXsKLSAgICBpZiAoU19JU0RJUihzdGF0UmVz
dWx0LnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rv
cnk7Ci0gICAgaWYgKFNfSVNMTksoc3RhdFJlc3VsdC5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJu
IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRh
dGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVN
ZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBib29sICgqc3RhdEZ1bmMp
KGNvbnN0IFN0cmluZyYsIEdTdGF0QnVmKikpCi17Ci0gICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsK
LSAgICBpZiAoIXN0YXRGdW5jKHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLQotICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRo
KTsKLSAgICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVsw
XSA9PSAnLic7Ci0KLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6
OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpLAotICAgICAgICBzdGF0UmVzdWx0
LnN0X3NpemUsCi0gICAgICAgIGlzSGlkZGVuLAotICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKHN0
YXRSZXN1bHQpCi0gICAgfTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRh
dGEoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1
bmN0aW9uKHBhdGgsICZnZXRGaWxlTFN0YXQpOwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+
IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAg
ICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0RmlsZVN0YXQpOwot
fQotCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7CiAgICAgaWYgKHBhdGguZW5kc1dpdGgoR19ESVJf
U0VQQVJBVE9SX1MpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5k
ZXggYmZlOGZhYmI2YmZjNjcwZTRlZTRiMzBkOGIzYzQ4ZTQ3OWRjNWQyMy4uODgyMzhmZTgwZGU0
ZDliMTA4MDdiNTkyY2NlNTU3YjBhMDI5ZjE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
cG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCkBAIC0xODYsNjEgKzE4Niw2IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBn
ZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1PcHRp
b25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRo
KQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwot
Ci0gICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxl
SW5mby5zdF9tdGltZSk7Ci19Ci0KLXN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0
YXRhVHlwZShzdHJ1Y3Qgc3RhdCBmaWxlSW5mbykKLXsKLSAgICBpZiAoU19JU0RJUihmaWxlSW5m
by5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5
OwotICAgIGlmIChTX0lTTE5LKGZpbGVJbmZvLnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmls
ZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6
VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFk
YXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsIGludCAoKnN0YXRGdW5jKShjb25z
dCBjaGFyKiwgc3RydWN0IHN0YXQqKSkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAu
ZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBz
dHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoc3RhdEZ1bmMoZnNSZXAuZGF0YSgpLCAmZmls
ZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgU3RyaW5nIGZpbGVu
YW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOwotICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5h
bWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKLSAgICByZXR1cm4gRmlsZU1ldGFk
YXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1l
KSwKLSAgICAgICAgZmlsZUluZm8uc3Rfc2l6ZSwKLSAgICAgICAgaXNIaWRkZW4sCi0gICAgICAg
IHRvRmlsZU1ldGF0YVR5cGUoZmlsZUluZm8pCi0gICAgfTsKLX0KLQotT3B0aW9uYWw8RmlsZU1l
dGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBm
aWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZsc3RhdCk7Ci19Ci0KLU9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZzdGF0
KTsKLX0KLQogU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogewogICAgIGlmIChwYXRoLmVuZHNXaXRoKCcv
JykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggZmQ1OWYxOTAzZTZlMWZl
ODRkMTU4ZDU3NWE5NjI5ZWFiOTAwYzlkNS4uNDc5MDZjN2M2YzYxZWViZjQ5ZDk3ZGNlN2VkYWNm
YjI1MmFmN2M5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtMTE0LDE3
ICsxMTQsNiBAQCBib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxl
LCBsb25nIGxvbmcmIHNpemUpCiAgICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmls
ZUluZm9ybWF0aW9uU3RydWN0dXJlKGZpbGVJbmZvcm1hdGlvbiwgc2l6ZSk7CiB9CiAKLU9wdGlv
bmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgp
Ci17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRh
KHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHRp
bWVfdCB0aW1lID0gMDsKLSAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShm
aW5kRGF0YSwgdGltZSk7Ci0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1l
KTsKLX0KLQogT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CkBAIC0xNTQsNjMg
KzE0Myw2IEBAIHN0YXRpYyBTdHJpbmcgZ2V0RmluYWxQYXRoTmFtZShjb25zdCBTdHJpbmcmIHBh
dGgpCiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKIH0KIAotc3Rh
dGljIGlubGluZSBib29sIGlzU3ltYm9saWNMaW5rKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEp
Ci17Ci0gICAgcmV0dXJuIGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVU
RV9SRVBBUlNFX1BPSU5UICYmIGZpbmREYXRhLmR3UmVzZXJ2ZWQwID09IElPX1JFUEFSU0VfVEFH
X1NZTUxJTks7Ci19Ci0KLXN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YWRhdGFU
eXBlKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCi17Ci0gICAgaWYgKGZpbmREYXRhLmR3Rmls
ZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCi0gICAgICAgIHJldHVybiBG
aWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKLSAgICBpZiAoaXNTeW1ib2xpY0xpbmsoZmlu
ZERhdGEpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7
Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlv
bmFsPEZpbGVNZXRhZGF0YT4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShXSU4zMl9GSU5EX0RBVEFX
IGZpbmREYXRhKQotewotICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6
ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCBtb2RpZmljYXRpb25UaW1lKTsKLQotICAg
IHJldHVybiBGaWxlTWV0YWRhdGEgewotICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMo
bW9kaWZpY2F0aW9uVGltZSksCi0gICAgICAgIGxlbmd0aCwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
Ym9vbD4oZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0hJRERFTiks
Ci0gICAgICAgIHRvRmlsZU1ldGFkYXRhVHlwZShmaW5kRGF0YSkKLSAgICB9OwotfQotCi1PcHRp
b25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0g
ICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgs
IGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBm
aW5kRGF0YVRvRmlsZU1ldGFkYXRhKGZpbmREYXRhKTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFk
YXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17
Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBh
dGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGlmIChp
c1N5bWJvbGljTGluayhmaW5kRGF0YSkpIHsKLSAgICAgICAgU3RyaW5nIHRhcmdldFBhdGggPSBn
ZXRGaW5hbFBhdGhOYW1lKHBhdGgpOwotICAgICAgICBpZiAodGFyZ2V0UGF0aC5pc051bGwoKSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGlmICghZ2V0RmluZERh
dGEodGFyZ2V0UGF0aCwgZmluZERhdGEpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7
Ci19Ci0KIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKIHsKICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihN
QVhfUEFUSCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKaW5kZXggZGZiNGI1ODRhOGE4ZTIzNDY3Yjg0M2E5
NWEzM2Y3ZDUxNzJjOTg0Ny4uM2Y5NmZiZmRkMmVhMTNiNzA0MzkxNzY4OTM5NTQyM2NlMGYyZmY5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlvbnMoKQogI2VuZGlmCiAKICAgICAv
LyBGSVhNRTogU29tZSBwbGF0Zm9ybXMgcHJvdmlkZSBiZXR0ZXIgd2F5cyB0byBsaXN0ZW4gZm9y
IGZpbGUgc3lzdGVtIG9iamVjdCBjaGFuZ2VzLCBjb25zaWRlciB1c2luZyB0aGVzZS4KLSAgICBh
dXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3Mo
bV9wYXRoKTsKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKG1f
cGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzKTsKICAgICBp
ZiAoIW1ldGFkYXRhKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lk
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlvbnMoKQogCiAg
ICAgLy8gVGhpcyBpcyBhIHJlZ2lzdGVyZWQgYmxvYiB3aXRoIGEgcmVwbGFjZW1lbnQgZmlsZS4g
R2V0IHRoZSBNZXRhZGF0YSBvZiB0aGUgcmVwbGFjZW1lbnQgZmlsZS4KICAgICBpZiAoIW1fcmVw
bGFjZW1lbnRQYXRoLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6
ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9yZXBsYWNlbWVudFBhdGgpOworICAgICAg
ICBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShtX3JlcGxhY2VtZW50UGF0aCwg
RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzKTsKICAgICAgICAgaWYg
KCFtZXRhZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZl
cmVuY2VNYWMubW0KaW5kZXggNWVjNzc3YTg2OTkwNjcxMThjYmNkNTUyOGU4ZjRmZmU5MmE0NDg2
Yi4uOTJmZjMzZmFlZDkwZDI4YjNiZmQ1OTk0OGViODc0YWM1NjMxNzc5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRh
RmlsZVJlZmVyZW5jZU1hYy5tbQpAQCAtNDcsNyArNDcsNyBAQCB2b2lkIEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoKQogCiAgICAgbV9yZXBsYWNlbWVudFNo
b3VsZEJlR2VuZXJhdGVkID0gZmFsc2U7CiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051
bGwoKSkgewotICAgICAgICBpZiAoYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRh
ZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1fcmVwbGFjZW1lbnRQYXRoKSkKKyAgICAgICAgaWYgKGF1
dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEobV9yZXBsYWNlbWVudFBhdGgs
IEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcykpCiAgICAgICAgICAg
ICBtX3NpemUgPSBtZXRhZGF0YS52YWx1ZSgpLmxlbmd0aDsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhZWI2MDYwOGM0MDZlNTRh
NGE4ZmYzZmIyMmNjOTA5NTI2Y2NkZjU3Li5mZGI0NDU2ZTk5ZWJkYmJlNjZkZjkxMmViYTFiN2Jl
ZjJlMWE4MzU4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OmZpbGVNZXRhZGF0YSgpICYgRmls
ZXN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTM2MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVz
dCBjb3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0
ZW0uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnJ1bkdldEZpbGVNb2RpZmljYXRpb25UaW1lVGVzdCk6CisKIDIwMjEtMDUtMDQg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB0
cnkgYW5kIHJlLWVuYWJsZSBBcHBsZUxhbmd1YWdlc1Rlc3QuVXBkYXRlQXBwbGVMYW5ndWFnZXMg
b24gQXBwbGUgU2lsaWNvbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5
c3RlbS5jcHAKaW5kZXggOGI3M2FmMWU4OGRhZjJiYmVkZTYyOTM2YmFjODdmYzJlNGQ4Njg4Yy4u
NTBmMWUyZDAzZGJiZTc0ZGVjNWIzMjY3MTRmZWU1NjZhMWI0ZjZkZCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlICJVdGlsaXRp
ZXMuaCIKICNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMTQyLDE5ICsxNDMsNzQg
QEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBGaWxlc0hhdmVTYW1lVm9sdW1lKQogICAgIEVYUEVD
VF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUoYmFuZ0NvbnRhaW5pbmdGaWxl
UGF0aCgpLCBxdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7CiB9CiAKLVRFU1RfRihGaWxlU3lz
dGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRhU3ltbGluaykKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwg
R2V0RmlsZU1ldGFkYXRhRmlsZVN5bWxpbmspCiB7CiAgICAgYXV0byBzeW1saW5rTWV0YWRhdGEg
PSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKICAgICBB
U1NFUlRfVFJVRShzeW1saW5rTWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUo
c3ltbGlua01ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJv
bGljTGluayk7Ci0gICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PHNpemVfdD4oc3ltbGlua01l
dGFkYXRhLnZhbHVlKCkubGVuZ3RoKSA9PSBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7Cisg
ICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlw
ZTo6U3ltYm9saWNMaW5rKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3ltbGlua01ldGFkYXRhLT5pc0hp
ZGRlbik7CisgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90PihzeW1saW5rTWV0YWRh
dGEtPmxlbmd0aCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwogCi0gICAgYXV0byB0
YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtz
KHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CisgICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVT
eXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCksIEZpbGVTeXN0ZW06OlNo
b3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Olllcyk7CiAgICAgQVNTRVJUX1RSVUUodGFyZ2V0TWV0
YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEudmFsdWUo
KS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7Ci0gICAgRVhQRUNUX0VRKHN0cmxl
bihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdldE1ldGFkYXRh
LnZhbHVlKCkubGVuZ3RoKSk7CisgICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEtPnR5cGUg
PT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKKyAgICBFWFBFQ1RfRkFMU0UodGFyZ2V0TWV0
YWRhdGEtPmlzSGlkZGVuKTsKKyAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0
YSksIHN0YXRpY19jYXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCkpOworCisgICAg
YXV0byBhY3R1YWxUYXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1w
RmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUoYWN0dWFsVGFyZ2V0TWV0YWRhdGEuaGFzVmFs
dWUoKSk7CisgICAgRVhQRUNUX1RSVUUoYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPnR5cGUgPT0gRmls
ZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKKyAgICBFWFBFQ1RfRVEodGFyZ2V0TWV0YWRhdGEtPm1v
ZGlmaWNhdGlvblRpbWUsIGFjdHVhbFRhcmdldE1ldGFkYXRhLT5tb2RpZmljYXRpb25UaW1lKTsK
KyAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSksIHN0YXRpY19jYXN0PHNp
emVfdD4odGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCkpOworICAgIEVYUEVDVF9GQUxTRShhY3R1YWxU
YXJnZXRNZXRhZGF0YS0+aXNIaWRkZW4pOwogfQogCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEdl
dEZpbGVNZXRhZGF0YURpcmVjdG9yeVN5bWxpbmspCit7CisgICAgYXV0byBzeW1saW5rTWV0YWRh
dGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgo
KSk7CisgICAgQVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOworICAgIEVY
UEVDVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5
bWJvbGljTGluayk7CisgICAgRVhQRUNUX0ZBTFNFKHN5bWxpbmtNZXRhZGF0YS0+aXNIaWRkZW4p
OworCisgICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0
ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1i
b2xpY0xpbmtzOjpZZXMpOworICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc1ZhbHVl
KCkpOworICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0
YTo6VHlwZTo6RGlyZWN0b3J5KTsKKyAgICBFWFBFQ1RfRkFMU0UodGFyZ2V0TWV0YWRhdGEtPmlz
SGlkZGVuKTsKKworICAgIGF1dG8gYWN0dWFsVGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpm
aWxlTWV0YWRhdGEodGVtcEVtcHR5Rm9sZGVyUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShhY3R1
YWxUYXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShhY3R1YWxUYXJn
ZXRNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeSk7CisgICAg
RVhQRUNUX0VRKHRhcmdldE1ldGFkYXRhLT5tb2RpZmljYXRpb25UaW1lLCBhY3R1YWxUYXJnZXRN
ZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSk7CisgICAgRVhQRUNUX0VRKHRhcmdldE1ldGFkYXRh
LT5sZW5ndGgsIGFjdHVhbFRhcmdldE1ldGFkYXRhLT5sZW5ndGgpOworICAgIEVYUEVDVF9GQUxT
RShhY3R1YWxUYXJnZXRNZXRhZGF0YS0+aXNIaWRkZW4pOworfQorCitURVNUX0YoRmlsZVN5c3Rl
bVRlc3QsIEdldEZpbGVNZXRhZGF0YUZpbGVEb2VzTm90RXhpc3QpCit7CisgICAgYXV0byBkb2Vz
Tm90RXhpc3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBF
bXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Iik7CisgICAgYXV0byBtZXRhZGF0YSA9
IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShkb2VzTm90RXhpc3RQYXRoKTsKKyAgICBFWFBFQ1Rf
VFJVRSghbWV0YWRhdGEpOworfQorCisjaWYgT1MoVU5JWCkKK1RFU1RfRihGaWxlU3lzdGVtVGVz
dCwgR2V0RmlsZU1ldGFkYXRhSGlkZGVuRmlsZSkKK3sKKyAgICBhdXRvIGhpZGRlbkZpbGVQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBh
dGgoKSwgIi5oaWRkZW5GaWxlIik7CisgICAgYXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6
b3BlbkZpbGUoaGlkZGVuRmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUp
OworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkp
OworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIEZpbGVTeXN0ZW1UZXN0
RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShmaWxlSGFuZGxlKTsKKworICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxl
TWV0YWRhdGEoaGlkZGVuRmlsZVBhdGgpOworICAgIEFTU0VSVF9UUlVFKG1ldGFkYXRhLmhhc1Zh
bHVlKCkpOworICAgIEVYUEVDVF9UUlVFKG1ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6
VHlwZTo6RmlsZSk7CisgICAgRVhQRUNUX1RSVUUobWV0YWRhdGEtPmlzSGlkZGVuKTsKKyAgICBF
WFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSksIHN0YXRpY19jYXN0PHNpemVfdD4o
bWV0YWRhdGEtPmxlbmd0aCkpOworCisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShoaWRkZW5GaWxlUGF0aCkpOworfQorI2VuZGlmCisKIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgVW5pY29kZURpcmVjdG9yeU5hbWUpCiB7CiAgICAgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZy
b21VVEY4KCIvdGVzdC9hXHUwMzA4bG8vdGVzdC50eHQiKTsKQEAgLTUyOCw0ICs1ODQsNTIgQEAg
VEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBjcmVhdGVIYXJkTGlua09yQ29weUZpbGUpCiAgICAgRVhQ
RUNUX0VRKGxpbmtGaWxlU2l6ZSwgZmlsZVNpemUpOwogfQogCitzdGF0aWMgdm9pZCBydW5HZXRG
aWxlTW9kaWZpY2F0aW9uVGltZVRlc3QoY29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjxPcHRp
b25hbDxXYWxsVGltZT4oY29uc3QgU3RyaW5nJik+JiYgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUp
Cit7CisgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUo
cGF0aCk7CisgICAgRVhQRUNUX1RSVUUoISFtb2RpZmljYXRpb25UaW1lKTsKKyAgICBpZiAoIW1v
ZGlmaWNhdGlvblRpbWUpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHRpbWVvdXQg
PSAwOworICAgIHdoaWxlICgqbW9kaWZpY2F0aW9uVGltZSA+PSBXYWxsVGltZTo6bm93KCkgJiYg
Kyt0aW1lb3V0IDwgMjApCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7
CisgICAgRVhQRUNUX0xUKG1vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKSwgV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CisKKyAg
ICBhdXRvIHRpbWVCZWZvcmVNb2RpZmljYXRpb24gPSBXYWxsVGltZTo6bm93KCk7CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgyKTsKKworICAgIC8vIE1vZGlmeSB0aGUgZmlsZS4K
KyAgICBhdXRvIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lz
dGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3Rl
bTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoZmlsZUhhbmRsZSwgImZvbyIsIHN0cmxlbigiZm9vIikpOworICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShmaWxlSGFuZGxlKTsKKworICAgIGF1dG8gbmV3TW9kaWZpY2F0aW9uVGltZSA9IGdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgpOworICAgIEVYUEVDVF9UUlVFKCEhbmV3TW9kaWZp
Y2F0aW9uVGltZSk7CisgICAgaWYgKCFuZXdNb2RpZmljYXRpb25UaW1lKQorICAgICAgICByZXR1
cm47CisKKyAgICBFWFBFQ1RfR1QobmV3TW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBv
Y2goKS52YWx1ZSgpLCBtb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVl
KCkpOworICAgIEVYUEVDVF9HVChuZXdNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9j
aCgpLnZhbHVlKCksIHRpbWVCZWZvcmVNb2RpZmljYXRpb24uc2Vjb25kc1NpbmNlRXBvY2goKS52
YWx1ZSgpKTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZSkKK3sKKyAgICBydW5HZXRGaWxlTW9kaWZpY2F0aW9uVGltZVRlc3QodGVtcEZpbGVQYXRo
KCksIFtdKGNvbnN0IFN0cmluZyYgcGF0aCkgeworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCk7CisgICAgfSk7Cit9CisKK1RFU1RfRihGaWxl
U3lzdGVtVGVzdCwgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVWaWFGaWxlTWV0YWRhdGEpCit7Cisg
ICAgcnVuR2V0RmlsZU1vZGlmaWNhdGlvblRpbWVUZXN0KHRlbXBGaWxlUGF0aCgpLCBbXShjb25z
dCBTdHJpbmcmIHBhdGgpIC0+IE9wdGlvbmFsPFdhbGxUaW1lPiB7CisgICAgICAgIGF1dG8gbWV0
YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEocGF0aCk7CisgICAgICAgIGlmICghbWV0
YWRhdGEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
bWV0YWRhdGEtPm1vZGlmaWNhdGlvblRpbWU7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427722</attachid>
            <date>2021-05-04 18:41:32 -0700</date>
            <delta_ts>2021-05-04 20:53:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225362-20210504184131.patch</filename>
            <type>text/plain</type>
            <size>23777</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjFiN2JlY2UzZjBiN2VjNDFiMjkwOWU0MmViYzhlOWNlOGZjNWNiLi5jNzgyMWFiMzFhZmFmNWJm
YTE2M2U1ZmJlZGQ5ZGJmNmUzZWRlYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisKIDIwMjEtMDUtMDMg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzeW50YXggZXJy
b3IgbWVzc2FnZSBmb3IgQVVUT1BMVVNQTFVTIHRva2VuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyNWNkNDQzMWE1ZGFiNGU4
YWViYTAxY2JmY2UwMWFkM2I2NGM0OGI0Li41ZTZlYjJmM2I5MWY1ZmEyNjlhZjkwYmFlMDA3YWE1
NDEzYjEwNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpmaWxlTWV0YWRh
dGEoKSAmIEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKCkgdG8gc3RkOjpmaWxl
c3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
b3J0IEZpbGVzeXN0ZW06OmZpbGVNZXRhZGF0YSgpICYgRmlsZXN5c3RlbTo6Z2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgYW5kIGdldCByaWQgb2Yg
cGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogd3RmL0ZpbGVT
eXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6dG9XYWxsVGltZSk6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxlTWV0YWRhdGEpOgorICAgICAgICAqIHd0
Zi9GaWxlU3lzdGVtLmg6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHd0Zi93
aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisKIDIwMjEtMDUtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCBpdGVyYXRlIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Om1fd2Vic2l0ZURhdGFTdG9yZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpp
bmRleCA1ZmI1NjAxNWZiZDA4ODc5YTBkYmM5YWI3NTJkMTNkMmYxNDMzODg4Li4zYTVkYTQzYzYz
ZGE1ZGZiNTc0MWJiNDA2ZmU0ZTU5YjFhOGI1YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmln
CkBAIC0yNyw3ICsyNyw3IEBAIERFRklORVNfTU9EVUxFID0gWUVTOwogTU9EVUxFTUFQX0ZJTEUg
PSAkKFNSQ1JPT1QpL0phdmFTY3JpcHRDb3JlLm1vZHVsZW1hcDsKIAogLy8gUHJldmVudCBDKysg
c3RhbmRhcmQgbGlicmFyeSBvcGVyYXRvciBuZXcsIGRlbGV0ZSBhbmQgdGhlaXIgcmVsYXRlZCBl
eGNlcHRpb24gdHlwZXMgZnJvbSBiZWluZyBleHBvcnRlZCBhcyB3ZWFrIHN5bWJvbHMuCi1PVEhF
Ul9MREZMQUdTX0hJREVfU1lNQk9MUyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDli
YWRfYWxsb2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aVFNTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2U18gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3Qz
X18xOGZ1bmN0aW9uSUZ2dkVFY2xFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4
ZnVuY3Rpb25JRnZ2RUVDMUVPUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThm
dW5jdGlvbklGdnZFRUMyRU9TMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThm
dW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVj
bEVTM19TNV8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4z
SlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVy
YXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pO
U3QzX18xOGZ1bmN0aW9uSUZ2dkVFRDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNf
XzE4ZnVuY3Rpb25JRnZ2RUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFZOU3QzX18x
MTdiYWRfZnVuY3Rpb25fY2FsbEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9f
ZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9f
cmFuZ2VfZW5kRVM0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmls
ZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTEzX19yYW5nZV9i
ZWdpbkVTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyN19f
aXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNf
c3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJ
Y0UxNV9fYXBwZW5kX3NvdXJjZUlQS2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90
cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxf
X1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBL
Y0VFTlNfOWVuYWJsZV9pZklYc3IyMV9faXNfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZF
NHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0
b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMTRfX2ZzMTBm
aWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JkZUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JwcEV2IC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhh
YmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFFRTExX19yYW5nZV9lbmRFUEtjIC1XbCwtdW5leHBv
cnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2No
YXJfYXJyYXlJQTEwX2NQY2NMYjFFRTEzX19yYW5nZV9iZWdpbkVQS2MgLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVf
X2FwcGVuZF9zb3VyY2VJQTEwX2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFp
dHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF87CitPVEhFUl9MREZMQUdTX0hJREVfU1lNQk9M
UyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRT
U3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFNTdDlleGNlcHRpb24gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2U18gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pu
d21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2dkVFY2xF
diAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVDMUVPUzJf
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdnZFRUMyRU9TMl8g
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0
ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVjbEVTM19TNV8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRv
ckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3Qz
X18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJ
REVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVF
RDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVEMkV2
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFZOU3QzX18xMTdiYWRfZnVuY3Rpb25fY2FsbEUg
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNf
cGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9fcmFuZ2VfZW5kRVM0XyAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJs
ZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTEzX19yYW5nZV9iZWdpbkVTNF8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBw
ZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVy
YXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJh
aXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxf
X1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNV9fYXBwZW5kX3NvdXJjZUlQ
S2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRv
ckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVz
eXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3Iy
MV9faXNfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3Ry
aW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3Rvcnlf
aXRlcmF0b3JkZUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxl
c3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JwcEV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQ
Y2NMYjFFRTExX19yYW5nZV9lbmRFUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19f
MTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFF
RTEzX19yYW5nZV9iZWdpbkVQS2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9f
ZnMxMGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0
M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VJQTEwX2NF
RXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvcklj
RUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW0yNF9fdGhyb3dfZmlsZXN5c3RlbV9lcnJvcklKUlBLY1JLTlMxXzRwYXRoRVJLTlNfMTBlcnJv
cl9jb2RlRUVFRXZEcE9UXzsKIAogT1RIRVJfTERGTEFHU19CQVNFID0gJChPVEhFUl9MREZMQUdT
X0hJREVfU1lNQk9MUykgLWZvcmNlX2xvYWQgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9saWJXVEYuYSI7CiBPVEhFUl9MREZMQUdTW3Nkaz1lbWJl
ZGRlZCpdID0gJChpbmhlcml0ZWQpICQoT1RIRVJfTERGTEFHU19CQVNFKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAKaW5kZXggZjdkNjc0OWNjOWViZTVjOTE5N2JkMDg4MDBhZDY4MjkyODFmMjlkYy4uMGNl
Mjc3NjYzMWQ0ODk1ODJhNGQ5NTQ4ZWZjOGYyNDM1NjQ5Zjk2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5j
cHAKQEAgLTYyMyw1ICs2MjMsNjcgQEAgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuICFlYzsKIH0KIAorc3RhdGljIFdhbGxUaW1lIHRv
V2FsbFRpbWUoc3RkOjpmaWxlc3lzdGVtOjpmaWxlX3RpbWVfdHlwZSBmaWxlVGltZSkKK3sKKyAg
ICAvLyBGSVhNRTogVXNlIHN0ZDo6Y2hyb25vOjpmaWxlX2Nsb2NrOjp0b19zeXMoKSBvbmNlIHdl
IGNhbiB1c2UgQysrMjAuCisgICAgYXV0byBtb2RpZmljYXRpb25UaW1lQXNUaW1lVCA9IHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRvX3RpbWVfdChzdGQ6OmNocm9ubzo6dGltZV9wb2ludF9j
YXN0PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmR1cmF0aW9uPihmaWxlVGltZSAtIGRlY2x0
eXBlKGZpbGVUaW1lKTo6Y2xvY2s6Om5vdygpICsgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
bm93KCkpKTsKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1vZGlmaWNhdGlv
blRpbWVBc1RpbWVUKTsKK30KKworT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRp
b25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBzdGQ6OmVycm9yX2NvZGUgZWM7Cisg
ICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gc3RkOjpmaWxlc3lzdGVtOjpsYXN0X3dyaXRlX3Rp
bWUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgZWMpOworICAgIGlmIChl
YykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gdG9XYWxsVGltZSht
b2RpZmljYXRpb25UaW1lKTsKK30KKworc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmls
ZU1ldGFkYXRhUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgs
IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcykKK3sK
KyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBzdGQ6OmZpbGVzeXN0ZW06OnBhdGggZnNQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpLmRhdGEoKTsKKworICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKKyAgICBpZiAoc2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rcyA9PSBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMg
JiYgc3RkOjpmaWxlc3lzdGVtOjppc19zeW1saW5rKGZzUGF0aCwgZWMpKSB7CisgICAgICAgIGZz
UGF0aCA9IHN0ZDo6ZmlsZXN5c3RlbTo6cmVhZF9zeW1saW5rKGZzUGF0aCwgZWMpOworICAgICAg
ICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAg
IGVjID0geyB9OworICAgIHN0ZDo6ZmlsZXN5c3RlbTo6ZGlyZWN0b3J5X2VudHJ5IGVudHJ5KGZz
UGF0aCwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IHRvV2FsbFRpbWUoZW50cnkubGFzdF93cml0ZV90
aW1lKGVjKSk7CisgICAgYXV0byBmaWxlU2l6ZSA9IGVudHJ5LmZpbGVfc2l6ZShlYyk7CisjaWYg
T1MoVU5JWCkKKyAgICBzdGQ6OmZpbGVzeXN0ZW06OnBhdGg6OnN0cmluZ190eXBlIGZpbGVuYW1l
ID0gZnNQYXRoLmZpbGVuYW1lKCk7CisgICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5lbXB0
eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKKyNlbHNlCisgICAgYm9vbCBpc0hpZGRlbiA9IGZh
bHNlOworI2VuZGlmCisgICAgRmlsZU1ldGFkYXRhOjpUeXBlIHR5cGUgPSBGaWxlTWV0YWRhdGE6
OlR5cGU6OkZpbGU7CisgICAgaWYgKGVudHJ5LmlzX3N5bWxpbmsoZWMpKQorICAgICAgICB0eXBl
ID0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7CisgICAgZWxzZSBpZiAoZW50cnku
aXNfZGlyZWN0b3J5KGVjKSkKKyAgICAgICAgdHlwZSA9IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGly
ZWN0b3J5OworCisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7IG1vZGlmaWNhdGlvblRpbWUsIHN0
YXRpY19jYXN0PGxvbmcgbG9uZz4oZmlsZVNpemUpLCBpc0hpZGRlbiwgdHlwZSB9OworfQorCitP
cHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0YVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltbGlua3MocGF0
aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pOworfQorCitPcHRpb25hbDxGaWxlTWV0
YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkK
K3sKKyAgICByZXR1cm4gZmlsZU1ldGFkYXRhUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1saW5rcyhw
YXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBGaWxlU3lzdGVtSW1wbAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmls
ZVN5c3RlbUdsaWIuY3BwCmluZGV4IDYzZDVkYWYxYTk5NGZmNzIwY2M5NDMwM2MxZjNjNTJiYTQ0
ZTQwODMuLjZkZmJhNTFmMjI4ZThkYWJhYjViYTNlOTE4N2EzZTgyODYxYTlmOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0xNTIsNTEgKzE1Miw2IEBAIE9wdGlv
bmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpCiAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0
OwotICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhz
dGF0UmVzdWx0LnN0X210aW1lKTsKLX0KLQotc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0Zp
bGVNZXRhdGFUeXBlKEdTdGF0QnVmIHN0YXRSZXN1bHQpCi17Ci0gICAgaWYgKFNfSVNESVIoc3Rh
dFJlc3VsdC5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGly
ZWN0b3J5OwotICAgIGlmIChTX0lTTE5LKHN0YXRSZXN1bHQuc3RfbW9kZSkpCi0gICAgICAgIHJl
dHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKLSAgICByZXR1cm4gRmlsZU1l
dGFkYXRhOjpUeXBlOjpGaWxlOwotfQotCi1zdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBm
aWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCAoKnN0YXRG
dW5jKShjb25zdCBTdHJpbmcmLCBHU3RhdEJ1ZiopKQotewotICAgIEdTdGF0QnVmIHN0YXRSZXN1
bHQ7Ci0gICAgaWYgKCFzdGF0RnVuYyhwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUo
cGF0aCk7Ci0gICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmlsZW5h
bWVbMF0gPT0gJy4nOwotCi0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7Ci0gICAgICAgIFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0X210aW1lKSwKLSAgICAgICAgc3RhdFJl
c3VsdC5zdF9zaXplLAotICAgICAgICBpc0hpZGRlbiwKLSAgICAgICAgdG9GaWxlTWV0YXRhVHlw
ZShzdGF0UmVzdWx0KQotICAgIH07Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1l
dGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNp
bmdGdW5jdGlvbihwYXRoLCAmZ2V0RmlsZUxTdGF0KTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFk
YXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17
Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVTdGF0
KTsKLX0KLQogU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogewogICAgIGlmIChwYXRoLmVuZHNXaXRoKEdf
RElSX1NFUEFSQVRPUl9TKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVT
eXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
CmluZGV4IGJmZThmYWJiNmJmYzY3MGU0ZWU0YjMwZDhiM2M0OGU0NzlkYzVkMjMuLjg4MjM4ZmU4
MGRlNGQ5YjEwODA3YjU5MmNjZTU1N2IwYTAyOWYxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTg2LDYxICsxODYsNiBAQCBPcHRpb25hbDxXYWxsVGlt
ZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiAjZW5kaWYKIH0KIAot
T3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5m
bzsKLQotICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMo
ZmlsZUluZm8uc3RfbXRpbWUpOwotfQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmls
ZU1ldGF0YVR5cGUoc3RydWN0IHN0YXQgZmlsZUluZm8pCi17Ci0gICAgaWYgKFNfSVNESVIoZmls
ZUluZm8uc3RfbW9kZSkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVj
dG9yeTsKLSAgICBpZiAoU19JU0xOSyhmaWxlSW5mby5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJu
IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRh
dGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVN
ZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQgKCpzdGF0RnVuYyko
Y29uc3QgY2hhciosIHN0cnVjdCBzdGF0KikpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZz
UmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0gICAgaWYgKHN0YXRGdW5jKGZzUmVwLmRhdGEoKSwg
JmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFN0cmluZyBm
aWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKLSAgICBib29sIGlzSGlkZGVuID0gIWZp
bGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7Ci0gICAgcmV0dXJuIEZpbGVN
ZXRhZGF0YSB7Ci0gICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9t
dGltZSksCi0gICAgICAgIGZpbGVJbmZvLnN0X3NpemUsCi0gICAgICAgIGlzSGlkZGVuLAotICAg
ICAgICB0b0ZpbGVNZXRhdGFUeXBlKGZpbGVJbmZvKQotICAgIH07Ci19Ci0KLU9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1
cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmbHN0YXQpOwotfQotCi1PcHRpb25h
bDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAm
c3RhdCk7Ci19Ci0KIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKIHsKICAgICBpZiAocGF0aC5lbmRzV2l0
aCgnLycpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
IGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IGZkNTlmMTkwM2U2
ZTFmZTg0ZDE1OGQ1NzVhOTYyOWVhYjkwMGM5ZDUuLjQ3OTA2YzdjNmM2MWVlYmY0OWQ5N2RjZTdl
ZGFjZmIyNTJhZjdjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVt
V2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTEx
NCwxNyArMTE0LDYgQEAgYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhh
bmRsZSwgbG9uZyBsb25nJiBzaXplKQogICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21CeUhhbmRs
ZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24sIHNpemUpOwogfQogCi1P
cHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5k
RGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAg
ICB0aW1lX3QgdGltZSA9IDA7Ci0gICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERh
dGEoZmluZERhdGEsIHRpbWUpOwotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMo
dGltZSk7Ci19Ci0KIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwpAQCAtMTU0
LDYzICsxNDMsNiBAQCBzdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgYm9vbCBpc1N5bWJvbGljTGluayhXSU4zMl9GSU5EX0RBVEFXIGZpbmRE
YXRhKQotewotICAgIHJldHVybiBmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRS
SUJVVEVfUkVQQVJTRV9QT0lOVCAmJiBmaW5kRGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBBUlNF
X1RBR19TWU1MSU5LOwotfQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGFk
YXRhVHlwZShXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQotewotICAgIGlmIChmaW5kRGF0YS5k
d0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQotICAgICAgICByZXR1
cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKGlzU3ltYm9saWNMaW5r
KGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNM
aW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBP
cHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoV0lOMzJfRklORF9E
QVRBVyBmaW5kRGF0YSkKLXsKLSAgICBsb25nIGxvbmcgbGVuZ3RoOwotICAgIGlmICghZ2V0Rmls
ZVNpemVGcm9tRmluZERhdGEoZmluZERhdGEsIGxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KLSAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbW9kaWZpY2F0aW9uVGltZSk7Ci0K
LSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKG1vZGlmaWNhdGlvblRpbWUpLAotICAgICAgICBsZW5ndGgsCi0gICAgICAgIHN0YXRpY19j
YXN0PGJvb2w+KGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ISURE
RU4pLAotICAgICAgICB0b0ZpbGVNZXRhZGF0YVR5cGUoZmluZERhdGEpCi0gICAgfTsKLX0KLQot
T3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShw
YXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1
cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVN
ZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRo
KQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0
YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBp
ZiAoaXNTeW1ib2xpY0xpbmsoZmluZERhdGEpKSB7Ci0gICAgICAgIFN0cmluZyB0YXJnZXRQYXRo
ID0gZ2V0RmluYWxQYXRoTmFtZShwYXRoKTsKLSAgICAgICAgaWYgKHRhcmdldFBhdGguaXNOdWxs
KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICBpZiAoIWdldEZp
bmREYXRhKHRhcmdldFBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERh
dGEpOwotfQotCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7CiAgICAgVmVjdG9yPFVDaGFyPiBidWZm
ZXIoTUFYX1BBVEgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGFlYjYwNjA4YzQwNmU1NGE0YThmZjNmYjIyY2M5MDk1MjZjY2RmNTcuLmZkYjQ0
NTZlOTllYmRiYmU2NmRmOTEyZWJhMWI3YmVmMmUxYTgzNTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0w
NCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBvcnQgRmlsZXN5
c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUX0YpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuR2V0RmlsZU1vZGlmaWNhdGlv
blRpbWVUZXN0KToKKwogMjAyMS0wNS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHRyeSBhbmQgcmUtZW5hYmxlIEFwcGxlTGFuZ3VhZ2Vz
VGVzdC5VcGRhdGVBcHBsZUxhbmd1YWdlcyBvbiBBcHBsZSBTaWxpY29uLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA4YjczYWYxZTg4ZGFmMmJi
ZWRlNjI5MzZiYWM4N2ZjMmU0ZDg2ODhjLi5kMWYzYTFhOWY3ZmU0MGQyMTM1NDdkM2MwZjIxMDg1
M2M0M2Y2ZmM3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVt
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAi
VGVzdC5oIgorI2luY2x1ZGUgIlV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRh
dGEuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CkBAIC0xNDIsMTkgKzE0Myw3NCBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEZpbGVz
SGF2ZVNhbWVWb2x1bWUpCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2Ft
ZVZvbHVtZShiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRo
KCkpKTsKIH0KIAotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1saW5r
KQorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFGaWxlU3ltbGluaykKIHsK
ICAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1w
RmlsZVN5bWxpbmtQYXRoKCkpOwogICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNW
YWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEudmFsdWUoKS50eXBlID09
IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKLSAgICBFWFBFQ1RfRkFMU0Uoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihzeW1saW5rTWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpID09IHN0cmxl
bihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEt
PnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOworICAgIEVYUEVDVF9G
QUxTRShzeW1saW5rTWV0YWRhdGEtPmlzSGlkZGVuKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0aWNf
Y2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS0+bGVuZ3RoKSA9PSBzdHJsZW4oRmlsZVN5c3Rl
bVRlc3REYXRhKSk7CiAKICAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6Zmls
ZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKICAgICBB
U1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSh0
YXJnZXRNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsK
LSAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSksIHN0YXRpY19jYXN0PHNp
emVfdD4odGFyZ2V0TWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0
YXJnZXRNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOworICAgIEVY
UEVDVF9GQUxTRSh0YXJnZXRNZXRhZGF0YS0+aXNIaWRkZW4pOworICAgIEVYUEVDVF9FUShzdHJs
ZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0
YS0+bGVuZ3RoKSk7CisKKyAgICBhdXRvIGFjdHVhbFRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShhY3R1YWxU
YXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShhY3R1YWxUYXJnZXRN
ZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOworICAgIEVYUEVDVF9F
USh0YXJnZXRNZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSwgYWN0dWFsVGFyZ2V0TWV0YWRhdGEt
Pm1vZGlmaWNhdGlvblRpbWUpOworICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3RE
YXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS0+bGVuZ3RoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKGFjdHVhbFRhcmdldE1ldGFkYXRhLT5pc0hpZGRlbik7CiB9CiAKK1RFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRhRGlyZWN0b3J5U3ltbGluaykKK3sKKyAg
ICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRW1w
dHlGb2xkZXJTeW1saW5rUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShzeW1saW5rTWV0YWRhdGEu
aGFzVmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRhLT50eXBlID09IEZp
bGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3ltbGlu
a01ldGFkYXRhLT5pc0hpZGRlbik7CisKKyAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gRmlsZVN5
c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVtcEVtcHR5Rm9sZGVyU3ltbGlu
a1BhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUodGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7Cisg
ICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBl
OjpEaXJlY3RvcnkpOworICAgIEVYUEVDVF9GQUxTRSh0YXJnZXRNZXRhZGF0YS0+aXNIaWRkZW4p
OworCisgICAgYXV0byBhY3R1YWxUYXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRh
ZGF0YSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKGFjdHVhbFRhcmdl
dE1ldGFkYXRhLmhhc1ZhbHVlKCkpOworICAgIEVYUEVDVF9UUlVFKGFjdHVhbFRhcmdldE1ldGFk
YXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5KTsKKyAgICBFWFBFQ1Rf
RVEodGFyZ2V0TWV0YWRhdGEtPm1vZGlmaWNhdGlvblRpbWUsIGFjdHVhbFRhcmdldE1ldGFkYXRh
LT5tb2RpZmljYXRpb25UaW1lKTsKKyAgICBFWFBFQ1RfRVEodGFyZ2V0TWV0YWRhdGEtPmxlbmd0
aCwgYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCk7CisgICAgRVhQRUNUX0ZBTFNFKGFjdHVh
bFRhcmdldE1ldGFkYXRhLT5pc0hpZGRlbik7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwg
R2V0RmlsZU1ldGFkYXRhRmlsZURvZXNOb3RFeGlzdCkKK3sKKyAgICBhdXRvIGRvZXNOb3RFeGlz
dFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9s
ZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiKTsKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5
c3RlbTo6ZmlsZU1ldGFkYXRhKGRvZXNOb3RFeGlzdFBhdGgpOworICAgIEVYUEVDVF9UUlVFKCFt
ZXRhZGF0YSk7Cit9CisKKyNpZiBPUyhVTklYKQorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRG
aWxlTWV0YWRhdGFIaWRkZW5GaWxlKQoreworICAgIGF1dG8gaGlkZGVuRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAi
LmhpZGRlbkZpbGUiKTsKKyAgICBhdXRvIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmls
ZShoaWRkZW5GaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CisgICAg
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBz
dHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGVIYW5kbGUpOworCisgICAgYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0
YShoaWRkZW5GaWxlUGF0aCk7CisgICAgQVNTRVJUX1RSVUUobWV0YWRhdGEuaGFzVmFsdWUoKSk7
CisgICAgRVhQRUNUX1RSVUUobWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpG
aWxlKTsKKyAgICBFWFBFQ1RfVFJVRShtZXRhZGF0YS0+aXNIaWRkZW4pOworICAgIEVYUEVDVF9F
UShzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtZXRhZGF0
YS0+bGVuZ3RoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGhp
ZGRlbkZpbGVQYXRoKSk7Cit9CisjZW5kaWYKKwogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBVbmlj
b2RlRGlyZWN0b3J5TmFtZSkKIHsKICAgICBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVURjgo
Ii90ZXN0L2FcdTAzMDhsby90ZXN0LnR4dCIpOwpAQCAtNTI4LDQgKzU4NCw1MiBAQCBURVNUX0Yo
RmlsZVN5c3RlbVRlc3QsIGNyZWF0ZUhhcmRMaW5rT3JDb3B5RmlsZSkKICAgICBFWFBFQ1RfRVEo
bGlua0ZpbGVTaXplLCBmaWxlU2l6ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJ1bkdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lVGVzdChjb25zdCBTdHJpbmcmIHBhdGgsIEZ1bmN0aW9uPE9wdGlvbmFsPFdh
bGxUaW1lPihjb25zdCBTdHJpbmcmKT4mJiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSkKK3sKKyAg
ICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoKTsK
KyAgICBFWFBFQ1RfVFJVRSghIW1vZGlmaWNhdGlvblRpbWUpOworICAgIGlmICghbW9kaWZpY2F0
aW9uVGltZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgdGltZW91dCA9IDA7Cisg
ICAgd2hpbGUgKCptb2RpZmljYXRpb25UaW1lID49IFdhbGxUaW1lOjpub3coKSAmJiArK3RpbWVv
dXQgPCAyMCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICBF
WFBFQ1RfTFQobW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpLCBX
YWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKKworICAgIGF1dG8g
dGltZUJlZm9yZU1vZGlmaWNhdGlvbiA9IFdhbGxUaW1lOjpub3coKTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnNsZWVwKDIpOworCisgICAgLy8gTW9kaWZ5IHRoZSBmaWxlLgorICAgIGF1
dG8gZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZp
bGVPcGVuTW9kZTo6UmVhZFdyaXRlKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hh
bmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxl
SGFuZGxlLCAiZm9vIiwgc3RybGVuKCJmb28iKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGVIYW5kbGUpOworCisgICAgYXV0byBuZXdNb2RpZmljYXRpb25UaW1lID0gZ2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUocGF0aCk7CisgICAgRVhQRUNUX1RSVUUoISFuZXdNb2RpZmljYXRpb25U
aW1lKTsKKyAgICBpZiAoIW5ld01vZGlmaWNhdGlvblRpbWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEVYUEVDVF9HVChuZXdNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZh
bHVlKCksIG1vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7Cisg
ICAgRVhQRUNUX0dUKG5ld01vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKSwgdGltZUJlZm9yZU1vZGlmaWNhdGlvbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkp
OworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKQor
eworICAgIHJ1bkdldEZpbGVNb2RpZmljYXRpb25UaW1lVGVzdCh0ZW1wRmlsZVBhdGgoKSwgW10o
Y29uc3QgU3RyaW5nJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShwYXRoKTsKKyAgICB9KTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1U
ZXN0LCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZVZpYUZpbGVNZXRhZGF0YSkKK3sKKyAgICBydW5H
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZVRlc3QodGVtcEZpbGVQYXRoKCksIFtdKGNvbnN0IFN0cmlu
ZyYgcGF0aCkgLT4gT3B0aW9uYWw8V2FsbFRpbWU+IHsKKyAgICAgICAgYXV0byBtZXRhZGF0YSA9
IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShwYXRoKTsKKyAgICAgICAgaWYgKCFtZXRhZGF0YSkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBtZXRhZGF0
YS0+bW9kaWZpY2F0aW9uVGltZTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427729</attachid>
            <date>2021-05-04 20:53:22 -0700</date>
            <delta_ts>2021-05-05 09:11:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225362-20210504205321.patch</filename>
            <type>text/plain</type>
            <size>28241</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjFiN2JlY2UzZjBiN2VjNDFiMjkwOWU0MmViYzhlOWNlOGZjNWNiLi5jNzgyMWFiMzFhZmFmNWJm
YTE2M2U1ZmJlZGQ5ZGJmNmUzZWRlYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisKIDIwMjEtMDUtMDMg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzeW50YXggZXJy
b3IgbWVzc2FnZSBmb3IgQVVUT1BMVVNQTFVTIHRva2VuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyNWNkNDQzMWE1ZGFiNGU4
YWViYTAxY2JmY2UwMWFkM2I2NGM0OGI0Li41ZTZlYjJmM2I5MWY1ZmEyNjlhZjkwYmFlMDA3YWE1
NDEzYjEwNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpmaWxlTWV0YWRh
dGEoKSAmIEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKCkgdG8gc3RkOjpmaWxl
c3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
b3J0IEZpbGVzeXN0ZW06OmZpbGVNZXRhZGF0YSgpICYgRmlsZXN5c3RlbTo6Z2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgYW5kIGdldCByaWQgb2Yg
cGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogd3RmL0ZpbGVT
eXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6dG9XYWxsVGltZSk6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxlTWV0YWRhdGEpOgorICAgICAgICAqIHd0
Zi9GaWxlU3lzdGVtLmg6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHd0Zi93
aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisKIDIwMjEtMDUtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCBpdGVyYXRlIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Om1fd2Vic2l0ZURhdGFTdG9yZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpp
bmRleCA1ZmI1NjAxNWZiZDA4ODc5YTBkYmM5YWI3NTJkMTNkMmYxNDMzODg4Li4zYTVkYTQzYzYz
ZGE1ZGZiNTc0MWJiNDA2ZmU0ZTU5YjFhOGI1YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmln
CkBAIC0yNyw3ICsyNyw3IEBAIERFRklORVNfTU9EVUxFID0gWUVTOwogTU9EVUxFTUFQX0ZJTEUg
PSAkKFNSQ1JPT1QpL0phdmFTY3JpcHRDb3JlLm1vZHVsZW1hcDsKIAogLy8gUHJldmVudCBDKysg
c3RhbmRhcmQgbGlicmFyeSBvcGVyYXRvciBuZXcsIGRlbGV0ZSBhbmQgdGhlaXIgcmVsYXRlZCBl
eGNlcHRpb24gdHlwZXMgZnJvbSBiZWluZyBleHBvcnRlZCBhcyB3ZWFrIHN5bWJvbHMuCi1PVEhF
Ul9MREZMQUdTX0hJREVfU1lNQk9MUyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDli
YWRfYWxsb2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aVFNTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2U18gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3Qz
X18xOGZ1bmN0aW9uSUZ2dkVFY2xFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4
ZnVuY3Rpb25JRnZ2RUVDMUVPUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThm
dW5jdGlvbklGdnZFRUMyRU9TMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThm
dW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVj
bEVTM19TNV8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4z
SlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVy
YXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pO
U3QzX18xOGZ1bmN0aW9uSUZ2dkVFRDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNf
XzE4ZnVuY3Rpb25JRnZ2RUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFZOU3QzX18x
MTdiYWRfZnVuY3Rpb25fY2FsbEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9f
ZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9f
cmFuZ2VfZW5kRVM0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmls
ZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTEzX19yYW5nZV9i
ZWdpbkVTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyN19f
aXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNf
c3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJ
Y0UxNV9fYXBwZW5kX3NvdXJjZUlQS2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90
cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxf
X1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBL
Y0VFTlNfOWVuYWJsZV9pZklYc3IyMV9faXNfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZF
NHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0
b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMTRfX2ZzMTBm
aWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JkZUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JwcEV2IC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhh
YmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFFRTExX19yYW5nZV9lbmRFUEtjIC1XbCwtdW5leHBv
cnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2No
YXJfYXJyYXlJQTEwX2NQY2NMYjFFRTEzX19yYW5nZV9iZWdpbkVQS2MgLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVf
X2FwcGVuZF9zb3VyY2VJQTEwX2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFp
dHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF87CitPVEhFUl9MREZMQUdTX0hJREVfU1lNQk9M
UyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRT
U3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFNTdDlleGNlcHRpb24gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2U18gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pu
d21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2dkVFY2xF
diAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVDMUVPUzJf
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdnZFRUMyRU9TMl8g
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0
ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVjbEVTM19TNV8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRv
ckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3Qz
X18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJ
REVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVF
RDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVEMkV2
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFZOU3QzX18xMTdiYWRfZnVuY3Rpb25fY2FsbEUg
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNf
cGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9fcmFuZ2VfZW5kRVM0XyAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJs
ZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTEzX19yYW5nZV9iZWdpbkVTNF8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBw
ZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVy
YXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJh
aXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxf
X1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNV9fYXBwZW5kX3NvdXJjZUlQ
S2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRv
ckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVz
eXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3Iy
MV9faXNfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3Ry
aW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3Rvcnlf
aXRlcmF0b3JkZUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxl
c3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JwcEV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQ
Y2NMYjFFRTExX19yYW5nZV9lbmRFUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19f
MTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFF
RTEzX19yYW5nZV9iZWdpbkVQS2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9f
ZnMxMGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0
M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VJQTEwX2NF
RXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvcklj
RUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW0yNF9fdGhyb3dfZmlsZXN5c3RlbV9lcnJvcklKUlBLY1JLTlMxXzRwYXRoRVJLTlNfMTBlcnJv
cl9jb2RlRUVFRXZEcE9UXzsKIAogT1RIRVJfTERGTEFHU19CQVNFID0gJChPVEhFUl9MREZMQUdT
X0hJREVfU1lNQk9MUykgLWZvcmNlX2xvYWQgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9saWJXVEYuYSI7CiBPVEhFUl9MREZMQUdTW3Nkaz1lbWJl
ZGRlZCpdID0gJChpbmhlcml0ZWQpICQoT1RIRVJfTERGTEFHU19CQVNFKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAKaW5kZXggZjdkNjc0OWNjOWViZTVjOTE5N2JkMDg4MDBhZDY4MjkyODFmMjlkYy4uMzY0
YTZhZjhkNWU0Y2VlNDdkMjQ3MzcxMDJjYzE3NWYxMTQ2YzU5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5j
cHAKQEAgLTYyMyw1ICs2MjMsNzIgQEAgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuICFlYzsKIH0KIAorc3RhdGljIFdhbGxUaW1lIHRv
V2FsbFRpbWUoc3RkOjpmaWxlc3lzdGVtOjpmaWxlX3RpbWVfdHlwZSBmaWxlVGltZSkKK3sKKyAg
ICAvLyBGSVhNRTogVXNlIHN0ZDo6Y2hyb25vOjpmaWxlX2Nsb2NrOjp0b19zeXMoKSBvbmNlIHdl
IGNhbiB1c2UgQysrMjAuCisgICAgYXV0byBtb2RpZmljYXRpb25UaW1lQXNUaW1lVCA9IHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRvX3RpbWVfdChzdGQ6OmNocm9ubzo6dGltZV9wb2ludF9j
YXN0PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmR1cmF0aW9uPihmaWxlVGltZSAtIGRlY2x0
eXBlKGZpbGVUaW1lKTo6Y2xvY2s6Om5vdygpICsgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
bm93KCkpKTsKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1vZGlmaWNhdGlv
blRpbWVBc1RpbWVUKTsKK30KKworT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRp
b25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBzdGQ6OmVycm9yX2NvZGUgZWM7Cisg
ICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gc3RkOjpmaWxlc3lzdGVtOjpsYXN0X3dyaXRlX3Rp
bWUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgZWMpOworICAgIGlmIChl
YykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gdG9XYWxsVGltZSht
b2RpZmljYXRpb25UaW1lKTsKK30KKworc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmls
ZU1ldGFkYXRhUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgs
IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcykKK3sK
KyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBzdGQ6OmZpbGVzeXN0ZW06OnBhdGggZnNQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpLmRhdGEoKTsKKworICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKKyAgICBpZiAoc2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rcyA9PSBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMg
JiYgc3RkOjpmaWxlc3lzdGVtOjppc19zeW1saW5rKGZzUGF0aCwgZWMpKSB7CisgICAgICAgIGZz
UGF0aCA9IHN0ZDo6ZmlsZXN5c3RlbTo6cmVhZF9zeW1saW5rKGZzUGF0aCwgZWMpOworICAgICAg
ICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAg
IGVjID0geyB9OworICAgIHN0ZDo6ZmlsZXN5c3RlbTo6ZGlyZWN0b3J5X2VudHJ5IGVudHJ5KGZz
UGF0aCwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IHRvV2FsbFRpbWUoZW50cnkubGFzdF93cml0ZV90
aW1lKGVjKSk7CisKKyAgICAvLyBOb3RlIHRoYXQgdGhlIHJlc3VsdCBvZiBhdHRlbXB0aW5nIHRv
IGRldGVybWluZSB0aGUgc2l6ZSBvZiBhIGRpcmVjdG9yeSBpcyBpbXBsZW1lbnRhdGlvbi1kZWZp
bmVkLgorICAgIGF1dG8gZmlsZVNpemUgPSBlbnRyeS5maWxlX3NpemUoZWMpOworICAgIGlmIChl
YykKKyAgICAgICAgZmlsZVNpemUgPSAwOworCisjaWYgT1MoVU5JWCkKKyAgICBzdGQ6OmZpbGVz
eXN0ZW06OnBhdGg6OnN0cmluZ190eXBlIGZpbGVuYW1lID0gZnNQYXRoLmZpbGVuYW1lKCk7Cisg
ICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5lbXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcu
JzsKKyNlbHNlCisgICAgYm9vbCBpc0hpZGRlbiA9IGZhbHNlOworI2VuZGlmCisgICAgRmlsZU1l
dGFkYXRhOjpUeXBlIHR5cGUgPSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7CisgICAgaWYgKGVu
dHJ5LmlzX3N5bWxpbmsoZWMpKQorICAgICAgICB0eXBlID0gRmlsZU1ldGFkYXRhOjpUeXBlOjpT
eW1ib2xpY0xpbms7CisgICAgZWxzZSBpZiAoZW50cnkuaXNfZGlyZWN0b3J5KGVjKSkKKyAgICAg
ICAgdHlwZSA9IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OworCisgICAgcmV0dXJuIEZp
bGVNZXRhZGF0YSB7IG1vZGlmaWNhdGlvblRpbWUsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oZmls
ZVNpemUpLCBpc0hpZGRlbiwgdHlwZSB9OworfQorCitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZp
bGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0
YVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltbGlua3MocGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rczo6Tm8pOworfQorCitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxv
d2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFk
YXRhUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1saW5rcyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xp
Y0xpbmtzOjpZZXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbAogfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1H
bGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IDYz
ZDVkYWYxYTk5NGZmNzIwY2M5NDMwM2MxZjNjNTJiYTQ0ZTQwODMuLjZkZmJhNTFmMjI4ZThkYWJh
YjViYTNlOTE4N2EzZTgyODYxYTlmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIv
RmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUds
aWIuY3BwCkBAIC0xNTIsNTEgKzE1Miw2IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3Jl
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAot
T3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0OwotICAgIGlmICghZ2V0RmlsZVN0YXQo
cGF0aCwgJnN0YXRSZXN1bHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
cmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0X210aW1lKTsKLX0K
LQotc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKEdTdGF0QnVmIHN0
YXRSZXN1bHQpCi17Ci0gICAgaWYgKFNfSVNESVIoc3RhdFJlc3VsdC5zdF9tb2RlKSkKLSAgICAg
ICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwotICAgIGlmIChTX0lTTE5L
KHN0YXRSZXN1bHQuc3RfbW9kZSkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6
OlN5bWJvbGljTGluazsKLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOwotfQot
Ci1zdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9u
KGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCAoKnN0YXRGdW5jKShjb25zdCBTdHJpbmcmLCBHU3Rh
dEJ1ZiopKQotewotICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7Ci0gICAgaWYgKCFzdGF0RnVuYyhw
YXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBT
dHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7Ci0gICAgYm9vbCBpc0hpZGRl
biA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4nOwotCi0gICAgcmV0
dXJuIEZpbGVNZXRhZGF0YSB7Ci0gICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0
UmVzdWx0LnN0X210aW1lKSwKLSAgICAgICAgc3RhdFJlc3VsdC5zdF9zaXplLAotICAgICAgICBp
c0hpZGRlbiwKLSAgICAgICAgdG9GaWxlTWV0YXRhVHlwZShzdGF0UmVzdWx0KQotICAgIH07Ci19
Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0Rmls
ZUxTdGF0KTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dp
bmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0
YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVTdGF0KTsKLX0KLQogU3RyaW5nIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9u
ZW50KQogewogICAgIGlmIChwYXRoLmVuZHNXaXRoKEdfRElSX1NFUEFSQVRPUl9TKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGJmZThmYWJiNmJmYzY3MGU0
ZWU0YjMwZDhiM2M0OGU0NzlkYzVkMjMuLjg4MjM4ZmU4MGRlNGQ5YjEwODA3YjU5MmNjZTU1N2Iw
YTAyOWYxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAt
MTg2LDYxICsxODYsNiBAQCBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShj
b25zdCBTdHJpbmcmIHBhdGgpCiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5nIGZz
UmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5k
YXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLQotICAgIGlmIChzdGF0KGZzUmVw
LmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAg
IHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfbXRpbWUpOwotfQot
Ci1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoc3RydWN0IHN0YXQg
ZmlsZUluZm8pCi17Ci0gICAgaWYgKFNfSVNESVIoZmlsZUluZm8uc3RfbW9kZSkpCi0gICAgICAg
IHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKLSAgICBpZiAoU19JU0xOSyhm
aWxlSW5mby5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3lt
Ym9saWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0
YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29u
c3QgU3RyaW5nJiBwYXRoLCBpbnQgKCpzdGF0RnVuYykoY29uc3QgY2hhciosIHN0cnVjdCBzdGF0
KikpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87
Ci0gICAgaWYgKHN0YXRGdW5jKGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFt
ZShwYXRoKTsKLSAgICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxl
bmFtZVswXSA9PSAnLic7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7Ci0gICAgICAgIFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSksCi0gICAgICAgIGZpbGVJbmZv
LnN0X3NpemUsCi0gICAgICAgIGlzSGlkZGVuLAotICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKGZp
bGVJbmZvKQotICAgIH07Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRh
KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5j
dGlvbihwYXRoLCAmbHN0YXQpOwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRh
ZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4g
ZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmc3RhdCk7Ci19Ci0KIFN0cmluZyBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNv
bXBvbmVudCkKIHsKICAgICBpZiAocGF0aC5lbmRzV2l0aCgnLycpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwCmluZGV4IGZkNTlmMTkwM2U2ZTFmZTg0ZDE1OGQ1NzVhOTYyOWVhYjkw
MGM5ZDUuLjQ3OTA2YzdjNmM2MWVlYmY0OWQ5N2RjZTdlZGFjZmIyNTJhZjdjOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTExNCwxNyArMTE0LDYgQEAgYm9vbCBnZXRG
aWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgbG9uZyBsb25nJiBzaXplKQog
ICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVy
ZShmaWxlSW5mb3JtYXRpb24sIHNpemUpOwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRf
REFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICB0aW1lX3QgdGltZSA9IDA7Ci0gICAg
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOwotICAg
IHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGltZSk7Ci19Ci0KIE9wdGlvbmFsPFdh
bGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBX
SU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwpAQCAtMTU0LDYzICsxNDMsNiBAQCBzdGF0aWMgU3Ry
aW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBTdHJp
bmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1N5
bWJvbGljTGluayhXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQotewotICAgIHJldHVybiBmaW5k
RGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCAmJiBm
aW5kRGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBBUlNFX1RBR19TWU1MSU5LOwotfQotCi1zdGF0
aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGFkYXRhVHlwZShXSU4zMl9GSU5EX0RBVEFX
IGZpbmREYXRhKQotewotICAgIGlmIChmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9B
VFRSSUJVVEVfRElSRUNUT1JZKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpE
aXJlY3Rvcnk7Ci0gICAgaWYgKGlzU3ltYm9saWNMaW5rKGZpbmREYXRhKSkKLSAgICAgICAgcmV0
dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0
YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZp
bmREYXRhVG9GaWxlTWV0YWRhdGEoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkKLXsKLSAgICBs
b25nIGxvbmcgbGVuZ3RoOwotICAgIGlmICghZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoZmluZERh
dGEsIGxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICB0aW1lX3Qg
bW9kaWZpY2F0aW9uVGltZTsKLSAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0
YShmaW5kRGF0YSwgbW9kaWZpY2F0aW9uVGltZSk7Ci0KLSAgICByZXR1cm4gRmlsZU1ldGFkYXRh
IHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1vZGlmaWNhdGlvblRpbWUpLAot
ICAgICAgICBsZW5ndGgsCi0gICAgICAgIHN0YXRpY19jYXN0PGJvb2w+KGZpbmREYXRhLmR3Rmls
ZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ISURERU4pLAotICAgICAgICB0b0ZpbGVNZXRh
ZGF0YVR5cGUoZmluZERhdGEpCi0gICAgfTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBm
aWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcg
ZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0
YShmaW5kRGF0YSk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9s
bG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFU
QVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERh
dGEpKSB7Ci0gICAgICAgIFN0cmluZyB0YXJnZXRQYXRoID0gZ2V0RmluYWxQYXRoTmFtZShwYXRo
KTsKLSAgICAgICAgaWYgKHRhcmdldFBhdGguaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgICAgICBpZiAoIWdldEZpbmREYXRhKHRhcmdldFBhdGgsIGZpbmRE
YXRhKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgcmV0
dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERhdGEpOwotfQotCiBTdHJpbmcgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21w
b25lbnQpCiB7CiAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFlYjYwNjA4YzQwNmU1
NGE0YThmZjNmYjIyY2M5MDk1MjZjY2RmNTcuLmZkYjQ0NTZlOTllYmRiYmU2NmRmOTEyZWJhMWI3
YmVmMmUxYTgzNTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBG
aWxlc3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0
ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5
c3RlbS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6cnVuR2V0RmlsZU1vZGlmaWNhdGlvblRpbWVUZXN0KToKKwogMjAyMS0wNS0w
NCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHRyeSBhbmQgcmUtZW5hYmxlIEFwcGxlTGFuZ3VhZ2VzVGVzdC5VcGRhdGVBcHBsZUxhbmd1YWdl
cyBvbiBBcHBsZSBTaWxpY29uLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcAppbmRleCA4YjczYWYxZTg4ZGFmMmJiZWRlNjI5MzZiYWM4N2ZjMmU0ZDg2ODhj
Li5kMWYzYTFhOWY3ZmU0MGQyMTM1NDdkM2MwZjIxMDg1M2M0M2Y2ZmM3IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgIlV0aWxp
dGllcy5oIgogI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0xNDIsMTkgKzE0Myw3
NCBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCiAgICAgRVhQ
RUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29udGFpbmluZ0Zp
bGVQYXRoKCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKIH0KIAotVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1saW5rKQorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCBHZXRGaWxlTWV0YWRhdGFGaWxlU3ltbGluaykKIHsKICAgICBhdXRvIHN5bWxpbmtNZXRhZGF0
YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwogICAg
IEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJV
RShzeW1saW5rTWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3lt
Ym9saWNMaW5rKTsKLSAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8c2l6ZV90PihzeW1saW5r
TWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsK
KyAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpU
eXBlOjpTeW1ib2xpY0xpbmspOworICAgIEVYUEVDVF9GQUxTRShzeW1saW5rTWV0YWRhdGEtPmlz
SGlkZGVuKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRh
ZGF0YS0+bGVuZ3RoKSA9PSBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CiAKICAgICBhdXRv
IHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlu
a3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKICAgICBBU1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0
YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSh0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLnR5
cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKLSAgICBFWFBFQ1RfRVEoc3RybGVuKEZp
bGVTeXN0ZW1UZXN0RGF0YSksIHN0YXRpY19jYXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEudmFs
dWUoKS5sZW5ndGgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0YXJnZXRNZXRhZGF0YS0+dHlwZSA9PSBG
aWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOworICAgIEVYUEVDVF9GQUxTRSh0YXJnZXRNZXRhZGF0
YS0+aXNIaWRkZW4pOworICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwg
c3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS0+bGVuZ3RoKSk7CisKKyAgICBhdXRv
IGFjdHVhbFRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxl
UGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShhY3R1YWxUYXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgp
KTsKKyAgICBFWFBFQ1RfVFJVRShhY3R1YWxUYXJnZXRNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0
YWRhdGE6OlR5cGU6OkZpbGUpOworICAgIEVYUEVDVF9FUSh0YXJnZXRNZXRhZGF0YS0+bW9kaWZp
Y2F0aW9uVGltZSwgYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPm1vZGlmaWNhdGlvblRpbWUpOworICAg
IEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90
Pih0YXJnZXRNZXRhZGF0YS0+bGVuZ3RoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGFjdHVhbFRhcmdl
dE1ldGFkYXRhLT5pc0hpZGRlbik7CiB9CiAKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0Rmls
ZU1ldGFkYXRhRGlyZWN0b3J5U3ltbGluaykKK3sKKyAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9
IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpKTsK
KyAgICBBU1NFUlRfVFJVRShzeW1saW5rTWV0YWRhdGEuaGFzVmFsdWUoKSk7CisgICAgRVhQRUNU
X1RSVUUoc3ltbGlua01ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9s
aWNMaW5rKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3ltbGlua01ldGFkYXRhLT5pc0hpZGRlbik7CisK
KyAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93
aW5nU3ltbGlua3ModGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgoKSk7CisgICAgQVNTRVJUX1RS
VUUodGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0
YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3RvcnkpOworICAgIEVYUEVD
VF9GQUxTRSh0YXJnZXRNZXRhZGF0YS0+aXNIaWRkZW4pOworCisgICAgYXV0byBhY3R1YWxUYXJn
ZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRW1wdHlGb2xkZXJQYXRo
KCkpOworICAgIEFTU0VSVF9UUlVFKGFjdHVhbFRhcmdldE1ldGFkYXRhLmhhc1ZhbHVlKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGFjdHVhbFRhcmdldE1ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0
YTo6VHlwZTo6RGlyZWN0b3J5KTsKKyAgICBFWFBFQ1RfRVEodGFyZ2V0TWV0YWRhdGEtPm1vZGlm
aWNhdGlvblRpbWUsIGFjdHVhbFRhcmdldE1ldGFkYXRhLT5tb2RpZmljYXRpb25UaW1lKTsKKyAg
ICBFWFBFQ1RfRVEodGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCwgYWN0dWFsVGFyZ2V0TWV0YWRhdGEt
Pmxlbmd0aCk7CisgICAgRVhQRUNUX0ZBTFNFKGFjdHVhbFRhcmdldE1ldGFkYXRhLT5pc0hpZGRl
bik7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRhRmlsZURvZXNO
b3RFeGlzdCkKK3sKKyAgICBhdXRvIGRvZXNOb3RFeGlzdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhp
c3QiKTsKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGRvZXNO
b3RFeGlzdFBhdGgpOworICAgIEVYUEVDVF9UUlVFKCFtZXRhZGF0YSk7Cit9CisKKyNpZiBPUyhV
TklYKQorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFIaWRkZW5GaWxlKQor
eworICAgIGF1dG8gaGlkZGVuRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiLmhpZGRlbkZpbGUiKTsKKyAgICBhdXRv
IGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShoaWRkZW5GaWxlUGF0aCwgRmlsZVN5
c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
ZmlsZUhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRh
KSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworCisgICAgYXV0byBt
ZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShoaWRkZW5GaWxlUGF0aCk7CisgICAg
QVNTRVJUX1RSVUUobWV0YWRhdGEuaGFzVmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUobWV0YWRh
dGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKKyAgICBFWFBFQ1RfVFJVRSht
ZXRhZGF0YS0+aXNIaWRkZW4pOworICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3RE
YXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtZXRhZGF0YS0+bGVuZ3RoKSk7CisKKyAgICBFWFBF
Q1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGhpZGRlbkZpbGVQYXRoKSk7Cit9CisjZW5k
aWYKKwogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBVbmljb2RlRGlyZWN0b3J5TmFtZSkKIHsKICAg
ICBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVURjgoIi90ZXN0L2FcdTAzMDhsby90ZXN0LnR4
dCIpOwpAQCAtNTI4LDQgKzU4NCw1MiBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGNyZWF0ZUhh
cmRMaW5rT3JDb3B5RmlsZSkKICAgICBFWFBFQ1RfRVEobGlua0ZpbGVTaXplLCBmaWxlU2l6ZSk7
CiB9CiAKK3N0YXRpYyB2b2lkIHJ1bkdldEZpbGVNb2RpZmljYXRpb25UaW1lVGVzdChjb25zdCBT
dHJpbmcmIHBhdGgsIEZ1bmN0aW9uPE9wdGlvbmFsPFdhbGxUaW1lPihjb25zdCBTdHJpbmcmKT4m
JiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSkKK3sKKyAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUg
PSBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoKTsKKyAgICBFWFBFQ1RfVFJVRSghIW1vZGlm
aWNhdGlvblRpbWUpOworICAgIGlmICghbW9kaWZpY2F0aW9uVGltZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgdW5zaWduZWQgdGltZW91dCA9IDA7CisgICAgd2hpbGUgKCptb2RpZmljYXRpb25U
aW1lID49IFdhbGxUaW1lOjpub3coKSAmJiArK3RpbWVvdXQgPCAyMCkKKyAgICAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICBFWFBFQ1RfTFQobW9kaWZpY2F0aW9uVGlt
ZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpLCBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1Np
bmNlRXBvY2goKS52YWx1ZSgpKTsKKworICAgIGF1dG8gdGltZUJlZm9yZU1vZGlmaWNhdGlvbiA9
IFdhbGxUaW1lOjpub3coKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDIpOwor
CisgICAgLy8gTW9kaWZ5IHRoZSBmaWxlLgorICAgIGF1dG8gZmlsZUhhbmRsZSA9IEZpbGVTeXN0
ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlKTsK
KyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsK
KyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCAiZm9vIiwgc3RybGVuKCJm
b28iKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworCisgICAgYXV0
byBuZXdNb2RpZmljYXRpb25UaW1lID0gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCk7Cisg
ICAgRVhQRUNUX1RSVUUoISFuZXdNb2RpZmljYXRpb25UaW1lKTsKKyAgICBpZiAoIW5ld01vZGlm
aWNhdGlvblRpbWUpCisgICAgICAgIHJldHVybjsKKworICAgIEVYUEVDVF9HVChuZXdNb2RpZmlj
YXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCksIG1vZGlmaWNhdGlvblRpbWUt
PnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CisgICAgRVhQRUNUX0dUKG5ld01vZGlmaWNh
dGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSwgdGltZUJlZm9yZU1vZGlmaWNh
dGlvbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOworfQorCitURVNUX0YoRmlsZVN5c3Rl
bVRlc3QsIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKQoreworICAgIHJ1bkdldEZpbGVNb2RpZmlj
YXRpb25UaW1lVGVzdCh0ZW1wRmlsZVBhdGgoKSwgW10oY29uc3QgU3RyaW5nJiBwYXRoKSB7Cisg
ICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoKTsK
KyAgICB9KTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZVZpYUZpbGVNZXRhZGF0YSkKK3sKKyAgICBydW5HZXRGaWxlTW9kaWZpY2F0aW9uVGltZVRl
c3QodGVtcEZpbGVQYXRoKCksIFtdKGNvbnN0IFN0cmluZyYgcGF0aCkgLT4gT3B0aW9uYWw8V2Fs
bFRpbWU+IHsKKyAgICAgICAgYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0
YShwYXRoKTsKKyAgICAgICAgaWYgKCFtZXRhZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBtZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZTsKKyAg
ICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM4ZTZkMDli
NjNiZTNhYWY1ZmMxNWE4MzdhMGJiNDBkYmJmNTlkYmQuLjMwZWRiYjQyODhmMzVlZTExYWI5ZTM3
NzY3MGM0MzM2OTBlYTU4MGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNS0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6
ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIHRv
IHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3RvcCB0ZXN0aW5nIHRoZSBzaXplIG9mIGEgZGlyZWN0b3J5IGluIHRoZSBkYXRh
IHRyYW5zZmVyIEFQSSBhcyB0aGUgcmVzdWx0IGlzIGltcGxlbWVudGF0aW9uLXNwZWNpZmljLgor
ICAgICAgICBPbiBtYWNPUywgd2UgdXNlZCB0byByZXR1cm4gMjU2IG9uIGFwZnMgYW5kIDI3MiBv
biBIRlMrLiBXZSBub3cgcmV0dXJuIDAsIHdoaWNoIGlzIHdoYXQgRmlyZWZveCBkb2VzLgorCisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVt
cy1kcm9wLWdldEFzRW50cnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVi
b2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWw6
CisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtp
dEVudHJpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVz
LWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLmh0bWw6CisKIDIwMjEtMDUtMDQgIENhbWVy
b24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBIYW5kbGUgY2xhbXBp
bmcgb2YgaGVpZ2h0cyBmb3IgaW1hZ2VzIGFmZmVjdGVkIGJ5IGJhY2tncm91bmQtc2l6ZSBhbmQg
RVhJRiBvcmllbnRhdGlvbiBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0Vu
dHJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9lbnRyaWVz
LWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5LWV4cGVjdGVkLnR4dAppbmRl
eCA3MTBhNTcyMjA1ZDhiMzQ0MjAwZDI4NWE3NTNiNTNjNzMzZDhiNzZkLi5mZmUwZThiMzkwNDdj
NWZjNWRkYzBjODU4MmY5MDYwMWQyZjQ1MThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvZW50cmllcy1hcGkvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNF
bnRyeS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Vu
dHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnktZXhwZWN0ZWQudHh0
CkBAIC0xNiw3ICsxNiw2IEBAIFBBU1MgZmlyc3RFbnRyeS5mdWxsUGF0aCBpcyAiL3Rlc3QudHh0
IgogUEFTUyBzZWNvbmREYXRhVHJhbnNmZXJJdGVtLmtpbmQgaXMgImZpbGUiCiBQQVNTIHNlY29u
ZERhdGFUcmFuc2Zlckl0ZW0udHlwZSBpcyAiIgogUEFTUyBzZWNvbmRGaWxlLm5hbWUgaXMgInRl
c3RGaWxlcyIKLVBBU1Mgc2Vjb25kRmlsZS5zaXplIGlzIG9uZSBvZiBgMjcyYCwgYW5kIGAyNTZg
CiBQQVNTIHNlY29uZEZpbGUudHlwZSBpcyAiIgogUEFTUyBzZWNvbmRFbnRyeS5pc0RpcmVjdG9y
eSBpcyB0cnVlCiBQQVNTIHNlY29uZEVudHJ5LmlzRmlsZSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1p
dGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWwKaW5k
ZXggMTAxODhmYTQ1N2I0OWI0OTE0ZmU0M2E1YzMyY2VmN2JkZWNhNTU0OC4uOWNmZTEwM2FiMjBj
MGM5ZDFiMGUxMWNhOGIyNjA2NmMxMWJhODBjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFz
RW50cnkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW50cmllcy1h
cGkvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS5odG1sCkBAIC0zNyw3ICszNyw2
IEBAIGRyb3B6b25lLm9uZHJvcCA9IGZ1bmN0aW9uKGUpIHsKICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInNlY29uZERhdGFUcmFuc2Zlckl0ZW0udHlwZSIsICIiKTsKICAgICBzZWNvbmRGaWxl
ID0gc2Vjb25kRGF0YVRyYW5zZmVySXRlbS5nZXRBc0ZpbGUoKTsKICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInNlY29uZEZpbGUubmFtZSIsICJ0ZXN0RmlsZXMiKTsKLSAgICBzaG91bGRCZU9u
ZU9mVmFsdWVzKCJzZWNvbmRGaWxlLnNpemUiLCBbMjcyLCAyNTZdKTsgLy8gQ2hyb21lIHJldHVy
bnMgZm9sZGVyIHNpemUsIEZpcmVmb3ggcmV0dXJucyAwLiAyNTYgaW4gQVBGUywgMjcyIGluIEhG
UysgCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWNvbmRGaWxlLnR5cGUiLCAiIik7CiAK
ICAgICBzZWNvbmRFbnRyeSA9IHNlY29uZERhdGFUcmFuc2Zlckl0ZW0ud2Via2l0R2V0QXNFbnRy
eSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBp
L2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMtZXhwZWN0
ZWQudHh0CmluZGV4IDE4ZjdlNDQyNmNhYWM3NTU5OTEyZWUyNjYyYmMyODA5MTlhZjcxMWUuLmVh
OWNiZjU4NjYyMzUzNTMxZWIwMzU5Mzk5M2Y5NDZiNGU0NGYyNDYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRy
aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmll
cy1hcGkvZHJhZy1mb2xkZXItd2Via2l0RW50cmllcy1leHBlY3RlZC50eHQKQEAgLTE2LDcgKzE2
LDYgQEAgUEFTUyBmaWxlc1swXS5uYW1lIGlzICJ0ZXN0LnR4dCIKIFBBU1MgZmlsZXNbMF0uc2l6
ZSBpcyA1CiBQQVNTIGZpbGVzWzBdLnR5cGUgaXMgInRleHQvcGxhaW4iCiBQQVNTIGZpbGVzWzFd
Lm5hbWUgaXMgInRlc3RGaWxlcyIKLVBBU1MgZmlsZXNbMV0uc2l6ZSBpcyBvbmUgb2YgYDI3MmAs
IGFuZCBgMjU2YAogUEFTUyBmaWxlc1sxXS50eXBlIGlzICIiCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9l
bnRyaWVzLWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvZHJhZy1mb2xkZXItd2Via2l0RW50cmllcy5odG1s
CmluZGV4IDhkNjI4ZTRiYjc1MjVlMmM2MGE2OWYxMTQ3OTNhNWJiNzgzZWE3NDIuLmIxODAxNTFk
MWY1OWU3MjM0ZGI3NzA3MGQ0MmM2YzQ4ZGJhOGU2MGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9s
ZGVyLXdlYmtpdEVudHJpZXMuaHRtbApAQCAtNDgsNyArNDgsNiBAQCBmdW5jdGlvbiBjaGFuZ2Vk
KGV2ZW50KQogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZXNbMF0udHlwZSIsICJ0ZXh0
L3BsYWluIik7CiAKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGVzWzFdLm5hbWUiLCAi
dGVzdEZpbGVzIik7Ci0gICAgc2hvdWxkQmVPbmVPZlZhbHVlcygiZmlsZXNbMV0uc2l6ZSIsIFsy
NzIsIDI1Nl0pOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZXNbMV0udHlwZSIsICIi
KTsKIAogICAgIGZpbmlzaEpTVGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427771</attachid>
            <date>2021-05-05 09:11:40 -0700</date>
            <delta_ts>2021-05-05 09:27:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225362-20210505091139.patch</filename>
            <type>text/plain</type>
            <size>28559</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjFiN2JlY2UzZjBiN2VjNDFiMjkwOWU0MmViYzhlOWNlOGZjNWNiLi5jNzgyMWFiMzFhZmFmNWJm
YTE2M2U1ZmJlZGQ5ZGJmNmUzZWRlYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisKIDIwMjEtMDUtMDMg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzeW50YXggZXJy
b3IgbWVzc2FnZSBmb3IgQVVUT1BMVVNQTFVTIHRva2VuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyNWNkNDQzMWE1ZGFiNGU4
YWViYTAxY2JmY2UwMWFkM2I2NGM0OGI0Li41ZTZlYjJmM2I5MWY1ZmEyNjlhZjkwYmFlMDA3YWE1
NDEzYjEwNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpmaWxlTWV0YWRh
dGEoKSAmIEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKCkgdG8gc3RkOjpmaWxl
c3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
b3J0IEZpbGVzeXN0ZW06OmZpbGVNZXRhZGF0YSgpICYgRmlsZXN5c3RlbTo6Z2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgYW5kIGdldCByaWQgb2Yg
cGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogd3RmL0ZpbGVT
eXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6dG9XYWxsVGltZSk6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxlTWV0YWRhdGEpOgorICAgICAgICAqIHd0
Zi9GaWxlU3lzdGVtLmg6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHd0Zi93
aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisKIDIwMjEtMDUtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCBpdGVyYXRlIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Om1fd2Vic2l0ZURhdGFTdG9yZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpp
bmRleCA1ZmI1NjAxNWZiZDA4ODc5YTBkYmM5YWI3NTJkMTNkMmYxNDMzODg4Li4zYTVkYTQzYzYz
ZGE1ZGZiNTc0MWJiNDA2ZmU0ZTU5YjFhOGI1YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmln
CkBAIC0yNyw3ICsyNyw3IEBAIERFRklORVNfTU9EVUxFID0gWUVTOwogTU9EVUxFTUFQX0ZJTEUg
PSAkKFNSQ1JPT1QpL0phdmFTY3JpcHRDb3JlLm1vZHVsZW1hcDsKIAogLy8gUHJldmVudCBDKysg
c3RhbmRhcmQgbGlicmFyeSBvcGVyYXRvciBuZXcsIGRlbGV0ZSBhbmQgdGhlaXIgcmVsYXRlZCBl
eGNlcHRpb24gdHlwZXMgZnJvbSBiZWluZyBleHBvcnRlZCBhcyB3ZWFrIHN5bWJvbHMuCi1PVEhF
Ul9MREZMQUdTX0hJREVfU1lNQk9MUyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDli
YWRfYWxsb2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aVFNTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2U18gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3Qz
X18xOGZ1bmN0aW9uSUZ2dkVFY2xFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4
ZnVuY3Rpb25JRnZ2RUVDMUVPUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThm
dW5jdGlvbklGdnZFRUMyRU9TMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThm
dW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVj
bEVTM19TNV8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4z
SlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVy
YXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pO
U3QzX18xOGZ1bmN0aW9uSUZ2dkVFRDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNf
XzE4ZnVuY3Rpb25JRnZ2RUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFZOU3QzX18x
MTdiYWRfZnVuY3Rpb25fY2FsbEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9f
ZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9f
cmFuZ2VfZW5kRVM0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmls
ZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTEzX19yYW5nZV9i
ZWdpbkVTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyN19f
aXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNf
c3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJ
Y0UxNV9fYXBwZW5kX3NvdXJjZUlQS2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90
cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxf
X1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBL
Y0VFTlNfOWVuYWJsZV9pZklYc3IyMV9faXNfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZF
NHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0
b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMTRfX2ZzMTBm
aWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JkZUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JwcEV2IC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhh
YmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFFRTExX19yYW5nZV9lbmRFUEtjIC1XbCwtdW5leHBv
cnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2No
YXJfYXJyYXlJQTEwX2NQY2NMYjFFRTEzX19yYW5nZV9iZWdpbkVQS2MgLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVf
X2FwcGVuZF9zb3VyY2VJQTEwX2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFp
dHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF87CitPVEhFUl9MREZMQUdTX0hJREVfU1lNQk9M
UyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRT
U3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFNTdDlleGNlcHRpb24gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2U18gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pu
d21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2dkVFY2xF
diAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVDMUVPUzJf
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdnZFRUMyRU9TMl8g
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0
ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVjbEVTM19TNV8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRv
ckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3Qz
X18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJ
REVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVF
RDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVEMkV2
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFZOU3QzX18xMTdiYWRfZnVuY3Rpb25fY2FsbEUg
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNf
cGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9fcmFuZ2VfZW5kRVM0XyAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJs
ZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTEzX19yYW5nZV9iZWdpbkVTNF8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBw
ZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVy
YXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJh
aXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxf
X1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNV9fYXBwZW5kX3NvdXJjZUlQ
S2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRv
ckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVz
eXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3Iy
MV9faXNfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3Ry
aW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3Rvcnlf
aXRlcmF0b3JkZUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxl
c3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JwcEV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQ
Y2NMYjFFRTExX19yYW5nZV9lbmRFUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19f
MTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFF
RTEzX19yYW5nZV9iZWdpbkVQS2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9f
ZnMxMGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0
M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VJQTEwX2NF
RXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvcklj
RUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW0yNF9fdGhyb3dfZmlsZXN5c3RlbV9lcnJvcklKUlBLY1JLTlMxXzRwYXRoRVJLTlNfMTBlcnJv
cl9jb2RlRUVFRXZEcE9UXzsKIAogT1RIRVJfTERGTEFHU19CQVNFID0gJChPVEhFUl9MREZMQUdT
X0hJREVfU1lNQk9MUykgLWZvcmNlX2xvYWQgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9saWJXVEYuYSI7CiBPVEhFUl9MREZMQUdTW3Nkaz1lbWJl
ZGRlZCpdID0gJChpbmhlcml0ZWQpICQoT1RIRVJfTERGTEFHU19CQVNFKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAKaW5kZXggZjdkNjc0OWNjOWViZTVjOTE5N2JkMDg4MDBhZDY4MjkyODFmMjlkYy4uOGUw
NDdkNmE1NzlkN2Y0YzhlNTNhM2JlMDJmOTJjNzM5NzI2YjVlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5j
cHAKQEAgLTYyMyw1ICs2MjMsODEgQEAgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuICFlYzsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
Q2xvY2tUeXBlLCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBoYXNfdG9fdGltZV90IDogc3RkOjpm
YWxzZV90eXBlIHsgfTsKK3RlbXBsYXRlPHR5cGVuYW1lIENsb2NrVHlwZT4gc3RydWN0IGhhc190
b190aW1lX3Q8Q2xvY2tUeXBlLCBzdGQ6OnZvaWRfdDwKKyAgICBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfc2FtZTxzdGQ6OnRpbWVfdCwgZGVjbHR5cGUoQ2xvY2tUeXBlOjp0b190aW1lX3Qoc3Rk
OjpmaWxlc3lzdGVtOjpmaWxlX3RpbWVfdHlwZSgpKSk+Ojp2YWx1ZT4KKz4+IDogc3RkOjp0cnVl
X3R5cGUgeyB9OworCitzdGF0aWMgV2FsbFRpbWUgdG9XYWxsVGltZShzdGQ6OmZpbGVzeXN0ZW06
OmZpbGVfdGltZV90eXBlIGZpbGVUaW1lKQoreworICAgIHN0ZDo6dGltZV90IHRpbWVUOworICAg
IC8vIEZJWE1FOiBVc2Ugc3RkOjpjaHJvbm86OmZpbGVfY2xvY2s6OnRvX3N5cygpIG9uY2Ugd2Ug
Y2FuIHVzZSBDKysyMC4KKyAgICBpZiBjb25zdGV4cHIoaGFzX3RvX3RpbWVfdDxkZWNsdHlwZShm
aWxlVGltZSk6OmNsb2NrPjo6dmFsdWUpCisgICAgICAgIHRpbWVUID0gZGVjbHR5cGUoZmlsZVRp
bWUpOjpjbG9jazo6dG9fdGltZV90KGZpbGVUaW1lKTsKKyAgICBlbHNlCisgICAgICAgIHRpbWVU
ID0gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dG9fdGltZV90KHN0ZDo6Y2hyb25vOjp0aW1l
X3BvaW50X2Nhc3Q8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZHVyYXRpb24+KGZpbGVUaW1l
IC0gZGVjbHR5cGUoZmlsZVRpbWUpOjpjbG9jazo6bm93KCkgKyBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjpub3coKSkpOworICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGlt
ZVQpOworfQorCitPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQoreworICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKKyAgICBhdXRvIG1v
ZGlmaWNhdGlvblRpbWUgPSBzdGQ6OmZpbGVzeXN0ZW06Omxhc3Rfd3JpdGVfdGltZShmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB0b1dhbGxUaW1lKG1vZGlmaWNhdGlv
blRpbWUpOworfQorCitzdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFQ
b3RlbnRpYWxseUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9s
bG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQoreworICAgIGlmIChw
YXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHN0ZDo6
ZmlsZXN5c3RlbTo6cGF0aCBmc1BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCku
ZGF0YSgpOworCisgICAgc3RkOjplcnJvcl9jb2RlIGVjOworICAgIGlmIChzaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyAmJiBzdGQ6OmZp
bGVzeXN0ZW06OmlzX3N5bWxpbmsoZnNQYXRoLCBlYykpIHsKKyAgICAgICAgZnNQYXRoID0gc3Rk
OjpmaWxlc3lzdGVtOjpyZWFkX3N5bWxpbmsoZnNQYXRoLCBlYyk7CisgICAgICAgIGlmIChlYykK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgZWMgPSB7IH07
CisgICAgc3RkOjpmaWxlc3lzdGVtOjpkaXJlY3RvcnlfZW50cnkgZW50cnkoZnNQYXRoLCBlYyk7
CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBt
b2RpZmljYXRpb25UaW1lID0gdG9XYWxsVGltZShlbnRyeS5sYXN0X3dyaXRlX3RpbWUoZWMpKTsK
KworICAgIC8vIE5vdGUgdGhhdCB0aGUgcmVzdWx0IG9mIGF0dGVtcHRpbmcgdG8gZGV0ZXJtaW5l
IHRoZSBzaXplIG9mIGEgZGlyZWN0b3J5IGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQuCisgICAg
YXV0byBmaWxlU2l6ZSA9IGVudHJ5LmZpbGVfc2l6ZShlYyk7CisgICAgaWYgKGVjKQorICAgICAg
ICBmaWxlU2l6ZSA9IDA7CisKKyNpZiBPUyhVTklYKQorICAgIHN0ZDo6ZmlsZXN5c3RlbTo6cGF0
aDo6c3RyaW5nX3R5cGUgZmlsZW5hbWUgPSBmc1BhdGguZmlsZW5hbWUoKTsKKyAgICBib29sIGlz
SGlkZGVuID0gIWZpbGVuYW1lLmVtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4nOworI2Vsc2UK
KyAgICBib29sIGlzSGlkZGVuID0gZmFsc2U7CisjZW5kaWYKKyAgICBGaWxlTWV0YWRhdGE6OlR5
cGUgdHlwZSA9IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKKyAgICBpZiAoZW50cnkuaXNfc3lt
bGluayhlYykpCisgICAgICAgIHR5cGUgPSBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGlu
azsKKyAgICBlbHNlIGlmIChlbnRyeS5pc19kaXJlY3RvcnkoZWMpKQorICAgICAgICB0eXBlID0g
RmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CisKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRh
IHsgbW9kaWZpY2F0aW9uVGltZSwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihmaWxlU2l6ZSksIGlz
SGlkZGVuLCB0eXBlIH07Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRh
KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFkYXRhUG90ZW50aWFs
bHlGb2xsb3dpbmdTeW1saW5rcyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObyk7
Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlu
a3MoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBmaWxlTWV0YWRhdGFQb3RlbnRp
YWxseUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Olll
cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIv
U291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggNjNkNWRhZjFhOTk0
ZmY3MjBjYzk0MzAzYzFmM2M1MmJhNDRlNDA4My4uNmRmYmE1MWYyMjhlOGRhYmFiNWJhM2U5MTg3
YTNlODI4NjFhOWY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVt
R2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAg
LTE1Miw1MSArMTUyLDYgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxX
YWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7Ci0gICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3Rh
dFJlc3VsdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2Fs
bFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpOwotfQotCi1zdGF0aWMg
RmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoR1N0YXRCdWYgc3RhdFJlc3VsdCkK
LXsKLSAgICBpZiAoU19JU0RJUihzdGF0UmVzdWx0LnN0X21vZGUpKQotICAgICAgICByZXR1cm4g
RmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKFNfSVNMTksoc3RhdFJlc3Vs
dC5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNM
aW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBP
cHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3Ry
aW5nJiBwYXRoLCBib29sICgqc3RhdEZ1bmMpKGNvbnN0IFN0cmluZyYsIEdTdGF0QnVmKikpCi17
Ci0gICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKLSAgICBpZiAoIXN0YXRGdW5jKHBhdGgsICZzdGF0
UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFN0cmluZyBmaWxl
bmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKLSAgICBib29sIGlzSGlkZGVuID0gIWZpbGVu
YW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7Ci0KLSAgICByZXR1cm4gRmlsZU1l
dGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3Rf
bXRpbWUpLAotICAgICAgICBzdGF0UmVzdWx0LnN0X3NpemUsCi0gICAgICAgIGlzSGlkZGVuLAot
ICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKHN0YXRSZXN1bHQpCi0gICAgfTsKLX0KLQotT3B0aW9u
YWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAg
IHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlTFN0YXQpOwot
fQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtz
KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5j
dGlvbihwYXRoLCAmZ2V0RmlsZVN0YXQpOwotfQotCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7CiAg
ICAgaWYgKHBhdGguZW5kc1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggYmZlOGZhYmI2YmZjNjcwZTRlZTRiMzBkOGIz
YzQ4ZTQ3OWRjNWQyMy4uODgyMzhmZTgwZGU0ZDliMTA4MDdiNTkyY2NlNTU3YjBhMDI5ZjE2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0xODYsNjEgKzE4
Niw2IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKICNlbmRpZgogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBm
c1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQot
ICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0gICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAm
ZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSk7Ci19Ci0KLXN0YXRpYyBG
aWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShzdHJ1Y3Qgc3RhdCBmaWxlSW5mbykK
LXsKLSAgICBpZiAoU19JU0RJUihmaWxlSW5mby5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZp
bGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwotICAgIGlmIChTX0lTTE5LKGZpbGVJbmZvLnN0
X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7
Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlv
bmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcm
IHBhdGgsIGludCAoKnN0YXRGdW5jKShjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKSkKLXsKLSAg
ICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0gICAg
aWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAo
c3RhdEZ1bmMoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOwot
ICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBdID09
ICcuJzsKLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKSwKLSAgICAgICAgZmlsZUluZm8uc3Rfc2l6ZSwK
LSAgICAgICAgaXNIaWRkZW4sCi0gICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoZmlsZUluZm8pCi0g
ICAgfTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3Ry
aW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgs
ICZsc3RhdCk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93
aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRh
dGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZzdGF0KTsKLX0KLQogU3RyaW5nIHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQog
ewogICAgIGlmIChwYXRoLmVuZHNXaXRoKCcvJykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdp
bi5jcHAKaW5kZXggZmQ1OWYxOTAzZTZlMWZlODRkMTU4ZDU3NWE5NjI5ZWFiOTAwYzlkNS4uNDc5
MDZjN2M2YzYxZWViZjQ5ZDk3ZGNlN2VkYWNmYjI1MmFmN2M5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9G
aWxlU3lzdGVtV2luLmNwcApAQCAtMTE0LDE3ICsxMTQsNiBAQCBib29sIGdldEZpbGVTaXplKFBs
YXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcmIHNpemUpCiAgICAgcmV0dXJu
IGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGZpbGVJbmZv
cm1hdGlvbiwgc2l6ZSk7CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5k
RGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHRpbWVfdCB0aW1lID0gMDsKLSAgICBnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGltZSk7Ci0gICAgcmV0dXJuIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lKTsKLX0KLQogT3B0aW9uYWw8V2FsbFRpbWU+IGdl
dEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFdJTjMyX0ZJTkRf
REFUQVcgZmluZERhdGE7CkBAIC0xNTQsNjMgKzE0Myw2IEBAIHN0YXRpYyBTdHJpbmcgZ2V0Rmlu
YWxQYXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQo
V1RGTW92ZShidWZmZXIpKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlzU3ltYm9saWNMaW5r
KFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCi17Ci0gICAgcmV0dXJuIGZpbmREYXRhLmR3Rmls
ZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UICYmIGZpbmREYXRhLmR3
UmVzZXJ2ZWQwID09IElPX1JFUEFSU0VfVEFHX1NZTUxJTks7Ci19Ci0KLXN0YXRpYyBGaWxlTWV0
YWRhdGE6OlR5cGUgdG9GaWxlTWV0YWRhdGFUeXBlKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEp
Ci17Ci0gICAgaWYgKGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9E
SVJFQ1RPUlkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsK
LSAgICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERhdGEpKQotICAgICAgICByZXR1cm4gRmlsZU1l
dGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlw
ZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmluZERhdGFUb0Zp
bGVNZXRhZGF0YShXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQotewotICAgIGxvbmcgbG9uZyBs
ZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbGVuZ3Ro
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHRpbWVfdCBtb2RpZmljYXRp
b25UaW1lOwotICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRh
LCBtb2RpZmljYXRpb25UaW1lKTsKLQotICAgIHJldHVybiBGaWxlTWV0YWRhdGEgewotICAgICAg
ICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9uVGltZSksCi0gICAgICAgIGxl
bmd0aCwKLSAgICAgICAgc3RhdGljX2Nhc3Q8Ym9vbD4oZmluZERhdGEuZHdGaWxlQXR0cmlidXRl
cyAmIEZJTEVfQVRUUklCVVRFX0hJRERFTiksCi0gICAgICAgIHRvRmlsZU1ldGFkYXRhVHlwZShm
aW5kRGF0YSkKLSAgICB9OwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0
YShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsK
LSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKGZpbmREYXRh
KTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1s
aW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0
YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIGlmIChpc1N5bWJvbGljTGluayhmaW5kRGF0YSkpIHsKLSAg
ICAgICAgU3RyaW5nIHRhcmdldFBhdGggPSBnZXRGaW5hbFBhdGhOYW1lKHBhdGgpOwotICAgICAg
ICBpZiAodGFyZ2V0UGF0aC5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgICAgIGlmICghZ2V0RmluZERhdGEodGFyZ2V0UGF0aCwgZmluZERhdGEpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmluZERh
dGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Ci19Ci0KIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKIHsK
ICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTNjNzg0ODEzNjBlMTc5YzMwMjhmYzlj
N2E5ZWI2MGEyNWFlMDllNC4uMDBiOTM5OGQ0YmMxMjhlNWNlYjM3MTRiNGM0YzY5YTZlZDMwYmY0
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpmaWxlTWV0YWRhdGEoKSAmIEZpbGVzeXN0ZW06
OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzNjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJh
Z2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpydW5HZXRGaWxlTW9kaWZpY2F0aW9uVGltZVRlc3QpOgorCiAyMDIxLTA1LTA1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5n
IHIyNzY5ODUuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3Bw
CmluZGV4IDhiNzNhZjFlODhkYWYyYmJlZGU2MjkzNmJhYzg3ZmMyZTRkODY4OGMuLmQxZjNhMWE5
ZjdmZTQwZDIxMzU0N2QzYzBmMjEwODUzYzQzZjZmYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAKICNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSAiVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTE0MiwxOSArMTQzLDc0IEBAIFRFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgRmlsZXNIYXZlU2FtZVZvbHVtZSkKICAgICBFWFBFQ1RfVFJVRShG
aWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSwg
cXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSkpOwogfQogCi1URVNUX0YoRmlsZVN5c3RlbVRlc3Qs
IEdldEZpbGVNZXRhZGF0YVN5bWxpbmspCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVN
ZXRhZGF0YUZpbGVTeW1saW5rKQogewogICAgIGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5
c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CiAgICAgQVNTRVJUX1RS
VUUoc3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtN
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmsp
OwotICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS52
YWx1ZSgpLmxlbmd0aCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworICAgIEVYUEVD
VF9UUlVFKHN5bWxpbmtNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJv
bGljTGluayk7CisgICAgRVhQRUNUX0ZBTFNFKHN5bWxpbmtNZXRhZGF0YS0+aXNIaWRkZW4pOwor
ICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PHNpemVfdD4oc3ltbGlua01ldGFkYXRhLT5sZW5n
dGgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKIAogICAgIGF1dG8gdGFyZ2V0TWV0
YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmls
ZVN5bWxpbmtQYXRoKCkpOwogICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc1ZhbHVl
KCkpOwotICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxl
TWV0YWRhdGE6OlR5cGU6OkZpbGUpOwotICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRl
c3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLmxlbmd0
aCkpOworICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0
YTo6VHlwZTo6RmlsZSk7CisgICAgRVhQRUNUX0ZBTFNFKHRhcmdldE1ldGFkYXRhLT5pc0hpZGRl
bik7CisgICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHRhcmdldE1ldGFkYXRhLT5sZW5ndGgpKTsKKworICAgIGF1dG8gYWN0dWFsVGFy
Z2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVtcEZpbGVQYXRoKCkpOwor
ICAgIEFTU0VSVF9UUlVFKGFjdHVhbFRhcmdldE1ldGFkYXRhLmhhc1ZhbHVlKCkpOworICAgIEVY
UEVDVF9UUlVFKGFjdHVhbFRhcmdldE1ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlw
ZTo6RmlsZSk7CisgICAgRVhQRUNUX0VRKHRhcmdldE1ldGFkYXRhLT5tb2RpZmljYXRpb25UaW1l
LCBhY3R1YWxUYXJnZXRNZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSk7CisgICAgRVhQRUNUX0VR
KHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdldE1l
dGFkYXRhLT5sZW5ndGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYWN0dWFsVGFyZ2V0TWV0YWRhdGEt
PmlzSGlkZGVuKTsKIH0KIAorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFE
aXJlY3RvcnlTeW1saW5rKQoreworICAgIGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhKHRlbXBFbXB0eUZvbGRlclN5bWxpbmtQYXRoKCkpOworICAgIEFTU0VS
VF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShzeW1s
aW5rTWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOwor
ICAgIEVYUEVDVF9GQUxTRShzeW1saW5rTWV0YWRhdGEtPmlzSGlkZGVuKTsKKworICAgIGF1dG8g
dGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5r
cyh0ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRSh0YXJnZXRN
ZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0YXJnZXRNZXRhZGF0YS0+dHlw
ZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeSk7CisgICAgRVhQRUNUX0ZBTFNFKHRh
cmdldE1ldGFkYXRhLT5pc0hpZGRlbik7CisKKyAgICBhdXRvIGFjdHVhbFRhcmdldE1ldGFkYXRh
ID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBFbXB0eUZvbGRlclBhdGgoKSk7CisgICAg
QVNTRVJUX1RSVUUoYWN0dWFsVGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7CisgICAgRVhQRUNU
X1RSVUUoYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpE
aXJlY3RvcnkpOworICAgIEVYUEVDVF9FUSh0YXJnZXRNZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGlt
ZSwgYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPm1vZGlmaWNhdGlvblRpbWUpOworICAgIEVYUEVDVF9F
USh0YXJnZXRNZXRhZGF0YS0+bGVuZ3RoLCBhY3R1YWxUYXJnZXRNZXRhZGF0YS0+bGVuZ3RoKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPmlzSGlkZGVuKTsKK30KKwor
VEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFGaWxlRG9lc05vdEV4aXN0KQor
eworICAgIGF1dG8gZG9lc05vdEV4aXN0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCIpOworICAg
IGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoZG9lc05vdEV4aXN0UGF0
aCk7CisgICAgRVhQRUNUX1RSVUUoIW1ldGFkYXRhKTsKK30KKworI2lmIE9TKFVOSVgpCitURVNU
X0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0YUhpZGRlbkZpbGUpCit7CisgICAgYXV0
byBoaWRkZW5GaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0
ZW1wRW1wdHlGb2xkZXJQYXRoKCksICIuaGlkZGVuRmlsZSIpOworICAgIGF1dG8gZmlsZUhhbmRs
ZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGhpZGRlbkZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxl
T3Blbk1vZGU6OldyaXRlKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hhbmRsZVZh
bGlkKGZpbGVIYW5kbGUpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxl
LCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisKKyAgICBhdXRvIG1ldGFkYXRhID0g
RmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGhpZGRlbkZpbGVQYXRoKTsKKyAgICBBU1NFUlRfVFJV
RShtZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShtZXRhZGF0YS0+dHlwZSA9
PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOworICAgIEVYUEVDVF9UUlVFKG1ldGFkYXRhLT5p
c0hpZGRlbik7CisgICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1ldGFkYXRhLT5sZW5ndGgpKTsKKworICAgIEVYUEVDVF9UUlVFKEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUoaGlkZGVuRmlsZVBhdGgpKTsKK30KKyNlbmRpZgorCiBURVNU
X0YoRmlsZVN5c3RlbVRlc3QsIFVuaWNvZGVEaXJlY3RvcnlOYW1lKQogewogICAgIFN0cmluZyBw
YXRoID0gU3RyaW5nOjpmcm9tVVRGOCgiL3Rlc3QvYVx1MDMwOGxvL3Rlc3QudHh0Iik7CkBAIC01
MjgsNCArNTg0LDUyIEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgY3JlYXRlSGFyZExpbmtPckNv
cHlGaWxlKQogICAgIEVYUEVDVF9FUShsaW5rRmlsZVNpemUsIGZpbGVTaXplKTsKIH0KIAorc3Rh
dGljIHZvaWQgcnVuR2V0RmlsZU1vZGlmaWNhdGlvblRpbWVUZXN0KGNvbnN0IFN0cmluZyYgcGF0
aCwgRnVuY3Rpb248T3B0aW9uYWw8V2FsbFRpbWU+KGNvbnN0IFN0cmluZyYpPiYmIGdldEZpbGVN
b2RpZmljYXRpb25UaW1lKQoreworICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IGdldEZpbGVN
b2RpZmljYXRpb25UaW1lKHBhdGgpOworICAgIEVYUEVDVF9UUlVFKCEhbW9kaWZpY2F0aW9uVGlt
ZSk7CisgICAgaWYgKCFtb2RpZmljYXRpb25UaW1lKQorICAgICAgICByZXR1cm47CisKKyAgICB1
bnNpZ25lZCB0aW1lb3V0ID0gMDsKKyAgICB3aGlsZSAoKm1vZGlmaWNhdGlvblRpbWUgPj0gV2Fs
bFRpbWU6Om5vdygpICYmICsrdGltZW91dCA8IDIwKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpzbGVlcCgwLjEpOworICAgIEVYUEVDVF9MVChtb2RpZmljYXRpb25UaW1lLT5zZWNvbmRz
U2luY2VFcG9jaCgpLnZhbHVlKCksIFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgp
LnZhbHVlKCkpOworCisgICAgYXV0byB0aW1lQmVmb3JlTW9kaWZpY2F0aW9uID0gV2FsbFRpbWU6
Om5vdygpOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMik7CisKKyAgICAvLyBN
b2RpZnkgdGhlIGZpbGUuCisgICAgYXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUpOworICAgIEVYUEVD
VF9UUlVFKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOworICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsICJmb28iLCBzdHJsZW4oImZvbyIpKTsKKyAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisKKyAgICBhdXRvIG5ld01vZGlm
aWNhdGlvblRpbWUgPSBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoKTsKKyAgICBFWFBFQ1Rf
VFJVRSghIW5ld01vZGlmaWNhdGlvblRpbWUpOworICAgIGlmICghbmV3TW9kaWZpY2F0aW9uVGlt
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRVhQRUNUX0dUKG5ld01vZGlmaWNhdGlvblRpbWUt
PnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSwgbW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1Np
bmNlRXBvY2goKS52YWx1ZSgpKTsKKyAgICBFWFBFQ1RfR1QobmV3TW9kaWZpY2F0aW9uVGltZS0+
c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpLCB0aW1lQmVmb3JlTW9kaWZpY2F0aW9uLnNlY29u
ZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUpCit7CisgICAgcnVuR2V0RmlsZU1vZGlmaWNhdGlvblRpbWVU
ZXN0KHRlbXBGaWxlUGF0aCgpLCBbXShjb25zdCBTdHJpbmcmIHBhdGgpIHsKKyAgICAgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgpOworICAgIH0pOwor
fQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGdldEZpbGVNb2RpZmljYXRpb25UaW1lVmlhRmls
ZU1ldGFkYXRhKQoreworICAgIHJ1bkdldEZpbGVNb2RpZmljYXRpb25UaW1lVGVzdCh0ZW1wRmls
ZVBhdGgoKSwgW10oY29uc3QgU3RyaW5nJiBwYXRoKSAtPiBPcHRpb25hbDxXYWxsVGltZT4gewor
ICAgICAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHBhdGgpOwor
ICAgICAgICBpZiAoIW1ldGFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIG1ldGFkYXRhLT5tb2RpZmljYXRpb25UaW1lOworICAgIH0pOworfQor
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGRlODAxN2IxYmRhMGZhODVk
ZDYxMjEyOTI1NTNhN2M1Zjk0MmYyMy4uYzVkMWIwYTA0YmFlOTQ4ODUyNTcyOTA0YTI4YjNjMGI4
OTVjYmJlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpmaWxlTWV0YWRh
dGEoKSAmIEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKCkgdG8gc3RkOjpmaWxl
c3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
dG9wIHRlc3RpbmcgdGhlIHNpemUgb2YgYSBkaXJlY3RvcnkgaW4gdGhlIGRhdGEgdHJhbnNmZXIg
QVBJIGFzIHRoZSByZXN1bHQgaXMgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMuCisgICAgICAgIE9u
IG1hY09TLCB3ZSB1c2VkIHRvIHJldHVybiAyNTYgb24gYXBmcyBhbmQgMjcyIG9uIEhGUysuIFdl
IG5vdyByZXR1cm4gMCwgd2hpY2ggaXMgd2hhdCBGaXJlZm94IGRvZXMuCisKKyAgICAgICAgKiBl
ZGl0aW5nL3Bhc3RlYm9hcmQvZW50cmllcy1hcGkvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0
QXNFbnRyeS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJp
ZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbDoKKyAgICAgICAg
KiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvZHJhZy1mb2xkZXItd2Via2l0RW50cmllcy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2RyYWct
Zm9sZGVyLXdlYmtpdEVudHJpZXMuaHRtbDoKKwogMjAyMS0wNS0wNCAgVHlsZXIgV2lsY29jayAg
PHR3aWxjby5vQHByb3Rvbm1haWwuY29tPgogCiAgICAgICAgIEltcG9ydCB3ZWJzdG9yYWdlIFdQ
VHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9lbnRyaWVzLWFw
aS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMt
ZHJvcC1nZXRBc0VudHJ5LWV4cGVjdGVkLnR4dAppbmRleCA3MTBhNTcyMjA1ZDhiMzQ0MjAwZDI4
NWE3NTNiNTNjNzMzZDhiNzZkLi5mZmUwZThiMzkwNDdjNWZjNWRkYzBjODU4MmY5MDYwMWQyZjQ1
MThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW50cmllcy1h
cGkvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1p
dGVtcy1kcm9wLWdldEFzRW50cnktZXhwZWN0ZWQudHh0CkBAIC0xNiw3ICsxNiw2IEBAIFBBU1Mg
Zmlyc3RFbnRyeS5mdWxsUGF0aCBpcyAiL3Rlc3QudHh0IgogUEFTUyBzZWNvbmREYXRhVHJhbnNm
ZXJJdGVtLmtpbmQgaXMgImZpbGUiCiBQQVNTIHNlY29uZERhdGFUcmFuc2Zlckl0ZW0udHlwZSBp
cyAiIgogUEFTUyBzZWNvbmRGaWxlLm5hbWUgaXMgInRlc3RGaWxlcyIKLVBBU1Mgc2Vjb25kRmls
ZS5zaXplIGlzIG9uZSBvZiBgMjcyYCwgYW5kIGAyNTZgCiBQQVNTIHNlY29uZEZpbGUudHlwZSBp
cyAiIgogUEFTUyBzZWNvbmRFbnRyeS5pc0RpcmVjdG9yeSBpcyB0cnVlCiBQQVNTIHNlY29uZEVu
dHJ5LmlzRmlsZSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRt
bCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNm
ZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWwKaW5kZXggMTAxODhmYTQ1N2I0OWI0OTE0ZmU0
M2E1YzMyY2VmN2JkZWNhNTU0OC4uOWNmZTEwM2FiMjBjMGM5ZDFiMGUxMWNhOGIyNjA2NmMxMWJh
ODBjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMt
YXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW50cmllcy1hcGkvZGF0YXRyYW5zZmVyLWl0ZW1zLWRy
b3AtZ2V0QXNFbnRyeS5odG1sCkBAIC0zNyw3ICszNyw2IEBAIGRyb3B6b25lLm9uZHJvcCA9IGZ1
bmN0aW9uKGUpIHsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlY29uZERhdGFUcmFuc2Zl
ckl0ZW0udHlwZSIsICIiKTsKICAgICBzZWNvbmRGaWxlID0gc2Vjb25kRGF0YVRyYW5zZmVySXRl
bS5nZXRBc0ZpbGUoKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlY29uZEZpbGUubmFt
ZSIsICJ0ZXN0RmlsZXMiKTsKLSAgICBzaG91bGRCZU9uZU9mVmFsdWVzKCJzZWNvbmRGaWxlLnNp
emUiLCBbMjcyLCAyNTZdKTsgLy8gQ2hyb21lIHJldHVybnMgZm9sZGVyIHNpemUsIEZpcmVmb3gg
cmV0dXJucyAwLiAyNTYgaW4gQVBGUywgMjcyIGluIEhGUysgCiAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzZWNvbmRGaWxlLnR5cGUiLCAiIik7CiAKICAgICBzZWNvbmRFbnRyeSA9IHNlY29u
ZERhdGFUcmFuc2Zlckl0ZW0ud2Via2l0R2V0QXNFbnRyeSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJp
ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBp
L2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDE4ZjdlNDQyNmNh
YWM3NTU5OTEyZWUyNjYyYmMyODA5MTlhZjcxMWUuLmVhOWNiZjU4NjYyMzUzNTMxZWIwMzU5Mzk5
M2Y5NDZiNGU0NGYyNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9l
bnRyaWVzLWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvZHJhZy1mb2xkZXItd2Via2l0
RW50cmllcy1leHBlY3RlZC50eHQKQEAgLTE2LDcgKzE2LDYgQEAgUEFTUyBmaWxlc1swXS5uYW1l
IGlzICJ0ZXN0LnR4dCIKIFBBU1MgZmlsZXNbMF0uc2l6ZSBpcyA1CiBQQVNTIGZpbGVzWzBdLnR5
cGUgaXMgInRleHQvcGxhaW4iCiBQQVNTIGZpbGVzWzFdLm5hbWUgaXMgInRlc3RGaWxlcyIKLVBB
U1MgZmlsZXNbMV0uc2l6ZSBpcyBvbmUgb2YgYDI3MmAsIGFuZCBgMjU2YAogUEFTUyBmaWxlc1sx
XS50eXBlIGlzICIiCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9kcmFnLWZvbGRlci13
ZWJraXRFbnRyaWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1h
cGkvZHJhZy1mb2xkZXItd2Via2l0RW50cmllcy5odG1sCmluZGV4IDhkNjI4ZTRiYjc1MjVlMmM2
MGE2OWYxMTQ3OTNhNWJiNzgzZWE3NDIuLmIxODAxNTFkMWY1OWU3MjM0ZGI3NzA3MGQ0MmM2YzQ4
ZGJhOGU2MGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVz
LWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMuaHRtbApA
QCAtNDgsNyArNDgsNiBAQCBmdW5jdGlvbiBjaGFuZ2VkKGV2ZW50KQogICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZmlsZXNbMF0udHlwZSIsICJ0ZXh0L3BsYWluIik7CiAKICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImZpbGVzWzFdLm5hbWUiLCAidGVzdEZpbGVzIik7Ci0gICAgc2hvdWxk
QmVPbmVPZlZhbHVlcygiZmlsZXNbMV0uc2l6ZSIsIFsyNzIsIDI1Nl0pOwogICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZmlsZXNbMV0udHlwZSIsICIiKTsKIAogICAgIGZpbmlzaEpTVGVzdCgp
Owo=
</data>
<flag name="commit-queue"
          id="448486"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427773</attachid>
            <date>2021-05-05 09:25:51 -0700</date>
            <delta_ts>2021-05-05 09:36:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225362-20210505092550.patch</filename>
            <type>text/plain</type>
            <size>28881</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjFiN2JlY2UzZjBiN2VjNDFiMjkwOWU0MmViYzhlOWNlOGZjNWNiLi5jNzgyMWFiMzFhZmFmNWJm
YTE2M2U1ZmJlZGQ5ZGJmNmUzZWRlYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisKIDIwMjEtMDUtMDMg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzeW50YXggZXJy
b3IgbWVzc2FnZSBmb3IgQVVUT1BMVVNQTFVTIHRva2VuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyNWNkNDQzMWE1ZGFiNGU4
YWViYTAxY2JmY2UwMWFkM2I2NGM0OGI0Li41ZTZlYjJmM2I5MWY1ZmEyNjlhZjkwYmFlMDA3YWE1
NDEzYjEwNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpmaWxlTWV0YWRh
dGEoKSAmIEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKCkgdG8gc3RkOjpmaWxl
c3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
b3J0IEZpbGVzeXN0ZW06OmZpbGVNZXRhZGF0YSgpICYgRmlsZXN5c3RlbTo6Z2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgYW5kIGdldCByaWQgb2Yg
cGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogd3RmL0ZpbGVT
eXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6dG9XYWxsVGltZSk6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxlTWV0YWRhdGEpOgorICAgICAgICAqIHd0
Zi9GaWxlU3lzdGVtLmg6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHd0Zi93
aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisKIDIwMjEtMDUtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCBpdGVyYXRlIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Om1fd2Vic2l0ZURhdGFTdG9yZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpp
bmRleCA1ZmI1NjAxNWZiZDA4ODc5YTBkYmM5YWI3NTJkMTNkMmYxNDMzODg4Li4zYTVkYTQzYzYz
ZGE1ZGZiNTc0MWJiNDA2ZmU0ZTU5YjFhOGI1YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmln
CkBAIC0yNyw3ICsyNyw3IEBAIERFRklORVNfTU9EVUxFID0gWUVTOwogTU9EVUxFTUFQX0ZJTEUg
PSAkKFNSQ1JPT1QpL0phdmFTY3JpcHRDb3JlLm1vZHVsZW1hcDsKIAogLy8gUHJldmVudCBDKysg
c3RhbmRhcmQgbGlicmFyeSBvcGVyYXRvciBuZXcsIGRlbGV0ZSBhbmQgdGhlaXIgcmVsYXRlZCBl
eGNlcHRpb24gdHlwZXMgZnJvbSBiZWluZyBleHBvcnRlZCBhcyB3ZWFrIHN5bWJvbHMuCi1PVEhF
Ul9MREZMQUdTX0hJREVfU1lNQk9MUyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDli
YWRfYWxsb2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aVFNTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2U18gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3Qz
X18xOGZ1bmN0aW9uSUZ2dkVFY2xFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4
ZnVuY3Rpb25JRnZ2RUVDMUVPUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThm
dW5jdGlvbklGdnZFRUMyRU9TMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThm
dW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVj
bEVTM19TNV8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4z
SlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVy
YXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pO
U3QzX18xOGZ1bmN0aW9uSUZ2dkVFRDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNf
XzE4ZnVuY3Rpb25JRnZ2RUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFZOU3QzX18x
MTdiYWRfZnVuY3Rpb25fY2FsbEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9f
ZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9f
cmFuZ2VfZW5kRVM0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmls
ZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTEzX19yYW5nZV9i
ZWdpbkVTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyN19f
aXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNf
c3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJ
Y0UxNV9fYXBwZW5kX3NvdXJjZUlQS2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90
cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxf
X1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBL
Y0VFTlNfOWVuYWJsZV9pZklYc3IyMV9faXNfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZF
NHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0
b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMTRfX2ZzMTBm
aWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JkZUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JwcEV2IC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhh
YmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFFRTExX19yYW5nZV9lbmRFUEtjIC1XbCwtdW5leHBv
cnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2No
YXJfYXJyYXlJQTEwX2NQY2NMYjFFRTEzX19yYW5nZV9iZWdpbkVQS2MgLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVf
X2FwcGVuZF9zb3VyY2VJQTEwX2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFp
dHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF87CitPVEhFUl9MREZMQUdTX0hJREVfU1lNQk9M
UyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRT
U3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFNTdDlleGNlcHRpb24gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2U18gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pu
d21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2dkVFY2xF
diAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVDMUVPUzJf
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdnZFRUMyRU9TMl8g
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0
ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVjbEVTM19TNV8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRv
ckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3Qz
X18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJ
REVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVF
RDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVEMkV2
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFZOU3QzX18xMTdiYWRfZnVuY3Rpb25fY2FsbEUg
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNf
cGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9fcmFuZ2VfZW5kRVM0XyAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJs
ZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTEzX19yYW5nZV9iZWdpbkVTNF8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBw
ZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVy
YXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJh
aXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxf
X1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNV9fYXBwZW5kX3NvdXJjZUlQ
S2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRv
ckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVz
eXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3Iy
MV9faXNfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3Ry
aW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3Rvcnlf
aXRlcmF0b3JkZUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxl
c3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JwcEV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQ
Y2NMYjFFRTExX19yYW5nZV9lbmRFUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19f
MTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFF
RTEzX19yYW5nZV9iZWdpbkVQS2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9f
ZnMxMGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0
M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VJQTEwX2NF
RXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvcklj
RUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW0yNF9fdGhyb3dfZmlsZXN5c3RlbV9lcnJvcklKUlBLY1JLTlMxXzRwYXRoRVJLTlNfMTBlcnJv
cl9jb2RlRUVFRXZEcE9UXzsKIAogT1RIRVJfTERGTEFHU19CQVNFID0gJChPVEhFUl9MREZMQUdT
X0hJREVfU1lNQk9MUykgLWZvcmNlX2xvYWQgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9saWJXVEYuYSI7CiBPVEhFUl9MREZMQUdTW3Nkaz1lbWJl
ZGRlZCpdID0gJChpbmhlcml0ZWQpICQoT1RIRVJfTERGTEFHU19CQVNFKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAKaW5kZXggZjdkNjc0OWNjOWViZTVjOTE5N2JkMDg4MDBhZDY4MjkyODFmMjlkYy4uYmQ4
NWNjMTM3NWJhZGY5MDk3MTg5NDUxNWExM2QwNmJlYmViYmNkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5j
cHAKQEAgLTYyMyw1ICs2MjMsODkgQEAgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuICFlYzsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
Q2xvY2tUeXBlLCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBoYXNfdG9fdGltZV90IDogc3RkOjpm
YWxzZV90eXBlIHsgfTsKK3RlbXBsYXRlPHR5cGVuYW1lIENsb2NrVHlwZT4gc3RydWN0IGhhc190
b190aW1lX3Q8Q2xvY2tUeXBlLCBzdGQ6OnZvaWRfdDwKKyAgICBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfc2FtZTxzdGQ6OnRpbWVfdCwgZGVjbHR5cGUoQ2xvY2tUeXBlOjp0b190aW1lX3Qoc3Rk
OjpmaWxlc3lzdGVtOjpmaWxlX3RpbWVfdHlwZSgpKSk+Ojp2YWx1ZT4KKz4+IDogc3RkOjp0cnVl
X3R5cGUgeyB9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRmlsZVRpbWVUeXBlLCB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxoYXNfdG9fdGltZV90PHR5cGVuYW1lIEZpbGVUaW1lVHlwZTo6Y2xvY2s+
Ojp2YWx1ZSwgRmlsZVRpbWVUeXBlPjo6dHlwZSogPSBudWxscHRyPgorc3RkOjp0aW1lX3QgdG9U
aW1lVChGaWxlVGltZVR5cGUgZmlsZVRpbWUpCit7CisgICAgcmV0dXJuIGRlY2x0eXBlKGZpbGVU
aW1lKTo6Y2xvY2s6OnRvX3RpbWVfdChmaWxlVGltZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBGaWxlVGltZVR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFoYXNfdG9fdGltZV90PHR5
cGVuYW1lIEZpbGVUaW1lVHlwZTo6Y2xvY2s+Ojp2YWx1ZSwgRmlsZVRpbWVUeXBlPjo6dHlwZSog
PSBudWxscHRyPgorc3RkOjp0aW1lX3QgdG9UaW1lVChGaWxlVGltZVR5cGUgZmlsZVRpbWUpCit7
CisgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRvX3RpbWVfdChzdGQ6OmNo
cm9ubzo6dGltZV9wb2ludF9jYXN0PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmR1cmF0aW9u
PihmaWxlVGltZSAtIGRlY2x0eXBlKGZpbGVUaW1lKTo6Y2xvY2s6Om5vdygpICsgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6bm93KCkpKTsKK30KKworc3RhdGljIFdhbGxUaW1lIHRvV2FsbFRp
bWUoc3RkOjpmaWxlc3lzdGVtOjpmaWxlX3RpbWVfdHlwZSBmaWxlVGltZSkKK3sKKyAgICAvLyBG
SVhNRTogVXNlIHN0ZDo6Y2hyb25vOjpmaWxlX2Nsb2NrOjp0b19zeXMoKSBvbmNlIHdlIGNhbiB1
c2UgQysrMjAuCisgICAgc3RkOjp0aW1lX3QgdGltZVQgPSB0b1RpbWVUKGZpbGVUaW1lKTsKKyAg
ICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWVUKTsKK30KKworT3B0aW9uYWw8
V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sK
KyAgICBzdGQ6OmVycm9yX2NvZGUgZWM7CisgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gc3Rk
OjpmaWxlc3lzdGVtOjpsYXN0X3dyaXRlX3RpbWUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpLmRhdGEoKSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gdG9XYWxsVGltZShtb2RpZmljYXRpb25UaW1lKTsKK30KKworc3RhdGlj
IE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhUG90ZW50aWFsbHlGb2xsb3dpbmdT
eW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rcykKK3sKKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBzdGQ6OmZpbGVzeXN0ZW06OnBhdGggZnNQ
YXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKTsKKworICAgIHN0ZDo6
ZXJyb3JfY29kZSBlYzsKKyAgICBpZiAoc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyA9PSBTaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMgJiYgc3RkOjpmaWxlc3lzdGVtOjppc19zeW1saW5r
KGZzUGF0aCwgZWMpKSB7CisgICAgICAgIGZzUGF0aCA9IHN0ZDo6ZmlsZXN5c3RlbTo6cmVhZF9z
eW1saW5rKGZzUGF0aCwgZWMpOworICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIH0KKworICAgIGVjID0geyB9OworICAgIHN0ZDo6ZmlsZXN5c3Rl
bTo6ZGlyZWN0b3J5X2VudHJ5IGVudHJ5KGZzUGF0aCwgZWMpOworICAgIGlmIChlYykKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IHRv
V2FsbFRpbWUoZW50cnkubGFzdF93cml0ZV90aW1lKGVjKSk7CisKKyAgICAvLyBOb3RlIHRoYXQg
dGhlIHJlc3VsdCBvZiBhdHRlbXB0aW5nIHRvIGRldGVybWluZSB0aGUgc2l6ZSBvZiBhIGRpcmVj
dG9yeSBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLgorICAgIGF1dG8gZmlsZVNpemUgPSBlbnRy
eS5maWxlX3NpemUoZWMpOworICAgIGlmIChlYykKKyAgICAgICAgZmlsZVNpemUgPSAwOworCisj
aWYgT1MoVU5JWCkKKyAgICBzdGQ6OmZpbGVzeXN0ZW06OnBhdGg6OnN0cmluZ190eXBlIGZpbGVu
YW1lID0gZnNQYXRoLmZpbGVuYW1lKCk7CisgICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5l
bXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKKyNlbHNlCisgICAgYm9vbCBpc0hpZGRlbiA9
IGZhbHNlOworI2VuZGlmCisgICAgRmlsZU1ldGFkYXRhOjpUeXBlIHR5cGUgPSBGaWxlTWV0YWRh
dGE6OlR5cGU6OkZpbGU7CisgICAgaWYgKGVudHJ5LmlzX3N5bWxpbmsoZWMpKQorICAgICAgICB0
eXBlID0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7CisgICAgZWxzZSBpZiAoZW50
cnkuaXNfZGlyZWN0b3J5KGVjKSkKKyAgICAgICAgdHlwZSA9IEZpbGVNZXRhZGF0YTo6VHlwZTo6
RGlyZWN0b3J5OworCisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7IG1vZGlmaWNhdGlvblRpbWUs
IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oZmlsZVNpemUpLCBpc0hpZGRlbiwgdHlwZSB9OworfQor
CitPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgp
Cit7CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0YVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltbGlua3Mo
cGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pOworfQorCitPcHRpb25hbDxGaWxl
TWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFkYXRhUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1saW5r
cyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBGaWxlU3lzdGVtSW1wbAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIv
RmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IDYzZDVkYWYxYTk5NGZmNzIwY2M5NDMwM2MxZjNjNTJi
YTQ0ZTQwODMuLjZkZmJhNTFmMjI4ZThkYWJhYjViYTNlOTE4N2EzZTgyODYxYTlmOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0xNTIsNTEgKzE1Miw2IEBAIE9w
dGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpCiAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHU3RhdEJ1ZiBzdGF0UmVz
dWx0OwotICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25k
cyhzdGF0UmVzdWx0LnN0X210aW1lKTsKLX0KLQotc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0
b0ZpbGVNZXRhdGFUeXBlKEdTdGF0QnVmIHN0YXRSZXN1bHQpCi17Ci0gICAgaWYgKFNfSVNESVIo
c3RhdFJlc3VsdC5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6
RGlyZWN0b3J5OwotICAgIGlmIChTX0lTTE5LKHN0YXRSZXN1bHQuc3RfbW9kZSkpCi0gICAgICAg
IHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKLSAgICByZXR1cm4gRmls
ZU1ldGFkYXRhOjpUeXBlOjpGaWxlOwotfQotCi1zdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRh
PiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCAoKnN0
YXRGdW5jKShjb25zdCBTdHJpbmcmLCBHU3RhdEJ1ZiopKQotewotICAgIEdTdGF0QnVmIHN0YXRS
ZXN1bHQ7Ci0gICAgaWYgKCFzdGF0RnVuYyhwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5h
bWUocGF0aCk7Ci0gICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmls
ZW5hbWVbMF0gPT0gJy4nOwotCi0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7Ci0gICAgICAgIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0X210aW1lKSwKLSAgICAgICAgc3Rh
dFJlc3VsdC5zdF9zaXplLAotICAgICAgICBpc0hpZGRlbiwKLSAgICAgICAgdG9GaWxlTWV0YXRh
VHlwZShzdGF0UmVzdWx0KQotICAgIH07Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmls
ZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRh
VXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0RmlsZUxTdGF0KTsKLX0KLQotT3B0aW9uYWw8RmlsZU1l
dGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgp
Ci17Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVT
dGF0KTsKLX0KLQogU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogewogICAgIGlmIChwYXRoLmVuZHNXaXRo
KEdfRElSX1NFUEFSQVRPUl9TKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwCmluZGV4IGJmZThmYWJiNmJmYzY3MGU0ZWU0YjMwZDhiM2M0OGU0NzlkYzVkMjMuLjg4MjM4
ZmU4MGRlNGQ5YjEwODA3YjU5MmNjZTU1N2IwYTAyOWYxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9z
aXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTg2LDYxICsxODYsNiBAQCBPcHRpb25hbDxXYWxs
VGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiAjZW5kaWYKIH0K
IAotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdc
MCcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxl
SW5mbzsKLQotICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29u
ZHMoZmlsZUluZm8uc3RfbXRpbWUpOwotfQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRv
RmlsZU1ldGF0YVR5cGUoc3RydWN0IHN0YXQgZmlsZUluZm8pCi17Ci0gICAgaWYgKFNfSVNESVIo
ZmlsZUluZm8uc3RfbW9kZSkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkRp
cmVjdG9yeTsKLSAgICBpZiAoU19JU0xOSyhmaWxlSW5mby5zdF9tb2RlKSkKLSAgICAgICAgcmV0
dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0
YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZp
bGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQgKCpzdGF0RnVu
YykoY29uc3QgY2hhciosIHN0cnVjdCBzdGF0KikpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8
IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0gICAgaWYgKHN0YXRGdW5jKGZzUmVwLmRhdGEo
KSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFN0cmlu
ZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKLSAgICBib29sIGlzSGlkZGVuID0g
IWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7Ci0gICAgcmV0dXJuIEZp
bGVNZXRhZGF0YSB7Ci0gICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5z
dF9tdGltZSksCi0gICAgICAgIGZpbGVJbmZvLnN0X3NpemUsCi0gICAgICAgIGlzSGlkZGVuLAot
ICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKGZpbGVJbmZvKQotICAgIH07Ci19Ci0KLU9wdGlvbmFs
PEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBy
ZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmbHN0YXQpOwotfQotCi1PcHRp
b25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0
cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRo
LCAmc3RhdCk7Ci19Ci0KIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKIHsKICAgICBpZiAocGF0aC5lbmRz
V2l0aCgnLycpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IGZkNTlmMTkw
M2U2ZTFmZTg0ZDE1OGQ1NzVhOTYyOWVhYjkwMGM5ZDUuLjQ3OTA2YzdjNmM2MWVlYmY0OWQ5N2Rj
ZTdlZGFjZmIyNTJhZjdjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAg
LTExNCwxNyArMTE0LDYgQEAgYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmls
ZUhhbmRsZSwgbG9uZyBsb25nJiBzaXplKQogICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21CeUhh
bmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24sIHNpemUpOwogfQog
Ci1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRG
aW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICB0aW1lX3QgdGltZSA9IDA7Ci0gICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmlu
ZERhdGEoZmluZERhdGEsIHRpbWUpOwotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29u
ZHModGltZSk7Ci19Ci0KIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwpAQCAt
MTU0LDYzICsxNDMsNiBAQCBzdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3Ry
aW5nJiBwYXRoKQogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1N5bWJvbGljTGluayhXSU4zMl9GSU5EX0RBVEFXIGZp
bmREYXRhKQotewotICAgIHJldHVybiBmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9B
VFRSSUJVVEVfUkVQQVJTRV9QT0lOVCAmJiBmaW5kRGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBB
UlNFX1RBR19TWU1MSU5LOwotfQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1l
dGFkYXRhVHlwZShXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQotewotICAgIGlmIChmaW5kRGF0
YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQotICAgICAgICBy
ZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKGlzU3ltYm9saWNM
aW5rKGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9s
aWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRp
YyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoV0lOMzJfRklO
RF9EQVRBVyBmaW5kRGF0YSkKLXsKLSAgICBsb25nIGxvbmcgbGVuZ3RoOwotICAgIGlmICghZ2V0
RmlsZVNpemVGcm9tRmluZERhdGEoZmluZERhdGEsIGxlbmd0aCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbW9kaWZpY2F0aW9uVGltZSk7
Ci0KLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKG1vZGlmaWNhdGlvblRpbWUpLAotICAgICAgICBsZW5ndGgsCi0gICAgICAgIHN0YXRp
Y19jYXN0PGJvb2w+KGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9I
SURERU4pLAotICAgICAgICB0b0ZpbGVNZXRhZGF0YVR5cGUoZmluZERhdGEpCi0gICAgfTsKLX0K
LQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRo
KQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0
YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBy
ZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Ci19Ci0KLU9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5k
RGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAg
ICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERhdGEpKSB7Ci0gICAgICAgIFN0cmluZyB0YXJnZXRQ
YXRoID0gZ2V0RmluYWxQYXRoTmFtZShwYXRoKTsKLSAgICAgICAgaWYgKHRhcmdldFBhdGguaXNO
dWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICBpZiAoIWdl
dEZpbmREYXRhKHRhcmdldFBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmlu
ZERhdGEpOwotfQotCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7CiAgICAgVmVjdG9yPFVDaGFyPiBi
dWZmZXIoTUFYX1BBVEgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDUzYzc4NDgxMzYwZTE3OWMzMDI4ZmM5YzdhOWViNjBhMjVhZTA5ZTQuLjAw
YjkzOThkNGJjMTI4ZTVjZWIzNzE0YjRjNGM2OWE2ZWQzMGJmNGQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0w
NS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBvcnQgRmls
ZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUX0YpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuR2V0RmlsZU1vZGlmaWNh
dGlvblRpbWVUZXN0KToKKwogMjAyMS0wNS0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc2OTg1LgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA4YjczYWYxZTg4ZGFm
MmJiZWRlNjI5MzZiYWM4N2ZjMmU0ZDg2ODhjLi5kMWYzYTFhOWY3ZmU0MGQyMTM1NDdkM2MwZjIx
MDg1M2M0M2Y2ZmM3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lz
dGVtLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVk
ZSAiVGVzdC5oIgorI2luY2x1ZGUgIlV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9GaWxlTWV0
YWRhdGEuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CkBAIC0xNDIsMTkgKzE0Myw3NCBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEZp
bGVzSGF2ZVNhbWVWb2x1bWUpCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZl
U2FtZVZvbHVtZShiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQ
YXRoKCkpKTsKIH0KIAotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1s
aW5rKQorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFGaWxlU3ltbGluaykK
IHsKICAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0
ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwogICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5o
YXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEudmFsdWUoKS50eXBl
ID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
c3RhdGljX2Nhc3Q8c2l6ZV90PihzeW1saW5rTWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpID09IHN0
cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRh
dGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOworICAgIEVYUEVD
VF9GQUxTRShzeW1saW5rTWV0YWRhdGEtPmlzSGlkZGVuKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0
aWNfY2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS0+bGVuZ3RoKSA9PSBzdHJsZW4oRmlsZVN5
c3RlbVRlc3REYXRhKSk7CiAKICAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6
ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKICAg
ICBBU1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJV
RSh0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxl
KTsKLSAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSksIHN0YXRpY19jYXN0
PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpKTsKKyAgICBFWFBFQ1RfVFJV
RSh0YXJnZXRNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOworICAg
IEVYUEVDVF9GQUxTRSh0YXJnZXRNZXRhZGF0YS0+aXNIaWRkZW4pOworICAgIEVYUEVDVF9FUShz
dHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRh
ZGF0YS0+bGVuZ3RoKSk7CisKKyAgICBhdXRvIGFjdHVhbFRhcmdldE1ldGFkYXRhID0gRmlsZVN5
c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShhY3R1
YWxUYXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShhY3R1YWxUYXJn
ZXRNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOworICAgIEVYUEVD
VF9FUSh0YXJnZXRNZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSwgYWN0dWFsVGFyZ2V0TWV0YWRh
dGEtPm1vZGlmaWNhdGlvblRpbWUpOworICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRl
c3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS0+bGVuZ3RoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGFjdHVhbFRhcmdldE1ldGFkYXRhLT5pc0hpZGRlbik7CiB9CiAKK1RF
U1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRhRGlyZWN0b3J5U3ltbGluaykKK3sK
KyAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1w
RW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShzeW1saW5rTWV0YWRh
dGEuaGFzVmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRhLT50eXBlID09
IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3lt
bGlua01ldGFkYXRhLT5pc0hpZGRlbik7CisKKyAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gRmls
ZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVtcEVtcHR5Rm9sZGVyU3lt
bGlua1BhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUodGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7
CisgICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpU
eXBlOjpEaXJlY3RvcnkpOworICAgIEVYUEVDVF9GQUxTRSh0YXJnZXRNZXRhZGF0YS0+aXNIaWRk
ZW4pOworCisgICAgYXV0byBhY3R1YWxUYXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVN
ZXRhZGF0YSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKGFjdHVhbFRh
cmdldE1ldGFkYXRhLmhhc1ZhbHVlKCkpOworICAgIEVYUEVDVF9UUlVFKGFjdHVhbFRhcmdldE1l
dGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5KTsKKyAgICBFWFBF
Q1RfRVEodGFyZ2V0TWV0YWRhdGEtPm1vZGlmaWNhdGlvblRpbWUsIGFjdHVhbFRhcmdldE1ldGFk
YXRhLT5tb2RpZmljYXRpb25UaW1lKTsKKyAgICBFWFBFQ1RfRVEodGFyZ2V0TWV0YWRhdGEtPmxl
bmd0aCwgYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCk7CisgICAgRVhQRUNUX0ZBTFNFKGFj
dHVhbFRhcmdldE1ldGFkYXRhLT5pc0hpZGRlbik7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVz
dCwgR2V0RmlsZU1ldGFkYXRhRmlsZURvZXNOb3RFeGlzdCkKK3sKKyAgICBhdXRvIGRvZXNOb3RF
eGlzdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5
Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiKTsKKyAgICBhdXRvIG1ldGFkYXRhID0gRmls
ZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGRvZXNOb3RFeGlzdFBhdGgpOworICAgIEVYUEVDVF9UUlVF
KCFtZXRhZGF0YSk7Cit9CisKKyNpZiBPUyhVTklYKQorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBH
ZXRGaWxlTWV0YWRhdGFIaWRkZW5GaWxlKQoreworICAgIGF1dG8gaGlkZGVuRmlsZVBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgp
LCAiLmhpZGRlbkZpbGUiKTsKKyAgICBhdXRvIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVu
RmlsZShoaWRkZW5GaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7Cisg
ICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7Cisg
ICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRh
LCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGVIYW5kbGUpOworCisgICAgYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRh
ZGF0YShoaWRkZW5GaWxlUGF0aCk7CisgICAgQVNTRVJUX1RSVUUobWV0YWRhdGEuaGFzVmFsdWUo
KSk7CisgICAgRVhQRUNUX1RSVUUobWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBl
OjpGaWxlKTsKKyAgICBFWFBFQ1RfVFJVRShtZXRhZGF0YS0+aXNIaWRkZW4pOworICAgIEVYUEVD
VF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtZXRh
ZGF0YS0+bGVuZ3RoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KGhpZGRlbkZpbGVQYXRoKSk7Cit9CisjZW5kaWYKKwogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBV
bmljb2RlRGlyZWN0b3J5TmFtZSkKIHsKICAgICBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgoIi90ZXN0L2FcdTAzMDhsby90ZXN0LnR4dCIpOwpAQCAtNTI4LDQgKzU4NCw1MiBAQCBURVNU
X0YoRmlsZVN5c3RlbVRlc3QsIGNyZWF0ZUhhcmRMaW5rT3JDb3B5RmlsZSkKICAgICBFWFBFQ1Rf
RVEobGlua0ZpbGVTaXplLCBmaWxlU2l6ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJ1bkdldEZpbGVN
b2RpZmljYXRpb25UaW1lVGVzdChjb25zdCBTdHJpbmcmIHBhdGgsIEZ1bmN0aW9uPE9wdGlvbmFs
PFdhbGxUaW1lPihjb25zdCBTdHJpbmcmKT4mJiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSkKK3sK
KyAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRo
KTsKKyAgICBFWFBFQ1RfVFJVRSghIW1vZGlmaWNhdGlvblRpbWUpOworICAgIGlmICghbW9kaWZp
Y2F0aW9uVGltZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgdGltZW91dCA9IDA7
CisgICAgd2hpbGUgKCptb2RpZmljYXRpb25UaW1lID49IFdhbGxUaW1lOjpub3coKSAmJiArK3Rp
bWVvdXQgPCAyMCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAg
ICBFWFBFQ1RfTFQobW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgp
LCBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKKworICAgIGF1
dG8gdGltZUJlZm9yZU1vZGlmaWNhdGlvbiA9IFdhbGxUaW1lOjpub3coKTsKKworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDIpOworCisgICAgLy8gTW9kaWZ5IHRoZSBmaWxlLgorICAg
IGF1dG8gZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06
OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpp
c0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShm
aWxlSGFuZGxlLCAiZm9vIiwgc3RybGVuKCJmb28iKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGZpbGVIYW5kbGUpOworCisgICAgYXV0byBuZXdNb2RpZmljYXRpb25UaW1lID0gZ2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUocGF0aCk7CisgICAgRVhQRUNUX1RSVUUoISFuZXdNb2RpZmljYXRp
b25UaW1lKTsKKyAgICBpZiAoIW5ld01vZGlmaWNhdGlvblRpbWUpCisgICAgICAgIHJldHVybjsK
KworICAgIEVYUEVDVF9HVChuZXdNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgp
LnZhbHVlKCksIG1vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7
CisgICAgRVhQRUNUX0dUKG5ld01vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCku
dmFsdWUoKSwgdGltZUJlZm9yZU1vZGlmaWNhdGlvbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVl
KCkpOworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGdldEZpbGVNb2RpZmljYXRpb25UaW1l
KQoreworICAgIHJ1bkdldEZpbGVNb2RpZmljYXRpb25UaW1lVGVzdCh0ZW1wRmlsZVBhdGgoKSwg
W10oY29uc3QgU3RyaW5nJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZShwYXRoKTsKKyAgICB9KTsKK30KKworVEVTVF9GKEZpbGVTeXN0
ZW1UZXN0LCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZVZpYUZpbGVNZXRhZGF0YSkKK3sKKyAgICBy
dW5HZXRGaWxlTW9kaWZpY2F0aW9uVGltZVRlc3QodGVtcEZpbGVQYXRoKCksIFtdKGNvbnN0IFN0
cmluZyYgcGF0aCkgLT4gT3B0aW9uYWw8V2FsbFRpbWU+IHsKKyAgICAgICAgYXV0byBtZXRhZGF0
YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShwYXRoKTsKKyAgICAgICAgaWYgKCFtZXRhZGF0
YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBtZXRh
ZGF0YS0+bW9kaWZpY2F0aW9uVGltZTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGRkZTgwMTdiMWJkYTBmYTg1ZGQ2MTIxMjkyNTUzYTdjNWY5NDJm
MjMuLmM1ZDFiMGEwNGJhZTk0ODg1MjU3MjkwNGEyOGIzYzBiODk1Y2JiZTMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0wNS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCB0ZXN0aW5nIHRoZSBzaXpl
IG9mIGEgZGlyZWN0b3J5IGluIHRoZSBkYXRhIHRyYW5zZmVyIEFQSSBhcyB0aGUgcmVzdWx0IGlz
IGltcGxlbWVudGF0aW9uLXNwZWNpZmljLgorICAgICAgICBPbiBtYWNPUywgd2UgdXNlZCB0byBy
ZXR1cm4gMjU2IG9uIGFwZnMgYW5kIDI3MiBvbiBIRlMrLiBXZSBub3cgcmV0dXJuIDAsIHdoaWNo
IGlzIHdoYXQgRmlyZWZveCBkb2VzLgorCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2Vu
dHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnktZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXIt
aXRlbXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWw6CisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2Vu
dHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVz
Lmh0bWw6CisKIDIwMjEtMDUtMDQgIFR5bGVyIFdpbGNvY2sgIDx0d2lsY28ub0Bwcm90b25tYWls
LmNvbT4KIAogICAgICAgICBJbXBvcnQgd2Vic3RvcmFnZSBXUFRzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW50cmllcy1hcGkvZGF0YXRyYW5zZmVyLWl0ZW1z
LWRyb3AtZ2V0QXNFbnRyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvZW50cmllcy1hcGkvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS1leHBl
Y3RlZC50eHQKaW5kZXggNzEwYTU3MjIwNWQ4YjM0NDIwMGQyODVhNzUzYjUzYzczM2Q4Yjc2ZC4u
ZmZlMGU4YjM5MDQ3YzVmYzVkZGMwYzg1ODJmOTA2MDFkMmY0NTE4ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVt
cy1kcm9wLWdldEFzRW50cnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5
LWV4cGVjdGVkLnR4dApAQCAtMTYsNyArMTYsNiBAQCBQQVNTIGZpcnN0RW50cnkuZnVsbFBhdGgg
aXMgIi90ZXN0LnR4dCIKIFBBU1Mgc2Vjb25kRGF0YVRyYW5zZmVySXRlbS5raW5kIGlzICJmaWxl
IgogUEFTUyBzZWNvbmREYXRhVHJhbnNmZXJJdGVtLnR5cGUgaXMgIiIKIFBBU1Mgc2Vjb25kRmls
ZS5uYW1lIGlzICJ0ZXN0RmlsZXMiCi1QQVNTIHNlY29uZEZpbGUuc2l6ZSBpcyBvbmUgb2YgYDI3
MmAsIGFuZCBgMjU2YAogUEFTUyBzZWNvbmRGaWxlLnR5cGUgaXMgIiIKIFBBU1Mgc2Vjb25kRW50
cnkuaXNEaXJlY3RvcnkgaXMgdHJ1ZQogUEFTUyBzZWNvbmRFbnRyeS5pc0ZpbGUgaXMgZmFsc2UK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9lbnRyaWVzLWFwaS9k
YXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvZW50cmllcy1hcGkvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNF
bnRyeS5odG1sCmluZGV4IDEwMTg4ZmE0NTdiNDliNDkxNGZlNDNhNWMzMmNlZjdiZGVjYTU1NDgu
LjljZmUxMDNhYjIwYzBjOWQxYjBlMTFjYThiMjYwNjZjMTFiYTgwY2MgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRl
bXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbApA
QCAtMzcsNyArMzcsNiBAQCBkcm9wem9uZS5vbmRyb3AgPSBmdW5jdGlvbihlKSB7CiAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJzZWNvbmREYXRhVHJhbnNmZXJJdGVtLnR5cGUiLCAiIik7CiAg
ICAgc2Vjb25kRmlsZSA9IHNlY29uZERhdGFUcmFuc2Zlckl0ZW0uZ2V0QXNGaWxlKCk7CiAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWNvbmRGaWxlLm5hbWUiLCAidGVzdEZpbGVzIik7Ci0g
ICAgc2hvdWxkQmVPbmVPZlZhbHVlcygic2Vjb25kRmlsZS5zaXplIiwgWzI3MiwgMjU2XSk7IC8v
IENocm9tZSByZXR1cm5zIGZvbGRlciBzaXplLCBGaXJlZm94IHJldHVybnMgMC4gMjU2IGluIEFQ
RlMsIDI3MiBpbiBIRlMrIAogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2Vjb25kRmlsZS50
eXBlIiwgIiIpOwogCiAgICAgc2Vjb25kRW50cnkgPSBzZWNvbmREYXRhVHJhbnNmZXJJdGVtLndl
YmtpdEdldEFzRW50cnkoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmls
ZS9lbnRyaWVzLWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9kcmFnLWZvbGRlci13ZWJraXRF
bnRyaWVzLWV4cGVjdGVkLnR4dAppbmRleCAxOGY3ZTQ0MjZjYWFjNzU1OTkxMmVlMjY2MmJjMjgw
OTE5YWY3MTFlLi5lYTljYmY1ODY2MjM1MzUzMWViMDM1OTM5OTNmOTQ2YjRlNDRmMjQ2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvZHJhZy1mb2xk
ZXItd2Via2l0RW50cmllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMtZXhwZWN0ZWQudHh0
CkBAIC0xNiw3ICsxNiw2IEBAIFBBU1MgZmlsZXNbMF0ubmFtZSBpcyAidGVzdC50eHQiCiBQQVNT
IGZpbGVzWzBdLnNpemUgaXMgNQogUEFTUyBmaWxlc1swXS50eXBlIGlzICJ0ZXh0L3BsYWluIgog
UEFTUyBmaWxlc1sxXS5uYW1lIGlzICJ0ZXN0RmlsZXMiCi1QQVNTIGZpbGVzWzFdLnNpemUgaXMg
b25lIG9mIGAyNzJgLCBhbmQgYDI1NmAKIFBBU1MgZmlsZXNbMV0udHlwZSBpcyAiIgogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvZHJhZy1mb2xkZXItd2Via2l0RW50cmllcy5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtp
dEVudHJpZXMuaHRtbAppbmRleCA4ZDYyOGU0YmI3NTI1ZTJjNjBhNjlmMTE0NzkzYTViYjc4M2Vh
NzQyLi5iMTgwMTUxZDFmNTllNzIzNGRiNzcwNzBkNDJjNmM0OGRiYThlNjBjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvZHJhZy1mb2xkZXItd2Vi
a2l0RW50cmllcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVz
LWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLmh0bWwKQEAgLTQ4LDcgKzQ4LDYgQEAgZnVu
Y3Rpb24gY2hhbmdlZChldmVudCkKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGVzWzBd
LnR5cGUiLCAidGV4dC9wbGFpbiIpOwogCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxl
c1sxXS5uYW1lIiwgInRlc3RGaWxlcyIpOwotICAgIHNob3VsZEJlT25lT2ZWYWx1ZXMoImZpbGVz
WzFdLnNpemUiLCBbMjcyLCAyNTZdKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGVz
WzFdLnR5cGUiLCAiIik7CiAKICAgICBmaW5pc2hKU1Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427774</attachid>
            <date>2021-05-05 09:36:15 -0700</date>
            <delta_ts>2021-05-05 10:56:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225362-20210505093615.patch</filename>
            <type>text/plain</type>
            <size>28818</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjFiN2JlY2UzZjBiN2VjNDFiMjkwOWU0MmViYzhlOWNlOGZjNWNiLi5jNzgyMWFiMzFhZmFmNWJm
YTE2M2U1ZmJlZGQ5ZGJmNmUzZWRlYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisKIDIwMjEtMDUtMDMg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzeW50YXggZXJy
b3IgbWVzc2FnZSBmb3IgQVVUT1BMVVNQTFVTIHRva2VuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyNWNkNDQzMWE1ZGFiNGU4
YWViYTAxY2JmY2UwMWFkM2I2NGM0OGI0Li41ZTZlYjJmM2I5MWY1ZmEyNjlhZjkwYmFlMDA3YWE1
NDEzYjEwNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpmaWxlTWV0YWRh
dGEoKSAmIEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKCkgdG8gc3RkOjpmaWxl
c3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
b3J0IEZpbGVzeXN0ZW06OmZpbGVNZXRhZGF0YSgpICYgRmlsZXN5c3RlbTo6Z2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgYW5kIGdldCByaWQgb2Yg
cGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogd3RmL0ZpbGVT
eXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6dG9XYWxsVGltZSk6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxlTWV0YWRhdGEpOgorICAgICAgICAqIHd0
Zi9GaWxlU3lzdGVtLmg6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHd0Zi93
aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisKIDIwMjEtMDUtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCBpdGVyYXRlIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Om1fd2Vic2l0ZURhdGFTdG9yZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpp
bmRleCA1ZmI1NjAxNWZiZDA4ODc5YTBkYmM5YWI3NTJkMTNkMmYxNDMzODg4Li4zYTVkYTQzYzYz
ZGE1ZGZiNTc0MWJiNDA2ZmU0ZTU5YjFhOGI1YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmln
CkBAIC0yNyw3ICsyNyw3IEBAIERFRklORVNfTU9EVUxFID0gWUVTOwogTU9EVUxFTUFQX0ZJTEUg
PSAkKFNSQ1JPT1QpL0phdmFTY3JpcHRDb3JlLm1vZHVsZW1hcDsKIAogLy8gUHJldmVudCBDKysg
c3RhbmRhcmQgbGlicmFyeSBvcGVyYXRvciBuZXcsIGRlbGV0ZSBhbmQgdGhlaXIgcmVsYXRlZCBl
eGNlcHRpb24gdHlwZXMgZnJvbSBiZWluZyBleHBvcnRlZCBhcyB3ZWFrIHN5bWJvbHMuCi1PVEhF
Ul9MREZMQUdTX0hJREVfU1lNQk9MUyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDli
YWRfYWxsb2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aVFNTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2U18gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3Qz
X18xOGZ1bmN0aW9uSUZ2dkVFY2xFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4
ZnVuY3Rpb25JRnZ2RUVDMUVPUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThm
dW5jdGlvbklGdnZFRUMyRU9TMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThm
dW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVj
bEVTM19TNV8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4z
SlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVy
YXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pO
U3QzX18xOGZ1bmN0aW9uSUZ2dkVFRDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNf
XzE4ZnVuY3Rpb25JRnZ2RUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFZOU3QzX18x
MTdiYWRfZnVuY3Rpb25fY2FsbEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9f
ZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9f
cmFuZ2VfZW5kRVM0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmls
ZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTEzX19yYW5nZV9i
ZWdpbkVTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyN19f
aXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNf
c3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJ
Y0UxNV9fYXBwZW5kX3NvdXJjZUlQS2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90
cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxf
X1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBL
Y0VFTlNfOWVuYWJsZV9pZklYc3IyMV9faXNfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZF
NHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0
b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMTRfX2ZzMTBm
aWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JkZUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JwcEV2IC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhh
YmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFFRTExX19yYW5nZV9lbmRFUEtjIC1XbCwtdW5leHBv
cnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2No
YXJfYXJyYXlJQTEwX2NQY2NMYjFFRTEzX19yYW5nZV9iZWdpbkVQS2MgLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVf
X2FwcGVuZF9zb3VyY2VJQTEwX2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFp
dHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF87CitPVEhFUl9MREZMQUdTX0hJREVfU1lNQk9M
UyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRT
U3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFNTdDlleGNlcHRpb24gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2U18gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pu
d21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2dkVFY2xF
diAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVDMUVPUzJf
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdnZFRUMyRU9TMl8g
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0
ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVjbEVTM19TNV8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRv
ckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3Qz
X18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJ
REVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVF
RDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVEMkV2
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFZOU3QzX18xMTdiYWRfZnVuY3Rpb25fY2FsbEUg
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNf
cGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9fcmFuZ2VfZW5kRVM0XyAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJs
ZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTEzX19yYW5nZV9iZWdpbkVTNF8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBw
ZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVy
YXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJh
aXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxf
X1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNV9fYXBwZW5kX3NvdXJjZUlQ
S2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRv
ckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVz
eXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3Iy
MV9faXNfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3Ry
aW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3Rvcnlf
aXRlcmF0b3JkZUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxl
c3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JwcEV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQ
Y2NMYjFFRTExX19yYW5nZV9lbmRFUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19f
MTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFF
RTEzX19yYW5nZV9iZWdpbkVQS2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9f
ZnMxMGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0
M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VJQTEwX2NF
RXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvcklj
RUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW0yNF9fdGhyb3dfZmlsZXN5c3RlbV9lcnJvcklKUlBLY1JLTlMxXzRwYXRoRVJLTlNfMTBlcnJv
cl9jb2RlRUVFRXZEcE9UXzsKIAogT1RIRVJfTERGTEFHU19CQVNFID0gJChPVEhFUl9MREZMQUdT
X0hJREVfU1lNQk9MUykgLWZvcmNlX2xvYWQgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9saWJXVEYuYSI7CiBPVEhFUl9MREZMQUdTW3Nkaz1lbWJl
ZGRlZCpdID0gJChpbmhlcml0ZWQpICQoT1RIRVJfTERGTEFHU19CQVNFKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAKaW5kZXggZjdkNjc0OWNjOWViZTVjOTE5N2JkMDg4MDBhZDY4MjkyODFmMjlkYy4uZjFi
NjZkMDNkYjZlYTYyOGMzNmUzNTZjZDhlZDA4Y2M5ZjMxMzJjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5j
cHAKQEAgLTYyMyw1ICs2MjMsODkgQEAgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuICFlYzsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
Q2xvY2tUeXBlLCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBoYXNfdG9fdGltZV90IDogc3RkOjpm
YWxzZV90eXBlIHsgfTsKK3RlbXBsYXRlPHR5cGVuYW1lIENsb2NrVHlwZT4gc3RydWN0IGhhc190
b190aW1lX3Q8Q2xvY2tUeXBlLCBzdGQ6OnZvaWRfdDwKKyAgICBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfc2FtZV92PHN0ZDo6dGltZV90LCBkZWNsdHlwZShDbG9ja1R5cGU6OnRvX3RpbWVfdChz
dGQ6OmZpbGVzeXN0ZW06OmZpbGVfdGltZV90eXBlKCkpKT4+Cis+PiA6IHN0ZDo6dHJ1ZV90eXBl
IHsgfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEZpbGVUaW1lVHlwZT4KK3R5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmX3Q8aGFzX3RvX3RpbWVfdDx0eXBlbmFtZSBGaWxlVGltZVR5cGU6OmNsb2NrPjo6
dmFsdWUsIHN0ZDo6dGltZV90PiB0b1RpbWVUKEZpbGVUaW1lVHlwZSBmaWxlVGltZSkKK3sKKyAg
ICByZXR1cm4gZGVjbHR5cGUoZmlsZVRpbWUpOjpjbG9jazo6dG9fdGltZV90KGZpbGVUaW1lKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEZpbGVUaW1lVHlwZT4KK3R5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmX3Q8IWhhc190b190aW1lX3Q8dHlwZW5hbWUgRmlsZVRpbWVUeXBlOjpjbG9jaz46OnZh
bHVlLCBzdGQ6OnRpbWVfdD4gdG9UaW1lVChGaWxlVGltZVR5cGUgZmlsZVRpbWUpCit7CisgICAg
cmV0dXJuIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRvX3RpbWVfdChzdGQ6OmNocm9ubzo6
dGltZV9wb2ludF9jYXN0PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmR1cmF0aW9uPihmaWxl
VGltZSAtIGRlY2x0eXBlKGZpbGVUaW1lKTo6Y2xvY2s6Om5vdygpICsgc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6bm93KCkpKTsKK30KKworc3RhdGljIFdhbGxUaW1lIHRvV2FsbFRpbWUoc3Rk
OjpmaWxlc3lzdGVtOjpmaWxlX3RpbWVfdHlwZSBmaWxlVGltZSkKK3sKKyAgICAvLyBGSVhNRTog
VXNlIHN0ZDo6Y2hyb25vOjpmaWxlX2Nsb2NrOjp0b19zeXMoKSBvbmNlIHdlIGNhbiB1c2UgQysr
MjAuCisgICAgc3RkOjp0aW1lX3QgdGltZVQgPSB0b1RpbWVUKGZpbGVUaW1lKTsKKyAgICByZXR1
cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWVUKTsKK30KKworT3B0aW9uYWw8V2FsbFRp
bWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBz
dGQ6OmVycm9yX2NvZGUgZWM7CisgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gc3RkOjpmaWxl
c3lzdGVtOjpsYXN0X3dyaXRlX3RpbWUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRh
dGEoKSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gdG9XYWxsVGltZShtb2RpZmljYXRpb25UaW1lKTsKK30KKworc3RhdGljIE9wdGlv
bmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1saW5r
cyhjb25zdCBTdHJpbmcmIHBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9s
bG93U3ltYm9saWNMaW5rcykKK3sKKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBzdGQ6OmZpbGVzeXN0ZW06OnBhdGggZnNQYXRoID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKTsKKworICAgIHN0ZDo6ZXJyb3Jf
Y29kZSBlYzsKKyAgICBpZiAoc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyA9PSBTaG91bGRGb2xs
b3dTeW1ib2xpY0xpbmtzOjpZZXMgJiYgc3RkOjpmaWxlc3lzdGVtOjppc19zeW1saW5rKGZzUGF0
aCwgZWMpKSB7CisgICAgICAgIGZzUGF0aCA9IHN0ZDo6ZmlsZXN5c3RlbTo6cmVhZF9zeW1saW5r
KGZzUGF0aCwgZWMpOworICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIH0KKworICAgIGVjID0geyB9OworICAgIHN0ZDo6ZmlsZXN5c3RlbTo6ZGly
ZWN0b3J5X2VudHJ5IGVudHJ5KGZzUGF0aCwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IHRvV2FsbFRp
bWUoZW50cnkubGFzdF93cml0ZV90aW1lKGVjKSk7CisKKyAgICAvLyBOb3RlIHRoYXQgdGhlIHJl
c3VsdCBvZiBhdHRlbXB0aW5nIHRvIGRldGVybWluZSB0aGUgc2l6ZSBvZiBhIGRpcmVjdG9yeSBp
cyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLgorICAgIGF1dG8gZmlsZVNpemUgPSBlbnRyeS5maWxl
X3NpemUoZWMpOworICAgIGlmIChlYykKKyAgICAgICAgZmlsZVNpemUgPSAwOworCisjaWYgT1Mo
VU5JWCkKKyAgICBzdGQ6OmZpbGVzeXN0ZW06OnBhdGg6OnN0cmluZ190eXBlIGZpbGVuYW1lID0g
ZnNQYXRoLmZpbGVuYW1lKCk7CisgICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5lbXB0eSgp
ICYmIGZpbGVuYW1lWzBdID09ICcuJzsKKyNlbHNlCisgICAgYm9vbCBpc0hpZGRlbiA9IGZhbHNl
OworI2VuZGlmCisgICAgRmlsZU1ldGFkYXRhOjpUeXBlIHR5cGUgPSBGaWxlTWV0YWRhdGE6OlR5
cGU6OkZpbGU7CisgICAgaWYgKGVudHJ5LmlzX3N5bWxpbmsoZWMpKQorICAgICAgICB0eXBlID0g
RmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7CisgICAgZWxzZSBpZiAoZW50cnkuaXNf
ZGlyZWN0b3J5KGVjKSkKKyAgICAgICAgdHlwZSA9IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0
b3J5OworCisgICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7IG1vZGlmaWNhdGlvblRpbWUsIHN0YXRp
Y19jYXN0PGxvbmcgbG9uZz4oZmlsZVNpemUpLCBpc0hpZGRlbiwgdHlwZSB9OworfQorCitPcHRp
b25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCit7Cisg
ICAgcmV0dXJuIGZpbGVNZXRhZGF0YVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltbGlua3MocGF0aCwg
U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pOworfQorCitPcHRpb25hbDxGaWxlTWV0YWRh
dGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sK
KyAgICByZXR1cm4gZmlsZU1ldGFkYXRhUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1saW5rcyhwYXRo
LCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBG
aWxlU3lzdGVtSW1wbAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCmluZGV4IDYzZDVkYWYxYTk5NGZmNzIwY2M5NDMwM2MxZjNjNTJiYTQ0ZTQw
ODMuLjZkZmJhNTFmMjI4ZThkYWJhYjViYTNlOTE4N2EzZTgyODYxYTlmOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0xNTIsNTEgKzE1Miw2IEBAIE9wdGlvbmFs
PFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRp
b25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0Owot
ICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0
UmVzdWx0LnN0X210aW1lKTsKLX0KLQotc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVN
ZXRhdGFUeXBlKEdTdGF0QnVmIHN0YXRSZXN1bHQpCi17Ci0gICAgaWYgKFNfSVNESVIoc3RhdFJl
c3VsdC5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0
b3J5OwotICAgIGlmIChTX0lTTE5LKHN0YXRSZXN1bHQuc3RfbW9kZSkpCi0gICAgICAgIHJldHVy
biBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKLSAgICByZXR1cm4gRmlsZU1ldGFk
YXRhOjpUeXBlOjpGaWxlOwotfQotCi1zdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxl
TWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCAoKnN0YXRGdW5j
KShjb25zdCBTdHJpbmcmLCBHU3RhdEJ1ZiopKQotewotICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7
Ci0gICAgaWYgKCFzdGF0RnVuYyhwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0
aCk7Ci0gICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmlsZW5hbWVb
MF0gPT0gJy4nOwotCi0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7Ci0gICAgICAgIFdhbGxUaW1l
Ojpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0X210aW1lKSwKLSAgICAgICAgc3RhdFJlc3Vs
dC5zdF9zaXplLAotICAgICAgICBpc0hpZGRlbiwKLSAgICAgICAgdG9GaWxlTWV0YXRhVHlwZShz
dGF0UmVzdWx0KQotICAgIH07Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFk
YXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdG
dW5jdGlvbihwYXRoLCAmZ2V0RmlsZUxTdGF0KTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRh
PiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0g
ICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVTdGF0KTsK
LX0KLQogU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogewogICAgIGlmIChwYXRoLmVuZHNXaXRoKEdfRElS
X1NFUEFSQVRPUl9TKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0
ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmlu
ZGV4IGJmZThmYWJiNmJmYzY3MGU0ZWU0YjMwZDhiM2M0OGU0NzlkYzVkMjMuLjg4MjM4ZmU4MGRl
NGQ5YjEwODA3YjU5MmNjZTU1N2IwYTAyOWYxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcApAQCAtMTg2LDYxICsxODYsNiBAQCBPcHRpb25hbDxXYWxsVGltZT4g
Z2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiAjZW5kaWYKIH0KIAotT3B0
aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsK
LQotICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmls
ZUluZm8uc3RfbXRpbWUpOwotfQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1l
dGF0YVR5cGUoc3RydWN0IHN0YXQgZmlsZUluZm8pCi17Ci0gICAgaWYgKFNfSVNESVIoZmlsZUlu
Zm8uc3RfbW9kZSkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9y
eTsKLSAgICBpZiAoU19JU0xOSyhmaWxlSW5mby5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZp
bGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRhdGE6
OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRh
ZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQgKCpzdGF0RnVuYykoY29u
c3QgY2hhciosIHN0cnVjdCBzdGF0KikpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVw
LmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
c3RydWN0IHN0YXQgZmlsZUluZm87Ci0gICAgaWYgKHN0YXRGdW5jKGZzUmVwLmRhdGEoKSwgJmZp
bGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFN0cmluZyBmaWxl
bmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKLSAgICBib29sIGlzSGlkZGVuID0gIWZpbGVu
YW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7Ci0gICAgcmV0dXJuIEZpbGVNZXRh
ZGF0YSB7Ci0gICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGlt
ZSksCi0gICAgICAgIGZpbGVJbmZvLnN0X3NpemUsCi0gICAgICAgIGlzSGlkZGVuLAotICAgICAg
ICB0b0ZpbGVNZXRhdGFUeXBlKGZpbGVJbmZvKQotICAgIH07Ci19Ci0KLU9wdGlvbmFsPEZpbGVN
ZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4g
ZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmbHN0YXQpOwotfQotCi1PcHRpb25hbDxG
aWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmc3Rh
dCk7Ci19Ci0KIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKIHsKICAgICBpZiAocGF0aC5lbmRzV2l0aCgn
LycpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIv
U291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IGZkNTlmMTkwM2U2ZTFm
ZTg0ZDE1OGQ1NzVhOTYyOWVhYjkwMGM5ZDUuLjQ3OTA2YzdjNmM2MWVlYmY0OWQ5N2RjZTdlZGFj
ZmIyNTJhZjdjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTExNCwx
NyArMTE0LDYgQEAgYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRs
ZSwgbG9uZyBsb25nJiBzaXplKQogICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21CeUhhbmRsZUZp
bGVJbmZvcm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24sIHNpemUpOwogfQogCi1PcHRp
b25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRo
KQotewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0
YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICB0
aW1lX3QgdGltZSA9IDA7Ci0gICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEo
ZmluZERhdGEsIHRpbWUpOwotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGlt
ZSk7Ci19Ci0KIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwpAQCAtMTU0LDYz
ICsxNDMsNiBAQCBzdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3RyaW5nJiBw
YXRoKQogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgYm9vbCBpc1N5bWJvbGljTGluayhXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRh
KQotewotICAgIHJldHVybiBmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJV
VEVfUkVQQVJTRV9QT0lOVCAmJiBmaW5kRGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBBUlNFX1RB
R19TWU1MSU5LOwotfQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGFkYXRh
VHlwZShXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQotewotICAgIGlmIChmaW5kRGF0YS5kd0Zp
bGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQotICAgICAgICByZXR1cm4g
RmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKGlzU3ltYm9saWNMaW5rKGZp
bmREYXRhKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5r
OwotICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRpYyBPcHRp
b25hbDxGaWxlTWV0YWRhdGE+IGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoV0lOMzJfRklORF9EQVRB
VyBmaW5kRGF0YSkKLXsKLSAgICBsb25nIGxvbmcgbGVuZ3RoOwotICAgIGlmICghZ2V0RmlsZVNp
emVGcm9tRmluZERhdGEoZmluZERhdGEsIGxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbW9kaWZpY2F0aW9uVGltZSk7Ci0KLSAg
ICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KG1vZGlmaWNhdGlvblRpbWUpLAotICAgICAgICBsZW5ndGgsCi0gICAgICAgIHN0YXRpY19jYXN0
PGJvb2w+KGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ISURERU4p
LAotICAgICAgICB0b0ZpbGVNZXRhZGF0YVR5cGUoZmluZERhdGEpCi0gICAgfTsKLX0KLQotT3B0
aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRo
LCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4g
ZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRh
ZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShw
YXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBpZiAo
aXNTeW1ib2xpY0xpbmsoZmluZERhdGEpKSB7Ci0gICAgICAgIFN0cmluZyB0YXJnZXRQYXRoID0g
Z2V0RmluYWxQYXRoTmFtZShwYXRoKTsKLSAgICAgICAgaWYgKHRhcmdldFBhdGguaXNOdWxsKCkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICBpZiAoIWdldEZpbmRE
YXRhKHRhcmdldFBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERhdGEp
OwotfQotCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7CiAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIo
TUFYX1BBVEgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDUzYzc4NDgxMzYwZTE3OWMzMDI4ZmM5YzdhOWViNjBhMjVhZTA5ZTQuLjAwYjkzOThk
NGJjMTI4ZTVjZWIzNzE0YjRjNGM2OWE2ZWQzMGJmNGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0wNCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBvcnQgRmlsZXN5c3Rl
bTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgp
IHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUX0YpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuR2V0RmlsZU1vZGlmaWNhdGlvblRp
bWVUZXN0KToKKwogMjAyMS0wNS0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc2OTg1LgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA4YjczYWYxZTg4ZGFmMmJiZWRl
NjI5MzZiYWM4N2ZjMmU0ZDg2ODhjLi5kMWYzYTFhOWY3ZmU0MGQyMTM1NDdkM2MwZjIxMDg1M2M0
M2Y2ZmM3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lz
dGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiVGVz
dC5oIgorI2luY2x1ZGUgIlV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEu
aD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CkBAIC0xNDIsMTkgKzE0Myw3NCBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEZpbGVzSGF2
ZVNhbWVWb2x1bWUpCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZv
bHVtZShiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkp
KTsKIH0KIAotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1saW5rKQor
VEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFGaWxlU3ltbGluaykKIHsKICAg
ICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRmls
ZVN5bWxpbmtQYXRoKCkpOwogICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNWYWx1
ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZp
bGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKLSAgICBFWFBFQ1RfRkFMU0Uoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzeW1saW5rTWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpID09IHN0cmxlbihG
aWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEtPnR5
cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOworICAgIEVYUEVDVF9GQUxT
RShzeW1saW5rTWV0YWRhdGEtPmlzSGlkZGVuKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2Fz
dDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS0+bGVuZ3RoKSA9PSBzdHJsZW4oRmlsZVN5c3RlbVRl
c3REYXRhKSk7CiAKICAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1l
dGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKICAgICBBU1NF
UlRfVFJVRSh0YXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSh0YXJn
ZXRNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKLSAg
ICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSksIHN0YXRpY19jYXN0PHNpemVf
dD4odGFyZ2V0TWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0YXJn
ZXRNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOworICAgIEVYUEVD
VF9GQUxTRSh0YXJnZXRNZXRhZGF0YS0+aXNIaWRkZW4pOworICAgIEVYUEVDVF9FUShzdHJsZW4o
RmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS0+
bGVuZ3RoKSk7CisKKyAgICBhdXRvIGFjdHVhbFRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6
ZmlsZU1ldGFkYXRhKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShhY3R1YWxUYXJn
ZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShhY3R1YWxUYXJnZXRNZXRh
ZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOworICAgIEVYUEVDVF9FUSh0
YXJnZXRNZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSwgYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPm1v
ZGlmaWNhdGlvblRpbWUpOworICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRh
KSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS0+bGVuZ3RoKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGFjdHVhbFRhcmdldE1ldGFkYXRhLT5pc0hpZGRlbik7CiB9CiAKK1RFU1RfRihG
aWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRhRGlyZWN0b3J5U3ltbGluaykKK3sKKyAgICBh
dXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRW1wdHlG
b2xkZXJTeW1saW5rUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShzeW1saW5rTWV0YWRhdGEuaGFz
VmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRhLT50eXBlID09IEZpbGVN
ZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3ltbGlua01l
dGFkYXRhLT5pc0hpZGRlbik7CisKKyAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVtcEVtcHR5Rm9sZGVyU3ltbGlua1Bh
dGgoKSk7CisgICAgQVNTRVJUX1RSVUUodGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7CisgICAg
RVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpE
aXJlY3RvcnkpOworICAgIEVYUEVDVF9GQUxTRSh0YXJnZXRNZXRhZGF0YS0+aXNIaWRkZW4pOwor
CisgICAgYXV0byBhY3R1YWxUYXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0
YSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKGFjdHVhbFRhcmdldE1l
dGFkYXRhLmhhc1ZhbHVlKCkpOworICAgIEVYUEVDVF9UUlVFKGFjdHVhbFRhcmdldE1ldGFkYXRh
LT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5KTsKKyAgICBFWFBFQ1RfRVEo
dGFyZ2V0TWV0YWRhdGEtPm1vZGlmaWNhdGlvblRpbWUsIGFjdHVhbFRhcmdldE1ldGFkYXRhLT5t
b2RpZmljYXRpb25UaW1lKTsKKyAgICBFWFBFQ1RfRVEodGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCwg
YWN0dWFsVGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCk7CisgICAgRVhQRUNUX0ZBTFNFKGFjdHVhbFRh
cmdldE1ldGFkYXRhLT5pc0hpZGRlbik7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0
RmlsZU1ldGFkYXRhRmlsZURvZXNOb3RFeGlzdCkKK3sKKyAgICBhdXRvIGRvZXNOb3RFeGlzdFBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVy
UGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiKTsKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhKGRvZXNOb3RFeGlzdFBhdGgpOworICAgIEVYUEVDVF9UUlVFKCFtZXRh
ZGF0YSk7Cit9CisKKyNpZiBPUyhVTklYKQorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxl
TWV0YWRhdGFIaWRkZW5GaWxlKQoreworICAgIGF1dG8gaGlkZGVuRmlsZVBhdGggPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiLmhp
ZGRlbkZpbGUiKTsKKyAgICBhdXRvIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZSho
aWRkZW5GaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgRVhQ
RUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CisgICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJs
ZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVI
YW5kbGUpOworCisgICAgYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSho
aWRkZW5GaWxlUGF0aCk7CisgICAgQVNTRVJUX1RSVUUobWV0YWRhdGEuaGFzVmFsdWUoKSk7Cisg
ICAgRVhQRUNUX1RSVUUobWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxl
KTsKKyAgICBFWFBFQ1RfVFJVRShtZXRhZGF0YS0+aXNIaWRkZW4pOworICAgIEVYUEVDVF9FUShz
dHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtZXRhZGF0YS0+
bGVuZ3RoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGhpZGRl
bkZpbGVQYXRoKSk7Cit9CisjZW5kaWYKKwogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBVbmljb2Rl
RGlyZWN0b3J5TmFtZSkKIHsKICAgICBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVURjgoIi90
ZXN0L2FcdTAzMDhsby90ZXN0LnR4dCIpOwpAQCAtNTI4LDQgKzU4NCw1MiBAQCBURVNUX0YoRmls
ZVN5c3RlbVRlc3QsIGNyZWF0ZUhhcmRMaW5rT3JDb3B5RmlsZSkKICAgICBFWFBFQ1RfRVEobGlu
a0ZpbGVTaXplLCBmaWxlU2l6ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJ1bkdldEZpbGVNb2RpZmlj
YXRpb25UaW1lVGVzdChjb25zdCBTdHJpbmcmIHBhdGgsIEZ1bmN0aW9uPE9wdGlvbmFsPFdhbGxU
aW1lPihjb25zdCBTdHJpbmcmKT4mJiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSkKK3sKKyAgICBh
dXRvIG1vZGlmaWNhdGlvblRpbWUgPSBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoKTsKKyAg
ICBFWFBFQ1RfVFJVRSghIW1vZGlmaWNhdGlvblRpbWUpOworICAgIGlmICghbW9kaWZpY2F0aW9u
VGltZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgdGltZW91dCA9IDA7CisgICAg
d2hpbGUgKCptb2RpZmljYXRpb25UaW1lID49IFdhbGxUaW1lOjpub3coKSAmJiArK3RpbWVvdXQg
PCAyMCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICBFWFBF
Q1RfTFQobW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpLCBXYWxs
VGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKKworICAgIGF1dG8gdGlt
ZUJlZm9yZU1vZGlmaWNhdGlvbiA9IFdhbGxUaW1lOjpub3coKTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnNsZWVwKDIpOworCisgICAgLy8gTW9kaWZ5IHRoZSBmaWxlLgorICAgIGF1dG8g
ZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVP
cGVuTW9kZTo6UmVhZFdyaXRlKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hhbmRs
ZVZhbGlkKGZpbGVIYW5kbGUpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFu
ZGxlLCAiZm9vIiwgc3RybGVuKCJmb28iKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGVIYW5kbGUpOworCisgICAgYXV0byBuZXdNb2RpZmljYXRpb25UaW1lID0gZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUocGF0aCk7CisgICAgRVhQRUNUX1RSVUUoISFuZXdNb2RpZmljYXRpb25UaW1l
KTsKKyAgICBpZiAoIW5ld01vZGlmaWNhdGlvblRpbWUpCisgICAgICAgIHJldHVybjsKKworICAg
IEVYUEVDVF9HVChuZXdNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVl
KCksIG1vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CisgICAg
RVhQRUNUX0dUKG5ld01vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUo
KSwgdGltZUJlZm9yZU1vZGlmaWNhdGlvbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOwor
fQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKQorewor
ICAgIHJ1bkdldEZpbGVNb2RpZmljYXRpb25UaW1lVGVzdCh0ZW1wRmlsZVBhdGgoKSwgW10oY29u
c3QgU3RyaW5nJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShwYXRoKTsKKyAgICB9KTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZVZpYUZpbGVNZXRhZGF0YSkKK3sKKyAgICBydW5HZXRG
aWxlTW9kaWZpY2F0aW9uVGltZVRlc3QodGVtcEZpbGVQYXRoKCksIFtdKGNvbnN0IFN0cmluZyYg
cGF0aCkgLT4gT3B0aW9uYWw8V2FsbFRpbWU+IHsKKyAgICAgICAgYXV0byBtZXRhZGF0YSA9IEZp
bGVTeXN0ZW06OmZpbGVNZXRhZGF0YShwYXRoKTsKKyAgICAgICAgaWYgKCFtZXRhZGF0YSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBtZXRhZGF0YS0+
bW9kaWZpY2F0aW9uVGltZTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGRkZTgwMTdiMWJkYTBmYTg1ZGQ2MTIxMjkyNTUzYTdjNWY5NDJmMjMuLmM1
ZDFiMGEwNGJhZTk0ODg1MjU3MjkwNGEyOGIzYzBiODk1Y2JiZTMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAyMS0wNS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCB0ZXN0aW5nIHRoZSBzaXplIG9mIGEg
ZGlyZWN0b3J5IGluIHRoZSBkYXRhIHRyYW5zZmVyIEFQSSBhcyB0aGUgcmVzdWx0IGlzIGltcGxl
bWVudGF0aW9uLXNwZWNpZmljLgorICAgICAgICBPbiBtYWNPUywgd2UgdXNlZCB0byByZXR1cm4g
MjU2IG9uIGFwZnMgYW5kIDI3MiBvbiBIRlMrLiBXZSBub3cgcmV0dXJuIDAsIHdoaWNoIGlzIHdo
YXQgRmlyZWZveCBkb2VzLgorCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMt
YXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnktZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMt
ZHJvcC1nZXRBc0VudHJ5Lmh0bWw6CisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMt
YXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLmh0bWw6
CisKIDIwMjEtMDUtMDQgIFR5bGVyIFdpbGNvY2sgIDx0d2lsY28ub0Bwcm90b25tYWlsLmNvbT4K
IAogICAgICAgICBJbXBvcnQgd2Vic3RvcmFnZSBXUFRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW50cmllcy1hcGkvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3At
Z2V0QXNFbnRyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
ZW50cmllcy1hcGkvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS1leHBlY3RlZC50
eHQKaW5kZXggNzEwYTU3MjIwNWQ4YjM0NDIwMGQyODVhNzUzYjUzYzczM2Q4Yjc2ZC4uZmZlMGU4
YjM5MDQ3YzVmYzVkZGMwYzg1ODJmOTA2MDFkMmY0NTE4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9w
LWdldEFzRW50cnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5LWV4cGVj
dGVkLnR4dApAQCAtMTYsNyArMTYsNiBAQCBQQVNTIGZpcnN0RW50cnkuZnVsbFBhdGggaXMgIi90
ZXN0LnR4dCIKIFBBU1Mgc2Vjb25kRGF0YVRyYW5zZmVySXRlbS5raW5kIGlzICJmaWxlIgogUEFT
UyBzZWNvbmREYXRhVHJhbnNmZXJJdGVtLnR5cGUgaXMgIiIKIFBBU1Mgc2Vjb25kRmlsZS5uYW1l
IGlzICJ0ZXN0RmlsZXMiCi1QQVNTIHNlY29uZEZpbGUuc2l6ZSBpcyBvbmUgb2YgYDI3MmAsIGFu
ZCBgMjU2YAogUEFTUyBzZWNvbmRGaWxlLnR5cGUgaXMgIiIKIFBBU1Mgc2Vjb25kRW50cnkuaXNE
aXJlY3RvcnkgaXMgdHJ1ZQogUEFTUyBzZWNvbmRFbnRyeS5pc0ZpbGUgaXMgZmFsc2UKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJh
bnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZW50cmllcy1hcGkvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS5o
dG1sCmluZGV4IDEwMTg4ZmE0NTdiNDliNDkxNGZlNDNhNWMzMmNlZjdiZGVjYTU1NDguLjljZmUx
MDNhYjIwYzBjOWQxYjBlMTFjYThiMjYwNjZjMTFiYTgwY2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJv
cC1nZXRBc0VudHJ5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Vu
dHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbApAQCAtMzcs
NyArMzcsNiBAQCBkcm9wem9uZS5vbmRyb3AgPSBmdW5jdGlvbihlKSB7CiAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJzZWNvbmREYXRhVHJhbnNmZXJJdGVtLnR5cGUiLCAiIik7CiAgICAgc2Vj
b25kRmlsZSA9IHNlY29uZERhdGFUcmFuc2Zlckl0ZW0uZ2V0QXNGaWxlKCk7CiAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJzZWNvbmRGaWxlLm5hbWUiLCAidGVzdEZpbGVzIik7Ci0gICAgc2hv
dWxkQmVPbmVPZlZhbHVlcygic2Vjb25kRmlsZS5zaXplIiwgWzI3MiwgMjU2XSk7IC8vIENocm9t
ZSByZXR1cm5zIGZvbGRlciBzaXplLCBGaXJlZm94IHJldHVybnMgMC4gMjU2IGluIEFQRlMsIDI3
MiBpbiBIRlMrIAogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2Vjb25kRmlsZS50eXBlIiwg
IiIpOwogCiAgICAgc2Vjb25kRW50cnkgPSBzZWNvbmREYXRhVHJhbnNmZXJJdGVtLndlYmtpdEdl
dEFzRW50cnkoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRy
aWVzLWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVz
LWV4cGVjdGVkLnR4dAppbmRleCAxOGY3ZTQ0MjZjYWFjNzU1OTkxMmVlMjY2MmJjMjgwOTE5YWY3
MTFlLi5lYTljYmY1ODY2MjM1MzUzMWViMDM1OTM5OTNmOTQ2YjRlNDRmMjQ2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvZHJhZy1mb2xkZXItd2Vi
a2l0RW50cmllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxl
L2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMtZXhwZWN0ZWQudHh0CkBAIC0x
Niw3ICsxNiw2IEBAIFBBU1MgZmlsZXNbMF0ubmFtZSBpcyAidGVzdC50eHQiCiBQQVNTIGZpbGVz
WzBdLnNpemUgaXMgNQogUEFTUyBmaWxlc1swXS50eXBlIGlzICJ0ZXh0L3BsYWluIgogUEFTUyBm
aWxlc1sxXS5uYW1lIGlzICJ0ZXN0RmlsZXMiCi1QQVNTIGZpbGVzWzFdLnNpemUgaXMgb25lIG9m
IGAyNzJgLCBhbmQgYDI1NmAKIFBBU1MgZmlsZXNbMV0udHlwZSBpcyAiIgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2ZpbGUvZW50cmllcy1hcGkvZHJhZy1mb2xkZXItd2Via2l0RW50cmllcy5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJp
ZXMuaHRtbAppbmRleCA4ZDYyOGU0YmI3NTI1ZTJjNjBhNjlmMTE0NzkzYTViYjc4M2VhNzQyLi5i
MTgwMTUxZDFmNTllNzIzNGRiNzcwNzBkNDJjNmM0OGRiYThlNjBjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvZHJhZy1mb2xkZXItd2Via2l0RW50
cmllcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9k
cmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLmh0bWwKQEAgLTQ4LDcgKzQ4LDYgQEAgZnVuY3Rpb24g
Y2hhbmdlZChldmVudCkKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGVzWzBdLnR5cGUi
LCAidGV4dC9wbGFpbiIpOwogCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxlc1sxXS5u
YW1lIiwgInRlc3RGaWxlcyIpOwotICAgIHNob3VsZEJlT25lT2ZWYWx1ZXMoImZpbGVzWzFdLnNp
emUiLCBbMjcyLCAyNTZdKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGVzWzFdLnR5
cGUiLCAiIik7CiAKICAgICBmaW5pc2hKU1Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427781</attachid>
            <date>2021-05-05 10:56:58 -0700</date>
            <delta_ts>2021-05-06 11:56:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225362-20210505105657.patch</filename>
            <type>text/plain</type>
            <size>30596</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjFiN2JlY2UzZjBiN2VjNDFiMjkwOWU0MmViYzhlOWNlOGZjNWNiLi5jNzgyMWFiMzFhZmFmNWJm
YTE2M2U1ZmJlZGQ5ZGJmNmUzZWRlYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisKIDIwMjEtMDUtMDMg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzeW50YXggZXJy
b3IgbWVzc2FnZSBmb3IgQVVUT1BMVVNQTFVTIHRva2VuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyNWNkNDQzMWE1ZGFiNGU4
YWViYTAxY2JmY2UwMWFkM2I2NGM0OGI0Li41ZTZlYjJmM2I5MWY1ZmEyNjlhZjkwYmFlMDA3YWE1
NDEzYjEwNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpmaWxlTWV0YWRh
dGEoKSAmIEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKCkgdG8gc3RkOjpmaWxl
c3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
b3J0IEZpbGVzeXN0ZW06OmZpbGVNZXRhZGF0YSgpICYgRmlsZXN5c3RlbTo6Z2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgYW5kIGdldCByaWQgb2Yg
cGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogd3RmL0ZpbGVT
eXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6dG9XYWxsVGltZSk6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxlTWV0YWRhdGEpOgorICAgICAgICAqIHd0
Zi9GaWxlU3lzdGVtLmg6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHd0Zi93
aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisKIDIwMjEtMDUtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCBpdGVyYXRlIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Om1fd2Vic2l0ZURhdGFTdG9yZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpp
bmRleCA1ZmI1NjAxNWZiZDA4ODc5YTBkYmM5YWI3NTJkMTNkMmYxNDMzODg4Li4zYTVkYTQzYzYz
ZGE1ZGZiNTc0MWJiNDA2ZmU0ZTU5YjFhOGI1YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmln
CkBAIC0yNyw3ICsyNyw3IEBAIERFRklORVNfTU9EVUxFID0gWUVTOwogTU9EVUxFTUFQX0ZJTEUg
PSAkKFNSQ1JPT1QpL0phdmFTY3JpcHRDb3JlLm1vZHVsZW1hcDsKIAogLy8gUHJldmVudCBDKysg
c3RhbmRhcmQgbGlicmFyeSBvcGVyYXRvciBuZXcsIGRlbGV0ZSBhbmQgdGhlaXIgcmVsYXRlZCBl
eGNlcHRpb24gdHlwZXMgZnJvbSBiZWluZyBleHBvcnRlZCBhcyB3ZWFrIHN5bWJvbHMuCi1PVEhF
Ul9MREZMQUdTX0hJREVfU1lNQk9MUyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDli
YWRfYWxsb2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aVFNTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2U18gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3Qz
X18xOGZ1bmN0aW9uSUZ2dkVFY2xFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4
ZnVuY3Rpb25JRnZ2RUVDMUVPUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThm
dW5jdGlvbklGdnZFRUMyRU9TMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThm
dW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVj
bEVTM19TNV8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4z
SlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVy
YXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pO
U3QzX18xOGZ1bmN0aW9uSUZ2dkVFRDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNf
XzE4ZnVuY3Rpb25JRnZ2RUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFZOU3QzX18x
MTdiYWRfZnVuY3Rpb25fY2FsbEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9f
ZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9f
cmFuZ2VfZW5kRVM0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmls
ZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTEzX19yYW5nZV9i
ZWdpbkVTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyN19f
aXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNf
c3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJ
Y0UxNV9fYXBwZW5kX3NvdXJjZUlQS2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90
cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxf
X1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBL
Y0VFTlNfOWVuYWJsZV9pZklYc3IyMV9faXNfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZF
NHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0
b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMTRfX2ZzMTBm
aWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JkZUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JwcEV2IC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhh
YmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFFRTExX19yYW5nZV9lbmRFUEtjIC1XbCwtdW5leHBv
cnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2No
YXJfYXJyYXlJQTEwX2NQY2NMYjFFRTEzX19yYW5nZV9iZWdpbkVQS2MgLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVf
X2FwcGVuZF9zb3VyY2VJQTEwX2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFp
dHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF87CitPVEhFUl9MREZMQUdTX0hJREVfU1lNQk9M
UyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRT
U3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFNTdDlleGNlcHRpb24gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2U18gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pu
d21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2dkVFY2xF
diAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVDMUVPUzJf
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdnZFRUMyRU9TMl8g
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0
ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVjbEVTM19TNV8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRv
ckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3Qz
X18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJ
REVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVF
RDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVEMkV2
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFZOU3QzX18xMTdiYWRfZnVuY3Rpb25fY2FsbEUg
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNf
cGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9fcmFuZ2VfZW5kRVM0XyAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJs
ZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTEzX19yYW5nZV9iZWdpbkVTNF8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBw
ZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVy
YXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJh
aXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxf
X1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNV9fYXBwZW5kX3NvdXJjZUlQ
S2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRv
ckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVz
eXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3Iy
MV9faXNfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3Ry
aW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3Rvcnlf
aXRlcmF0b3JkZUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxl
c3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JwcEV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQ
Y2NMYjFFRTExX19yYW5nZV9lbmRFUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19f
MTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFF
RTEzX19yYW5nZV9iZWdpbkVQS2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9f
ZnMxMGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0
M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VJQTEwX2NF
RXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvcklj
RUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW0yNF9fdGhyb3dfZmlsZXN5c3RlbV9lcnJvcklKUlBLY1JLTlMxXzRwYXRoRVJLTlNfMTBlcnJv
cl9jb2RlRUVFRXZEcE9UXzsKIAogT1RIRVJfTERGTEFHU19CQVNFID0gJChPVEhFUl9MREZMQUdT
X0hJREVfU1lNQk9MUykgLWZvcmNlX2xvYWQgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9saWJXVEYuYSI7CiBPVEhFUl9MREZMQUdTW3Nkaz1lbWJl
ZGRlZCpdID0gJChpbmhlcml0ZWQpICQoT1RIRVJfTERGTEFHU19CQVNFKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAKaW5kZXggZjdkNjc0OWNjOWViZTVjOTE5N2JkMDg4MDBhZDY4MjkyODFmMjlkYy4uMDIx
YTU3ODE1YjA4OGE2ZTZlZjEyZDJlYWU0ZDRmZWRhZDBlOGU3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKIAogI2lmICFPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHN5cy9t
bWFuLmg+CisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNl
bmRpZgogCkBAIC0xMDUsNiArMTA2LDQ0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRFc2Nh
cGVVQ2hhcihVQ2hhciBjaGFyYWN0ZXIsIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyLCBVCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDbG9ja1R5cGUsIHR5cGVuYW1l
ID0gdm9pZD4gc3RydWN0IGhhc190b190aW1lX3QgOiBzdGQ6OmZhbHNlX3R5cGUgeyB9OwordGVt
cGxhdGU8dHlwZW5hbWUgQ2xvY2tUeXBlPiBzdHJ1Y3QgaGFzX3RvX3RpbWVfdDxDbG9ja1R5cGUs
IHN0ZDo6dm9pZF90PAorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lX3Y8c3RkOjp0
aW1lX3QsIGRlY2x0eXBlKENsb2NrVHlwZTo6dG9fdGltZV90KHN0ZDo6ZmlsZXN5c3RlbTo6Zmls
ZV90aW1lX3R5cGUoKSkpPj4KKz4+IDogc3RkOjp0cnVlX3R5cGUgeyB9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgRmlsZVRpbWVUeXBlPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxoYXNfdG9f
dGltZV90PHR5cGVuYW1lIEZpbGVUaW1lVHlwZTo6Y2xvY2s+Ojp2YWx1ZSwgc3RkOjp0aW1lX3Q+
IHRvVGltZVQoRmlsZVRpbWVUeXBlIGZpbGVUaW1lKQoreworICAgIHJldHVybiBkZWNsdHlwZShm
aWxlVGltZSk6OmNsb2NrOjp0b190aW1lX3QoZmlsZVRpbWUpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRmlsZVRpbWVUeXBlPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhaGFzX3RvX3Rp
bWVfdDx0eXBlbmFtZSBGaWxlVGltZVR5cGU6OmNsb2NrPjo6dmFsdWUsIHN0ZDo6dGltZV90PiB0
b1RpbWVUKEZpbGVUaW1lVHlwZSBmaWxlVGltZSkKK3sKKyAgICByZXR1cm4gc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dG9fdGltZV90KHN0ZDo6Y2hyb25vOjp0aW1lX3BvaW50X2Nhc3Q8c3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZHVyYXRpb24+KGZpbGVUaW1lIC0gZGVjbHR5cGUoZmls
ZVRpbWUpOjpjbG9jazo6bm93KCkgKyBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSkp
OworfQorCitzdGF0aWMgV2FsbFRpbWUgdG9XYWxsVGltZShzdGQ6OmZpbGVzeXN0ZW06OmZpbGVf
dGltZV90eXBlIGZpbGVUaW1lKQoreworICAgIC8vIEZJWE1FOiBVc2Ugc3RkOjpjaHJvbm86OmZp
bGVfY2xvY2s6OnRvX3N5cygpIG9uY2Ugd2UgY2FuIHVzZSBDKysyMC4KKyAgICBzdGQ6OnRpbWVf
dCB0aW1lVCA9IHRvVGltZVQoZmlsZVRpbWUpOworICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJh
d1NlY29uZHModGltZVQpOworfQorCitzdGF0aWMgc3RkOjpmaWxlc3lzdGVtOjpwYXRoIHJlc29s
dmVTeW1saW5rcyhzdGQ6OmZpbGVzeXN0ZW06OnBhdGggcGF0aCwgc3RkOjplcnJvcl9jb2RlIGVj
KQoreworI2lmZGVmIE1BWFNZTUxJTktTCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFN5
bWxpbmtEZXB0aCA9IE1BWFNZTUxJTktTOworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbWF4U3ltbGlua0RlcHRoID0gNDA7CisjZW5kaWYKKworICAgIHVuc2lnbmVkIGN1cnJlbnRE
ZXB0aCA9IDA7CisgICAgd2hpbGUgKCsrY3VycmVudERlcHRoIDw9IG1heFN5bWxpbmtEZXB0aCAm
JiAhZWMgJiYgc3RkOjpmaWxlc3lzdGVtOjppc19zeW1saW5rKHBhdGgsIGVjKSkKKyAgICAgICAg
cGF0aCA9IHN0ZDo6ZmlsZXN5c3RlbTo6cmVhZF9zeW1saW5rKHBhdGgsIGVjKTsKKyAgICByZXR1
cm4gcGF0aDsKK30KKwogU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgaW5w
dXRTdHJpbmcpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXRTdHJpbmcubGVuZ3RoKCk7
CkBAIC02MjMsNSArNjYyLDY1IEBAIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBwYXRoKQogICAgIHJldHVybiAhZWM7CiB9CiAKK09wdGlvbmFsPFdhbGxUaW1lPiBn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgc3RkOjpl
cnJvcl9jb2RlIGVjOworICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IHN0ZDo6ZmlsZXN5c3Rl
bTo6bGFzdF93cml0ZV90aW1lKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCks
IGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHRvV2FsbFRpbWUobW9kaWZpY2F0aW9uVGltZSk7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxG
aWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltbGlua3MoY29u
c3QgU3RyaW5nJiBwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHNob3VsZEZvbGxvd1N5
bWJvbGljTGlua3MpCit7CisgICAgaWYgKHBhdGguaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgc3RkOjpmaWxlc3lzdGVtOjpwYXRoIGZzUGF0aCA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCk7CisKKyAgICBzdGQ6OmVycm9yX2NvZGUg
ZWM7CisgICAgaWYgKHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgPT0gU2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rczo6WWVzICYmIHN0ZDo6ZmlsZXN5c3RlbTo6aXNfc3ltbGluayhmc1BhdGgsIGVj
KSkgeworICAgICAgICBmc1BhdGggPSByZXNvbHZlU3ltbGlua3MoZnNQYXRoLCBlYyk7CisgICAg
ICAgIGlmIChlYykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisg
ICAgZWMgPSB7IH07CisgICAgc3RkOjpmaWxlc3lzdGVtOjpkaXJlY3RvcnlfZW50cnkgZW50cnko
ZnNQYXRoLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gdG9XYWxsVGltZShlbnRyeS5sYXN0X3dyaXRl
X3RpbWUoZWMpKTsKKworICAgIC8vIE5vdGUgdGhhdCB0aGUgcmVzdWx0IG9mIGF0dGVtcHRpbmcg
dG8gZGV0ZXJtaW5lIHRoZSBzaXplIG9mIGEgZGlyZWN0b3J5IGlzIGltcGxlbWVudGF0aW9uLWRl
ZmluZWQuCisgICAgYXV0byBmaWxlU2l6ZSA9IGVudHJ5LmZpbGVfc2l6ZShlYyk7CisgICAgaWYg
KGVjKQorICAgICAgICBmaWxlU2l6ZSA9IDA7CisKKyNpZiBPUyhVTklYKQorICAgIHN0ZDo6Zmls
ZXN5c3RlbTo6cGF0aDo6c3RyaW5nX3R5cGUgZmlsZW5hbWUgPSBmc1BhdGguZmlsZW5hbWUoKTsK
KyAgICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmVtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0g
Jy4nOworI2Vsc2UKKyAgICBib29sIGlzSGlkZGVuID0gZmFsc2U7CisjZW5kaWYKKyAgICBGaWxl
TWV0YWRhdGE6OlR5cGUgdHlwZSA9IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKKyAgICBpZiAo
ZW50cnkuaXNfc3ltbGluayhlYykpCisgICAgICAgIHR5cGUgPSBGaWxlTWV0YWRhdGE6OlR5cGU6
OlN5bWJvbGljTGluazsKKyAgICBlbHNlIGlmIChlbnRyeS5pc19kaXJlY3RvcnkoZWMpKQorICAg
ICAgICB0eXBlID0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CisKKyAgICByZXR1cm4g
RmlsZU1ldGFkYXRhIHsgbW9kaWZpY2F0aW9uVGltZSwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihm
aWxlU2l6ZSksIGlzSGlkZGVuLCB0eXBlIH07Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4g
ZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFk
YXRhUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1saW5rcyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xp
Y0xpbmtzOjpObyk7Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9s
bG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBmaWxlTWV0
YWRhdGFQb3RlbnRpYWxseUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgsIFNob3VsZEZvbGxvd1N5bWJv
bGljTGlua3M6Olllcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXgg
NjNkNWRhZjFhOTk0ZmY3MjBjYzk0MzAzYzFmM2M1MmJhNDRlNDA4My4uNmRmYmE1MWYyMjhlOGRh
YmFiNWJhM2U5MTg3YTNlODI4NjFhOWY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xp
Yi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVt
R2xpYi5jcHAKQEAgLTE1Miw1MSArMTUyLDYgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVD
cmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQog
Ci1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7Ci0gICAgaWYgKCFnZXRGaWxlU3Rh
dChwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAg
ICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpOwot
fQotCi1zdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoR1N0YXRCdWYg
c3RhdFJlc3VsdCkKLXsKLSAgICBpZiAoU19JU0RJUihzdGF0UmVzdWx0LnN0X21vZGUpKQotICAg
ICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKFNfSVNM
Tksoc3RhdFJlc3VsdC5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlw
ZTo6U3ltYm9saWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19
Ci0KLXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rp
b24oY29uc3QgU3RyaW5nJiBwYXRoLCBib29sICgqc3RhdEZ1bmMpKGNvbnN0IFN0cmluZyYsIEdT
dGF0QnVmKikpCi17Ci0gICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKLSAgICBpZiAoIXN0YXRGdW5j
KHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAg
IFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKLSAgICBib29sIGlzSGlk
ZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7Ci0KLSAgICBy
ZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0
YXRSZXN1bHQuc3RfbXRpbWUpLAotICAgICAgICBzdGF0UmVzdWx0LnN0X3NpemUsCi0gICAgICAg
IGlzSGlkZGVuLAotICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKHN0YXRSZXN1bHQpCi0gICAgfTsK
LX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRG
aWxlTFN0YXQpOwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxv
d2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFk
YXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0RmlsZVN0YXQpOwotfQotCiBTdHJpbmcgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21w
b25lbnQpCiB7CiAgICAgaWYgKHBhdGguZW5kc1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggYmZlOGZhYmI2YmZjNjcw
ZTRlZTRiMzBkOGIzYzQ4ZTQ3OWRjNWQyMy4uODgyMzhmZTgwZGU0ZDliMTA4MDdiNTkyY2NlNTU3
YjBhMDI5ZjE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBA
IC0xODYsNjEgKzE4Niw2IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1l
KGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIENTdHJpbmcg
ZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVw
LmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0gICAgaWYgKHN0YXQoZnNS
ZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSk7Ci19
Ci0KLXN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShzdHJ1Y3Qgc3Rh
dCBmaWxlSW5mbykKLXsKLSAgICBpZiAoU19JU0RJUihmaWxlSW5mby5zdF9tb2RlKSkKLSAgICAg
ICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwotICAgIGlmIChTX0lTTE5L
KGZpbGVJbmZvLnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpT
eW1ib2xpY0xpbms7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQot
c3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihj
b25zdCBTdHJpbmcmIHBhdGgsIGludCAoKnN0YXRGdW5jKShjb25zdCBjaGFyKiwgc3RydWN0IHN0
YXQqKSkKLXsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOwotCi0gICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5m
bzsKLSAgICBpZiAoc3RhdEZ1bmMoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVO
YW1lKHBhdGgpOwotICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZp
bGVuYW1lWzBdID09ICcuJzsKLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2Fs
bFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKSwKLSAgICAgICAgZmlsZUlu
Zm8uc3Rfc2l6ZSwKLSAgICAgICAgaXNIaWRkZW4sCi0gICAgICAgIHRvRmlsZU1ldGF0YVR5cGUo
ZmlsZUluZm8pCi0gICAgfTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRh
dGEoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1
bmN0aW9uKHBhdGgsICZsc3RhdCk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1l
dGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVy
biBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZzdGF0KTsKLX0KLQogU3RyaW5nIHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
Y29tcG9uZW50KQogewogICAgIGlmIChwYXRoLmVuZHNXaXRoKCcvJykpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggZmQ1OWYxOTAzZTZlMWZlODRkMTU4ZDU3NWE5NjI5ZWFi
OTAwYzlkNS4uNDc5MDZjN2M2YzYxZWViZjQ5ZDk3ZGNlN2VkYWNmYjI1MmFmN2M5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtMTE0LDE3ICsxMTQsNiBAQCBib29sIGdl
dEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcmIHNpemUp
CiAgICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0
dXJlKGZpbGVJbmZvcm1hdGlvbiwgc2l6ZSk7CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklO
RF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHRpbWVfdCB0aW1lID0gMDsKLSAg
ICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGltZSk7Ci0g
ICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lKTsKLX0KLQogT3B0aW9uYWw8
V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAg
IFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CkBAIC0xNTQsNjMgKzE0Myw2IEBAIHN0YXRpYyBT
dHJpbmcgZ2V0RmluYWxQYXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIFN0
cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlz
U3ltYm9saWNMaW5rKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCi17Ci0gICAgcmV0dXJuIGZp
bmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UICYm
IGZpbmREYXRhLmR3UmVzZXJ2ZWQwID09IElPX1JFUEFSU0VfVEFHX1NZTUxJTks7Ci19Ci0KLXN0
YXRpYyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YWRhdGFUeXBlKFdJTjMyX0ZJTkRfREFU
QVcgZmluZERhdGEpCi17Ci0gICAgaWYgKGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxF
X0FUVFJJQlVURV9ESVJFQ1RPUlkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6
OkRpcmVjdG9yeTsKLSAgICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERhdGEpKQotICAgICAgICBy
ZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0gICAgcmV0dXJuIEZpbGVN
ZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4g
ZmluZERhdGFUb0ZpbGVNZXRhZGF0YShXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQotewotICAg
IGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShmaW5k
RGF0YSwgbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHRpbWVf
dCBtb2RpZmljYXRpb25UaW1lOwotICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmRE
YXRhKGZpbmREYXRhLCBtb2RpZmljYXRpb25UaW1lKTsKLQotICAgIHJldHVybiBGaWxlTWV0YWRh
dGEgewotICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9uVGltZSks
Ci0gICAgICAgIGxlbmd0aCwKLSAgICAgICAgc3RhdGljX2Nhc3Q8Ym9vbD4oZmluZERhdGEuZHdG
aWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0hJRERFTiksCi0gICAgICAgIHRvRmlsZU1l
dGFkYXRhVHlwZShmaW5kRGF0YSkKLSAgICB9OwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+
IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRB
VyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBmaW5kRGF0YVRvRmlsZU1ldGFk
YXRhKGZpbmREYXRhKTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFG
b2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9E
QVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGlmIChpc1N5bWJvbGljTGluayhmaW5k
RGF0YSkpIHsKLSAgICAgICAgU3RyaW5nIHRhcmdldFBhdGggPSBnZXRGaW5hbFBhdGhOYW1lKHBh
dGgpOwotICAgICAgICBpZiAodGFyZ2V0UGF0aC5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGlmICghZ2V0RmluZERhdGEodGFyZ2V0UGF0aCwgZmlu
ZERhdGEpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Ci19Ci0KIFN0cmluZyBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNv
bXBvbmVudCkKIHsKICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTNjNzg0ODEzNjBl
MTc5YzMwMjhmYzljN2E5ZWI2MGEyNWFlMDllNC4uMDBiOTM5OGQ0YmMxMjhlNWNlYjM3MTRiNGM0
YzY5YTZlZDMwYmY0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpmaWxlTWV0YWRhdGEoKSAm
IEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzNjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJ
IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpydW5HZXRGaWxlTW9kaWZpY2F0aW9uVGltZVRlc3QpOgorCiAyMDIxLTA1
LTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyNzY5ODUuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Zp
bGVTeXN0ZW0uY3BwCmluZGV4IDhiNzNhZjFlODhkYWYyYmJlZGU2MjkzNmJhYzg3ZmMyZTRkODY4
OGMuLjlkYTY2Mzk5MmJlMDlhNmNmNGNjMTM4YmE3NmRjY2JjZjBmZDc3ODEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSAiVXRp
bGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTE0MiwxOSArMTQz
LDk0IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgRmlsZXNIYXZlU2FtZVZvbHVtZSkKICAgICBF
WFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKGJhbmdDb250YWluaW5n
RmlsZVBhdGgoKSwgcXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSkpOwogfQogCi1URVNUX0YoRmls
ZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0YVN5bWxpbmspCitURVNUX0YoRmlsZVN5c3RlbVRl
c3QsIEdldEZpbGVNZXRhZGF0YUZpbGVTeW1saW5rKQogewogICAgIGF1dG8gc3ltbGlua01ldGFk
YXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CiAg
ICAgQVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9U
UlVFKHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpT
eW1ib2xpY0xpbmspOwotICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxzaXplX3Q+KHN5bWxp
bmtNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkp
OworICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6
OlR5cGU6OlN5bWJvbGljTGluayk7CisgICAgRVhQRUNUX0ZBTFNFKHN5bWxpbmtNZXRhZGF0YS0+
aXNIaWRkZW4pOworICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PHNpemVfdD4oc3ltbGlua01l
dGFkYXRhLT5sZW5ndGgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKIAogICAgIGF1
dG8gdGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1s
aW5rcyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwogICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFk
YXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLnZhbHVlKCku
dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOwotICAgIEVYUEVDVF9FUShzdHJsZW4o
RmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS52
YWx1ZSgpLmxlbmd0aCkpOworICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLT50eXBlID09
IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7CisgICAgRVhQRUNUX0ZBTFNFKHRhcmdldE1ldGFk
YXRhLT5pc0hpZGRlbik7CisgICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEp
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdldE1ldGFkYXRhLT5sZW5ndGgpKTsKKworICAgIGF1
dG8gYWN0dWFsVGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVtcEZp
bGVQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKGFjdHVhbFRhcmdldE1ldGFkYXRhLmhhc1ZhbHVl
KCkpOworICAgIEVYUEVDVF9UUlVFKGFjdHVhbFRhcmdldE1ldGFkYXRhLT50eXBlID09IEZpbGVN
ZXRhZGF0YTo6VHlwZTo6RmlsZSk7CisgICAgRVhQRUNUX0VRKHRhcmdldE1ldGFkYXRhLT5tb2Rp
ZmljYXRpb25UaW1lLCBhY3R1YWxUYXJnZXRNZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSk7Cisg
ICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHRhcmdldE1ldGFkYXRhLT5sZW5ndGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYWN0dWFsVGFy
Z2V0TWV0YWRhdGEtPmlzSGlkZGVuKTsKIH0KIAorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRG
aWxlTWV0YWRhdGFTeW1saW5rVG9GaWxlU3ltbGluaykKK3sKKyAgICAvLyBDcmVhdGUgYSBzeW1i
b2xpYyBsaW5rIHBvaW50aW5nIHRoZSB0ZW1wRmlsZVN5bWxpbmtQYXRoKCkuCisgICAgYXV0byBz
eW1saW5rVG9TeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJzeW1saW5rVG9TeW1saW5rIik7CisgICAgRVhQRUNU
X1RSVUUoRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKHRlbXBGaWxlU3ltbGlua1BhdGgo
KSwgc3ltbGlua1RvU3ltbGlua1BhdGgpKTsKKworICAgIGF1dG8gc3ltbGlua01ldGFkYXRhID0g
RmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHN5bWxpbmtUb1N5bWxpbmtQYXRoKTsKKyAgICBBU1NF
UlRfVFJVRShzeW1saW5rTWV0YWRhdGEuaGFzVmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUoc3lt
bGlua01ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsK
KyAgICBFWFBFQ1RfRkFMU0Uoc3ltbGlua01ldGFkYXRhLT5pc0hpZGRlbik7CisKKyAgICBhdXRv
IHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlu
a3Moc3ltbGlua1RvU3ltbGlua1BhdGgpOworICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRh
Lmhhc1ZhbHVlKCkpOworICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLT50eXBlID09IEZp
bGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7CisgICAgRVhQRUNUX0ZBTFNFKHRhcmdldE1ldGFkYXRh
LT5pc0hpZGRlbik7CisgICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdldE1ldGFkYXRhLT5sZW5ndGgpKTsKKworICAgIEVYUEVD
VF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3ltbGlua1RvU3ltbGlua1BhdGgpKTsKK30K
KworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFEaXJlY3RvcnlTeW1saW5r
KQoreworICAgIGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRh
KHRlbXBFbXB0eUZvbGRlclN5bWxpbmtQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtN
ZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEtPnR5
cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOworICAgIEVYUEVDVF9GQUxT
RShzeW1saW5rTWV0YWRhdGEtPmlzSGlkZGVuKTsKKworICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEg
PSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRW1wdHlGb2xk
ZXJTeW1saW5rUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0YS5oYXNWYWx1
ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0YXJnZXRNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRh
dGE6OlR5cGU6OkRpcmVjdG9yeSk7CisgICAgRVhQRUNUX0ZBTFNFKHRhcmdldE1ldGFkYXRhLT5p
c0hpZGRlbik7CisKKyAgICBhdXRvIGFjdHVhbFRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6
ZmlsZU1ldGFkYXRhKHRlbXBFbXB0eUZvbGRlclBhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUoYWN0
dWFsVGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUoYWN0dWFsVGFy
Z2V0TWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3RvcnkpOworICAg
IEVYUEVDVF9FUSh0YXJnZXRNZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSwgYWN0dWFsVGFyZ2V0
TWV0YWRhdGEtPm1vZGlmaWNhdGlvblRpbWUpOworICAgIEVYUEVDVF9FUSh0YXJnZXRNZXRhZGF0
YS0+bGVuZ3RoLCBhY3R1YWxUYXJnZXRNZXRhZGF0YS0+bGVuZ3RoKTsKKyAgICBFWFBFQ1RfRkFM
U0UoYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPmlzSGlkZGVuKTsKK30KKworVEVTVF9GKEZpbGVTeXN0
ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFGaWxlRG9lc05vdEV4aXN0KQoreworICAgIGF1dG8gZG9l
c05vdEV4aXN0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1w
RW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCIpOworICAgIGF1dG8gbWV0YWRhdGEg
PSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoZG9lc05vdEV4aXN0UGF0aCk7CisgICAgRVhQRUNU
X1RSVUUoIW1ldGFkYXRhKTsKK30KKworI2lmIE9TKFVOSVgpCitURVNUX0YoRmlsZVN5c3RlbVRl
c3QsIEdldEZpbGVNZXRhZGF0YUhpZGRlbkZpbGUpCit7CisgICAgYXV0byBoaWRkZW5GaWxlUGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQ
YXRoKCksICIuaGlkZGVuRmlsZSIpOworICAgIGF1dG8gZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKGhpZGRlbkZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRl
KTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUp
KTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBGaWxlU3lzdGVtVGVz
dERhdGEsIHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZUhhbmRsZSk7CisKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6Zmls
ZU1ldGFkYXRhKGhpZGRlbkZpbGVQYXRoKTsKKyAgICBBU1NFUlRfVFJVRShtZXRhZGF0YS5oYXNW
YWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShtZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6
OlR5cGU6OkZpbGUpOworICAgIEVYUEVDVF9UUlVFKG1ldGFkYXRhLT5pc0hpZGRlbik7CisgICAg
RVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KG1ldGFkYXRhLT5sZW5ndGgpKTsKKworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoaGlkZGVuRmlsZVBhdGgpKTsKK30KKyNlbmRpZgorCiBURVNUX0YoRmlsZVN5c3RlbVRl
c3QsIFVuaWNvZGVEaXJlY3RvcnlOYW1lKQogewogICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpm
cm9tVVRGOCgiL3Rlc3QvYVx1MDMwOGxvL3Rlc3QudHh0Iik7CkBAIC01MjgsNCArNjA0LDUyIEBA
IFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgY3JlYXRlSGFyZExpbmtPckNvcHlGaWxlKQogICAgIEVY
UEVDVF9FUShsaW5rRmlsZVNpemUsIGZpbGVTaXplKTsKIH0KIAorc3RhdGljIHZvaWQgcnVuR2V0
RmlsZU1vZGlmaWNhdGlvblRpbWVUZXN0KGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248T3B0
aW9uYWw8V2FsbFRpbWU+KGNvbnN0IFN0cmluZyYpPiYmIGdldEZpbGVNb2RpZmljYXRpb25UaW1l
KQoreworICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IGdldEZpbGVNb2RpZmljYXRpb25UaW1l
KHBhdGgpOworICAgIEVYUEVDVF9UUlVFKCEhbW9kaWZpY2F0aW9uVGltZSk7CisgICAgaWYgKCFt
b2RpZmljYXRpb25UaW1lKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCB0aW1lb3V0
ID0gMDsKKyAgICB3aGlsZSAoKm1vZGlmaWNhdGlvblRpbWUgPj0gV2FsbFRpbWU6Om5vdygpICYm
ICsrdGltZW91dCA8IDIwKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjEp
OworICAgIEVYUEVDVF9MVChtb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZh
bHVlKCksIFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOworCisg
ICAgYXV0byB0aW1lQmVmb3JlTW9kaWZpY2F0aW9uID0gV2FsbFRpbWU6Om5vdygpOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMik7CisKKyAgICAvLyBNb2RpZnkgdGhlIGZpbGUu
CisgICAgYXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5
c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9G
aWxlKGZpbGVIYW5kbGUsICJmb28iLCBzdHJsZW4oImZvbyIpKTsKKyAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUoZmlsZUhhbmRsZSk7CisKKyAgICBhdXRvIG5ld01vZGlmaWNhdGlvblRpbWUgPSBn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoKTsKKyAgICBFWFBFQ1RfVFJVRSghIW5ld01vZGlm
aWNhdGlvblRpbWUpOworICAgIGlmICghbmV3TW9kaWZpY2F0aW9uVGltZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgRVhQRUNUX0dUKG5ld01vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVw
b2NoKCkudmFsdWUoKSwgbW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1
ZSgpKTsKKyAgICBFWFBFQ1RfR1QobmV3TW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBv
Y2goKS52YWx1ZSgpLCB0aW1lQmVmb3JlTW9kaWZpY2F0aW9uLnNlY29uZHNTaW5jZUVwb2NoKCku
dmFsdWUoKSk7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgZ2V0RmlsZU1vZGlmaWNhdGlv
blRpbWUpCit7CisgICAgcnVuR2V0RmlsZU1vZGlmaWNhdGlvblRpbWVUZXN0KHRlbXBGaWxlUGF0
aCgpLCBbXShjb25zdCBTdHJpbmcmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgpOworICAgIH0pOworfQorCitURVNUX0YoRmls
ZVN5c3RlbVRlc3QsIGdldEZpbGVNb2RpZmljYXRpb25UaW1lVmlhRmlsZU1ldGFkYXRhKQorewor
ICAgIHJ1bkdldEZpbGVNb2RpZmljYXRpb25UaW1lVGVzdCh0ZW1wRmlsZVBhdGgoKSwgW10oY29u
c3QgU3RyaW5nJiBwYXRoKSAtPiBPcHRpb25hbDxXYWxsVGltZT4geworICAgICAgICBhdXRvIG1l
dGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHBhdGgpOworICAgICAgICBpZiAoIW1l
dGFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IG1ldGFkYXRhLT5tb2RpZmljYXRpb25UaW1lOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGRlODAxN2IxYmRhMGZhODVkZDYxMjEyOTI1NTNhN2M1
Zjk0MmYyMy4uYzVkMWIwYTA0YmFlOTQ4ODUyNTcyOTA0YTI4YjNjMGI4OTVjYmJlMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpmaWxlTWV0YWRhdGEoKSAmIEZpbGVzeXN0
ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzNjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHRlc3RpbmcgdGhl
IHNpemUgb2YgYSBkaXJlY3RvcnkgaW4gdGhlIGRhdGEgdHJhbnNmZXIgQVBJIGFzIHRoZSByZXN1
bHQgaXMgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMuCisgICAgICAgIE9uIG1hY09TLCB3ZSB1c2Vk
IHRvIHJldHVybiAyNTYgb24gYXBmcyBhbmQgMjcyIG9uIEhGUysuIFdlIG5vdyByZXR1cm4gMCwg
d2hpY2ggaXMgd2hhdCBGaXJlZm94IGRvZXMuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZW50cmllcy1hcGkvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFu
c2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zp
bGUvZW50cmllcy1hcGkvZHJhZy1mb2xkZXItd2Via2l0RW50cmllcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVu
dHJpZXMuaHRtbDoKKwogMjAyMS0wNS0wNCAgVHlsZXIgV2lsY29jayAgPHR3aWxjby5vQHByb3Rv
bm1haWwuY29tPgogCiAgICAgICAgIEltcG9ydCB3ZWJzdG9yYWdlIFdQVHMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXIt
aXRlbXMtZHJvcC1nZXRBc0VudHJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5
LWV4cGVjdGVkLnR4dAppbmRleCA3MTBhNTcyMjA1ZDhiMzQ0MjAwZDI4NWE3NTNiNTNjNzMzZDhi
NzZkLi5mZmUwZThiMzkwNDdjNWZjNWRkYzBjODU4MmY5MDYwMWQyZjQ1MThkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW50cmllcy1hcGkvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFz
RW50cnktZXhwZWN0ZWQudHh0CkBAIC0xNiw3ICsxNiw2IEBAIFBBU1MgZmlyc3RFbnRyeS5mdWxs
UGF0aCBpcyAiL3Rlc3QudHh0IgogUEFTUyBzZWNvbmREYXRhVHJhbnNmZXJJdGVtLmtpbmQgaXMg
ImZpbGUiCiBQQVNTIHNlY29uZERhdGFUcmFuc2Zlckl0ZW0udHlwZSBpcyAiIgogUEFTUyBzZWNv
bmRGaWxlLm5hbWUgaXMgInRlc3RGaWxlcyIKLVBBU1Mgc2Vjb25kRmlsZS5zaXplIGlzIG9uZSBv
ZiBgMjcyYCwgYW5kIGAyNTZgCiBQQVNTIHNlY29uZEZpbGUudHlwZSBpcyAiIgogUEFTUyBzZWNv
bmRFbnRyeS5pc0RpcmVjdG9yeSBpcyB0cnVlCiBQQVNTIHNlY29uZEVudHJ5LmlzRmlsZSBpcyBm
YWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMt
YXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1n
ZXRBc0VudHJ5Lmh0bWwKaW5kZXggMTAxODhmYTQ1N2I0OWI0OTE0ZmU0M2E1YzMyY2VmN2JkZWNh
NTU0OC4uOWNmZTEwM2FiMjBjMGM5ZDFiMGUxMWNhOGIyNjA2NmMxMWJhODBjYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZW50cmllcy1hcGkvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS5o
dG1sCkBAIC0zNyw3ICszNyw2IEBAIGRyb3B6b25lLm9uZHJvcCA9IGZ1bmN0aW9uKGUpIHsKICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlY29uZERhdGFUcmFuc2Zlckl0ZW0udHlwZSIsICIi
KTsKICAgICBzZWNvbmRGaWxlID0gc2Vjb25kRGF0YVRyYW5zZmVySXRlbS5nZXRBc0ZpbGUoKTsK
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlY29uZEZpbGUubmFtZSIsICJ0ZXN0RmlsZXMi
KTsKLSAgICBzaG91bGRCZU9uZU9mVmFsdWVzKCJzZWNvbmRGaWxlLnNpemUiLCBbMjcyLCAyNTZd
KTsgLy8gQ2hyb21lIHJldHVybnMgZm9sZGVyIHNpemUsIEZpcmVmb3ggcmV0dXJucyAwLiAyNTYg
aW4gQVBGUywgMjcyIGluIEhGUysgCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWNvbmRG
aWxlLnR5cGUiLCAiIik7CiAKICAgICBzZWNvbmRFbnRyeSA9IHNlY29uZERhdGFUcmFuc2Zlckl0
ZW0ud2Via2l0R2V0QXNFbnRyeSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdl
YmtpdEVudHJpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDE4ZjdlNDQyNmNhYWM3NTU5OTEyZWUyNjYy
YmMyODA5MTlhZjcxMWUuLmVhOWNiZjU4NjYyMzUzNTMxZWIwMzU5Mzk5M2Y5NDZiNGU0NGYyNDYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9kcmFn
LWZvbGRlci13ZWJraXRFbnRyaWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvZHJhZy1mb2xkZXItd2Via2l0RW50cmllcy1leHBlY3Rl
ZC50eHQKQEAgLTE2LDcgKzE2LDYgQEAgUEFTUyBmaWxlc1swXS5uYW1lIGlzICJ0ZXN0LnR4dCIK
IFBBU1MgZmlsZXNbMF0uc2l6ZSBpcyA1CiBQQVNTIGZpbGVzWzBdLnR5cGUgaXMgInRleHQvcGxh
aW4iCiBQQVNTIGZpbGVzWzFdLm5hbWUgaXMgInRlc3RGaWxlcyIKLVBBU1MgZmlsZXNbMV0uc2l6
ZSBpcyBvbmUgb2YgYDI3MmAsIGFuZCBgMjU2YAogUEFTUyBmaWxlc1sxXS50eXBlIGlzICIiCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvZHJhZy1mb2xkZXIt
d2Via2l0RW50cmllcy5odG1sCmluZGV4IDhkNjI4ZTRiYjc1MjVlMmM2MGE2OWYxMTQ3OTNhNWJi
NzgzZWE3NDIuLmIxODAxNTFkMWY1OWU3MjM0ZGI3NzA3MGQ0MmM2YzQ4ZGJhOGU2MGMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9kcmFnLWZvbGRl
ci13ZWJraXRFbnRyaWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2Vu
dHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMuaHRtbApAQCAtNDgsNyArNDgsNiBA
QCBmdW5jdGlvbiBjaGFuZ2VkKGV2ZW50KQogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmls
ZXNbMF0udHlwZSIsICJ0ZXh0L3BsYWluIik7CiAKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImZpbGVzWzFdLm5hbWUiLCAidGVzdEZpbGVzIik7Ci0gICAgc2hvdWxkQmVPbmVPZlZhbHVlcygi
ZmlsZXNbMV0uc2l6ZSIsIFsyNzIsIDI1Nl0pOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZmlsZXNbMV0udHlwZSIsICIiKTsKIAogICAgIGZpbmlzaEpTVGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427916</attachid>
            <date>2021-05-06 11:56:20 -0700</date>
            <delta_ts>2021-05-06 16:44:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225362-20210506115619.patch</filename>
            <type>text/plain</type>
            <size>30707</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YzExZjBhMWNkNzdmNjEyNjlkYWQ3M2NkNzNiOGQyMGYxOWU2YzBlLi4yZjA2NzVlMjAwMjhkZTBm
YzNjNjUxYTNjYWRiYWZmYzY1MmZhMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisKIDIwMjEtMDUtMDYg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZvcmJpZCBmdXJ0aGVy
IGV4ZWN1dGlvbiBpbiBqc2Mgc2hlbGwgaWYgZXhlY3V0aW9uIGlzIHRlcm1pbmF0ZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IGJjMDFkNzNkZWRlNDBiOGY2ODJmNDdlYzE3N2VmMDMzYzY4ZjBkZGMuLjQwZDkyZmRkYzFmY2E2
MWFjMjA1YmFiNDhkOTYzOGQ5NmRiOTNlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDUt
MDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQb3J0IEZpbGVz
eXN0ZW06OmZpbGVNZXRhZGF0YSgpICYgRmlsZXN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNTM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lz
dGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAg
ICBhbmQgZ2V0IHJpZCBvZiBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuCisKKyAg
ICAgICAgKiB3dGYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBs
Ojp0b1dhbGxUaW1lKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmZpbGVNZXRhZGF0
YSk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiB3dGYvZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHA6CisgICAgICAgICogd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6
CisgICAgICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKwogMjAyMS0wNS0wNiAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYlhSXSBBZGQgSU9TdXJm
YWNlIHRvIEZyYW1lRGF0YTo6TGF5ZXJEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKaW5kZXgg
NWZiNTYwMTVmYmQwODg3OWEwZGJjOWFiNzUyZDEzZDJmMTQzMzg4OC4uM2E1ZGE0M2M2M2RhNWRm
YjU3NDFiYjQwNmZlNGU1OWIxYThiNWMzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpAQCAt
MjcsNyArMjcsNyBAQCBERUZJTkVTX01PRFVMRSA9IFlFUzsKIE1PRFVMRU1BUF9GSUxFID0gJChT
UkNST09UKS9KYXZhU2NyaXB0Q29yZS5tb2R1bGVtYXA7CiAKIC8vIFByZXZlbnQgQysrIHN0YW5k
YXJkIGxpYnJhcnkgb3BlcmF0b3IgbmV3LCBkZWxldGUgYW5kIHRoZWlyIHJlbGF0ZWQgZXhjZXB0
aW9uIHR5cGVzIGZyb20gYmVpbmcgZXhwb3J0ZWQgYXMgd2VhayBzeW1ib2xzLgotT1RIRVJfTERG
TEFHU19ISURFX1NZTUJPTFMgPSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRJU3Q5YmFkX2Fs
bG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDlleGNlcHRpb24gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pUU1N0OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRT
U3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aZGxQdlNfIC1XbCwtdW5leHBv
cnRlZF9zeW1ib2wsX19abndtUHYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThm
dW5jdGlvbklGdnZFRWNsRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0
aW9uSUZ2dkVFQzFFT1MyXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rp
b25JRnZ2RUVDMkVPUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTktTdDNfXzE4ZnVuY3Rp
b25JRnZSTjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9yRVBOUzFfMTBSZWdpc3RlcklERUVFY2xFUzNf
UzVfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3
Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVEMUV2IC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JF
UE5TMV8xMFJlZ2lzdGVySURFRUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19f
MThmdW5jdGlvbklGdnZFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1
bmN0aW9uSUZ2dkVFRDJFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRWTlN0M19fMTE3YmFk
X2Z1bmN0aW9uX2NhbGxFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBm
aWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJUEtjUzRfY0xiMUVFMTFfX3Jhbmdl
X2VuZEVTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxM19fcmFuZ2VfYmVnaW5F
UzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9Q
YXRoQ1ZUSWNFMTRfX2FwcGVuZF9yYW5nZUlQS2NFRU5TXzllbmFibGVfaWZJWHNyMjdfX2lzX2Nw
cDE3X2ZvcndhcmRfaXRlcmF0b3JJVF9FRTV2YWx1ZUV2RTR0eXBlRVJOU18xMmJhc2ljX3N0cmlu
Z0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUzhfUzhfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVf
X2FwcGVuZF9zb3VyY2VJUEtjRUV2Uk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRz
SWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVSS1RfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0
M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTRfX2FwcGVuZF9yYW5nZUlQS2NFRU5T
XzllbmFibGVfaWZJWHNyMjFfX2lzX2ZvcndhcmRfaXRlcmF0b3JJVF9FRTV2YWx1ZUV2RTR0eXBl
RVJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNF
RUVFUzhfUzhfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTktTdDNfXzE0X19mczEwZmlsZXN5
c3RlbTE4ZGlyZWN0b3J5X2l0ZXJhdG9yZGVFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5T
dDNfXzE0X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0b3J5X2l0ZXJhdG9ycHBFdiAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9j
aGFyX2FycmF5SUExMF9jUGNjTGIxRUUxMV9fcmFuZ2VfZW5kRVBLYyAtV2wsLXVuZXhwb3J0ZWRf
c3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2Fy
cmF5SUExMF9jUGNjTGIxRUUxM19fcmFuZ2VfYmVnaW5FUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtNHBhdGhkVkVSS1MyXyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbThfUGF0aENWVEljRTE1X19hcHBl
bmRfc291cmNlSUExMF9jRUV2Uk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNF
RU5TXzlhbGxvY2F0b3JJY0VFRUVSS1RfOworT1RIRVJfTERGTEFHU19ISURFX1NZTUJPTFMgPSAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRJU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wsX19aVElTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUU1N0OWJh
ZF9hbGxvYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5ZXhjZXB0aW9uIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wsX19aZGxQdlNfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19abndtUHYg
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdnZFRWNsRXYgLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVFQzFFT1MyXyAtV2ws
LXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVDMkVPUzJfIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wsX19aTktTdDNfXzE4ZnVuY3Rpb25JRnZSTjNKU0MxN0J5dGVjb2Rl
R2VuZXJhdG9yRVBOUzFfMTBSZWdpc3RlcklERUVFY2xFUzNfUzVfIC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5T
MV8xMFJlZ2lzdGVySURFRUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThm
dW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVE
MkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdnZFRUQxRXYg
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVFRDJFdiAtV2ws
LXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRWTlN0M19fMTE3YmFkX2Z1bmN0aW9uX2NhbGxFIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhh
YmxlX2NoYXJfYXJyYXlJUEtjUzRfY0xiMUVFMTFfX3JhbmdlX2VuZEVTNF8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hh
cl9hcnJheUlQS2NTNF9jTGIxRUUxM19fcmFuZ2VfYmVnaW5FUzRfIC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTRfX2FwcGVuZF9y
YW5nZUlQS2NFRU5TXzllbmFibGVfaWZJWHNyMjdfX2lzX2NwcDE3X2ZvcndhcmRfaXRlcmF0b3JJ
VF9FRTV2YWx1ZUV2RTR0eXBlRVJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0lj
RUVOU185YWxsb2NhdG9ySWNFRUVFUzhfUzhfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0
M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VJUEtjRUV2
Uk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VF
RUVSS1RfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVt
OF9QYXRoQ1ZUSWNFMTRfX2FwcGVuZF9yYW5nZUlQS2NFRU5TXzllbmFibGVfaWZJWHNyMjFfX2lz
X2ZvcndhcmRfaXRlcmF0b3JJVF9FRTV2YWx1ZUV2RTR0eXBlRVJOU18xMmJhc2ljX3N0cmluZ0lj
TlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUzhfUzhfIC1XbCwtdW5leHBv
cnRlZF9zeW1ib2wsX19aTktTdDNfXzE0X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0b3J5X2l0ZXJh
dG9yZGVFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3Rl
bTE4ZGlyZWN0b3J5X2l0ZXJhdG9ycHBFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNf
XzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SUExMF9jUGNjTGIx
RUUxMV9fcmFuZ2VfZW5kRVBLYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19m
czEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SUExMF9jUGNjTGIxRUUxM19f
cmFuZ2VfYmVnaW5FUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBm
aWxlc3lzdGVtNHBhdGhkVkVSS1MyXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0
X19mczEwZmlsZXN5c3RlbThfUGF0aENWVEljRTE1X19hcHBlbmRfc291cmNlSUExMF9jRUV2Uk5T
XzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVS
S1RfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRf
X3Rocm93X2ZpbGVzeXN0ZW1fZXJyb3JJSlJQS2NSS05TMV80cGF0aEVSS05TXzEwZXJyb3JfY29k
ZUVFRUV2RHBPVF87CiAKIE9USEVSX0xERkxBR1NfQkFTRSA9ICQoT1RIRVJfTERGTEFHU19ISURF
X1NZTUJPTFMpIC1mb3JjZV9sb2FkICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvbGliV1RGLmEiOwogT1RIRVJfTERGTEFHU1tzZGs9ZW1iZWRkZWQq
XSA9ICQoaW5oZXJpdGVkKSAkKE9USEVSX0xERkxBR1NfQkFTRSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3Bw
CmluZGV4IGY3ZDY3NDljYzllYmU1YzkxOTdiZDA4ODAwYWQ2ODI5MjgxZjI5ZGMuLmJkMTc3YWIy
MDBmOWFmZjdmMTA2NWJlNzMwMzczMzg0MzBhZjI3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAKICNpZiAhT1MoV0lORE9XUykKICNpbmNsdWRlIDxzeXMvbW1hbi5o
PgorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjZW5kaWYK
IApAQCAtMTA1LDYgKzEwNiw0MyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRXNjYXBlVUNo
YXIoVUNoYXIgY2hhcmFjdGVyLCBVQ2hhciBwcmV2aW91c0NoYXJhY3RlciwgVQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ2xvY2tUeXBlLCB0eXBlbmFtZSA9IHZv
aWQ+IHN0cnVjdCBoYXNfdG9fdGltZV90IDogc3RkOjpmYWxzZV90eXBlIHsgfTsKK3RlbXBsYXRl
PHR5cGVuYW1lIENsb2NrVHlwZT4gc3RydWN0IGhhc190b190aW1lX3Q8Q2xvY2tUeXBlLCBzdGQ6
OnZvaWRfdDwKKyAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZV92PHN0ZDo6dGltZV90
LCBkZWNsdHlwZShDbG9ja1R5cGU6OnRvX3RpbWVfdChzdGQ6OmZpbGVzeXN0ZW06OmZpbGVfdGlt
ZV90eXBlKCkpKT4+Cis+PiA6IHN0ZDo6dHJ1ZV90eXBlIHsgfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIEZpbGVUaW1lVHlwZT4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8aGFzX3RvX3RpbWVf
dDx0eXBlbmFtZSBGaWxlVGltZVR5cGU6OmNsb2NrPjo6dmFsdWUsIHN0ZDo6dGltZV90PiB0b1Rp
bWVUKEZpbGVUaW1lVHlwZSBmaWxlVGltZSkKK3sKKyAgICByZXR1cm4gZGVjbHR5cGUoZmlsZVRp
bWUpOjpjbG9jazo6dG9fdGltZV90KGZpbGVUaW1lKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IEZpbGVUaW1lVHlwZT4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IWhhc190b190aW1lX3Q8
dHlwZW5hbWUgRmlsZVRpbWVUeXBlOjpjbG9jaz46OnZhbHVlLCBzdGQ6OnRpbWVfdD4gdG9UaW1l
VChGaWxlVGltZVR5cGUgZmlsZVRpbWUpCit7CisgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRvX3RpbWVfdChzdGQ6OmNocm9ubzo6dGltZV9wb2ludF9jYXN0PHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OmR1cmF0aW9uPihmaWxlVGltZSAtIGRlY2x0eXBlKGZpbGVUaW1l
KTo6Y2xvY2s6Om5vdygpICsgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpKTsKK30K
Kworc3RhdGljIFdhbGxUaW1lIHRvV2FsbFRpbWUoc3RkOjpmaWxlc3lzdGVtOjpmaWxlX3RpbWVf
dHlwZSBmaWxlVGltZSkKK3sKKyAgICAvLyBGSVhNRTogVXNlIHN0ZDo6Y2hyb25vOjpmaWxlX2Ns
b2NrOjp0b19zeXMoKSBvbmNlIHdlIGNhbiB1c2UgQysrMjAuCisgICAgcmV0dXJuIFdhbGxUaW1l
Ojpmcm9tUmF3U2Vjb25kcyh0b1RpbWVUKGZpbGVUaW1lKSk7Cit9CisKK3N0YXRpYyBzdGQ6OmZp
bGVzeXN0ZW06OnBhdGggcmVzb2x2ZVN5bWxpbmtzKHN0ZDo6ZmlsZXN5c3RlbTo6cGF0aCBwYXRo
LCBzdGQ6OmVycm9yX2NvZGUmIGVjKQoreworI2lmZGVmIE1BWFNZTUxJTktTCisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhTeW1saW5rRGVwdGggPSBNQVhTWU1MSU5LUzsKKyNlbHNl
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhTeW1saW5rRGVwdGggPSA0MDsKKyNl
bmRpZgorCisgICAgdW5zaWduZWQgY3VycmVudERlcHRoID0gMDsKKyAgICB3aGlsZSAoKytjdXJy
ZW50RGVwdGggPD0gbWF4U3ltbGlua0RlcHRoICYmICFlYyAmJiBzdGQ6OmZpbGVzeXN0ZW06Omlz
X3N5bWxpbmsocGF0aCwgZWMpKQorICAgICAgICBwYXRoID0gc3RkOjpmaWxlc3lzdGVtOjpyZWFk
X3N5bWxpbmsocGF0aCwgZWMpOworICAgIHJldHVybiBwYXRoOworfQorCiBTdHJpbmcgZW5jb2Rl
Rm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmluZykKIHsKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBpbnB1dFN0cmluZy5sZW5ndGgoKTsKQEAgLTYyMyw1ICs2NjEsNjUgQEAgYm9vbCBk
ZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuICFl
YzsKIH0KIAorT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICBzdGQ6OmVycm9yX2NvZGUgZWM7CisgICAgYXV0byBtb2Rp
ZmljYXRpb25UaW1lID0gc3RkOjpmaWxlc3lzdGVtOjpsYXN0X3dyaXRlX3RpbWUoZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gdG9XYWxsVGltZShtb2RpZmljYXRpb25U
aW1lKTsKK30KKworc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhUG90
ZW50aWFsbHlGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgsIFNob3VsZEZvbGxv
d1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcykKK3sKKyAgICBpZiAocGF0
aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBzdGQ6OmZp
bGVzeXN0ZW06OnBhdGggZnNQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRh
dGEoKTsKKworICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKKyAgICBpZiAoc2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rcyA9PSBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMgJiYgc3RkOjpmaWxl
c3lzdGVtOjppc19zeW1saW5rKGZzUGF0aCwgZWMpKSB7CisgICAgICAgIGZzUGF0aCA9IHJlc29s
dmVTeW1saW5rcyhmc1BhdGgsIGVjKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBlYyA9IHsgfTsKKyAgICBzdGQ6OmZpbGVz
eXN0ZW06OmRpcmVjdG9yeV9lbnRyeSBlbnRyeShmc1BhdGgsIGVjKTsKKyAgICBpZiAoZWMpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUg
PSB0b1dhbGxUaW1lKGVudHJ5Lmxhc3Rfd3JpdGVfdGltZShlYykpOworCisgICAgLy8gTm90ZSB0
aGF0IHRoZSByZXN1bHQgb2YgYXR0ZW1wdGluZyB0byBkZXRlcm1pbmUgdGhlIHNpemUgb2YgYSBk
aXJlY3RvcnkgaXMgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4KKyAgICBhdXRvIGZpbGVTaXplID0g
ZW50cnkuZmlsZV9zaXplKGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIGZpbGVTaXplID0gMDsK
KworI2lmIE9TKFVOSVgpCisgICAgc3RkOjpmaWxlc3lzdGVtOjpwYXRoOjpzdHJpbmdfdHlwZSBm
aWxlbmFtZSA9IGZzUGF0aC5maWxlbmFtZSgpOworICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5h
bWUuZW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7CisjZWxzZQorICAgIGJvb2wgaXNIaWRk
ZW4gPSBmYWxzZTsKKyNlbmRpZgorICAgIEZpbGVNZXRhZGF0YTo6VHlwZSB0eXBlID0gRmlsZU1l
dGFkYXRhOjpUeXBlOjpGaWxlOworICAgIGlmIChlbnRyeS5pc19zeW1saW5rKGVjKSkKKyAgICAg
ICAgdHlwZSA9IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOworICAgIGVsc2UgaWYg
KGVudHJ5LmlzX2RpcmVjdG9yeShlYykpCisgICAgICAgIHR5cGUgPSBGaWxlTWV0YWRhdGE6OlR5
cGU6OkRpcmVjdG9yeTsKKworICAgIHJldHVybiBGaWxlTWV0YWRhdGEgeyBtb2RpZmljYXRpb25U
aW1lLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGZpbGVTaXplKSwgaXNIaWRkZW4sIHR5cGUgfTsK
K30KKworT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBw
YXRoKQoreworICAgIHJldHVybiBmaWxlTWV0YWRhdGFQb3RlbnRpYWxseUZvbGxvd2luZ1N5bWxp
bmtzKHBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKTsKK30KKworT3B0aW9uYWw8
RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcm
IHBhdGgpCit7CisgICAgcmV0dXJuIGZpbGVNZXRhZGF0YVBvdGVudGlhbGx5Rm9sbG93aW5nU3lt
bGlua3MocGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9n
bGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCA2M2Q1ZGFmMWE5OTRmZjcyMGNjOTQzMDNjMWYz
YzUyYmE0NGU0MDgzLi42ZGZiYTUxZjIyOGU4ZGFiYWI1YmEzZTkxODdhM2U4Mjg2MWE5ZjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMTUyLDUxICsxNTIsNiBA
QCBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKQog
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgR1N0YXRCdWYgc3Rh
dFJlc3VsdDsKLSAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSk7Ci19Ci0KLXN0YXRpYyBGaWxlTWV0YWRhdGE6OlR5
cGUgdG9GaWxlTWV0YXRhVHlwZShHU3RhdEJ1ZiBzdGF0UmVzdWx0KQotewotICAgIGlmIChTX0lT
RElSKHN0YXRSZXN1bHQuc3RfbW9kZSkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5
cGU6OkRpcmVjdG9yeTsKLSAgICBpZiAoU19JU0xOSyhzdGF0UmVzdWx0LnN0X21vZGUpKQotICAg
ICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0gICAgcmV0dXJu
IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRh
ZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wg
KCpzdGF0RnVuYykoY29uc3QgU3RyaW5nJiwgR1N0YXRCdWYqKSkKLXsKLSAgICBHU3RhdEJ1ZiBz
dGF0UmVzdWx0OwotICAgIGlmICghc3RhdEZ1bmMocGF0aCwgJnN0YXRSZXN1bHQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZp
bGVOYW1lKHBhdGgpOwotICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYm
IGZpbGVuYW1lWzBdID09ICcuJzsKLQotICAgIHJldHVybiBGaWxlTWV0YWRhdGEgewotICAgICAg
ICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSksCi0gICAgICAg
IHN0YXRSZXN1bHQuc3Rfc2l6ZSwKLSAgICAgICAgaXNIaWRkZW4sCi0gICAgICAgIHRvRmlsZU1l
dGF0YVR5cGUoc3RhdFJlc3VsdCkKLSAgICB9OwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+
IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIGZpbGVNZXRh
ZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVMU3RhdCk7Ci19Ci0KLU9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRG
aWxlU3RhdCk7Ci19Ci0KIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKIHsKICAgICBpZiAocGF0aC5lbmRz
V2l0aChHX0RJUl9TRVBBUkFUT1JfUykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcAppbmRleCBiZmU4ZmFiYjZiZmM2NzBlNGVlNGIzMGQ4YjNjNDhlNDc5ZGM1ZDIzLi44
ODIzOGZlODBkZTRkOWIxMDgwN2I1OTJjY2U1NTdiMGEwMjlmMTZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTE4Niw2MSArMTg2LDYgQEAgT3B0aW9uYWw8
V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlm
CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKLQotICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9
PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgc3RydWN0IHN0YXQg
ZmlsZUluZm87Ci0KLSAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKTsKLX0KLQotc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlw
ZSB0b0ZpbGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZvKQotewotICAgIGlmIChTX0lT
RElSKGZpbGVJbmZvLnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBl
OjpEaXJlY3Rvcnk7Ci0gICAgaWYgKFNfSVNMTksoZmlsZUluZm8uc3RfbW9kZSkpCi0gICAgICAg
IHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKLSAgICByZXR1cm4gRmls
ZU1ldGFkYXRhOjpUeXBlOjpGaWxlOwotfQotCi1zdGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRh
PiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgaW50ICgqc3Rh
dEZ1bmMpKGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopKQotewotICAgIENTdHJpbmcgZnNSZXAg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEo
KSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotICAgIGlmIChzdGF0RnVuYyhmc1JlcC5k
YXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBT
dHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7Ci0gICAgYm9vbCBpc0hpZGRl
biA9ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4nOwotICAgIHJldHVy
biBGaWxlTWV0YWRhdGEgewotICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUlu
Zm8uc3RfbXRpbWUpLAotICAgICAgICBmaWxlSW5mby5zdF9zaXplLAotICAgICAgICBpc0hpZGRl
biwKLSAgICAgICAgdG9GaWxlTWV0YXRhVHlwZShmaWxlSW5mbykKLSAgICB9OwotfQotCi1PcHRp
b25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0g
ICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmxzdGF0KTsKLX0KLQot
T3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25z
dCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24o
cGF0aCwgJnN0YXQpOwotfQotCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7CiAgICAgaWYgKHBhdGgu
ZW5kc1dpdGgoJy8nKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVt
V2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBmZDU5
ZjE5MDNlNmUxZmU4NGQxNThkNTc1YTk2MjllYWI5MDBjOWQ1Li40NzkwNmM3YzZjNjFlZWJmNDlk
OTdkY2U3ZWRhY2ZiMjUyYWY3YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmls
ZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
CkBAIC0xMTQsMTcgKzExNCw2IEBAIGJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxl
IGZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgc2l6ZSkKICAgICByZXR1cm4gZ2V0RmlsZVNpemVGcm9t
QnlIYW5kbGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoZmlsZUluZm9ybWF0aW9uLCBzaXplKTsK
IH0KIAotT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0
cmluZyYgcGF0aCkKLXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICgh
Z2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotCi0gICAgdGltZV90IHRpbWUgPSAwOwotICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJv
bUZpbmREYXRhKGZpbmREYXRhLCB0aW1lKTsKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKHRpbWUpOwotfQotCiBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGlt
ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsK
QEAgLTE1NCw2MyArMTQzLDYgQEAgc3RhdGljIFN0cmluZyBnZXRGaW5hbFBhdGhOYW1lKGNvbnN0
IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikp
OwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNTeW1ib2xpY0xpbmsoV0lOMzJfRklORF9EQVRB
VyBmaW5kRGF0YSkKLXsKLSAgICByZXR1cm4gZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJ
TEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQgJiYgZmluZERhdGEuZHdSZXNlcnZlZDAgPT0gSU9f
UkVQQVJTRV9UQUdfU1lNTElOSzsKLX0KLQotc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0Zp
bGVNZXRhZGF0YVR5cGUoV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YSkKLXsKLSAgICBpZiAoZmlu
ZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKLSAgICAg
ICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwotICAgIGlmIChpc1N5bWJv
bGljTGluayhmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5
bWJvbGljTGluazsKLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOwotfQotCi1z
dGF0aWMgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKFdJTjMy
X0ZJTkRfREFUQVcgZmluZERhdGEpCi17Ci0gICAgbG9uZyBsb25nIGxlbmd0aDsKLSAgICBpZiAo
IWdldEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCBsZW5ndGgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIG1vZGlmaWNhdGlvblRp
bWUpOwotCi0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7Ci0gICAgICAgIFdhbGxUaW1lOjpmcm9t
UmF3U2Vjb25kcyhtb2RpZmljYXRpb25UaW1lKSwKLSAgICAgICAgbGVuZ3RoLAotICAgICAgICBz
dGF0aWNfY2FzdDxib29sPihmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJV
VEVfSElEREVOKSwKLSAgICAgICAgdG9GaWxlTWV0YWRhdGFUeXBlKGZpbmREYXRhKQotICAgIH07
Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0Rmlu
ZERhdGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgcmV0dXJuIGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERhdGEpOwotfQotCi1PcHRpb25h
bDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKLXsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0
RmluZERhdGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgaWYgKGlzU3ltYm9saWNMaW5rKGZpbmREYXRhKSkgewotICAgICAgICBTdHJpbmcgdGFy
Z2V0UGF0aCA9IGdldEZpbmFsUGF0aE5hbWUocGF0aCk7Ci0gICAgICAgIGlmICh0YXJnZXRQYXRo
LmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgaWYg
KCFnZXRGaW5kRGF0YSh0YXJnZXRQYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgIH0KLQotICAgIHJldHVybiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRh
KGZpbmREYXRhKTsKLX0KLQogU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogewogICAgIFZlY3RvcjxVQ2hh
cj4gYnVmZmVyKE1BWF9QQVRIKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAxOGVmZjk2NTM1YTcwZWFiOWQ4YzFjOWEyMWQxMGMwYmVkMDAzMDUx
Li4zOGM1OTU4NDM5ZTk2ZTJjNGM0NDQzMzViZmQ1MDhiMTdkZDFjNmFiIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MjEtMDUtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQb3J0
IEZpbGVzeXN0ZW06OmZpbGVNZXRhZGF0YSgpICYgRmlsZXN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lVGVzdCk6CisKIDIwMjEtMDUtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjcyNDE0Pyk6IFttYWNPU10gVGVzdFdl
YktpdEFQSS5HUFVQcm9jZXNzLkNyYXNoV2hpbGVQbGF5aW5nVmlkZW8gaXMgYSBmbGFreSBmYWls
dXJlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVt
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4
IDhiNzNhZjFlODhkYWYyYmJlZGU2MjkzNmJhYzg3ZmMyZTRkODY4OGMuLjlkYTY2Mzk5MmJlMDlh
NmNmNGNjMTM4YmE3NmRjY2JjZjBmZDc3ODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKICNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSAiVXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTE0MiwxOSArMTQzLDk0IEBAIFRFU1RfRihGaWxl
U3lzdGVtVGVzdCwgRmlsZXNIYXZlU2FtZVZvbHVtZSkKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSwgcXVvdGVD
b250YWluaW5nRmlsZVBhdGgoKSkpOwogfQogCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIEdldEZp
bGVNZXRhZGF0YVN5bWxpbmspCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0
YUZpbGVTeW1saW5rKQogewogICAgIGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6
ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CiAgICAgQVNTRVJUX1RSVUUoc3lt
bGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRhZGF0
YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOwotICAg
IEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgp
Lmxlbmd0aCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworICAgIEVYUEVDVF9UUlVF
KHN5bWxpbmtNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGlu
ayk7CisgICAgRVhQRUNUX0ZBTFNFKHN5bWxpbmtNZXRhZGF0YS0+aXNIaWRkZW4pOworICAgIEVY
UEVDVF9UUlVFKHN0YXRpY19jYXN0PHNpemVfdD4oc3ltbGlua01ldGFkYXRhLT5sZW5ndGgpID09
IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKIAogICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEg
PSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5bWxp
bmtQYXRoKCkpOwogICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc1ZhbHVlKCkpOwot
ICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRh
dGE6OlR5cGU6OkZpbGUpOwotICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRh
KSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkpOwor
ICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlw
ZTo6RmlsZSk7CisgICAgRVhQRUNUX0ZBTFNFKHRhcmdldE1ldGFkYXRhLT5pc0hpZGRlbik7Cisg
ICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHRhcmdldE1ldGFkYXRhLT5sZW5ndGgpKTsKKworICAgIGF1dG8gYWN0dWFsVGFyZ2V0TWV0
YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVtcEZpbGVQYXRoKCkpOworICAgIEFT
U0VSVF9UUlVFKGFjdHVhbFRhcmdldE1ldGFkYXRhLmhhc1ZhbHVlKCkpOworICAgIEVYUEVDVF9U
UlVFKGFjdHVhbFRhcmdldE1ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6Rmls
ZSk7CisgICAgRVhQRUNUX0VRKHRhcmdldE1ldGFkYXRhLT5tb2RpZmljYXRpb25UaW1lLCBhY3R1
YWxUYXJnZXRNZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSk7CisgICAgRVhQRUNUX0VRKHN0cmxl
bihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdldE1ldGFkYXRh
LT5sZW5ndGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPmlzSGlk
ZGVuKTsKIH0KIAorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1saW5r
VG9GaWxlU3ltbGluaykKK3sKKyAgICAvLyBDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5n
IHRoZSB0ZW1wRmlsZVN5bWxpbmtQYXRoKCkuCisgICAgYXV0byBzeW1saW5rVG9TeW1saW5rUGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQ
YXRoKCksICJzeW1saW5rVG9TeW1saW5rIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
Y3JlYXRlU3ltYm9saWNMaW5rKHRlbXBGaWxlU3ltbGlua1BhdGgoKSwgc3ltbGlua1RvU3ltbGlu
a1BhdGgpKTsKKworICAgIGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1l
dGFkYXRhKHN5bWxpbmtUb1N5bWxpbmtQYXRoKTsKKyAgICBBU1NFUlRfVFJVRShzeW1saW5rTWV0
YWRhdGEuaGFzVmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRhLT50eXBl
ID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
c3ltbGlua01ldGFkYXRhLT5pc0hpZGRlbik7CisKKyAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0g
RmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3Moc3ltbGlua1RvU3ltbGlu
a1BhdGgpOworICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc1ZhbHVlKCkpOworICAg
IEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6
RmlsZSk7CisgICAgRVhQRUNUX0ZBTFNFKHRhcmdldE1ldGFkYXRhLT5pc0hpZGRlbik7CisgICAg
RVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KHRhcmdldE1ldGFkYXRhLT5sZW5ndGgpKTsKKworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUoc3ltbGlua1RvU3ltbGlua1BhdGgpKTsKK30KKworVEVTVF9GKEZpbGVTeXN0
ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFEaXJlY3RvcnlTeW1saW5rKQoreworICAgIGF1dG8gc3lt
bGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBFbXB0eUZvbGRlclN5
bWxpbmtQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNWYWx1ZSgp
KTsKKyAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRh
OjpUeXBlOjpTeW1ib2xpY0xpbmspOworICAgIEVYUEVDVF9GQUxTRShzeW1saW5rTWV0YWRhdGEt
PmlzSGlkZGVuKTsKKworICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxl
TWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpKTsK
KyAgICBBU1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBFQ1Rf
VFJVRSh0YXJnZXRNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9y
eSk7CisgICAgRVhQRUNUX0ZBTFNFKHRhcmdldE1ldGFkYXRhLT5pc0hpZGRlbik7CisKKyAgICBh
dXRvIGFjdHVhbFRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBF
bXB0eUZvbGRlclBhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUoYWN0dWFsVGFyZ2V0TWV0YWRhdGEu
aGFzVmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUoYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPnR5cGUg
PT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3RvcnkpOworICAgIEVYUEVDVF9FUSh0YXJnZXRN
ZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSwgYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPm1vZGlmaWNh
dGlvblRpbWUpOworICAgIEVYUEVDVF9FUSh0YXJnZXRNZXRhZGF0YS0+bGVuZ3RoLCBhY3R1YWxU
YXJnZXRNZXRhZGF0YS0+bGVuZ3RoKTsKKyAgICBFWFBFQ1RfRkFMU0UoYWN0dWFsVGFyZ2V0TWV0
YWRhdGEtPmlzSGlkZGVuKTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0
YWRhdGFGaWxlRG9lc05vdEV4aXN0KQoreworICAgIGF1dG8gZG9lc05vdEV4aXN0UGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCks
ICJkb2VzLW5vdC1leGlzdCIpOworICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxl
TWV0YWRhdGEoZG9lc05vdEV4aXN0UGF0aCk7CisgICAgRVhQRUNUX1RSVUUoIW1ldGFkYXRhKTsK
K30KKworI2lmIE9TKFVOSVgpCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0
YUhpZGRlbkZpbGUpCit7CisgICAgYXV0byBoaWRkZW5GaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICIuaGlkZGVuRmls
ZSIpOworICAgIGF1dG8gZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGhpZGRlbkZp
bGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKKyAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0cmxlbihGaWxl
U3lzdGVtVGVzdERhdGEpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7
CisKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGhpZGRlbkZp
bGVQYXRoKTsKKyAgICBBU1NFUlRfVFJVRShtZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAgICBFWFBF
Q1RfVFJVRShtZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOworICAg
IEVYUEVDVF9UUlVFKG1ldGFkYXRhLT5pc0hpZGRlbik7CisgICAgRVhQRUNUX0VRKHN0cmxlbihG
aWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1ldGFkYXRhLT5sZW5ndGgp
KTsKKworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoaGlkZGVuRmlsZVBh
dGgpKTsKK30KKyNlbmRpZgorCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIFVuaWNvZGVEaXJlY3Rv
cnlOYW1lKQogewogICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOCgiL3Rlc3QvYVx1
MDMwOGxvL3Rlc3QudHh0Iik7CkBAIC01MjgsNCArNjA0LDUyIEBAIFRFU1RfRihGaWxlU3lzdGVt
VGVzdCwgY3JlYXRlSGFyZExpbmtPckNvcHlGaWxlKQogICAgIEVYUEVDVF9FUShsaW5rRmlsZVNp
emUsIGZpbGVTaXplKTsKIH0KIAorc3RhdGljIHZvaWQgcnVuR2V0RmlsZU1vZGlmaWNhdGlvblRp
bWVUZXN0KGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248T3B0aW9uYWw8V2FsbFRpbWU+KGNv
bnN0IFN0cmluZyYpPiYmIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKQoreworICAgIGF1dG8gbW9k
aWZpY2F0aW9uVGltZSA9IGdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgpOworICAgIEVYUEVD
VF9UUlVFKCEhbW9kaWZpY2F0aW9uVGltZSk7CisgICAgaWYgKCFtb2RpZmljYXRpb25UaW1lKQor
ICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCB0aW1lb3V0ID0gMDsKKyAgICB3aGlsZSAo
Km1vZGlmaWNhdGlvblRpbWUgPj0gV2FsbFRpbWU6Om5vdygpICYmICsrdGltZW91dCA8IDIwKQor
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjEpOworICAgIEVYUEVDVF9MVCht
b2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCksIFdhbGxUaW1lOjpu
b3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOworCisgICAgYXV0byB0aW1lQmVmb3Jl
TW9kaWZpY2F0aW9uID0gV2FsbFRpbWU6Om5vdygpOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6c2xlZXAoMik7CisKKyAgICAvLyBNb2RpZnkgdGhlIGZpbGUuCisgICAgYXV0byBmaWxlSGFu
ZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2Rl
OjpSZWFkV3JpdGUpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQo
ZmlsZUhhbmRsZSkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsICJm
b28iLCBzdHJsZW4oImZvbyIpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRs
ZSk7CisKKyAgICBhdXRvIG5ld01vZGlmaWNhdGlvblRpbWUgPSBnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZShwYXRoKTsKKyAgICBFWFBFQ1RfVFJVRSghIW5ld01vZGlmaWNhdGlvblRpbWUpOworICAg
IGlmICghbmV3TW9kaWZpY2F0aW9uVGltZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRVhQRUNU
X0dUKG5ld01vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSwgbW9k
aWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKKyAgICBFWFBFQ1Rf
R1QobmV3TW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpLCB0aW1l
QmVmb3JlTW9kaWZpY2F0aW9uLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7Cit9CisKK1RF
U1RfRihGaWxlU3lzdGVtVGVzdCwgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpCit7CisgICAgcnVu
R2V0RmlsZU1vZGlmaWNhdGlvblRpbWVUZXN0KHRlbXBGaWxlUGF0aCgpLCBbXShjb25zdCBTdHJp
bmcmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRp
b25UaW1lKHBhdGgpOworICAgIH0pOworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGdldEZp
bGVNb2RpZmljYXRpb25UaW1lVmlhRmlsZU1ldGFkYXRhKQoreworICAgIHJ1bkdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lVGVzdCh0ZW1wRmlsZVBhdGgoKSwgW10oY29uc3QgU3RyaW5nJiBwYXRoKSAt
PiBPcHRpb25hbDxXYWxsVGltZT4geworICAgICAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhKHBhdGgpOworICAgICAgICBpZiAoIW1ldGFkYXRhKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIG1ldGFkYXRhLT5tb2RpZmlj
YXRpb25UaW1lOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggYzIyODUxYzNkNDVkYTZiNThmYzI3ZmM2YjQyMjUzMmQzYTIxNDYyOS4uZmE2MWIzZmZj
NmU1ZDkzMjBkYTY1YzhkODg2M2VkZTRiMTA4MTdiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDIxLTA1LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUG9y
dCBGaWxlc3lzdGVtOjpmaWxlTWV0YWRhdGEoKSAmIEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHRlc3RpbmcgdGhlIHNpemUgb2YgYSBkaXJlY3Rv
cnkgaW4gdGhlIGRhdGEgdHJhbnNmZXIgQVBJIGFzIHRoZSByZXN1bHQgaXMgaW1wbGVtZW50YXRp
b24tc3BlY2lmaWMuCisgICAgICAgIE9uIG1hY09TLCB3ZSB1c2VkIHRvIHJldHVybiAyNTYgb24g
YXBmcyBhbmQgMjcyIG9uIEhGUysuIFdlIG5vdyByZXR1cm4gMCwgd2hpY2ggaXMgd2hhdCBGaXJl
Zm94IGRvZXMuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZW50cmllcy1hcGkvZGF0
YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdl
dEFzRW50cnkuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvZHJh
Zy1mb2xkZXItd2Via2l0RW50cmllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9mb3Jt
cy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMuaHRtbDoKKwogMjAy
MS0wNS0wNiAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHTElCXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nLiBVcGRhdGUgZXhwZWN0YXRpb25zIGFm
dGVyIFdQVCByZS1pbXBvcnQgaW4gcjI3NzA3MyBhbmQgcjI3NzA3Ny4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRl
bXMtZHJvcC1nZXRBc0VudHJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5LWV4
cGVjdGVkLnR4dAppbmRleCA3MTBhNTcyMjA1ZDhiMzQ0MjAwZDI4NWE3NTNiNTNjNzMzZDhiNzZk
Li5mZmUwZThiMzkwNDdjNWZjNWRkYzBjODU4MmY5MDYwMWQyZjQ1MThkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW50cmllcy1hcGkvZGF0YXRyYW5zZmVyLWl0
ZW1zLWRyb3AtZ2V0QXNFbnRyeS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50
cnktZXhwZWN0ZWQudHh0CkBAIC0xNiw3ICsxNiw2IEBAIFBBU1MgZmlyc3RFbnRyeS5mdWxsUGF0
aCBpcyAiL3Rlc3QudHh0IgogUEFTUyBzZWNvbmREYXRhVHJhbnNmZXJJdGVtLmtpbmQgaXMgImZp
bGUiCiBQQVNTIHNlY29uZERhdGFUcmFuc2Zlckl0ZW0udHlwZSBpcyAiIgogUEFTUyBzZWNvbmRG
aWxlLm5hbWUgaXMgInRlc3RGaWxlcyIKLVBBU1Mgc2Vjb25kRmlsZS5zaXplIGlzIG9uZSBvZiBg
MjcyYCwgYW5kIGAyNTZgCiBQQVNTIHNlY29uZEZpbGUudHlwZSBpcyAiIgogUEFTUyBzZWNvbmRF
bnRyeS5pc0RpcmVjdG9yeSBpcyB0cnVlCiBQQVNTIHNlY29uZEVudHJ5LmlzRmlsZSBpcyBmYWxz
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBp
L2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRB
c0VudHJ5Lmh0bWwKaW5kZXggMTAxODhmYTQ1N2I0OWI0OTE0ZmU0M2E1YzMyY2VmN2JkZWNhNTU0
OC4uOWNmZTEwM2FiMjBjMGM5ZDFiMGUxMWNhOGIyNjA2NmMxMWJhODBjYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1p
dGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvZW50cmllcy1hcGkvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS5odG1s
CkBAIC0zNyw3ICszNyw2IEBAIGRyb3B6b25lLm9uZHJvcCA9IGZ1bmN0aW9uKGUpIHsKICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInNlY29uZERhdGFUcmFuc2Zlckl0ZW0udHlwZSIsICIiKTsK
ICAgICBzZWNvbmRGaWxlID0gc2Vjb25kRGF0YVRyYW5zZmVySXRlbS5nZXRBc0ZpbGUoKTsKICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlY29uZEZpbGUubmFtZSIsICJ0ZXN0RmlsZXMiKTsK
LSAgICBzaG91bGRCZU9uZU9mVmFsdWVzKCJzZWNvbmRGaWxlLnNpemUiLCBbMjcyLCAyNTZdKTsg
Ly8gQ2hyb21lIHJldHVybnMgZm9sZGVyIHNpemUsIEZpcmVmb3ggcmV0dXJucyAwLiAyNTYgaW4g
QVBGUywgMjcyIGluIEhGUysgCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWNvbmRGaWxl
LnR5cGUiLCAiIik7CiAKICAgICBzZWNvbmRFbnRyeSA9IHNlY29uZERhdGFUcmFuc2Zlckl0ZW0u
d2Via2l0R2V0QXNFbnRyeSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
aWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtp
dEVudHJpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDE4ZjdlNDQyNmNhYWM3NTU5OTEyZWUyNjYyYmMy
ODA5MTlhZjcxMWUuLmVhOWNiZjU4NjYyMzUzNTMxZWIwMzU5Mzk5M2Y5NDZiNGU0NGYyNDYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9kcmFnLWZv
bGRlci13ZWJraXRFbnRyaWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2ZpbGUvZW50cmllcy1hcGkvZHJhZy1mb2xkZXItd2Via2l0RW50cmllcy1leHBlY3RlZC50
eHQKQEAgLTE2LDcgKzE2LDYgQEAgUEFTUyBmaWxlc1swXS5uYW1lIGlzICJ0ZXN0LnR4dCIKIFBB
U1MgZmlsZXNbMF0uc2l6ZSBpcyA1CiBQQVNTIGZpbGVzWzBdLnR5cGUgaXMgInRleHQvcGxhaW4i
CiBQQVNTIGZpbGVzWzFdLm5hbWUgaXMgInRlc3RGaWxlcyIKLVBBU1MgZmlsZXNbMV0uc2l6ZSBp
cyBvbmUgb2YgYDI3MmAsIGFuZCBgMjU2YAogUEFTUyBmaWxlc1sxXS50eXBlIGlzICIiCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvZHJhZy1mb2xkZXItd2Vi
a2l0RW50cmllcy5odG1sCmluZGV4IDhkNjI4ZTRiYjc1MjVlMmM2MGE2OWYxMTQ3OTNhNWJiNzgz
ZWE3NDIuLmIxODAxNTFkMWY1OWU3MjM0ZGI3NzA3MGQ0MmM2YzQ4ZGJhOGU2MGMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9kcmFnLWZvbGRlci13
ZWJraXRFbnRyaWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJp
ZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMuaHRtbApAQCAtNDgsNyArNDgsNiBAQCBm
dW5jdGlvbiBjaGFuZ2VkKGV2ZW50KQogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZXNb
MF0udHlwZSIsICJ0ZXh0L3BsYWluIik7CiAKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZp
bGVzWzFdLm5hbWUiLCAidGVzdEZpbGVzIik7Ci0gICAgc2hvdWxkQmVPbmVPZlZhbHVlcygiZmls
ZXNbMV0uc2l6ZSIsIFsyNzIsIDI1Nl0pOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmls
ZXNbMV0udHlwZSIsICIiKTsKIAogICAgIGZpbmlzaEpTVGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427958</attachid>
            <date>2021-05-06 16:44:44 -0700</date>
            <delta_ts>2021-05-06 22:00:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225362-20210506164443.patch</filename>
            <type>text/plain</type>
            <size>31888</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZTM0ODA2MTBkNzljMDNiMzY5ZmM5MmYxMGY4NjJmNTdmM2FjYmJlLi5mNzYwYzg3ZWY5YTZkNDdi
N2ZmNWI0OGQzNTI4M2I4NTExNDYwNzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNS0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisKIDIwMjEtMDUtMDYgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNvbWUgdGhpbmdz
IGVhc2llciB0byBkYXRhTG9nIGluIHdhc20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOTgxMmY0N2M0MmY0YzNiOTAyZjNlMTU2
NzYzOWJjNzI3Y2I2OTgzNi4uNzVlMjA4MjQzNTU2ODU5YTJmNzBmMTIxNDI1MzNkMWIyMGMwYzMz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMS0wNS0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBG
aWxlc3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUG9ydCBGaWxlc3lz
dGVtOjpmaWxlTWV0YWRhdGEoKSAmIEZpbGVzeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1l
KCkgdG8gc3RkOjpmaWxlc3lzdGVtCisgICAgICAgIGFuZCBnZXQgcmlkIG9mIHBsYXRmb3JtLXNw
ZWNpZmljIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OnRvV2FsbFRpbWUpOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6ZmlsZU1ldGFkYXRhKToKKyAgICAgICAgKiB3dGYvRmlsZVN5c3Rl
bS5oOgorICAgICAgICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKiB3
dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKiB3dGYvd2luL0ZpbGVTeXN0
ZW1XaW4uY3BwOgorCiAyMDIxLTA1LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVncmVzc2lvbihyMjU0Mzg5PykgbmF2aWdhdG9yLmxhbmd1YWdlcyByZXR1
cm5zIGFsbCBsb3dlcmNhc2UgbGFuZ3VhZ2VzIGZvciBwb3J0cyB1c2luZyBDRgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhj
Y29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRD
b3JlLnhjY29uZmlnCmluZGV4IDVmYjU2MDE1ZmJkMDg4NzlhMGRiYzlhYjc1MmQxM2QyZjE0MzM4
ODguLjNhNWRhNDNjNjNkYTVkZmI1NzQxYmI0MDZmZTRlNTliMWE4YjVjMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2Nv
bmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlw
dENvcmUueGNjb25maWcKQEAgLTI3LDcgKzI3LDcgQEAgREVGSU5FU19NT0RVTEUgPSBZRVM7CiBN
T0RVTEVNQVBfRklMRSA9ICQoU1JDUk9PVCkvSmF2YVNjcmlwdENvcmUubW9kdWxlbWFwOwogCiAv
LyBQcmV2ZW50IEMrKyBzdGFuZGFyZCBsaWJyYXJ5IG9wZXJhdG9yIG5ldywgZGVsZXRlIGFuZCB0
aGVpciByZWxhdGVkIGV4Y2VwdGlvbiB0eXBlcyBmcm9tIGJlaW5nIGV4cG9ydGVkIGFzIHdlYWsg
c3ltYm9scy4KLU9USEVSX0xERkxBR1NfSElERV9TWU1CT0xTID0gLVdsLC11bmV4cG9ydGVkX3N5
bWJvbCxfX1pUSVN0OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRJU3Q5ZXhj
ZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFNTdDliYWRfYWxsb2MgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCxfX1pUU1N0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9f
WmRsUHZTXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWm53bVB2IC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wsX19aTktTdDNfXzE4ZnVuY3Rpb25JRnZ2RUVjbEV2IC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wsX19aTlN0M19fMThmdW5jdGlvbklGdnZFRUMxRU9TMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJv
bCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVFQzJFT1MyXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
LF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEw
UmVnaXN0ZXJJREVFRWNsRVMzX1M1XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4
ZnVuY3Rpb25JRnZSTjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9yRVBOUzFfMTBSZWdpc3RlcklERUVF
RDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZSTjNKU0Mx
N0J5dGVjb2RlR2VuZXJhdG9yRVBOUzFfMTBSZWdpc3RlcklERUVFRDJFdiAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVEMUV2IC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdnZFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJv
bCxfX1pUVk5TdDNfXzExN2JhZF9mdW5jdGlvbl9jYWxsRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
LF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SVBL
Y1M0X2NMYjFFRTExX19yYW5nZV9lbmRFUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0
M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJUEtjUzRfY0xi
MUVFMTNfX3JhbmdlX2JlZ2luRVM0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0
X19mczEwZmlsZXN5c3RlbThfUGF0aENWVEljRTE0X19hcHBlbmRfcmFuZ2VJUEtjRUVOU185ZW5h
YmxlX2lmSVhzcjI3X19pc19jcHAxN19mb3J3YXJkX2l0ZXJhdG9ySVRfRUU1dmFsdWVFdkU0dHlw
ZUVSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvcklj
RUVFRVM4X1M4XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5
c3RlbThfUGF0aENWVEljRTE1X19hcHBlbmRfc291cmNlSVBLY0VFdlJOU18xMmJhc2ljX3N0cmlu
Z0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUktUXyAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbThfUGF0aENWVEljRTE0X19h
cHBlbmRfcmFuZ2VJUEtjRUVOU185ZW5hYmxlX2lmSVhzcjIxX19pc19mb3J3YXJkX2l0ZXJhdG9y
SVRfRUU1dmFsdWVFdkU0dHlwZUVSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJ
Y0VFTlNfOWFsbG9jYXRvckljRUVFRVM4X1M4XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5L
U3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0xOGRpcmVjdG9yeV9pdGVyYXRvcmRlRXYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0xOGRpcmVjdG9yeV9pdGVy
YXRvcnBwRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlBMTBfY1BjY0xiMUVFMTFfX3JhbmdlX2VuZEVQ
S2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9f
aXNfcGF0aGFibGVfY2hhcl9hcnJheUlBMTBfY1BjY0xiMUVFMTNfX3JhbmdlX2JlZ2luRVBLYyAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTRwYXRoZFZF
UktTMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04
X1BhdGhDVlRJY0UxNV9fYXBwZW5kX3NvdXJjZUlBMTBfY0VFdlJOU18xMmJhc2ljX3N0cmluZ0lj
TlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUktUXzsKK09USEVSX0xERkxB
R1NfSElERV9TWU1CT0xTID0gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUSVN0OWJhZF9hbGxv
YyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRJU3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wsX19aVFNTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUU1N0
OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWmRsUHZTXyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sLF9fWm53bVB2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTktTdDNfXzE4ZnVu
Y3Rpb25JRnZ2RUVjbEV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlv
bklGdnZFRUMxRU9TMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9u
SUZ2dkVFQzJFT1MyXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3QzX18xOGZ1bmN0aW9u
SUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRWNsRVMzX1M1
XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZSTjNKU0MxN0J5
dGVjb2RlR2VuZXJhdG9yRVBOUzFfMTBSZWdpc3RlcklERUVFRDFFdiAtV2wsLXVuZXhwb3J0ZWRf
c3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZSTjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9yRVBO
UzFfMTBSZWdpc3RlcklERUVFRDJFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4
ZnVuY3Rpb25JRnZ2RUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5j
dGlvbklGdnZFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUVk5TdDNfXzExN2JhZF9m
dW5jdGlvbl9jYWxsRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmls
ZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTExX19yYW5nZV9l
bmRFUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVt
MjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJUEtjUzRfY0xiMUVFMTNfX3JhbmdlX2JlZ2luRVM0
XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbThfUGF0
aENWVEljRTE0X19hcHBlbmRfcmFuZ2VJUEtjRUVOU185ZW5hYmxlX2lmSVhzcjI3X19pc19jcHAx
N19mb3J3YXJkX2l0ZXJhdG9ySVRfRUU1dmFsdWVFdkU0dHlwZUVSTlNfMTJiYXNpY19zdHJpbmdJ
Y05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVM4X1M4XyAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbThfUGF0aENWVEljRTE1X19h
cHBlbmRfc291cmNlSVBLY0VFdlJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0lj
RUVOU185YWxsb2NhdG9ySWNFRUVFUktUXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNf
XzE0X19mczEwZmlsZXN5c3RlbThfUGF0aENWVEljRTE0X19hcHBlbmRfcmFuZ2VJUEtjRUVOU185
ZW5hYmxlX2lmSVhzcjIxX19pc19mb3J3YXJkX2l0ZXJhdG9ySVRfRUU1dmFsdWVFdkU0dHlwZUVS
TlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVF
RVM4X1M4XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW0xOGRpcmVjdG9yeV9pdGVyYXRvcmRlRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3Qz
X18xNF9fZnMxMGZpbGVzeXN0ZW0xOGRpcmVjdG9yeV9pdGVyYXRvcnBwRXYgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hh
cl9hcnJheUlBMTBfY1BjY0xiMUVFMTFfX3JhbmdlX2VuZEVQS2MgLVdsLC11bmV4cG9ydGVkX3N5
bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJh
eUlBMTBfY1BjY0xiMUVFMTNfX3JhbmdlX2JlZ2luRVBLYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
LF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTRwYXRoZFZFUktTMl8gLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNV9fYXBwZW5k
X3NvdXJjZUlBMTBfY0VFdlJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVO
U185YWxsb2NhdG9ySWNFRUVFUktUXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0
X19mczEwZmlsZXN5c3RlbTI0X190aHJvd19maWxlc3lzdGVtX2Vycm9ySUpSUEtjUktOUzFfNHBh
dGhFUktOU18xMGVycm9yX2NvZGVFRUVFdkRwT1RfOwogCiBPVEhFUl9MREZMQUdTX0JBU0UgPSAk
KE9USEVSX0xERkxBR1NfSElERV9TWU1CT0xTKSAtZm9yY2VfbG9hZCAiJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL2xpYldURi5hIjsKIE9USEVSX0xE
RkxBR1Nbc2RrPWVtYmVkZGVkKl0gPSAkKGluaGVyaXRlZCkgJChPVEhFUl9MREZMQUdTX0JBU0Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCBmN2Q2NzQ5Y2M5ZWJlNWM5MTk3YmQwODgwMGFkNjgy
OTI4MWYyOWRjLi5iZDE3N2FiMjAwZjlhZmY3ZjEwNjViZTczMDM3MzM4NDMwYWYyNzJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9GaWxlU3lzdGVtLmNwcApAQCAtMzcsNiArMzcsNyBAQAogCiAjaWYgIU9TKFdJTkRPV1MpCiAj
aW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICNpbmNsdWRlIDxz
eXMvc3RhdC5oPgogI2VuZGlmCiAKQEAgLTEwNSw2ICsxMDYsNDMgQEAgc3RhdGljIGlubGluZSBi
b29sIHNob3VsZEVzY2FwZVVDaGFyKFVDaGFyIGNoYXJhY3RlciwgVUNoYXIgcHJldmlvdXNDaGFy
YWN0ZXIsIFUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENsb2Nr
VHlwZSwgdHlwZW5hbWUgPSB2b2lkPiBzdHJ1Y3QgaGFzX3RvX3RpbWVfdCA6IHN0ZDo6ZmFsc2Vf
dHlwZSB7IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDbG9ja1R5cGU+IHN0cnVjdCBoYXNfdG9fdGlt
ZV90PENsb2NrVHlwZSwgc3RkOjp2b2lkX3Q8CisgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X3NhbWVfdjxzdGQ6OnRpbWVfdCwgZGVjbHR5cGUoQ2xvY2tUeXBlOjp0b190aW1lX3Qoc3RkOjpm
aWxlc3lzdGVtOjpmaWxlX3RpbWVfdHlwZSgpKSk+PgorPj4gOiBzdGQ6OnRydWVfdHlwZSB7IH07
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBGaWxlVGltZVR5cGU+Cit0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZl90PGhhc190b190aW1lX3Q8dHlwZW5hbWUgRmlsZVRpbWVUeXBlOjpjbG9jaz46OnZhbHVl
LCBzdGQ6OnRpbWVfdD4gdG9UaW1lVChGaWxlVGltZVR5cGUgZmlsZVRpbWUpCit7CisgICAgcmV0
dXJuIGRlY2x0eXBlKGZpbGVUaW1lKTo6Y2xvY2s6OnRvX3RpbWVfdChmaWxlVGltZSk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBGaWxlVGltZVR5cGU+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
Zl90PCFoYXNfdG9fdGltZV90PHR5cGVuYW1lIEZpbGVUaW1lVHlwZTo6Y2xvY2s+Ojp2YWx1ZSwg
c3RkOjp0aW1lX3Q+IHRvVGltZVQoRmlsZVRpbWVUeXBlIGZpbGVUaW1lKQoreworICAgIHJldHVy
biBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0b190aW1lX3Qoc3RkOjpjaHJvbm86OnRpbWVf
cG9pbnRfY2FzdDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4oZmlsZVRpbWUg
LSBkZWNsdHlwZShmaWxlVGltZSk6OmNsb2NrOjpub3coKSArIHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6Om5vdygpKSk7Cit9CisKK3N0YXRpYyBXYWxsVGltZSB0b1dhbGxUaW1lKHN0ZDo6Zmls
ZXN5c3RlbTo6ZmlsZV90aW1lX3R5cGUgZmlsZVRpbWUpCit7CisgICAgLy8gRklYTUU6IFVzZSBz
dGQ6OmNocm9ubzo6ZmlsZV9jbG9jazo6dG9fc3lzKCkgb25jZSB3ZSBjYW4gdXNlIEMrKzIwLgor
ICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModG9UaW1lVChmaWxlVGltZSkpOwor
fQorCitzdGF0aWMgc3RkOjpmaWxlc3lzdGVtOjpwYXRoIHJlc29sdmVTeW1saW5rcyhzdGQ6OmZp
bGVzeXN0ZW06OnBhdGggcGF0aCwgc3RkOjplcnJvcl9jb2RlJiBlYykKK3sKKyNpZmRlZiBNQVhT
WU1MSU5LUworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4U3ltbGlua0RlcHRoID0g
TUFYU1lNTElOS1M7CisjZWxzZQorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4U3lt
bGlua0RlcHRoID0gNDA7CisjZW5kaWYKKworICAgIHVuc2lnbmVkIGN1cnJlbnREZXB0aCA9IDA7
CisgICAgd2hpbGUgKCsrY3VycmVudERlcHRoIDw9IG1heFN5bWxpbmtEZXB0aCAmJiAhZWMgJiYg
c3RkOjpmaWxlc3lzdGVtOjppc19zeW1saW5rKHBhdGgsIGVjKSkKKyAgICAgICAgcGF0aCA9IHN0
ZDo6ZmlsZXN5c3RlbTo6cmVhZF9zeW1saW5rKHBhdGgsIGVjKTsKKyAgICByZXR1cm4gcGF0aDsK
K30KKwogU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcp
CiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXRTdHJpbmcubGVuZ3RoKCk7CkBAIC02MjMs
NSArNjYxLDY1IEBAIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBw
YXRoKQogICAgIHJldHVybiAhZWM7CiB9CiAKK09wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgc3RkOjplcnJvcl9jb2Rl
IGVjOworICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IHN0ZDo6ZmlsZXN5c3RlbTo6bGFzdF93
cml0ZV90aW1lKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIGVjKTsKKyAg
ICBpZiAoZWMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHRvV2Fs
bFRpbWUobW9kaWZpY2F0aW9uVGltZSk7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRh
dGE+IGZpbGVNZXRhZGF0YVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5n
JiBwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3MpCit7CisgICAgaWYgKHBhdGguaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgc3RkOjpmaWxlc3lzdGVtOjpwYXRoIGZzUGF0aCA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKS5kYXRhKCk7CisKKyAgICBzdGQ6OmVycm9yX2NvZGUgZWM7CisgICAg
aWYgKHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgPT0gU2hvdWxkRm9sbG93U3ltYm9saWNMaW5r
czo6WWVzICYmIHN0ZDo6ZmlsZXN5c3RlbTo6aXNfc3ltbGluayhmc1BhdGgsIGVjKSkgeworICAg
ICAgICBmc1BhdGggPSByZXNvbHZlU3ltbGlua3MoZnNQYXRoLCBlYyk7CisgICAgICAgIGlmIChl
YykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgZWMgPSB7
IH07CisgICAgc3RkOjpmaWxlc3lzdGVtOjpkaXJlY3RvcnlfZW50cnkgZW50cnkoZnNQYXRoLCBl
Yyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0
byBtb2RpZmljYXRpb25UaW1lID0gdG9XYWxsVGltZShlbnRyeS5sYXN0X3dyaXRlX3RpbWUoZWMp
KTsKKworICAgIC8vIE5vdGUgdGhhdCB0aGUgcmVzdWx0IG9mIGF0dGVtcHRpbmcgdG8gZGV0ZXJt
aW5lIHRoZSBzaXplIG9mIGEgZGlyZWN0b3J5IGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQuCisg
ICAgYXV0byBmaWxlU2l6ZSA9IGVudHJ5LmZpbGVfc2l6ZShlYyk7CisgICAgaWYgKGVjKQorICAg
ICAgICBmaWxlU2l6ZSA9IDA7CisKKyNpZiBPUyhVTklYKQorICAgIHN0ZDo6ZmlsZXN5c3RlbTo6
cGF0aDo6c3RyaW5nX3R5cGUgZmlsZW5hbWUgPSBmc1BhdGguZmlsZW5hbWUoKTsKKyAgICBib29s
IGlzSGlkZGVuID0gIWZpbGVuYW1lLmVtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4nOworI2Vs
c2UKKyAgICBib29sIGlzSGlkZGVuID0gZmFsc2U7CisjZW5kaWYKKyAgICBGaWxlTWV0YWRhdGE6
OlR5cGUgdHlwZSA9IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKKyAgICBpZiAoZW50cnkuaXNf
c3ltbGluayhlYykpCisgICAgICAgIHR5cGUgPSBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGlj
TGluazsKKyAgICBlbHNlIGlmIChlbnRyeS5pc19kaXJlY3RvcnkoZWMpKQorICAgICAgICB0eXBl
ID0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CisKKyAgICByZXR1cm4gRmlsZU1ldGFk
YXRhIHsgbW9kaWZpY2F0aW9uVGltZSwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihmaWxlU2l6ZSks
IGlzSGlkZGVuLCB0eXBlIH07Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFk
YXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gZmlsZU1ldGFkYXRhUG90ZW50
aWFsbHlGb2xsb3dpbmdTeW1saW5rcyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpO
byk7Cit9CisKK09wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3lt
bGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBmaWxlTWV0YWRhdGFQb3Rl
bnRpYWxseUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6
Olllcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3Bw
IGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggNjNkNWRhZjFh
OTk0ZmY3MjBjYzk0MzAzYzFmM2M1MmJhNDRlNDA4My4uNmRmYmE1MWYyMjhlOGRhYmFiNWJhM2U5
MTg3YTNlODI4NjFhOWY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lz
dGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAK
QEAgLTE1Miw1MSArMTUyLDYgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRp
bWUoY29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1PcHRpb25h
bDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQot
ewotICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7Ci0gICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAm
c3RhdFJlc3VsdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4g
V2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpOwotfQotCi1zdGF0
aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoR1N0YXRCdWYgc3RhdFJlc3Vs
dCkKLXsKLSAgICBpZiAoU19JU0RJUihzdGF0UmVzdWx0LnN0X21vZGUpKQotICAgICAgICByZXR1
cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Ci0gICAgaWYgKFNfSVNMTksoc3RhdFJl
c3VsdC5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9s
aWNMaW5rOwotICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU7Ci19Ci0KLXN0YXRp
YyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3Qg
U3RyaW5nJiBwYXRoLCBib29sICgqc3RhdEZ1bmMpKGNvbnN0IFN0cmluZyYsIEdTdGF0QnVmKikp
Ci17Ci0gICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsKLSAgICBpZiAoIXN0YXRGdW5jKHBhdGgsICZz
dGF0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFN0cmluZyBm
aWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKLSAgICBib29sIGlzSGlkZGVuID0gIWZp
bGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7Ci0KLSAgICByZXR1cm4gRmls
ZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQu
c3RfbXRpbWUpLAotICAgICAgICBzdGF0UmVzdWx0LnN0X3NpemUsCi0gICAgICAgIGlzSGlkZGVu
LAotICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKHN0YXRSZXN1bHQpCi0gICAgfTsKLX0KLQotT3B0
aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQotewot
ICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlTFN0YXQp
OwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxp
bmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhVXNpbmdG
dW5jdGlvbihwYXRoLCAmZ2V0RmlsZVN0YXQpOwotfQotCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7
CiAgICAgaWYgKHBhdGguZW5kc1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggYmZlOGZhYmI2YmZjNjcwZTRlZTRiMzBk
OGIzYzQ4ZTQ3OWRjNWQyMy4uODgyMzhmZTgwZGU0ZDliMTA4MDdiNTkyY2NlNTU3YjBhMDI5ZjE2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0xODYsNjEg
KzE4Niw2IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0
cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIENTdHJpbmcgZnNSZXAgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0KLSAgICBpZiAoIWZzUmVwLmRhdGEoKSB8
fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwotCi0gICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgp
LCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJu
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSk7Ci19Ci0KLXN0YXRp
YyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShzdHJ1Y3Qgc3RhdCBmaWxlSW5m
bykKLXsKLSAgICBpZiAoU19JU0RJUihmaWxlSW5mby5zdF9tb2RlKSkKLSAgICAgICAgcmV0dXJu
IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwotICAgIGlmIChTX0lTTE5LKGZpbGVJbmZv
LnN0X21vZGUpKQotICAgICAgICByZXR1cm4gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xp
bms7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9w
dGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJp
bmcmIHBhdGgsIGludCAoKnN0YXRGdW5jKShjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKSkKLXsK
LSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotCi0g
ICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBp
ZiAoc3RhdEZ1bmMoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgp
OwotICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBd
ID09ICcuJzsKLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKSwKLSAgICAgICAgZmlsZUluZm8uc3Rfc2l6
ZSwKLSAgICAgICAgaXNIaWRkZW4sCi0gICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoZmlsZUluZm8p
Ci0gICAgfTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3Qg
U3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBh
dGgsICZsc3RhdCk7Ci19Ci0KLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9s
bG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBmaWxlTWV0
YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZzdGF0KTsKLX0KLQogU3RyaW5nIHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50
KQogewogICAgIGlmIChwYXRoLmVuZHNXaXRoKCcvJykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAKaW5kZXggZmQ1OWYxOTAzZTZlMWZlODRkMTU4ZDU3NWE5NjI5ZWFiOTAwYzlkNS4u
NDc5MDZjN2M2YzYxZWViZjQ5ZDk3ZGNlN2VkYWNmYjI1MmFmN2M5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dp
bi9GaWxlU3lzdGVtV2luLmNwcApAQCAtMTE0LDE3ICsxMTQsNiBAQCBib29sIGdldEZpbGVTaXpl
KFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcmIHNpemUpCiAgICAgcmV0
dXJuIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGZpbGVJ
bmZvcm1hdGlvbiwgc2l6ZSk7CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBm
aW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHRpbWVfdCB0aW1lID0gMDsKLSAgICBnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGltZSk7Ci0gICAgcmV0dXJu
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lKTsKLX0KLQogT3B0aW9uYWw8V2FsbFRpbWU+
IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFdJTjMyX0ZJ
TkRfREFUQVcgZmluZERhdGE7CkBAIC0xNTQsNjMgKzE0Myw2IEBAIHN0YXRpYyBTdHJpbmcgZ2V0
RmluYWxQYXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIFN0cmluZzo6YWRv
cHQoV1RGTW92ZShidWZmZXIpKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlzU3ltYm9saWNM
aW5rKFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGEpCi17Ci0gICAgcmV0dXJuIGZpbmREYXRhLmR3
RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UICYmIGZpbmREYXRh
LmR3UmVzZXJ2ZWQwID09IElPX1JFUEFSU0VfVEFHX1NZTUxJTks7Ci19Ci0KLXN0YXRpYyBGaWxl
TWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YWRhdGFUeXBlKFdJTjMyX0ZJTkRfREFUQVcgZmluZERh
dGEpCi17Ci0gICAgaWYgKGZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVU
RV9ESVJFQ1RPUlkpCi0gICAgICAgIHJldHVybiBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9y
eTsKLSAgICBpZiAoaXNTeW1ib2xpY0xpbmsoZmluZERhdGEpKQotICAgICAgICByZXR1cm4gRmls
ZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbms7Ci0gICAgcmV0dXJuIEZpbGVNZXRhZGF0YTo6
VHlwZTo6RmlsZTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmluZERhdGFU
b0ZpbGVNZXRhZGF0YShXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhKQotewotICAgIGxvbmcgbG9u
ZyBsZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbGVu
Z3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHRpbWVfdCBtb2RpZmlj
YXRpb25UaW1lOwotICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmRE
YXRhLCBtb2RpZmljYXRpb25UaW1lKTsKLQotICAgIHJldHVybiBGaWxlTWV0YWRhdGEgewotICAg
ICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9uVGltZSksCi0gICAgICAg
IGxlbmd0aCwKLSAgICAgICAgc3RhdGljX2Nhc3Q8Ym9vbD4oZmluZERhdGEuZHdGaWxlQXR0cmli
dXRlcyAmIEZJTEVfQVRUUklCVVRFX0hJRERFTiksCi0gICAgICAgIHRvRmlsZU1ldGFkYXRhVHlw
ZShmaW5kRGF0YSkKLSAgICB9OwotfQotCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRh
ZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0
YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKGZpbmRE
YXRhKTsKLX0KLQotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdT
eW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgV0lOMzJfRklORF9EQVRBVyBmaW5k
RGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGlmIChpc1N5bWJvbGljTGluayhmaW5kRGF0YSkpIHsK
LSAgICAgICAgU3RyaW5nIHRhcmdldFBhdGggPSBnZXRGaW5hbFBhdGhOYW1lKHBhdGgpOwotICAg
ICAgICBpZiAodGFyZ2V0UGF0aC5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0gICAgICAgIGlmICghZ2V0RmluZERhdGEodGFyZ2V0UGF0aCwgZmluZERhdGEpKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmlu
ZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7Ci19Ci0KIFN0cmluZyBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkK
IHsKICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGM5MzIzMDY3NmQ1MzA2MmEyYWM0
OTc5ZGM5NWE1MDEwN2E3YmQ0OS4uMWU2ODYzMjUxMWViMjFjYTRmMzQ4NWRlNjY3ZGY3YjMzMTVk
NWE1YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTA1LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpmaWxlTWV0YWRhdGEoKSAmIEZpbGVzeXN0
ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzNjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJh
Z2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpydW5HZXRGaWxlTW9kaWZpY2F0aW9uVGltZVRlc3QpOgorCiAyMDIxLTA1LTA2ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbihyMjU0Mzg5Pykg
bmF2aWdhdG9yLmxhbmd1YWdlcyByZXR1cm5zIGFsbCBsb3dlcmNhc2UgbGFuZ3VhZ2VzIGZvciBw
b3J0cyB1c2luZyBDRgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVt
LmNwcAppbmRleCBiZDEzZmVmNjAxOTIxMDhiMDRlNTQxN2M1NGRmOTE1NGM4MGRhMDExLi4xYjRi
MDlmZmZiNGY0MDBiYzNkYzI2ZjcxMTA4OTBiM2Q3YWRiMTFiIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgIlV0aWxpdGllcy5o
IgogI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0xNDIsMTkgKzE0Myw5NCBAQCBU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCiAgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29udGFpbmluZ0ZpbGVQYXRo
KCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKIH0KIAotVEVTVF9GKEZpbGVTeXN0ZW1U
ZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1saW5rKQorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRG
aWxlTWV0YWRhdGFGaWxlU3ltbGluaykKIHsKICAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZp
bGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwogICAgIEFTU0VS
VF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShzeW1s
aW5rTWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNM
aW5rKTsKLSAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8c2l6ZV90PihzeW1saW5rTWV0YWRh
dGEudmFsdWUoKS5sZW5ndGgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICBF
WFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpT
eW1ib2xpY0xpbmspOworICAgIEVYUEVDVF9GQUxTRShzeW1saW5rTWV0YWRhdGEtPmlzSGlkZGVu
KTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS0+
bGVuZ3RoKSA9PSBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CiAKICAgICBhdXRvIHRhcmdl
dE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVt
cEZpbGVTeW1saW5rUGF0aCgpKTsKICAgICBBU1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0YS5oYXNW
YWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSh0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0g
RmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKLSAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0
ZW1UZXN0RGF0YSksIHN0YXRpY19jYXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEudmFsdWUoKS5s
ZW5ndGgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0YXJnZXRNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0
YWRhdGE6OlR5cGU6OkZpbGUpOworICAgIEVYUEVDVF9GQUxTRSh0YXJnZXRNZXRhZGF0YS0+aXNI
aWRkZW4pOworICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS0+bGVuZ3RoKSk7CisKKyAgICBhdXRvIGFjdHVh
bFRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlUGF0aCgp
KTsKKyAgICBBU1NFUlRfVFJVRShhY3R1YWxUYXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShhY3R1YWxUYXJnZXRNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6
OlR5cGU6OkZpbGUpOworICAgIEVYUEVDVF9FUSh0YXJnZXRNZXRhZGF0YS0+bW9kaWZpY2F0aW9u
VGltZSwgYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPm1vZGlmaWNhdGlvblRpbWUpOworICAgIEVYUEVD
VF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJn
ZXRNZXRhZGF0YS0+bGVuZ3RoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGFjdHVhbFRhcmdldE1ldGFk
YXRhLT5pc0hpZGRlbik7CiB9CiAKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFk
YXRhU3ltbGlua1RvRmlsZVN5bWxpbmspCit7CisgICAgLy8gQ3JlYXRlIGEgc3ltYm9saWMgbGlu
ayBwb2ludGluZyB0aGUgdGVtcEZpbGVTeW1saW5rUGF0aCgpLgorICAgIGF1dG8gc3ltbGlua1Rv
U3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVt
cHR5Rm9sZGVyUGF0aCgpLCAic3ltbGlua1RvU3ltbGluayIpOworICAgIEVYUEVDVF9UUlVFKEZp
bGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayh0ZW1wRmlsZVN5bWxpbmtQYXRoKCksIHN5bWxp
bmtUb1N5bWxpbmtQYXRoKSk7CisKKyAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0
ZW06OmZpbGVNZXRhZGF0YShzeW1saW5rVG9TeW1saW5rUGF0aCk7CisgICAgQVNTRVJUX1RSVUUo
c3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOworICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRh
ZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluayk7CisgICAgRVhQ
RUNUX0ZBTFNFKHN5bWxpbmtNZXRhZGF0YS0+aXNIaWRkZW4pOworCisgICAgYXV0byB0YXJnZXRN
ZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHN5bWxp
bmtUb1N5bWxpbmtQYXRoKTsKKyAgICBBU1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0YS5oYXNWYWx1
ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0YXJnZXRNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRh
dGE6OlR5cGU6OkZpbGUpOworICAgIEVYUEVDVF9GQUxTRSh0YXJnZXRNZXRhZGF0YS0+aXNIaWRk
ZW4pOworICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS0+bGVuZ3RoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKHN5bWxpbmtUb1N5bWxpbmtQYXRoKSk7Cit9CisKK1RFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRhRGlyZWN0b3J5U3ltbGluaykKK3sKKyAg
ICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRW1w
dHlGb2xkZXJTeW1saW5rUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShzeW1saW5rTWV0YWRhdGEu
aGFzVmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRhLT50eXBlID09IEZp
bGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3ltbGlu
a01ldGFkYXRhLT5pc0hpZGRlbik7CisKKyAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gRmlsZVN5
c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVtcEVtcHR5Rm9sZGVyU3ltbGlu
a1BhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUodGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7Cisg
ICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBl
OjpEaXJlY3RvcnkpOworICAgIEVYUEVDVF9GQUxTRSh0YXJnZXRNZXRhZGF0YS0+aXNIaWRkZW4p
OworCisgICAgYXV0byBhY3R1YWxUYXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRh
ZGF0YSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKGFjdHVhbFRhcmdl
dE1ldGFkYXRhLmhhc1ZhbHVlKCkpOworICAgIEVYUEVDVF9UUlVFKGFjdHVhbFRhcmdldE1ldGFk
YXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5KTsKKyAgICBFWFBFQ1Rf
RVEodGFyZ2V0TWV0YWRhdGEtPm1vZGlmaWNhdGlvblRpbWUsIGFjdHVhbFRhcmdldE1ldGFkYXRh
LT5tb2RpZmljYXRpb25UaW1lKTsKKyAgICBFWFBFQ1RfRVEodGFyZ2V0TWV0YWRhdGEtPmxlbmd0
aCwgYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCk7CisgICAgRVhQRUNUX0ZBTFNFKGFjdHVh
bFRhcmdldE1ldGFkYXRhLT5pc0hpZGRlbik7Cit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwg
R2V0RmlsZU1ldGFkYXRhRmlsZURvZXNOb3RFeGlzdCkKK3sKKyAgICBhdXRvIGRvZXNOb3RFeGlz
dFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9s
ZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiKTsKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5
c3RlbTo6ZmlsZU1ldGFkYXRhKGRvZXNOb3RFeGlzdFBhdGgpOworICAgIEVYUEVDVF9UUlVFKCFt
ZXRhZGF0YSk7Cit9CisKKyNpZiBPUyhVTklYKQorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRG
aWxlTWV0YWRhdGFIaWRkZW5GaWxlKQoreworICAgIGF1dG8gaGlkZGVuRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAi
LmhpZGRlbkZpbGUiKTsKKyAgICBhdXRvIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmls
ZShoaWRkZW5GaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CisgICAg
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBz
dHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGVIYW5kbGUpOworCisgICAgYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0
YShoaWRkZW5GaWxlUGF0aCk7CisgICAgQVNTRVJUX1RSVUUobWV0YWRhdGEuaGFzVmFsdWUoKSk7
CisgICAgRVhQRUNUX1RSVUUobWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpG
aWxlKTsKKyAgICBFWFBFQ1RfVFJVRShtZXRhZGF0YS0+aXNIaWRkZW4pOworICAgIEVYUEVDVF9F
UShzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtZXRhZGF0
YS0+bGVuZ3RoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGhp
ZGRlbkZpbGVQYXRoKSk7Cit9CisjZW5kaWYKKwogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBVbmlj
b2RlRGlyZWN0b3J5TmFtZSkKIHsKICAgICBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVURjgo
Ii90ZXN0L2FcdTAzMDhsby90ZXN0LnR4dCIpOwpAQCAtNTQxLDQgKzYxNyw1MiBAQCBURVNUX0Yo
RmlsZVN5c3RlbVRlc3QsIGNyZWF0ZUhhcmRMaW5rT3JDb3B5RmlsZSkKICAgICBFWFBFQ1RfRVEo
bGlua0ZpbGVTaXplLCBmaWxlU2l6ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJ1bkdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lVGVzdChjb25zdCBTdHJpbmcmIHBhdGgsIEZ1bmN0aW9uPE9wdGlvbmFsPFdh
bGxUaW1lPihjb25zdCBTdHJpbmcmKT4mJiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSkKK3sKKyAg
ICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoKTsK
KyAgICBFWFBFQ1RfVFJVRSghIW1vZGlmaWNhdGlvblRpbWUpOworICAgIGlmICghbW9kaWZpY2F0
aW9uVGltZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgdGltZW91dCA9IDA7Cisg
ICAgd2hpbGUgKCptb2RpZmljYXRpb25UaW1lID49IFdhbGxUaW1lOjpub3coKSAmJiArK3RpbWVv
dXQgPCAyMCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICBF
WFBFQ1RfTFQobW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpLCBX
YWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKKworICAgIGF1dG8g
dGltZUJlZm9yZU1vZGlmaWNhdGlvbiA9IFdhbGxUaW1lOjpub3coKTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnNsZWVwKDIpOworCisgICAgLy8gTW9kaWZ5IHRoZSBmaWxlLgorICAgIGF1
dG8gZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZp
bGVPcGVuTW9kZTo6UmVhZFdyaXRlKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hh
bmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxl
SGFuZGxlLCAiZm9vIiwgc3RybGVuKCJmb28iKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGVIYW5kbGUpOworCisgICAgYXV0byBuZXdNb2RpZmljYXRpb25UaW1lID0gZ2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUocGF0aCk7CisgICAgRVhQRUNUX1RSVUUoISFuZXdNb2RpZmljYXRpb25U
aW1lKTsKKyAgICBpZiAoIW5ld01vZGlmaWNhdGlvblRpbWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEVYUEVDVF9HVChuZXdNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZh
bHVlKCksIG1vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7Cisg
ICAgRVhQRUNUX0dUKG5ld01vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKSwgdGltZUJlZm9yZU1vZGlmaWNhdGlvbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkp
OworfQorCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKQor
eworICAgIHJ1bkdldEZpbGVNb2RpZmljYXRpb25UaW1lVGVzdCh0ZW1wRmlsZVBhdGgoKSwgW10o
Y29uc3QgU3RyaW5nJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShwYXRoKTsKKyAgICB9KTsKK30KKworVEVTVF9GKEZpbGVTeXN0ZW1U
ZXN0LCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZVZpYUZpbGVNZXRhZGF0YSkKK3sKKyAgICBydW5H
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZVRlc3QodGVtcEZpbGVQYXRoKCksIFtdKGNvbnN0IFN0cmlu
ZyYgcGF0aCkgLT4gT3B0aW9uYWw8V2FsbFRpbWU+IHsKKyAgICAgICAgYXV0byBtZXRhZGF0YSA9
IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShwYXRoKTsKKyAgICAgICAgaWYgKCFtZXRhZGF0YSkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBtZXRhZGF0
YS0+bW9kaWZpY2F0aW9uVGltZTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDM0NmNjOWFjYmJhNTI3M2MzNmY2YmI0NTVlZTExMjA2ZDFkZWVlMmIu
LjdlOWE0ZDhmMWFmMzA2MjExNTk4YWJhZmI0NzkwMWVmZjE4OTFjZjEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAyMS0wNS0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgJiBGaWxlc3lzdGVtOjpnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIDAgdG8gdGhlIGxpc3Qgb2YgYWxsb3dl
ZCB2YWx1ZXMgZm9yIHRoZSBzaXplIG9mIGEgZGlyZWN0b3J5IGluIHRoZSBkYXRhIHRyYW5zZmVy
IEFQSSBhcyB0aGUgcmVzdWx0CisgICAgICAgIGlzIGltcGxlbWVudGF0aW9uLXNwZWNpZmljLiBP
biBtYWNPUywgd2UgdXNlZCB0byByZXR1cm4gMjU2IG9uIGFwZnMgYW5kIDI3MiBvbiBIRlMrLiBX
ZSBub3cgcmV0dXJuIDAsCisgICAgICAgIHdoaWNoIGlzIHdoYXQgRmlyZWZveCBkb2VzLgorCisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVt
cy1kcm9wLWdldEFzRW50cnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVi
b2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWw6
CisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtp
dEVudHJpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVz
LWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLmh0bWw6CisKIDIwMjEtMDUtMDYgIFJvYmVy
dCBKZW5uZXIgIDxqZW5uZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1MgXSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy90cmFuc2xhdGlvbi1h
bmltYXRpb24tc3VicGl4ZWwtb2Zmc2V0Lmh0bWwgKGxheW91dC10ZXN0KSBpcyBhIGZsYWtleSBJ
bWFnZU9ubHkgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0
cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnktZXhwZWN0ZWQudHh0CmluZGV4IDcxMGE1NzIy
MDVkOGIzNDQyMDBkMjg1YTc1M2I1M2M3MzNkOGI3NmQuLjYxMTMxNzk3ZTAwZWNiNjJkZGRjOTc5
M2VhNzgxOGRmMDAxYjgwNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW50cmllcy1hcGkv
ZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS1leHBlY3RlZC50eHQKQEAgLTE2LDcg
KzE2LDcgQEAgUEFTUyBmaXJzdEVudHJ5LmZ1bGxQYXRoIGlzICIvdGVzdC50eHQiCiBQQVNTIHNl
Y29uZERhdGFUcmFuc2Zlckl0ZW0ua2luZCBpcyAiZmlsZSIKIFBBU1Mgc2Vjb25kRGF0YVRyYW5z
ZmVySXRlbS50eXBlIGlzICIiCiBQQVNTIHNlY29uZEZpbGUubmFtZSBpcyAidGVzdEZpbGVzIgot
UEFTUyBzZWNvbmRGaWxlLnNpemUgaXMgb25lIG9mIGAyNzJgLCBhbmQgYDI1NmAKK1BBU1Mgc2Vj
b25kRmlsZS5zaXplIGlzIG9uZSBvZiBgMGAsYDI3MmAsIGFuZCBgMjU2YAogUEFTUyBzZWNvbmRG
aWxlLnR5cGUgaXMgIiIKIFBBU1Mgc2Vjb25kRW50cnkuaXNEaXJlY3RvcnkgaXMgdHJ1ZQogUEFT
UyBzZWNvbmRFbnRyeS5pc0ZpbGUgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRB
c0VudHJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW50cmllcy1hcGkv
ZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS5odG1sCmluZGV4IDEwMTg4ZmE0NTdi
NDliNDkxNGZlNDNhNWMzMmNlZjdiZGVjYTU1NDguLjZkOGFiMzEzMjc4ZTliYjc0YTkzZDA5ZWIx
MGRlMmE0OTI4NDdkMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9lbnRyaWVzLWFwaS9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VudHJpZXMtYXBpL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbApAQCAtMzcsNyArMzcsNyBAQCBkcm9wem9uZS5v
bmRyb3AgPSBmdW5jdGlvbihlKSB7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWNvbmRE
YXRhVHJhbnNmZXJJdGVtLnR5cGUiLCAiIik7CiAgICAgc2Vjb25kRmlsZSA9IHNlY29uZERhdGFU
cmFuc2Zlckl0ZW0uZ2V0QXNGaWxlKCk7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWNv
bmRGaWxlLm5hbWUiLCAidGVzdEZpbGVzIik7Ci0gICAgc2hvdWxkQmVPbmVPZlZhbHVlcygic2Vj
b25kRmlsZS5zaXplIiwgWzI3MiwgMjU2XSk7IC8vIENocm9tZSByZXR1cm5zIGZvbGRlciBzaXpl
LCBGaXJlZm94IHJldHVybnMgMC4gMjU2IGluIEFQRlMsIDI3MiBpbiBIRlMrIAorICAgIHNob3Vs
ZEJlT25lT2ZWYWx1ZXMoInNlY29uZEZpbGUuc2l6ZSIsIFswLCAyNzIsIDI1Nl0pOyAvLyBDaHJv
bWUgcmV0dXJucyBmb2xkZXIgc2l6ZSwgRmlyZWZveCByZXR1cm5zIDAuIDI1NiBpbiBBUEZTLCAy
NzIgaW4gSEZTKyAKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlY29uZEZpbGUudHlwZSIs
ICIiKTsKIAogICAgIHNlY29uZEVudHJ5ID0gc2Vjb25kRGF0YVRyYW5zZmVySXRlbS53ZWJraXRH
ZXRBc0VudHJ5KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50
cmllcy1hcGkvZHJhZy1mb2xkZXItd2Via2l0RW50cmllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvZHJhZy1mb2xkZXItd2Via2l0RW50cmll
cy1leHBlY3RlZC50eHQKaW5kZXggMThmN2U0NDI2Y2FhYzc1NTk5MTJlZTI2NjJiYzI4MDkxOWFm
NzExZS4uOGI4NjFiYWMyZDU2NTY5NTVjYThjYjdjOTAyYjg4YWU3ZmY1MjIzNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdl
YmtpdEVudHJpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmls
ZS9lbnRyaWVzLWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLWV4cGVjdGVkLnR4dApAQCAt
MTYsNyArMTYsNyBAQCBQQVNTIGZpbGVzWzBdLm5hbWUgaXMgInRlc3QudHh0IgogUEFTUyBmaWxl
c1swXS5zaXplIGlzIDUKIFBBU1MgZmlsZXNbMF0udHlwZSBpcyAidGV4dC9wbGFpbiIKIFBBU1Mg
ZmlsZXNbMV0ubmFtZSBpcyAidGVzdEZpbGVzIgotUEFTUyBmaWxlc1sxXS5zaXplIGlzIG9uZSBv
ZiBgMjcyYCwgYW5kIGAyNTZgCitQQVNTIGZpbGVzWzFdLnNpemUgaXMgb25lIG9mIGAwYCxgMjcy
YCwgYW5kIGAyNTZgCiBQQVNTIGZpbGVzWzFdLnR5cGUgaXMgIiIKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxl
L2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9kcmFnLWZvbGRlci13ZWJraXRFbnRyaWVzLmh0
bWwKaW5kZXggOGQ2MjhlNGJiNzUyNWUyYzYwYTY5ZjExNDc5M2E1YmI3ODNlYTc0Mi4uZGIyNWNh
ZmU5Zjk3M2ZhNGNiOWY5OGQ5NTQ3OTczMjEzODZkMWMwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2RyYWctZm9sZGVyLXdlYmtpdEVudHJpZXMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvZHJhZy1m
b2xkZXItd2Via2l0RW50cmllcy5odG1sCkBAIC00OCw3ICs0OCw3IEBAIGZ1bmN0aW9uIGNoYW5n
ZWQoZXZlbnQpCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxlc1swXS50eXBlIiwgInRl
eHQvcGxhaW4iKTsKIAogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZXNbMV0ubmFtZSIs
ICJ0ZXN0RmlsZXMiKTsKLSAgICBzaG91bGRCZU9uZU9mVmFsdWVzKCJmaWxlc1sxXS5zaXplIiwg
WzI3MiwgMjU2XSk7CisgICAgc2hvdWxkQmVPbmVPZlZhbHVlcygiZmlsZXNbMV0uc2l6ZSIsIFsw
LCAyNzIsIDI1Nl0pOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZXNbMV0udHlwZSIs
ICIiKTsKIAogICAgIGZpbmlzaEpTVGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVz
b3VyY2VzL2pzLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvanMtdGVzdC5qcwppbmRl
eCA0OTY2ZmNhZDU4MGRhNjI4Mzg3MGZiMTA2Yzg2Y2ExZGE0MDUwYWFhLi5lNTRmZWIzMjIxZjU2
ZjQwOTQ0YWVhNzM4MTYyMzIxODFiNTNhOGZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNv
dXJjZXMvanMtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvanMtdGVzdC5qcwpA
QCAtMzExLDcgKzMxMSw3IEBAIGZ1bmN0aW9uIHNob3VsZEJlT25lT2ZWYWx1ZXMoX2EsIF92YWx1
ZXMpCiAgICAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSBvbmUgb2YgIiArIHN0cmlu
Z2lmaWVkVmFsdWVzICsgIi4gVGhyZXcgZXhjZXB0aW9uICIgKyBfZXhjZXB0aW9uKTsKICAgICBl
bHNlIHsKICAgICAgICAgdmFyIG1hdGNoZWRWYWx1ZSA9IF92YWx1ZXMuZmluZChmdW5jdGlvbiAo
dmFsdWUpIHsgcmV0dXJuIGlzUmVzdWx0Q29ycmVjdChfYXYsIHZhbHVlKTsgfSk7Ci0gICAgICAg
IGlmIChtYXRjaGVkVmFsdWUpIHsKKyAgICAgICAgaWYgKG1hdGNoZWRWYWx1ZSAhPT0gdW5kZWZp
bmVkKSB7CiAgICAgICAgICAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBvbmUgb2YgIiArIHN0cmlu
Z2lmaWVkVmFsdWVzKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRlc3RGYWlsZWQo
X2EgKyAiIHNob3VsZCBiZSBvbmUgb2YgIiArIHN0cmluZ2lmaWVkVmFsdWVzICsgIi4gV2FzICIg
KyBzdHJpbmdpZnkoX2F2KSArICIuIik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>